From d746de59f360a7fb659cdf2c2a5df8822cda944c Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Fri, 15 Nov 2024 14:03:18 -0800 Subject: [PATCH 0001/2162] fix(@angular-devkit/build-angular): bring back style tags in browser builder --- .../behavior/stylesheet_autoprefixer_spec.ts | 55 +++++++++++++++++++ .../src/builders/browser/specs/styles_spec.ts | 31 +++++++++++ packages/ngtools/webpack/src/ivy/host.ts | 2 +- 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/tests/behavior/stylesheet_autoprefixer_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/stylesheet_autoprefixer_spec.ts index 16e5f8b88e60..41ae225e2d3d 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/stylesheet_autoprefixer_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/stylesheet_autoprefixer_spec.ts @@ -200,5 +200,60 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/main.js').content.toMatch(/{\\n\s*hyphens:\s*none;\\n\s*}/); }); + + it('should add prefixes for listed browsers in inline template styles', async () => { + await harness.writeFile( + '.browserslistrc', + ` + Safari 15.4 + Edge 104 + Firefox 91 + `, + ); + + await harness.modifyFile('src/app/app.component.ts', (content) => { + return content.replace('styleUrls', 'styles').replace('./app.component.css', ''); + }); + await harness.modifyFile('src/app/app.component.html', (content) => { + return `\n${content}`; + }); + + harness.useTarget('build', { + ...BASE_OPTIONS, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + harness + .expectFile('dist/browser/main.js') + // div[_ngcontent-%COMP%] {\n -webkit-hyphens: none;\n hyphens: none;\n}\n + .content.toMatch(/{\\n\s*-webkit-hyphens:\s*none;\\n\s*hyphens:\s*none;\\n\s*}/); + }); + + it('should not add prefixes if not required by browsers in inline template styles', async () => { + await harness.writeFile( + '.browserslistrc', + ` + Edge 110 + `, + ); + + await harness.modifyFile('src/app/app.component.ts', (content) => { + return content.replace('styleUrls', 'styles').replace('./app.component.css', ''); + }); + await harness.modifyFile('src/app/app.component.html', (content) => { + return `\n${content}`; + }); + + harness.useTarget('build', { + ...BASE_OPTIONS, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + harness.expectFile('dist/browser/main.js').content.toMatch(/{\\n\s*hyphens:\s*none;\\n\s*}/); + }); }); }); diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts index b2e79124c40c..61b1cba0d132 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts @@ -140,6 +140,37 @@ describe('Browser Builder styles', () => { expect(await files['main.js']).toContain('-webkit-mask-composite'); }); + it('supports autoprefixer with inline template styles in AOT mode', async () => { + host.writeMultipleFiles({ + './src/app/app.component.html': ` + +
{{ title }}
+ `, + './src/app/app.component.ts': ` + import { Component } from '@angular/core'; + + @Component({ + selector: 'app-root', + standalone: false, + templateUrl: './app.component.html', + styles: 'div { font-weight: 500; }', + }) + export class AppComponent { + title = 'app'; + } + `, + '.browserslistrc': ` + Safari 15.4 + Edge 104 + Firefox 91 + `, + }); + + const { files } = await browserBuild(architect, host, target, { aot: true }); + + expect(await files['main.js']).toContain('-webkit-mask-composite'); + }); + extensionsWithImportSupport.forEach((ext) => { it(`supports imports in ${ext} files`, async () => { host.writeMultipleFiles({ diff --git a/packages/ngtools/webpack/src/ivy/host.ts b/packages/ngtools/webpack/src/ivy/host.ts index 29bee3e947a7..32ce28fab565 100644 --- a/packages/ngtools/webpack/src/ivy/host.ts +++ b/packages/ngtools/webpack/src/ivy/host.ts @@ -38,7 +38,7 @@ export function augmentHostWithResources( resourceLoader.setAffectedResources(filePath, [filePath]); - return content; + return Promise.resolve(content); } else { return resourceLoader.get(filePath); } From 5d79ab7819949f4ce866334eab9e700680fd322a Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Fri, 15 Nov 2024 21:20:23 -0800 Subject: [PATCH 0002/2162] fix(@angular-devkit/build-angular): fix hanging terminal when `browser-sync` is not installed Running the SSR dev server when `browser-sync` is not installed would print the error, but then build the browser and server targets, then hang and never return control to the user until they manually Ctrl+C. This change skips building at all if `browser-sync` is not installed, immediately returning control to the user. This is a simple workaround, but there are two deeper bugs which would benefit from investigation: 1. Figure out why NPM sometimes doesn't install `browser-sync`. It was happening inconsistently for me when running `ng add @angular/ssr`. 2. Figure out why Architect does not cancel/await targets still executing when a builder completes. --- .../src/builders/ssr-dev-server/index.ts | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts index a9fb1aa105f7..bba447815366 100644 --- a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts @@ -62,6 +62,20 @@ export function execute( options: SSRDevServerBuilderOptions, context: BuilderContext, ): Observable { + let browserSync: typeof import('browser-sync'); + try { + browserSync = require('browser-sync'); + } catch { + return of({ + success: false, + error: + // eslint-disable-next-line max-len + 'Required dependency `browser-sync` is not installed, most likely you need to run `npm install browser-sync --save-dev` in your project.', + }); + } + + const bsInstance = browserSync.create(); + const browserTarget = targetFromTargetString(options.browserTarget); const serverTarget = targetFromTargetString(options.serverTarget); const getBaseUrl = (bs: BrowserSyncInstance) => @@ -80,19 +94,6 @@ export function execute( verbose: options.verbose, } as json.JsonObject); - let browserSync: typeof import('browser-sync'); - try { - browserSync = require('browser-sync'); - } catch { - return of({ - success: false, - error: - '"browser-sync" is not installed, most likely you need to run `npm install browser-sync --save-dev` in your project.', - }); - } - - const bsInstance = browserSync.create(); - context.logger.error(tags.stripIndents` **************************************************************************************** This is a simple server for use in testing or debugging Angular applications locally. From 9921271ce134e0093f4334700a24861b9213eb97 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:10:17 -0500 Subject: [PATCH 0003/2162] fix(@angular/build): fully disable component style HMR in JIT mode The component stylesheet HMR functionality requires build-time analysis of each component by the AOT compiler to provide the needed information to identify initial styles and detect individual changes to each style. Part of the style HMR rebuild logic was unintentionally enabled in JIT mode. The initial load of the application operated correctly but subsequent changes to file-based stylesheets were delayed by one rebuild cycle. To avoid this misalignment, all component stylesheet HMR functionality is now disabled when in JIT mode. --- packages/angular/build/src/builders/application/options.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 39e75ef7ca4d..9c488e327a98 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -381,7 +381,7 @@ export async function normalizeOptions( // Initial options to keep const { allowedCommonJsDependencies, - aot, + aot = true, baseHref, crossOrigin, externalDependencies, @@ -469,7 +469,7 @@ export async function normalizeOptions( clearScreen, define, partialSSRBuild: usePartialSsrBuild || partialSSRBuild, - externalRuntimeStyles, + externalRuntimeStyles: aot && externalRuntimeStyles, instrumentForCoverage, security, templateUpdates: !!options.templateUpdates, From 160dee33d72cbc8efbff80a4974b64f83603a95c Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Fri, 15 Nov 2024 21:05:22 -0800 Subject: [PATCH 0004/2162] fix(@schematics/angular): don't show server routing prompt when using `browser` builder The new routing APIs don't support `browser` builder, but calling `ng add @angular/ssr` with a `browser` builder would still prompt the user to add them. If the user said "Yes", it would actually ignore that answer and not enable the new APIs. With this change, `ng add @angular/ssr` when using `browser` builder does not show the prompt and assumes the answer is "No". It also throws an error if the user runs `ng add @angular/ssr --server-routing`. I'm not aware of a built-in prompting mechanism in schematics beyond `x-prompt`, which can't be used here, so instead I just called Inquirer directly. Unfortunately testing the prompt is a little awkward, as Inquirier does not provide useful APIs in this space. I evaluated `@inquirer/testing`, but ultimately decided that was more intended for testing custom Inquirer prompts, not mocking usage of standard prompts. Schematics APIs do not provide a useful way to inject additional data like a mock, so instead I had to do this through a `setPrompterForTestOnly` function. I'm not a huge fan of it, but I don't see a more straightforward way of solving the problem. --- .../ssr/schematics/ng-add/index_spec.ts | 1 + packages/schematics/angular/BUILD.bazel | 1 + .../angular/application/index_spec.ts | 1 + packages/schematics/angular/ssr/index.ts | 63 ++++++++++- packages/schematics/angular/ssr/index_spec.ts | 102 ++++++++++++++++++ packages/schematics/angular/ssr/schema.json | 4 +- packages/schematics/angular/ssr/tty.ts | 22 ++++ .../prerender/discover-routes-ngmodule.ts | 31 ++++-- .../express-engine-csp-nonce.ts | 8 +- .../express-engine-standalone.ts | 9 +- .../serve/ssr-http-requests-assets.ts | 11 +- .../e2e/tests/vite/ssr-error-stack.ts | 11 +- 12 files changed, 243 insertions(+), 21 deletions(-) create mode 100644 packages/schematics/angular/ssr/tty.ts diff --git a/packages/angular/ssr/schematics/ng-add/index_spec.ts b/packages/angular/ssr/schematics/ng-add/index_spec.ts index b93a509200b1..bdf5474e0d70 100644 --- a/packages/angular/ssr/schematics/ng-add/index_spec.ts +++ b/packages/angular/ssr/schematics/ng-add/index_spec.ts @@ -14,6 +14,7 @@ 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/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index f75ebae5bbda..1cfba5801f09 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -84,6 +84,7 @@ ts_library( "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", + "@npm//@inquirer/prompts", "@npm//@types/node", "@npm//browserslist", "@npm//jsonc-parser", diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index bac40b684402..cf0380aeddac 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -32,6 +32,7 @@ describe('Application Schematic', () => { const defaultOptions: ApplicationOptions = { name: 'foo', skipPackageJson: false, + serverRouting: false, }; let workspaceTree: UnitTestTree; diff --git a/packages/schematics/angular/ssr/index.ts b/packages/schematics/angular/ssr/index.ts index 10dc255e8c0b..9aa44f6686d5 100644 --- a/packages/schematics/angular/ssr/index.ts +++ b/packages/schematics/angular/ssr/index.ts @@ -38,6 +38,7 @@ import { ProjectDefinition, getWorkspace } from '../utility/workspace'; import { Builders } from '../utility/workspace-models'; import { Schema as SSROptions } from './schema'; +import { isTTY } from './tty'; const SERVE_SSR_TARGET_NAME = 'serve-ssr'; const PRERENDER_TARGET_NAME = 'prerender'; @@ -85,7 +86,7 @@ async function getApplicationBuilderOutputPaths( const { outputPath } = architectTarget.options; if (outputPath === null || outputPath === undefined) { throw new SchematicsException( - `outputPath for ${projectName} ${target} target is undeined or null.`, + `outputPath for ${projectName} ${target} target is undefined or null.`, ); } @@ -361,19 +362,20 @@ function addServerFile( }; } -export default function (options: SSROptions): Rule { +export default function (inputOptions: SSROptions): Rule { return async (host, context) => { - const browserEntryPoint = await getMainFilePath(host, options.project); + const browserEntryPoint = await getMainFilePath(host, inputOptions.project); const isStandalone = isStandaloneApp(host, browserEntryPoint); const workspace = await getWorkspace(host); - const clientProject = workspace.projects.get(options.project); + const clientProject = workspace.projects.get(inputOptions.project); if (!clientProject) { throw targetBuildNotFoundError(); } const isUsingApplicationBuilder = usingApplicationBuilder(clientProject); - + const serverRouting = await isServerRoutingEnabled(isUsingApplicationBuilder, inputOptions); + const options = { ...inputOptions, serverRouting }; const sourceRoot = clientProject.sourceRoot ?? posix.join(clientProject.root, 'src'); return chain([ @@ -404,3 +406,54 @@ function usingApplicationBuilder(project: ProjectDefinition) { 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; + } + + // 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 63c11e772c2f..7f917f8d4df6 100644 --- a/packages/schematics/angular/ssr/index_spec.ts +++ b/packages/schematics/angular/ssr/index_spec.ts @@ -10,10 +10,12 @@ 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( @@ -30,6 +32,10 @@ describe('SSR Schematic', () => { }; beforeEach(async () => { + setPrompterForTestOnly((message) => { + return fail(`Unmocked prompt: ${message}`) as never; + }); + appTree = await schematicRunner.runExternalSchematic( '@schematics/angular', 'workspace', @@ -81,6 +87,8 @@ describe('SSR Schematic', () => { }); describe('standalone application', () => { + const originalTty = process.env['NG_FORCE_TTY']; + beforeEach(async () => { appTree = await schematicRunner.runExternalSchematic( '@schematics/angular', @@ -98,6 +106,10 @@ describe('SSR Schematic', () => { ); }); + afterEach(() => { + process.env['NG_FORCE_TTY'] = originalTty; + }); + it('should add script section in package.json', async () => { const tree = await schematicRunner.runSchematic('ssr', defaultOptions, appTree); const { scripts } = tree.readJson('/package.json') as { scripts: Record }; @@ -150,6 +162,74 @@ 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(); + }); }); describe('Legacy browser builder', () => { @@ -216,5 +296,27 @@ 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 aead824b9be6..788ad7fec3d4 100644 --- a/packages/schematics/angular/ssr/schema.json +++ b/packages/schematics/angular/ssr/schema.json @@ -18,9 +18,7 @@ }, "serverRouting": { "description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview).", - "x-prompt": "Would you like to use the Server Routing and App Engine APIs (Developer Preview) for this server application?", - "type": "boolean", - "default": false + "type": "boolean" } }, "required": ["project"], diff --git a/packages/schematics/angular/ssr/tty.ts b/packages/schematics/angular/ssr/tty.ts new file mode 100644 index 000000000000..0d669c0301e3 --- /dev/null +++ b/packages/schematics/angular/ssr/tty.ts @@ -0,0 +1,22 @@ +/** + * @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 + */ + +function _isTruthy(value: undefined | string): boolean { + // Returns true if value is a string that is anything but 0 or false. + return value !== undefined && value !== '0' && value.toUpperCase() !== 'FALSE'; +} + +export function isTTY(): boolean { + // If we force TTY, we always return true. + const force = process.env['NG_FORCE_TTY']; + if (force !== undefined) { + return _isTruthy(force); + } + + return !!process.stdout.isTTY && !_isTruthy(process.env['CI']); +} 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 4775fa27c306..69a84a6248be 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 @@ -32,15 +32,28 @@ 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', - '--project', - projectName, - '--skip-confirmation', - '--skip-install', - '--server-routing', - ); + 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 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 f7d98bdd3dbc..e7bd9d9b1ecb 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 @@ -9,7 +9,13 @@ 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 ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + + if (useWebpackBuilder) { + // `--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 useSha(); await installWorkspacePackages(); 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 cfc3ea84a196..632c90522a3e 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 @@ -8,9 +8,16 @@ import { updateJsonFile, updateServerFileForWebpack, useSha } from '../../../uti 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', '--skip-install'); 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', '--server-routing', '--skip-confirmation', '--skip-install'); + } + if (!useWebpackBuilder) { // Disable prerendering await updateJsonFile('angular.json', (json) => { 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 ecc6c6c1015a..972c35be4452 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 @@ -4,11 +4,20 @@ import { killAllProcesses, ng } from '../../../utils/process'; import { rimraf, writeMultipleFiles } from '../../../utils/fs'; import { installWorkspacePackages } from '../../../utils/packages'; import { ngServe, useSha } from '../../../utils/project'; +import { getGlobalVariable } from '../../../utils/env'; 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 ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation'); + if (useWebpackBuilder) { + // `--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 useSha(); await installWorkspacePackages(); 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 0f6e5b1cb6be..7061e881fdff 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts @@ -3,11 +3,20 @@ import { ng } from '../../utils/process'; import { appendToFile, rimraf } from '../../utils/fs'; import { ngServe, useSha } from '../../utils/project'; import { installWorkspacePackages } from '../../utils/packages'; +import { getGlobalVariable } from '../../utils/env'; 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 ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation'); + if (useWebpackBuilder) { + // `--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 useSha(); await installWorkspacePackages(); From d3dd8f00d368e77772476ec776548e11d8e0b4b6 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Fri, 15 Nov 2024 17:05:45 -0800 Subject: [PATCH 0005/2162] fix(@angular/ssr): use wildcard server route configuration on the '/' route when the app router is empty --- packages/angular/ssr/src/routes/ng-routes.ts | 9 +++++++-- packages/angular/ssr/test/routes/ng-routes_spec.ts | 8 +++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 2a54bbd659f6..5bba8b7d9aba 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -480,11 +480,16 @@ export async function getRoutesFromAngularRouterConfig( } } } else { - const renderMode = serverConfigRouteTree?.match('')?.renderMode ?? RenderMode.Prerender; + const rootRouteMetadata = serverConfigRouteTree?.match('') ?? { + route: '', + renderMode: RenderMode.Prerender, + }; routesResults.push({ + ...rootRouteMetadata, + // Matched route might be `/*` or `/**`, which would make Angular serve all routes rather than just `/`. + // So we limit to just `/` for the empty app router case. route: '', - renderMode, }); } diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index 77e3a910bec0..4b334c25eac9 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -340,8 +340,8 @@ describe('extractRoutesAndCreateRouteTree', () => { ); }); - it('should apply RenderMode matching the wildcard when no Angular routes are defined', async () => { - setAngularAppTestingManifest([], [{ path: '**', renderMode: RenderMode.Server }]); + it('should use wildcard configuration when no Angular routes are defined', async () => { + setAngularAppTestingManifest([], [{ path: '**', renderMode: RenderMode.Server, status: 201 }]); const { errors, routeTree } = await extractRoutesAndCreateRouteTree( url, @@ -351,6 +351,8 @@ describe('extractRoutesAndCreateRouteTree', () => { ); expect(errors).toHaveSize(0); - expect(routeTree.toObject()).toEqual([{ route: '/', renderMode: RenderMode.Server }]); + expect(routeTree.toObject()).toEqual([ + { route: '/', renderMode: RenderMode.Server, status: 201 }, + ]); }); }); From b124a2837c620fd894e8147b8d6ff74a1b1c5013 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Mon, 18 Nov 2024 11:11:11 -0800 Subject: [PATCH 0006/2162] docs: release notes for the v19.0.0-rc.3 release --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c433e36edcc..8a282f6b9fad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,36 @@ + + +# 19.0.0-rc.3 (2024-11-18) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | +| [4b4e000dd](https://github.com/angular/angular-cli/commit/4b4e000dd60bb43df5c8694eb8a0bc0b45d1cf8d) | fix | don't show server routing prompt when using `browser` builder | +| [9e6ab1bf2](https://github.com/angular/angular-cli/commit/9e6ab1bf231b35aceb989337fac55a6136594c5d) | fix | use default import for `express` | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | +| [ea5ae68da](https://github.com/angular/angular-cli/commit/ea5ae68da9e7f2b598bae2ca9ac8be9c20ce7888) | fix | bring back style tags in browser builder | +| [25d928b4f](https://github.com/angular/angular-cli/commit/25d928b4fde00ae8396f6b9cfcd92b5254fc49aa) | fix | fix hanging terminal when `browser-sync` is not installed | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | +| [2551df533](https://github.com/angular/angular-cli/commit/2551df533d61400c0fda89db77a93378480f5047) | fix | fully disable component style HMR in JIT mode | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------- | +| [4ecf63a77](https://github.com/angular/angular-cli/commit/4ecf63a777871bf214bf42fe1738c206bde3201c) | fix | export PrerenderFallback | +| [fb05e7f0a](https://github.com/angular/angular-cli/commit/fb05e7f0abd9d68ac03f243c7774260619b8a623) | fix | use wildcard server route configuration on the '/' route when the app router is empty | + + + # 19.0.0-rc.2 (2024-11-14) From 23dac18def52e05d00962c3b85072c069b0c73be Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 18 Nov 2024 15:06:12 -0500 Subject: [PATCH 0007/2162] build: update Angular packages to v19 stable --- package.json | 26 +- packages/angular/build/package.json | 10 +- packages/angular/ssr/package.json | 20 +- .../angular_devkit/build_angular/package.json | 10 +- packages/ngtools/webpack/package.json | 6 +- .../utility/latest-versions/package.json | 4 +- yarn.lock | 228 +++++++++--------- 7 files changed, 152 insertions(+), 152 deletions(-) diff --git a/package.json b/package.json index a080762f64af..dea678052731 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.0.0-rc.3", + "@angular/animations": "19.0.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#3ba5a1f997a072caffcf19f9c767e7e570043898", "@angular/cdk": "19.0.0-rc.3", - "@angular/common": "19.0.0-rc.3", - "@angular/compiler": "19.0.0-rc.3", - "@angular/compiler-cli": "19.0.0-rc.3", - "@angular/core": "19.0.0-rc.3", - "@angular/forms": "19.0.0-rc.3", - "@angular/localize": "19.0.0-rc.3", + "@angular/common": "19.0.0", + "@angular/compiler": "19.0.0", + "@angular/compiler-cli": "19.0.0", + "@angular/core": "19.0.0", + "@angular/forms": "19.0.0", + "@angular/localize": "19.0.0", "@angular/material": "19.0.0-rc.3", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5f5021669687fdd811f916dc9699eca753ab4a13", - "@angular/platform-browser": "19.0.0-rc.3", - "@angular/platform-browser-dynamic": "19.0.0-rc.3", - "@angular/platform-server": "19.0.0-rc.3", - "@angular/router": "19.0.0-rc.3", - "@angular/service-worker": "19.0.0-rc.3", + "@angular/platform-browser": "19.0.0", + "@angular/platform-browser-dynamic": "19.0.0", + "@angular/platform-server": "19.0.0", + "@angular/router": "19.0.0", + "@angular/service-worker": "19.0.0", "@babel/core": "7.26.0", "@babel/generator": "7.26.2", "@babel/helper-annotate-as-pure": "7.25.9", @@ -168,7 +168,7 @@ "magic-string": "0.30.12", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", - "ng-packagr": "19.0.0-rc.0", + "ng-packagr": "19.0.0", "npm": "^10.8.1", "npm-package-arg": "12.0.0", "npm-pick-manifest": "10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 0159c13b3ad0..82957f335a0a 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -48,11 +48,11 @@ "lmdb": "3.1.5" }, "peerDependencies": { - "@angular/compiler": "^19.0.0-next.9", - "@angular/compiler-cli": "^19.0.0-next.9", - "@angular/localize": "^19.0.0-next.9", - "@angular/platform-server": "^19.0.0-next.9", - "@angular/service-worker": "^19.0.0-next.9", + "@angular/compiler": "^19.0.0", + "@angular/compiler-cli": "^19.0.0", + "@angular/localize": "^19.0.0", + "@angular/platform-server": "^19.0.0", + "@angular/service-worker": "^19.0.0", "@angular/ssr": "^0.0.0-PLACEHOLDER", "less": "^4.2.0", "postcss": "^8.4.0", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 061d3eeea36c..8e469f216f1a 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -16,18 +16,18 @@ "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^19.0.0-next.0", - "@angular/core": "^19.0.0-next.0", - "@angular/platform-server": "^19.0.0-next.0", - "@angular/router": "^19.0.0-next.0" + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0", + "@angular/platform-server": "^19.0.0", + "@angular/router": "^19.0.0" }, "devDependencies": { - "@angular/common": "19.0.0-rc.3", - "@angular/compiler": "19.0.0-rc.3", - "@angular/core": "19.0.0-rc.3", - "@angular/platform-browser": "19.0.0-rc.3", - "@angular/platform-server": "19.0.0-rc.3", - "@angular/router": "19.0.0-rc.3", + "@angular/common": "19.0.0", + "@angular/compiler": "19.0.0", + "@angular/core": "19.0.0", + "@angular/platform-browser": "19.0.0", + "@angular/platform-server": "19.0.0", + "@angular/router": "19.0.0", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index c94879e5d0cd..c22ecf82145c 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -69,17 +69,17 @@ "undici": "6.21.0" }, "peerDependencies": { - "@angular/compiler-cli": "^19.0.0-next.0", - "@angular/localize": "^19.0.0-next.0", - "@angular/platform-server": "^19.0.0-next.0", - "@angular/service-worker": "^19.0.0-next.0", + "@angular/compiler-cli": "^19.0.0", + "@angular/localize": "^19.0.0", + "@angular/platform-server": "^19.0.0", + "@angular/service-worker": "^19.0.0", "@angular/ssr": "^0.0.0-PLACEHOLDER", "@web/test-runner": "^0.19.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^19.0.0-next.0", + "ng-packagr": "^19.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", "typescript": ">=5.5 <5.7" diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index c44ab1f23be3..f65aac958b81 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -21,14 +21,14 @@ }, "homepage": "https://github.com/angular/angular-cli/tree/main/packages/ngtools/webpack", "peerDependencies": { - "@angular/compiler-cli": "^19.0.0-next.0", + "@angular/compiler-cli": "^19.0.0", "typescript": ">=5.5 <5.7", "webpack": "^5.54.0" }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.0.0-rc.3", - "@angular/compiler-cli": "19.0.0-rc.3", + "@angular/compiler": "19.0.0", + "@angular/compiler-cli": "19.0.0", "typescript": "5.6.3", "webpack": "5.96.1" } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 14821016e55e..cee728d87854 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -3,7 +3,7 @@ "comment": "This file is needed so that dependencies are synced by Renovate.", "private": true, "dependencies": { - "@angular/core": "^19.0.0-next.0", + "@angular/core": "^19.0.0", "@types/express": "^4.17.17", "@types/jasmine": "~5.1.0", "@types/node": "^18.18.0", @@ -17,7 +17,7 @@ "karma-jasmine": "~5.1.0", "karma": "~6.4.0", "less": "^4.2.0", - "ng-packagr": "^19.0.0-next.0", + "ng-packagr": "^19.0.0", "postcss": "^8.4.38", "protractor": "~7.0.0", "rxjs": "~7.8.0", diff --git a/yarn.lock b/yarn.lock index 4a27d79961cc..b33883433995 100644 --- a/yarn.lock +++ b/yarn.lock @@ -117,17 +117,17 @@ __metadata: webpack-merge: "npm:6.0.1" webpack-subresource-integrity: "npm:5.1.0" peerDependencies: - "@angular/compiler-cli": ^19.0.0-next.0 - "@angular/localize": ^19.0.0-next.0 - "@angular/platform-server": ^19.0.0-next.0 - "@angular/service-worker": ^19.0.0-next.0 + "@angular/compiler-cli": ^19.0.0 + "@angular/localize": ^19.0.0 + "@angular/platform-server": ^19.0.0 + "@angular/service-worker": ^19.0.0 "@angular/ssr": ^0.0.0-PLACEHOLDER "@web/test-runner": ^0.19.0 browser-sync: ^3.0.2 jest: ^29.5.0 jest-environment-jsdom: ^29.5.0 karma: ^6.3.0 - ng-packagr: ^19.0.0-next.0 + ng-packagr: ^19.0.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 typescript: ">=5.5 <5.7" @@ -245,14 +245,14 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/animations@npm:19.0.0-rc.3" +"@angular/animations@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/animations@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0-rc.3 - checksum: 10c0/1a2b82289ffcfff0cc1e2516a035fba7081ab52607749bc0957bcb0da8b5966260b05676c7c010bde0e2bf09cb503e6ea2b8558c9ff10ab317bac01057428d8d + "@angular/core": 19.0.0 + checksum: 10c0/57414011f82c3bb3e4b147d61edb8350630c93e51652b0125c76b04d840aed5ed46b9a57daa433414c07e069c77633d7dedbab5a08011381f08b3bb1f75a42dd languageName: node linkType: hard @@ -398,11 +398,11 @@ __metadata: vite: "npm:5.4.11" watchpack: "npm:2.4.2" peerDependencies: - "@angular/compiler": ^19.0.0-next.9 - "@angular/compiler-cli": ^19.0.0-next.9 - "@angular/localize": ^19.0.0-next.9 - "@angular/platform-server": ^19.0.0-next.9 - "@angular/service-worker": ^19.0.0-next.9 + "@angular/compiler": ^19.0.0 + "@angular/compiler-cli": ^19.0.0 + "@angular/localize": ^19.0.0 + "@angular/platform-server": ^19.0.0 + "@angular/service-worker": ^19.0.0 "@angular/ssr": ^0.0.0-PLACEHOLDER less: ^4.2.0 postcss: ^8.4.0 @@ -539,21 +539,21 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/common@npm:19.0.0-rc.3" +"@angular/common@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/common@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0-rc.3 + "@angular/core": 19.0.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/00758594ff4b7263d065d25f216854decfd31da04460d07bc36f0eb65a85a817dc8480ffe9bac86544edcdf6e652e1b728d673e27af31ac16bf2a46ce128b8d1 + checksum: 10c0/40e682b31755130aee6c8a7aa05f1712cde9807792d05257f96c8230281606f4ac0d58a21224730febeea6195429211c16e651b7749acac0951f91a864d9a4bd languageName: node linkType: hard -"@angular/compiler-cli@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/compiler-cli@npm:19.0.0-rc.3" +"@angular/compiler-cli@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/compiler-cli@npm:19.0.0" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -564,39 +564,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.0-rc.3 + "@angular/compiler": 19.0.0 typescript: ">=5.5 <5.7" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/d3282019a1a26f3a130d6532caaac08f5e08d78e13dc38c8168cae97d1dbf4509a66600ee364aeb1b6300f8d83cbfa30d71ff0c88a23d05f22daabcf6b22f1a5 + checksum: 10c0/752afc1ece28b5688a0c66e2cbb2a9a0a545be651e2a1b00784e808f3fb3acbece82bc34ab7dec2f7f5dc692c83d4ef8e686c1aa975bde90e5918abcf63877fe languageName: node linkType: hard -"@angular/compiler@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/compiler@npm:19.0.0-rc.3" +"@angular/compiler@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/compiler@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0-rc.3 + "@angular/core": 19.0.0 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/a7ff89a84ef117371a769e0da362a3b14cb32cd047471e2ff2c068fb4150ff1c1f5c7b4c77ad5d7c41461e6e8bb6bc8511adefaeaa6ad54b85dd0295a462c8ed + checksum: 10c0/248134ebe309dc64a24b79e0c998381cf1415de643e7f36656c61a9a709c68d46f3590b7a952b6205325acd94c98e7fcc1ef5db2d37c41359f9f7493cdb64e68 languageName: node linkType: hard -"@angular/core@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/core@npm:19.0.0-rc.3" +"@angular/core@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/core@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/2bbb96fc80d911447f9b07a1e438b92b338da089173dc4858226a4c45d7af97ca456a38f064826d10c5f863c6418cb9fab47a07ecce89940082cc0aba2042fab + checksum: 10c0/b4530c254fdfc2ebe721becbae0be3b38e7b305382c56a3511eb24e8d972299859dfe2a96049fe5eb685b86434f123af55a9e9135c3f158de194571a7ce5f51b languageName: node linkType: hard @@ -627,23 +627,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.0.0-rc.3" + "@angular/animations": "npm:19.0.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#3ba5a1f997a072caffcf19f9c767e7e570043898" "@angular/cdk": "npm:19.0.0-rc.3" - "@angular/common": "npm:19.0.0-rc.3" - "@angular/compiler": "npm:19.0.0-rc.3" - "@angular/compiler-cli": "npm:19.0.0-rc.3" - "@angular/core": "npm:19.0.0-rc.3" - "@angular/forms": "npm:19.0.0-rc.3" - "@angular/localize": "npm:19.0.0-rc.3" + "@angular/common": "npm:19.0.0" + "@angular/compiler": "npm:19.0.0" + "@angular/compiler-cli": "npm:19.0.0" + "@angular/core": "npm:19.0.0" + "@angular/forms": "npm:19.0.0" + "@angular/localize": "npm:19.0.0" "@angular/material": "npm:19.0.0-rc.3" "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5f5021669687fdd811f916dc9699eca753ab4a13" - "@angular/platform-browser": "npm:19.0.0-rc.3" - "@angular/platform-browser-dynamic": "npm:19.0.0-rc.3" - "@angular/platform-server": "npm:19.0.0-rc.3" - "@angular/router": "npm:19.0.0-rc.3" - "@angular/service-worker": "npm:19.0.0-rc.3" + "@angular/platform-browser": "npm:19.0.0" + "@angular/platform-browser-dynamic": "npm:19.0.0" + "@angular/platform-server": "npm:19.0.0" + "@angular/router": "npm:19.0.0" + "@angular/service-worker": "npm:19.0.0" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.2" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -743,7 +743,7 @@ __metadata: magic-string: "npm:0.30.12" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" - ng-packagr: "npm:19.0.0-rc.0" + ng-packagr: "npm:19.0.0" npm: "npm:^10.8.1" npm-package-arg: "npm:12.0.0" npm-pick-manifest: "npm:10.0.0" @@ -800,36 +800,36 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/forms@npm:19.0.0-rc.3" +"@angular/forms@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/forms@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.3 - "@angular/core": 19.0.0-rc.3 - "@angular/platform-browser": 19.0.0-rc.3 + "@angular/common": 19.0.0 + "@angular/core": 19.0.0 + "@angular/platform-browser": 19.0.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/a514d133b60ba33dbf30280fa07e5b59d1ce0c1e61ae52678e5c0feb4401753ab87a160f83e0fc9ce6bf2ce92eb168bddc1ab3761ccad8e08d872a5802cf5e53 + checksum: 10c0/d786fb950646af889f38bdc6be3ec0683fcdf7a8d33df37daa981cfb318f3d7676aeb249a4ea34cc20bf2bc182ee67a68dc163a4a94aab6fc94b7c51f6d7aaef languageName: node linkType: hard -"@angular/localize@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/localize@npm:19.0.0-rc.3" +"@angular/localize@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/localize@npm:19.0.0" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.0-rc.3 - "@angular/compiler-cli": 19.0.0-rc.3 + "@angular/compiler": 19.0.0 + "@angular/compiler-cli": 19.0.0 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/5c7e1c59a8be4bf774118b9da77a5babebd9e9b1cd429991500c29abfdfe01de504c4f0684ce2485a30506de9fa57f1ed8aa6ab2003785c9074eb0f6c2d360eb + checksum: 10c0/fc763563b6bb8e52510399aa222f825c1447e987529a4381334ae33f31203ef8a7f76a2f73b1d694c2daa960cd0f14e9ab5bb7675bf6ec7b09f6045ffed137ba languageName: node linkType: hard @@ -870,49 +870,49 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/platform-browser-dynamic@npm:19.0.0-rc.3" +"@angular/platform-browser-dynamic@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/platform-browser-dynamic@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.3 - "@angular/compiler": 19.0.0-rc.3 - "@angular/core": 19.0.0-rc.3 - "@angular/platform-browser": 19.0.0-rc.3 - checksum: 10c0/5d7c8308953cab6e5ccb2555469245fd792f2067e6752f4abaae083a92504dc789f61dd196f3ddc40f318803375cc4f9824b846ca64f8c6f3020f30ee8533e72 + "@angular/common": 19.0.0 + "@angular/compiler": 19.0.0 + "@angular/core": 19.0.0 + "@angular/platform-browser": 19.0.0 + checksum: 10c0/b0ce2c74d0227eae0783512cd8d65fa3629675f3234727b09fdf267da9bb85b588506613abfcab776f8c1961c22bddf9a1428e9e625756ca31ce8cb0873dc59e languageName: node linkType: hard -"@angular/platform-browser@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/platform-browser@npm:19.0.0-rc.3" +"@angular/platform-browser@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/platform-browser@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.0.0-rc.3 - "@angular/common": 19.0.0-rc.3 - "@angular/core": 19.0.0-rc.3 + "@angular/animations": 19.0.0 + "@angular/common": 19.0.0 + "@angular/core": 19.0.0 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/d3fc23b6cfc1cdea6f320e9c49f4e5bc58780fb0d07feba04c9eb1b01496277adc075ed289a7f2dfe5a9a65b894087fdb19c575ab88f2889af16343734b752b8 + checksum: 10c0/9ea20ed89a40725b842630f98190df5416f363c7ad40a1fec2d82b726c398f49fd061a0ebd27ea9af4c647a62616edea9253e98cd4992930243fe51000e39bc2 languageName: node linkType: hard -"@angular/platform-server@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/platform-server@npm:19.0.0-rc.3" +"@angular/platform-server@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/platform-server@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.0.0-rc.3 - "@angular/common": 19.0.0-rc.3 - "@angular/compiler": 19.0.0-rc.3 - "@angular/core": 19.0.0-rc.3 - "@angular/platform-browser": 19.0.0-rc.3 - checksum: 10c0/dfe66ad11e49d82b073776aa4ced74c83e651b45d97aa82a06d4421356de0f5db342325b5a329c73680aafd2be945aad2ede846eb86019a6355584fae61e4a29 + "@angular/animations": 19.0.0 + "@angular/common": 19.0.0 + "@angular/compiler": 19.0.0 + "@angular/core": 19.0.0 + "@angular/platform-browser": 19.0.0 + checksum: 10c0/644c24748dd93b93f2c58768190a7b8ed416e1cb8a95dfd8340ef0b4e23934e29438ec899a10695420246e4d4684a54d7128e381ab35a54aa7bb5bcb843a3deb languageName: node linkType: hard @@ -931,31 +931,31 @@ __metadata: languageName: unknown linkType: soft -"@angular/router@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/router@npm:19.0.0-rc.3" +"@angular/router@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/router@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.3 - "@angular/core": 19.0.0-rc.3 - "@angular/platform-browser": 19.0.0-rc.3 + "@angular/common": 19.0.0 + "@angular/core": 19.0.0 + "@angular/platform-browser": 19.0.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/4476692673c6f3527583b4f6b71057bafc63e67be1ef3ccfd3fe50d57e7bd593f5dcfbf1e07d6c60fa936d7ef83d6b1bd88010630d042cfc1629a0632d124120 + checksum: 10c0/291a623f105af0b39dd4ee65f81ecece553b83053ea8e611b8583cfe020bcb64531e232fcdc20a9938e59ceecbf990287fce78023dc86a06485bf222e4fa174e languageName: node linkType: hard -"@angular/service-worker@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/service-worker@npm:19.0.0-rc.3" +"@angular/service-worker@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/service-worker@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0-rc.3 - "@angular/core": 19.0.0-rc.3 + "@angular/common": 19.0.0 + "@angular/core": 19.0.0 bin: ngsw-config: ngsw-config.js - checksum: 10c0/d03cbaaf8a19c4d6e5f8fae70e9d1243a4509600a153116d998ee4b89b98c839afe78de4358f76b8dd1d2cf85e321800cd1701a356452d8d399bb5752af0a76c + checksum: 10c0/7f8135dd5129448a4c73d85c7081f5801d8864f107f9a16364ee91864b9cb5025158eae60b4fba3df65eb10349dba373beddda3f2014869ccc3db605a3030be3 languageName: node linkType: hard @@ -963,19 +963,19 @@ __metadata: version: 0.0.0-use.local resolution: "@angular/ssr@workspace:packages/angular/ssr" dependencies: - "@angular/common": "npm:19.0.0-rc.3" - "@angular/compiler": "npm:19.0.0-rc.3" - "@angular/core": "npm:19.0.0-rc.3" - "@angular/platform-browser": "npm:19.0.0-rc.3" - "@angular/platform-server": "npm:19.0.0-rc.3" - "@angular/router": "npm:19.0.0-rc.3" + "@angular/common": "npm:19.0.0" + "@angular/compiler": "npm:19.0.0" + "@angular/core": "npm:19.0.0" + "@angular/platform-browser": "npm:19.0.0" + "@angular/platform-server": "npm:19.0.0" + "@angular/router": "npm:19.0.0" "@bazel/runfiles": "npm:^5.8.1" tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": ^19.0.0-next.0 - "@angular/core": ^19.0.0-next.0 - "@angular/platform-server": ^19.0.0-next.0 - "@angular/router": ^19.0.0-next.0 + "@angular/common": ^19.0.0 + "@angular/core": ^19.0.0 + "@angular/platform-server": ^19.0.0 + "@angular/router": ^19.0.0 languageName: unknown linkType: soft @@ -3444,12 +3444,12 @@ __metadata: resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.0.0-rc.3" - "@angular/compiler-cli": "npm:19.0.0-rc.3" + "@angular/compiler": "npm:19.0.0" + "@angular/compiler-cli": "npm:19.0.0" typescript: "npm:5.6.3" webpack: "npm:5.96.1" peerDependencies: - "@angular/compiler-cli": ^19.0.0-next.0 + "@angular/compiler-cli": ^19.0.0 typescript: ">=5.5 <5.7" webpack: ^5.54.0 languageName: unknown @@ -13466,9 +13466,9 @@ __metadata: languageName: node linkType: hard -"ng-packagr@npm:19.0.0-rc.0": - version: 19.0.0-rc.0 - resolution: "ng-packagr@npm:19.0.0-rc.0" +"ng-packagr@npm:19.0.0": + version: 19.0.0 + resolution: "ng-packagr@npm:19.0.0" dependencies: "@rollup/plugin-json": "npm:^6.1.0" "@rollup/wasm-node": "npm:^4.24.0" @@ -13504,7 +13504,7 @@ __metadata: optional: true bin: ng-packagr: cli/main.js - checksum: 10c0/48b96d33e12d7fcbd50286090c8566ca26e3477a8597e3ba2740ddfb671bbe4835989a17181bb9afa39253ec0809e1ecccf4c831496e3df43ffe2bb6eb627e5b + checksum: 10c0/685d60ab4baeee0ae85d36578587925c299a4ae643777e39b51411adfe992048669e812062188919eae0f90e90ede7f593debcb6f2c7ac99fbafff324b66a71f languageName: node linkType: hard From f0a5af09780d3a4e1f5ca671216cea92dc1a17cf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 19 Nov 2024 11:16:45 -0500 Subject: [PATCH 0008/2162] docs: release notes for the v19.0.0 release --- CHANGELOG.md | 661 ++++++++++++--------------------------------------- 1 file changed, 147 insertions(+), 514 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a282f6b9fad..d88d33d9f3f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,163 +1,202 @@ - + -# 19.0.0-rc.3 (2024-11-18) +# 19.0.0 (2024-11-19) + +## Breaking Changes ### @schematics/angular -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | -| [4b4e000dd](https://github.com/angular/angular-cli/commit/4b4e000dd60bb43df5c8694eb8a0bc0b45d1cf8d) | fix | don't show server routing prompt when using `browser` builder | -| [9e6ab1bf2](https://github.com/angular/angular-cli/commit/9e6ab1bf231b35aceb989337fac55a6136594c5d) | fix | use default import for `express` | +- The app-shell schematic is no longer compatible with Webpack-based builders. ### @angular-devkit/build-angular -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | -| [ea5ae68da](https://github.com/angular/angular-cli/commit/ea5ae68da9e7f2b598bae2ca9ac8be9c20ce7888) | fix | bring back style tags in browser builder | -| [25d928b4f](https://github.com/angular/angular-cli/commit/25d928b4fde00ae8396f6b9cfcd92b5254fc49aa) | fix | fix hanging terminal when `browser-sync` is not installed | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | -| [2551df533](https://github.com/angular/angular-cli/commit/2551df533d61400c0fda89db77a93378480f5047) | fix | fully disable component style HMR in JIT mode | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------- | -| [4ecf63a77](https://github.com/angular/angular-cli/commit/4ecf63a777871bf214bf42fe1738c206bde3201c) | fix | export PrerenderFallback | -| [fb05e7f0a](https://github.com/angular/angular-cli/commit/fb05e7f0abd9d68ac03f243c7774260619b8a623) | fix | use wildcard server route configuration on the '/' route when the app router is empty | +- The `browserTarget` option has been removed from the DevServer and ExtractI18n builders. `buildTarget` is to be used instead. +- Protractor is no longer supported. - + Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor. - + - https://angular.dev/tools/cli/end-to-end + - https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c -# 19.0.0-rc.2 (2024-11-14) +### @angular-devkit/core -### @angular/cli +- The deprecated `fileBuffer` function is no longer available. Update your code to use `stringToFileBuffer` instead to maintain compatibility. -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | -| [52dcd551c](https://github.com/angular/angular-cli/commit/52dcd551ca286b09b370b37757da76e524a685d7) | fix | support default options for multiselect list x-prompt | + **Note:** that this change does not affect application developers. ### @angular/build -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | -| [5a7a2925b](https://github.com/angular/angular-cli/commit/5a7a2925b1f649eabbeb0a75452978cddb3f243d) | fix | add missing redirect in SSR manifest | -| [53b6cd33c](https://github.com/angular/angular-cli/commit/53b6cd33cff6c153608c5fab3093ecc9a02a97df) | fix | allow .js file replacements in all configuration cases | -| [3602bbb77](https://github.com/angular/angular-cli/commit/3602bbb77b8924e89978427d9115f0b1fd7d46b7) | fix | avoid overwriting inline style bundling additional results | -| [172f3c25a](https://github.com/angular/angular-cli/commit/172f3c25a33d51ba290389b8a4742f13df6d7a50) | fix | improve URL rebasing for hyphenated Sass namespaced variables | +- The `@angular/localize/init` polyfill will no longer be added automatically to projects. To prevent runtime issues, ensure that this polyfill is manually included in the "polyfills" section of your "angular.json" file if your application relies on Angular localization features. ### @angular/ssr -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------- | -| [280ebbda4](https://github.com/angular/angular-cli/commit/280ebbda4c65e19b83448a1bb0de056a2ee5d1c6) | fix | support for HTTP/2 request/response handling | - - - - +- The `CommonEngine` API now needs to be imported from `@angular/ssr/node`. -# 18.2.12 (2024-11-14) + **Before** -### @angular/cli + ```ts + import { CommonEngine } from '@angular/ssr'; + ``` -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | -| [c3925ed7f](https://github.com/angular/angular-cli/commit/c3925ed7f8e34fd9816cf5a4e8d63c2c45d31d53) | fix | support default options for multiselect list x-prompt | + **After** -### @angular/build + ```ts + import { CommonEngine } from '@angular/ssr/node'; + ``` -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | -| [c8bee8415](https://github.com/angular/angular-cli/commit/c8bee8415099dfa03d5309183ebbbaab73b2a0eb) | fix | allow .js file replacements in all configuration cases | -| [93f552112](https://github.com/angular/angular-cli/commit/93f552112c2bbd10bc0cee4afcae5b012242636c) | fix | improve URL rebasing for hyphenated Sass namespaced variables | +### @angular-devkit/schematics-cli - +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | +| [37693c40e](https://github.com/angular/angular-cli/commit/37693c40e3afc4c6dd7c949ea658bdf94146c9d8) | feat | add package manager option to blank schematic | - +### @schematics/angular -# 19.0.0-rc.1 (2024-11-06) +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- | +| [a381a3db1](https://github.com/angular/angular-cli/commit/a381a3db187f7b20e5ec8d1e1a1f1bd860426fcd) | feat | add option to export component as default | +| [755f3a07f](https://github.com/angular/angular-cli/commit/755f3a07f5fe485c1ed8c0c6060d6d5c799c085c) | feat | add option to setup new workspace or application as zoneless mode | +| [cfca5442e](https://github.com/angular/angular-cli/commit/cfca5442ec01cc4eff4fe75822eb7ef780ccfef1) | feat | integrate `withEventReplay()` in `provideClientHydration` for new SSR apps | +| [292a4b7c2](https://github.com/angular/angular-cli/commit/292a4b7c2f62828606c42258db524341f4a6391e) | feat | update app-shell and ssr schematics to adopt new Server Rendering API | +| [b1504c3bc](https://github.com/angular/angular-cli/commit/b1504c3bcca4d4c313e5d795ace8b074fb1f8890) | fix | component spec with export default | +| [4b4e000dd](https://github.com/angular/angular-cli/commit/4b4e000dd60bb43df5c8694eb8a0bc0b45d1cf8d) | fix | don't show server routing prompt when using `browser` builder | +| [4e2a5fe15](https://github.com/angular/angular-cli/commit/4e2a5fe155006e7154326319ed39e77e5693d9b3) | fix | enable opt-in for new `@angular/ssr` feature | +| [fcf7443d6](https://github.com/angular/angular-cli/commit/fcf7443d626d1f3e828ebfad464598f7b9ddef12) | fix | explicitly set standalone:false | +| [7992218a9](https://github.com/angular/angular-cli/commit/7992218a9c22ea9469bd3386c7dc1d5efc6e51f9) | fix | remove `declaration` and `sourceMap` from default tsconfig | +| [9e6ab1bf2](https://github.com/angular/angular-cli/commit/9e6ab1bf231b35aceb989337fac55a6136594c5d) | fix | use default import for `express` | ### @angular/cli | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- | +| [201b60e1d](https://github.com/angular/angular-cli/commit/201b60e1dd25b4abb7670e21d103b67d4eda0e14) | feat | handle string key/value pairs, e.g. --define | | [b847d4460](https://github.com/angular/angular-cli/commit/b847d4460c352604e1935d494efd761915caaa3f) | fix | recommend optional application update migration during v19 update | +| [f249e7e85](https://github.com/angular/angular-cli/commit/f249e7e856bf16e8c5f154fdb8aff36421649a1b) | perf | enable Node.js compile code cache when available | +| [ecc107d83](https://github.com/angular/angular-cli/commit/ecc107d83bfdfd9d5dd1087e264892d60361625c) | perf | enable Node.js compile code cache when available | -### @schematics/angular +### @angular-devkit/architect -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------- | -| [b1504c3bc](https://github.com/angular/angular-cli/commit/b1504c3bcca4d4c313e5d795ace8b074fb1f8890) | fix | component spec with export default | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------- | +| [78f76485f](https://github.com/angular/angular-cli/commit/78f76485fe315ffd0262c1a3732092731235828b) | feat | merge object options from CLI | ### @angular-devkit/build-angular -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------- | -| [2ec877dd0](https://github.com/angular/angular-cli/commit/2ec877dd0dede8f3ee849fe83b4a4427bab96447) | fix | handle basename collisions | -| [43e7aae22](https://github.com/angular/angular-cli/commit/43e7aae2284ff15e0282c9d9597c4f31cf1f60a4) | fix | remove double-watch in karma | -| [1e37b5939](https://github.com/angular/angular-cli/commit/1e37b59396a2f815d1671ccecc03ff8441730391) | fix | serve assets | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------- | +| [0a4ef3026](https://github.com/angular/angular-cli/commit/0a4ef302635e4665ae9881746867dd80ca0d2dc7) | feat | karma-coverage w/ app builder | +| [dcbdca85c](https://github.com/angular/angular-cli/commit/dcbdca85c7fe1a7371b8f6662e0f68e24d56102e) | feat | karma+esbuild+watch | +| [54594b5ab](https://github.com/angular/angular-cli/commit/54594b5abfa4c9301cc369e5dea5f76b71e51ab0) | feat | support karma with esbuild | +| [ea5ae68da](https://github.com/angular/angular-cli/commit/ea5ae68da9e7f2b598bae2ca9ac8be9c20ce7888) | fix | bring back style tags in browser builder | +| [476f94f51](https://github.com/angular/angular-cli/commit/476f94f51a3403d03ceb9f58ffb4a3564cc52e5a) | fix | fix --watch regression in karma | +| [25d928b4f](https://github.com/angular/angular-cli/commit/25d928b4fde00ae8396f6b9cfcd92b5254fc49aa) | fix | fix hanging terminal when `browser-sync` is not installed | +| [2ec877dd0](https://github.com/angular/angular-cli/commit/2ec877dd0dede8f3ee849fe83b4a4427bab96447) | fix | handle basename collisions | +| [ab6e19e1f](https://github.com/angular/angular-cli/commit/ab6e19e1f9a8781334821048522abe86b149c9c3) | fix | handle main field | +| [43e7aae22](https://github.com/angular/angular-cli/commit/43e7aae2284ff15e0282c9d9597c4f31cf1f60a4) | fix | remove double-watch in karma | +| [1e37b5939](https://github.com/angular/angular-cli/commit/1e37b59396a2f815d1671ccecc03ff8441730391) | fix | serve assets | +| [9d7613db9](https://github.com/angular/angular-cli/commit/9d7613db9bf8b397d5896fcdf6c7b0efeaffa5d5) | fix | zone.js/testing + karma + esbuild | +| [e40384e63](https://github.com/angular/angular-cli/commit/e40384e637bc6f92c28f4e572f986ca902938ba2) | refactor | remove deprecated `browserTarget` | +| [62877bdf2](https://github.com/angular/angular-cli/commit/62877bdf2b0449d8c12a167c59d0c24c77467f37) | refactor | remove Protractor builder and schematics | + +### @angular-devkit/core + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------ | +| [0d8a1006d](https://github.com/angular/angular-cli/commit/0d8a1006d4629d8af1144065ea237ab30916e66e) | refactor | remove deprecated `fileBuffer` function in favor of `stringToFileBuffer` | ### @angular/build -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------- | -| [ecaf870b5](https://github.com/angular/angular-cli/commit/ecaf870b5cddd5d43d297f1193eb11b8f73757c0) | fix | always clear dev-server error overlay on non-error result | -| [71534aadc](https://github.com/angular/angular-cli/commit/71534aadc403404e2dc9bc12054f32c3ed157db9) | fix | check referenced files against native file paths | -| [fed31e064](https://github.com/angular/angular-cli/commit/fed31e064611894934c86ed36e8b0808029d4143) | fix | correctly use dev-server hmr option to control stylesheet hot replacement | -| [b86bb080e](https://github.com/angular/angular-cli/commit/b86bb080e3a58a3320b2f68fb79edcdc98bfa7e9) | fix | disable dev-server websocket when live reload is disabled | -| [efb2232df](https://github.com/angular/angular-cli/commit/efb2232df5475699a44d0f76a70e2d7de4a71f5a) | fix | ensure accurate content size in server asset metadata | -| [18a8584ea](https://github.com/angular/angular-cli/commit/18a8584ead439d044760fe2abb4a7f657a0b10e3) | fix | ensure SVG template URLs are considered templates with external stylesheets | -| [7502fee28](https://github.com/angular/angular-cli/commit/7502fee28a057b53e60b97f55b5aff5281019f1b) | fix | Exclude known `--import` from execArgv when spawning workers | -| [c41529cc1](https://github.com/angular/angular-cli/commit/c41529cc1d762cf508eccf46c44256df21afe24f) | fix | handle `APP_BASE_HREF` correctly in prerendered routes | -| [cf0228b82](https://github.com/angular/angular-cli/commit/cf0228b828fc43b1b33d48dc0977ff59abb597c2) | fix | skip wildcard routes from being listed as prerendered routes | -| [c8e1521a2](https://github.com/angular/angular-cli/commit/c8e1521a2bd5b47c811e5d7f9aea7f57e92a4552) | fix | workaround Vite CSS ShadowDOM hot replacement | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------- | +| [b6951f448](https://github.com/angular/angular-cli/commit/b6951f4482418f65e4bd1c15d5f7f051c91d59db) | feat | add `sass` to `stylePreprocessorOptions` in application builder | +| [efb434136](https://github.com/angular/angular-cli/commit/efb434136d8c8df207747ab8fd87b7e2116b7106) | feat | Auto-CSP support as a part of angular.json schema | +| [816e3cb86](https://github.com/angular/angular-cli/commit/816e3cb868961c57a68783601b919370076c41dc) | feat | enable component stylesheet hot replacement by default | +| [3b00fc908](https://github.com/angular/angular-cli/commit/3b00fc908d4f07282e89677928e00665c8578ab5) | feat | introduce `outputMode` option to the application builder | +| [7d883a152](https://github.com/angular/angular-cli/commit/7d883a152e978112245a98f2f737764caa76ec0f) | feat | introduce `ssr.experimentalPlatform` option | +| [c48d6947e](https://github.com/angular/angular-cli/commit/c48d6947ed17eab19822a97492e3686bcf059494) | feat | set development/production condition | +| [f63072668](https://github.com/angular/angular-cli/commit/f63072668e44254da78170445ac2417c7bc1aa18) | feat | utilize `ssr.entry` during prerendering to enable access to local API routes | +| [bbc290133](https://github.com/angular/angular-cli/commit/bbc290133fc93186980ca3c43f221847ba8e858a) | feat | utilize `ssr.entry` in Vite dev-server when available | +| [5a7a2925b](https://github.com/angular/angular-cli/commit/5a7a2925b1f649eabbeb0a75452978cddb3f243d) | fix | add missing redirect in SSR manifest | +| [06e5176c2](https://github.com/angular/angular-cli/commit/06e5176c2d3b27aaeb117374a8ae402c6a4c6319) | fix | add warning when `--prerendering` or `--app-shell` are no-ops | +| [ecaf870b5](https://github.com/angular/angular-cli/commit/ecaf870b5cddd5d43d297f1193eb11b8f73757c0) | fix | always clear dev-server error overlay on non-error result | +| [f8677f6a9](https://github.com/angular/angular-cli/commit/f8677f6a9ba155b04c692814a1bc13f5cc47d94d) | fix | always record component style usage for HMR updates | +| [099e477a8](https://github.com/angular/angular-cli/commit/099e477a8f1bbcf9d0f415dc6fd4743107c967f7) | fix | avoid hashing development external component stylesheets | +| [3602bbb77](https://github.com/angular/angular-cli/commit/3602bbb77b8924e89978427d9115f0b1fd7d46b7) | fix | avoid overwriting inline style bundling additional results | +| [71534aadc](https://github.com/angular/angular-cli/commit/71534aadc403404e2dc9bc12054f32c3ed157db9) | fix | check referenced files against native file paths | +| [fed31e064](https://github.com/angular/angular-cli/commit/fed31e064611894934c86ed36e8b0808029d4143) | fix | correctly use dev-server hmr option to control stylesheet hot replacement | +| [b86bb080e](https://github.com/angular/angular-cli/commit/b86bb080e3a58a3320b2f68fb79edcdc98bfa7e9) | fix | disable dev-server websocket when live reload is disabled | +| [7c50ba9e2](https://github.com/angular/angular-cli/commit/7c50ba9e2faca445c196c69e972ac313547dda54) | fix | ensure `index.csr.html` is always generated when prerendering or SSR are enabled | +| [efb2232df](https://github.com/angular/angular-cli/commit/efb2232df5475699a44d0f76a70e2d7de4a71f5a) | fix | ensure accurate content size in server asset metadata | +| [18a8584ea](https://github.com/angular/angular-cli/commit/18a8584ead439d044760fe2abb4a7f657a0b10e3) | fix | ensure SVG template URLs are considered templates with external stylesheets | +| [7502fee28](https://github.com/angular/angular-cli/commit/7502fee28a057b53e60b97f55b5aff5281019f1b) | fix | Exclude known `--import` from execArgv when spawning workers | +| [2551df533](https://github.com/angular/angular-cli/commit/2551df533d61400c0fda89db77a93378480f5047) | fix | fully disable component style HMR in JIT mode | +| [c41529cc1](https://github.com/angular/angular-cli/commit/c41529cc1d762cf508eccf46c44256df21afe24f) | fix | handle `APP_BASE_HREF` correctly in prerendered routes | +| [87a90afd4](https://github.com/angular/angular-cli/commit/87a90afd4600049b184b32f8f92a0634e25890c0) | fix | incomplete string escaping or encoding | +| [1bb68ba68](https://github.com/angular/angular-cli/commit/1bb68ba6812236a135c1599031bf7e1b7e0d1d79) | fix | move lmdb to optionalDependencies | +| [a995c8ea6](https://github.com/angular/angular-cli/commit/a995c8ea6d17778af031c2f9797e52739ea4dc81) | fix | prevent prerendering of catch-all routes | +| [1654acf0f](https://github.com/angular/angular-cli/commit/1654acf0ff3010b619a22d11f17eec9975d8e2a2) | fix | relax constraints on external stylesheet component id | +| [0d4558ea5](https://github.com/angular/angular-cli/commit/0d4558ea516a4b8716f2442290e05354c502a49e) | fix | set `ngServerMode` during vite prebundling | +| [55d7f01b6](https://github.com/angular/angular-cli/commit/55d7f01b66f4867aad4598574582e8505f201c82) | fix | simplify disabling server features with `--no-server` via command line | +| [cf0228b82](https://github.com/angular/angular-cli/commit/cf0228b828fc43b1b33d48dc0977ff59abb597c2) | fix | skip wildcard routes from being listed as prerendered routes | +| [af52fb49b](https://github.com/angular/angular-cli/commit/af52fb49bdd913af8af9bfbe36be279fce70de39) | fix | synchronize import/export conditions between bundler and TypeScript | +| [6c618d495](https://github.com/angular/angular-cli/commit/6c618d495c54394eb2b87aee36ba5436c06557bd) | fix | update logic to support both internal and external SSR middlewares | +| [bfa8fec9b](https://github.com/angular/angular-cli/commit/bfa8fec9b17d421925a684e2b642dee70165a879) | fix | use named export `reqHandler` for server.ts request handling | +| [c8e1521a2](https://github.com/angular/angular-cli/commit/c8e1521a2bd5b47c811e5d7f9aea7f57e92a4552) | fix | workaround Vite CSS ShadowDOM hot replacement | +| [d6a34034d](https://github.com/angular/angular-cli/commit/d6a34034d7489c09753090642ade4c606cd98ece) | refactor | remove automatic addition of `@angular/localize/init` polyfill and related warnings | ### @angular/ssr -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------- | -| [74b3e2d51](https://github.com/angular/angular-cli/commit/74b3e2d51c6cf605abd05da81dc7b4c3ccd9b3ea) | fix | add validation to prevent use of `provideServerRoutesConfig` in browser context | -| [df4e1d360](https://github.com/angular/angular-cli/commit/df4e1d3607c2d5bf71d1234fa730e63cd6ab594b) | fix | enable serving of prerendered pages in the App Engine | -| [3cf7a5223](https://github.com/angular/angular-cli/commit/3cf7a522318e34daa09f29133e8c3444f154ca0b) | fix | initialize the DI tokens with `null` to avoid requiring them to be set to optional | -| [f460b91d4](https://github.com/angular/angular-cli/commit/f460b91d46ea5b0413596c4852c80d71d5308910) | perf | integrate ETags for prerendered pages | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------------------------- | +| [92209dd2e](https://github.com/angular/angular-cli/commit/92209dd2e93af450e3fc657609efe95c6a6b3963) | feat | add `createRequestHandler` and `createNodeRequestHandler `utilities | +| [41fb2ed86](https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2) | feat | Add `getHeaders` Method to `AngularAppEngine` and `AngularNodeAppEngine` for handling pages static headers | +| [f346ee8a8](https://github.com/angular/angular-cli/commit/f346ee8a8819bb2eaf0ffb3d5523b00093be09e5) | feat | add `isMainModule` function | +| [d66aaa3ca](https://github.com/angular/angular-cli/commit/d66aaa3ca458e05b535bec7c1dcb98b0e9c5202e) | feat | add server routing configuration API | +| [bca568389](https://github.com/angular/angular-cli/commit/bca56838937f942c5ef902f5c98d018582188e84) | feat | dynamic route resolution using Angular router | +| [30c25bf68](https://github.com/angular/angular-cli/commit/30c25bf6885fefea6094ec1815e066e4c6ada097) | feat | export `AngularAppEngine` as public API | +| [455b5700c](https://github.com/angular/angular-cli/commit/455b5700c29845829235e17efec320e634553108) | feat | expose `writeResponseToNodeResponse` and `createWebRequestFromNodeRequest` in public API | +| [9692a9054](https://github.com/angular/angular-cli/commit/9692a9054c3cdbf151df01279c2d268332b1a032) | feat | improve handling of aborted requests in `AngularServerApp` | +| [576ff604c](https://github.com/angular/angular-cli/commit/576ff604cd739a9f41d588fa093ca2568e46826c) | feat | introduce `AngularNodeAppEngine` API for Node.js integration | +| [3c9697a8c](https://github.com/angular/angular-cli/commit/3c9697a8c34a5e0f3470bde73f11f9f32107f42e) | feat | introduce new hybrid rendering API | +| [4b09887a9](https://github.com/angular/angular-cli/commit/4b09887a9c82838ccb7a6c95d66225c7875e562b) | feat | move `CommonEngine` API to `/node` entry-point | +| [d43180af5](https://github.com/angular/angular-cli/commit/d43180af5f3e7b29387fd06625bd8e37f3ebad95) | fix | add missing peer dependency on `@angular/platform-server` | +| [74b3e2d51](https://github.com/angular/angular-cli/commit/74b3e2d51c6cf605abd05da81dc7b4c3ccd9b3ea) | fix | add validation to prevent use of `provideServerRoutesConfig` in browser context | +| [2640bf7a6](https://github.com/angular/angular-cli/commit/2640bf7a680300acf18cf6502c57a00e0a5bfda9) | fix | correct route extraction and error handling | +| [44077f54e](https://github.com/angular/angular-cli/commit/44077f54e9a95afa5c1f85cf198aaa3412ee08d8) | fix | designate package as side-effect free | +| [df4e1d360](https://github.com/angular/angular-cli/commit/df4e1d3607c2d5bf71d1234fa730e63cd6ab594b) | fix | enable serving of prerendered pages in the App Engine | +| [0793c78cf](https://github.com/angular/angular-cli/commit/0793c78cfcbfc5d55fe6ce2cb53cada684bcb8dc) | fix | ensure wildcard RenderMode is applied when no Angular routes are defined | +| [65b6e75a5](https://github.com/angular/angular-cli/commit/65b6e75a5dca581a57a9ac3d61869fdd20f7dc2e) | fix | export `RESPONSE_INIT`, `REQUEST`, and `REQUEST_CONTEXT` tokens | +| [4ecf63a77](https://github.com/angular/angular-cli/commit/4ecf63a777871bf214bf42fe1738c206bde3201c) | fix | export PrerenderFallback | +| [50df63196](https://github.com/angular/angular-cli/commit/50df631960550049e7d1779fd2c8fbbcf549b8ef) | fix | improve handling of route mismatches between Angular server routes and Angular router | +| [3cf7a5223](https://github.com/angular/angular-cli/commit/3cf7a522318e34daa09f29133e8c3444f154ca0b) | fix | initialize the DI tokens with `null` to avoid requiring them to be set to optional | +| [85df4011b](https://github.com/angular/angular-cli/commit/85df4011ba27254ddb7f22dae550272c9c4406dd) | fix | resolve `bootstrap is not a function` error | +| [e9c9e4995](https://github.com/angular/angular-cli/commit/e9c9e4995e39d9d62d10fe0497e0b98127bc8afa) | fix | resolve circular dependency issue from main.server.js reference in manifest | +| [64c52521d](https://github.com/angular/angular-cli/commit/64c52521d052f850aa7ea1aaadfd8a9fcee9c387) | fix | show error when multiple routes are set with `RenderMode.AppShell` | +| [280ebbda4](https://github.com/angular/angular-cli/commit/280ebbda4c65e19b83448a1bb0de056a2ee5d1c6) | fix | support for HTTP/2 request/response handling | +| [fb05e7f0a](https://github.com/angular/angular-cli/commit/fb05e7f0abd9d68ac03f243c7774260619b8a623) | fix | use wildcard server route configuration on the '/' route when the app router is empty | +| [12ff37adb](https://github.com/angular/angular-cli/commit/12ff37adbed552fc0db97251c30c889ef00e50f3) | perf | cache generated inline CSS for HTML | +| [1d70e3b46](https://github.com/angular/angular-cli/commit/1d70e3b4682806a55d6f7ddacbafcbf615b2a10c) | perf | cache resolved entry-points | +| [f460b91d4](https://github.com/angular/angular-cli/commit/f460b91d46ea5b0413596c4852c80d71d5308910) | perf | integrate ETags for prerendered pages | +| [e52ae7f6f](https://github.com/angular/angular-cli/commit/e52ae7f6f5296a9628cc4a517e82339ac54925bb) | perf | prevent potential stampede in entry-points cache | - - -# 19.0.0-rc.0 (2024-10-30) - -### @schematics/angular + -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------- | -| [4e2a5fe15](https://github.com/angular/angular-cli/commit/4e2a5fe155006e7154326319ed39e77e5693d9b3) | fix | enable opt-in for new `@angular/ssr` feature | +# 18.2.12 (2024-11-14) -### @angular-devkit/build-angular +### @angular/cli -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------- | -| [476f94f51](https://github.com/angular/angular-cli/commit/476f94f51a3403d03ceb9f58ffb4a3564cc52e5a) | fix | fix --watch regression in karma | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | +| [c3925ed7f](https://github.com/angular/angular-cli/commit/c3925ed7f8e34fd9816cf5a4e8d63c2c45d31d53) | fix | support default options for multiselect list x-prompt | ### @angular/build -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------- | -| [06e5176c2](https://github.com/angular/angular-cli/commit/06e5176c2d3b27aaeb117374a8ae402c6a4c6319) | fix | add warning when `--prerendering` or `--app-shell` are no-ops | -| [f8677f6a9](https://github.com/angular/angular-cli/commit/f8677f6a9ba155b04c692814a1bc13f5cc47d94d) | fix | always record component style usage for HMR updates | -| [099e477a8](https://github.com/angular/angular-cli/commit/099e477a8f1bbcf9d0f415dc6fd4743107c967f7) | fix | avoid hashing development external component stylesheets | -| [0d4558ea5](https://github.com/angular/angular-cli/commit/0d4558ea516a4b8716f2442290e05354c502a49e) | fix | set `ngServerMode` during vite prebundling | -| [55d7f01b6](https://github.com/angular/angular-cli/commit/55d7f01b66f4867aad4598574582e8505f201c82) | fix | simplify disabling server features with `--no-server` via command line | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------ | -| [0793c78cf](https://github.com/angular/angular-cli/commit/0793c78cfcbfc5d55fe6ce2cb53cada684bcb8dc) | fix | ensure wildcard RenderMode is applied when no Angular routes are defined | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | +| [c8bee8415](https://github.com/angular/angular-cli/commit/c8bee8415099dfa03d5309183ebbbaab73b2a0eb) | fix | allow .js file replacements in all configuration cases | +| [93f552112](https://github.com/angular/angular-cli/commit/93f552112c2bbd10bc0cee4afcae5b012242636c) | fix | improve URL rebasing for hyphenated Sass namespaced variables | @@ -173,19 +212,6 @@ - - -# 19.0.0-next.13 (2024-10-23) - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | -| [efb434136](https://github.com/angular/angular-cli/commit/efb434136d8c8df207747ab8fd87b7e2116b7106) | feat | Auto-CSP support as a part of angular.json schema | -| [cc345b02d](https://github.com/angular/angular-cli/commit/cc345b02d814a37bb23d6c3f1baca9595130d010) | fix | Address build issue in Node.js LTS versions with prerendering or SSR | - - - # 18.2.10 (2024-10-23) @@ -216,68 +242,6 @@ - - -# 19.0.0-next.12 (2024-10-21) - -## Breaking Changes - -### @angular-devkit/build-angular - -- Protractor is no longer supported. - - Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor. - - - https://angular.dev/tools/cli/end-to-end - - https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------- | -| [62877bdf2](https://github.com/angular/angular-cli/commit/62877bdf2b0449d8c12a167c59d0c24c77467f37) | refactor | remove Protractor builder and schematics | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | -| [1654acf0f](https://github.com/angular/angular-cli/commit/1654acf0ff3010b619a22d11f17eec9975d8e2a2) | fix | relax constraints on external stylesheet component id | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------- | -| [44077f54e](https://github.com/angular/angular-cli/commit/44077f54e9a95afa5c1f85cf198aaa3412ee08d8) | fix | designate package as side-effect free | - - - - - -# 19.0.0-next.11 (2024-10-16) - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------- | -| [755f3a07f](https://github.com/angular/angular-cli/commit/755f3a07f5fe485c1ed8c0c6060d6d5c799c085c) | feat | add option to setup new workspace or application as zoneless mode | -| [fcf7443d6](https://github.com/angular/angular-cli/commit/fcf7443d626d1f3e828ebfad464598f7b9ddef12) | fix | explicitly set standalone:false | -| [a68e832ae](https://github.com/angular/angular-cli/commit/a68e832aefa0767461e43e3b824f3ef773b02038) | fix | update browserslist config to include last 2 Android major versions | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------- | -| [b6951f448](https://github.com/angular/angular-cli/commit/b6951f4482418f65e4bd1c15d5f7f051c91d59db) | feat | add `sass` to `stylePreprocessorOptions` in application builder | -| [816e3cb86](https://github.com/angular/angular-cli/commit/816e3cb868961c57a68783601b919370076c41dc) | feat | enable component stylesheet hot replacement by default | -| [7d883a152](https://github.com/angular/angular-cli/commit/7d883a152e978112245a98f2f737764caa76ec0f) | feat | introduce `ssr.experimentalPlatform` option | -| [c48d6947e](https://github.com/angular/angular-cli/commit/c48d6947ed17eab19822a97492e3686bcf059494) | feat | set development/production condition | -| [13b65dfe1](https://github.com/angular/angular-cli/commit/13b65dfe191ca18a577421019c9a9e285d5c95a3) | fix | allow direct bundling of TSX files with application builder | -| [5f473affc](https://github.com/angular/angular-cli/commit/5f473affcf001888082bf4adc51481c5afca81e0) | fix | avoid race condition in sass importer | -| [af52fb49b](https://github.com/angular/angular-cli/commit/af52fb49bdd913af8af9bfbe36be279fce70de39) | fix | synchronize import/export conditions between bundler and TypeScript | -| [bfa8fec9b](https://github.com/angular/angular-cli/commit/bfa8fec9b17d421925a684e2b642dee70165a879) | fix | use named export `reqHandler` for server.ts request handling | - - - # 18.2.9 (2024-10-16) @@ -297,43 +261,6 @@ - - -# 19.0.0-next.10 (2024-10-09) - -## Breaking Changes - -### @schematics/angular - -- The app-shell schematic is no longer compatible with Webpack-based builders. - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------- | -| [292a4b7c2](https://github.com/angular/angular-cli/commit/292a4b7c2f62828606c42258db524341f4a6391e) | feat | update app-shell and ssr schematics to adopt new Server Rendering API | -| [6dbfc770b](https://github.com/angular/angular-cli/commit/6dbfc770b2d2f72dbc73e39e763f0773435825c6) | fix | add validation for component and directive class name | -| [7de93e593](https://github.com/angular/angular-cli/commit/7de93e593a9b6439b2f33d0c25c371e14a0e9e38) | fix | include `index.csr.html` in resources asset group | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------- | -| [ab6e19e1f](https://github.com/angular/angular-cli/commit/ab6e19e1f9a8781334821048522abe86b149c9c3) | fix | handle main field | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------------- | -| [549c20a93](https://github.com/angular/angular-cli/commit/549c20a9396b33ae2e6708a8a9a7c77f0167b276) | fix | `Ctrl + C` not terminating dev-server with SSR | -| [1d9db138f](https://github.com/angular/angular-cli/commit/1d9db138f34132f62fd008c9b8597489b08018e6) | fix | always generate a new hash for optimized chunk | -| [7c50ba9e2](https://github.com/angular/angular-cli/commit/7c50ba9e2faca445c196c69e972ac313547dda54) | fix | ensure `index.csr.html` is always generated when prerendering or SSR are enabled | -| [1bb68ba68](https://github.com/angular/angular-cli/commit/1bb68ba6812236a135c1599031bf7e1b7e0d1d79) | fix | move lmdb to optionalDependencies | -| [9233e5ef4](https://github.com/angular/angular-cli/commit/9233e5ef471e851a173827df7f74a581381c6373) | fix | show error message when error stack is undefined | -| [6c618d495](https://github.com/angular/angular-cli/commit/6c618d495c54394eb2b87aee36ba5436c06557bd) | fix | update logic to support both internal and external SSR middlewares | - - - # 18.2.8 (2024-10-09) @@ -354,37 +281,6 @@ - - -# 19.0.0-next.9 (2024-10-02) - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | -| [0a4ef3026](https://github.com/angular/angular-cli/commit/0a4ef302635e4665ae9881746867dd80ca0d2dc7) | feat | karma-coverage w/ app builder | -| [dcbdca85c](https://github.com/angular/angular-cli/commit/dcbdca85c7fe1a7371b8f6662e0f68e24d56102e) | feat | karma+esbuild+watch | -| [9d7613db9](https://github.com/angular/angular-cli/commit/9d7613db9bf8b397d5896fcdf6c7b0efeaffa5d5) | fix | zone.js/testing + karma + esbuild | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------------------------- | -| [f63072668](https://github.com/angular/angular-cli/commit/f63072668e44254da78170445ac2417c7bc1aa18) | feat | utilize `ssr.entry` during prerendering to enable access to local API routes | -| [ecfb2b261](https://github.com/angular/angular-cli/commit/ecfb2b261356946d5f4a653f90c0b78db4ef519c) | fix | add few more SVG elements animateMotion, animateTransform, and feBlend etc. to valid self-closing elements | -| [87a90afd4](https://github.com/angular/angular-cli/commit/87a90afd4600049b184b32f8f92a0634e25890c0) | fix | incomplete string escaping or encoding | -| [c0b76e337](https://github.com/angular/angular-cli/commit/c0b76e3377e7f9ded023e5350b9a9ae90a7d31ee) | fix | separate Vite cache by project | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------- | -| [50df63196](https://github.com/angular/angular-cli/commit/50df631960550049e7d1779fd2c8fbbcf549b8ef) | fix | improve handling of route mismatches between Angular server routes and Angular router | -| [64c52521d](https://github.com/angular/angular-cli/commit/64c52521d052f850aa7ea1aaadfd8a9fcee9c387) | fix | show error when multiple routes are set with `RenderMode.AppShell` | -| [12ff37adb](https://github.com/angular/angular-cli/commit/12ff37adbed552fc0db97251c30c889ef00e50f3) | perf | cache generated inline CSS for HTML | - - - # 18.2.7 (2024-10-02) @@ -405,44 +301,6 @@ - - -# 19.0.0-next.8 (2024-09-26) - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- | -| [cfca5442e](https://github.com/angular/angular-cli/commit/cfca5442ec01cc4eff4fe75822eb7ef780ccfef1) | feat | integrate `withEventReplay()` in `provideClientHydration` for new SSR apps | -| [4179bf2e6](https://github.com/angular/angular-cli/commit/4179bf2e6b38eeddb53b4e9989a7c64238ab23ad) | fix | support single quote setting in JetBrains IDEs | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------- | -| [54594b5ab](https://github.com/angular/angular-cli/commit/54594b5abfa4c9301cc369e5dea5f76b71e51ab0) | feat | support karma with esbuild | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | -| [3b00fc908](https://github.com/angular/angular-cli/commit/3b00fc908d4f07282e89677928e00665c8578ab5) | feat | introduce `outputMode` option to the application builder | -| [bbc290133](https://github.com/angular/angular-cli/commit/bbc290133fc93186980ca3c43f221847ba8e858a) | feat | utilize `ssr.entry` in Vite dev-server when available | -| [dd499499c](https://github.com/angular/angular-cli/commit/dd499499c7e5aeb959cdb1a4442493091c07d667) | fix | add `animate` to valid self-closing elements | -| [13a3e430d](https://github.com/angular/angular-cli/commit/13a3e430da894fee87e4279f51b166f657b29b3f) | fix | allow missing HTML file request to fallback to index | -| [a995c8ea6](https://github.com/angular/angular-cli/commit/a995c8ea6d17778af031c2f9797e52739ea4dc81) | fix | prevent prerendering of catch-all routes | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------- | -| [92209dd2e](https://github.com/angular/angular-cli/commit/92209dd2e93af450e3fc657609efe95c6a6b3963) | feat | add `createRequestHandler` and `createNodeRequestHandler `utilities | -| [65b6e75a5](https://github.com/angular/angular-cli/commit/65b6e75a5dca581a57a9ac3d61869fdd20f7dc2e) | fix | export `RESPONSE_INIT`, `REQUEST`, and `REQUEST_CONTEXT` tokens | -| [1d70e3b46](https://github.com/angular/angular-cli/commit/1d70e3b4682806a55d6f7ddacbafcbf615b2a10c) | perf | cache resolved entry-points | -| [e52ae7f6f](https://github.com/angular/angular-cli/commit/e52ae7f6f5296a9628cc4a517e82339ac54925bb) | perf | prevent potential stampede in entry-points cache | - - - # 18.2.6 (2024-09-25) @@ -468,31 +326,6 @@ - - -# 19.0.0-next.7 (2024-09-18) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | -| [f249e7e85](https://github.com/angular/angular-cli/commit/f249e7e856bf16e8c5f154fdb8aff36421649a1b) | perf | enable Node.js compile code cache when available | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | -| [f6b7cd925](https://github.com/angular/angular-cli/commit/f6b7cd925dacf0ae34cb8e49b4deaf2e5c52ccd4) | fix | support HTTP HEAD requests for virtual output files | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------- | -| [f346ee8a8](https://github.com/angular/angular-cli/commit/f346ee8a8819bb2eaf0ffb3d5523b00093be09e5) | feat | add `isMainModule` function | -| [2640bf7a6](https://github.com/angular/angular-cli/commit/2640bf7a680300acf18cf6502c57a00e0a5bfda9) | fix | correct route extraction and error handling | - - - # 18.2.5 (2024-09-18) @@ -518,69 +351,6 @@ - - -# 19.0.0-next.6 (2024-09-13) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | -| [de17cbcb8](https://github.com/angular/angular-cli/commit/de17cbcb88e1f057f93d366c3e2eac4315986e54) | fix | Revert commit enable Node.js compile code cache when available | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------ | -| [d66aaa3ca](https://github.com/angular/angular-cli/commit/d66aaa3ca458e05b535bec7c1dcb98b0e9c5202e) | feat | add server routing configuration API | - - - - - -# 19.0.0-next.5 (2024-09-12) - -### @angular-devkit/architect - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------- | -| [78f76485f](https://github.com/angular/angular-cli/commit/78f76485fe315ffd0262c1a3732092731235828b) | feat | merge object options from CLI | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------- | -| [85df4011b](https://github.com/angular/angular-cli/commit/85df4011ba27254ddb7f22dae550272c9c4406dd) | fix | resolve `bootstrap is not a function` error | - - - - - -# 19.0.0-next.4 (2024-09-11) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | -| [201b60e1d](https://github.com/angular/angular-cli/commit/201b60e1dd25b4abb7670e21d103b67d4eda0e14) | feat | handle string key/value pairs, e.g. --define | -| [ecc107d83](https://github.com/angular/angular-cli/commit/ecc107d83bfdfd9d5dd1087e264892d60361625c) | perf | enable Node.js compile code cache when available | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | -| [4153a6ecf](https://github.com/angular/angular-cli/commit/4153a6ecf6707729a4f0c6a620eeb8d6916588df) | fix | prevent transformation of Node.js internal dependencies by Vite | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------------------------- | -| [41fb2ed86](https://github.com/angular/angular-cli/commit/41fb2ed86056306406832317178ca5d94aa110e2) | feat | Add `getHeaders` Method to `AngularAppEngine` and `AngularNodeAppEngine` for handling pages static headers | -| [576ff604c](https://github.com/angular/angular-cli/commit/576ff604cd739a9f41d588fa093ca2568e46826c) | feat | introduce `AngularNodeAppEngine` API for Node.js integration | -| [e9c9e4995](https://github.com/angular/angular-cli/commit/e9c9e4995e39d9d62d10fe0497e0b98127bc8afa) | fix | resolve circular dependency issue from main.server.js reference in manifest | - - - # 18.2.4 (2024-09-11) @@ -593,24 +363,6 @@ - - -# 19.0.0-next.3 (2024-09-04) - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | -| [3ee21631f](https://github.com/angular/angular-cli/commit/3ee21631f481b2e72be2390b5a2cac74824efbb5) | fix | clear context in Karma by default for single run executions | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------- | -| [455b5700c](https://github.com/angular/angular-cli/commit/455b5700c29845829235e17efec320e634553108) | feat | expose `writeResponseToNodeResponse` and `createWebRequestFromNodeRequest` in public API | - - - # 18.2.3 (2024-09-04) @@ -636,44 +388,6 @@ - - -# 19.0.0-next.2 (2024-08-28) - -## Breaking Changes - -### @angular/ssr - -- The `CommonEngine` API now needs to be imported from `@angular/ssr/node`. - - **Before** - - ```ts - import { CommonEngine } from '@angular/ssr'; - ``` - - **After** - - ```ts - import { CommonEngine } from '@angular/ssr/node'; - ``` - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------- | -| [a381a3db1](https://github.com/angular/angular-cli/commit/a381a3db187f7b20e5ec8d1e1a1f1bd860426fcd) | feat | add option to export component as default | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | -| [30c25bf68](https://github.com/angular/angular-cli/commit/30c25bf6885fefea6094ec1815e066e4c6ada097) | feat | export `AngularAppEngine` as public API | -| [4b09887a9](https://github.com/angular/angular-cli/commit/4b09887a9c82838ccb7a6c95d66225c7875e562b) | feat | move `CommonEngine` API to `/node` entry-point | -| [d43180af5](https://github.com/angular/angular-cli/commit/d43180af5f3e7b29387fd06625bd8e37f3ebad95) | fix | add missing peer dependency on `@angular/platform-server` | - - - # 17.3.9 (2024-08-29) @@ -700,61 +414,6 @@ - - -# 19.0.0-next.1 (2024-08-22) - -## Breaking Changes - -### @angular-devkit/build-angular - -- The `browserTarget` option has been removed from the DevServer and ExtractI18n builders. `buildTarget` is to be used instead. - -### @angular-devkit/core - -- The deprecated `fileBuffer` function is no longer available. Update your code to use `stringToFileBuffer` instead to maintain compatibility. - - **Note:** that this change does not affect application developers. - -### @angular/build - -- The `@angular/localize/init` polyfill will no longer be added automatically to projects. To prevent runtime issues, ensure that this polyfill is manually included in the "polyfills" section of your "angular.json" file if your application relies on Angular localization features. - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | -| [7992218a9](https://github.com/angular/angular-cli/commit/7992218a9c22ea9469bd3386c7dc1d5efc6e51f9) | fix | remove `declaration` and `sourceMap` from default tsconfig | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------- | -| [0b161bc76](https://github.com/angular/angular-cli/commit/0b161bc7616bef9a8f1f9113a50b07291635159d) | fix | remove outdated browser-esbuild option warning | -| [e40384e63](https://github.com/angular/angular-cli/commit/e40384e637bc6f92c28f4e572f986ca902938ba2) | refactor | remove deprecated `browserTarget` | - -### @angular-devkit/core - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------ | -| [0d8a1006d](https://github.com/angular/angular-cli/commit/0d8a1006d4629d8af1144065ea237ab30916e66e) | refactor | remove deprecated `fileBuffer` function in favor of `stringToFileBuffer` | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------- | -| [71c06c69f](https://github.com/angular/angular-cli/commit/71c06c69f6f472e5ea86f2e5adbd5062a8cc5f2a) | fix | improve error message when an unhandled exception occurs during prerendering | -| [6b544f70e](https://github.com/angular/angular-cli/commit/6b544f70e706b9e13564d4ddbb0f0cb352942b2c) | fix | support reading on-disk files during i18n extraction | -| [d6a34034d](https://github.com/angular/angular-cli/commit/d6a34034d7489c09753090642ade4c606cd98ece) | refactor | remove automatic addition of `@angular/localize/init` polyfill and related warnings | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | -| [9692a9054](https://github.com/angular/angular-cli/commit/9692a9054c3cdbf151df01279c2d268332b1a032) | feat | improve handling of aborted requests in `AngularServerApp` | - - - # 18.2.1 (2024-08-21) @@ -786,32 +445,6 @@ - - -# 19.0.0-next.0 (2024-08-14) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | -| [c5ed0b124](https://github.com/angular/angular-cli/commit/c5ed0b1248dc2d5f895f4c4dc6737269a4854a1e) | fix | prevent bypassing select/checkbox prompts on validation failure | - -### @angular-devkit/schematics-cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | -| [37693c40e](https://github.com/angular/angular-cli/commit/37693c40e3afc4c6dd7c949ea658bdf94146c9d8) | feat | add package manager option to blank schematic | -| [73c243796](https://github.com/angular/angular-cli/commit/73c24379651695d8bb82602ab613e568f1233c2c) | fix | prevent bypassing select/checkbox prompts on validation failure | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | -| [bca568389](https://github.com/angular/angular-cli/commit/bca56838937f942c5ef902f5c98d018582188e84) | feat | dynamic route resolution using Angular router | -| [3c9697a8c](https://github.com/angular/angular-cli/commit/3c9697a8c34a5e0f3470bde73f11f9f32107f42e) | feat | introduce new hybrid rendering API | - - - # 18.2.0 (2024-08-14) From 19b21d2084ef4875d7892ed3d3284581fb0b5f6c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 19 Nov 2024 17:23:20 +0000 Subject: [PATCH 0009/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 ++++---- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/pr.yml | 40 +++---- package.json | 8 +- .../hello-world-lib/projects/lib/package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++--- yarn.lock | 101 ++++++++++-------- 9 files changed, 122 insertions(+), 113 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 29e6de006939..bf5e9e72702c 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + - uses: angular/dev-infra/github-actions/branch-manager@320768b066699be0c4add3f686585262bd16221f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 246717c86bea..008e35df9a02 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - run: yarn 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 453ce0f4e046..2a578c048677 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + - uses: angular/dev-infra/github-actions/commit-message-based-labels@320768b066699be0c4add3f686585262bd16221f 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + - uses: angular/dev-infra/github-actions/post-approval-changes@320768b066699be0c4add3f686585262bd16221f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index abc0ac2342c1..81671667214a 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + - uses: angular/dev-infra/github-actions/feature-request@320768b066699be0c4add3f686585262bd16221f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 507ad62ac402..b782b1958165 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/linting/licenses@320768b066699be0c4add3f686585262bd16221f - name: Check tooling setup run: yarn 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@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d + uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 dea678052731..bbeb966c1444 100644 --- a/package.json +++ b/package.json @@ -54,16 +54,16 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "19.0.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#3ba5a1f997a072caffcf19f9c767e7e570043898", - "@angular/cdk": "19.0.0-rc.3", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#aa2ad1f1196c487234fe76cd568a0a36bacce38e", + "@angular/cdk": "19.0.0", "@angular/common": "19.0.0", "@angular/compiler": "19.0.0", "@angular/compiler-cli": "19.0.0", "@angular/core": "19.0.0", "@angular/forms": "19.0.0", "@angular/localize": "19.0.0", - "@angular/material": "19.0.0-rc.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5f5021669687fdd811f916dc9699eca753ab4a13", + "@angular/material": "19.0.0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#40ab13986bf8f47bc585d412aa9171361c2d8dda", "@angular/platform-browser": "19.0.0", "@angular/platform-browser-dynamic": "19.0.0", "@angular/platform-server": "19.0.0", diff --git a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json index f9f13d820eb6..2b444b5e4ac5 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json +++ b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json @@ -2,7 +2,7 @@ "name": "lib", "version": "0.0.1", "peerDependencies": { - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0" + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0" } } \ No newline at end of file diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 6c3aa7080c10..81dfdbc0cd23 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#931ded667f431e7c48f34555d1592d35f65a76eb", - "@angular/cdk": "github:angular/cdk-builds#a679dddfc0b970aac957de86f60f891a6f10e4e4", - "@angular/common": "github:angular/common-builds#bdd75dd3d04901b70c9aee1d1642f398e9aa3d78", - "@angular/compiler": "github:angular/compiler-builds#796c12ef96e7282bb4e3c97dc1bfb2f156981b58", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e16a78fc4f9fa8852d664643e54717d610c2c8eb", - "@angular/core": "github:angular/core-builds#9bd4c1ae50ac926e5a68de80166dcc5350d5a531", - "@angular/forms": "github:angular/forms-builds#a680934d853c9faadbf14072101479a1eb0ae180", - "@angular/language-service": "github:angular/language-service-builds#64a1665b6cc6d2bdbb10d3edb9324c944f973e89", - "@angular/localize": "github:angular/localize-builds#06f7e600c5ab917fb8ba558c0b8d435302cecf82", - "@angular/material": "github:angular/material-builds#95e67386c99d265ff5210a802868bc865569ea32", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b47dcbc19a7c6e1ee26b5b9522cb631c9fb558a3", - "@angular/platform-browser": "github:angular/platform-browser-builds#e48a8d3985745d7bdb17d644211cc3b36c77a673", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a2e91bc21203497176d12c2b9c39dbf049b60bde", - "@angular/platform-server": "github:angular/platform-server-builds#d90bf181ee6c809d5dade8fd9f258ee9d4bc8fff", - "@angular/router": "github:angular/router-builds#31e37b449af045edbed4ed7a4361e0c30004c4ac", - "@angular/service-worker": "github:angular/service-worker-builds#4b70106048fac2b062b33fb3976b62da1dc375a5" + "@angular/animations": "github:angular/animations-builds#0253863b0daea58220f8d88044018c5a83ff65fc", + "@angular/cdk": "github:angular/cdk-builds#576a64229229285cd8da949923b00d2d1dc623ba", + "@angular/common": "github:angular/common-builds#82e6d69002d6af030ce1f815471f442a41d061e5", + "@angular/compiler": "github:angular/compiler-builds#acb67ad87155619752454bc38f7430a4b52e3a0b", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#7324192afb798985ec198c459f36fb89d416b66c", + "@angular/core": "github:angular/core-builds#316b679fb142dd001aead68eef83d0b21f5510f3", + "@angular/forms": "github:angular/forms-builds#4bde4cb15fcb52025c684862cbf7d7f209bea896", + "@angular/language-service": "github:angular/language-service-builds#892abcde601133d18e01889f17a8d7d23056727c", + "@angular/localize": "github:angular/localize-builds#ab0a04e40b65cd89c42c4b873c1b0c8af80a9a1d", + "@angular/material": "github:angular/material-builds#4469e65b24d4f38a2f98414e4ff2bb50d0beee94", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#6c6bfad8faf630bda09483590df8c3a03b48e406", + "@angular/platform-browser": "github:angular/platform-browser-builds#3548471f39babc0dcf983b2a45cb7504c0b6a920", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e7b1863d3bd1d18c9d086cfeedc9902de793d878", + "@angular/platform-server": "github:angular/platform-server-builds#8ef532dd97f6e989dd074b9dae889c22b972b8dd", + "@angular/router": "github:angular/router-builds#5f67b30c17086bee9b35c9a55ad0b3eb72c6215c", + "@angular/service-worker": "github:angular/service-worker-builds#11769f2f80097624ff3fb5f219dfcd2cf96d7ab9" } } diff --git a/yarn.lock b/yarn.lock index b33883433995..e941c7eafc3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,18 +40,18 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/architect@npm:0.1900.0-rc.2": - version: 0.1900.0-rc.2 - resolution: "@angular-devkit/architect@npm:0.1900.0-rc.2" +"@angular-devkit/architect@npm:0.1900.0-rc.3": + version: 0.1900.0-rc.3 + resolution: "@angular-devkit/architect@npm:0.1900.0-rc.3" dependencies: - "@angular-devkit/core": "npm:19.0.0-rc.2" + "@angular-devkit/core": "npm:19.0.0-rc.3" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/bc3423a6b0295cf0feb9f04b4e880abe021fdedc5ae4ad1bbd1eefc5c4a0ec7f8245d18d4431801425d85c15444e46704f13ab6b7a06b01d6cbbc24fa4b475aa + checksum: 10c0/48ef99d0a1516b2e40fc17f9dcbbce7eb48a5f3254d37c6aa8692e9679924cab0d684819d152be2c4f5110c46601a4caae5a80011c360f40399ec970971e469f languageName: node linkType: hard @@ -194,9 +194,9 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/core@npm:19.0.0-rc.2": - version: 19.0.0-rc.2 - resolution: "@angular-devkit/core@npm:19.0.0-rc.2" +"@angular-devkit/core@npm:19.0.0-rc.3": + version: 19.0.0-rc.3 + resolution: "@angular-devkit/core@npm:19.0.0-rc.3" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -214,7 +214,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/455bb381cfb2c6e3b25805c2dd12873c55daeefd95082044be02b78c73e4e814e9ed23f9e28852441902539bc50e0b6c8e10c3fd5724ff5c6a465b82b4dcd9a9 + checksum: 10c0/476855ca6ff7512a01f8aafee2c220e372a557482bbf0c2b593dac884625b8c8ddb9ed5775ad03b4a5deda88d8833c90da5c09242979357b00ca46ceb69c0b1e languageName: node linkType: hard @@ -324,12 +324,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#3ba5a1f997a072caffcf19f9c767e7e570043898": - version: 0.0.0-910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=3ba5a1f997a072caffcf19f9c767e7e570043898" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#aa2ad1f1196c487234fe76cd568a0a36bacce38e": + version: 0.0.0-320768b066699be0c4add3f686585262bd16221f + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=aa2ad1f1196c487234fe76cd568a0a36bacce38e" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.0.0-rc.2" + "@angular/build": "npm:19.0.0-rc.3" "@babel/core": "npm:^7.16.0" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" "@bazel/buildifier": "npm:6.3.3" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/8ef4fb83a5e368ba84e9b05f2d25133af1567ae07d68581bf746cc05820edb3c0d581b11bb322ff1d057fdff2ad59ee921bf6db4c61191eae46d9fd7e896e721 + checksum: 10c0/74b8bdb370a5ababacf55550819364145b15aad7c833b2a16cc19cd981b2573e463ec8cae201d246de6cfdea4416c3b5603d0739e7e3119eafb389436fbdf413 languageName: node linkType: hard @@ -429,12 +429,12 @@ __metadata: languageName: unknown linkType: soft -"@angular/build@npm:19.0.0-rc.2": - version: 19.0.0-rc.2 - resolution: "@angular/build@npm:19.0.0-rc.2" +"@angular/build@npm:19.0.0-rc.3": + version: 19.0.0-rc.3 + resolution: "@angular/build@npm:19.0.0-rc.3" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1900.0-rc.2" + "@angular-devkit/architect": "npm:0.1900.0-rc.3" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" @@ -465,7 +465,7 @@ __metadata: "@angular/localize": ^19.0.0-next.9 "@angular/platform-server": ^19.0.0-next.9 "@angular/service-worker": ^19.0.0-next.9 - "@angular/ssr": ^19.0.0-rc.2 + "@angular/ssr": ^19.0.0-rc.3 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -492,24 +492,24 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10c0/813790eeeb5d72eb00b10e0f2ab70f0e96c4db106a3734e828e7d1eabb4825591f3df61a9f7e5a382b1a56fecab48fe3bb3cde0f39dae25867e433db43ee87f2 + checksum: 10c0/ad01eb28c16f376e7beefd2d1df6ab1bf39c3bd27f546b7fb1932c53170f61262404b6f051747fed06ca5245ef6484fab3dd21d0ab118da0d1b05308b2efa480 languageName: node linkType: hard -"@angular/cdk@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/cdk@npm:19.0.0-rc.3" +"@angular/cdk@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/cdk@npm:19.0.0" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/common": ^19.0.0 || ^20.0.0 + "@angular/core": ^19.0.0 || ^20.0.0 rxjs: ^6.5.3 || ^7.4.0 dependenciesMeta: parse5: optional: true - checksum: 10c0/3206d0b42d6369f7e68651000cdff0569bcec6ff460d7765fd326fe4b3162c3ccfcecd0671342c6f1f5524226fa170d97238485f89bb896ce936dc22dee16edc + checksum: 10c0/542659c4fd19a08514b26c4ab5428ce1efcae6921243eb13d6bd27ed2f3a63466fc1625e087e9509da381cb9aa0ffded1ecd102ab9c84ad689916f4b475bbe44 languageName: node linkType: hard @@ -629,16 +629,16 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.0.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#3ba5a1f997a072caffcf19f9c767e7e570043898" - "@angular/cdk": "npm:19.0.0-rc.3" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#aa2ad1f1196c487234fe76cd568a0a36bacce38e" + "@angular/cdk": "npm:19.0.0" "@angular/common": "npm:19.0.0" "@angular/compiler": "npm:19.0.0" "@angular/compiler-cli": "npm:19.0.0" "@angular/core": "npm:19.0.0" "@angular/forms": "npm:19.0.0" "@angular/localize": "npm:19.0.0" - "@angular/material": "npm:19.0.0-rc.3" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5f5021669687fdd811f916dc9699eca753ab4a13" + "@angular/material": "npm:19.0.0" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#40ab13986bf8f47bc585d412aa9171361c2d8dda" "@angular/platform-browser": "npm:19.0.0" "@angular/platform-browser-dynamic": "npm:19.0.0" "@angular/platform-server": "npm:19.0.0" @@ -833,26 +833,26 @@ __metadata: languageName: node linkType: hard -"@angular/material@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/material@npm:19.0.0-rc.3" +"@angular/material@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/material@npm:19.0.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/cdk": 19.0.0-rc.3 - "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/forms": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/platform-browser": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/animations": ^19.0.0 || ^20.0.0 + "@angular/cdk": 19.0.0 + "@angular/common": ^19.0.0 || ^20.0.0 + "@angular/core": ^19.0.0 || ^20.0.0 + "@angular/forms": ^19.0.0 || ^20.0.0 + "@angular/platform-browser": ^19.0.0 || ^20.0.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/56854f744a590db0e4ace6be4b0d2643b5cf26e25a9f96e2d9401b150a3fade9fd6ed7969d3bcd2f44066e5433508f624e9ae690f1dd2a61d3bb814668b0a840 + checksum: 10c0/dd8ad1a2fac0b9437dd2f22e04c5c3c1b9aeaff936cc10c4044489063e4a83a8eced8ddcd42654995a8d78182348e1431d227a667151fde8fc06a208d3728115 languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#5f5021669687fdd811f916dc9699eca753ab4a13": - version: 0.0.0-910c72bbcc1bf1ae2b22c48d41b2f0e8eeda520d - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=5f5021669687fdd811f916dc9699eca753ab4a13" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#40ab13986bf8f47bc585d412aa9171361c2d8dda": + version: 0.0.0-320768b066699be0c4add3f686585262bd16221f + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=40ab13986bf8f47bc585d412aa9171361c2d8dda" dependencies: "@octokit/rest": "npm:21.0.2" "@types/semver": "npm:^7.3.6" @@ -863,10 +863,10 @@ __metadata: supports-color: "npm:9.4.0" typed-graphqlify: "npm:^3.1.1" typescript: "npm:~4.9.0" - yaml: "npm:2.6.0" + yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/d1d1c28b019fd01b5d457f4586a66596d151d9f703fde0d9b26632b975677f3eac0a6ffdd71f2638133ec9dd7f4e25fd54a619009292ddd37149a4a60ad548ba + checksum: 10c0/46246daba8ab12869fc29a13e52985ef56fb63af1d076cc90fc19cda87e63811e97123f14d2b83a8c0d7134348b5a7777372c081cee077d2baed964e7d462baa languageName: node linkType: hard @@ -18612,7 +18612,16 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.0, yaml@npm:^2.4.1": +"yaml@npm:2.6.1": + version: 2.6.1 + resolution: "yaml@npm:2.6.1" + bin: + yaml: bin.mjs + checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 + languageName: node + linkType: hard + +"yaml@npm:^2.4.1": version: 2.6.0 resolution: "yaml@npm:2.6.0" bin: From 148af6ee0c833052cbd66f5e08bcff802734e718 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 18 Nov 2024 08:26:02 +0000 Subject: [PATCH 0010/2162] build: lock file maintenance --- yarn.lock | 300 +++++++++++++++++++++++++++--------------------------- 1 file changed, 151 insertions(+), 149 deletions(-) diff --git a/yarn.lock b/yarn.lock index e941c7eafc3b..6562a7486eee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4183,13 +4183,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.25.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.26.0" @@ -4197,10 +4190,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-android-arm64@npm:4.25.0" - conditions: os=android & cpu=arm64 +"@rollup/rollup-android-arm-eabi@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.2" + conditions: os=android & cpu=arm languageName: node linkType: hard @@ -4211,10 +4204,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.25.0" - conditions: os=darwin & cpu=arm64 +"@rollup/rollup-android-arm64@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-android-arm64@npm:4.27.2" + conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -4225,10 +4218,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.25.0" - conditions: os=darwin & cpu=x64 +"@rollup/rollup-darwin-arm64@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.27.2" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -4239,10 +4232,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.25.0" - conditions: os=freebsd & cpu=arm64 +"@rollup/rollup-darwin-x64@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.27.2" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -4253,10 +4246,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.25.0" - conditions: os=freebsd & cpu=x64 +"@rollup/rollup-freebsd-arm64@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.2" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -4267,10 +4260,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.25.0" - conditions: os=linux & cpu=arm & libc=glibc +"@rollup/rollup-freebsd-x64@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.27.2" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -4281,10 +4274,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.25.0" - conditions: os=linux & cpu=arm & libc=musl +"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.2" + conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard @@ -4295,10 +4288,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.25.0" - conditions: os=linux & cpu=arm64 & libc=glibc +"@rollup/rollup-linux-arm-musleabihf@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.2" + conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard @@ -4309,10 +4302,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.25.0" - conditions: os=linux & cpu=arm64 & libc=musl +"@rollup/rollup-linux-arm64-gnu@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.2" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -4323,10 +4316,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.25.0" - conditions: os=linux & cpu=ppc64 & libc=glibc +"@rollup/rollup-linux-arm64-musl@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.2" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -4337,10 +4330,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.25.0" - conditions: os=linux & cpu=riscv64 & libc=glibc +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.2" + conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard @@ -4351,10 +4344,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.25.0" - conditions: os=linux & cpu=s390x & libc=glibc +"@rollup/rollup-linux-riscv64-gnu@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.2" + conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard @@ -4365,10 +4358,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.25.0" - conditions: os=linux & cpu=x64 & libc=glibc +"@rollup/rollup-linux-s390x-gnu@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.2" + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -4379,10 +4372,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.25.0" - conditions: os=linux & cpu=x64 & libc=musl +"@rollup/rollup-linux-x64-gnu@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.2" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -4393,10 +4386,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.25.0" - conditions: os=win32 & cpu=arm64 +"@rollup/rollup-linux-x64-musl@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.2" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -4407,10 +4400,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.25.0" - conditions: os=win32 & cpu=ia32 +"@rollup/rollup-win32-arm64-msvc@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.2" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -4421,10 +4414,10 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.25.0": - version: 4.25.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.25.0" - conditions: os=win32 & cpu=x64 +"@rollup/rollup-win32-ia32-msvc@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.2" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -4435,9 +4428,16 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.27.2": + version: 4.27.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/wasm-node@npm:^4.24.0": - version: 4.25.0 - resolution: "@rollup/wasm-node@npm:4.25.0" + version: 4.27.2 + resolution: "@rollup/wasm-node@npm:4.27.2" dependencies: "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" @@ -4446,7 +4446,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/1b8c1e2f320a93ad1a163726dd4f9995aee1203b3a468c10fe769f503b0314df6e0b1c146b48970a1c462b24b848956d8b94452841b44571b496ff975f8d2793 + checksum: 10c0/c917e50fc47b1965949b1048f96130bab36d8bb3816cdafbed42d0b2d96452a80fb748b0f99969d179ce86a431c599f693e9455c04e46bba735cc74d4d72a228 languageName: node linkType: hard @@ -7669,9 +7669,9 @@ __metadata: linkType: hard "ci-info@npm:^4.0.0": - version: 4.0.0 - resolution: "ci-info@npm:4.0.0" - checksum: 10c0/ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 + version: 4.1.0 + resolution: "ci-info@npm:4.1.0" + checksum: 10c0/0f969ce32a974c542bc8abe4454b220d9d9323bb9415054c92a900faa5fdda0bb222eda68c490127c1d78503510d46b6aca614ecaba5a60515b8ac7e170119e6 languageName: node linkType: hard @@ -8627,10 +8627,10 @@ __metadata: languageName: node linkType: hard -"devtools-protocol@npm:0.0.1354347": - version: 0.0.1354347 - resolution: "devtools-protocol@npm:0.0.1354347" - checksum: 10c0/c3b6106eca257d870aca6f56ec6520b25c970051c5dcf847091201f4a635d12ba3821171de966f65beaa9b06c9dc1a77b43b6e4c5533eb1a5a7ef0b8b2972491 +"devtools-protocol@npm:0.0.1367902": + version: 0.0.1367902 + resolution: "devtools-protocol@npm:0.0.1367902" + checksum: 10c0/be4017f2bfd04474d718daca0e88e062f4afceb2f311662d717f4eae5bda3473da748a68ff1bf2326a67ce35c37af33932190fe8ef1d36c8ef22576befdc57c4 languageName: node linkType: hard @@ -8805,9 +8805,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.56 - resolution: "electron-to-chromium@npm:1.5.56" - checksum: 10c0/515ee6c8d75fb48f4a7d1ae44cc788cd219c24a3e20a44edb0ee77506687e163dd9663fbf7805c5c5281c52e735605d94d0afd22ec0644ea0e0fb2bc471fd23b + version: 1.5.62 + resolution: "electron-to-chromium@npm:1.5.62" + checksum: 10c0/93dc628f0359df0cae475cf5e91fa0cf357611f14da7cf15c28fe92f89dede7def20c04b24787e6166181ae582b060d02b252e906d7ec84020485579a95bc8e9 languageName: node linkType: hard @@ -8993,8 +8993,8 @@ __metadata: linkType: hard "es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" + version: 1.23.5 + resolution: "es-abstract@npm:1.23.5" dependencies: array-buffer-byte-length: "npm:^1.0.1" arraybuffer.prototype.slice: "npm:^1.0.3" @@ -9011,7 +9011,7 @@ __metadata: function.prototype.name: "npm:^1.1.6" get-intrinsic: "npm:^1.2.4" get-symbol-description: "npm:^1.0.2" - globalthis: "npm:^1.0.3" + globalthis: "npm:^1.0.4" gopd: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.0.3" @@ -9027,10 +9027,10 @@ __metadata: is-string: "npm:^1.0.7" is-typed-array: "npm:^1.1.13" is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.1" + object-inspect: "npm:^1.13.3" object-keys: "npm:^1.1.1" object.assign: "npm:^4.1.5" - regexp.prototype.flags: "npm:^1.5.2" + regexp.prototype.flags: "npm:^1.5.3" safe-array-concat: "npm:^1.1.2" safe-regex-test: "npm:^1.0.3" string.prototype.trim: "npm:^1.2.9" @@ -9042,7 +9042,7 @@ __metadata: typed-array-length: "npm:^1.0.6" unbox-primitive: "npm:^1.0.2" which-typed-array: "npm:^1.1.15" - checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666 + checksum: 10c0/1f6f91da9cf7ee2c81652d57d3046621d598654d1d1b05c1578bafe5c4c2d3d69513901679bdca2de589f620666ec21de337e4935cec108a4ed0871d5ef04a5d languageName: node linkType: hard @@ -10439,7 +10439,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3": +"globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" dependencies: @@ -10974,13 +10974,6 @@ __metadata: languageName: node linkType: hard -"immutable@npm:^4.0.0": - version: 4.3.7 - resolution: "immutable@npm:4.3.7" - checksum: 10c0/9b099197081b22f6433003e34929da8ecddbbdc1474cdc8aa3b7669dee4adda349c06143de22def36016d1b6de5322b043eccd7a11db1dad2ca85dad4fff5435 - languageName: node - linkType: hard - "immutable@npm:^5.0.2": version: 5.0.2 resolution: "immutable@npm:5.0.2" @@ -13882,7 +13875,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1": +"object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": version: 1.13.3 resolution: "object-inspect@npm:1.13.3" checksum: 10c0/cc3f15213406be89ffdc54b525e115156086796a515410a8d390215915db9f23c8eab485a06f1297402f440a33715fe8f71a528c1dcbad6e1a3bcaf5a46921d4 @@ -14179,13 +14172,13 @@ __metadata: linkType: hard "p-retry@npm:^6.2.0": - version: 6.2.0 - resolution: "p-retry@npm:6.2.0" + version: 6.2.1 + resolution: "p-retry@npm:6.2.1" dependencies: "@types/retry": "npm:0.12.2" is-network-error: "npm:^1.0.0" retry: "npm:^0.13.1" - checksum: 10c0/3277f2a8450fb1429c29c432d24c5965b32f187228f1beea56f5d49209717588a7dc0415def1c653f60e0d15ed72c56dacaa2d5fdfa71b0f860592b0aa6ce823 + checksum: 10c0/10d014900107da2c7071ad60fffe4951675f09930b7a91681643ea224ae05649c05001d9e78436d902fe8b116d520dd1f60e72e091de097e2640979d56f3fb60 languageName: node linkType: hard @@ -14698,15 +14691,15 @@ __metadata: linkType: hard "postcss-modules-local-by-default@npm:^4.0.5": - version: 4.0.5 - resolution: "postcss-modules-local-by-default@npm:4.0.5" + version: 4.1.0 + resolution: "postcss-modules-local-by-default@npm:4.1.0" dependencies: icss-utils: "npm:^5.0.0" - postcss-selector-parser: "npm:^6.0.2" + postcss-selector-parser: "npm:^7.0.0" postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 10c0/f4ad35abeb685ecb25f80c93d9fe23c8b89ee45ac4185f3560e701b4d7372f9b798577e79c5ed03b6d9c80bc923b001210c127c04ced781f43cda9e32b202a5b + checksum: 10c0/d6e47d2488c6fcde2c91696d15ef094e6b1cdd8d5dcdf20c6ac72567fcc4778f5f80b8381839232b37242f200b4d83e98a947bf3b3315b0bf673ea42528a3caf languageName: node linkType: hard @@ -14732,7 +14725,7 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.1.2": +"postcss-selector-parser@npm:^6.1.2": version: 6.1.2 resolution: "postcss-selector-parser@npm:6.1.2" dependencies: @@ -15045,16 +15038,16 @@ __metadata: linkType: hard "puppeteer-core@npm:^23.2.0": - version: 23.7.1 - resolution: "puppeteer-core@npm:23.7.1" + version: 23.8.0 + resolution: "puppeteer-core@npm:23.8.0" dependencies: "@puppeteer/browsers": "npm:2.4.1" chromium-bidi: "npm:0.8.0" debug: "npm:^4.3.7" - devtools-protocol: "npm:0.0.1354347" + devtools-protocol: "npm:0.0.1367902" typed-query-selector: "npm:^2.12.0" ws: "npm:^8.18.0" - checksum: 10c0/018e3c7d508238f4aaa2075ab1db84f77ecbb65487c57dc876caf598d0e5f3d12fa8404a7511e9864aa51c64139d166552aa0450c82ff05c119aee32d2e7a672 + checksum: 10c0/6282881e6be1535082f879ccf585e02cb22fde5ce45072d71a8a1fcad5e9be3d27157e8be4728bec2344b300aa96437c4c820a00e01f1577f27b971980e1bced languageName: node linkType: hard @@ -15100,7 +15093,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.0, qs@npm:^6.5.2": +"qs@npm:6.13.0": version: 6.13.0 resolution: "qs@npm:6.13.0" dependencies: @@ -15109,6 +15102,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.5.2": + version: 6.13.1 + resolution: "qs@npm:6.13.1" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 10c0/5ef527c0d62ffca5501322f0832d800ddc78eeb00da3b906f1b260ca0492721f8cdc13ee4b8fd8ac314a6ec37b948798c7b603ccc167e954088df392092f160c + languageName: node + linkType: hard + "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" @@ -15344,7 +15346,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.2": +"regexp.prototype.flags@npm:^1.5.3": version: 1.5.3 resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: @@ -15688,27 +15690,27 @@ __metadata: linkType: hard "rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": - version: 4.25.0 - resolution: "rollup@npm:4.25.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.25.0" - "@rollup/rollup-android-arm64": "npm:4.25.0" - "@rollup/rollup-darwin-arm64": "npm:4.25.0" - "@rollup/rollup-darwin-x64": "npm:4.25.0" - "@rollup/rollup-freebsd-arm64": "npm:4.25.0" - "@rollup/rollup-freebsd-x64": "npm:4.25.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.25.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.25.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.25.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.25.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.25.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.25.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.25.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.25.0" - "@rollup/rollup-linux-x64-musl": "npm:4.25.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.25.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.25.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.25.0" + version: 4.27.2 + resolution: "rollup@npm:4.27.2" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.27.2" + "@rollup/rollup-android-arm64": "npm:4.27.2" + "@rollup/rollup-darwin-arm64": "npm:4.27.2" + "@rollup/rollup-darwin-x64": "npm:4.27.2" + "@rollup/rollup-freebsd-arm64": "npm:4.27.2" + "@rollup/rollup-freebsd-x64": "npm:4.27.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.27.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.27.2" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.27.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.27.2" + "@rollup/rollup-linux-x64-musl": "npm:4.27.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.27.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.27.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.27.2" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -15752,7 +15754,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/fdb4d530bc942024f6e9ee3b5051fd2a8ef545a3869a689f6d1fea0f391e0b257835b639c01dc3024dbafe3790c8210aea547bcddbdb38c002087e5bf4630ad8 + checksum: 10c0/563c43d064b7af64156621b52997d2c8a4609774dea4deb06c0fbc1f18450f1b65036404224e81a6bbc80a316a558452151fe9be2214b1898aa66bdd93209496 languageName: node linkType: hard @@ -15883,19 +15885,19 @@ __metadata: linkType: hard "sass@npm:^1.79.5": - version: 1.80.6 - resolution: "sass@npm:1.80.6" + version: 1.81.0 + resolution: "sass@npm:1.81.0" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" - immutable: "npm:^4.0.0" + immutable: "npm:^5.0.2" source-map-js: "npm:>=0.6.2 <2.0.0" dependenciesMeta: "@parcel/watcher": optional: true bin: sass: sass.js - checksum: 10c0/04ce40d4dcf06cf2a94a66c1cc4fd4a9eb4033fd039291acd0be9d1d4123860da568c5cbef9de8493ffbedd8acae1cd0b8346f5da21c6f7cf0ffd3477730beca + checksum: 10c0/9c59b3c9b4231c18fcb4583cc232dbc4de501ddc11101b7a025e44833e3f3ce6031546dc1cd109ee9f04ebcfb1fe30ff870810af33b8feb9aa9e36dfba9ec1ef languageName: node linkType: hard @@ -16713,8 +16715,8 @@ __metadata: linkType: hard "streamx@npm:^2.15.0, streamx@npm:^2.20.0": - version: 2.20.1 - resolution: "streamx@npm:2.20.1" + version: 2.20.2 + resolution: "streamx@npm:2.20.2" dependencies: bare-events: "npm:^2.2.0" fast-fifo: "npm:^1.3.2" @@ -16723,7 +16725,7 @@ __metadata: dependenciesMeta: bare-events: optional: true - checksum: 10c0/34ffa2ee9465d70e18c7e2ba70189720c166d150ab83eb7700304620fa23ff42a69cb37d712ea4b5fc6234d8e74346a88bb4baceb873c6b05e52ac420f8abb4d + checksum: 10c0/2ad68b9426e0211c1198b5b5dd7280088793c6792e1f8e2a8fbd2487d483f35ee13b0b46edfa247daad2132d6b0abc21af4eaa4a4c099ff4cd11fcff83e6ce3e languageName: node linkType: hard @@ -17529,9 +17531,9 @@ __metadata: linkType: hard "typical@npm:^7.1.1": - version: 7.2.0 - resolution: "typical@npm:7.2.0" - checksum: 10c0/aa447e761808c9447c3abde370f2bdd2edd031ff68183aac49ac503905155e66a9f47e1462ac6fa411f76b22920c4d403f948f49d984ebf52d019fa590034963 + version: 7.3.0 + resolution: "typical@npm:7.3.0" + checksum: 10c0/bee697a88e1dd0447bc1cf7f6e875eaa2b0fb2cccb338b7b261e315f7df84a66402864bfc326d6b3117c50475afd1d49eda03d846a6299ad25f211035bfab3b1 languageName: node linkType: hard From 4d437ec1930016ce972fc365bbb71d0607124e83 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 20 Nov 2024 09:08:02 +0000 Subject: [PATCH 0011/2162] fix(@angular/build): ensure accurate content length for server assets Adjusts the server assets to use the original content length Closes #28832 --- .../angular/build/src/utils/server-rendering/manifest.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index 505eeb0ed516..eb13be07e5d1 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -124,19 +124,16 @@ export function generateAngularServerAppManifest( const extension = extname(file.path); if (extension === '.html' || (inlineCriticalCss && extension === '.css')) { const jsChunkFilePath = `assets-chunks/${file.path.replace(/[./]/g, '_')}.mjs`; - const escapedContent = escapeUnsafeChars(file.text); - serverAssetsChunks.push( createOutputFile( jsChunkFilePath, - `export default \`${escapedContent}\`;`, + `export default \`${escapeUnsafeChars(file.text)}\`;`, BuildOutputFileType.ServerApplication, ), ); - const contentLength = Buffer.byteLength(escapedContent); serverAssetsContent.push( - `['${file.path}', {size: ${contentLength}, hash: '${file.hash}', text: () => import('./${jsChunkFilePath}').then(m => m.default)}]`, + `['${file.path}', {size: ${file.size}, hash: '${file.hash}', text: () => import('./${jsChunkFilePath}').then(m => m.default)}]`, ); } } From 1bc5d65bf0eacdeec2331186ed097f244d3f4917 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 20 Nov 2024 17:14:22 +0000 Subject: [PATCH 0012/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 ++++++------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/pr.yml | 40 ++++++------ package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++----- yarn.lock | 62 +++++++++---------- 8 files changed, 94 insertions(+), 94 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index bf5e9e72702c..10c9f64d286c 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@320768b066699be0c4add3f686585262bd16221f + - uses: angular/dev-infra/github-actions/branch-manager@7a4326af255661a5c0d3fe44fabac5ff36585fad with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 008e35df9a02..12e731b9bbc1 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@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - 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@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - run: yarn 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 2a578c048677..740002bc8f71 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@320768b066699be0c4add3f686585262bd16221f + - uses: angular/dev-infra/github-actions/commit-message-based-labels@7a4326af255661a5c0d3fe44fabac5ff36585fad 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@320768b066699be0c4add3f686585262bd16221f + - uses: angular/dev-infra/github-actions/post-approval-changes@7a4326af255661a5c0d3fe44fabac5ff36585fad with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 81671667214a..aea504667d0d 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@320768b066699be0c4add3f686585262bd16221f + - uses: angular/dev-infra/github-actions/feature-request@7a4326af255661a5c0d3fe44fabac5ff36585fad with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index b782b1958165..30b0fb0c1083 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@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/linting/licenses@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Check tooling setup run: yarn 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@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@320768b066699be0c4add3f686585262bd16221f + uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 bbeb966c1444..2e39abaf2278 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "19.0.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#aa2ad1f1196c487234fe76cd568a0a36bacce38e", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#693cb959b6f1bebf72d11245bccb80c11f41e5bb", "@angular/cdk": "19.0.0", "@angular/common": "19.0.0", "@angular/compiler": "19.0.0", @@ -63,7 +63,7 @@ "@angular/forms": "19.0.0", "@angular/localize": "19.0.0", "@angular/material": "19.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#40ab13986bf8f47bc585d412aa9171361c2d8dda", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9ce48789f423d72fb6b8d766b63b7b6611bc9e80", "@angular/platform-browser": "19.0.0", "@angular/platform-browser-dynamic": "19.0.0", "@angular/platform-server": "19.0.0", diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 81dfdbc0cd23..6c9b05d3e501 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#0253863b0daea58220f8d88044018c5a83ff65fc", - "@angular/cdk": "github:angular/cdk-builds#576a64229229285cd8da949923b00d2d1dc623ba", - "@angular/common": "github:angular/common-builds#82e6d69002d6af030ce1f815471f442a41d061e5", - "@angular/compiler": "github:angular/compiler-builds#acb67ad87155619752454bc38f7430a4b52e3a0b", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#7324192afb798985ec198c459f36fb89d416b66c", - "@angular/core": "github:angular/core-builds#316b679fb142dd001aead68eef83d0b21f5510f3", - "@angular/forms": "github:angular/forms-builds#4bde4cb15fcb52025c684862cbf7d7f209bea896", - "@angular/language-service": "github:angular/language-service-builds#892abcde601133d18e01889f17a8d7d23056727c", - "@angular/localize": "github:angular/localize-builds#ab0a04e40b65cd89c42c4b873c1b0c8af80a9a1d", - "@angular/material": "github:angular/material-builds#4469e65b24d4f38a2f98414e4ff2bb50d0beee94", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#6c6bfad8faf630bda09483590df8c3a03b48e406", - "@angular/platform-browser": "github:angular/platform-browser-builds#3548471f39babc0dcf983b2a45cb7504c0b6a920", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e7b1863d3bd1d18c9d086cfeedc9902de793d878", - "@angular/platform-server": "github:angular/platform-server-builds#8ef532dd97f6e989dd074b9dae889c22b972b8dd", - "@angular/router": "github:angular/router-builds#5f67b30c17086bee9b35c9a55ad0b3eb72c6215c", - "@angular/service-worker": "github:angular/service-worker-builds#11769f2f80097624ff3fb5f219dfcd2cf96d7ab9" + "@angular/animations": "github:angular/animations-builds#962c2a1e51ccc58258ef7651baf00e4e3c1581eb", + "@angular/cdk": "github:angular/cdk-builds#a5724684ca01671f5ae3d33408fceb617a3a5969", + "@angular/common": "github:angular/common-builds#bef8ddf7b5426c0da5daa97495fc790be432a0c7", + "@angular/compiler": "github:angular/compiler-builds#c9892439ad71d77e3abb1316081e50f1fc186c80", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#4fe1d0ac51d5e66ceaad4c94ac600ec9d0a0132f", + "@angular/core": "github:angular/core-builds#1cc72c98a639d464684d2547ed5af2fca37b106b", + "@angular/forms": "github:angular/forms-builds#806f878277b8c0712c5e538720cd51bbb6d548d3", + "@angular/language-service": "github:angular/language-service-builds#c219cf9f1cf1729d0dbb29b210b0eeac9bcaf9da", + "@angular/localize": "github:angular/localize-builds#2680cdc76d78921382b4883ff68b96184c6101f8", + "@angular/material": "github:angular/material-builds#b74c08281e333137f9d2fa6a942687eff43dd3bb", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#25a062b3b23b194f2d8412a623f784b7f53ac6f2", + "@angular/platform-browser": "github:angular/platform-browser-builds#4d942179c80e9d957b3588e65635a604f336c1e3", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#414c3a7a6067953359a39396ca102886a7157d0b", + "@angular/platform-server": "github:angular/platform-server-builds#d412453b889b7bf9d28d1fa00e22fcf5101e59b7", + "@angular/router": "github:angular/router-builds#c864b6f7dc7619d9709d4b42475070f3290fcc88", + "@angular/service-worker": "github:angular/service-worker-builds#13c8fb7b9bee9359d3c77fa7ab3a99a0329ea50a" } } diff --git a/yarn.lock b/yarn.lock index 6562a7486eee..6f80d2116a53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,18 +40,18 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/architect@npm:0.1900.0-rc.3": - version: 0.1900.0-rc.3 - resolution: "@angular-devkit/architect@npm:0.1900.0-rc.3" +"@angular-devkit/architect@npm:0.1900.0": + version: 0.1900.0 + resolution: "@angular-devkit/architect@npm:0.1900.0" dependencies: - "@angular-devkit/core": "npm:19.0.0-rc.3" + "@angular-devkit/core": "npm:19.0.0" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/48ef99d0a1516b2e40fc17f9dcbbce7eb48a5f3254d37c6aa8692e9679924cab0d684819d152be2c4f5110c46601a4caae5a80011c360f40399ec970971e469f + checksum: 10c0/14e4ea2167c812cc66654f006b7d7248b9eb29bf8a41ea97739398bfb5111d64bc4ce1501ec51a87ec1807667e8fe6e73a3f7054f37eea61a46e37ee1542910b languageName: node linkType: hard @@ -194,9 +194,9 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/core@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular-devkit/core@npm:19.0.0-rc.3" +"@angular-devkit/core@npm:19.0.0": + version: 19.0.0 + resolution: "@angular-devkit/core@npm:19.0.0" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -214,7 +214,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/476855ca6ff7512a01f8aafee2c220e372a557482bbf0c2b593dac884625b8c8ddb9ed5775ad03b4a5deda88d8833c90da5c09242979357b00ca46ceb69c0b1e + checksum: 10c0/fae90dd59048ee381729538b2e9c2d232de62c18455a21be9a9957634bf9f9dc68cf83cca1823200aacf8bfefc9d4075336a4da572be0d2e9c233e1fab574ce2 languageName: node linkType: hard @@ -324,12 +324,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#aa2ad1f1196c487234fe76cd568a0a36bacce38e": - version: 0.0.0-320768b066699be0c4add3f686585262bd16221f - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=aa2ad1f1196c487234fe76cd568a0a36bacce38e" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#693cb959b6f1bebf72d11245bccb80c11f41e5bb": + version: 0.0.0-7a4326af255661a5c0d3fe44fabac5ff36585fad + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=693cb959b6f1bebf72d11245bccb80c11f41e5bb" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.0.0-rc.3" + "@angular/build": "npm:19.0.0" "@babel/core": "npm:^7.16.0" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" "@bazel/buildifier": "npm:6.3.3" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/74b8bdb370a5ababacf55550819364145b15aad7c833b2a16cc19cd981b2573e463ec8cae201d246de6cfdea4416c3b5603d0739e7e3119eafb389436fbdf413 + checksum: 10c0/444b8e03c792b54c8fdedfff3e545314c4b50fb203a845233d1ebd08128d8632d02cb37e24ef2369a70d256d5f225f4172dd78b92b03e7ea0f80b8ae9b3cea52 languageName: node linkType: hard @@ -429,12 +429,12 @@ __metadata: languageName: unknown linkType: soft -"@angular/build@npm:19.0.0-rc.3": - version: 19.0.0-rc.3 - resolution: "@angular/build@npm:19.0.0-rc.3" +"@angular/build@npm:19.0.0": + version: 19.0.0 + resolution: "@angular/build@npm:19.0.0" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1900.0-rc.3" + "@angular-devkit/architect": "npm:0.1900.0" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" @@ -460,12 +460,12 @@ __metadata: vite: "npm:5.4.11" watchpack: "npm:2.4.2" peerDependencies: - "@angular/compiler": ^19.0.0-next.9 - "@angular/compiler-cli": ^19.0.0-next.9 - "@angular/localize": ^19.0.0-next.9 - "@angular/platform-server": ^19.0.0-next.9 - "@angular/service-worker": ^19.0.0-next.9 - "@angular/ssr": ^19.0.0-rc.3 + "@angular/compiler": ^19.0.0 + "@angular/compiler-cli": ^19.0.0 + "@angular/localize": ^19.0.0 + "@angular/platform-server": ^19.0.0 + "@angular/service-worker": ^19.0.0 + "@angular/ssr": ^19.0.0 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -492,7 +492,7 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10c0/ad01eb28c16f376e7beefd2d1df6ab1bf39c3bd27f546b7fb1932c53170f61262404b6f051747fed06ca5245ef6484fab3dd21d0ab118da0d1b05308b2efa480 + checksum: 10c0/beee41da0e227fed467ce9e67700ecb0941b44cbfb35e410c0252cf08581c26a65f65e7434a8efc9f1304c42add14860be28787ff3e5f917566f9fa55adb9036 languageName: node linkType: hard @@ -629,7 +629,7 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.0.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#aa2ad1f1196c487234fe76cd568a0a36bacce38e" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#693cb959b6f1bebf72d11245bccb80c11f41e5bb" "@angular/cdk": "npm:19.0.0" "@angular/common": "npm:19.0.0" "@angular/compiler": "npm:19.0.0" @@ -638,7 +638,7 @@ __metadata: "@angular/forms": "npm:19.0.0" "@angular/localize": "npm:19.0.0" "@angular/material": "npm:19.0.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#40ab13986bf8f47bc585d412aa9171361c2d8dda" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9ce48789f423d72fb6b8d766b63b7b6611bc9e80" "@angular/platform-browser": "npm:19.0.0" "@angular/platform-browser-dynamic": "npm:19.0.0" "@angular/platform-server": "npm:19.0.0" @@ -850,9 +850,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#40ab13986bf8f47bc585d412aa9171361c2d8dda": - version: 0.0.0-320768b066699be0c4add3f686585262bd16221f - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=40ab13986bf8f47bc585d412aa9171361c2d8dda" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#9ce48789f423d72fb6b8d766b63b7b6611bc9e80": + version: 0.0.0-7a4326af255661a5c0d3fe44fabac5ff36585fad + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=9ce48789f423d72fb6b8d766b63b7b6611bc9e80" dependencies: "@octokit/rest": "npm:21.0.2" "@types/semver": "npm:^7.3.6" @@ -866,7 +866,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/46246daba8ab12869fc29a13e52985ef56fb63af1d076cc90fc19cda87e63811e97123f14d2b83a8c0d7134348b5a7777372c081cee077d2baed964e7d462baa + checksum: 10c0/c9cc13c407c9adbc3308d897417f874f50172b318df56b0a9226d27237505fc762101ea719462aeb1f19505521fa474339c3baad8e9a7dc96852c2e1b589ee4b languageName: node linkType: hard From 8c534da64955fc834a39dfd4ced6b83358e11028 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 20 Nov 2024 12:34:32 +0000 Subject: [PATCH 0013/2162] fix(@angular/ssr): handle baseHref that start with `./` Updated function to support handling `baseHref` starting with './' path correctly. --- packages/angular/ssr/src/routes/ng-routes.ts | 7 +++++-- packages/angular/ssr/test/app-engine_spec.ts | 2 +- .../angular/ssr/test/routes/ng-routes_spec.ts | 20 +++++++++++++++++++ packages/angular/ssr/test/testing-utils.ts | 8 ++++---- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 5bba8b7d9aba..9e48f49b2b11 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -421,12 +421,15 @@ export async function getRoutesFromAngularRouterConfig( const routesResults: RouteTreeNodeMetadata[] = []; const errors: string[] = []; - const baseHref = + let baseHref = injector.get(APP_BASE_HREF, null, { optional: true }) ?? injector.get(PlatformLocation).getBaseHrefFromDOM(); - const compiler = injector.get(Compiler); + if (baseHref.startsWith('./')) { + baseHref = baseHref.slice(2); + } + const compiler = injector.get(Compiler); const serverRoutesConfig = injector.get(SERVER_ROUTES_CONFIG, null, { optional: true }); let serverConfigRouteTree: RouteTree | undefined; diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index cf4e1d0d11a8..33e9741f4c9c 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -42,7 +42,7 @@ describe('AngularAppEngine', () => { setAngularAppTestingManifest( [{ path: 'home', component: HomeComponent }], [{ path: '**', renderMode: RenderMode.Server }], - locale, + '/' + locale, ); return { diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index 4b334c25eac9..050e0e09cd33 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -355,4 +355,24 @@ describe('extractRoutesAndCreateRouteTree', () => { { route: '/', renderMode: RenderMode.Server, status: 201 }, ]); }); + + it(`handles a baseHref starting with a "./" path`, async () => { + setAngularAppTestingManifest( + [{ path: 'home', component: DummyComponent }], + [{ path: '**', renderMode: RenderMode.Server }], + /** baseHref*/ './example', + ); + + const { routeTree, errors } = await extractRoutesAndCreateRouteTree( + url, + /** manifest */ undefined, + /** invokeGetPrerenderParams */ true, + /** includePrerenderFallbackRoutes */ true, + ); + + expect(errors).toHaveSize(0); + expect(routeTree.toObject()).toEqual([ + { route: '/example/home', renderMode: RenderMode.Server }, + ]); + }); }); diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index be4a52d09d0f..99971ab894ef 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -21,12 +21,12 @@ import { ServerRoute, provideServerRoutesConfig } from '../src/routes/route-conf * * @param routes - An array of route definitions to be used by the Angular Router. * @param serverRoutes - An array of ServerRoute definitions to be used for server-side rendering. - * @param [baseHref=''] - An optional base href to be used in the HTML template. + * @param [baseHref='/'] - An optional base href to be used in the HTML template. */ export function setAngularAppTestingManifest( routes: Routes, serverRoutes: ServerRoute[], - baseHref = '', + baseHref = '/', additionalServerAssets: Record = {}, ): void { setAngularAppManifest({ @@ -40,7 +40,7 @@ export function setAngularAppTestingManifest( text: async () => ` SSR page - + @@ -55,7 +55,7 @@ export function setAngularAppTestingManifest( ` CSR page - + From 96d604fd0c2f8fa269c10590de33b46025f83cd8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:06:45 -0500 Subject: [PATCH 0014/2162] refactor(@angular/build): add initial infrastructure to support inline template HMR The Angular AOT compilation logic for a rebuild has been updated to include infrastructure for additional checks of stale TypeScript files against updated files. The actual comparison aspects have not yet been implement and no behavior changes are yet present for template HMR. --- .../angular/compilation/aot-compilation.ts | 67 +++++++++++++++---- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts index cbfe70a3e5e5..787c82b4127e 100644 --- a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts @@ -66,6 +66,18 @@ export class AotCompilation extends AngularCompilation { hostOptions.externalStylesheets ??= new Map(); } + // Collect stale source files for HMR analysis of inline component resources + let staleSourceFiles; + if (compilerOptions['_enableHmr'] && hostOptions.modifiedFiles && this.#state) { + for (const modifiedFile of hostOptions.modifiedFiles) { + const sourceFile = this.#state.typeScriptProgram.getSourceFile(modifiedFile); + if (sourceFile) { + staleSourceFiles ??= new Map(); + staleSourceFiles.set(modifiedFile, sourceFile); + } + } + } + // Create Angular compiler host const host = createAngularCompilerHost(ts, compilerOptions, hostOptions); @@ -95,14 +107,12 @@ export class AotCompilation extends AngularCompilation { await profileAsync('NG_ANALYZE_PROGRAM', () => angularCompiler.analyzeAsync()); let templateUpdates; - if ( - compilerOptions['_enableHmr'] && - hostOptions.modifiedFiles && - hasOnlyTemplates(hostOptions.modifiedFiles) - ) { - const componentNodes = [...hostOptions.modifiedFiles].flatMap((file) => [ - ...angularCompiler.getComponentsWithTemplateFile(file), - ]); + if (compilerOptions['_enableHmr'] && hostOptions.modifiedFiles && this.#state) { + const componentNodes = collectHmrCandidates( + hostOptions.modifiedFiles, + angularProgram, + staleSourceFiles, + ); for (const node of componentNodes) { if (!ts.isClassDeclaration(node)) { @@ -423,15 +433,46 @@ function findAffectedFiles( return affectedFiles; } -function hasOnlyTemplates(modifiedFiles: Set): boolean { +function collectHmrCandidates( + modifiedFiles: Set, + { compiler }: ng.NgtscProgram, + staleSourceFiles: Map | undefined, +): Set { + const candidates = new Set(); + for (const file of modifiedFiles) { - const lowerFile = file.toLowerCase(); - if (lowerFile.endsWith('.html') || lowerFile.endsWith('.svg')) { + const templateFileNodes = compiler.getComponentsWithTemplateFile(file); + if (templateFileNodes.size) { + templateFileNodes.forEach((node) => candidates.add(node as ts.ClassDeclaration)); + continue; + } + + const styleFileNodes = compiler.getComponentsWithStyleFile(file); + if (styleFileNodes.size) { + styleFileNodes.forEach((node) => candidates.add(node as ts.ClassDeclaration)); continue; } - return false; + const staleSource = staleSourceFiles?.get(file); + if (staleSource === undefined) { + // Unknown file requires a rebuild so clear out the candidates and stop collecting + candidates.clear(); + break; + } + + const updatedSource = compiler.getCurrentProgram().getSourceFile(file); + if (updatedSource === undefined) { + // No longer existing program file requires a rebuild so clear out the candidates and stop collecting + candidates.clear(); + break; + } + + // Compare the stale and updated file for changes + + // TODO: Implement -- for now assume a rebuild is needed + candidates.clear(); + break; } - return true; + return candidates; } From a6eaf2f668b300b45436dd046a79b51f60dfb657 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 21 Nov 2024 13:49:10 +0000 Subject: [PATCH 0015/2162] refactor(@angular/build): adjust code to propagate errors from Piscina Ensure that errors occurring during initialization are properly propagated, as Piscina currently swallows errors during worker initialization. For more details, see: https://github.com/piscinajs/piscina/blob/b64747233446ca4271e6aed744a740f637e278a5/src/worker.ts#L57 --- .../routes-extractor-worker.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts index 5ea3ba5b2025..ebdba2c18b3a 100644 --- a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts +++ b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts @@ -26,10 +26,12 @@ const { outputMode, hasSsrEntry } = workerData as { hasSsrEntry: boolean; }; -let serverURL = DEFAULT_URL; - /** Renders an application based on a provided options. */ async function extractRoutes(): Promise { + const serverURL = outputMode !== undefined && hasSsrEntry ? await launchServer() : DEFAULT_URL; + + patchFetchToLoadInMemoryAssets(serverURL); + const { ɵextractRoutesAndCreateRouteTree: extractRoutesAndCreateRouteTree } = await loadEsmModuleFromMemory('./main.server.mjs'); @@ -47,14 +49,4 @@ async function extractRoutes(): Promise { }; } -async function initialize() { - if (outputMode !== undefined && hasSsrEntry) { - serverURL = await launchServer(); - } - - patchFetchToLoadInMemoryAssets(serverURL); - - return extractRoutes; -} - -export default initialize(); +export default extractRoutes; From 83b32a6e8d3d16da6b16cbb1d6fec00dca1a4971 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 21 Nov 2024 16:02:44 +0000 Subject: [PATCH 0016/2162] test: add end-to-end tests for SSR setup This commit introduces end-to-end (e2e) tests to validate the server-side rendering (SSR) setup. --- .../legacy-cli/e2e/tests/vite/ssr-default.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vite/ssr-default.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-default.ts b/tests/legacy-cli/e2e/tests/vite/ssr-default.ts new file mode 100644 index 000000000000..cfaece9551ef --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vite/ssr-default.ts @@ -0,0 +1,36 @@ +import assert from 'node:assert'; +import { ng } from '../../utils/process'; +import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; +import { ngServe, useSha } from '../../utils/project'; +import { getGlobalVariable } from '../../utils/env'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + // Enable caching to test real development workflow. + await ng('cache', 'clean'); + await ng('cache', 'on'); + + // 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 useSha(); + await installWorkspacePackages(); + + const port = await ngServe(); + + // Verify the server is running and the API response is correct. + await validateResponse('/main.js', /bootstrapApplication/); + await validateResponse('/', /Hello,/); + await validateResponse('/unknown', /Cannot GET/, 404); + + async function validateResponse(pathname: string, match: RegExp, status = 200): Promise { + const response = await fetch(new URL(pathname, `http://localhost:${port}`)); + const text = await response.text(); + assert.match(text, match); + assert.equal(response.status, status); + } +} From a9a871c41424ac98870c243dda9a6cb9dfeb17a1 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Wed, 20 Nov 2024 15:47:42 +0100 Subject: [PATCH 0017/2162] fix(@angular-devkit/build-angular): use stylePreprocessorOptions The `stylePreprocessorOptions` were ignored, meaning that `silenceDeprecations`, for example, was not used when building tests. --- .../build_angular/src/builders/karma/application_builder.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts index dce39e699eaf..4560d0cff952 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts @@ -107,7 +107,6 @@ class AngularAssetsMiddleware { } function injectKarmaReporter( - context: BuilderContext, buildOptions: BuildOptions, buildIterator: AsyncIterator, karmaConfig: Config & ConfigOptions, @@ -207,7 +206,7 @@ export function execute( // If `--watch` is explicitly enabled or if we are keeping the Karma // process running, we should hook Karma into the build. if (buildIterator) { - injectKarmaReporter(context, buildOptions, buildIterator, karmaConfig, subscriber); + injectKarmaReporter(buildOptions, buildIterator, karmaConfig, subscriber); } // Complete the observable once the Karma server returns. @@ -352,6 +351,7 @@ async function initializeApplication( polyfills: normalizePolyfills(options.polyfills), webWorkerTsConfig: options.webWorkerTsConfig, watch: options.watch ?? !karmaOptions.singleRun, + stylePreprocessorOptions: options.stylePreprocessorOptions, }; // Build tests with `application` builder, using test files as entry points. From 1ded0b756b75f1f3dc10687963026e44df30c32c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:39:11 -0500 Subject: [PATCH 0018/2162] fix(@angular/build): use `sha256` instead of `sha-256` as hash algorithm name Stackblitz appears to fail when attempting to use `crypto.createHash` with an algorithm value of `sha-256`. Since Node.js supports both the hyphenated and unhyphenated values, the later is now used to avoid issues when running on Stackblitz. --- .../angular/build/src/tools/esbuild/angular/compiler-plugin.ts | 2 +- packages/angular/build/src/tools/esbuild/wasm-plugin.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 6d23af4399be..2bff4b4278c8 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -198,7 +198,7 @@ export function createCompilerPlugin( // invalid the output and force a full page reload for HMR cases. The containing file and order // of the style within the containing file is used. pluginOptions.externalRuntimeStyles - ? createHash('sha-256') + ? createHash('sha256') .update(containingFile) .update((order ?? 0).toString()) .update(className ?? '') diff --git a/packages/angular/build/src/tools/esbuild/wasm-plugin.ts b/packages/angular/build/src/tools/esbuild/wasm-plugin.ts index 3e8ad8d1063a..1bc18dd747b2 100644 --- a/packages/angular/build/src/tools/esbuild/wasm-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/wasm-plugin.ts @@ -231,7 +231,7 @@ function generateInitHelper(streaming: boolean, wasmContents: Uint8Array) { let resultContents; if (streaming) { const fetchOptions = { - integrity: 'sha256-' + createHash('sha-256').update(wasmContents).digest('base64'), + integrity: 'sha256-' + createHash('sha256').update(wasmContents).digest('base64'), }; const fetchContents = `fetch(new URL(wasmPath, import.meta.url), ${JSON.stringify(fetchOptions)})`; resultContents = `await WebAssembly.instantiateStreaming(${fetchContents}, imports)`; From fe1af9fc97d5fe88e3ce6710d1b1e0d7445b0908 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 20 Nov 2024 19:22:52 +0000 Subject: [PATCH 0019/2162] build: update all non-major dependencies --- package.json | 18 +- packages/angular/build/package.json | 8 +- .../angular_devkit/build_angular/package.json | 2 +- .../angular_devkit/schematics/package.json | 2 +- yarn.lock | 719 ++++++++++++------ 5 files changed, 513 insertions(+), 236 deletions(-) diff --git a/package.json b/package.json index 2e39abaf2278..8940ede11967 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "@babel/plugin-transform-runtime": "7.25.9", "@babel/preset-env": "7.26.0", "@babel/runtime": "7.26.0", - "@bazel/bazelisk": "1.23.0", + "@bazel/bazelisk": "1.24.0", "@bazel/buildifier": "7.3.1", "@bazel/concatjs": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch", "@bazel/jasmine": "patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch", @@ -116,8 +116,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.14.0", - "@typescript-eslint/parser": "8.14.0", + "@typescript-eslint/eslint-plugin": "8.15.0", + "@typescript-eslint/parser": "8.15.0", "@vitejs/plugin-basic-ssl": "1.1.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", @@ -145,7 +145,7 @@ "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.3", "https-proxy-agent": "7.0.5", - "husky": "9.1.6", + "husky": "9.1.7", "ini": "5.0.0", "istanbul-lib-instrument": "6.0.3", "jasmine": "^5.0.0", @@ -162,10 +162,10 @@ "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "listr2": "8.2.5", - "lmdb": "3.1.5", + "lmdb": "3.1.6", "loader-utils": "3.3.1", "lodash": "^4.17.21", - "magic-string": "0.30.12", + "magic-string": "0.30.13", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", "ng-packagr": "19.0.0", @@ -185,11 +185,11 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.26.0", + "rollup": "4.27.3", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", - "sass": "1.80.7", + "sass": "1.81.0", "sass-loader": "16.0.3", "semver": "7.6.3", "shelljs": "^0.8.5", @@ -205,7 +205,7 @@ "typescript": "5.6.3", "undici": "6.21.0", "unenv": "^1.10.0", - "verdaccio": "6.0.1", + "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", "vite": "5.4.11", "watchpack": "2.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 82957f335a0a..9cf28facc0a9 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -33,19 +33,19 @@ "https-proxy-agent": "7.0.5", "istanbul-lib-instrument": "6.0.3", "listr2": "8.2.5", - "magic-string": "0.30.12", + "magic-string": "0.30.13", "mrmime": "2.0.0", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.7.0", - "rollup": "4.26.0", - "sass": "1.80.7", + "rollup": "4.27.3", + "sass": "1.81.0", "semver": "7.6.3", "vite": "5.4.11", "watchpack": "2.4.2" }, "optionalDependencies": { - "lmdb": "3.1.5" + "lmdb": "3.1.6" }, "peerDependencies": { "@angular/compiler": "^19.0.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index c22ecf82145c..81ba934e738c 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.1", - "sass": "1.80.7", + "sass": "1.81.0", "sass-loader": "16.0.3", "semver": "7.6.3", "source-map-loader": "5.0.0", diff --git a/packages/angular_devkit/schematics/package.json b/packages/angular_devkit/schematics/package.json index 792e605ff42c..8c3791f95418 100644 --- a/packages/angular_devkit/schematics/package.json +++ b/packages/angular_devkit/schematics/package.json @@ -15,7 +15,7 @@ "dependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", "jsonc-parser": "3.3.1", - "magic-string": "0.30.12", + "magic-string": "0.30.13", "ora": "5.4.1", "rxjs": "7.8.1" } diff --git a/yarn.lock b/yarn.lock index 6f80d2116a53..45fbe2c94dfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,7 +102,7 @@ __metadata: postcss-loader: "npm:8.1.1" resolve-url-loader: "npm:5.0.0" rxjs: "npm:7.8.1" - sass: "npm:1.80.7" + sass: "npm:1.81.0" sass-loader: "npm:16.0.3" semver: "npm:7.6.3" source-map-loader: "npm:5.0.0" @@ -239,7 +239,7 @@ __metadata: dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" jsonc-parser: "npm:3.3.1" - magic-string: "npm:0.30.12" + magic-string: "npm:0.30.13" ora: "npm:5.4.1" rxjs: "npm:7.8.1" languageName: unknown @@ -386,14 +386,14 @@ __metadata: https-proxy-agent: "npm:7.0.5" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" - lmdb: "npm:3.1.5" - magic-string: "npm:0.30.12" + lmdb: "npm:3.1.6" + magic-string: "npm:0.30.13" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.7.0" - rollup: "npm:4.26.0" - sass: "npm:1.80.7" + rollup: "npm:4.27.3" + sass: "npm:1.81.0" semver: "npm:7.6.3" vite: "npm:5.4.11" watchpack: "npm:2.4.2" @@ -654,7 +654,7 @@ __metadata: "@babel/plugin-transform-runtime": "npm:7.25.9" "@babel/preset-env": "npm:7.26.0" "@babel/runtime": "npm:7.26.0" - "@bazel/bazelisk": "npm:1.23.0" + "@bazel/bazelisk": "npm:1.24.0" "@bazel/buildifier": "npm:7.3.1" "@bazel/concatjs": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch" "@bazel/jasmine": "patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch" @@ -691,8 +691,8 @@ __metadata: "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" "@types/yarnpkg__lockfile": "npm:^1.1.5" - "@typescript-eslint/eslint-plugin": "npm:8.14.0" - "@typescript-eslint/parser": "npm:8.14.0" + "@typescript-eslint/eslint-plugin": "npm:8.15.0" + "@typescript-eslint/parser": "npm:8.15.0" "@vitejs/plugin-basic-ssl": "npm:1.1.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" @@ -720,7 +720,7 @@ __metadata: http-proxy: "npm:^1.18.1" http-proxy-middleware: "npm:3.0.3" https-proxy-agent: "npm:7.0.5" - husky: "npm:9.1.6" + husky: "npm:9.1.7" ini: "npm:5.0.0" istanbul-lib-instrument: "npm:6.0.3" jasmine: "npm:^5.0.0" @@ -737,10 +737,10 @@ __metadata: less-loader: "npm:12.2.0" license-webpack-plugin: "npm:4.0.2" listr2: "npm:8.2.5" - lmdb: "npm:3.1.5" + lmdb: "npm:3.1.6" loader-utils: "npm:3.3.1" lodash: "npm:^4.17.21" - magic-string: "npm:0.30.12" + magic-string: "npm:0.30.13" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" ng-packagr: "npm:19.0.0" @@ -760,11 +760,11 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.26.0" + rollup: "npm:4.27.3" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" - sass: "npm:1.80.7" + sass: "npm:1.81.0" sass-loader: "npm:16.0.3" semver: "npm:7.6.3" shelljs: "npm:^0.8.5" @@ -780,7 +780,7 @@ __metadata: typescript: "npm:5.6.3" undici: "npm:6.21.0" unenv: "npm:^1.10.0" - verdaccio: "npm:6.0.1" + verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" vite: "npm:5.4.11" watchpack: "npm:2.4.2" @@ -2145,13 +2145,13 @@ __metadata: languageName: node linkType: hard -"@bazel/bazelisk@npm:1.23.0": - version: 1.23.0 - resolution: "@bazel/bazelisk@npm:1.23.0" +"@bazel/bazelisk@npm:1.24.0": + version: 1.24.0 + resolution: "@bazel/bazelisk@npm:1.24.0" bin: bazel: bazelisk.js bazelisk: bazelisk.js - checksum: 10c0/ede3836d0d299b8081cd631112e96c18c4e182021700e0266532a676a85b3156ffe61317fbeb539cdc642ad558b1a486dda746d26b5365e4001e93debdc090c9 + checksum: 10c0/6cd1f63cbdde7cf5bc06ee6d12a7e7b995a0a2073926326a4bc145e8cc45258d0284d5a842fbe99ee069c3f198735c543173e83d149ebeaeb67840df71c6b585 languageName: node linkType: hard @@ -3140,6 +3140,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-darwin-arm64@npm:3.1.6": + version: 3.1.6 + resolution: "@lmdb/lmdb-darwin-arm64@npm:3.1.6" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@lmdb/lmdb-darwin-x64@npm:3.1.5": version: 3.1.5 resolution: "@lmdb/lmdb-darwin-x64@npm:3.1.5" @@ -3147,6 +3154,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-darwin-x64@npm:3.1.6": + version: 3.1.6 + resolution: "@lmdb/lmdb-darwin-x64@npm:3.1.6" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@lmdb/lmdb-linux-arm64@npm:3.1.5": version: 3.1.5 resolution: "@lmdb/lmdb-linux-arm64@npm:3.1.5" @@ -3154,6 +3168,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-linux-arm64@npm:3.1.6": + version: 3.1.6 + resolution: "@lmdb/lmdb-linux-arm64@npm:3.1.6" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@lmdb/lmdb-linux-arm@npm:3.1.5": version: 3.1.5 resolution: "@lmdb/lmdb-linux-arm@npm:3.1.5" @@ -3161,6 +3182,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-linux-arm@npm:3.1.6": + version: 3.1.6 + resolution: "@lmdb/lmdb-linux-arm@npm:3.1.6" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@lmdb/lmdb-linux-x64@npm:3.1.5": version: 3.1.5 resolution: "@lmdb/lmdb-linux-x64@npm:3.1.5" @@ -3168,6 +3196,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-linux-x64@npm:3.1.6": + version: 3.1.6 + resolution: "@lmdb/lmdb-linux-x64@npm:3.1.6" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@lmdb/lmdb-win32-x64@npm:3.1.5": version: 3.1.5 resolution: "@lmdb/lmdb-win32-x64@npm:3.1.5" @@ -3175,6 +3210,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-win32-x64@npm:3.1.6": + version: 3.1.6 + resolution: "@lmdb/lmdb-win32-x64@npm:3.1.6" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@microsoft/api-extractor-model@npm:7.29.8": version: 7.29.8 resolution: "@microsoft/api-extractor-model@npm:7.29.8" @@ -4197,6 +4239,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.3" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-android-arm64@npm:4.26.0" @@ -4211,6 +4260,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-android-arm64@npm:4.27.3" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.26.0" @@ -4225,6 +4281,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.27.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-darwin-x64@npm:4.26.0" @@ -4239,6 +4302,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.27.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.26.0" @@ -4253,6 +4323,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.3" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.26.0" @@ -4267,6 +4344,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-freebsd-x64@npm:4.27.3" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0" @@ -4281,6 +4365,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.26.0" @@ -4295,6 +4386,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.3" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.26.0" @@ -4309,6 +4407,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.3" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.26.0" @@ -4323,6 +4428,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.3" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0" @@ -4337,6 +4449,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.26.0" @@ -4351,6 +4470,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.3" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.26.0" @@ -4365,6 +4491,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.3" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.26.0" @@ -4379,6 +4512,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.3" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.26.0" @@ -4393,6 +4533,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.3" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.26.0" @@ -4407,6 +4554,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.3" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.26.0" @@ -4421,6 +4575,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.26.0" @@ -4435,6 +4596,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/wasm-node@npm:^4.24.0": version: 4.27.2 resolution: "@rollup/wasm-node@npm:4.27.2" @@ -5564,15 +5732,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.14.0" +"@typescript-eslint/eslint-plugin@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.15.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.14.0" - "@typescript-eslint/type-utils": "npm:8.14.0" - "@typescript-eslint/utils": "npm:8.14.0" - "@typescript-eslint/visitor-keys": "npm:8.14.0" + "@typescript-eslint/scope-manager": "npm:8.15.0" + "@typescript-eslint/type-utils": "npm:8.15.0" + "@typescript-eslint/utils": "npm:8.15.0" + "@typescript-eslint/visitor-keys": "npm:8.15.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5583,25 +5751,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/46c82eb45be82ffec0ab04728a5180691b1d17002c669864861a3044b6d2105a75ca23cc80d18721b40b5e7dff1eff4ed68a43d726e25d55f3e466a9fbeeb873 + checksum: 10c0/90ef10cc7d37a81abec4f4a3ffdfc3a0da8e99d949e03c75437e96e8ab2e896e34b85ab64718690180a7712581031b8611c5d8e7666d6ed4d60b9ace834d58e3 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/parser@npm:8.14.0" +"@typescript-eslint/parser@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/parser@npm:8.15.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.14.0" - "@typescript-eslint/types": "npm:8.14.0" - "@typescript-eslint/typescript-estree": "npm:8.14.0" - "@typescript-eslint/visitor-keys": "npm:8.14.0" + "@typescript-eslint/scope-manager": "npm:8.15.0" + "@typescript-eslint/types": "npm:8.15.0" + "@typescript-eslint/typescript-estree": "npm:8.15.0" + "@typescript-eslint/visitor-keys": "npm:8.15.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/522b7afd25cd302c0510cc71985ba55ff92ecc5dbe3fc74a76fefea0169252fdd4b8cad6291fef05f63dfc173951af450dca20859c7f23e387b2e7410e8b97b1 + checksum: 10c0/19c25aea0dc51faa758701a5319a89950fd30494d9d645db8ced84fb60714c5e7d4b51fc4ee8ccb07ddefec88c51ee307ee7e49addd6330ee8f3e7ee9ba329fc languageName: node linkType: hard @@ -5615,18 +5783,30 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/type-utils@npm:8.14.0" +"@typescript-eslint/scope-manager@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/scope-manager@npm:8.15.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.14.0" - "@typescript-eslint/utils": "npm:8.14.0" + "@typescript-eslint/types": "npm:8.15.0" + "@typescript-eslint/visitor-keys": "npm:8.15.0" + checksum: 10c0/c27dfdcea4100cc2d6fa967f857067cbc93155b55e648f9f10887a1b9372bb76cf864f7c804f3fa48d7868d9461cdef10bcea3dab7637d5337e8aa8042dc08b9 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/type-utils@npm:8.15.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.15.0" + "@typescript-eslint/utils": "npm:8.15.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/42616a664b38ca418e13504247e5e1bad6ae85c045b48e5735ffab977d4bd58cc86fb9d2292bbb314fa408d78d4b0454c3a27dbf9f881f9921917a942825c806 + checksum: 10c0/20f09c79c83b38a962cf7eff10d47a2c01bcc0bab7bf6d762594221cd89023ef8c7aec26751c47b524f53f5c8d38bba55a282529b3df82d5f5ab4350496316f9 languageName: node linkType: hard @@ -5637,6 +5817,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/types@npm:8.15.0" + checksum: 10c0/84abc6fd954aff13822a76ac49efdcb90a55c0025c20eee5d8cebcfb68faff33b79bbc711ea524e0209cecd90c5ee3a5f92babc7083c081d3a383a0710264a41 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.14.0": version: 8.14.0 resolution: "@typescript-eslint/typescript-estree@npm:8.14.0" @@ -5656,7 +5843,43 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.14.0, @typescript-eslint/utils@npm:^8.12.2": +"@typescript-eslint/typescript-estree@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.15.0" + dependencies: + "@typescript-eslint/types": "npm:8.15.0" + "@typescript-eslint/visitor-keys": "npm:8.15.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^1.3.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/3af5c129532db3575349571bbf64d32aeccc4f4df924ac447f5d8f6af8b387148df51965eb2c9b99991951d3dadef4f2509d7ce69bf34a2885d013c040762412 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/utils@npm:8.15.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.15.0" + "@typescript-eslint/types": "npm:8.15.0" + "@typescript-eslint/typescript-estree": "npm:8.15.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/65743f51845a1f6fd2d21f66ca56182ba33e966716bdca73d30b7a67c294e47889c322de7d7b90ab0818296cd33c628e5eeeb03cec7ef2f76c47de7a453eeda2 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^8.12.2": version: 8.14.0 resolution: "@typescript-eslint/utils@npm:8.14.0" dependencies: @@ -5680,6 +5903,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.15.0": + version: 8.15.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.15.0" + dependencies: + "@typescript-eslint/types": "npm:8.15.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/02a954c3752c4328482a884eb1da06ca8fb72ae78ef28f1d854b18f3779406ed47263af22321cf3f65a637ec7584e5f483e34a263b5c8cec60ec85aebc263574 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -5687,20 +5920,19 @@ __metadata: languageName: node linkType: hard -"@verdaccio/auth@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/auth@npm:8.0.0-next-8.3" +"@verdaccio/auth@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/auth@npm:8.0.0-next-8.4" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.3" - "@verdaccio/core": "npm:8.0.0-next-8.3" + "@verdaccio/config": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.4" "@verdaccio/loaders": "npm:8.0.0-next-8.3" - "@verdaccio/logger": "npm:8.0.0-next-8.3" "@verdaccio/signature": "npm:8.0.0-next-8.1" - "@verdaccio/utils": "npm:8.1.0-next-8.3" + "@verdaccio/utils": "npm:8.1.0-next-8.4" debug: "npm:4.3.7" lodash: "npm:4.17.21" - verdaccio-htpasswd: "npm:13.0.0-next-8.3" - checksum: 10c0/af7b20b159c9a0ec9ca5b727afb55608296578e8eafdaa199a0c72a1361063036e029f5bfe921bfe907444476210ab706d417cf5d7a880efda49cf2b996b9e41 + verdaccio-htpasswd: "npm:13.0.0-next-8.4" + checksum: 10c0/f5aaf0f27bc97ae027486b27a179e0a1655f6cc8591e0e9e67cbf4e85c3f0fa6de9d81f78e793223cd5af302d1aa4b472386ed944bf9f4f9ef774a92c704f80e languageName: node linkType: hard @@ -5714,17 +5946,17 @@ __metadata: languageName: node linkType: hard -"@verdaccio/config@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/config@npm:8.0.0-next-8.3" +"@verdaccio/config@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/config@npm:8.0.0-next-8.4" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.3" - "@verdaccio/utils": "npm:8.1.0-next-8.3" + "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/utils": "npm:8.1.0-next-8.4" debug: "npm:4.3.7" js-yaml: "npm:4.1.0" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" - checksum: 10c0/15585d185d9775623f15f14eab4b988366fd8ce72392f7db5fe23c7bd6da5b14f15080da39d8429e51b5915f5be659c7e15503509ebbb7757cf2f907b3b56d92 + checksum: 10c0/a213694525eb550c4ecc37065b69ca31387ea6cb238c1f69020734d3a8d28b2f00dd884952ed264b8f5f12c9c07769015ec3b48dda6bfa57517ac165bcff906a languageName: node linkType: hard @@ -5742,9 +5974,9 @@ __metadata: languageName: node linkType: hard -"@verdaccio/core@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/core@npm:8.0.0-next-8.3" +"@verdaccio/core@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/core@npm:8.0.0-next-8.4" dependencies: ajv: "npm:8.17.1" core-js: "npm:3.37.1" @@ -5752,7 +5984,7 @@ __metadata: http-status-codes: "npm:2.3.0" process-warning: "npm:1.0.0" semver: "npm:7.6.3" - checksum: 10c0/baab0d704641ec8e0ab2a6aa2bf3553970ae4ff79bbcf8a7afd42b2f82d9e9c58e02360e18791c4175febcfdf683c7e202bfb7fdebe207b77fe96114ee38dcc5 + checksum: 10c0/7eaca51ca651a4af3bd841a3a6e0c64a0a4cbbff197c91e656383ba6577f1c8021f18484e39ddca66b1e404eda786d588a8ef44bd55e79cdf82389e2af5f0321 languageName: node linkType: hard @@ -5765,12 +5997,12 @@ __metadata: languageName: node linkType: hard -"@verdaccio/file-locking@npm:13.0.0-next-8.1": - version: 13.0.0-next-8.1 - resolution: "@verdaccio/file-locking@npm:13.0.0-next-8.1" +"@verdaccio/file-locking@npm:13.0.0-next-8.2": + version: 13.0.0-next-8.2 + resolution: "@verdaccio/file-locking@npm:13.0.0-next-8.2" dependencies: lockfile: "npm:1.0.4" - checksum: 10c0/139a47ecdf5c93745a054dddec73c6b78ab1098f3d68898316202558747385270f28a5d4193e7c4c369ed1ea5cf4d63bd3c5eaece3c06bf0a7c03d6c4185db3d + checksum: 10c0/81b320dbd5c7d5e7b24ee8cf4d92829a824f6620ffa2ddd5c7d9be1f69964f8790e1c784aff47e6bc6285eb42ec77faaea08bbbe3141083c3f0272dd0a17aa12 languageName: node linkType: hard @@ -5800,15 +6032,15 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger-commons@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.3" +"@verdaccio/logger-commons@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.4" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.3" + "@verdaccio/core": "npm:8.0.0-next-8.4" "@verdaccio/logger-prettify": "npm:8.0.0-next-8.1" colorette: "npm:2.0.20" debug: "npm:4.3.7" - checksum: 10c0/e6787f36a7241332825afabb6e8baaf42ad1e47999a523a0d5c33a39c071b20a946a69b624a65f6407963f127f3c7efc72c794b57876452adf75ac390d39963b + checksum: 10c0/2d461ee31e395e9b5a985269a558b64ec75abce4687008f0bf109da00a9cba1ccde3f944465e43d2d5e81051a1703b91699d9fdf0f194d621f0a913045b793c2 languageName: node linkType: hard @@ -5825,38 +6057,38 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/logger@npm:8.0.0-next-8.3" +"@verdaccio/logger@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/logger@npm:8.0.0-next-8.4" dependencies: - "@verdaccio/logger-commons": "npm:8.0.0-next-8.3" + "@verdaccio/logger-commons": "npm:8.0.0-next-8.4" pino: "npm:9.4.0" - checksum: 10c0/43ea8ad16a83472cab38914b07af130651325ece1c63ea39212750f74d69d498b39b4c2b2282dadf6715508e18dfbe5496231a7208cd3d5d00d5e634e397d412 + checksum: 10c0/4c29a6d93875638220f58feeaa8805122c7ac89959f90a2454a577703fae1743dd208bcb44cd2d63ebdee9411d376448e4523d9be13e1e9e2953453b700bb6b3 languageName: node linkType: hard -"@verdaccio/middleware@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/middleware@npm:8.0.0-next-8.3" +"@verdaccio/middleware@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/middleware@npm:8.0.0-next-8.4" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.3" - "@verdaccio/core": "npm:8.0.0-next-8.3" - "@verdaccio/url": "npm:13.0.0-next-8.3" - "@verdaccio/utils": "npm:8.1.0-next-8.3" + "@verdaccio/config": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/url": "npm:13.0.0-next-8.4" + "@verdaccio/utils": "npm:8.1.0-next-8.4" debug: "npm:4.3.7" - express: "npm:4.21.0" + express: "npm:4.21.1" express-rate-limit: "npm:5.5.1" lodash: "npm:4.17.21" lru-cache: "npm:7.18.3" mime: "npm:2.6.0" - checksum: 10c0/45dd370e6cfb2d121e4d0e804adb02cfef4ddb02a79dfdac81d060a682746a7cadb07f508589dd4b0d18031360dbd34a7f1b3043a12a13bf85b65d64d507c4c9 + checksum: 10c0/d4d26d8abd5799b5cd59f8990cd869ce16fcbd0a821d195a8bf39280db26cdfc2dbceb6082c72dc86b7125a1dd4d9caf732051c0db0d2a54eeacdf7c71a31b2d languageName: node linkType: hard -"@verdaccio/search-indexer@npm:8.0.0-next-8.1": - version: 8.0.0-next-8.1 - resolution: "@verdaccio/search-indexer@npm:8.0.0-next-8.1" - checksum: 10c0/ccaa76c10ee7feb1b97e6aa53df05ce62447d4efaa1febfb7e6f372b36c025261d41fe7208a0ad5940f4e2d919f2acf47b644fa5a0ae3c4a22cfe612a13b5edf +"@verdaccio/search-indexer@npm:8.0.0-next-8.2": + version: 8.0.0-next-8.2 + resolution: "@verdaccio/search-indexer@npm:8.0.0-next-8.2" + checksum: 10c0/ba5d85f0a25429579f1a6533c4ec3c2c90524dcbf5108bd1231135eb6d361a897e8b85eba57cc3e46a27afc736b7596c722a5f197e34fd9384346a16a2d222d1 languageName: node linkType: hard @@ -5877,37 +6109,37 @@ __metadata: languageName: node linkType: hard -"@verdaccio/tarball@npm:13.0.0-next-8.3": - version: 13.0.0-next-8.3 - resolution: "@verdaccio/tarball@npm:13.0.0-next-8.3" +"@verdaccio/tarball@npm:13.0.0-next-8.4": + version: 13.0.0-next-8.4 + resolution: "@verdaccio/tarball@npm:13.0.0-next-8.4" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.3" - "@verdaccio/url": "npm:13.0.0-next-8.3" - "@verdaccio/utils": "npm:8.1.0-next-8.3" + "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/url": "npm:13.0.0-next-8.4" + "@verdaccio/utils": "npm:8.1.0-next-8.4" debug: "npm:4.3.7" gunzip-maybe: "npm:^1.4.2" lodash: "npm:4.17.21" tar-stream: "npm:^3.1.7" - checksum: 10c0/f05a130f7b1e7b72a044289c529baa3c7d9744d698a8fd8d24d7334a0987a2d3dceeae7a7d1498a2701f0c27ae6859ce155854f77280233d0583ca2495e8e3d6 + checksum: 10c0/72c757d762c91081fc5372ae82711a1c2f40427d0fb1b95d7a39fff13c287d08dbb8306fea46e13361da75ed8293c437bf895505549f6e756405c03e05541313 languageName: node linkType: hard -"@verdaccio/ui-theme@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.3" - checksum: 10c0/792735afb27dee7ca4872cc9a1149bc335540b6359500ba3a3be3651967e5712a1ad827870ddc9c7c062b513f218a0f54fb73a5e14458b0c19082116c1aafb82 +"@verdaccio/ui-theme@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.4" + checksum: 10c0/d94560d3dc21265c4dbcf168197bcf17efeff6ee4803408fd7fd00887e8453c6d95c71022e613d1c6c01483ea5b07f717eafe9337cd4d45c95deaa91c4045508 languageName: node linkType: hard -"@verdaccio/url@npm:13.0.0-next-8.3": - version: 13.0.0-next-8.3 - resolution: "@verdaccio/url@npm:13.0.0-next-8.3" +"@verdaccio/url@npm:13.0.0-next-8.4": + version: 13.0.0-next-8.4 + resolution: "@verdaccio/url@npm:13.0.0-next-8.4" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.3" + "@verdaccio/core": "npm:8.0.0-next-8.4" debug: "npm:4.3.7" lodash: "npm:4.17.21" validator: "npm:13.12.0" - checksum: 10c0/8044fe91ceca56b49f5303555fe28f1f7998f021993fab0257a7adda875ac1410e4cc7c4f6f4aa5ac2a36776348f2571ab82bc551553a5d5f06134eb57d98743 + checksum: 10c0/a51f655dfa9169a70813f5de02e8fcdd94f039b40c95d7226cec6ac568e3de43d81dfd43edb05432d933e05d9fedf61c8ebb4cd82a5da48556a86c01b90f6e00 languageName: node linkType: hard @@ -5923,15 +6155,15 @@ __metadata: languageName: node linkType: hard -"@verdaccio/utils@npm:8.1.0-next-8.3": - version: 8.1.0-next-8.3 - resolution: "@verdaccio/utils@npm:8.1.0-next-8.3" +"@verdaccio/utils@npm:8.1.0-next-8.4": + version: 8.1.0-next-8.4 + resolution: "@verdaccio/utils@npm:8.1.0-next-8.4" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.3" + "@verdaccio/core": "npm:8.0.0-next-8.4" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" semver: "npm:7.6.3" - checksum: 10c0/5eb444fcfe68f54ee7c494fed33988a824f5965379e4c843d3444dd50c1f871bcc74dbaefe5390b59b4948273491414c0e0acc8f6a33b7080f3641cc8394decd + checksum: 10c0/05b13601bd426a93e9ddaf5ccc1ed8cf65434c01c3bcae18867dc34eddd74a2e97c8aea99b293da022b30bae6c971ab08cad35303eaca0fb3c548474e169ffa2 languageName: node linkType: hard @@ -6355,7 +6587,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.5, accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": +"accepts@npm:^1.3.5, accepts@npm:~1.3.4, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -7404,13 +7636,6 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 - languageName: node - linkType: hard - "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" @@ -7944,7 +8169,7 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16, compressible@npm:~2.0.18": +"compressible@npm:~2.0.18": version: 2.0.18 resolution: "compressible@npm:2.0.18" dependencies: @@ -7953,22 +8178,7 @@ __metadata: languageName: node linkType: hard -"compression@npm:1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: "npm:~1.3.5" - bytes: "npm:3.0.0" - compressible: "npm:~2.0.16" - debug: "npm:2.6.9" - on-headers: "npm:~1.0.2" - safe-buffer: "npm:5.1.2" - vary: "npm:~1.1.2" - checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc - languageName: node - linkType: hard - -"compression@npm:^1.7.4": +"compression@npm:1.7.5, compression@npm:^1.7.4": version: 1.7.5 resolution: "compression@npm:1.7.5" dependencies: @@ -8072,13 +8282,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.6.0": - version: 0.6.0 - resolution: "cookie@npm:0.6.0" - checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 - languageName: node - linkType: hard - "cookie@npm:0.7.1": version: 0.7.1 resolution: "cookie@npm:0.7.1" @@ -9655,45 +9858,6 @@ __metadata: languageName: node linkType: hard -"express@npm:4.21.0": - version: 4.21.0 - resolution: "express@npm:4.21.0" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.6.0" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.10" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.13.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 10c0/4cf7ca328f3fdeb720f30ccb2ea7708bfa7d345f9cc460b64a82bf1b2c91e5b5852ba15a9a11b2a165d6089acf83457fc477dc904d59cd71ed34c7a91762c6cc - languageName: node - linkType: hard - "express@npm:4.21.1, express@npm:^4.19.2": version: 4.21.1 resolution: "express@npm:4.21.1" @@ -10885,12 +11049,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:9.1.6": - version: 9.1.6 - resolution: "husky@npm:9.1.6" +"husky@npm:9.1.7": + version: 9.1.7 + resolution: "husky@npm:9.1.7" bin: husky: bin.js - checksum: 10c0/705673db4a247c1febd9c5df5f6a3519106cf0335845027bb50a15fba9b1f542cb2610932ede96fd08008f6d9f49db0f15560509861808b0031cdc0e7c798bac + checksum: 10c0/35bb110a71086c48906aa7cd3ed4913fb913823715359d65e32e0b964cb1e255593b0ae8014a5005c66a68e6fa66c38dcfa8056dbbdfb8b0187c0ffe7ee3a58f languageName: node linkType: hard @@ -12601,6 +12765,41 @@ __metadata: languageName: node linkType: hard +"lmdb@npm:3.1.6": + version: 3.1.6 + resolution: "lmdb@npm:3.1.6" + dependencies: + "@lmdb/lmdb-darwin-arm64": "npm:3.1.6" + "@lmdb/lmdb-darwin-x64": "npm:3.1.6" + "@lmdb/lmdb-linux-arm": "npm:3.1.6" + "@lmdb/lmdb-linux-arm64": "npm:3.1.6" + "@lmdb/lmdb-linux-x64": "npm:3.1.6" + "@lmdb/lmdb-win32-x64": "npm:3.1.6" + msgpackr: "npm:^1.11.2" + node-addon-api: "npm:^6.1.0" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.2.2" + ordered-binary: "npm:^1.5.3" + weak-lru-cache: "npm:^1.2.2" + dependenciesMeta: + "@lmdb/lmdb-darwin-arm64": + optional: true + "@lmdb/lmdb-darwin-x64": + optional: true + "@lmdb/lmdb-linux-arm": + optional: true + "@lmdb/lmdb-linux-arm64": + optional: true + "@lmdb/lmdb-linux-x64": + optional: true + "@lmdb/lmdb-win32-x64": + optional: true + bin: + download-lmdb-prebuilds: bin/download-prebuilds.js + checksum: 10c0/081804f72aab6eb0f712654e3bbb2d454dd455bbfe09f223e10728971f201cfc166d4d6dd6a3099aabf79e4fd62e9c2a5eb9117bd5f2153ec5a419333f69a338 + languageName: node + linkType: hard + "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" @@ -12862,6 +13061,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:0.30.13": + version: 0.30.13 + resolution: "magic-string@npm:0.30.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/a275faeca1564c545019b4742c38a42ca80226c8c9e0805c32d1a1cc58b0e6ff7bbd914ed885fd10043858a7da0f732cb8f49c8975c3ecebde9cad4b57db5115 + languageName: node + linkType: hard + "make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -15689,6 +15897,75 @@ __metadata: languageName: node linkType: hard +"rollup@npm:4.27.3": + version: 4.27.3 + resolution: "rollup@npm:4.27.3" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.27.3" + "@rollup/rollup-android-arm64": "npm:4.27.3" + "@rollup/rollup-darwin-arm64": "npm:4.27.3" + "@rollup/rollup-darwin-x64": "npm:4.27.3" + "@rollup/rollup-freebsd-arm64": "npm:4.27.3" + "@rollup/rollup-freebsd-x64": "npm:4.27.3" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.3" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.3" + "@rollup/rollup-linux-arm64-gnu": "npm:4.27.3" + "@rollup/rollup-linux-arm64-musl": "npm:4.27.3" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.3" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.3" + "@rollup/rollup-linux-s390x-gnu": "npm:4.27.3" + "@rollup/rollup-linux-x64-gnu": "npm:4.27.3" + "@rollup/rollup-linux-x64-musl": "npm:4.27.3" + "@rollup/rollup-win32-arm64-msvc": "npm:4.27.3" + "@rollup/rollup-win32-ia32-msvc": "npm:4.27.3" + "@rollup/rollup-win32-x64-msvc": "npm:4.27.3" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/789885d3f852ed7ca45bed14194a2ac7a2cf16b6b62b54f691c79e27d5557d31a2d612d3680c26c527a1957e0bd6811806ddd765e0dae589404cf24544ff2838 + languageName: node + linkType: hard + "rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.27.2 resolution: "rollup@npm:4.27.2" @@ -15802,13 +16079,6 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - "safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -15816,6 +16086,13 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + "safe-regex-test@npm:^1.0.3": version: 1.0.3 resolution: "safe-regex-test@npm:1.0.3" @@ -15884,7 +16161,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:^1.79.5": +"sass@npm:1.81.0, sass@npm:^1.79.5": version: 1.81.0 resolution: "sass@npm:1.81.0" dependencies: @@ -17904,16 +18181,16 @@ __metadata: languageName: node linkType: hard -"verdaccio-audit@npm:13.0.0-next-8.3": - version: 13.0.0-next-8.3 - resolution: "verdaccio-audit@npm:13.0.0-next-8.3" +"verdaccio-audit@npm:13.0.0-next-8.4": + version: 13.0.0-next-8.4 + resolution: "verdaccio-audit@npm:13.0.0-next-8.4" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.3" - "@verdaccio/core": "npm:8.0.0-next-8.3" - express: "npm:4.21.0" + "@verdaccio/config": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.4" + express: "npm:4.21.1" https-proxy-agent: "npm:5.0.1" node-fetch: "npm:cjs" - checksum: 10c0/fee130036fa3cdf642d3e7acd000666ee11156c1092b6d47854a4f073713f580f631cb77e13c21cc68b1a70673333822e06ffbda9fa36ac5f5eeda3b26eabf93 + checksum: 10c0/3b855cde19fca126c858a2ec4d70a988d0d86427a3c09e7994bea2b5522cfdd5087490badd7b182ece217db1e7d16f20c8a49bd261b8a981c7bfd1ed466415c6 languageName: node linkType: hard @@ -17926,44 +18203,44 @@ __metadata: languageName: node linkType: hard -"verdaccio-htpasswd@npm:13.0.0-next-8.3": - version: 13.0.0-next-8.3 - resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.3" +"verdaccio-htpasswd@npm:13.0.0-next-8.4": + version: 13.0.0-next-8.4 + resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.4" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.3" - "@verdaccio/file-locking": "npm:13.0.0-next-8.1" + "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/file-locking": "npm:13.0.0-next-8.2" apache-md5: "npm:1.1.8" bcryptjs: "npm:2.4.3" core-js: "npm:3.37.1" debug: "npm:4.3.7" http-errors: "npm:2.0.0" unix-crypt-td-js: "npm:1.1.4" - checksum: 10c0/0c26cd24480e5cd373d880ceb849bad12a30c42d47fb7d7820a6b38da22616b6703301b654b2fabc80e434ab10a6d0ed568b7fcc9bf067b147865df0ab8a6212 + checksum: 10c0/c3f74c40744d98036026d30c60485f8e273de365e5d3b15fc25cfc2b7da97a3649ddeaf7ccf808ce27dfed310f0b275787981c51e83c25d9c9b63840811a2179 languageName: node linkType: hard -"verdaccio@npm:6.0.1": - version: 6.0.1 - resolution: "verdaccio@npm:6.0.1" +"verdaccio@npm:6.0.2": + version: 6.0.2 + resolution: "verdaccio@npm:6.0.2" dependencies: "@cypress/request": "npm:3.0.5" - "@verdaccio/auth": "npm:8.0.0-next-8.3" - "@verdaccio/config": "npm:8.0.0-next-8.3" - "@verdaccio/core": "npm:8.0.0-next-8.3" + "@verdaccio/auth": "npm:8.0.0-next-8.4" + "@verdaccio/config": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.4" "@verdaccio/local-storage-legacy": "npm:11.0.2" - "@verdaccio/logger": "npm:8.0.0-next-8.3" - "@verdaccio/middleware": "npm:8.0.0-next-8.3" - "@verdaccio/search-indexer": "npm:8.0.0-next-8.1" + "@verdaccio/logger": "npm:8.0.0-next-8.4" + "@verdaccio/middleware": "npm:8.0.0-next-8.4" + "@verdaccio/search-indexer": "npm:8.0.0-next-8.2" "@verdaccio/signature": "npm:8.0.0-next-8.1" "@verdaccio/streams": "npm:10.2.1" - "@verdaccio/tarball": "npm:13.0.0-next-8.3" - "@verdaccio/ui-theme": "npm:8.0.0-next-8.3" - "@verdaccio/url": "npm:13.0.0-next-8.3" + "@verdaccio/tarball": "npm:13.0.0-next-8.4" + "@verdaccio/ui-theme": "npm:8.0.0-next-8.4" + "@verdaccio/url": "npm:13.0.0-next-8.4" "@verdaccio/utils": "npm:7.0.1-next-8.1" JSONStream: "npm:1.3.5" async: "npm:3.2.6" clipanion: "npm:4.0.0-rc.4" - compression: "npm:1.7.4" + compression: "npm:1.7.5" cors: "npm:2.8.5" debug: "npm:4.3.7" envinfo: "npm:7.14.0" @@ -17981,11 +18258,11 @@ __metadata: pkginfo: "npm:0.4.1" semver: "npm:7.6.3" validator: "npm:13.12.0" - verdaccio-audit: "npm:13.0.0-next-8.3" - verdaccio-htpasswd: "npm:13.0.0-next-8.3" + verdaccio-audit: "npm:13.0.0-next-8.4" + verdaccio-htpasswd: "npm:13.0.0-next-8.4" bin: verdaccio: bin/verdaccio - checksum: 10c0/caecf619d949ea814c269d2666618acc8eabc06763122c3391251067da954d2fb560619cf423e9d96c2bf8e791b05eb1ab3f141882f7219ff19c1b9e884699e8 + checksum: 10c0/e5d545341d6db5666c71def44b6e4d997c543c0f62ffffa3ddc0ccdbf1499a93f6d0eeb981ac6c94b599476a05ac1ce6f242c0606779ec992ad1127bb47718f8 languageName: node linkType: hard From cda4758df59f6c3e5200ef9d6f4ebc866fa7e59b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 21 Nov 2024 17:16:47 +0000 Subject: [PATCH 0020/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/pr.yml | 40 +++++++++--------- package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++------- yarn.lock | 20 ++++----- 8 files changed, 73 insertions(+), 73 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 10c9f64d286c..861a43d674fe 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + - uses: angular/dev-infra/github-actions/branch-manager@01c8c16f830d02110c28640aea16f145a7937080 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12e731b9bbc1..aee24f91ee49 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - run: yarn 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 740002bc8f71..df5b81929b44 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + - uses: angular/dev-infra/github-actions/commit-message-based-labels@01c8c16f830d02110c28640aea16f145a7937080 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + - uses: angular/dev-infra/github-actions/post-approval-changes@01c8c16f830d02110c28640aea16f145a7937080 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index aea504667d0d..b559b4379f65 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + - uses: angular/dev-infra/github-actions/feature-request@01c8c16f830d02110c28640aea16f145a7937080 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 30b0fb0c1083..609bb7103d37 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/linting/licenses@01c8c16f830d02110c28640aea16f145a7937080 - name: Check tooling setup run: yarn 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@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7a4326af255661a5c0d3fe44fabac5ff36585fad + uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 8940ede11967..8bd144917ca8 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "19.0.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#693cb959b6f1bebf72d11245bccb80c11f41e5bb", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#b982d44b3ccd2f2fffede6cf18a80858fa6294ea", "@angular/cdk": "19.0.0", "@angular/common": "19.0.0", "@angular/compiler": "19.0.0", @@ -63,7 +63,7 @@ "@angular/forms": "19.0.0", "@angular/localize": "19.0.0", "@angular/material": "19.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9ce48789f423d72fb6b8d766b63b7b6611bc9e80", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0004779f2460c3b030b056e9f4f2c5e921e11039", "@angular/platform-browser": "19.0.0", "@angular/platform-browser-dynamic": "19.0.0", "@angular/platform-server": "19.0.0", diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 6c9b05d3e501..69332bd4e2e3 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#962c2a1e51ccc58258ef7651baf00e4e3c1581eb", - "@angular/cdk": "github:angular/cdk-builds#a5724684ca01671f5ae3d33408fceb617a3a5969", - "@angular/common": "github:angular/common-builds#bef8ddf7b5426c0da5daa97495fc790be432a0c7", - "@angular/compiler": "github:angular/compiler-builds#c9892439ad71d77e3abb1316081e50f1fc186c80", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#4fe1d0ac51d5e66ceaad4c94ac600ec9d0a0132f", - "@angular/core": "github:angular/core-builds#1cc72c98a639d464684d2547ed5af2fca37b106b", - "@angular/forms": "github:angular/forms-builds#806f878277b8c0712c5e538720cd51bbb6d548d3", - "@angular/language-service": "github:angular/language-service-builds#c219cf9f1cf1729d0dbb29b210b0eeac9bcaf9da", - "@angular/localize": "github:angular/localize-builds#2680cdc76d78921382b4883ff68b96184c6101f8", - "@angular/material": "github:angular/material-builds#b74c08281e333137f9d2fa6a942687eff43dd3bb", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#25a062b3b23b194f2d8412a623f784b7f53ac6f2", - "@angular/platform-browser": "github:angular/platform-browser-builds#4d942179c80e9d957b3588e65635a604f336c1e3", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#414c3a7a6067953359a39396ca102886a7157d0b", - "@angular/platform-server": "github:angular/platform-server-builds#d412453b889b7bf9d28d1fa00e22fcf5101e59b7", - "@angular/router": "github:angular/router-builds#c864b6f7dc7619d9709d4b42475070f3290fcc88", - "@angular/service-worker": "github:angular/service-worker-builds#13c8fb7b9bee9359d3c77fa7ab3a99a0329ea50a" + "@angular/animations": "github:angular/animations-builds#ff1306d24b5fedf863ca3d81c63f2fe032aca43d", + "@angular/cdk": "github:angular/cdk-builds#308678a0455206fe8f2a0fff9593bf8d6cf37c12", + "@angular/common": "github:angular/common-builds#e6446cd6dbe450c90b73885326189aa40eda84a5", + "@angular/compiler": "github:angular/compiler-builds#1da349a4a0524e3d99d1ceac129602406685f4d0", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#0fbe283681c3af7bfe16760830646513d61f0208", + "@angular/core": "github:angular/core-builds#65d43d56d39a24210481e08e2a2ce2a081165fa9", + "@angular/forms": "github:angular/forms-builds#81e989cd1add7c8818f31f4bac83890f31502522", + "@angular/language-service": "github:angular/language-service-builds#7fa7813aaa69559f07e9510d8f4730379f5bec0e", + "@angular/localize": "github:angular/localize-builds#8338395c726d54d7f31787f2e2f32951c71f188a", + "@angular/material": "github:angular/material-builds#c6af713599322dabb76fdc67941d5f071e3e2a58", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#c9a070ce012d2a67718cdfa138777306fec0cd54", + "@angular/platform-browser": "github:angular/platform-browser-builds#2913aad8602c0f70b6dae1c4904bee4a961c400d", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#23f899d9b4dd6becd58763fa6863d3f1814366c0", + "@angular/platform-server": "github:angular/platform-server-builds#3a79f6acd3898788c912771816641e8b793e2970", + "@angular/router": "github:angular/router-builds#cfc1aa92fd073025ac499f379e4b8e7f43147408", + "@angular/service-worker": "github:angular/service-worker-builds#9223fb3dc40f3785b9d78bce282736ab41204f06" } } diff --git a/yarn.lock b/yarn.lock index 45fbe2c94dfb..9df98cff08ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -324,9 +324,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#693cb959b6f1bebf72d11245bccb80c11f41e5bb": - version: 0.0.0-7a4326af255661a5c0d3fe44fabac5ff36585fad - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=693cb959b6f1bebf72d11245bccb80c11f41e5bb" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#b982d44b3ccd2f2fffede6cf18a80858fa6294ea": + version: 0.0.0-01c8c16f830d02110c28640aea16f145a7937080 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=b982d44b3ccd2f2fffede6cf18a80858fa6294ea" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.0.0" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/444b8e03c792b54c8fdedfff3e545314c4b50fb203a845233d1ebd08128d8632d02cb37e24ef2369a70d256d5f225f4172dd78b92b03e7ea0f80b8ae9b3cea52 + checksum: 10c0/f1ed2f3b5289d6c8fe59bd0d248d18fd2208df0d2371a546e88f7f7b384948a05a796cb7fee06dcb469045361f1e53e2f1534231ffcc9c908510eecf93c38347 languageName: node linkType: hard @@ -629,7 +629,7 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.0.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#693cb959b6f1bebf72d11245bccb80c11f41e5bb" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#b982d44b3ccd2f2fffede6cf18a80858fa6294ea" "@angular/cdk": "npm:19.0.0" "@angular/common": "npm:19.0.0" "@angular/compiler": "npm:19.0.0" @@ -638,7 +638,7 @@ __metadata: "@angular/forms": "npm:19.0.0" "@angular/localize": "npm:19.0.0" "@angular/material": "npm:19.0.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9ce48789f423d72fb6b8d766b63b7b6611bc9e80" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0004779f2460c3b030b056e9f4f2c5e921e11039" "@angular/platform-browser": "npm:19.0.0" "@angular/platform-browser-dynamic": "npm:19.0.0" "@angular/platform-server": "npm:19.0.0" @@ -850,9 +850,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#9ce48789f423d72fb6b8d766b63b7b6611bc9e80": - version: 0.0.0-7a4326af255661a5c0d3fe44fabac5ff36585fad - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=9ce48789f423d72fb6b8d766b63b7b6611bc9e80" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#0004779f2460c3b030b056e9f4f2c5e921e11039": + version: 0.0.0-01c8c16f830d02110c28640aea16f145a7937080 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=0004779f2460c3b030b056e9f4f2c5e921e11039" dependencies: "@octokit/rest": "npm:21.0.2" "@types/semver": "npm:^7.3.6" @@ -866,7 +866,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/c9cc13c407c9adbc3308d897417f874f50172b318df56b0a9226d27237505fc762101ea719462aeb1f19505521fa474339c3baad8e9a7dc96852c2e1b589ee4b + checksum: 10c0/06103a9e62e0f21e2c7784efffb47e9a035a2be017e1c6c6c51f87417bc55fd79ccb7ba9d96a942b04635dbe8aab849355d97a1dd68861587a52ad8d1647ef77 languageName: node linkType: hard From 02db6a2d14f49f5f354389426d7226de3b42a8c8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 21 Nov 2024 06:14:35 +0000 Subject: [PATCH 0021/2162] build: update github/codeql-action action to v3.27.5 --- .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 a2258b8949a7..d451a7f133c6 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@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: sarif_file: results.sarif From f36b13ab4a798fbf6df69d160690099fff5214ed Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Thu, 21 Nov 2024 13:09:51 -0800 Subject: [PATCH 0022/2162] docs: release notes for the v19.0.1 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d88d33d9f3f6..82319a061463 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 19.0.1 (2024-11-21) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------- | +| [b63123f20](https://github.com/angular/angular-cli/commit/b63123f20702bd53ea99888b83b4253810ae0a09) | fix | use stylePreprocessorOptions | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [74461da64](https://github.com/angular/angular-cli/commit/74461da6439b70b5348c99682842ae20043d9b61) | fix | ensure accurate content length for server assets | +| [1b4dcedd5](https://github.com/angular/angular-cli/commit/1b4dcedd594b5d9a1701cd8d1e9874742c05e47f) | fix | use `sha256` instead of `sha-256` as hash algorithm name | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------ | +| [8bd2b260e](https://github.com/angular/angular-cli/commit/8bd2b260e2008f1ffc71af0e55b27884c3660c54) | fix | handle baseHref that start with `./` | + + + # 19.0.0 (2024-11-19) From 34574b290695afe2bde8ba30481a5535b097fae3 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 22 Nov 2024 09:48:49 +0000 Subject: [PATCH 0023/2162] fix(@angular/ssr): handle nested redirects not explicitly defined in router config This commit ensures proper handling of nested redirects that are implicitly structured but not explicitly defined in the router configuration. Closes #28903 --- packages/angular/ssr/src/app.ts | 31 +++--- packages/angular/ssr/src/routes/ng-routes.ts | 62 ++++++++---- packages/angular/ssr/src/utils/url.ts | 68 +++++++++++++ packages/angular/ssr/test/app_spec.ts | 7 ++ .../angular/ssr/test/routes/ng-routes_spec.ts | 96 ++++++++++++++++++- .../angular/ssr/test/routes/router_spec.ts | 6 +- packages/angular/ssr/test/utils/url_spec.ts | 49 ++++++++++ 7 files changed, 277 insertions(+), 42 deletions(-) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index e49a0b0e6c0e..eec56efefe80 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -24,7 +24,12 @@ import { sha256 } from './utils/crypto'; import { InlineCriticalCssProcessor } from './utils/inline-critical-css'; import { LRUCache } from './utils/lru-cache'; import { AngularBootstrap, renderAngular } from './utils/ng'; -import { joinUrlParts, stripIndexHtmlFromURL, stripLeadingSlash } from './utils/url'; +import { + buildPathWithParams, + joinUrlParts, + stripIndexHtmlFromURL, + stripLeadingSlash, +} from './utils/url'; /** * Maximum number of critical CSS entries the cache can store. @@ -160,11 +165,14 @@ export class AngularServerApp { const { redirectTo, status, renderMode } = matchedRoute; if (redirectTo !== undefined) { - // Note: The status code is validated during route extraction. - // 302 Found is used by default for redirections - // See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return Response.redirect(new URL(redirectTo, url), (status as any) ?? 302); + return Response.redirect( + new URL(buildPathWithParams(redirectTo, url.pathname), url), + // Note: The status code is validated during route extraction. + // 302 Found is used by default for redirections + // See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (status as any) ?? 302, + ); } if (renderMode === RenderMode.Prerender) { @@ -241,17 +249,8 @@ export class AngularServerApp { matchedRoute: RouteTreeNodeMetadata, requestContext?: unknown, ): Promise { - const { redirectTo, status } = matchedRoute; - - if (redirectTo !== undefined) { - // Note: The status code is validated during route extraction. - // 302 Found is used by default for redirections - // See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return Response.redirect(new URL(redirectTo, new URL(request.url)), (status as any) ?? 302); - } + const { renderMode, headers, status } = matchedRoute; - const { renderMode, headers } = matchedRoute; if (!this.allowStaticRouteRender && renderMode === RenderMode.Prerender) { return null; } diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 9e48f49b2b11..c77c70ffa18f 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -21,7 +21,7 @@ import { ServerAssets } from '../assets'; import { Console } from '../console'; import { AngularAppManifest, getAngularAppManifest } from '../manifest'; import { AngularBootstrap, isNgModule } from '../utils/ng'; -import { joinUrlParts, stripLeadingSlash } from '../utils/url'; +import { addTrailingSlash, joinUrlParts, stripLeadingSlash } from '../utils/url'; import { PrerenderFallback, RenderMode, @@ -146,31 +146,36 @@ async function* traverseRoutesConfig(options: { const metadata: ServerConfigRouteTreeNodeMetadata = { renderMode: RenderMode.Prerender, ...matchedMetaData, - route: currentRoutePath, + // Match Angular router behavior + // ['one', 'two', ''] -> 'one/two/' + // ['one', 'two', 'three'] -> 'one/two/three' + route: path === '' ? addTrailingSlash(currentRoutePath) : currentRoutePath, }; delete metadata.presentInClientRouter; - // Handle redirects - if (typeof redirectTo === 'string') { - const redirectToResolved = resolveRedirectTo(currentRoutePath, redirectTo); + if (metadata.renderMode === RenderMode.Prerender) { + // Handle SSG routes + yield* handleSSGRoute( + typeof redirectTo === 'string' ? redirectTo : undefined, + metadata, + parentInjector, + invokeGetPrerenderParams, + includePrerenderFallbackRoutes, + ); + } else if (typeof redirectTo === 'string') { + // Handle redirects if (metadata.status && !VALID_REDIRECT_RESPONSE_CODES.has(metadata.status)) { yield { error: `The '${metadata.status}' status code is not a valid redirect response code. ` + `Please use one of the following redirect response codes: ${[...VALID_REDIRECT_RESPONSE_CODES.values()].join(', ')}.`, }; + continue; } - yield { ...metadata, redirectTo: redirectToResolved }; - } else if (metadata.renderMode === RenderMode.Prerender) { - // Handle SSG routes - yield* handleSSGRoute( - metadata, - parentInjector, - invokeGetPrerenderParams, - includePrerenderFallbackRoutes, - ); + + yield { ...metadata, redirectTo: resolveRedirectTo(metadata.route, redirectTo) }; } else { yield metadata; } @@ -214,6 +219,7 @@ async function* traverseRoutesConfig(options: { * Handles SSG (Static Site Generation) routes by invoking `getPrerenderParams` and yielding * all parameterized paths, returning any errors encountered. * + * @param redirectTo - Optional path to redirect to, if specified. * @param metadata - The metadata associated with the route tree node. * @param parentInjector - The dependency injection container for the parent route. * @param invokeGetPrerenderParams - A flag indicating whether to invoke the `getPrerenderParams` function. @@ -221,6 +227,7 @@ async function* traverseRoutesConfig(options: { * @returns An async iterable iterator that yields route tree node metadata for each SSG path or errors. */ async function* handleSSGRoute( + redirectTo: string | undefined, metadata: ServerConfigRouteTreeNodeMetadata, parentInjector: Injector, invokeGetPrerenderParams: boolean, @@ -239,6 +246,10 @@ async function* handleSSGRoute( delete meta['getPrerenderParams']; } + if (redirectTo !== undefined) { + meta.redirectTo = resolveRedirectTo(currentRoutePath, redirectTo); + } + if (!URL_PARAMETER_REGEXP.test(currentRoutePath)) { // Route has no parameters yield { @@ -279,7 +290,14 @@ async function* handleSSGRoute( return value; }); - yield { ...meta, route: routeWithResolvedParams }; + yield { + ...meta, + route: routeWithResolvedParams, + redirectTo: + redirectTo === undefined + ? undefined + : resolveRedirectTo(routeWithResolvedParams, redirectTo), + }; } } catch (error) { yield { error: `${(error as Error).message}` }; @@ -319,7 +337,7 @@ function resolveRedirectTo(routePath: string, redirectTo: string): string { } // Resolve relative redirectTo based on the current route path. - const segments = routePath.split('/'); + const segments = routePath.replace(URL_PARAMETER_REGEXP, '*').split('/'); segments.pop(); // Remove the last segment to make it relative. return joinUrlParts(...segments, redirectTo); @@ -459,7 +477,6 @@ export async function getRoutesFromAngularRouterConfig( includePrerenderFallbackRoutes, }); - let seenAppShellRoute: string | undefined; for await (const result of traverseRoutes) { if ('error' in result) { errors.push(result.error); @@ -549,8 +566,17 @@ export async function extractRoutesAndCreateRouteTree( metadata.redirectTo = joinUrlParts(baseHref, metadata.redirectTo); } + // Remove undefined fields + // Helps avoid unnecessary test updates + for (const [key, value] of Object.entries(metadata)) { + if (value === undefined) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete (metadata as any)[key]; + } + } + const fullRoute = joinUrlParts(baseHref, route); - routeTree.insert(fullRoute, metadata); + routeTree.insert(fullRoute.replace(URL_PARAMETER_REGEXP, '*'), metadata); } return { diff --git a/packages/angular/ssr/src/utils/url.ts b/packages/angular/ssr/src/utils/url.ts index db68ce3570e6..9d42ddd6db00 100644 --- a/packages/angular/ssr/src/utils/url.ts +++ b/packages/angular/ssr/src/utils/url.ts @@ -61,6 +61,23 @@ export function addLeadingSlash(url: string): string { return url[0] === '/' ? url : `/${url}`; } +/** + * Adds a trailing slash to a URL if it does not already have one. + * + * @param url - The URL string to which the trailing slash will be added. + * @returns The URL string with a trailing slash. + * + * @example + * ```js + * addTrailingSlash('path'); // 'path/' + * addTrailingSlash('path/'); // 'path/' + * ``` + */ +export function addTrailingSlash(url: string): string { + // Check if the URL already end with a slash + return url[url.length - 1] === '/' ? url : `${url}/`; +} + /** * Joins URL parts into a single URL string. * @@ -128,3 +145,54 @@ export function stripIndexHtmlFromURL(url: URL): URL { return url; } + +/** + * Resolves `*` placeholders in a path template by mapping them to corresponding segments + * from a base path. This is useful for constructing paths dynamically based on a given base path. + * + * The function processes the `toPath` string, replacing each `*` placeholder with + * the corresponding segment from the `fromPath`. If the `toPath` contains no placeholders, + * it is returned as-is. Invalid `toPath` formats (not starting with `/`) will throw an error. + * + * @param toPath - A path template string that may contain `*` placeholders. Each `*` is replaced + * by the corresponding segment from the `fromPath`. Static paths (e.g., `/static/path`) are returned + * directly without placeholder replacement. + * @param fromPath - A base path string, split into segments, that provides values for + * replacing `*` placeholders in the `toPath`. + * @returns A resolved path string with `*` placeholders replaced by segments from the `fromPath`, + * or the `toPath` returned unchanged if it contains no placeholders. + * + * @throws If the `toPath` does not start with a `/`, indicating an invalid path format. + * + * @example + * ```typescript + * // Example with placeholders resolved + * const resolvedPath = buildPathWithParams('/*\/details', '/123/abc'); + * console.log(resolvedPath); // Outputs: '/123/details' + * + * // Example with a static path + * const staticPath = buildPathWithParams('/static/path', '/base/unused'); + * console.log(staticPath); // Outputs: '/static/path' + * ``` + */ +export function buildPathWithParams(toPath: string, fromPath: string): string { + if (toPath[0] !== '/') { + throw new Error(`Invalid toPath: The string must start with a '/'. Received: '${toPath}'`); + } + + if (fromPath[0] !== '/') { + throw new Error(`Invalid fromPath: The string must start with a '/'. Received: '${fromPath}'`); + } + + if (!toPath.includes('/*')) { + return toPath; + } + + const fromPathParts = fromPath.split('/'); + const toPathParts = toPath.split('/'); + const resolvedParts = toPathParts.map((part, index) => + toPathParts[index] === '*' ? fromPathParts[index] : part, + ); + + return joinUrlParts(...resolvedParts); +} diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index df0898ca41bf..4b30d039bbef 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -38,6 +38,7 @@ describe('AngularServerApp', () => { { path: 'page-with-status', component: HomeComponent }, { path: 'redirect', redirectTo: 'home' }, { path: 'redirect/relative', redirectTo: 'home' }, + { path: 'redirect/:param/relative', redirectTo: 'home' }, { path: 'redirect/absolute', redirectTo: '/home' }, ], [ @@ -117,6 +118,12 @@ describe('AngularServerApp', () => { expect(response?.status).toBe(302); }); + it('should correctly handle relative nested redirects with parameter', async () => { + const response = await app.handle(new Request('http://localhost/redirect/param/relative')); + expect(response?.headers.get('location')).toContain('http://localhost/redirect/param/home'); + expect(response?.status).toBe(302); + }); + it('should correctly handle absolute nested redirects', async () => { const response = await app.handle(new Request('http://localhost/redirect/absolute')); expect(response?.headers.get('location')).toContain('http://localhost/home'); diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index 050e0e09cd33..7c79a6669c70 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -47,7 +47,7 @@ describe('extractRoutesAndCreateRouteTree', () => { { route: '/', renderMode: RenderMode.Server }, { route: '/home', renderMode: RenderMode.Client }, { route: '/redirect', renderMode: RenderMode.Server, status: 301, redirectTo: '/home' }, - { route: '/user/:id', renderMode: RenderMode.Server }, + { route: '/user/*', renderMode: RenderMode.Server }, ]); }); @@ -93,7 +93,7 @@ describe('extractRoutesAndCreateRouteTree', () => { route: '/user/jane/role/writer', renderMode: RenderMode.Prerender, }, - { route: '/user/:id/role/:role', renderMode: RenderMode.Server }, + { route: '/user/*/role/*', renderMode: RenderMode.Server }, ]); }); @@ -128,7 +128,7 @@ describe('extractRoutesAndCreateRouteTree', () => { route: '/user/jane/role/writer', renderMode: RenderMode.Prerender, }, - { route: '/user/:id/role/:role', renderMode: RenderMode.Client }, + { route: '/user/*/role/*', renderMode: RenderMode.Client }, ]); }); @@ -165,6 +165,92 @@ describe('extractRoutesAndCreateRouteTree', () => { }, ]); }); + + it('should extract nested redirects that are not explicitly defined.', async () => { + setAngularAppTestingManifest( + [ + { + path: '', + pathMatch: 'full', + redirectTo: 'some', + }, + { + path: ':param', + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'thing', + }, + { + path: 'thing', + component: DummyComponent, + }, + ], + }, + ], + [ + { + path: ':param', + renderMode: RenderMode.Prerender, + async getPrerenderParams() { + return [{ param: 'some' }]; + }, + }, + { path: '**', renderMode: RenderMode.Prerender }, + ], + ); + + const { routeTree, errors } = await extractRoutesAndCreateRouteTree( + url, + /** manifest */ undefined, + /** invokeGetPrerenderParams */ true, + /** includePrerenderFallbackRoutes */ true, + ); + expect(errors).toHaveSize(0); + expect(routeTree.toObject()).toEqual([ + { route: '/', renderMode: RenderMode.Prerender, redirectTo: '/some' }, + { route: '/some', renderMode: RenderMode.Prerender, redirectTo: '/some/thing' }, + { route: '/some/thing', renderMode: RenderMode.Prerender }, + { redirectTo: '/*/thing', route: '/*', renderMode: RenderMode.Server }, + { route: '/*/thing', renderMode: RenderMode.Server }, + ]); + }); + }); + + it('should extract nested redirects that are not explicitly defined.', async () => { + setAngularAppTestingManifest( + [ + { + path: '', + pathMatch: 'full', + redirectTo: 'some', + }, + { + path: ':param', + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'thing', + }, + { + path: 'thing', + component: DummyComponent, + }, + ], + }, + ], + [{ path: '**', renderMode: RenderMode.Server }], + ); + + const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url); + expect(errors).toHaveSize(0); + expect(routeTree.toObject()).toEqual([ + { route: '/', renderMode: RenderMode.Server, redirectTo: '/some' }, + { route: '/*', renderMode: RenderMode.Server, redirectTo: '/*/thing' }, + { route: '/*/thing', renderMode: RenderMode.Server }, + ]); }); it('should not resolve parameterized routes for SSG when `invokeGetPrerenderParams` is false', async () => { @@ -192,7 +278,7 @@ describe('extractRoutesAndCreateRouteTree', () => { expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/home', renderMode: RenderMode.Server }, - { route: '/user/:id/role/:role', renderMode: RenderMode.Server }, + { route: '/user/*/role/*', renderMode: RenderMode.Server }, ]); }); @@ -273,7 +359,7 @@ describe('extractRoutesAndCreateRouteTree', () => { route: '/user/jane/role/writer', renderMode: RenderMode.Prerender, }, - { route: '/user/:id/role/:role', renderMode: RenderMode.Client }, + { route: '/user/*/role/*', renderMode: RenderMode.Client }, ]); }); diff --git a/packages/angular/ssr/test/routes/router_spec.ts b/packages/angular/ssr/test/routes/router_spec.ts index 4a64e0713eaf..3a8dfe30b00f 100644 --- a/packages/angular/ssr/test/routes/router_spec.ts +++ b/packages/angular/ssr/test/routes/router_spec.ts @@ -61,7 +61,7 @@ describe('ServerRouter', () => { status: 301, }); expect(router.match(new URL('http://localhost/user/123'))).toEqual({ - route: '/user/:id', + route: '/user/*', renderMode: RenderMode.Server, }); }); @@ -95,7 +95,7 @@ describe('ServerRouter', () => { renderMode: RenderMode.Server, }); expect(userMetadata).toEqual({ - route: '/user/:id', + route: '/user/*', renderMode: RenderMode.Server, }); }); @@ -116,7 +116,7 @@ describe('ServerRouter', () => { renderMode: RenderMode.Server, }); expect(userMetadata).toEqual({ - route: '/user/:id', + route: '/user/*', renderMode: RenderMode.Server, }); }); diff --git a/packages/angular/ssr/test/utils/url_spec.ts b/packages/angular/ssr/test/utils/url_spec.ts index 2cebcf0c5b53..b6fcd4e7e767 100644 --- a/packages/angular/ssr/test/utils/url_spec.ts +++ b/packages/angular/ssr/test/utils/url_spec.ts @@ -8,6 +8,8 @@ import { addLeadingSlash, + addTrailingSlash, + buildPathWithParams, joinUrlParts, stripIndexHtmlFromURL, stripLeadingSlash, @@ -53,6 +55,7 @@ describe('URL Utils', () => { describe('addLeadingSlash', () => { it('should add a leading slash to a URL without one', () => { + expect(addLeadingSlash('path')).toBe('/path'); expect(addLeadingSlash('path/')).toBe('/path/'); }); @@ -65,6 +68,21 @@ describe('URL Utils', () => { }); }); + describe('addTrailingSlash', () => { + it('should add a trailing slash to a URL without one', () => { + expect(addTrailingSlash('path')).toBe('path/'); + expect(addTrailingSlash('/path')).toBe('/path/'); + }); + + it('should not modify URL if it already has a trailing slash', () => { + expect(addLeadingSlash('/path/')).toBe('/path/'); + }); + + it('should handle empty URL', () => { + expect(addLeadingSlash('')).toBe('/'); + }); + }); + describe('joinUrlParts', () => { it('should join multiple URL parts with normalized slashes', () => { expect(joinUrlParts('', 'path/', '/to/resource')).toBe('/path/to/resource'); @@ -132,4 +150,35 @@ describe('URL Utils', () => { expect(result.href).toBe('https://www.example.com/page'); }); }); + + describe('buildPathWithParams', () => { + it('should return the same URL when there are no placeholders in the toPath', () => { + const fromPath = '/base/path'; + const toPath = '/static/path'; + + const result = buildPathWithParams(toPath, fromPath); + + // Since there are no placeholders, the URL remains the same. + expect(result.toString()).toBe('/static/path'); + }); + + it('should replace placeholders with corresponding segments from the base URL path', () => { + const fromPath = '/base/path'; + const toPath = '/*/*/details'; + + const result = buildPathWithParams(toPath, fromPath); + + expect(result.toString()).toBe('/base/path/details'); + }); + + it('should throw an error if the toPath does not start with "/"', () => { + const fromPath = '/base/path'; + const toPath = 'details'; + + // This should throw an error because toPath doesn't start with "/" + expect(() => { + buildPathWithParams(toPath, fromPath); + }).toThrowError(`Invalid toPath: The string must start with a '/'. Received: 'details'`); + }); + }); }); From a5334655418d479d79f2a51e38bd8c9d26703a27 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 21 Nov 2024 18:24:42 +0000 Subject: [PATCH 0024/2162] ci: set up perf workflow job and create initial workflow Set up the initial workflow to build upon. --- .github/workflows/perf.yml | 42 +++++++++++++++++++++++++++++++++++ .ng-dev/dx-perf-workflows.yml | 7 ++++++ 2 files changed, 49 insertions(+) create mode 100644 .github/workflows/perf.yml create mode 100644 .ng-dev/dx-perf-workflows.yml diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml new file mode 100644 index 000000000000..13fbce067b37 --- /dev/null +++ b/.github/workflows/perf.yml @@ -0,0 +1,42 @@ +name: Performance Tracking + +on: + push: + branches: + - main + +permissions: {} + +defaults: + run: + shell: bash + +jobs: + list: + timeout-minutes: 3 + runs-on: ubuntu-latest + outputs: + workflows: ${{ steps.workflows.outputs.workflows }} + steps: + - name: Initialize environment + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee + - name: Install node modules + run: yarn install --immutable + - id: workflows + run: echo "workflows=$(yarn ng-dev perf workflows --list)" >> "$GITHUB_OUTPUT" + + workflow: + timeout-minutes: 30 + runs-on: ubuntu-latest + needs: list + strategy: + matrix: + workflow: ${{ fromJSON(needs.list.outputs.workflows) }} + steps: + - name: Initialize environment + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee + - name: Setup Bazel + uses: angular/dev-infra/github-actions/bazel/setup@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee + - name: Install node modules + run: yarn install --immutable + - run: yarn ng-dev perf workflows --name ${{ matrix.workflow }} diff --git a/.ng-dev/dx-perf-workflows.yml b/.ng-dev/dx-perf-workflows.yml new file mode 100644 index 000000000000..910dafc572ba --- /dev/null +++ b/.ng-dev/dx-perf-workflows.yml @@ -0,0 +1,7 @@ +workflows: + build-cli: + name: Build cli + prepare: + - bazel clean + workflow: + - bazel build //packages/angular/cli:npm_package From e7d3b72acc0ecad1d3214f5e21a05eddc9ca19df Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 22 Nov 2024 17:18:55 +0000 Subject: [PATCH 0025/2162] 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 69332bd4e2e3..8f0abf342f97 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#ff1306d24b5fedf863ca3d81c63f2fe032aca43d", - "@angular/cdk": "github:angular/cdk-builds#308678a0455206fe8f2a0fff9593bf8d6cf37c12", - "@angular/common": "github:angular/common-builds#e6446cd6dbe450c90b73885326189aa40eda84a5", - "@angular/compiler": "github:angular/compiler-builds#1da349a4a0524e3d99d1ceac129602406685f4d0", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#0fbe283681c3af7bfe16760830646513d61f0208", - "@angular/core": "github:angular/core-builds#65d43d56d39a24210481e08e2a2ce2a081165fa9", - "@angular/forms": "github:angular/forms-builds#81e989cd1add7c8818f31f4bac83890f31502522", - "@angular/language-service": "github:angular/language-service-builds#7fa7813aaa69559f07e9510d8f4730379f5bec0e", - "@angular/localize": "github:angular/localize-builds#8338395c726d54d7f31787f2e2f32951c71f188a", - "@angular/material": "github:angular/material-builds#c6af713599322dabb76fdc67941d5f071e3e2a58", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#c9a070ce012d2a67718cdfa138777306fec0cd54", - "@angular/platform-browser": "github:angular/platform-browser-builds#2913aad8602c0f70b6dae1c4904bee4a961c400d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#23f899d9b4dd6becd58763fa6863d3f1814366c0", - "@angular/platform-server": "github:angular/platform-server-builds#3a79f6acd3898788c912771816641e8b793e2970", - "@angular/router": "github:angular/router-builds#cfc1aa92fd073025ac499f379e4b8e7f43147408", - "@angular/service-worker": "github:angular/service-worker-builds#9223fb3dc40f3785b9d78bce282736ab41204f06" + "@angular/animations": "github:angular/animations-builds#f3f8c607674a0c25cd4af1d38ca07c293156d654", + "@angular/cdk": "github:angular/cdk-builds#c1c5e13c61a5839decdfcf5ce8769288232bfd87", + "@angular/common": "github:angular/common-builds#1b1ed7f7670dd4ae7ccd1f6e4569496087d60e1a", + "@angular/compiler": "github:angular/compiler-builds#7d29993ebccf78eadaf922f2eee78d9a108d502e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#40531fc5c8417fcafc21a0a5c115941e6e4603d9", + "@angular/core": "github:angular/core-builds#a6ac347fed3b6c4721d0a07ee6af5cd3f55a54fa", + "@angular/forms": "github:angular/forms-builds#d351adcb90fa79ed5cca5829425cb5a4dda994be", + "@angular/language-service": "github:angular/language-service-builds#6438594bc1141018fe60f2589ed604f1a1c67907", + "@angular/localize": "github:angular/localize-builds#a3e81d587fd530200773e863a5eb097b0f109cc6", + "@angular/material": "github:angular/material-builds#117df7adeee6cb79559906a57613abdb6fba50a9", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#eb82ec7de643cf7cc49c1da813fd2cd53d839913", + "@angular/platform-browser": "github:angular/platform-browser-builds#2038ae51cf7f19a73f031c40584c0c5c5cf16883", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#25c0c55f56a646a4c33de0c8676b0cece05f8f00", + "@angular/platform-server": "github:angular/platform-server-builds#0e7e575680edf03164d6cf0ba0d48cf32b706405", + "@angular/router": "github:angular/router-builds#caf7868721bc8ca9720e5387dff978ffd2359e6b", + "@angular/service-worker": "github:angular/service-worker-builds#0a64f6e2b19b930acd7dcc8940e914e2bb3dbd1e" } } From 20411f696eb52c500e096e3dfc5e195185794edc Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 22 Nov 2024 10:18:58 +0000 Subject: [PATCH 0026/2162] refactor(@angular/ssr): replace `:params` with `*` The SSR router relies on wildcard matching rather than params. This commit refactors the stored routes by removing the `:params`. --- packages/angular/ssr/src/routes/ng-routes.ts | 2 +- packages/angular/ssr/src/routes/route-tree.ts | 4 +++- .../angular/ssr/test/routes/route-tree_spec.ts | 18 +++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index c77c70ffa18f..bf74c60112a4 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -576,7 +576,7 @@ export async function extractRoutesAndCreateRouteTree( } const fullRoute = joinUrlParts(baseHref, route); - routeTree.insert(fullRoute.replace(URL_PARAMETER_REGEXP, '*'), metadata); + routeTree.insert(fullRoute, metadata); } return { diff --git a/packages/angular/ssr/src/routes/route-tree.ts b/packages/angular/ssr/src/routes/route-tree.ts index 36bdabb027df..85b1279aaee5 100644 --- a/packages/angular/ssr/src/routes/route-tree.ts +++ b/packages/angular/ssr/src/routes/route-tree.ts @@ -131,6 +131,7 @@ export class RouteTree = {}> insert(route: string, metadata: RouteTreeNodeMetadataWithoutRoute & AdditionalMetadata): void { let node = this.root; const segments = this.getPathSegments(route); + const normalizedSegments: string[] = []; for (const segment of segments) { // Replace parameterized segments (e.g., :id) with a wildcard (*) for matching @@ -143,12 +144,13 @@ export class RouteTree = {}> } node = childNode; + normalizedSegments.push(normalizedSegment); } // At the leaf node, store the full route and its associated metadata node.metadata = { ...metadata, - route: segments.join('/'), + route: normalizedSegments.join('/'), }; node.insertionIndex = this.insertionIndexCounter++; diff --git a/packages/angular/ssr/test/routes/route-tree_spec.ts b/packages/angular/ssr/test/routes/route-tree_spec.ts index 30a52c09f4de..fe8097a16c83 100644 --- a/packages/angular/ssr/test/routes/route-tree_spec.ts +++ b/packages/angular/ssr/test/routes/route-tree_spec.ts @@ -30,7 +30,7 @@ describe('RouteTree', () => { expect(routeTreeObj).toEqual([ { redirectTo: '/home-page', route: '/home', renderMode: RenderMode.Server }, { redirectTo: '/about-page', route: '/about', renderMode: RenderMode.Server }, - { route: '/products/:id', renderMode: RenderMode.Server }, + { route: '/products/*', renderMode: RenderMode.Server }, { redirectTo: '/api/details-page', route: '/api/details', renderMode: RenderMode.Server }, ]); @@ -46,7 +46,7 @@ describe('RouteTree', () => { renderMode: RenderMode.Server, }); expect(newRouteTree.match('/products/123')).toEqual({ - route: '/products/:id', + route: '/products/*', renderMode: RenderMode.Server, }); expect(newRouteTree.match('/api/details')).toEqual({ @@ -71,7 +71,7 @@ describe('RouteTree', () => { expect(newRouteTree.match('/shop/categories/electronics/products/123')).toEqual({ redirectTo: '/shop/products', - route: '/shop/categories/:category/products/:id', + route: '/shop/categories/*/products/*', renderMode: RenderMode.Server, }); expect(newRouteTree.match('/shop/cart')).toEqual({ @@ -127,7 +127,7 @@ describe('RouteTree', () => { const routeTreeObj = routeTree.toObject(); expect(routeTreeObj).toEqual([ { route: '/first', renderMode: RenderMode.Server }, - { route: '/:id', renderMode: RenderMode.Server }, + { route: '/*', renderMode: RenderMode.Server }, { route: '/second', renderMode: RenderMode.Server }, ]); @@ -137,11 +137,11 @@ describe('RouteTree', () => { renderMode: RenderMode.Server, }); expect(newRouteTree.match('/second')).toEqual({ - route: '/:id', + route: '/*', renderMode: RenderMode.Server, }); expect(newRouteTree.match('/third')).toEqual({ - route: '/:id', + route: '/*', renderMode: RenderMode.Server, }); }); @@ -217,7 +217,7 @@ describe('RouteTree', () => { it('should handle parameterized segments as wildcards', () => { routeTree.insert('/users/:id', { renderMode: RenderMode.Server }); expect(routeTree.match('/users/123')).toEqual({ - route: '/users/:id', + route: '/users/*', renderMode: RenderMode.Server, }); }); @@ -229,11 +229,11 @@ describe('RouteTree', () => { }); expect(routeTree.match('/shop/categories/electronics')).toEqual({ - route: '/shop/categories/:category', + route: '/shop/categories/*', renderMode: RenderMode.Server, }); expect(routeTree.match('/shop/categories/electronics/products/456')).toEqual({ - route: '/shop/categories/:category/products/:id', + route: '/shop/categories/*/products/*', renderMode: RenderMode.Server, }); }); From 462e73fc27cf7c2838b47c1036d3b4b1d63e2b83 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 25 Nov 2024 14:38:49 +0000 Subject: [PATCH 0027/2162] ci: update perf workflow to the latest version Update the perf workflow to the latest version to allow for uploading results to database --- .github/workflows/perf.yml | 15 +- package.json | 2 +- yarn.lock | 600 +++++++++++++++++++++++++++++++++++-- 3 files changed, 587 insertions(+), 30 deletions(-) diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 13fbce067b37..ad0167d341e2 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -5,7 +5,9 @@ on: branches: - main -permissions: {} +permissions: + contents: 'read' + id-token: 'write' defaults: run: @@ -39,4 +41,13 @@ jobs: uses: angular/dev-infra/github-actions/bazel/setup@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee - name: Install node modules run: yarn install --immutable - - run: yarn ng-dev perf workflows --name ${{ matrix.workflow }} + # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow + # identity federation. This allows us to request short lived credentials on demand, rather than storing + # credentials in secrets long term. More information can be found at: + # https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform + - uses: 'google-github-actions/auth@v2' + with: + project_id: 'internal-200822' + workload_identity_provider: 'projects/823469418460/locations/global/workloadIdentityPools/measurables-tracking/providers/angular' + service_account: 'measures-uploader@internal-200822.iam.gserviceaccount.com' + - run: yarn ng-dev perf workflows --name ${{ matrix.workflow }} --commit-sha ${{github.sha}} diff --git a/package.json b/package.json index 8bd144917ca8..a6814d6e315f 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "@angular/forms": "19.0.0", "@angular/localize": "19.0.0", "@angular/material": "19.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0004779f2460c3b030b056e9f4f2c5e921e11039", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0692d4d0707f3a40f862e761eaf0be3b693326df", "@angular/platform-browser": "19.0.0", "@angular/platform-browser-dynamic": "19.0.0", "@angular/platform-server": "19.0.0", diff --git a/yarn.lock b/yarn.lock index 9df98cff08ed..8d0f4a1f96ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -638,7 +638,7 @@ __metadata: "@angular/forms": "npm:19.0.0" "@angular/localize": "npm:19.0.0" "@angular/material": "npm:19.0.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0004779f2460c3b030b056e9f4f2c5e921e11039" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0692d4d0707f3a40f862e761eaf0be3b693326df" "@angular/platform-browser": "npm:19.0.0" "@angular/platform-browser-dynamic": "npm:19.0.0" "@angular/platform-server": "npm:19.0.0" @@ -850,10 +850,11 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#0004779f2460c3b030b056e9f4f2c5e921e11039": - version: 0.0.0-01c8c16f830d02110c28640aea16f145a7937080 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=0004779f2460c3b030b056e9f4f2c5e921e11039" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#0692d4d0707f3a40f862e761eaf0be3b693326df": + version: 0.0.0-087663a8d219df913630fdf80dea5d99b9ec6d18 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=0692d4d0707f3a40f862e761eaf0be3b693326df" dependencies: + "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" "@types/semver": "npm:^7.3.6" "@types/supports-color": "npm:^8.1.1" @@ -866,7 +867,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/06103a9e62e0f21e2c7784efffb47e9a035a2be017e1c6c6c51f87417bc55fd79ccb7ba9d96a942b04635dbe8aab849355d97a1dd68861587a52ad8d1647ef77 + checksum: 10c0/513f03b8909930f568b93fb04138989f325067d90a88d79cabb1b0bcf6a30935d2445396e831f53995a1912454a9ceb16e4d462fc5735762f1377d95c4f2ed5c languageName: node linkType: hard @@ -2758,6 +2759,106 @@ __metadata: languageName: node linkType: hard +"@google-cloud/common@npm:^5.0.0": + version: 5.0.2 + resolution: "@google-cloud/common@npm:5.0.2" + dependencies: + "@google-cloud/projectify": "npm:^4.0.0" + "@google-cloud/promisify": "npm:^4.0.0" + arrify: "npm:^2.0.1" + duplexify: "npm:^4.1.1" + extend: "npm:^3.0.2" + google-auth-library: "npm:^9.0.0" + html-entities: "npm:^2.5.2" + retry-request: "npm:^7.0.0" + teeny-request: "npm:^9.0.0" + checksum: 10c0/c080fb91a789cb1d336dd91419df85861d00f01a650d9655ae1f0136dd5c2024660fb6b85ccc4f0d018f21e7a46c050001098bf24ecbaf954e46d3fe4f82a72f + languageName: node + linkType: hard + +"@google-cloud/precise-date@npm:^4.0.0": + version: 4.0.0 + resolution: "@google-cloud/precise-date@npm:4.0.0" + checksum: 10c0/8788bec6bb5db3fcc9cf72f346dc7af35d0ad1c9457d40f800e580dc58631568589b6795b48bef88b958b718c81cd326b0ccfe9d0ef9e7d7e85f45c1375e9c14 + languageName: node + linkType: hard + +"@google-cloud/projectify@npm:^4.0.0": + version: 4.0.0 + resolution: "@google-cloud/projectify@npm:4.0.0" + checksum: 10c0/0d0a6ceca76a138973fcb3ad577f209acdbd9d9aed1c645b09f98d5e5a258053dbbe6c1f13e6f85310cc0d9308f5f3a84f8fa4f1a132549a68d86174fb21067f + languageName: node + linkType: hard + +"@google-cloud/promisify@npm:^4.0.0": + version: 4.0.0 + resolution: "@google-cloud/promisify@npm:4.0.0" + checksum: 10c0/4332cbd923d7c6943ecdf46f187f1417c84bb9c801525cd74d719c766bfaad650f7964fb74576345f6537b6d6273a4f2992c8d79ebec6c8b8401b23d626b8dd3 + languageName: node + linkType: hard + +"@google-cloud/spanner@npm:7.16.0": + version: 7.16.0 + resolution: "@google-cloud/spanner@npm:7.16.0" + dependencies: + "@google-cloud/common": "npm:^5.0.0" + "@google-cloud/precise-date": "npm:^4.0.0" + "@google-cloud/projectify": "npm:^4.0.0" + "@google-cloud/promisify": "npm:^4.0.0" + "@grpc/proto-loader": "npm:^0.7.0" + "@opentelemetry/api": "npm:^1.9.0" + "@opentelemetry/context-async-hooks": "npm:^1.26.0" + "@opentelemetry/semantic-conventions": "npm:^1.25.1" + "@types/big.js": "npm:^6.0.0" + "@types/stack-trace": "npm:0.0.33" + arrify: "npm:^2.0.0" + big.js: "npm:^6.0.0" + checkpoint-stream: "npm:^0.1.1" + duplexify: "npm:^4.1.1" + events-intercept: "npm:^2.0.0" + extend: "npm:^3.0.2" + google-auth-library: "npm:^9.0.0" + google-gax: "npm:4.4.1" + grpc-gcp: "npm:^1.0.0" + is: "npm:^3.2.1" + lodash.snakecase: "npm:^4.1.1" + merge-stream: "npm:^2.0.0" + p-queue: "npm:^6.0.2" + protobufjs: "npm:^7.0.0" + retry-request: "npm:^7.0.0" + split-array-stream: "npm:^2.0.0" + stack-trace: "npm:0.0.10" + stream-events: "npm:^1.0.4" + teeny-request: "npm:^9.0.0" + through2: "npm:^4.0.0" + checksum: 10c0/a89355806a5712374fac8a7011e7f501c8955515885d3cdcac1db76098ceef5f9d59ae7eba4592dbdd57364a26ab0e8fa392942c1523e8b6bbb91f7f3dfe6641 + languageName: node + linkType: hard + +"@grpc/grpc-js@npm:^1.10.9, @grpc/grpc-js@npm:^1.7.0": + version: 1.12.2 + resolution: "@grpc/grpc-js@npm:1.12.2" + dependencies: + "@grpc/proto-loader": "npm:^0.7.13" + "@js-sdsl/ordered-map": "npm:^4.4.2" + checksum: 10c0/0370bdec80a5d73f0929c4b7a882af3b0ca85ed1fda361ce3986b705eb2aa9be59bba39a18b99cc05080d5c0819b319a56796dfde248375971ba64efd55fc9d6 + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.7.0, @grpc/proto-loader@npm:^0.7.13": + version: 0.7.13 + resolution: "@grpc/proto-loader@npm:0.7.13" + dependencies: + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.2.5" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 10c0/dc8ed7aa1454c15e224707cc53d84a166b98d76f33606a9f334c7a6fb1aedd3e3614dcd2c2b02a6ffaf140587d19494f93b3a56346c6c2e26bc564f6deddbbf3 + languageName: node + linkType: hard + "@hapi/bourne@npm:^3.0.0": version: 3.0.0 resolution: "@hapi/bourne@npm:3.0.0" @@ -3083,6 +3184,13 @@ __metadata: languageName: node linkType: hard +"@js-sdsl/ordered-map@npm:^4.4.2": + version: 4.4.2 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" + checksum: 10c0/cc7e15dc4acf6d9ef663757279600bab70533d847dcc1ab01332e9e680bd30b77cdf9ad885cc774276f51d98b05a013571c940e5b360985af5eb798dc1a2ee2b + languageName: node + linkType: hard + "@jsonjoy.com/base64@npm:^1.1.1": version: 1.1.2 resolution: "@jsonjoy.com/base64@npm:1.1.2" @@ -3874,6 +3982,29 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 10c0/9aae2fe6e8a3a3eeb6c1fdef78e1939cf05a0f37f8a4fae4d6bf2e09eb1e06f966ece85805626e01ba5fab48072b94f19b835449e58b6d26720ee19a58298add + languageName: node + linkType: hard + +"@opentelemetry/context-async-hooks@npm:^1.26.0": + version: 1.28.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/bfd3b76dce4495d538307fef597c9145949f2b67b9096b1c06c63e14003cdee73fc06fa36bb512eb403f9e625caa4282024ca39367307524e501fcece93611dd + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:^1.25.1": + version: 1.28.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.28.0" + checksum: 10c0/deb8a0f744198071e70fea27143cf7c9f7ecb7e4d7b619488c917834ea09b31543c1c2bcea4ec5f3cf68797f0ef3549609c14e859013d9376400ac1499c2b9cb + languageName: node + linkType: hard + "@parcel/watcher-android-arm64@npm:2.5.0": version: 2.5.0 resolution: "@parcel/watcher-android-arm64@npm:2.5.0" @@ -4831,6 +4962,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + languageName: node + linkType: hard + "@tootallnate/quickjs-emscripten@npm:^0.23.0": version: 0.23.0 resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" @@ -4957,6 +5095,13 @@ __metadata: languageName: node linkType: hard +"@types/big.js@npm:^6.0.0": + version: 6.2.2 + resolution: "@types/big.js@npm:6.2.2" + checksum: 10c0/8f8472dfc1ef61c492e6841e86f8b9b97e5b024136bf7964e582a6a80ba73d4dbfd6cc23ed3b9d8fea69c7f30834fffd1c88e7fb981811f5c6ca608380b5ad67 + languageName: node + linkType: hard + "@types/body-parser@npm:*": version: 1.19.5 resolution: "@types/body-parser@npm:1.19.5" @@ -4988,6 +5133,13 @@ __metadata: languageName: node linkType: hard +"@types/caseless@npm:*": + version: 0.12.5 + resolution: "@types/caseless@npm:0.12.5" + checksum: 10c0/b1f8b8a38ce747b643115d37a40ea824c658bd7050e4b69427a10e9d12d1606ed17a0f6018241c08291cd59f70aeb3c1f3754ad61e45f8dbba708ec72dde7ec8 + languageName: node + linkType: hard + "@types/co-body@npm:^6.1.0": version: 6.1.3 resolution: "@types/co-body@npm:6.1.3" @@ -5073,6 +5225,15 @@ __metadata: languageName: node linkType: hard +"@types/duplexify@npm:*": + version: 3.6.4 + resolution: "@types/duplexify@npm:3.6.4" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/1d7550dcc5fcd79344479b4f688754f397742b126a2fd4c1e84e0d0238ff59b3a55d8fec0a4a98b4f43931140e7ac5f2c7ff4e9acb3dbd3a069b4a363b2de296 + languageName: node + linkType: hard + "@types/eslint-scope@npm:^3.7.7": version: 3.7.7 resolution: "@types/eslint-scope@npm:3.7.7" @@ -5380,6 +5541,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:>=13.7.0": + version: 22.9.3 + resolution: "@types/node@npm:22.9.3" + dependencies: + undici-types: "npm:~6.19.8" + checksum: 10c0/954ec72bf29436ea62425a9563914a9c1e93f97b18194acd51d74d13998a701977547ed2985ed3a0e97211b785436d28377116e5f613bfcf3182d9bd81d784dc + languageName: node + linkType: hard + "@types/node@npm:^10.1.0": version: 10.17.60 resolution: "@types/node@npm:10.17.60" @@ -5467,6 +5637,16 @@ __metadata: languageName: node linkType: hard +"@types/pumpify@npm:^1.4.1": + version: 1.4.4 + resolution: "@types/pumpify@npm:1.4.4" + dependencies: + "@types/duplexify": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/0e24b3b2bf1127286095269dce0a86fe1a86e7217530cbd2447f083def1afb72445402488125b2fe9efe169d5ab144d6027bb670b7944f735312486f87f20451 + languageName: node + linkType: hard + "@types/q@npm:^0.0.32": version: 0.0.32 resolution: "@types/q@npm:0.0.32" @@ -5488,6 +5668,18 @@ __metadata: languageName: node linkType: hard +"@types/request@npm:^2.48.8": + version: 2.48.12 + resolution: "@types/request@npm:2.48.12" + dependencies: + "@types/caseless": "npm:*" + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + form-data: "npm:^2.5.0" + checksum: 10c0/dd3d03d68af95b1e1961dc51efc63023543a91a74afd481dafb441521a31baa58c42f80d3bdd0d5d4633aa777e31b17f7ff7bed5606ad3f5eb175a65148adbce + languageName: node + linkType: hard + "@types/resolve@npm:1.17.1": version: 1.17.1 resolution: "@types/resolve@npm:1.17.1" @@ -5607,6 +5799,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-trace@npm:0.0.33": + version: 0.0.33 + resolution: "@types/stack-trace@npm:0.0.33" + checksum: 10c0/cc8345f042f5de17f960652974d67aac71bf864b748f3efbd10a8c5315c0a7a8a13ab17931c239b9fe6b531a44378347509dc8a97a24dfa1247b93af3f943650 + languageName: node + linkType: hard + "@types/supports-color@npm:^8.1.1": version: 8.1.3 resolution: "@types/supports-color@npm:8.1.3" @@ -5638,6 +5837,13 @@ __metadata: languageName: node linkType: hard +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + "@types/uglify-js@npm:*": version: 3.17.5 resolution: "@types/uglify-js@npm:3.17.5" @@ -7047,6 +7253,13 @@ __metadata: languageName: node linkType: hard +"arrify@npm:^2.0.0, arrify@npm:^2.0.1": + version: 2.0.1 + resolution: "arrify@npm:2.0.1" + checksum: 10c0/3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb + languageName: node + linkType: hard + "asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" @@ -7109,7 +7322,7 @@ __metadata: languageName: node linkType: hard -"async@npm:^2.6.0, async@npm:^2.6.4": +"async@npm:^2.4.0, async@npm:^2.6.0, async@npm:^2.6.4": version: 2.6.4 resolution: "async@npm:2.6.4" dependencies: @@ -7362,6 +7575,20 @@ __metadata: languageName: node linkType: hard +"big.js@npm:^6.0.0": + version: 6.2.2 + resolution: "big.js@npm:6.2.2" + checksum: 10c0/58d204f6a1a92508dc2eb98d964e2cc6dabb37a3d9fc8a1f0b77a34dead7c11e17b173d9a6df2d5a7a0f78d5c80853a9ce6df29852da59ab10b088e981195165 + languageName: node + linkType: hard + +"bignumber.js@npm:^9.0.0": + version: 9.1.2 + resolution: "bignumber.js@npm:9.1.2" + checksum: 10c0/e17786545433f3110b868725c449fa9625366a6e675cd70eb39b60938d6adbd0158cb4b3ad4f306ce817165d37e63f4aa3098ba4110db1d9a3b9f66abfbaf10d + languageName: node + linkType: hard + "bin-links@npm:^5.0.0": version: 5.0.0 resolution: "bin-links@npm:5.0.0" @@ -7810,6 +8037,19 @@ __metadata: languageName: node linkType: hard +"checkpoint-stream@npm:^0.1.1": + version: 0.1.2 + resolution: "checkpoint-stream@npm:0.1.2" + dependencies: + "@types/pumpify": "npm:^1.4.1" + events-intercept: "npm:^2.0.0" + pumpify: "npm:^1.3.5" + split-array-stream: "npm:^1.0.0" + through2: "npm:^2.0.3" + checksum: 10c0/85f644a2343dab1efe571e2c561bda41ae71018eb87050bc8ea55e2ef76b5ab5d936740562f5a28beaa492c20740efa1336d7a69539b4a8d76449323b227fa3e + languageName: node + linkType: hard + "chokidar@npm:4.0.1, chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": version: 4.0.1 resolution: "chokidar@npm:4.0.1" @@ -8956,6 +9196,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^4.0.0, duplexify@npm:^4.1.1": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: "npm:^1.4.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + stream-shift: "npm:^1.0.2" + checksum: 10c0/8a7621ae95c89f3937f982fe36d72ea997836a708471a75bb2a0eecde3330311b1e128a6dad510e0fd64ace0c56bff3484ed2e82af0e465600c82117eadfbda5 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -8991,7 +9243,7 @@ __metadata: languageName: node linkType: hard -"ecdsa-sig-formatter@npm:1.0.11": +"ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" dependencies: @@ -9799,7 +10051,7 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^4.0.0": +"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b @@ -9813,6 +10065,13 @@ __metadata: languageName: node linkType: hard +"events-intercept@npm:^2.0.0": + version: 2.0.0 + resolution: "events-intercept@npm:2.0.0" + checksum: 10c0/b240c515d30db3288b0fd2488325001f7955e58056da116d83d0219dabb39bdd543390ed3bcaf0ae994c0631f11a5245bd43343c6fd8ee42e1907692806861d3 + languageName: node + linkType: hard + "events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -9897,7 +10156,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.0, extend@npm:~3.0.2": +"extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 @@ -10260,6 +10519,18 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^2.5.0": + version: 2.5.2 + resolution: "form-data@npm:2.5.2" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.6" + mime-types: "npm:^2.1.12" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/af7cb13fc8423ff95fd59c62d101c84b5458a73e1e426b0bc459afbf5b93b1e447dc6c225ac31c6df59f36b209904a3f1a10b4eb9e7a17e0fe394019749142cc + languageName: node + linkType: hard + "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" @@ -10443,6 +10714,29 @@ __metadata: languageName: node linkType: hard +"gaxios@npm:^6.0.0, gaxios@npm:^6.1.1": + version: 6.7.1 + resolution: "gaxios@npm:6.7.1" + dependencies: + extend: "npm:^3.0.2" + https-proxy-agent: "npm:^7.0.1" + is-stream: "npm:^2.0.0" + node-fetch: "npm:^2.6.9" + uuid: "npm:^9.0.1" + checksum: 10c0/53e92088470661c5bc493a1de29d05aff58b1f0009ec5e7903f730f892c3642a93e264e61904383741ccbab1ce6e519f12a985bba91e13527678b32ee6d7d3fd + languageName: node + linkType: hard + +"gcp-metadata@npm:^6.1.0": + version: 6.1.0 + resolution: "gcp-metadata@npm:6.1.0" + dependencies: + gaxios: "npm:^6.0.0" + json-bigint: "npm:^1.0.0" + checksum: 10c0/0f84f8c0b974e79d0da0f3063023486e53d7982ce86c4b5871e4ee3b1fc4e7f76fcc05f6342aa0ded5023f1a499c21ab97743a498b31f3aa299905226d1f66ab + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -10655,6 +10949,40 @@ __metadata: languageName: node linkType: hard +"google-auth-library@npm:^9.0.0, google-auth-library@npm:^9.3.0": + version: 9.15.0 + resolution: "google-auth-library@npm:9.15.0" + dependencies: + base64-js: "npm:^1.3.0" + ecdsa-sig-formatter: "npm:^1.0.11" + gaxios: "npm:^6.1.1" + gcp-metadata: "npm:^6.1.0" + gtoken: "npm:^7.0.0" + jws: "npm:^4.0.0" + checksum: 10c0/f5a9a46e939147b181bac9b254f11dd8c2d05c15a65c9d3f2180252bef21c12af37d9893bc3caacafd226d6531a960535dbb5222ef869143f393c6a97639cc06 + languageName: node + linkType: hard + +"google-gax@npm:4.4.1": + version: 4.4.1 + resolution: "google-gax@npm:4.4.1" + dependencies: + "@grpc/grpc-js": "npm:^1.10.9" + "@grpc/proto-loader": "npm:^0.7.13" + "@types/long": "npm:^4.0.0" + abort-controller: "npm:^3.0.0" + duplexify: "npm:^4.0.0" + google-auth-library: "npm:^9.3.0" + node-fetch: "npm:^2.7.0" + object-hash: "npm:^3.0.0" + proto3-json-serializer: "npm:^2.0.2" + protobufjs: "npm:^7.3.2" + retry-request: "npm:^7.0.0" + uuid: "npm:^9.0.1" + checksum: 10c0/ff27a5f045b84c50c7c539f45d36c4373c0cc58a39a46fb77976f456c4029238b8cc08f83368e4491c381a67774bc3d42534b68e8eda487c87efc22e84edf6d3 + languageName: node + linkType: hard + "google-protobuf@npm:^3.6.1": version: 3.21.4 resolution: "google-protobuf@npm:3.21.4" @@ -10685,6 +11013,25 @@ __metadata: languageName: node linkType: hard +"grpc-gcp@npm:^1.0.0": + version: 1.0.1 + resolution: "grpc-gcp@npm:1.0.1" + dependencies: + "@grpc/grpc-js": "npm:^1.7.0" + checksum: 10c0/5d5a5db9a0d215791227a53fd1461e7f09471f86ab0136dcfc760a63ccb4665bf0360c55c8688048bbddce7e76306434046d5a776be39faaa2bee147a5f5fdee + languageName: node + linkType: hard + +"gtoken@npm:^7.0.0": + version: 7.1.0 + resolution: "gtoken@npm:7.1.0" + dependencies: + gaxios: "npm:^6.0.0" + jws: "npm:^4.0.0" + checksum: 10c0/0a3dcacb1a3c4578abe1ee01c7d0bf20bffe8ded3ee73fc58885d53c00f6eb43b4e1372ff179f0da3ed5cfebd5b7c6ab8ae2776f1787e90d943691b4fe57c716 + languageName: node + linkType: hard + "gunzip-maybe@npm:^1.4.2": version: 1.4.2 resolution: "gunzip-maybe@npm:1.4.2" @@ -10828,7 +11175,7 @@ __metadata: languageName: node linkType: hard -"html-entities@npm:^2.4.0": +"html-entities@npm:^2.4.0, html-entities@npm:^2.5.2": version: 2.5.2 resolution: "html-entities@npm:2.5.2" checksum: 10c0/f20ffb4326606245c439c231de40a7c560607f639bf40ffbfb36b4c70729fd95d7964209045f1a4e62fe17f2364cef3d6e49b02ea09016f207fde51c2211e481 @@ -10923,6 +11270,17 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -11012,7 +11370,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5.0.1": +"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -11660,6 +12018,13 @@ __metadata: languageName: node linkType: hard +"is-stream-ended@npm:^0.1.0, is-stream-ended@npm:^0.1.4": + version: 0.1.4 + resolution: "is-stream-ended@npm:0.1.4" + checksum: 10c0/fa4136d91d44f54aabeedd7b8072e03e0e4a6dac4cd47000152781ccad6451787e39ae5db15e7400a261e4d8ef976713237d49c773856548dbf171cc82893afc + languageName: node + linkType: hard + "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -11763,6 +12128,13 @@ __metadata: languageName: node linkType: hard +"is@npm:^3.2.1": + version: 3.3.0 + resolution: "is@npm:3.3.0" + checksum: 10c0/d2474beed01c7abba47926d51989fbf6f1c154e01ab7f1052af7e2327d160fda12e52967c96440fdb962489bdd5ecce6a7102cbf98ea43c951b0faa3c21d104a + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -12044,6 +12416,15 @@ __metadata: languageName: node linkType: hard +"json-bigint@npm:^1.0.0": + version: 1.0.0 + resolution: "json-bigint@npm:1.0.0" + dependencies: + bignumber.js: "npm:^9.0.0" + checksum: 10c0/e3f34e43be3284b573ea150a3890c92f06d54d8ded72894556357946aeed9877fd795f62f37fe16509af189fd314ab1104d0fd0f163746ad231b9f378f5b33f4 + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -12257,6 +12638,17 @@ __metadata: languageName: node linkType: hard +"jwa@npm:^2.0.0": + version: 2.0.0 + resolution: "jwa@npm:2.0.0" + dependencies: + buffer-equal-constant-time: "npm:1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/6baab823b93c038ba1d2a9e531984dcadbc04e9eb98d171f4901b7a40d2be15961a359335de1671d78cb6d987f07cbe5d350d8143255977a889160c4d90fcc3c + languageName: node + linkType: hard + "jws@npm:^3.2.2": version: 3.2.2 resolution: "jws@npm:3.2.2" @@ -12267,6 +12659,16 @@ __metadata: languageName: node linkType: hard +"jws@npm:^4.0.0": + version: 4.0.0 + resolution: "jws@npm:4.0.0" + dependencies: + jwa: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/f1ca77ea5451e8dc5ee219cb7053b8a4f1254a79cb22417a2e1043c1eb8a569ae118c68f24d72a589e8a3dd1824697f47d6bd4fb4bebb93a3bdf53545e721661 + languageName: node + linkType: hard + "karma-chrome-launcher@npm:~3.2.0": version: 3.2.0 resolution: "karma-chrome-launcher@npm:3.2.0" @@ -12938,6 +13340,13 @@ __metadata: languageName: node linkType: hard +"lodash.snakecase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.snakecase@npm:4.1.1" + checksum: 10c0/f0b3f2497eb20eea1a1cfc22d645ecaeb78ac14593eb0a40057977606d2f35f7aaff0913a06553c783b535aafc55b718f523f9eb78f8d5293f492af41002eaf9 + languageName: node + linkType: hard + "lodash@npm:4, lodash@npm:4.17.21, lodash@npm:^4.17.10, lodash@npm:^4.17.14, lodash@npm:^4.17.21, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" @@ -13000,6 +13409,13 @@ __metadata: languageName: node linkType: hard +"long@npm:^5.0.0": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 10c0/6a0da658f5ef683b90330b1af76f06790c623e148222da9d75b60e266bbf88f803232dd21464575681638894a84091616e7f89557aa087fd14116c0f4e0e43d9 + languageName: node + linkType: hard + "lowdb@npm:1.0.0": version: 1.0.0 resolution: "lowdb@npm:1.0.0" @@ -13766,7 +14182,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.12": +"node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -14083,6 +14499,13 @@ __metadata: languageName: node linkType: hard +"object-hash@npm:^3.0.0": + version: 3.0.0 + resolution: "object-hash@npm:3.0.0" + checksum: 10c0/a06844537107b960c1c8b96cd2ac8592a265186bfa0f6ccafe0d34eabdb526f6fa81da1f37c43df7ed13b12a4ae3457a16071603bcd39d8beddb5f08c37b0f47 + languageName: node + linkType: hard + "object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": version: 1.13.3 resolution: "object-inspect@npm:1.13.3" @@ -14379,6 +14802,16 @@ __metadata: languageName: node linkType: hard +"p-queue@npm:^6.0.2": + version: 6.6.2 + resolution: "p-queue@npm:6.6.2" + dependencies: + eventemitter3: "npm:^4.0.4" + p-timeout: "npm:^3.2.0" + checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e + languageName: node + linkType: hard + "p-retry@npm:^6.2.0": version: 6.2.1 resolution: "p-retry@npm:6.2.1" @@ -14390,7 +14823,7 @@ __metadata: languageName: node linkType: hard -"p-timeout@npm:^3.1.0": +"p-timeout@npm:^3.1.0, p-timeout@npm:^3.2.0": version: 3.2.0 resolution: "p-timeout@npm:3.2.0" dependencies: @@ -15083,6 +15516,15 @@ __metadata: languageName: node linkType: hard +"proto3-json-serializer@npm:^2.0.2": + version: 2.0.2 + resolution: "proto3-json-serializer@npm:2.0.2" + dependencies: + protobufjs: "npm:^7.2.5" + checksum: 10c0/802e6a34f6ebf07007b186768f1985494bdfa6dd92e14c89d10cda6c4cc14df707ad59b75054a17a582f481db12c7663d25f91f505d2a85d7d4174eb5d798628 + languageName: node + linkType: hard + "protobufjs@npm:6.8.8": version: 6.8.8 resolution: "protobufjs@npm:6.8.8" @@ -15107,6 +15549,26 @@ __metadata: languageName: node linkType: hard +"protobufjs@npm:^7.0.0, protobufjs@npm:^7.2.5, protobufjs@npm:^7.3.2": + version: 7.4.0 + resolution: "protobufjs@npm:7.4.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 10c0/a5460a63fe596523b9a067cbce39a6b310d1a71750fda261f076535662aada97c24450e18c5bc98a27784f70500615904ff1227e1742183509f0db4fdede669b + languageName: node + linkType: hard + "protractor@npm:^7.0.0, protractor@npm:~7.0.0": version: 7.0.0 resolution: "protractor@npm:7.0.0" @@ -15202,7 +15664,7 @@ __metadata: languageName: node linkType: hard -"pumpify@npm:^1.3.3": +"pumpify@npm:^1.3.3, pumpify@npm:^1.3.5": version: 1.5.1 resolution: "pumpify@npm:1.5.1" dependencies: @@ -15430,6 +15892,17 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:3, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + "readable-stream@npm:4.5.2, readable-stream@npm:^4.0.0": version: 4.5.2 resolution: "readable-stream@npm:4.5.2" @@ -15458,17 +15931,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - "readdirp@npm:^4.0.1": version: 4.0.2 resolution: "readdirp@npm:4.0.2" @@ -15740,6 +16202,17 @@ __metadata: languageName: node linkType: hard +"retry-request@npm:^7.0.0": + version: 7.0.2 + resolution: "retry-request@npm:7.0.2" + dependencies: + "@types/request": "npm:^2.48.8" + extend: "npm:^3.0.2" + teeny-request: "npm:^9.0.0" + checksum: 10c0/c79936695a43db1bc82a7bad348a1e0be1c363799be2e1fa87b8c3aeb5dabf0ccb023b811aa5000c000ee73e196b88febff7d3e22cbb63a77175228514256155 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -16079,7 +16552,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -16871,6 +17344,25 @@ __metadata: languageName: node linkType: hard +"split-array-stream@npm:^1.0.0": + version: 1.0.3 + resolution: "split-array-stream@npm:1.0.3" + dependencies: + async: "npm:^2.4.0" + is-stream-ended: "npm:^0.1.0" + checksum: 10c0/aaa278261bbf65b6e3fb4063b56bbc228a96f911714bd16592cc23c786dba8d8a8f6c266a8dc3b9af0c1c7bd52e70cdd6e353180f5dd9e5257fb76f30d92a854 + languageName: node + linkType: hard + +"split-array-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "split-array-stream@npm:2.0.0" + dependencies: + is-stream-ended: "npm:^0.1.4" + checksum: 10c0/c432f4e79f04aa7e2210b3af17b52afc3c2072cd7f34e80ca5440d1d911e82c445c141aa181509937d22e44e6634249bb066159dd36344fff2ebdd004cb307be + languageName: node + linkType: hard + "split2@npm:^4.0.0": version: 4.2.0 resolution: "split2@npm:4.2.0" @@ -16931,6 +17423,13 @@ __metadata: languageName: node linkType: hard +"stack-trace@npm:0.0.10": + version: 0.0.10 + resolution: "stack-trace@npm:0.0.10" + checksum: 10c0/9ff3dabfad4049b635a85456f927a075c9d0c210e3ea336412d18220b2a86cbb9b13ec46d6c37b70a302a4ea4d49e30e5d4944dd60ae784073f1cde778ac8f4b + languageName: node + linkType: hard + "statuses@npm:2.0.1, statuses@npm:^2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -16961,7 +17460,16 @@ __metadata: languageName: node linkType: hard -"stream-shift@npm:^1.0.0": +"stream-events@npm:^1.0.4, stream-events@npm:^1.0.5": + version: 1.0.5 + resolution: "stream-events@npm:1.0.5" + dependencies: + stubs: "npm:^3.0.0" + checksum: 10c0/5d235a5799a483e94ea8829526fe9d95d76460032d5e78555fe4f801949ac6a27ea2212e4e0827c55f78726b3242701768adf2d33789465f51b31ed8ebd6b086 + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0, stream-shift@npm:^1.0.2": version: 1.0.3 resolution: "stream-shift@npm:1.0.3" checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b @@ -17146,6 +17654,13 @@ __metadata: languageName: node linkType: hard +"stubs@npm:^3.0.0": + version: 3.0.0 + resolution: "stubs@npm:3.0.0" + checksum: 10c0/841a4ab8c76795d34aefe129185763b55fbf2e4693208215627caea4dd62e1299423dcd96f708d3128e3dfa0e669bae2cb912e6e906d7d81eaf6493196570923 + languageName: node + linkType: hard + "supports-color@npm:9.4.0, supports-color@npm:^9.4.0": version: 9.4.0 resolution: "supports-color@npm:9.4.0" @@ -17290,6 +17805,19 @@ __metadata: languageName: node linkType: hard +"teeny-request@npm:^9.0.0": + version: 9.0.0 + resolution: "teeny-request@npm:9.0.0" + dependencies: + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + node-fetch: "npm:^2.6.9" + stream-events: "npm:^1.0.5" + uuid: "npm:^9.0.0" + checksum: 10c0/1c51a284075b57b7b7f970fc8d855d611912f0e485aa1d1dfda3c0be3f2df392e4ce83b1b39877134041abb7c255f3777f175b27323ef5bf008839e42a1958bc + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^5.3.10": version: 5.3.10 resolution: "terser-webpack-plugin@npm:5.3.10" @@ -17379,6 +17907,15 @@ __metadata: languageName: node linkType: hard +"through2@npm:^4.0.0": + version: 4.0.2 + resolution: "through2@npm:4.0.2" + dependencies: + readable-stream: "npm:3" + checksum: 10c0/3741564ae99990a4a79097fe7a4152c22348adc4faf2df9199a07a66c81ed2011da39f631e479fdc56483996a9d34a037ad64e76d79f18c782ab178ea9b6778c + languageName: node + linkType: hard + "through@npm:>=2.2.7 <3, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" @@ -18121,6 +18658,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^9.0.0, uuid@npm:^9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" From e01d329902f873bcfb930a71a25c95dc2982d961 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 25 Nov 2024 13:26:04 +0000 Subject: [PATCH 0028/2162] build: update angular --- .github/workflows/perf.yml | 6 ++-- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index ad0167d341e2..3952c0135a16 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -21,7 +21,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable - id: workflows @@ -36,9 +36,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@53fb7c37cf14343f14ed79e2fefbbb2489ead4ee + uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 - name: Install node modules run: yarn install --immutable # We utilize the google-github-actions/auth action to allow us to get an active credential using workflow diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 8f0abf342f97..e53ae60f3199 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#f3f8c607674a0c25cd4af1d38ca07c293156d654", - "@angular/cdk": "github:angular/cdk-builds#c1c5e13c61a5839decdfcf5ce8769288232bfd87", - "@angular/common": "github:angular/common-builds#1b1ed7f7670dd4ae7ccd1f6e4569496087d60e1a", - "@angular/compiler": "github:angular/compiler-builds#7d29993ebccf78eadaf922f2eee78d9a108d502e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#40531fc5c8417fcafc21a0a5c115941e6e4603d9", - "@angular/core": "github:angular/core-builds#a6ac347fed3b6c4721d0a07ee6af5cd3f55a54fa", - "@angular/forms": "github:angular/forms-builds#d351adcb90fa79ed5cca5829425cb5a4dda994be", - "@angular/language-service": "github:angular/language-service-builds#6438594bc1141018fe60f2589ed604f1a1c67907", - "@angular/localize": "github:angular/localize-builds#a3e81d587fd530200773e863a5eb097b0f109cc6", - "@angular/material": "github:angular/material-builds#117df7adeee6cb79559906a57613abdb6fba50a9", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#eb82ec7de643cf7cc49c1da813fd2cd53d839913", - "@angular/platform-browser": "github:angular/platform-browser-builds#2038ae51cf7f19a73f031c40584c0c5c5cf16883", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#25c0c55f56a646a4c33de0c8676b0cece05f8f00", - "@angular/platform-server": "github:angular/platform-server-builds#0e7e575680edf03164d6cf0ba0d48cf32b706405", - "@angular/router": "github:angular/router-builds#caf7868721bc8ca9720e5387dff978ffd2359e6b", - "@angular/service-worker": "github:angular/service-worker-builds#0a64f6e2b19b930acd7dcc8940e914e2bb3dbd1e" + "@angular/animations": "github:angular/animations-builds#d556dfe0934dbe15b2d40aa928057ed84f6c1dab", + "@angular/cdk": "github:angular/cdk-builds#07ce63c9e73f7a3c1c7399991040ff85b747aed7", + "@angular/common": "github:angular/common-builds#b9143f94f42c64a2549277074866efbf7b8ea88a", + "@angular/compiler": "github:angular/compiler-builds#000b84adcdbd4bd0fb5aaa823dc57ba3f6a157df", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#5be3e2821b17a8d9731d0579d4931be3cafcd0fa", + "@angular/core": "github:angular/core-builds#ba72f958fdccb05c26383409101f926443df7d86", + "@angular/forms": "github:angular/forms-builds#2b45b91d826751fe825d492f638668d1a87da976", + "@angular/language-service": "github:angular/language-service-builds#cf7edcd59f99947f9f9f48bafd82652254150fd8", + "@angular/localize": "github:angular/localize-builds#a26d5a58cde2dee97212d3acb3e1d12ce34f90fe", + "@angular/material": "github:angular/material-builds#d2a89e777060e95e7dac48ab977d83706c0ea3fc", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9e4cbd45909675403dcf6ea72395bd32cce04e3f", + "@angular/platform-browser": "github:angular/platform-browser-builds#61c057963b4bf2b62b58dc1072262710a9ef089a", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a4bbc7c764fed319c2f3b49152973d1ba2580a9a", + "@angular/platform-server": "github:angular/platform-server-builds#17a92c7b3a0304448fe565ad129e7b61d286d6c7", + "@angular/router": "github:angular/router-builds#43ad1f93ded4d4851ed9fe5aa5a8ffffb27045f1", + "@angular/service-worker": "github:angular/service-worker-builds#2e68502cdfb84bca8ad2539d14b401e7f41d75a3" } } From 7ff933423c2c55be0a4be7d5c805a57698f576d3 Mon Sep 17 00:00:00 2001 From: Sheik Althaf Date: Sat, 23 Nov 2024 13:53:09 +0530 Subject: [PATCH 0029/2162] refactor(@angular/ssr): use appRef.whenStable instead of util function from angular core using application whenStable function instead of custom util function from angular core. --- packages/angular/ssr/src/routes/ng-routes.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index bf74c60112a4..8ac0561af294 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -7,14 +7,7 @@ */ import { APP_BASE_HREF, PlatformLocation } from '@angular/common'; -import { - ApplicationRef, - Compiler, - Injector, - runInInjectionContext, - ɵwhenStable as whenStable, - ɵConsole, -} from '@angular/core'; +import { ApplicationRef, Compiler, Injector, runInInjectionContext, ɵConsole } from '@angular/core'; import { INITIAL_CONFIG, platformServer } from '@angular/platform-server'; import { Route, Router, ɵloadChildren as loadChildrenHelper } from '@angular/router'; import { ServerAssets } from '../assets'; @@ -432,7 +425,7 @@ export async function getRoutesFromAngularRouterConfig( } // Wait until the application is stable. - await whenStable(applicationRef); + await applicationRef.whenStable(); const injector = applicationRef.injector; const router = injector.get(Router); From bccdf776fb01184be3aac2a221f6f38faede0950 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 25 Nov 2024 08:31:44 +0000 Subject: [PATCH 0030/2162] build: lock file maintenance --- yarn.lock | 825 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 425 insertions(+), 400 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8d0f4a1f96ad..dfba4c0b04c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3336,7 +3336,18 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor@npm:7.47.11, @microsoft/api-extractor@npm:^7.24.2": +"@microsoft/api-extractor-model@npm:7.30.0": + version: 7.30.0 + resolution: "@microsoft/api-extractor-model@npm:7.30.0" + dependencies: + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.0" + checksum: 10c0/845ef107a88de9918e23a22cda95597401751512672c832d6d8a4cc63134e2415ee960d7d4ba7409d1a81569bc1d40f8dbbda76e2655f743a3e7c0595f07c118 + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:7.47.11": version: 7.47.11 resolution: "@microsoft/api-extractor@npm:7.47.11" dependencies: @@ -3359,22 +3370,45 @@ __metadata: languageName: node linkType: hard -"@microsoft/tsdoc-config@npm:~0.17.0": - version: 0.17.0 - resolution: "@microsoft/tsdoc-config@npm:0.17.0" +"@microsoft/api-extractor@npm:^7.24.2": + version: 7.48.0 + resolution: "@microsoft/api-extractor@npm:7.48.0" + dependencies: + "@microsoft/api-extractor-model": "npm:7.30.0" + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.0" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.14.3" + "@rushstack/ts-command-line": "npm:4.23.1" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.4.2" + bin: + api-extractor: bin/api-extractor + checksum: 10c0/cc7e582c8b98156033064cb0363d40f4f9bd3bae57506358ce878deefa15655e93502f908e6d697356f3a50207787a874de56c6a357e2964adaebada4d4898cc + languageName: node + linkType: hard + +"@microsoft/tsdoc-config@npm:~0.17.0, @microsoft/tsdoc-config@npm:~0.17.1": + version: 0.17.1 + resolution: "@microsoft/tsdoc-config@npm:0.17.1" dependencies: - "@microsoft/tsdoc": "npm:0.15.0" + "@microsoft/tsdoc": "npm:0.15.1" ajv: "npm:~8.12.0" jju: "npm:~1.4.0" resolve: "npm:~1.22.2" - checksum: 10c0/9aa51b5b0fa93ad5c6a40ed1acf1f25c625b616efe29f2e5fa22ee9bddea12a4a39c833726e11ab592f20cfc9b8c3865978864dd02711d457fa971df3c091847 + checksum: 10c0/a686355796f492f27af17e2a17d615221309caf4d9f9047a5a8f17f8625c467c4c81e2a7923ddafd71b892631d5e5013c4b8cc49c5867d3cc1d260fd90c1413d languageName: node linkType: hard -"@microsoft/tsdoc@npm:0.15.0, @microsoft/tsdoc@npm:~0.15.0": - version: 0.15.0 - resolution: "@microsoft/tsdoc@npm:0.15.0" - checksum: 10c0/6beaf6e01ff54daeba69862cb3d27e03bbabfe299d23d0fade885f5b29bf98af01cecc746d23875fe60ba89514e3b630b71140b1b18d37301096f7a1e35451aa +"@microsoft/tsdoc@npm:0.15.1, @microsoft/tsdoc@npm:~0.15.0, @microsoft/tsdoc@npm:~0.15.1": + version: 0.15.1 + resolution: "@microsoft/tsdoc@npm:0.15.1" + checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c languageName: node linkType: hard @@ -3767,14 +3801,14 @@ __metadata: linkType: hard "@npmcli/map-workspaces@npm:^4.0.1": - version: 4.0.1 - resolution: "@npmcli/map-workspaces@npm:4.0.1" + version: 4.0.2 + resolution: "@npmcli/map-workspaces@npm:4.0.2" dependencies: "@npmcli/name-from-folder": "npm:^3.0.0" "@npmcli/package-json": "npm:^6.0.0" glob: "npm:^10.2.2" minimatch: "npm:^9.0.0" - checksum: 10c0/adcd53b79a4df239938b25fecdfdc79aaba1cdd470287c582881f13da1216634015d26b3d037af90f59945b7a577a46da3bf8b94d06fcc7992aafb4c1f0d41c8 + checksum: 10c0/26af5e5271c52d0986228583218fa04fcea2e0e1052f0c50f5c7941bbfb7be487cc98c2e6732f0a3f515f6d9228d7dc04414f0471f40a33b748e2b4cbb350b86 languageName: node linkType: hard @@ -3820,7 +3854,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^8.0.0, @npmcli/promise-spawn@npm:^8.0.1": +"@npmcli/promise-spawn@npm:^8.0.0, @npmcli/promise-spawn@npm:^8.0.2": version: 8.0.2 resolution: "@npmcli/promise-spawn@npm:8.0.2" dependencies: @@ -4363,16 +4397,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.2" +"@rollup/rollup-android-arm-eabi@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.3" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.3" +"@rollup/rollup-android-arm-eabi@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -4384,16 +4418,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-android-arm64@npm:4.27.2" +"@rollup/rollup-android-arm64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-android-arm64@npm:4.27.3" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-android-arm64@npm:4.27.3" +"@rollup/rollup-android-arm64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-android-arm64@npm:4.27.4" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -4405,16 +4439,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.2" +"@rollup/rollup-darwin-arm64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.27.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.3" +"@rollup/rollup-darwin-arm64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -4426,16 +4460,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.2" +"@rollup/rollup-darwin-x64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.27.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.3" +"@rollup/rollup-darwin-x64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -4447,16 +4481,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.2" +"@rollup/rollup-freebsd-arm64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.3" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.3" +"@rollup/rollup-freebsd-arm64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -4468,16 +4502,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.2" +"@rollup/rollup-freebsd-x64@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-freebsd-x64@npm:4.27.3" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.3" +"@rollup/rollup-freebsd-x64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -4489,16 +4523,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.2" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard @@ -4510,16 +4544,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.2" +"@rollup/rollup-linux-arm-musleabihf@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.3" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.3" +"@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard @@ -4531,16 +4565,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.2" +"@rollup/rollup-linux-arm64-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.3" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.3" +"@rollup/rollup-linux-arm64-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -4552,16 +4586,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.2" +"@rollup/rollup-linux-arm64-musl@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.3" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.3" +"@rollup/rollup-linux-arm64-musl@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -4573,16 +4607,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.2" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard @@ -4594,16 +4628,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.2" +"@rollup/rollup-linux-riscv64-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.3" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.3" +"@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard @@ -4615,16 +4649,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.2" +"@rollup/rollup-linux-s390x-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.3" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.3" +"@rollup/rollup-linux-s390x-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -4636,16 +4670,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.2" +"@rollup/rollup-linux-x64-gnu@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.3" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.3" +"@rollup/rollup-linux-x64-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -4657,16 +4691,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.2" +"@rollup/rollup-linux-x64-musl@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.3" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.3" +"@rollup/rollup-linux-x64-musl@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -4678,16 +4712,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.2" +"@rollup/rollup-win32-arm64-msvc@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.3" +"@rollup/rollup-win32-arm64-msvc@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -4699,16 +4733,16 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.2" +"@rollup/rollup-win32-ia32-msvc@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.3" +"@rollup/rollup-win32-ia32-msvc@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -4720,23 +4754,23 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.2": - version: 4.27.2 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.2" +"@rollup/rollup-win32-x64-msvc@npm:4.27.3": + version: 4.27.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.3" +"@rollup/rollup-win32-x64-msvc@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@rollup/wasm-node@npm:^4.24.0": - version: 4.27.2 - resolution: "@rollup/wasm-node@npm:4.27.2" + version: 4.27.4 + resolution: "@rollup/wasm-node@npm:4.27.4" dependencies: "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" @@ -4745,7 +4779,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/c917e50fc47b1965949b1048f96130bab36d8bb3816cdafbed42d0b2d96452a80fb748b0f99969d179ce86a431c599f693e9455c04e46bba735cc74d4d72a228 + checksum: 10c0/a37111e809950aee3f5a4c314896f0de9c2325d1574640c0a0c51a7baecfd4bda77442dadefca3d015fff35ee8f9b1928231d48ee7697f47ed0a3bb0b2e012d3 languageName: node linkType: hard @@ -4756,6 +4790,27 @@ __metadata: languageName: node linkType: hard +"@rushstack/node-core-library@npm:5.10.0": + version: 5.10.0 + resolution: "@rushstack/node-core-library@npm:5.10.0" + dependencies: + ajv: "npm:~8.13.0" + ajv-draft-04: "npm:~1.0.0" + ajv-formats: "npm:~3.0.1" + fs-extra: "npm:~7.0.1" + import-lazy: "npm:~4.0.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/ef379432f1aeea1b19047a3e347e90b03e04331012e5df9cc8233fd6400bdcf801ed4e50ab3e36c211cd3266bbe4c3224205645b5909872a1f29a04a8d8ff3fd + languageName: node + linkType: hard + "@rushstack/node-core-library@npm:5.9.0": version: 5.9.0 resolution: "@rushstack/node-core-library@npm:5.9.0" @@ -4802,6 +4857,21 @@ __metadata: languageName: node linkType: hard +"@rushstack/terminal@npm:0.14.3": + version: 0.14.3 + resolution: "@rushstack/terminal@npm:0.14.3" + dependencies: + "@rushstack/node-core-library": "npm:5.10.0" + supports-color: "npm:~8.1.1" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/0eba093d22c6a4d43b3ed9088ee8c354b63f5f28c059f5872251009231bf521ef1a415d33fed0a6572f52a450264de7d73313b0a41c65ab3b5e8c7baf5a82c1e + languageName: node + linkType: hard + "@rushstack/ts-command-line@npm:4.23.0": version: 4.23.0 resolution: "@rushstack/ts-command-line@npm:4.23.0" @@ -4814,6 +4884,18 @@ __metadata: languageName: node linkType: hard +"@rushstack/ts-command-line@npm:4.23.1": + version: 4.23.1 + resolution: "@rushstack/ts-command-line@npm:4.23.1" + dependencies: + "@rushstack/terminal": "npm:0.14.3" + "@types/argparse": "npm:1.0.38" + argparse: "npm:~1.0.9" + string-argv: "npm:~0.3.1" + checksum: 10c0/dc69f502cd3ffbce190e5d6a9a1b85054680d3622933aecd9ef0e81de0aeabb44adcf193586b305733950afa6c36a84a9bacf4382adafd42ba48cb0f003687e7 + languageName: node + linkType: hard + "@schematics/angular@npm:0.0.0-PLACEHOLDER, @schematics/angular@workspace:packages/schematics/angular": version: 0.0.0-use.local resolution: "@schematics/angular@workspace:packages/schematics/angular" @@ -4824,15 +4906,6 @@ __metadata: languageName: unknown linkType: soft -"@sigstore/bundle@npm:^2.3.2": - version: 2.3.2 - resolution: "@sigstore/bundle@npm:2.3.2" - dependencies: - "@sigstore/protobuf-specs": "npm:^0.3.2" - checksum: 10c0/872a95928236bd9950a2ecc66af1c60a82f6b482a62a20d0f817392d568a60739a2432cad70449ac01e44e9eaf85822d6d9ebc6ade6cb3e79a7d62226622eb5d - languageName: node - linkType: hard - "@sigstore/bundle@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/bundle@npm:3.0.0" @@ -4842,13 +4915,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/core@npm:^1.0.0, @sigstore/core@npm:^1.1.0": - version: 1.1.0 - resolution: "@sigstore/core@npm:1.1.0" - checksum: 10c0/3b3420c1bd17de0371e1ac7c8f07a2cbcd24d6b49ace5bbf2b63f559ee08c4a80622a4d1c0ae42f2c9872166e9cb111f33f78bff763d47e5ef1efc62b8e457ea - languageName: node - linkType: hard - "@sigstore/core@npm:^2.0.0": version: 2.0.0 resolution: "@sigstore/core@npm:2.0.0" @@ -4863,20 +4929,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/sign@npm:^2.3.2": - version: 2.3.2 - resolution: "@sigstore/sign@npm:2.3.2" - dependencies: - "@sigstore/bundle": "npm:^2.3.2" - "@sigstore/core": "npm:^1.0.0" - "@sigstore/protobuf-specs": "npm:^0.3.2" - make-fetch-happen: "npm:^13.0.1" - proc-log: "npm:^4.2.0" - promise-retry: "npm:^2.0.1" - checksum: 10c0/a1e7908f3e4898f04db4d713fa10ddb3ae4f851592c9b554f1269073211e1417528b5088ecee60f27039fde5a5426ae573481d77cfd7e4395d2a0ddfcf5f365f - languageName: node - linkType: hard - "@sigstore/sign@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/sign@npm:3.0.0" @@ -4891,16 +4943,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/tuf@npm:^2.3.4": - version: 2.3.4 - resolution: "@sigstore/tuf@npm:2.3.4" - dependencies: - "@sigstore/protobuf-specs": "npm:^0.3.2" - tuf-js: "npm:^2.2.1" - checksum: 10c0/97839882d787196517933df5505fae4634975807cc7adcd1783c7840c2a9729efb83ada47556ec326d544b9cb0d1851af990dc46eebb5fe7ea17bf7ce1fc0b8c - languageName: node - linkType: hard - "@sigstore/tuf@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/tuf@npm:3.0.0" @@ -4911,17 +4953,6 @@ __metadata: languageName: node linkType: hard -"@sigstore/verify@npm:^1.2.1": - version: 1.2.1 - resolution: "@sigstore/verify@npm:1.2.1" - dependencies: - "@sigstore/bundle": "npm:^2.3.2" - "@sigstore/core": "npm:^1.1.0" - "@sigstore/protobuf-specs": "npm:^0.3.2" - checksum: 10c0/af06580a8d5357c31259da1ac7323137054e0ac41e933278d95a4bc409a4463620125cb4c00b502f6bc32fdd68c2293019391b0d31ed921ee3852a9e84358628 - languageName: node - linkType: hard - "@sigstore/verify@npm:^2.0.0": version: 2.0.0 resolution: "@sigstore/verify@npm:2.0.0" @@ -4948,17 +4979,17 @@ __metadata: linkType: hard "@stylistic/eslint-plugin@npm:^2.8.0": - version: 2.10.1 - resolution: "@stylistic/eslint-plugin@npm:2.10.1" + version: 2.11.0 + resolution: "@stylistic/eslint-plugin@npm:2.11.0" dependencies: - "@typescript-eslint/utils": "npm:^8.12.2" + "@typescript-eslint/utils": "npm:^8.13.0" eslint-visitor-keys: "npm:^4.2.0" espree: "npm:^10.3.0" estraverse: "npm:^5.3.0" picomatch: "npm:^4.0.2" peerDependencies: eslint: ">=8.40.0" - checksum: 10c0/55f14f256ffd9e09c417598fbd80cfc6ce603f234a6bd21521d0048a2949f54237394356afe806d461d73013f9e1743d8321fdb0b7716fd1d6d4cba513315f61 + checksum: 10c0/6ca19b6656be5ed657cf4d1920602fb27144dc5d51ba188e0bdcb2a4e0b740d4fdb27052fc268d164fa1269c972aeab15541c9e15b3ff4b7884ecae47f18ff67 languageName: node linkType: hard @@ -5011,16 +5042,6 @@ __metadata: languageName: node linkType: hard -"@tufjs/models@npm:2.0.1": - version: 2.0.1 - resolution: "@tufjs/models@npm:2.0.1" - dependencies: - "@tufjs/canonical-json": "npm:2.0.0" - minimatch: "npm:^9.0.4" - checksum: 10c0/ad9e82fd921954501fd90ed34ae062254637595577ad13fdc1e076405c0ea5ee7d8aebad09e63032972fd92b07f1786c15b24a195a171fc8ac470ca8e2ffbcc4 - languageName: node - linkType: hard - "@tufjs/models@npm:3.0.1": version: 3.0.1 resolution: "@tufjs/models@npm:3.0.1" @@ -5269,14 +5290,14 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": - version: 5.0.1 - resolution: "@types/express-serve-static-core@npm:5.0.1" + version: 5.0.2 + resolution: "@types/express-serve-static-core@npm:5.0.2" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10c0/42919f9de55e9fd1524dc72c2f06a3f3e7fbd21f42ccc6e71ea2d530c8942cc0004d468f09e8557bf51c585d9673efd455b9668c2cd2416f5d61e70dc1bc49ac + checksum: 10c0/9f6ee50bd81f0aa6cc9df6ad2c2d221a3a63249da944db58ec8bb8681e77a5b3b3fdb1931bda73beb13cfaf9125731f835fe5256afb6a6da35b0eb08ccbdbfdf languageName: node linkType: hard @@ -5461,9 +5482,9 @@ __metadata: linkType: hard "@types/less@npm:^3.0.3": - version: 3.0.6 - resolution: "@types/less@npm:3.0.6" - checksum: 10c0/07109689295d1ce88158f52f799b71925121b2e5ae4dd58c3f23709b1e0b76e8c145f052f883bc3e06cc52d42f173706fcedbc23d9c49b6895b4cf357965d21f + version: 3.0.7 + resolution: "@types/less@npm:3.0.7" + checksum: 10c0/773251ea228cc84171e5fafe27a2ea7051db8c65aa9e9278a1ba4b7d38d9fb752dc0bd1f767fe0c5517e7330ebb82c8205008f9ce6a8dd3a0f97a2ddd18af042 languageName: node linkType: hard @@ -5533,11 +5554,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=10.0.0": - version: 22.9.0 - resolution: "@types/node@npm:22.9.0" + version: 22.9.3 + resolution: "@types/node@npm:22.9.3" dependencies: undici-types: "npm:~6.19.8" - checksum: 10c0/3f46cbe0a49bab4ba30494025e4c8a6e699b98ac922857aa1f0209ce11a1313ee46e6808b8f13fe5b8b960a9d7796b77c8d542ad4e9810e85ef897d5593b5d51 + checksum: 10c0/954ec72bf29436ea62425a9563914a9c1e93f97b18194acd51d74d13998a701977547ed2985ed3a0e97211b785436d28377116e5f613bfcf3182d9bd81d784dc languageName: node linkType: hard @@ -5558,11 +5579,11 @@ __metadata: linkType: hard "@types/node@npm:^18.13.0, @types/node@npm:^18.19.21": - version: 18.19.64 - resolution: "@types/node@npm:18.19.64" + version: 18.19.65 + resolution: "@types/node@npm:18.19.65" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/a54009cd222f5751c903e5f4889a0f12e3d3755a1f87ce919455eeaf00a9ba0c9215c4a92bc3d8df585a894fa3e4cf218e5afccced355688624133e1a4b88235 + checksum: 10c0/9c093f13749dccd16a3e9cd17080db057d1e94cb5205a871d2818ad51ec19d7d392a7c12a11661c6a6f4404cbd85b19d09ab6c564a4763cab2ff5bb0e198617d languageName: node linkType: hard @@ -5979,16 +6000,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/scope-manager@npm:8.14.0" - dependencies: - "@typescript-eslint/types": "npm:8.14.0" - "@typescript-eslint/visitor-keys": "npm:8.14.0" - checksum: 10c0/1e1295c6f9febadf63559aad328b23d960510ce6b4c9f74e10d881c3858fa7f1db767cd1af5272d2fe7c9c5c7daebee71854e6f841e413e5d70af282f6616e26 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:8.15.0": version: 8.15.0 resolution: "@typescript-eslint/scope-manager@npm:8.15.0" @@ -6016,13 +6027,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/types@npm:8.14.0" - checksum: 10c0/7707f900e24e60e6780c5705f69627b7c0ef912cb3b095dfc8f4a0c84e866c66b1c4c10278cf99724560dc66985ec640750c4192786a09b853f9bb4c3ca5a7ce - languageName: node - linkType: hard - "@typescript-eslint/types@npm:8.15.0": version: 8.15.0 resolution: "@typescript-eslint/types@npm:8.15.0" @@ -6030,25 +6034,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.14.0" - dependencies: - "@typescript-eslint/types": "npm:8.14.0" - "@typescript-eslint/visitor-keys": "npm:8.14.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/5e890d22bd067095f871cf144907a8c302db5b5f014c58906ad58d7f23569951cba805042eac6844744e5abb0d3648c9cc221a91b0703da0a8d6345dc1f83e74 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.15.0": version: 8.15.0 resolution: "@typescript-eslint/typescript-estree@npm:8.15.0" @@ -6068,7 +6053,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.15.0": +"@typescript-eslint/utils@npm:8.15.0, @typescript-eslint/utils@npm:^8.13.0": version: 8.15.0 resolution: "@typescript-eslint/utils@npm:8.15.0" dependencies: @@ -6085,30 +6070,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.12.2": - version: 8.14.0 - resolution: "@typescript-eslint/utils@npm:8.14.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.14.0" - "@typescript-eslint/types": "npm:8.14.0" - "@typescript-eslint/typescript-estree": "npm:8.14.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - checksum: 10c0/1fcc2651d870832a799a5d1c85fc9421853508a006d6a6073c8316b012489dda77e123d13aea8f53eb9030a2da2c0eb273a6946a9941caa2519b99b33e89b720 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.14.0": - version: 8.14.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.14.0" - dependencies: - "@typescript-eslint/types": "npm:8.14.0" - eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/d0faf70ed9ecff5e36694bbb161a90bea6db59e0e79a7d4f264d67d565c12b13733d664b736b2730935f013c87ce3155cea954a533d28e99987681bc5f6259c3 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:8.15.0": version: 8.15.0 resolution: "@typescript-eslint/visitor-keys@npm:8.15.0" @@ -7493,11 +7454,11 @@ __metadata: linkType: hard "bare-stream@npm:^2.0.0": - version: 2.3.2 - resolution: "bare-stream@npm:2.3.2" + version: 2.4.2 + resolution: "bare-stream@npm:2.4.2" dependencies: streamx: "npm:^2.20.0" - checksum: 10c0/e2bda606c2cbd6acbb2558d9a5f6d2d4bc08fb635d32d599bc8e74c1d2298c956decf6a3a820e485a760bb73b8a7f0e743ec5262f08cccbaf5eeb599253d4221 + checksum: 10c0/5e64d96dc32d901c317399f14fd1057882b2bd68d1f8ab54710f0e640b0d1f3a4bf4f9c238bb4c81051ef4b687cf2223e5e05dda9f6ce08bc0cc2ac98f3b52e0 languageName: node linkType: hard @@ -7652,12 +7613,12 @@ __metadata: linkType: hard "bonjour-service@npm:^1.2.1": - version: 1.2.1 - resolution: "bonjour-service@npm:1.2.1" + version: 1.3.0 + resolution: "bonjour-service@npm:1.3.0" dependencies: fast-deep-equal: "npm:^3.1.3" multicast-dns: "npm:^7.2.5" - checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 + checksum: 10c0/5721fd9f9bb968e9cc16c1e8116d770863dd2329cb1f753231de1515870648c225142b7eefa71f14a5c22bc7b37ddd7fdeb018700f28a8c936d50d4162d433c7 languageName: node linkType: hard @@ -7978,9 +7939,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001680 - resolution: "caniuse-lite@npm:1.0.30001680" - checksum: 10c0/11a4e7f6f5d5f965cfd4b7dc4aef34e12a26e99647f02b5ac9fd7f7670845473b95ada416a785473237e4b1b67281f7b043c8736c85b77097f6b697e8950b15f + version: 1.0.30001684 + resolution: "caniuse-lite@npm:1.0.30001684" + checksum: 10c0/446485ca3d9caf408a339a44636a86a2b119ec247492393ae661cd93dccd6668401dd2dfec1e149be4e44563cd1e23351b44453a52fa2c2f19e2bf3287c865f6 languageName: node linkType: hard @@ -8133,7 +8094,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0": +"ci-info@npm:^4.0.0, ci-info@npm:^4.1.0": version: 4.1.0 resolution: "ci-info@npm:4.1.0" checksum: 10c0/0f969ce32a974c542bc8abe4454b220d9d9323bb9415054c92a900faa5fdda0bb222eda68c490127c1d78503510d46b6aca614ecaba5a60515b8ac7e170119e6 @@ -8654,13 +8615,13 @@ __metadata: linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.5 - resolution: "cross-spawn@npm:7.0.5" + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 10c0/aa82ce7ac0814a27e6f2b738c5a7cf1fa21a3558a1e42df449fc96541ba3ba731e4d3ecffa4435348808a86212f287c6f20a1ee551ef1ff95d01cfec5f434944 + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 languageName: node linkType: hard @@ -9260,9 +9221,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.62 - resolution: "electron-to-chromium@npm:1.5.62" - checksum: 10c0/93dc628f0359df0cae475cf5e91fa0cf357611f14da7cf15c28fe92f89dede7def20c04b24787e6166181ae582b060d02b252e906d7ec84020485579a95bc8e9 + version: 1.5.64 + resolution: "electron-to-chromium@npm:1.5.64" + checksum: 10c0/331c2160cc37ef85317b44f2078af8ff16f068fc95d4af2210fe943b567f20b1445a7faa40c05d290bc229102ef1b662371464ba2725d10ff6c8543af6d40adf languageName: node linkType: hard @@ -9447,7 +9408,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": version: 1.23.5 resolution: "es-abstract@npm:1.23.5" dependencies: @@ -10467,9 +10428,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.7, flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: 10c0/24cc735e74d593b6c767fe04f2ef369abe15b62f6906158079b9874bdb3ee5ae7110bb75042e70cd3f99d409d766f357caf78d5ecee9780206f5fdc5edbad334 languageName: node linkType: hard @@ -11154,12 +11115,12 @@ __metadata: languageName: node linkType: hard -"hosted-git-info@npm:^8.0.0": - version: 8.0.0 - resolution: "hosted-git-info@npm:8.0.0" +"hosted-git-info@npm:^8.0.0, hosted-git-info@npm:^8.0.2": + version: 8.0.2 + resolution: "hosted-git-info@npm:8.0.2" dependencies: lru-cache: "npm:^10.0.1" - checksum: 10c0/3eb932a99e8a3c7f3a4513a5a61b81d0789741abf41ebb2d9679644e4b4c730c68e1925fbaeae2c6b35eb0bab57a59027b89c21ab588981c8b0989c454adde46 + checksum: 10c0/e64f6c1b6db625869934b35c4959aacc365799d9cb1856e0224b5557ee5ecfe224bb8aa850479179a8f3968063ea0f92b8fbb67fe009d46859431dcde7fdc36d languageName: node linkType: hard @@ -11497,9 +11458,9 @@ __metadata: linkType: hard "immutable@npm:^5.0.2": - version: 5.0.2 - resolution: "immutable@npm:5.0.2" - checksum: 10c0/0d97ad95384e49563b6ed68f90e5ea83c149fd96ff417fae8274e1c524e3ef800eb1a2e8009e29d9b8ffdf63affd7692f87c8af72714181aad8dca88747fb5ac + version: 5.0.3 + resolution: "immutable@npm:5.0.3" + checksum: 10c0/3269827789e1026cd25c2ea97f0b2c19be852ffd49eda1b674b20178f73d84fa8d945ad6f5ac5bc4545c2b4170af9f6e1f77129bc1cae7974a4bf9b04a9cdfb9 languageName: node linkType: hard @@ -11688,6 +11649,15 @@ __metadata: languageName: node linkType: hard +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + "is-bigint@npm:^1.0.1": version: 1.0.4 resolution: "is-bigint@npm:1.0.4" @@ -11759,7 +11729,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -11800,6 +11770,15 @@ __metadata: languageName: node linkType: hard +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.0 + resolution: "is-finalizationregistry@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/1cd94236bfb6e060fe2b973c8726a2782727f7d495b3e8e1d51d3e619c5a3345413706f555956eb5b12af15eba0414118f64a1b19d793ec36b5e6767a13836ac + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -11823,7 +11802,7 @@ __metadata: languageName: node linkType: hard -"is-generator-function@npm:^1.0.7": +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" dependencies: @@ -11882,6 +11861,13 @@ __metadata: languageName: node linkType: hard +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + "is-module@npm:^1.0.0": version: 1.0.0 resolution: "is-module@npm:1.0.0" @@ -12009,6 +11995,13 @@ __metadata: languageName: node linkType: hard +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + "is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": version: 1.0.3 resolution: "is-shared-array-buffer@npm:1.0.3" @@ -12080,6 +12073,13 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -12089,6 +12089,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + languageName: node + linkType: hard + "is-what@npm:^3.14.1": version: 3.14.1 resolution: "is-what@npm:3.14.1" @@ -13023,9 +13033,9 @@ __metadata: languageName: node linkType: hard -"libnpmpublish@npm:^10.0.0": - version: 10.0.0 - resolution: "libnpmpublish@npm:10.0.0" +"libnpmpublish@npm:^10.0.1": + version: 10.0.1 + resolution: "libnpmpublish@npm:10.0.1" dependencies: ci-info: "npm:^4.0.0" normalize-package-data: "npm:^7.0.0" @@ -13033,9 +13043,9 @@ __metadata: npm-registry-fetch: "npm:^18.0.1" proc-log: "npm:^5.0.0" semver: "npm:^7.3.7" - sigstore: "npm:^2.2.0" + sigstore: "npm:^3.0.0" ssri: "npm:^12.0.0" - checksum: 10c0/305d460f7bea3e7df4c05abb8a3b3cde8643cad0c39cc87ac51db126c920fa81de99d87fe14c63888727de668bde0f6c8e947ff6253dd9da8bab96bb95c2687f + checksum: 10c0/9420382ab7a80541274d6bba77fc1d96b195c00141ca5ea4cf198814b88e6bda4463a05c5a7e95a9956ff5890fe7dba349518ca06538d31f01bf677c5703247e languageName: node linkType: hard @@ -13468,7 +13478,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.12, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": +"magic-string@npm:0.30.12": version: 0.30.12 resolution: "magic-string@npm:0.30.12" dependencies: @@ -13477,7 +13487,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.13": +"magic-string@npm:0.30.13, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.13 resolution: "magic-string@npm:0.30.13" dependencies: @@ -13521,7 +13531,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0, make-fetch-happen@npm:^13.0.1": +"make-fetch-happen@npm:^13.0.0": version: 13.0.1 resolution: "make-fetch-happen@npm:13.0.1" dependencies: @@ -13541,7 +13551,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^14.0.0, make-fetch-happen@npm:^14.0.1": +"make-fetch-happen@npm:^14.0.0, make-fetch-happen@npm:^14.0.1, make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" dependencies: @@ -14306,12 +14316,12 @@ __metadata: languageName: node linkType: hard -"npm-install-checks@npm:^7.1.0": - version: 7.1.0 - resolution: "npm-install-checks@npm:7.1.0" +"npm-install-checks@npm:^7.1.0, npm-install-checks@npm:^7.1.1": + version: 7.1.1 + resolution: "npm-install-checks@npm:7.1.1" dependencies: semver: "npm:^7.1.1" - checksum: 10c0/65e2e11f4846fba5aebe34b9260daedf3d7dd006cd40e3056ef62528d39f76a33cbfaef5ae94b6c88707770aba6177ab390470e7fa3c1b10772a8cc7b4ed372d + checksum: 10c0/3cfd705ef3f70add31a32b4a5462d16e0f06d9df636072483fb43c854414a1cc128f496e84a8d9c12c1f1820307b7a3c275643589c564dac3c870eb636f8eea4 languageName: node linkType: hard @@ -14365,7 +14375,7 @@ __metadata: languageName: node linkType: hard -"npm-registry-fetch@npm:^18.0.0, npm-registry-fetch@npm:^18.0.1": +"npm-registry-fetch@npm:^18.0.0, npm-registry-fetch@npm:^18.0.1, npm-registry-fetch@npm:^18.0.2": version: 18.0.2 resolution: "npm-registry-fetch@npm:18.0.2" dependencies: @@ -14398,8 +14408,8 @@ __metadata: linkType: hard "npm@npm:^10.8.1": - version: 10.9.0 - resolution: "npm@npm:10.9.0" + version: 10.9.1 + resolution: "npm@npm:10.9.1" dependencies: "@isaacs/string-locale-compare": "npm:^1.1.0" "@npmcli/arborist": "npm:^8.0.0" @@ -14407,21 +14417,21 @@ __metadata: "@npmcli/fs": "npm:^4.0.0" "@npmcli/map-workspaces": "npm:^4.0.1" "@npmcli/package-json": "npm:^6.0.1" - "@npmcli/promise-spawn": "npm:^8.0.1" + "@npmcli/promise-spawn": "npm:^8.0.2" "@npmcli/redact": "npm:^3.0.0" "@npmcli/run-script": "npm:^9.0.1" - "@sigstore/tuf": "npm:^2.3.4" + "@sigstore/tuf": "npm:^3.0.0" abbrev: "npm:^3.0.0" archy: "npm:~1.0.0" cacache: "npm:^19.0.1" chalk: "npm:^5.3.0" - ci-info: "npm:^4.0.0" + ci-info: "npm:^4.1.0" cli-columns: "npm:^4.0.0" fastest-levenshtein: "npm:^1.0.16" fs-minipass: "npm:^3.0.3" glob: "npm:^10.4.5" graceful-fs: "npm:^4.2.11" - hosted-git-info: "npm:^8.0.0" + hosted-git-info: "npm:^8.0.2" ini: "npm:^5.0.0" init-package-json: "npm:^7.0.1" is-cidr: "npm:^5.1.0" @@ -14433,11 +14443,11 @@ __metadata: libnpmhook: "npm:^11.0.0" libnpmorg: "npm:^7.0.0" libnpmpack: "npm:^8.0.0" - libnpmpublish: "npm:^10.0.0" + libnpmpublish: "npm:^10.0.1" libnpmsearch: "npm:^8.0.0" libnpmteam: "npm:^7.0.0" libnpmversion: "npm:^7.0.0" - make-fetch-happen: "npm:^14.0.1" + make-fetch-happen: "npm:^14.0.3" minimatch: "npm:^9.0.5" minipass: "npm:^7.1.1" minipass-pipeline: "npm:^1.2.4" @@ -14446,14 +14456,14 @@ __metadata: nopt: "npm:^8.0.0" normalize-package-data: "npm:^7.0.0" npm-audit-report: "npm:^6.0.0" - npm-install-checks: "npm:^7.1.0" + npm-install-checks: "npm:^7.1.1" npm-package-arg: "npm:^12.0.0" npm-pick-manifest: "npm:^10.0.0" npm-profile: "npm:^11.0.1" - npm-registry-fetch: "npm:^18.0.1" + npm-registry-fetch: "npm:^18.0.2" npm-user-validate: "npm:^3.0.0" p-map: "npm:^4.0.0" - pacote: "npm:^19.0.0" + pacote: "npm:^19.0.1" parse-conflict-json: "npm:^4.0.0" proc-log: "npm:^5.0.0" qrcode-terminal: "npm:^0.12.0" @@ -14472,7 +14482,7 @@ __metadata: bin: npm: bin/npm-cli.js npx: bin/npx-cli.js - checksum: 10c0/87ef0e9dd6ac9574c470777ccbf848822184b0aa28e9743bea14988f8b3f6a737a357205cd5048cc6b5657a4be248621192fdcc37656e1d8438eeba6b20a7f73 + checksum: 10c0/66b6eeb99844accbd07be63cc2c48aeb6ddb8adc2b429cd473fb412e4d6c9d66cbbc130839199ad494116c6766bbe39054ed93fe5b5696bda818037760766813 languageName: node linkType: hard @@ -14899,7 +14909,7 @@ __metadata: languageName: node linkType: hard -"pacote@npm:^19.0.0": +"pacote@npm:^19.0.0, pacote@npm:^19.0.1": version: 19.0.1 resolution: "pacote@npm:19.0.1" dependencies: @@ -15636,11 +15646,11 @@ __metadata: linkType: hard "psl@npm:^1.1.28, psl@npm:^1.1.33": - version: 1.10.0 - resolution: "psl@npm:1.10.0" + version: 1.13.0 + resolution: "psl@npm:1.13.0" dependencies: punycode: "npm:^2.3.1" - checksum: 10c0/aeac84ed76a170caa8dafad2e51200d38b657fdab3ae258d98fa16db8bb82522dfb00ad96db99c493f185848d9be06b59d5d60551d871e5be1974a2497d8b51a + checksum: 10c0/d259dd6fdbc720267f78d26139e197f6a1a0f6505753ed28309515b108d9acd764a873af9045de75884f6816c3c854d90552984132a981fac2f032b443e32b4b languageName: node linkType: hard @@ -15708,8 +15718,8 @@ __metadata: linkType: hard "puppeteer-core@npm:^23.2.0": - version: 23.8.0 - resolution: "puppeteer-core@npm:23.8.0" + version: 23.9.0 + resolution: "puppeteer-core@npm:23.9.0" dependencies: "@puppeteer/browsers": "npm:2.4.1" chromium-bidi: "npm:0.8.0" @@ -15717,7 +15727,7 @@ __metadata: devtools-protocol: "npm:0.0.1367902" typed-query-selector: "npm:^2.12.0" ws: "npm:^8.18.0" - checksum: 10c0/6282881e6be1535082f879ccf585e02cb22fde5ce45072d71a8a1fcad5e9be3d27157e8be4728bec2344b300aa96437c4c820a00e01f1577f27b971980e1bced + checksum: 10c0/1cb6e084059a94929f39ca458eec45b258f1ffbeb904ed689e2b915fd48741aa6aecf98129edf6426773316d204b3795a937da590bb65a635b6c8fd3e4feae11 languageName: node linkType: hard @@ -15977,6 +15987,21 @@ __metadata: languageName: node linkType: hard +"reflect.getprototypeof@npm:^1.0.6": + version: 1.0.7 + resolution: "reflect.getprototypeof@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + which-builtin-type: "npm:^1.1.4" + checksum: 10c0/841814f7631b55ee42e198cb14a5c25c0752431ab8f0ad9794c32d46ab9fb0d5ba4939edac1f99a174a21443a1400a72bccbbb9ccd9277e4b4bf6d14aabb31c8 + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.2.0": version: 10.2.0 resolution: "regenerate-unicode-properties@npm:10.2.0" @@ -16029,16 +16054,16 @@ __metadata: linkType: hard "regexpu-core@npm:^6.1.1": - version: 6.1.1 - resolution: "regexpu-core@npm:6.1.1" + version: 6.2.0 + resolution: "regexpu-core@npm:6.2.0" dependencies: regenerate: "npm:^1.4.2" regenerate-unicode-properties: "npm:^10.2.0" regjsgen: "npm:^0.8.0" - regjsparser: "npm:^0.11.0" + regjsparser: "npm:^0.12.0" unicode-match-property-ecmascript: "npm:^2.0.0" unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 10c0/07d49697e20f9b65977535abba4858b7f5171c13f7c366be53ec1886d3d5f69f1b98cc6a6e63cf271adda077c3366a4c851c7473c28bbd69cf5a6b6b008efc3e + checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 languageName: node linkType: hard @@ -16049,14 +16074,14 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.11.0": - version: 0.11.2 - resolution: "regjsparser@npm:0.11.2" +"regjsparser@npm:^0.12.0": + version: 0.12.0 + resolution: "regjsparser@npm:0.12.0" dependencies: jsesc: "npm:~3.0.2" bin: regjsparser: bin/parser - checksum: 10c0/764e762de1b26a0cf48b45728fc1b2087f9c55bd4cea858cce28e4d5544c237f3f2dd6d40e2c41b80068e9cb92cc7d731a4285bc1f27d6ebc227792c70e4af1b + checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b languageName: node linkType: hard @@ -16440,27 +16465,27 @@ __metadata: linkType: hard "rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": - version: 4.27.2 - resolution: "rollup@npm:4.27.2" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.2" - "@rollup/rollup-android-arm64": "npm:4.27.2" - "@rollup/rollup-darwin-arm64": "npm:4.27.2" - "@rollup/rollup-darwin-x64": "npm:4.27.2" - "@rollup/rollup-freebsd-arm64": "npm:4.27.2" - "@rollup/rollup-freebsd-x64": "npm:4.27.2" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.2" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.2" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.2" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.2" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.2" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.2" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.2" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.2" - "@rollup/rollup-linux-x64-musl": "npm:4.27.2" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.2" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.2" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.2" + version: 4.27.4 + resolution: "rollup@npm:4.27.4" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.27.4" + "@rollup/rollup-android-arm64": "npm:4.27.4" + "@rollup/rollup-darwin-arm64": "npm:4.27.4" + "@rollup/rollup-darwin-x64": "npm:4.27.4" + "@rollup/rollup-freebsd-arm64": "npm:4.27.4" + "@rollup/rollup-freebsd-x64": "npm:4.27.4" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" + "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" + "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-x64-musl": "npm:4.27.4" + "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" + "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" + "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -16504,7 +16529,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/563c43d064b7af64156621b52997d2c8a4609774dea4deb06c0fbc1f18450f1b65036404224e81a6bbc80a316a558452151fe9be2214b1898aa66bdd93209496 + checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 languageName: node linkType: hard @@ -17008,20 +17033,6 @@ __metadata: languageName: node linkType: hard -"sigstore@npm:^2.2.0": - version: 2.3.1 - resolution: "sigstore@npm:2.3.1" - dependencies: - "@sigstore/bundle": "npm:^2.3.2" - "@sigstore/core": "npm:^1.0.0" - "@sigstore/protobuf-specs": "npm:^0.3.2" - "@sigstore/sign": "npm:^2.3.2" - "@sigstore/tuf": "npm:^2.3.4" - "@sigstore/verify": "npm:^1.2.1" - checksum: 10c0/8906b1074130d430d707e46f15c66eb6996891dc0d068705f1884fb1251a4a367f437267d44102cdebcee34f1768b3f30131a2ec8fb7aac74ba250903a459aa7 - languageName: node - linkType: hard - "sigstore@npm:^3.0.0": version: 3.0.0 resolution: "sigstore@npm:3.0.0" @@ -18056,11 +18067,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.3.0": - version: 1.4.0 - resolution: "ts-api-utils@npm:1.4.0" + version: 1.4.1 + resolution: "ts-api-utils@npm:1.4.1" peerDependencies: typescript: ">=4.2.0" - checksum: 10c0/1b2bfa50ea52771d564bb143bb69010d25cda03ed573095fbac9b86f717012426443af6647e00e3db70fca60360482a30c1be7cf73c3521c321f6bf5e3594ea0 + checksum: 10c0/11a2c4b280ead1026722bd2dd5cbfd8a88d06adcbf6ade8ce92914bd4828c08b384cf9f98cf652bd41d61320604186c5ed60f3077bc9cb8a8c44e9ceae29d0e8 languageName: node linkType: hard @@ -18146,17 +18157,6 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^2.2.1": - version: 2.2.1 - resolution: "tuf-js@npm:2.2.1" - dependencies: - "@tufjs/models": "npm:2.0.1" - debug: "npm:^4.3.4" - make-fetch-happen: "npm:^13.0.1" - checksum: 10c0/7c17b097571f001730d7be0aeaec6bec46ed2f25bf73990b1133c383d511a1ce65f831e5d6d78770940a85b67664576ff0e4c98e5421bab6d33ff36e4be500c8 - languageName: node - linkType: hard - "tuf-js@npm:^3.0.1": version: 3.0.1 resolution: "tuf-js@npm:3.0.1" @@ -18249,8 +18249,8 @@ __metadata: linkType: hard "typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" + version: 1.0.3 + resolution: "typed-array-byte-offset@npm:1.0.3" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.7" @@ -18258,21 +18258,22 @@ __metadata: gopd: "npm:^1.0.1" has-proto: "npm:^1.0.3" is-typed-array: "npm:^1.1.13" - checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/5da29585f96671c0521475226d3227000b3e01d1e99208b66bb05b75c7c8f4d0e9cc2e79920f3bfbc792a00102df1daa2608a2753e3f291b671d5a80245bde5b languageName: node linkType: hard "typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" is-typed-array: "npm:^1.1.13" possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 languageName: node linkType: hard @@ -19151,6 +19152,39 @@ __metadata: languageName: node linkType: hard +"which-builtin-type@npm:^1.1.4": + version: 1.2.0 + resolution: "which-builtin-type@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/7cd4a8ccfa6a3cb7c2296c716e7266b9f31a66f3e131fe7b185232c16d3ad21442046ec1798c4ec1e19dce7eb99c7751377192e5e734dc07042d14ec0f09b332 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + "which-module@npm:^2.0.0": version: 2.0.1 resolution: "which-module@npm:2.0.1" @@ -19437,7 +19471,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.1": +"yaml@npm:2.6.1, yaml@npm:^2.4.1": version: 2.6.1 resolution: "yaml@npm:2.6.1" bin: @@ -19446,15 +19480,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.4.1": - version: 2.6.0 - resolution: "yaml@npm:2.6.0" - bin: - yaml: bin.mjs - checksum: 10c0/9e74cdb91cc35512a1c41f5ce509b0e93cc1d00eff0901e4ba831ee75a71ddf0845702adcd6f4ee6c811319eb9b59653248462ab94fa021ab855543a75396ceb - languageName: node - linkType: hard - "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" From 399bbb7b7766aac1c392d9f57981a5a71f79b8ab Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 25 Nov 2024 17:25:15 +0000 Subject: [PATCH 0031/2162] build: update all non-major dependencies --- package.json | 12 +- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- yarn.lock | 386 +++++++----------- 4 files changed, 148 insertions(+), 254 deletions(-) diff --git a/package.json b/package.json index a6814d6e315f..9ef29121758c 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "@babel/plugin-transform-runtime": "7.25.9", "@babel/preset-env": "7.26.0", "@babel/runtime": "7.26.0", - "@bazel/bazelisk": "1.24.0", + "@bazel/bazelisk": "1.24.1", "@bazel/buildifier": "7.3.1", "@bazel/concatjs": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch", "@bazel/jasmine": "patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch", @@ -116,8 +116,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.15.0", - "@typescript-eslint/parser": "8.15.0", + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", "@vitejs/plugin-basic-ssl": "1.1.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", @@ -158,7 +158,7 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "karma-source-map-support": "1.4.0", - "less": "4.2.0", + "less": "4.2.1", "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "listr2": "8.2.5", @@ -168,7 +168,7 @@ "magic-string": "0.30.13", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", - "ng-packagr": "19.0.0", + "ng-packagr": "19.0.1", "npm": "^10.8.1", "npm-package-arg": "12.0.0", "npm-pick-manifest": "10.0.0", @@ -185,7 +185,7 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.27.3", + "rollup": "4.27.4", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 9cf28facc0a9..f406aa8d7699 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,7 +38,7 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.7.0", - "rollup": "4.27.3", + "rollup": "4.27.4", "sass": "1.81.0", "semver": "7.6.3", "vite": "5.4.11", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 81ba934e738c..9f82f4bdf6fb 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.0", + "less": "4.2.1", "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", diff --git a/yarn.lock b/yarn.lock index dfba4c0b04c8..b20c012d077d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -89,7 +89,7 @@ __metadata: istanbul-lib-instrument: "npm:6.0.3" jsonc-parser: "npm:3.3.1" karma-source-map-support: "npm:1.4.0" - less: "npm:4.2.0" + less: "npm:4.2.1" less-loader: "npm:12.2.0" license-webpack-plugin: "npm:4.0.2" loader-utils: "npm:3.3.1" @@ -392,7 +392,7 @@ __metadata: parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.7.0" - rollup: "npm:4.27.3" + rollup: "npm:4.27.4" sass: "npm:1.81.0" semver: "npm:7.6.3" vite: "npm:5.4.11" @@ -654,7 +654,7 @@ __metadata: "@babel/plugin-transform-runtime": "npm:7.25.9" "@babel/preset-env": "npm:7.26.0" "@babel/runtime": "npm:7.26.0" - "@bazel/bazelisk": "npm:1.24.0" + "@bazel/bazelisk": "npm:1.24.1" "@bazel/buildifier": "npm:7.3.1" "@bazel/concatjs": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch" "@bazel/jasmine": "patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch" @@ -691,8 +691,8 @@ __metadata: "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" "@types/yarnpkg__lockfile": "npm:^1.1.5" - "@typescript-eslint/eslint-plugin": "npm:8.15.0" - "@typescript-eslint/parser": "npm:8.15.0" + "@typescript-eslint/eslint-plugin": "npm:8.16.0" + "@typescript-eslint/parser": "npm:8.16.0" "@vitejs/plugin-basic-ssl": "npm:1.1.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" @@ -733,7 +733,7 @@ __metadata: karma-jasmine: "npm:~5.1.0" karma-jasmine-html-reporter: "npm:~2.1.0" karma-source-map-support: "npm:1.4.0" - less: "npm:4.2.0" + less: "npm:4.2.1" less-loader: "npm:12.2.0" license-webpack-plugin: "npm:4.0.2" listr2: "npm:8.2.5" @@ -743,7 +743,7 @@ __metadata: magic-string: "npm:0.30.13" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" - ng-packagr: "npm:19.0.0" + ng-packagr: "npm:19.0.1" npm: "npm:^10.8.1" npm-package-arg: "npm:12.0.0" npm-pick-manifest: "npm:10.0.0" @@ -760,7 +760,7 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.27.3" + rollup: "npm:4.27.4" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" @@ -2146,13 +2146,13 @@ __metadata: languageName: node linkType: hard -"@bazel/bazelisk@npm:1.24.0": - version: 1.24.0 - resolution: "@bazel/bazelisk@npm:1.24.0" +"@bazel/bazelisk@npm:1.24.1": + version: 1.24.1 + resolution: "@bazel/bazelisk@npm:1.24.1" bin: bazel: bazelisk.js bazelisk: bazelisk.js - checksum: 10c0/6cd1f63cbdde7cf5bc06ee6d12a7e7b995a0a2073926326a4bc145e8cc45258d0284d5a842fbe99ee069c3f198735c543173e83d149ebeaeb67840df71c6b585 + checksum: 10c0/00cfadbe9220f3adc035ddaca5d2ae9d2200e3817a8c3554031f3b14401c79ef3b284e8190ae9a46e19dc4178470a180c3b052db86b030af5a768b2977226aed languageName: node linkType: hard @@ -4397,13 +4397,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.3" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" @@ -4418,13 +4411,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-android-arm64@npm:4.27.3" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-android-arm64@npm:4.27.4" @@ -4439,13 +4425,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" @@ -4460,13 +4439,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" @@ -4481,13 +4453,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.3" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" @@ -4502,13 +4467,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.3" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" @@ -4523,13 +4481,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.3" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" @@ -4544,13 +4495,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.3" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" @@ -4565,13 +4509,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.3" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" @@ -4586,13 +4523,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.3" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" @@ -4607,13 +4537,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.3" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" @@ -4628,13 +4551,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.3" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" @@ -4649,13 +4565,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.3" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" @@ -4670,13 +4579,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.3" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" @@ -4691,13 +4593,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.3" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" @@ -4712,13 +4607,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.3" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" @@ -4733,13 +4621,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.3" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" @@ -4754,13 +4635,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.3": - version: 4.27.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.27.4": version: 4.27.4 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" @@ -5553,16 +5427,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=10.0.0": - version: 22.9.3 - resolution: "@types/node@npm:22.9.3" - dependencies: - undici-types: "npm:~6.19.8" - checksum: 10c0/954ec72bf29436ea62425a9563914a9c1e93f97b18194acd51d74d13998a701977547ed2985ed3a0e97211b785436d28377116e5f613bfcf3182d9bd81d784dc - languageName: node - linkType: hard - -"@types/node@npm:>=13.7.0": +"@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=13.7.0": version: 22.9.3 resolution: "@types/node@npm:22.9.3" dependencies: @@ -5959,15 +5824,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.15.0" +"@typescript-eslint/eslint-plugin@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.16.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.15.0" - "@typescript-eslint/type-utils": "npm:8.15.0" - "@typescript-eslint/utils": "npm:8.15.0" - "@typescript-eslint/visitor-keys": "npm:8.15.0" + "@typescript-eslint/scope-manager": "npm:8.16.0" + "@typescript-eslint/type-utils": "npm:8.16.0" + "@typescript-eslint/utils": "npm:8.16.0" + "@typescript-eslint/visitor-keys": "npm:8.16.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5978,25 +5843,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/90ef10cc7d37a81abec4f4a3ffdfc3a0da8e99d949e03c75437e96e8ab2e896e34b85ab64718690180a7712581031b8611c5d8e7666d6ed4d60b9ace834d58e3 + checksum: 10c0/b03612b726ee5aff631cd50e05ceeb06a522e64465e4efdc134e3a27a09406b959ef7a05ec4acef1956b3674dc4fedb6d3a62ce69382f9e30c227bd4093003e5 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/parser@npm:8.15.0" +"@typescript-eslint/parser@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/parser@npm:8.16.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.15.0" - "@typescript-eslint/types": "npm:8.15.0" - "@typescript-eslint/typescript-estree": "npm:8.15.0" - "@typescript-eslint/visitor-keys": "npm:8.15.0" + "@typescript-eslint/scope-manager": "npm:8.16.0" + "@typescript-eslint/types": "npm:8.16.0" + "@typescript-eslint/typescript-estree": "npm:8.16.0" + "@typescript-eslint/visitor-keys": "npm:8.16.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/19c25aea0dc51faa758701a5319a89950fd30494d9d645db8ced84fb60714c5e7d4b51fc4ee8ccb07ddefec88c51ee307ee7e49addd6330ee8f3e7ee9ba329fc + checksum: 10c0/e49c6640a7a863a16baecfbc5b99392a4731e9c7e9c9aaae4efbc354e305485fe0f39a28bf0acfae85bc01ce37fe0cc140fd315fdaca8b18f9b5e0addff8ceae languageName: node linkType: hard @@ -6010,12 +5875,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/type-utils@npm:8.15.0" +"@typescript-eslint/scope-manager@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/scope-manager@npm:8.16.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.15.0" - "@typescript-eslint/utils": "npm:8.15.0" + "@typescript-eslint/types": "npm:8.16.0" + "@typescript-eslint/visitor-keys": "npm:8.16.0" + checksum: 10c0/23b7c738b83f381c6419a36e6ca951944187e3e00abb8e012bce8041880410fe498303e28bdeb0e619023a69b14cf32a5ec1f9427c5382807788cd8e52a46a6e + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/type-utils@npm:8.16.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.16.0" + "@typescript-eslint/utils": "npm:8.16.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: @@ -6023,7 +5898,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/20f09c79c83b38a962cf7eff10d47a2c01bcc0bab7bf6d762594221cd89023ef8c7aec26751c47b524f53f5c8d38bba55a282529b3df82d5f5ab4350496316f9 + checksum: 10c0/24c0e815c8bdf99bf488c7528bd6a7c790e8b3b674cb7fb075663afc2ee26b48e6f4cf7c0d14bb21e2376ca62bd8525cbcb5688f36135b00b62b1d353d7235b9 languageName: node linkType: hard @@ -6034,6 +5909,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/types@npm:8.16.0" + checksum: 10c0/141e257ab4060a9c0e2e14334ca14ab6be713659bfa38acd13be70a699fb5f36932a2584376b063063ab3d723b24bc703dbfb1ce57d61d7cfd7ec5bd8a975129 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.15.0": version: 8.15.0 resolution: "@typescript-eslint/typescript-estree@npm:8.15.0" @@ -6053,7 +5935,43 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.15.0, @typescript-eslint/utils@npm:^8.13.0": +"@typescript-eslint/typescript-estree@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.16.0" + dependencies: + "@typescript-eslint/types": "npm:8.16.0" + "@typescript-eslint/visitor-keys": "npm:8.16.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^1.3.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/f28fea5af4798a718b6735d1758b791a331af17386b83cb2856d89934a5d1693f7cb805e73c3b33f29140884ac8ead9931b1d7c3de10176fa18ca7a346fe10d0 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/utils@npm:8.16.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.16.0" + "@typescript-eslint/types": "npm:8.16.0" + "@typescript-eslint/typescript-estree": "npm:8.16.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/1e61187eef3da1ab1486d2a977d8f3b1cb8ef7fa26338500a17eb875ca42a8942ef3f2241f509eef74cf7b5620c109483afc7d83d5b0ab79b1e15920f5a49818 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^8.13.0": version: 8.15.0 resolution: "@typescript-eslint/utils@npm:8.15.0" dependencies: @@ -6080,6 +5998,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.16.0": + version: 8.16.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.16.0" + dependencies: + "@typescript-eslint/types": "npm:8.16.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/537df37801831aa8d91082b2adbffafd40305ed4518f0e7d3cbb17cc466d8b9ac95ac91fa232e7fe585d7c522d1564489ec80052ebb2a6ab9bbf89ef9dd9b7bc + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -12903,7 +12831,42 @@ __metadata: languageName: node linkType: hard -"less@npm:4.2.0, less@npm:^4.2.0": +"less@npm:4.2.1": + version: 4.2.1 + resolution: "less@npm:4.2.1" + dependencies: + copy-anything: "npm:^2.0.1" + errno: "npm:^0.1.1" + graceful-fs: "npm:^4.1.2" + image-size: "npm:~0.5.0" + make-dir: "npm:^2.1.0" + mime: "npm:^1.4.1" + needle: "npm:^3.1.0" + parse-node-version: "npm:^1.0.1" + source-map: "npm:~0.6.0" + tslib: "npm:^2.3.0" + dependenciesMeta: + errno: + optional: true + graceful-fs: + optional: true + image-size: + optional: true + make-dir: + optional: true + mime: + optional: true + needle: + optional: true + source-map: + optional: true + bin: + lessc: bin/lessc + checksum: 10c0/8c9a5fc71ab8bf501e0b739b603cdda23961c1eb72525e4e2509a09cf15dec5f7d56e669ae30b91a16a5cb2fe5d127a8752a9de975de7822098e3814956a316f + languageName: node + linkType: hard + +"less@npm:^4.2.0": version: 4.2.0 resolution: "less@npm:4.2.0" dependencies: @@ -14093,9 +14056,9 @@ __metadata: languageName: node linkType: hard -"ng-packagr@npm:19.0.0": - version: 19.0.0 - resolution: "ng-packagr@npm:19.0.0" +"ng-packagr@npm:19.0.1": + version: 19.0.1 + resolution: "ng-packagr@npm:19.0.1" dependencies: "@rollup/plugin-json": "npm:^6.1.0" "@rollup/wasm-node": "npm:^4.24.0" @@ -14131,7 +14094,7 @@ __metadata: optional: true bin: ng-packagr: cli/main.js - checksum: 10c0/685d60ab4baeee0ae85d36578587925c299a4ae643777e39b51411adfe992048669e812062188919eae0f90e90ede7f593debcb6f2c7ac99fbafff324b66a71f + checksum: 10c0/56a1d29b017a694f0350b44ba60bee88716208d7ae067ba09e94bab63b6d9110550eaa1c913131bce0f31cc87fcbc426a081f63c1a2cf337e4d53bc3ac4787c9 languageName: node linkType: hard @@ -16395,76 +16358,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.27.3": - version: 4.27.3 - resolution: "rollup@npm:4.27.3" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.3" - "@rollup/rollup-android-arm64": "npm:4.27.3" - "@rollup/rollup-darwin-arm64": "npm:4.27.3" - "@rollup/rollup-darwin-x64": "npm:4.27.3" - "@rollup/rollup-freebsd-arm64": "npm:4.27.3" - "@rollup/rollup-freebsd-x64": "npm:4.27.3" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.3" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.3" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.3" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.3" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.3" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.3" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.3" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.3" - "@rollup/rollup-linux-x64-musl": "npm:4.27.3" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.3" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.3" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.3" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/789885d3f852ed7ca45bed14194a2ac7a2cf16b6b62b54f691c79e27d5557d31a2d612d3680c26c527a1957e0bd6811806ddd765e0dae589404cf24544ff2838 - languageName: node - linkType: hard - -"rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.27.4, rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.27.4 resolution: "rollup@npm:4.27.4" dependencies: From 7b0aa3dec56298bb364516ac189aa32accc7dcc2 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 25 Nov 2024 18:09:45 +0000 Subject: [PATCH 0032/2162] ci: add @angular/build integration test to workflows Add integration test to workflows which are tracked on CI --- .ng-dev/dx-perf-workflows.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.ng-dev/dx-perf-workflows.yml b/.ng-dev/dx-perf-workflows.yml index 910dafc572ba..71a9e7498ca7 100644 --- a/.ng-dev/dx-perf-workflows.yml +++ b/.ng-dev/dx-perf-workflows.yml @@ -5,3 +5,9 @@ workflows: - bazel clean workflow: - bazel build //packages/angular/cli:npm_package + angular-build-integration: + name: Angular Build Integration + prepare: + - bazel clean + workflow: + - bazel test //packages/angular/build:integration_tests From 8f9fc59f2ef5ca0641d7b26d6ab6d438273dddf8 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 25 Nov 2024 14:45:41 +0000 Subject: [PATCH 0033/2162] fix(@angular/build): minimize reliance on esbuild `inject` to prevent code reordering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolved an issue where the use of `esbuild`'s `inject` feature caused incorrect reordering of class structures during bundling. This reordering affected extended classes, as illustrated below: ```js class e extends Ur { constructor(n, r, i) { super(n, r, i); } ngOnDestroy() { this.flush(); } static ɵfac = function (r) { return new (r || e)(pe(Xe), pe(Ti), pe(Di)); }; static ɵprov = oe({ token: e, factory: e.ɵfac }); } var Ur = class { // Class properties and methods omitted for brevity }; ``` By reducing the reliance on `inject`, we ensure that the ordering of class properties and methods remains consistent, preserving the expected behavior. Closes #28941 --- .../tools/esbuild/application-code-bundle.ts | 74 +++++++------------ ...tes-output-mode-server-platform-neutral.ts | 5 ++ 2 files changed, 33 insertions(+), 46 deletions(-) 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 ceb60c644949..3587ff99a618 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -254,9 +254,7 @@ export function createServerMainCodeBundleOptions( return (loadResultCache) => { const pluginOptions = createCompilerPluginOptions(options, sourceFileCache, loadResultCache); - const mainServerNamespace = 'angular:main-server'; - const mainServerInjectPolyfillsNamespace = 'angular:main-server-inject-polyfills'; const mainServerInjectManifestNamespace = 'angular:main-server-inject-manifest'; const zoneless = isZonelessApp(polyfills); const entryPoints: Record = { @@ -275,7 +273,9 @@ export function createServerMainCodeBundleOptions( const buildOptions: BuildOptions = { ...getEsBuildServerCommonOptions(options), target, - inject: [mainServerInjectPolyfillsNamespace, mainServerInjectManifestNamespace], + banner: { + js: `import './polyfills.server.mjs';`, + }, entryPoints, supported: getFeatureSupport(target, zoneless), plugins: [ @@ -311,18 +311,10 @@ export function createServerMainCodeBundleOptions( buildOptions.plugins.push( createServerBundleMetadata(), - createVirtualModulePlugin({ - namespace: mainServerInjectPolyfillsNamespace, - cache: loadResultCache, - loadContent: () => ({ - contents: `import './polyfills.server.mjs';`, - loader: 'js', - resolveDir: workspaceRoot, - }), - }), createVirtualModulePlugin({ namespace: mainServerInjectManifestNamespace, cache: loadResultCache, + entryPointOnly: false, loadContent: async () => { const contents: string[] = [ // Configure `@angular/ssr` manifest. @@ -348,16 +340,19 @@ export function createServerMainCodeBundleOptions( ); const contents: string[] = [ - // Re-export all symbols including default export from 'main.server.ts' - `export { default } from '${mainServerEntryPointJsImport}';`, - `export * from '${mainServerEntryPointJsImport}';`, + // Inject manifest + `import '${mainServerInjectManifestNamespace}';`, // Add @angular/ssr exports `export { - ɵdestroyAngularServerApp, - ɵextractRoutesAndCreateRouteTree, - ɵgetOrCreateAngularServerApp, - } from '@angular/ssr';`, + ɵdestroyAngularServerApp, + ɵextractRoutesAndCreateRouteTree, + ɵgetOrCreateAngularServerApp, + } from '@angular/ssr';`, + + // Re-export all symbols including default export from 'main.server.ts' + `export { default } from '${mainServerEntryPointJsImport}';`, + `export * from '${mainServerEntryPointJsImport}';`, ]; return { @@ -392,22 +387,24 @@ export function createSsrEntryCodeBundleOptions( return (loadResultCache) => { const pluginOptions = createCompilerPluginOptions(options, sourceFileCache, loadResultCache); - const ssrEntryNamespace = 'angular:ssr-entry'; const ssrInjectManifestNamespace = 'angular:ssr-entry-inject-manifest'; - const ssrInjectRequireNamespace = 'angular:ssr-entry-inject-require'; const isNodePlatform = options.ssrOptions?.platform !== ExperimentalPlatform.Neutral; - const inject: string[] = [ssrInjectManifestNamespace]; - if (isNodePlatform) { - inject.unshift(ssrInjectRequireNamespace); - } - const buildOptions: BuildOptions = { ...getEsBuildServerCommonOptions(options), target, + banner: isNodePlatform + ? { + js: [ + // Note: Needed as esbuild does not provide require shims / proxy from ESModules. + // See: https://github.com/evanw/esbuild/issues/1921. + `import { createRequire } from 'node:module';`, + `globalThis['require'] ??= createRequire(import.meta.url);`, + ].join('\n'), + } + : undefined, entryPoints: { - // TODO: consider renaming to index 'server': ssrEntryNamespace, }, supported: getFeatureSupport(target, true), @@ -420,7 +417,6 @@ export function createSsrEntryCodeBundleOptions( stylesheetBundler, ), ], - inject, }; buildOptions.plugins ??= []; @@ -443,27 +439,10 @@ export function createSsrEntryCodeBundleOptions( buildOptions.plugins.push( createServerBundleMetadata({ ssrEntryBundle: true }), - createVirtualModulePlugin({ - namespace: ssrInjectRequireNamespace, - cache: loadResultCache, - loadContent: () => { - const contents: string[] = [ - // Note: Needed as esbuild does not provide require shims / proxy from ESModules. - // See: https://github.com/evanw/esbuild/issues/1921. - `import { createRequire } from 'node:module';`, - `globalThis['require'] ??= createRequire(import.meta.url);`, - ]; - - return { - contents: contents.join('\n'), - loader: 'js', - resolveDir: workspaceRoot, - }; - }, - }), createVirtualModulePlugin({ namespace: ssrInjectManifestNamespace, cache: loadResultCache, + entryPointOnly: false, loadContent: () => { const contents: string[] = [ // Configure `@angular/ssr` app engine manifest. @@ -488,6 +467,9 @@ export function createSsrEntryCodeBundleOptions( serverEntryPoint, ); const contents: string[] = [ + // Configure `@angular/ssr` app engine manifest. + `import '${ssrInjectManifestNamespace}';`, + // Re-export all symbols including default export `import * as server from '${serverEntryPointJsImport}';`, `export * from '${serverEntryPointJsImport}';`, 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 fd7b7eea2de0..232e0745cef9 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 @@ -11,6 +11,7 @@ import { import { updateJsonFile, useSha } from '../../../utils/project'; import { getGlobalVariable } from '../../../utils/env'; import { findFreePort } from '../../../utils/network'; +import { readFile } from 'node:fs/promises'; export default async function () { assert( @@ -68,6 +69,10 @@ export default async function () { }, ]; `, + 'src/app/app.config.ts': ` + import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; + ${(await readFile('src/app/app.config.ts', 'utf8')).replace('provideRouter(routes),', 'provideAnimationsAsync(), provideRouter(routes),')} + `, 'src/server.ts': ` import { AngularAppEngine, createRequestHandler } from '@angular/ssr'; import { createApp, createRouter, toWebHandler, defineEventHandler, toWebRequest } from 'h3'; From 173dc0eeac0543e600244d40a2b94505904cbe66 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Thu, 21 Nov 2024 17:29:38 -0800 Subject: [PATCH 0034/2162] fix(@schematics/angular): skip SSR routing prompt in webcontainer Apparently `inquirer` requires `async_hooks` which isn't supported in webcontainers, therefore prompting the user fails. Instead we always fall back to the default option. See: https://github.com/SBoudrias/Inquirer.js/issues/1426 --- packages/schematics/angular/ssr/index.ts | 6 ++++++ packages/schematics/angular/ssr/index_spec.ts | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/schematics/angular/ssr/index.ts b/packages/schematics/angular/ssr/index.ts index 9aa44f6686d5..6249778a8594 100644 --- a/packages/schematics/angular/ssr/index.ts +++ b/packages/schematics/angular/ssr/index.ts @@ -451,6 +451,12 @@ async function isServerRoutingEnabled( 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?', diff --git a/packages/schematics/angular/ssr/index_spec.ts b/packages/schematics/angular/ssr/index_spec.ts index 7f917f8d4df6..a7de8d12f208 100644 --- a/packages/schematics/angular/ssr/index_spec.ts +++ b/packages/schematics/angular/ssr/index_spec.ts @@ -108,6 +108,7 @@ describe('SSR Schematic', () => { afterEach(() => { process.env['NG_FORCE_TTY'] = originalTty; + delete process.versions.webcontainer; }); it('should add script section in package.json', async () => { @@ -230,6 +231,22 @@ describe('SSR Schematic', () => { 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', () => { From 5320e875ce0e03b0c70d96fee382092eb7a11f1b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:16:48 -0500 Subject: [PATCH 0035/2162] refactor(@angular/build): maintain previous compiler plugin factory signature To minimize downstream breakage for consumers of the private API, the `createCompilerPlugin` function signature has been adjusted to maintain compatibility with v18. --- packages/angular/build/src/private.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/private.ts b/packages/angular/build/src/private.ts index 2f2fea08b385..069c7f25c868 100644 --- a/packages/angular/build/src/private.ts +++ b/packages/angular/build/src/private.ts @@ -13,6 +13,13 @@ * their existence may change in any future version. */ +import { + CompilerPluginOptions, + createCompilerPlugin as internalCreateCompilerPlugin, +} from './tools/esbuild/angular/compiler-plugin'; +import { ComponentStylesheetBundler } from './tools/esbuild/angular/component-stylesheets'; +import { BundleStylesheetOptions } from './tools/esbuild/stylesheets/bundle-options'; + // Builders export { buildApplicationInternal } from './builders/application'; export type { ApplicationBuilderInternalOptions } from './builders/application/options'; @@ -29,7 +36,20 @@ export { SassWorkerImplementation } from './tools/sass/sass-service'; export { SourceFileCache } from './tools/esbuild/angular/source-file-cache'; export { createJitResourceTransformer } from './tools/angular/transformers/jit-resource-transformer'; export { JavaScriptTransformer } from './tools/esbuild/javascript-transformer'; -export { createCompilerPlugin } from './tools/esbuild/angular/compiler-plugin'; + +export function createCompilerPlugin( + pluginOptions: CompilerPluginOptions, + styleOptions: BundleStylesheetOptions & { inlineStyleLanguage: string }, +): import('esbuild').Plugin { + return internalCreateCompilerPlugin( + pluginOptions, + new ComponentStylesheetBundler( + styleOptions, + styleOptions.inlineStyleLanguage, + pluginOptions.incremental, + ), + ); +} // Utilities export * from './utils/bundle-calculator'; From c685c70150d066644fc757d36cf79296429dc8a8 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 25 Nov 2024 10:09:19 +0000 Subject: [PATCH 0036/2162] fix(@angular/build): prevent errors with parameterized routes when `getPrerenderParams` is undefined Ensure that parameterized routes do not cause errors when the `getPrerenderParams` function is undefined, specifically in cases where the routing API is not utilized. Closes #28948 --- .../src/utils/server-rendering/routes-extractor-worker.ts | 2 +- .../e2e/tests/build/prerender/discover-routes-standalone.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts index ebdba2c18b3a..58a354855320 100644 --- a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts +++ b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts @@ -38,7 +38,7 @@ async function extractRoutes(): Promise { const { routeTree, appShellRoute, errors } = await extractRoutesAndCreateRouteTree( serverURL, undefined /** manifest */, - true /** invokeGetPrerenderParams */, + outputMode !== undefined /** invokeGetPrerenderParams */, outputMode === OutputMode.Server /** includePrerenderFallbackRoutes */, ); 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 9f5d0de3259f..2fd7b2facd7f 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 @@ -59,6 +59,10 @@ export default async function () { path: 'lazy-two', loadComponent: () => import('./lazy-two/lazy-two.component').then(c => c.LazyTwoComponent), }, + { + path: ':param', + component: OneComponent, + }, ]; `, ); From 11289c4982dfaada860a595fa386d6176f696322 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:50:09 -0500 Subject: [PATCH 0037/2162] docs: release notes for the v19.0.2 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82319a061463..5750c25a5c9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 19.0.2 (2024-11-25) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------- | +| [2f53e2af5](https://github.com/angular/angular-cli/commit/2f53e2af55794795979232b0f3e95359299e1aee) | fix | skip SSR routing prompt in webcontainer | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------- | +| [f9da163f8](https://github.com/angular/angular-cli/commit/f9da163f8852800763844ae89e85eaafe0c37f2b) | fix | minimize reliance on esbuild `inject` to prevent code reordering | +| [c497749e6](https://github.com/angular/angular-cli/commit/c497749e670e916e17a4e7fb0acb1abe26d9bd9a) | fix | prevent errors with parameterized routes when `getPrerenderParams` is undefined | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | +| [c8cd90e0f](https://github.com/angular/angular-cli/commit/c8cd90e0f601a6baa05b84e45bbd37b4bf6049f5) | fix | handle nested redirects not explicitly defined in router config | + + + # 19.0.1 (2024-11-21) From c81dd817dfd74a12ecfc51af612e91d4592ff000 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:16:59 -0500 Subject: [PATCH 0038/2162] fix(@angular/build): allow .json file replacements with application builds When using the `application` builder, the `fileReplacements` option will now work as it previous did with the `browser` builder when replacing JSON files. --- .../tests/options/file-replacements_spec.ts | 37 +++++++++++++++++++ .../tools/esbuild/angular/compiler-plugin.ts | 25 +++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 packages/angular/build/src/builders/application/tests/options/file-replacements_spec.ts diff --git a/packages/angular/build/src/builders/application/tests/options/file-replacements_spec.ts b/packages/angular/build/src/builders/application/tests/options/file-replacements_spec.ts new file mode 100644 index 000000000000..a937f0bc430a --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/options/file-replacements_spec.ts @@ -0,0 +1,37 @@ +/** + * @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: "fileReplacements"', () => { + it('should replace JSON files', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + fileReplacements: [{ replace: './src/one.json', with: './src/two.json' }], + }); + + await harness.modifyFile('tsconfig.json', (content) => { + const tsconfig = JSON.parse(content); + tsconfig.compilerOptions.resolveJsonModule = true; + + return JSON.stringify(tsconfig); + }); + + await harness.writeFile('./src/one.json', '{ "x": 12345 }'); + await harness.writeFile('./src/two.json', '{ "x": 67890 }'); + await harness.writeFile('src/main.ts', 'import { x } from "./one.json";\n console.log(x);'); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBe(true); + harness.expectFile('dist/browser/main.js').content.not.toContain('12345'); + harness.expectFile('dist/browser/main.js').content.toContain('67890'); + }); + }); +}); 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 2bff4b4278c8..0e3e3fa8e0fb 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -512,6 +512,31 @@ export function createCompilerPlugin( }), ); + // Add a load handler if there are file replacement option entries for JSON files + if ( + pluginOptions.fileReplacements && + Object.keys(pluginOptions.fileReplacements).some((value) => value.endsWith('.json')) + ) { + build.onLoad( + { filter: /\.json$/ }, + createCachedLoad(pluginOptions.loadResultCache, async (args) => { + const replacement = pluginOptions.fileReplacements?.[path.normalize(args.path)]; + if (replacement) { + return { + contents: await import('fs/promises').then(({ readFile }) => + readFile(path.normalize(replacement)), + ), + loader: 'json' as const, + watchFiles: [replacement], + }; + } + + // If no replacement defined, let esbuild handle it directly + return null; + }), + ); + } + // Setup bundling of component templates and stylesheets when in JIT mode if (pluginOptions.jit) { setupJitPluginCallbacks( From 6714d900cbd07078579c2aa7139c8a880600964f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:13:29 -0500 Subject: [PATCH 0039/2162] ci: use pinned version for google-github-actions/auth action --- .github/workflows/perf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 3952c0135a16..505581ee58e4 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -45,7 +45,7 @@ jobs: # identity federation. This allows us to request short lived credentials on demand, rather than storing # credentials in secrets long term. More information can be found at: # https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform - - uses: 'google-github-actions/auth@v2' + - uses: google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f # v2.1.7 with: project_id: 'internal-200822' workload_identity_provider: 'projects/823469418460/locations/global/workloadIdentityPools/measurables-tracking/providers/angular' From 18041aab7060b83231a0268d877c1db39b36e218 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 26 Nov 2024 15:48:41 +0000 Subject: [PATCH 0040/2162] build: update to vite version 6 This commit updates vite to version 6 --- package.json | 2 +- packages/angular/build/package.json | 2 +- .../src/builders/dev-server/vite-server.ts | 42 ++++--------- .../vite/plugins/ssr-transform-plugin.ts | 32 ++++------ .../vite/reuse-dep-optimization-cache.ts | 13 ++-- .../tests/vite/ssr-new-dep-optimization.ts | 49 +++++++++++++++ yarn.lock | 60 +++++++++++++++++-- 7 files changed, 139 insertions(+), 61 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts diff --git a/package.json b/package.json index 9ef29121758c..62a336e44e3e 100644 --- a/package.json +++ b/package.json @@ -207,7 +207,7 @@ "unenv": "^1.10.0", "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", - "vite": "5.4.11", + "vite": "6.0.0", "watchpack": "2.4.2", "webpack": "5.96.1", "webpack-dev-middleware": "7.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index f406aa8d7699..45be5d3b49d5 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -41,7 +41,7 @@ "rollup": "4.27.4", "sass": "1.81.0", "semver": "7.6.3", - "vite": "5.4.11", + "vite": "6.0.0", "watchpack": "2.4.2" }, "optionalDependencies": { 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 dfbbc8454b53..39b27b2bd6c7 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -273,7 +273,6 @@ export async function* serveWithVite( } // To avoid disconnecting the array objects from the option, these arrays need to be mutated instead of replaced. - let requiresServerRestart = false; if (result.detail?.['externalMetadata']) { const { implicitBrowser, implicitServer, explicit } = result.detail[ 'externalMetadata' @@ -283,15 +282,6 @@ export async function* serveWithVite( ); const implicitBrowserFiltered = implicitBrowser.filter((m) => !isAbsoluteUrl(m)); - if (browserOptions.ssr && serverOptions.prebundle !== false) { - const previousImplicitServer = new Set(externalMetadata.implicitServer); - // Restart the server to force SSR dep re-optimization when a dependency has been added. - // This is a workaround for: https://github.com/vitejs/vite/issues/14896 - requiresServerRestart = implicitServerFiltered.some( - (dep) => !previousImplicitServer.has(dep), - ); - } - // Empty Arrays to avoid growing unlimited with every re-build. externalMetadata.explicitBrowser.length = 0; externalMetadata.explicitServer.length = 0; @@ -317,20 +307,14 @@ export async function* serveWithVite( ...new Set([...server.config.server.fs.allow, ...assetFiles.values()]), ]; - if (requiresServerRestart) { - // Restart the server to force SSR dep re-optimization when a dependency has been added. - // This is a workaround for: https://github.com/vitejs/vite/issues/14896 - await server.restart(); - } else { - await handleUpdate( - normalizePath, - generatedFiles, - server, - serverOptions, - context.logger, - componentStyles, - ); - } + await handleUpdate( + normalizePath, + generatedFiles, + server, + serverOptions, + context.logger, + componentStyles, + ); } else { const projectName = context.target?.project; if (!projectName) { @@ -475,6 +459,11 @@ async function handleUpdate( return; } + if (destroyAngularServerAppCalled) { + // Trigger module evaluation before reload to initiate dependency optimization. + await server.ssrLoadModule('/main.server.mjs'); + } + if (serverOptions.hmr) { if (updatedFiles.every((f) => f.endsWith('.css'))) { let requiresReload = false; @@ -705,11 +694,6 @@ export async function setupServer( // the Vite client-side code for browser reloading. These would be available by default but when // the `allow` option is explicitly configured, they must be included manually. allow: [cacheDir, join(serverOptions.workspaceRoot, 'node_modules'), ...assets.values()], - - // Temporary disable cached FS checks. - // This is because we configure `config.base` to a virtual directory which causes `getRealPath` to fail. - // See: https://github.com/vitejs/vite/blob/b2873ac3936de25ca8784327cb9ef16bd4881805/packages/vite/src/node/fsUtils.ts#L45-L67 - cachedChecks: false, }, // This is needed when `externalDependencies` is used to prevent Vite load errors. // NOTE: If Vite adds direct support for externals, this can be removed. diff --git a/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts b/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts index 0b164dee5b46..b3af4824eb54 100644 --- a/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts @@ -7,6 +7,7 @@ */ import remapping, { SourceMapInput } from '@ampproject/remapping'; +import type { SourceDescription } from 'rollup'; import type { Plugin } from 'vite'; import { loadEsmModule } from '../../../utils/load-esm'; @@ -15,28 +16,19 @@ export async function createAngularSsrTransformPlugin(workspaceRoot: string): Pr return { name: 'vite:angular-ssr-transform', - enforce: 'pre', - async configureServer(server) { - const originalssrTransform = server.ssrTransform; + enforce: 'post', + transform(code, _id, { ssr, inMap }: { ssr?: boolean; inMap?: SourceMapInput } = {}) { + if (!ssr || !inMap) { + return null; + } - server.ssrTransform = async (code, map, url, originalCode) => { - const result = await originalssrTransform(code, null, url, originalCode); - if (!result || !result.map || !map) { - return result; - } + const remappedMap = remapping([inMap], () => null); + // Set the sourcemap root to the workspace root. This is needed since we set a virtual path as root. + remappedMap.sourceRoot = normalizePath(workspaceRoot) + '/'; - const remappedMap = remapping( - [result.map as SourceMapInput, map as SourceMapInput], - () => null, - ); - - // Set the sourcemap root to the workspace root. This is needed since we set a virtual path as root. - remappedMap.sourceRoot = normalizePath(workspaceRoot) + '/'; - - return { - ...result, - map: remappedMap as (typeof result)['map'], - }; + return { + code, + map: remappedMap as SourceDescription['map'], }; }, }; diff --git a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts b/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts index f4b93ccfcd2f..9ffc9aa67c6a 100644 --- a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts +++ b/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts @@ -17,17 +17,18 @@ export default async function () { await execAndWaitForOutputToMatch( 'ng', ['serve', '--port', `${port}`], - /Dependencies bundled/, + /bundle generation complete/, // Use CI:0 to force caching { DEBUG: 'vite:deps', CI: '0' }, ); - // Make request so that vite writes the cache. - const response = await fetch(`http://localhost:${port}/main.js`); - assert(response.ok, `Expected 'response.ok' to be 'true'.`); - // Wait for vite to write to FS and stablize. - await waitForAnyProcessOutputToMatch(/dependencies optimized/, 5000); + await Promise.all([ + waitForAnyProcessOutputToMatch(/dependencies optimized/, 5000), + fetch(`http://localhost:${port}/main.js`).then((r) => + assert(r.ok, `Expected 'response.ok' to be 'true'.`), + ), + ]); // Terminate the dev-server await killAllProcesses(); 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 new file mode 100644 index 000000000000..e237ad41de80 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts @@ -0,0 +1,49 @@ +import assert from 'node:assert'; +import { ng, waitForAnyProcessOutputToMatch } from '../../utils/process'; +import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; +import { ngServe, useSha } from '../../utils/project'; +import { getGlobalVariable } from '../../utils/env'; +import { readFile, writeFile } from '../../utils/fs'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + // Enable caching to test real development workflow. + await ng('cache', 'clean'); + await ng('cache', 'on'); + + // 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 useSha(); + await installWorkspacePackages(); + + const port = await ngServe(); + await validateResponse('/', /Hello,/); + + await Promise.all([ + waitForAnyProcessOutputToMatch( + /new dependencies optimized: @angular\/platform-browser\/animations\/async/, + 6000, + ), + writeFile( + 'src/app/app.config.ts', + ` + import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; + ${(await readFile('src/app/app.config.ts')).replace('provideRouter(routes),', 'provideAnimationsAsync(), provideRouter(routes),')} + `, + ), + ]); + + // Verify the app still works. + await validateResponse('/', /Hello,/); + + async function validateResponse(pathname: string, match: RegExp): Promise { + const response = await fetch(new URL(pathname, `http://localhost:${port}`)); + const text = await response.text(); + assert.match(text, match); + } +} diff --git a/yarn.lock b/yarn.lock index b20c012d077d..3bfb644450b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -395,7 +395,7 @@ __metadata: rollup: "npm:4.27.4" sass: "npm:1.81.0" semver: "npm:7.6.3" - vite: "npm:5.4.11" + vite: "npm:6.0.0" watchpack: "npm:2.4.2" peerDependencies: "@angular/compiler": ^19.0.0 @@ -782,7 +782,7 @@ __metadata: unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:5.4.11" + vite: "npm:6.0.0" watchpack: "npm:2.4.2" webpack: "npm:5.96.1" webpack-dev-middleware: "npm:7.4.2" @@ -15366,7 +15366,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.49, postcss@npm:^8.2.14, postcss@npm:^8.4.33, postcss@npm:^8.4.43, postcss@npm:^8.4.47": +"postcss@npm:8.4.49, postcss@npm:^8.2.14, postcss@npm:^8.4.33, postcss@npm:^8.4.43, postcss@npm:^8.4.47, postcss@npm:^8.4.49": version: 8.4.49 resolution: "postcss@npm:8.4.49" dependencies: @@ -16358,7 +16358,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.27.4, rollup@npm:^4.20.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.27.4, rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.27.4 resolution: "rollup@npm:4.27.4" dependencies: @@ -18761,6 +18761,58 @@ __metadata: languageName: node linkType: hard +"vite@npm:6.0.0": + version: 6.0.0 + resolution: "vite@npm:6.0.0" + dependencies: + esbuild: "npm:^0.24.0" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.49" + rollup: "npm:^4.23.0" + peerDependencies: + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/2516144161c108452691ec1379aefd8f3201da8f225e628cb1cdb7b35b92d856d990cd31f1c36c0f36517346efe181ea3c096a04bc846c5b0d1416b7b7111af8 + languageName: node + linkType: hard + "void-elements@npm:^2.0.0": version: 2.0.1 resolution: "void-elements@npm:2.0.1" From 3dd3b2218b8ba4d792e1ea50cc2885f3135b75a5 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 26 Nov 2024 07:30:57 +0000 Subject: [PATCH 0041/2162] fix(@angular/ssr): ensure compatibility for `Http2ServerResponse` type Updated the `Http2ServerResponse` interface to eliminate dependency on generics, ensuring compatibility across multiple versions of `@types/node`. Closes #28965 --- goldens/public-api/angular/ssr/node/index.api.md | 2 +- packages/angular/ssr/node/src/response.ts | 4 ++-- packages/angular/ssr/node/test/request_http2_spec.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/goldens/public-api/angular/ssr/node/index.api.md b/goldens/public-api/angular/ssr/node/index.api.md index 6488d0f363dd..0bbeb8ae145a 100644 --- a/goldens/public-api/angular/ssr/node/index.api.md +++ b/goldens/public-api/angular/ssr/node/index.api.md @@ -57,7 +57,7 @@ export function isMainModule(url: string): boolean; export type NodeRequestHandlerFunction = (req: IncomingMessage, res: ServerResponse, next: (err?: unknown) => void) => Promise | void; // @public -export function writeResponseToNodeResponse(source: Response, destination: ServerResponse | Http2ServerResponse): Promise; +export function writeResponseToNodeResponse(source: Response, destination: ServerResponse | Http2ServerResponse): Promise; // (No @packageDocumentation comment for this package) diff --git a/packages/angular/ssr/node/src/response.ts b/packages/angular/ssr/node/src/response.ts index 936693c2b168..c3f397a83bb4 100644 --- a/packages/angular/ssr/node/src/response.ts +++ b/packages/angular/ssr/node/src/response.ts @@ -7,7 +7,7 @@ */ import type { ServerResponse } from 'node:http'; -import type { Http2ServerRequest, Http2ServerResponse } from 'node:http2'; +import type { Http2ServerResponse } from 'node:http2'; /** * Streams a web-standard `Response` into a Node.js `ServerResponse` @@ -23,7 +23,7 @@ import type { Http2ServerRequest, Http2ServerResponse } from 'node:http2'; */ export async function writeResponseToNodeResponse( source: Response, - destination: ServerResponse | Http2ServerResponse, + destination: ServerResponse | Http2ServerResponse, ): Promise { const { status, headers, body } = source; destination.statusCode = status; diff --git a/packages/angular/ssr/node/test/request_http2_spec.ts b/packages/angular/ssr/node/test/request_http2_spec.ts index 61f12eada863..4d9754d20cfc 100644 --- a/packages/angular/ssr/node/test/request_http2_spec.ts +++ b/packages/angular/ssr/node/test/request_http2_spec.ts @@ -32,7 +32,7 @@ describe('createWebRequestFromNodeRequest (HTTP/2)', () => { async function getNodeRequest(): Promise { const { req, res } = await new Promise<{ req: Http2ServerRequest; - res: Http2ServerResponse; + res: Http2ServerResponse; }>((resolve) => { server.once('request', (req, res) => resolve({ req, res })); }); From 7554cc1ec2c023db605ef1531daa5d8453f89315 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 26 Nov 2024 23:19:12 +0000 Subject: [PATCH 0042/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 ++-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 ++-- package.json | 28 +-- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- yarn.lock | 208 +++++++++--------- 11 files changed, 190 insertions(+), 190 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 861a43d674fe..5d1211ade5a2 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@01c8c16f830d02110c28640aea16f145a7937080 + - uses: angular/dev-infra/github-actions/branch-manager@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aee24f91ee49..c2d5adfa124f 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@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - 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@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - run: yarn 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 df5b81929b44..d056ac5499c3 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@01c8c16f830d02110c28640aea16f145a7937080 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa 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@01c8c16f830d02110c28640aea16f145a7937080 + - uses: angular/dev-infra/github-actions/post-approval-changes@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index b559b4379f65..2c8610027d49 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@01c8c16f830d02110c28640aea16f145a7937080 + - uses: angular/dev-infra/github-actions/feature-request@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 505581ee58e4..ab8c1fb6b9e9 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -21,7 +21,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - id: workflows @@ -36,9 +36,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable # 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 609bb7103d37..4e4ec07057d0 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@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/linting/licenses@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Check tooling setup run: yarn 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@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@01c8c16f830d02110c28640aea16f145a7937080 + uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 62a336e44e3e..cc9de9b869aa 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.0.0", + "@angular/animations": "19.0.1", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#b982d44b3ccd2f2fffede6cf18a80858fa6294ea", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9", "@angular/cdk": "19.0.0", - "@angular/common": "19.0.0", - "@angular/compiler": "19.0.0", - "@angular/compiler-cli": "19.0.0", - "@angular/core": "19.0.0", - "@angular/forms": "19.0.0", - "@angular/localize": "19.0.0", + "@angular/common": "19.0.1", + "@angular/compiler": "19.0.1", + "@angular/compiler-cli": "19.0.1", + "@angular/core": "19.0.1", + "@angular/forms": "19.0.1", + "@angular/localize": "19.0.1", "@angular/material": "19.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0692d4d0707f3a40f862e761eaf0be3b693326df", - "@angular/platform-browser": "19.0.0", - "@angular/platform-browser-dynamic": "19.0.0", - "@angular/platform-server": "19.0.0", - "@angular/router": "19.0.0", - "@angular/service-worker": "19.0.0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e", + "@angular/platform-browser": "19.0.1", + "@angular/platform-browser-dynamic": "19.0.1", + "@angular/platform-server": "19.0.1", + "@angular/router": "19.0.1", + "@angular/service-worker": "19.0.1", "@babel/core": "7.26.0", "@babel/generator": "7.26.2", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 8e469f216f1a..d0573b6b03be 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -22,12 +22,12 @@ "@angular/router": "^19.0.0" }, "devDependencies": { - "@angular/common": "19.0.0", - "@angular/compiler": "19.0.0", - "@angular/core": "19.0.0", - "@angular/platform-browser": "19.0.0", - "@angular/platform-server": "19.0.0", - "@angular/router": "19.0.0", + "@angular/common": "19.0.1", + "@angular/compiler": "19.0.1", + "@angular/core": "19.0.1", + "@angular/platform-browser": "19.0.1", + "@angular/platform-server": "19.0.1", + "@angular/router": "19.0.1", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index f65aac958b81..5f75e6abb705 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.0.0", - "@angular/compiler-cli": "19.0.0", + "@angular/compiler": "19.0.1", + "@angular/compiler-cli": "19.0.1", "typescript": "5.6.3", "webpack": "5.96.1" } diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index e53ae60f3199..9d29f9e566ef 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#d556dfe0934dbe15b2d40aa928057ed84f6c1dab", - "@angular/cdk": "github:angular/cdk-builds#07ce63c9e73f7a3c1c7399991040ff85b747aed7", - "@angular/common": "github:angular/common-builds#b9143f94f42c64a2549277074866efbf7b8ea88a", - "@angular/compiler": "github:angular/compiler-builds#000b84adcdbd4bd0fb5aaa823dc57ba3f6a157df", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#5be3e2821b17a8d9731d0579d4931be3cafcd0fa", - "@angular/core": "github:angular/core-builds#ba72f958fdccb05c26383409101f926443df7d86", - "@angular/forms": "github:angular/forms-builds#2b45b91d826751fe825d492f638668d1a87da976", - "@angular/language-service": "github:angular/language-service-builds#cf7edcd59f99947f9f9f48bafd82652254150fd8", - "@angular/localize": "github:angular/localize-builds#a26d5a58cde2dee97212d3acb3e1d12ce34f90fe", - "@angular/material": "github:angular/material-builds#d2a89e777060e95e7dac48ab977d83706c0ea3fc", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9e4cbd45909675403dcf6ea72395bd32cce04e3f", - "@angular/platform-browser": "github:angular/platform-browser-builds#61c057963b4bf2b62b58dc1072262710a9ef089a", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a4bbc7c764fed319c2f3b49152973d1ba2580a9a", - "@angular/platform-server": "github:angular/platform-server-builds#17a92c7b3a0304448fe565ad129e7b61d286d6c7", - "@angular/router": "github:angular/router-builds#43ad1f93ded4d4851ed9fe5aa5a8ffffb27045f1", - "@angular/service-worker": "github:angular/service-worker-builds#2e68502cdfb84bca8ad2539d14b401e7f41d75a3" + "@angular/animations": "github:angular/animations-builds#5fc988ce4748193fe8d01a163ded4d0b2994ebf2", + "@angular/cdk": "github:angular/cdk-builds#71de1cc97034a940d48de0b2a4170a7467a4ba05", + "@angular/common": "github:angular/common-builds#12e8b1d681dc346d72225ea6c0bec691caa18e6e", + "@angular/compiler": "github:angular/compiler-builds#fff333d49a30caf27f97a0c7992991ee7c753d73", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#93172d90196028fa0d5036271c7720090e25f8d1", + "@angular/core": "github:angular/core-builds#3b7c1bb1a152aafe716081433bea1642b789d387", + "@angular/forms": "github:angular/forms-builds#f2e85d1556c984f8922fe7a2fdbe4590fe598b6f", + "@angular/language-service": "github:angular/language-service-builds#cacc16acef1ce14cbbbdb55adaca42f618c9a1de", + "@angular/localize": "github:angular/localize-builds#8c62e2242cbbebdfc8f7486fa4a70b2940673c3c", + "@angular/material": "github:angular/material-builds#352755fa607cda7647c13012d561694c834282dc", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#85a8c12a6f819ced29d79aea93cc950faf10f667", + "@angular/platform-browser": "github:angular/platform-browser-builds#4c6f919db36f1b0e54ead1aa26863239f31aa810", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7b858ec01e258b750c48cb56d65342f1d25b2b6d", + "@angular/platform-server": "github:angular/platform-server-builds#936283e829cec55f2902159acef616ada3632f1d", + "@angular/router": "github:angular/router-builds#83d5efe0a005f0f2f31373316ca5e8eae591d148", + "@angular/service-worker": "github:angular/service-worker-builds#8e819415a04fe7aec9c32dffb71eca331916a1df" } } diff --git a/yarn.lock b/yarn.lock index 3bfb644450b5..ba5f9c6e6f47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -245,14 +245,14 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/animations@npm:19.0.0" +"@angular/animations@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/animations@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0 - checksum: 10c0/57414011f82c3bb3e4b147d61edb8350630c93e51652b0125c76b04d840aed5ed46b9a57daa433414c07e069c77633d7dedbab5a08011381f08b3bb1f75a42dd + "@angular/core": 19.0.1 + checksum: 10c0/ebacea8ea6a7f1b51fce210c8d7ad72eb902c6b65f35b231b3b746a3e70ffcb28b867ab1926b07b1bcc6326ef9e43e18b8e689b8cd01603d3d08226251635585 languageName: node linkType: hard @@ -324,9 +324,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#b982d44b3ccd2f2fffede6cf18a80858fa6294ea": - version: 0.0.0-01c8c16f830d02110c28640aea16f145a7937080 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=b982d44b3ccd2f2fffede6cf18a80858fa6294ea" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9": + version: 0.0.0-9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=41d5efafd8094da3c8455e1b54b381e346d0c7a9" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.0.0" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/f1ed2f3b5289d6c8fe59bd0d248d18fd2208df0d2371a546e88f7f7b384948a05a796cb7fee06dcb469045361f1e53e2f1534231ffcc9c908510eecf93c38347 + checksum: 10c0/25b877186449ab1545f8c0f74e0a9ce5bcf2ac3b13f1ebbaa8caf1fcb8e1f2ca926fb1a33e2fcc4cad3480ac58d7ae01490740945c9297f1728c09a9b8b25b13 languageName: node linkType: hard @@ -539,21 +539,21 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/common@npm:19.0.0" +"@angular/common@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/common@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0 + "@angular/core": 19.0.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/40e682b31755130aee6c8a7aa05f1712cde9807792d05257f96c8230281606f4ac0d58a21224730febeea6195429211c16e651b7749acac0951f91a864d9a4bd + checksum: 10c0/20791a8eeafc701bcff8939f26441e696a62dac8f15e3a834345e30857ec11b2e213c44259af2ca26bfcea2b10a9f18b5752ebd2d087518911cceddd85f2daa9 languageName: node linkType: hard -"@angular/compiler-cli@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/compiler-cli@npm:19.0.0" +"@angular/compiler-cli@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/compiler-cli@npm:19.0.1" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -564,39 +564,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.0 + "@angular/compiler": 19.0.1 typescript: ">=5.5 <5.7" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/752afc1ece28b5688a0c66e2cbb2a9a0a545be651e2a1b00784e808f3fb3acbece82bc34ab7dec2f7f5dc692c83d4ef8e686c1aa975bde90e5918abcf63877fe + checksum: 10c0/fe250abccdf5be4be611404cf78d4151054c9f7c228106244f94e4cfa858bf333877d729423af6c6ef1ab1f5fbfcc5f0f81264bbfe76b1f3ac27eae05b8b7995 languageName: node linkType: hard -"@angular/compiler@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/compiler@npm:19.0.0" +"@angular/compiler@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/compiler@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.0 + "@angular/core": 19.0.1 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/248134ebe309dc64a24b79e0c998381cf1415de643e7f36656c61a9a709c68d46f3590b7a952b6205325acd94c98e7fcc1ef5db2d37c41359f9f7493cdb64e68 + checksum: 10c0/e5588d14fe1d829f1bede996f33a5c7c48c77cb02954085f18f5b1d60fbfe2c7212c48febed33f7b4d457b107af4a58a866f2c3f5cb3751766f44fa4aec7ab25 languageName: node linkType: hard -"@angular/core@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/core@npm:19.0.0" +"@angular/core@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/core@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/b4530c254fdfc2ebe721becbae0be3b38e7b305382c56a3511eb24e8d972299859dfe2a96049fe5eb685b86434f123af55a9e9135c3f158de194571a7ce5f51b + checksum: 10c0/b9c9178de2d729faee24ddf7548b2de166aa30d257363cb3748e5dbe6e8007075a32ea800d61d84eec6fba83e734c7c2d0f2f17e68433e67183c517d7d0e3355 languageName: node linkType: hard @@ -627,23 +627,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.0.0" + "@angular/animations": "npm:19.0.1" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#b982d44b3ccd2f2fffede6cf18a80858fa6294ea" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9" "@angular/cdk": "npm:19.0.0" - "@angular/common": "npm:19.0.0" - "@angular/compiler": "npm:19.0.0" - "@angular/compiler-cli": "npm:19.0.0" - "@angular/core": "npm:19.0.0" - "@angular/forms": "npm:19.0.0" - "@angular/localize": "npm:19.0.0" + "@angular/common": "npm:19.0.1" + "@angular/compiler": "npm:19.0.1" + "@angular/compiler-cli": "npm:19.0.1" + "@angular/core": "npm:19.0.1" + "@angular/forms": "npm:19.0.1" + "@angular/localize": "npm:19.0.1" "@angular/material": "npm:19.0.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#0692d4d0707f3a40f862e761eaf0be3b693326df" - "@angular/platform-browser": "npm:19.0.0" - "@angular/platform-browser-dynamic": "npm:19.0.0" - "@angular/platform-server": "npm:19.0.0" - "@angular/router": "npm:19.0.0" - "@angular/service-worker": "npm:19.0.0" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e" + "@angular/platform-browser": "npm:19.0.1" + "@angular/platform-browser-dynamic": "npm:19.0.1" + "@angular/platform-server": "npm:19.0.1" + "@angular/router": "npm:19.0.1" + "@angular/service-worker": "npm:19.0.1" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.2" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -800,36 +800,36 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/forms@npm:19.0.0" +"@angular/forms@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/forms@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0 - "@angular/core": 19.0.0 - "@angular/platform-browser": 19.0.0 + "@angular/common": 19.0.1 + "@angular/core": 19.0.1 + "@angular/platform-browser": 19.0.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/d786fb950646af889f38bdc6be3ec0683fcdf7a8d33df37daa981cfb318f3d7676aeb249a4ea34cc20bf2bc182ee67a68dc163a4a94aab6fc94b7c51f6d7aaef + checksum: 10c0/0dc8bd1737469bf733f8d5386ef0cac7753bac170eb7f4d309f54f71d3808e8ed906ee87d45d4560d19f118bc51f25c7b5c8845b606b0fe74689f03e63d76926 languageName: node linkType: hard -"@angular/localize@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/localize@npm:19.0.0" +"@angular/localize@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/localize@npm:19.0.1" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.0 - "@angular/compiler-cli": 19.0.0 + "@angular/compiler": 19.0.1 + "@angular/compiler-cli": 19.0.1 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/fc763563b6bb8e52510399aa222f825c1447e987529a4381334ae33f31203ef8a7f76a2f73b1d694c2daa960cd0f14e9ab5bb7675bf6ec7b09f6045ffed137ba + checksum: 10c0/3306748a3f616df313fadfcce00ff939fe90ef1aba808a4c835be6fd2b48e33acab23d47039d076cb1f448ca5858c687f5e81fa90887195ac58696e9a9d93b0c languageName: node linkType: hard @@ -850,9 +850,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#0692d4d0707f3a40f862e761eaf0be3b693326df": - version: 0.0.0-087663a8d219df913630fdf80dea5d99b9ec6d18 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=0692d4d0707f3a40f862e761eaf0be3b693326df" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e": + version: 0.0.0-9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=47ccf2ca29307997c021994c859c03c71fae686e" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -867,53 +867,53 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/513f03b8909930f568b93fb04138989f325067d90a88d79cabb1b0bcf6a30935d2445396e831f53995a1912454a9ceb16e4d462fc5735762f1377d95c4f2ed5c + checksum: 10c0/0f2dbafb69c2abeaf1da70a35c3b1d5d2483d49d59927214daaa83383fbf662edc411b54045a9539402101483b30966525933806da9e4a2add2544a0d737994f languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/platform-browser-dynamic@npm:19.0.0" +"@angular/platform-browser-dynamic@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/platform-browser-dynamic@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0 - "@angular/compiler": 19.0.0 - "@angular/core": 19.0.0 - "@angular/platform-browser": 19.0.0 - checksum: 10c0/b0ce2c74d0227eae0783512cd8d65fa3629675f3234727b09fdf267da9bb85b588506613abfcab776f8c1961c22bddf9a1428e9e625756ca31ce8cb0873dc59e + "@angular/common": 19.0.1 + "@angular/compiler": 19.0.1 + "@angular/core": 19.0.1 + "@angular/platform-browser": 19.0.1 + checksum: 10c0/e1d7555d361d50435d68ca68c499aea945a428c917f2871a1f1c4900e4d1615f7929d945e55696b0492998474f5e66da0290977a58930ad14fcd52ea2eaf35d3 languageName: node linkType: hard -"@angular/platform-browser@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/platform-browser@npm:19.0.0" +"@angular/platform-browser@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/platform-browser@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.0.0 - "@angular/common": 19.0.0 - "@angular/core": 19.0.0 + "@angular/animations": 19.0.1 + "@angular/common": 19.0.1 + "@angular/core": 19.0.1 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/9ea20ed89a40725b842630f98190df5416f363c7ad40a1fec2d82b726c398f49fd061a0ebd27ea9af4c647a62616edea9253e98cd4992930243fe51000e39bc2 + checksum: 10c0/c810b17ded350e2d694f327310860c31d934a82e02f56bbb80f9a6f6bb96ac85493d27007f4b0f42bcc3ef152a4482e400b6217364a7078ed900e38e42201f3c languageName: node linkType: hard -"@angular/platform-server@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/platform-server@npm:19.0.0" +"@angular/platform-server@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/platform-server@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.0.0 - "@angular/common": 19.0.0 - "@angular/compiler": 19.0.0 - "@angular/core": 19.0.0 - "@angular/platform-browser": 19.0.0 - checksum: 10c0/644c24748dd93b93f2c58768190a7b8ed416e1cb8a95dfd8340ef0b4e23934e29438ec899a10695420246e4d4684a54d7128e381ab35a54aa7bb5bcb843a3deb + "@angular/animations": 19.0.1 + "@angular/common": 19.0.1 + "@angular/compiler": 19.0.1 + "@angular/core": 19.0.1 + "@angular/platform-browser": 19.0.1 + checksum: 10c0/1418b813a1eda77e24139624286a1aaf5ad45c3759d685c4359cce51dfe7bb66cf432039cdab5181031a3cace16bc357c4ab0c4cab64daea756e159cf2991a01 languageName: node linkType: hard @@ -932,31 +932,31 @@ __metadata: languageName: unknown linkType: soft -"@angular/router@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/router@npm:19.0.0" +"@angular/router@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/router@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0 - "@angular/core": 19.0.0 - "@angular/platform-browser": 19.0.0 + "@angular/common": 19.0.1 + "@angular/core": 19.0.1 + "@angular/platform-browser": 19.0.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/291a623f105af0b39dd4ee65f81ecece553b83053ea8e611b8583cfe020bcb64531e232fcdc20a9938e59ceecbf990287fce78023dc86a06485bf222e4fa174e + checksum: 10c0/6f717d2c8c31e52094909d964f7187a12cdfcfcb5fceec03fa4f2d5897086ed5b5ae9e722c8a004258f15f406a109b5cdf5e35783fe8c75345360dcdc68c3a46 languageName: node linkType: hard -"@angular/service-worker@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/service-worker@npm:19.0.0" +"@angular/service-worker@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/service-worker@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.0 - "@angular/core": 19.0.0 + "@angular/common": 19.0.1 + "@angular/core": 19.0.1 bin: ngsw-config: ngsw-config.js - checksum: 10c0/7f8135dd5129448a4c73d85c7081f5801d8864f107f9a16364ee91864b9cb5025158eae60b4fba3df65eb10349dba373beddda3f2014869ccc3db605a3030be3 + checksum: 10c0/b9dbf95b95038a9999afb04b6a93294042463a4d6c0519f9dede7bab91af57225fe4a556c031ca343ca19065cf4b7daec6a3c8c14a841d9524dec8507161a8a0 languageName: node linkType: hard @@ -964,12 +964,12 @@ __metadata: version: 0.0.0-use.local resolution: "@angular/ssr@workspace:packages/angular/ssr" dependencies: - "@angular/common": "npm:19.0.0" - "@angular/compiler": "npm:19.0.0" - "@angular/core": "npm:19.0.0" - "@angular/platform-browser": "npm:19.0.0" - "@angular/platform-server": "npm:19.0.0" - "@angular/router": "npm:19.0.0" + "@angular/common": "npm:19.0.1" + "@angular/compiler": "npm:19.0.1" + "@angular/core": "npm:19.0.1" + "@angular/platform-browser": "npm:19.0.1" + "@angular/platform-server": "npm:19.0.1" + "@angular/router": "npm:19.0.1" "@bazel/runfiles": "npm:^5.8.1" tslib: "npm:^2.3.0" peerDependencies: @@ -3628,8 +3628,8 @@ __metadata: resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.0.0" - "@angular/compiler-cli": "npm:19.0.0" + "@angular/compiler": "npm:19.0.1" + "@angular/compiler-cli": "npm:19.0.1" typescript: "npm:5.6.3" webpack: "npm:5.96.1" peerDependencies: From 3a22d4435b33e48247443127eb4e1497d3574eac Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 27 Nov 2024 07:18:12 +0000 Subject: [PATCH 0043/2162] build: update all non-major dependencies --- package.json | 6 +-- packages/angular/build/package.json | 6 +-- .../angular_devkit/build_angular/package.json | 2 +- .../angular_devkit/schematics/package.json | 2 +- yarn.lock | 44 +++++++++++++------ 5 files changed, 39 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index cc9de9b869aa..0dc7734f0bd5 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "@types/yarnpkg__lockfile": "^1.1.5", "@typescript-eslint/eslint-plugin": "8.16.0", "@typescript-eslint/parser": "8.16.0", - "@vitejs/plugin-basic-ssl": "1.1.0", + "@vitejs/plugin-basic-ssl": "1.2.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", "ajv": "8.17.1", @@ -165,7 +165,7 @@ "lmdb": "3.1.6", "loader-utils": "3.3.1", "lodash": "^4.17.21", - "magic-string": "0.30.13", + "magic-string": "0.30.14", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", "ng-packagr": "19.0.1", @@ -207,7 +207,7 @@ "unenv": "^1.10.0", "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", - "vite": "6.0.0", + "vite": "6.0.1", "watchpack": "2.4.2", "webpack": "5.96.1", "webpack-dev-middleware": "7.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 45be5d3b49d5..cccd124fd894 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", "@babel/plugin-syntax-import-attributes": "7.26.0", "@inquirer/confirm": "5.0.2", - "@vitejs/plugin-basic-ssl": "1.1.0", + "@vitejs/plugin-basic-ssl": "1.2.0", "beasties": "0.1.0", "browserslist": "^4.23.0", "esbuild": "0.24.0", @@ -33,7 +33,7 @@ "https-proxy-agent": "7.0.5", "istanbul-lib-instrument": "6.0.3", "listr2": "8.2.5", - "magic-string": "0.30.13", + "magic-string": "0.30.14", "mrmime": "2.0.0", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", @@ -41,7 +41,7 @@ "rollup": "4.27.4", "sass": "1.81.0", "semver": "7.6.3", - "vite": "6.0.0", + "vite": "6.0.1", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 9f82f4bdf6fb..388843165bf5 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -22,7 +22,7 @@ "@babel/runtime": "7.26.0", "@discoveryjs/json-ext": "0.6.3", "@ngtools/webpack": "0.0.0-PLACEHOLDER", - "@vitejs/plugin-basic-ssl": "1.1.0", + "@vitejs/plugin-basic-ssl": "1.2.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", "babel-loader": "9.2.1", diff --git a/packages/angular_devkit/schematics/package.json b/packages/angular_devkit/schematics/package.json index 8c3791f95418..5755abd176c5 100644 --- a/packages/angular_devkit/schematics/package.json +++ b/packages/angular_devkit/schematics/package.json @@ -15,7 +15,7 @@ "dependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", "jsonc-parser": "3.3.1", - "magic-string": "0.30.13", + "magic-string": "0.30.14", "ora": "5.4.1", "rxjs": "7.8.1" } diff --git a/yarn.lock b/yarn.lock index ba5f9c6e6f47..74a256274d48 100644 --- a/yarn.lock +++ b/yarn.lock @@ -75,7 +75,7 @@ __metadata: "@babel/runtime": "npm:7.26.0" "@discoveryjs/json-ext": "npm:0.6.3" "@ngtools/webpack": "npm:0.0.0-PLACEHOLDER" - "@vitejs/plugin-basic-ssl": "npm:1.1.0" + "@vitejs/plugin-basic-ssl": "npm:1.2.0" ansi-colors: "npm:4.1.3" autoprefixer: "npm:10.4.20" babel-loader: "npm:9.2.1" @@ -239,7 +239,7 @@ __metadata: dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" jsonc-parser: "npm:3.3.1" - magic-string: "npm:0.30.13" + magic-string: "npm:0.30.14" ora: "npm:5.4.1" rxjs: "npm:7.8.1" languageName: unknown @@ -378,7 +378,7 @@ __metadata: "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-syntax-import-attributes": "npm:7.26.0" "@inquirer/confirm": "npm:5.0.2" - "@vitejs/plugin-basic-ssl": "npm:1.1.0" + "@vitejs/plugin-basic-ssl": "npm:1.2.0" beasties: "npm:0.1.0" browserslist: "npm:^4.23.0" esbuild: "npm:0.24.0" @@ -387,7 +387,7 @@ __metadata: istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" lmdb: "npm:3.1.6" - magic-string: "npm:0.30.13" + magic-string: "npm:0.30.14" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" @@ -395,7 +395,7 @@ __metadata: rollup: "npm:4.27.4" sass: "npm:1.81.0" semver: "npm:7.6.3" - vite: "npm:6.0.0" + vite: "npm:6.0.1" watchpack: "npm:2.4.2" peerDependencies: "@angular/compiler": ^19.0.0 @@ -693,7 +693,7 @@ __metadata: "@types/yarnpkg__lockfile": "npm:^1.1.5" "@typescript-eslint/eslint-plugin": "npm:8.16.0" "@typescript-eslint/parser": "npm:8.16.0" - "@vitejs/plugin-basic-ssl": "npm:1.1.0" + "@vitejs/plugin-basic-ssl": "npm:1.2.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" ajv: "npm:8.17.1" @@ -740,7 +740,7 @@ __metadata: lmdb: "npm:3.1.6" loader-utils: "npm:3.3.1" lodash: "npm:^4.17.21" - magic-string: "npm:0.30.13" + magic-string: "npm:0.30.14" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" ng-packagr: "npm:19.0.1" @@ -782,7 +782,7 @@ __metadata: unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:6.0.0" + vite: "npm:6.0.1" watchpack: "npm:2.4.2" webpack: "npm:5.96.1" webpack-dev-middleware: "npm:7.4.2" @@ -6271,6 +6271,15 @@ __metadata: languageName: node linkType: hard +"@vitejs/plugin-basic-ssl@npm:1.2.0": + version: 1.2.0 + resolution: "@vitejs/plugin-basic-ssl@npm:1.2.0" + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/0d360fcca01f91ade6e451edbea09a107ff9e95cd3c3766c7a069d1a168709df92d96c0bd1eccc66e2739a153e07c75a45321ec487450c0da942606200d8441d + languageName: node + linkType: hard + "@web/browser-logs@npm:^0.4.0": version: 0.4.0 resolution: "@web/browser-logs@npm:0.4.0" @@ -13450,7 +13459,16 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.13, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": +"magic-string@npm:0.30.14": + version: 0.30.14 + resolution: "magic-string@npm:0.30.14" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/c52c2a6e699dfa8a840e13154da35464a40cd8b07049b695a8b282883b0426c0811af1e36ac26860b4267289340b42772c156a5608e87be97b63d510e617e87a + languageName: node + linkType: hard + +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.13 resolution: "magic-string@npm:0.30.13" dependencies: @@ -18761,9 +18779,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.0": - version: 6.0.0 - resolution: "vite@npm:6.0.0" +"vite@npm:6.0.1": + version: 6.0.1 + resolution: "vite@npm:6.0.1" dependencies: esbuild: "npm:^0.24.0" fsevents: "npm:~2.3.3" @@ -18809,7 +18827,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/2516144161c108452691ec1379aefd8f3201da8f225e628cb1cdb7b35b92d856d990cd31f1c36c0f36517346efe181ea3c096a04bc846c5b0d1416b7b7111af8 + checksum: 10c0/e4d853eb9042ff29fa4d7cee1484738faaee4b1d9dcf786a94783bebb736b39af0afa7ac1a209000530638098d0a1b240b51f509d32addb028b222453f862916 languageName: node linkType: hard From 4ef45ecf99a9b8b4c4fefb5b2cfd75f11a36331d Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 27 Nov 2024 13:45:37 +0000 Subject: [PATCH 0044/2162] fix(@angular/cli): correctly select package versions in descending order during `ng add` When using the `ng add` command, the package version selection logic was not correctly selected based on the available versions in desc order. This could lead to selecting an unintended version of the package. Closes: #28985 --- packages/angular/cli/src/commands/add/cli.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index ccc830eaa1f0..c280ba1af067 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -242,6 +242,7 @@ export default class AddCommandModule versionManifest.version, ); found = true; + break; } if (!found) { From 32d2e2d029c44d19f72e39d84f69caccfcdf3f95 Mon Sep 17 00:00:00 2001 From: sashaphmn Date: Wed, 20 Nov 2024 20:05:19 +0200 Subject: [PATCH 0045/2162] docs: readme Made some corrections in the documentation --- README.md | 4 ++-- scripts/templates/readme.ejs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d32f1fe07916..21a7d3f13398 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ Read through our [developer guide][developer] to learn about how to build and te Join the conversation and help the community. -- [Twitter][twitter] +- [X (formerly Twitter)][twitter] - [Discord][discord] - [Gitter][gitter] - [YouTube][youtube] @@ -189,7 +189,7 @@ This is a monorepo which contains many tools and packages: [node.js]: https://nodejs.org/ [npm]: https://www.npmjs.com/get-npm [codeofconduct]: https://github.com/angular/angular/blob/main/CODE_OF_CONDUCT.md -[twitter]: https://www.twitter.com/angular +[twitter]: https://www.x.com/angular [discord]: https://discord.gg/angular [gitter]: https://gitter.im/angular/angular-cli [stackoverflow]: https://stackoverflow.com/questions/tagged/angular-cli diff --git a/scripts/templates/readme.ejs b/scripts/templates/readme.ejs index 8c789bd7e73b..6a74a15f80d0 100644 --- a/scripts/templates/readme.ejs +++ b/scripts/templates/readme.ejs @@ -122,7 +122,7 @@ Read through our [developer guide][developer] to learn about how to build and te Join the conversation and help the community. -- [Twitter][twitter] +- [X (formerly Twitter)][twitter] - [Discord][discord] - [Gitter][gitter] - [YouTube][youtube] @@ -206,7 +206,7 @@ for (const pkgName of packages) { [node.js]: https://nodejs.org/ [npm]: https://www.npmjs.com/get-npm [codeofconduct]: https://github.com/angular/angular/blob/main/CODE_OF_CONDUCT.md -[twitter]: https://www.twitter.com/angular +[twitter]: https://www.x.com/angular [discord]: https://discord.gg/angular [gitter]: https://gitter.im/angular/angular-cli [stackoverflow]: https://stackoverflow.com/questions/tagged/angular-cli From aed726fca318b9aa8f8d52d7915d1da93eff3217 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 27 Nov 2024 09:45:19 +0000 Subject: [PATCH 0046/2162] fix(@angular/build): add timeout to route extraction This commit introduces a 30-second timeout for route extraction. --- .../routes-extractor-worker.ts | 12 +- packages/angular/ssr/src/app.ts | 31 +----- packages/angular/ssr/src/routes/ng-routes.ts | 104 +++++++++++------- packages/angular/ssr/src/routes/router.ts | 2 +- packages/angular/ssr/src/utils/promise.ts | 50 +++++++++ packages/angular/ssr/test/app_spec.ts | 7 +- .../angular/ssr/test/routes/ng-routes_spec.ts | 99 +++++++++-------- .../angular/ssr/test/utils/promise_spec.ts | 36 ++++++ 8 files changed, 218 insertions(+), 123 deletions(-) create mode 100644 packages/angular/ssr/src/utils/promise.ts create mode 100644 packages/angular/ssr/test/utils/promise_spec.ts diff --git a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts index 58a354855320..d2029b81ea3c 100644 --- a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts +++ b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts @@ -35,12 +35,12 @@ async function extractRoutes(): Promise { const { ɵextractRoutesAndCreateRouteTree: extractRoutesAndCreateRouteTree } = await loadEsmModuleFromMemory('./main.server.mjs'); - const { routeTree, appShellRoute, errors } = await extractRoutesAndCreateRouteTree( - serverURL, - undefined /** manifest */, - outputMode !== undefined /** invokeGetPrerenderParams */, - outputMode === OutputMode.Server /** includePrerenderFallbackRoutes */, - ); + const { routeTree, appShellRoute, errors } = await extractRoutesAndCreateRouteTree({ + url: serverURL, + invokeGetPrerenderParams: outputMode !== undefined, + includePrerenderFallbackRoutes: outputMode === OutputMode.Server, + signal: AbortSignal.timeout(30_000), + }); return { errors, diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index eec56efefe80..cc8cbc0c7dba 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -24,6 +24,7 @@ import { sha256 } from './utils/crypto'; import { InlineCriticalCssProcessor } from './utils/inline-critical-css'; import { LRUCache } from './utils/lru-cache'; import { AngularBootstrap, renderAngular } from './utils/ng'; +import { promiseWithAbort } from './utils/promise'; import { buildPathWithParams, joinUrlParts, @@ -182,10 +183,11 @@ export class AngularServerApp { } } - return Promise.race([ - this.waitForRequestAbort(request), + return promiseWithAbort( this.handleRendering(request, matchedRoute, requestContext), - ]); + request.signal, + `Request for: ${request.url}`, + ); } /** @@ -353,29 +355,6 @@ export class AngularServerApp { return new Response(html, responseInit); } - - /** - * Returns a promise that rejects if the request is aborted. - * - * @param request - The HTTP request object being monitored for abortion. - * @returns A promise that never resolves and rejects with an `AbortError` - * if the request is aborted. - */ - private waitForRequestAbort(request: Request): Promise { - return new Promise((_, reject) => { - request.signal.addEventListener( - 'abort', - () => { - const abortError = new Error( - `Request for: ${request.url} was aborted.\n${request.signal.reason}`, - ); - abortError.name = 'AbortError'; - reject(abortError); - }, - { once: true }, - ); - }); - } } let angularServerApp: AngularServerApp | undefined; diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 8ac0561af294..1f4f7c7d5613 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -14,6 +14,7 @@ import { ServerAssets } from '../assets'; import { Console } from '../console'; import { AngularAppManifest, getAngularAppManifest } from '../manifest'; import { AngularBootstrap, isNgModule } from '../utils/ng'; +import { promiseWithAbort } from '../utils/promise'; import { addTrailingSlash, joinUrlParts, stripLeadingSlash } from '../utils/url'; import { PrerenderFallback, @@ -521,60 +522,79 @@ export async function getRoutesFromAngularRouterConfig( * Asynchronously extracts routes from the Angular application configuration * and creates a `RouteTree` to manage server-side routing. * - * @param url - The URL for server-side rendering. The URL is used to configure `ServerPlatformLocation`. This configuration is crucial - * for ensuring that API requests for relative paths succeed, which is essential for accurate route extraction. - * See: - * - https://github.com/angular/angular/blob/d608b857c689d17a7ffa33bbb510301014d24a17/packages/platform-server/src/location.ts#L51 - * - https://github.com/angular/angular/blob/6882cc7d9eed26d3caeedca027452367ba25f2b9/packages/platform-server/src/http.ts#L44 - * @param manifest - An optional `AngularAppManifest` that contains the application's routing and configuration details. - * If not provided, the default manifest is retrieved using `getAngularAppManifest()`. - * @param invokeGetPrerenderParams - A boolean flag indicating whether to invoke `getPrerenderParams` for parameterized SSG routes - * to handle prerendering paths. Defaults to `false`. - * @param includePrerenderFallbackRoutes - A flag indicating whether to include fallback routes in the result. Defaults to `true`. + * @param options - An object containing the following options: + * - `url`: The URL for server-side rendering. The URL is used to configure `ServerPlatformLocation`. This configuration is crucial + * for ensuring that API requests for relative paths succeed, which is essential for accurate route extraction. + * See: + * - https://github.com/angular/angular/blob/d608b857c689d17a7ffa33bbb510301014d24a17/packages/platform-server/src/location.ts#L51 + * - https://github.com/angular/angular/blob/6882cc7d9eed26d3caeedca027452367ba25f2b9/packages/platform-server/src/http.ts#L44 + * - `manifest`: An optional `AngularAppManifest` that contains the application's routing and configuration details. + * If not provided, the default manifest is retrieved using `getAngularAppManifest()`. + * - `invokeGetPrerenderParams`: A boolean flag indicating whether to invoke `getPrerenderParams` for parameterized SSG routes + * to handle prerendering paths. Defaults to `false`. + * - `includePrerenderFallbackRoutes`: A flag indicating whether to include fallback routes in the result. Defaults to `true`. + * - `signal`: An optional `AbortSignal` that can be used to abort the operation. * * @returns A promise that resolves to an object containing: * - `routeTree`: A populated `RouteTree` containing all extracted routes from the Angular application. * - `appShellRoute`: The specified route for the app-shell, if configured. * - `errors`: An array of strings representing any errors encountered during the route extraction process. */ -export async function extractRoutesAndCreateRouteTree( - url: URL, - manifest: AngularAppManifest = getAngularAppManifest(), - invokeGetPrerenderParams = false, - includePrerenderFallbackRoutes = true, -): Promise<{ routeTree: RouteTree; appShellRoute?: string; errors: string[] }> { - const routeTree = new RouteTree(); - const document = await new ServerAssets(manifest).getIndexServerHtml().text(); - const bootstrap = await manifest.bootstrap(); - const { baseHref, appShellRoute, routes, errors } = await getRoutesFromAngularRouterConfig( - bootstrap, - document, +export function extractRoutesAndCreateRouteTree(options: { + url: URL; + manifest?: AngularAppManifest; + invokeGetPrerenderParams?: boolean; + includePrerenderFallbackRoutes?: boolean; + signal?: AbortSignal; +}): Promise<{ routeTree: RouteTree; appShellRoute?: string; errors: string[] }> { + const { url, - invokeGetPrerenderParams, - includePrerenderFallbackRoutes, - ); + manifest = getAngularAppManifest(), + invokeGetPrerenderParams = false, + includePrerenderFallbackRoutes = true, + signal, + } = options; - for (const { route, ...metadata } of routes) { - if (metadata.redirectTo !== undefined) { - metadata.redirectTo = joinUrlParts(baseHref, metadata.redirectTo); - } + async function extract(): Promise<{ + appShellRoute: string | undefined; + routeTree: RouteTree<{}>; + errors: string[]; + }> { + const routeTree = new RouteTree(); + const document = await new ServerAssets(manifest).getIndexServerHtml().text(); + const bootstrap = await manifest.bootstrap(); + const { baseHref, appShellRoute, routes, errors } = await getRoutesFromAngularRouterConfig( + bootstrap, + document, + url, + invokeGetPrerenderParams, + includePrerenderFallbackRoutes, + ); + + for (const { route, ...metadata } of routes) { + if (metadata.redirectTo !== undefined) { + metadata.redirectTo = joinUrlParts(baseHref, metadata.redirectTo); + } - // Remove undefined fields - // Helps avoid unnecessary test updates - for (const [key, value] of Object.entries(metadata)) { - if (value === undefined) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - delete (metadata as any)[key]; + // Remove undefined fields + // Helps avoid unnecessary test updates + for (const [key, value] of Object.entries(metadata)) { + if (value === undefined) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete (metadata as any)[key]; + } } + + const fullRoute = joinUrlParts(baseHref, route); + routeTree.insert(fullRoute, metadata); } - const fullRoute = joinUrlParts(baseHref, route); - routeTree.insert(fullRoute, metadata); + return { + appShellRoute, + routeTree, + errors, + }; } - return { - appShellRoute, - routeTree, - errors, - }; + return signal ? promiseWithAbort(extract(), signal, 'Routes extraction') : extract(); } diff --git a/packages/angular/ssr/src/routes/router.ts b/packages/angular/ssr/src/routes/router.ts index bd63fa729a82..715a56b5753a 100644 --- a/packages/angular/ssr/src/routes/router.ts +++ b/packages/angular/ssr/src/routes/router.ts @@ -54,7 +54,7 @@ export class ServerRouter { // Create and store a new promise for the build process. // This prevents concurrent builds by re-using the same promise. - ServerRouter.#extractionPromise ??= extractRoutesAndCreateRouteTree(url, manifest) + ServerRouter.#extractionPromise ??= extractRoutesAndCreateRouteTree({ url, manifest }) .then(({ routeTree, errors }) => { if (errors.length > 0) { throw new Error( diff --git a/packages/angular/ssr/src/utils/promise.ts b/packages/angular/ssr/src/utils/promise.ts new file mode 100644 index 000000000000..8129ebdb2df3 --- /dev/null +++ b/packages/angular/ssr/src/utils/promise.ts @@ -0,0 +1,50 @@ +/** + * @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 + */ + +/** + * Creates a promise that resolves with the result of the provided `promise` or rejects with an + * `AbortError` if the `AbortSignal` is triggered before the promise resolves. + * + * @param promise - The promise to monitor for completion. + * @param signal - An `AbortSignal` used to monitor for an abort event. If the signal is aborted, + * the returned promise will reject. + * @param errorMessagePrefix - A custom message prefix to include in the error message when the operation is aborted. + * @returns A promise that either resolves with the value of the provided `promise` or rejects with + * an `AbortError` if the `AbortSignal` is triggered. + * + * @throws {AbortError} If the `AbortSignal` is triggered before the `promise` resolves. + */ +export function promiseWithAbort( + promise: Promise, + signal: AbortSignal, + errorMessagePrefix: string, +): Promise { + return new Promise((resolve, reject) => { + const abortHandler = () => { + reject( + new DOMException(`${errorMessagePrefix} was aborted.\n${signal.reason}`, 'AbortError'), + ); + }; + + // Check for abort signal + if (signal.aborted) { + abortHandler(); + + return; + } + + signal.addEventListener('abort', abortHandler, { once: true }); + + promise + .then(resolve) + .catch(reject) + .finally(() => { + signal.removeEventListener('abort', abortHandler); + }); + }); +} diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index 4b30d039bbef..7bf8731e17b3 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -139,7 +139,12 @@ describe('AngularServerApp', () => { controller.abort(); }); - await expectAsync(app.handle(request)).toBeRejectedWithError(/Request for: .+ was aborted/); + try { + await app.handle(request); + throw new Error('Should not be called.'); + } catch (e) { + expect(e).toBeInstanceOf(DOMException); + } }); it('should return configured headers for pages with specific header settings', async () => { diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index 7c79a6669c70..d1448e3b8b2c 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -41,7 +41,7 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url); + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/', renderMode: RenderMode.Server }, @@ -60,7 +60,7 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { errors } = await extractRoutesAndCreateRouteTree(url); + const { errors } = await extractRoutesAndCreateRouteTree({ url }); expect(errors[0]).toContain( `Invalid '/invalid' route configuration: the path cannot start with a slash.`, ); @@ -85,7 +85,10 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url, undefined, true); + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ + url, + invokeGetPrerenderParams: true, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/user/joe/role/admin', renderMode: RenderMode.Prerender }, @@ -119,7 +122,10 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url, undefined, true); + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ + url, + invokeGetPrerenderParams: true, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/home', renderMode: RenderMode.Server }, @@ -154,7 +160,10 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url, undefined, true); + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ + url, + invokeGetPrerenderParams: true, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/home', renderMode: RenderMode.Server }, @@ -201,12 +210,11 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree( + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ true, - /** includePrerenderFallbackRoutes */ true, - ); + invokeGetPrerenderParams: true, + includePrerenderFallbackRoutes: true, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/', renderMode: RenderMode.Prerender, redirectTo: '/some' }, @@ -244,7 +252,7 @@ describe('extractRoutesAndCreateRouteTree', () => { [{ path: '**', renderMode: RenderMode.Server }], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url); + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/', renderMode: RenderMode.Server, redirectTo: '/some' }, @@ -274,7 +282,10 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree(url, undefined, false); + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ + url, + invokeGetPrerenderParams: false, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ { route: '/home', renderMode: RenderMode.Server }, @@ -304,12 +315,12 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree( + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ true, - /** includePrerenderFallbackRoutes */ false, - ); + + invokeGetPrerenderParams: true, + includePrerenderFallbackRoutes: false, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ @@ -344,12 +355,11 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree( + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ true, - /** includePrerenderFallbackRoutes */ true, - ); + invokeGetPrerenderParams: true, + includePrerenderFallbackRoutes: true, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ @@ -372,12 +382,11 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { errors } = await extractRoutesAndCreateRouteTree( + const { errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ false, - /** includePrerenderFallbackRoutes */ false, - ); + invokeGetPrerenderParams: false, + includePrerenderFallbackRoutes: false, + }); expect(errors).toHaveSize(0); }); @@ -391,12 +400,11 @@ describe('extractRoutesAndCreateRouteTree', () => { ], ); - const { errors } = await extractRoutesAndCreateRouteTree( + const { errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ false, - /** includePrerenderFallbackRoutes */ false, - ); + invokeGetPrerenderParams: false, + includePrerenderFallbackRoutes: false, + }); expect(errors).toHaveSize(1); expect(errors[0]).toContain( @@ -413,12 +421,11 @@ describe('extractRoutesAndCreateRouteTree', () => { [{ path: 'home', renderMode: RenderMode.Server }], ); - const { errors } = await extractRoutesAndCreateRouteTree( + const { errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ false, - /** includePrerenderFallbackRoutes */ false, - ); + invokeGetPrerenderParams: false, + includePrerenderFallbackRoutes: false, + }); expect(errors).toHaveSize(1); expect(errors[0]).toContain( @@ -429,12 +436,11 @@ describe('extractRoutesAndCreateRouteTree', () => { it('should use wildcard configuration when no Angular routes are defined', async () => { setAngularAppTestingManifest([], [{ path: '**', renderMode: RenderMode.Server, status: 201 }]); - const { errors, routeTree } = await extractRoutesAndCreateRouteTree( + const { errors, routeTree } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ false, - /** includePrerenderFallbackRoutes */ false, - ); + invokeGetPrerenderParams: false, + includePrerenderFallbackRoutes: false, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ @@ -449,12 +455,11 @@ describe('extractRoutesAndCreateRouteTree', () => { /** baseHref*/ './example', ); - const { routeTree, errors } = await extractRoutesAndCreateRouteTree( + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url, - /** manifest */ undefined, - /** invokeGetPrerenderParams */ true, - /** includePrerenderFallbackRoutes */ true, - ); + invokeGetPrerenderParams: true, + includePrerenderFallbackRoutes: true, + }); expect(errors).toHaveSize(0); expect(routeTree.toObject()).toEqual([ diff --git a/packages/angular/ssr/test/utils/promise_spec.ts b/packages/angular/ssr/test/utils/promise_spec.ts new file mode 100644 index 000000000000..5f33df85e71f --- /dev/null +++ b/packages/angular/ssr/test/utils/promise_spec.ts @@ -0,0 +1,36 @@ +/** + * @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 { setTimeout } from 'node:timers/promises'; +import { promiseWithAbort } from '../../src/utils/promise'; + +describe('promiseWithAbort', () => { + it('should reject with an AbortError when the signal is aborted', async () => { + const abortController = new AbortController(); + const promise = promiseWithAbort(setTimeout(500), abortController.signal, 'Test operation'); + + queueMicrotask(() => { + abortController.abort('Test reason'); + }); + + await expectAsync(promise).toBeRejectedWithError(); + }); + + it('should not reject if the signal is not aborted', async () => { + const promise = promiseWithAbort( + setTimeout(100), + AbortSignal.timeout(10_000), + 'Test operation', + ); + + // Wait briefly to ensure no rejection occurs + await setTimeout(20); + + await expectAsync(promise).toBeResolved(); + }); +}); From 3829b862d828c7f72bc239f6bfb5e01b41eb2967 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 28 Nov 2024 06:18:03 +0000 Subject: [PATCH 0047/2162] build: update dependency undici to v7 --- package.json | 2 +- packages/angular_devkit/build_angular/package.json | 2 +- yarn.lock | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 0dc7734f0bd5..890f664494f1 100644 --- a/package.json +++ b/package.json @@ -203,7 +203,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.6.3", - "undici": "6.21.0", + "undici": "7.0.0", "unenv": "^1.10.0", "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 388843165bf5..09ff44aa0de6 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -66,7 +66,7 @@ "esbuild": "0.24.0" }, "devDependencies": { - "undici": "6.21.0" + "undici": "7.0.0" }, "peerDependencies": { "@angular/compiler-cli": "^19.0.0", diff --git a/yarn.lock b/yarn.lock index 74a256274d48..20dd0f78cbed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -110,7 +110,7 @@ __metadata: terser: "npm:5.36.0" tree-kill: "npm:1.2.2" tslib: "npm:2.8.1" - undici: "npm:6.21.0" + undici: "npm:7.0.0" webpack: "npm:5.96.1" webpack-dev-middleware: "npm:7.4.2" webpack-dev-server: "npm:5.1.0" @@ -778,7 +778,7 @@ __metadata: ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" typescript: "npm:5.6.3" - undici: "npm:6.21.0" + undici: "npm:7.0.0" unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" @@ -18327,10 +18327,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:6.21.0": - version: 6.21.0 - resolution: "undici@npm:6.21.0" - checksum: 10c0/afa9bde6dcf8e0f5cf1ff2fa977ba73dd5510299ddfca0e1f37ff326554172ae31cb3d4a40b5a729601be1f21b96a2684f974d74dab53f9b6930fd47d1949246 +"undici@npm:7.0.0": + version: 7.0.0 + resolution: "undici@npm:7.0.0" + checksum: 10c0/6d91d5ea5f858ac9ea8b8e28722167dcb4606dc8f3886b6768de94de96fb0817a7fec974ecbc51c1fec03131e2cc44df49a2ab966f5d2d191f32163776f36d91 languageName: node linkType: hard From 692e990750af3abee8e0e0bce81b9effb2641b2e Mon Sep 17 00:00:00 2001 From: James Henry Date: Mon, 2 Dec 2024 13:02:01 +0400 Subject: [PATCH 0048/2162] docs(@angular/cli): update angular-eslint reference (#29001) --- .../cli/src/command-builder/architect-base-command-module.ts | 2 +- packages/angular/cli/src/commands/lint/cli.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 5835a14101bd..9ce2230fd5ee 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 @@ -242,7 +242,7 @@ export abstract class ArchitectBaseCommandModule const packageToInstall = await this.getMissingTargetPackageToInstall(choices); if (packageToInstall) { - // Example run: `ng add @angular-eslint/schematics`. + // Example run: `ng add angular-eslint`. const AddCommandModule = (await import('../commands/add/cli')).default; await new AddCommandModule(this.context).run({ interactive: true, diff --git a/packages/angular/cli/src/commands/lint/cli.ts b/packages/angular/cli/src/commands/lint/cli.ts index cb7897284951..7790433a746b 100644 --- a/packages/angular/cli/src/commands/lint/cli.ts +++ b/packages/angular/cli/src/commands/lint/cli.ts @@ -18,7 +18,7 @@ export default class LintCommandModule override missingTargetChoices: MissingTargetChoice[] = [ { name: 'ESLint', - value: '@angular-eslint/schematics', + value: 'angular-eslint', }, ]; From af8778091e8f05d19d688c220aa3c02a3299fe9e Mon Sep 17 00:00:00 2001 From: Guilherme Siquinelli Date: Mon, 2 Dec 2024 06:19:05 -0300 Subject: [PATCH 0049/2162] fix(@schematics/angular): add required type to `CanDeactivate` guard (#29004) Add missing required generic type in spec file template. --- .../guard/type-files/__name@dasherize__.guard.spec.ts.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template b/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template index cac21bb020d3..d068b5f353d7 100644 --- a/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template +++ b/packages/schematics/angular/guard/type-files/__name@dasherize__.guard.spec.ts.template @@ -4,7 +4,7 @@ import { <%= guardType %> } from '@angular/router'; import { <%= camelize(name) %>Guard } from './<%= dasherize(name) %>.guard'; describe('<%= camelize(name) %>Guard', () => { - const executeGuard: <%= guardType %> = (...guardParameters) => + const executeGuard: <%= guardType %><% if (guardType === 'CanDeactivateFn') { %><% } %> = (...guardParameters) => TestBed.runInInjectionContext(() => <%= camelize(name) %>Guard(...guardParameters)); beforeEach(() => { From 42e16ddce01d1f7782c5713adbb8f65c4d212fde Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 2 Dec 2024 08:26:26 +0000 Subject: [PATCH 0050/2162] refactor(@angular/ssr): mark `@angular/platform-server` as optional Whlist, this package is not really optional, NPM will install the wrong verson of peer dependencies when the Angular CLI is in prerelease mode. ```ts STDERR: npm error code ERESOLVE npm error ERESOLVE unable to resolve dependency tree npm error npm error While resolving: test-project@0.0.0 npm error Found: @angular/animations@19.1.0-next.0 npm error node_modules/@angular/animations npm error @angular/animations@"^19.1.0-next.0" from the root project npm error npm error Could not resolve dependency: npm error peer @angular/animations@"19.0.1" from @angular/platform-server@19.0.1 npm error node_modules/@angular/platform-server npm error peer @angular/platform-server@"^19.1.0-next.0 || ^19.0.0" from @angular/ssr@19.1.0-next.0 npm error node_modules/@angular/ssr npm error @angular/ssr@"19.1.0-next.0" from the root project npm error npm error Fix the upstream dependency conflict, or retry npm error this command with --force or --legacy-peer-deps ``` --- packages/angular/ssr/package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index d0573b6b03be..10f9ee8db4bd 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -21,6 +21,11 @@ "@angular/platform-server": "^19.0.0", "@angular/router": "^19.0.0" }, + "peerDependenciesMeta": { + "@angular/platform-server": { + "optional": true + } + }, "devDependencies": { "@angular/common": "19.0.1", "@angular/compiler": "19.0.1", From 4e5585a27f11483f0cbc729d6f89c9bc4818fffb Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 2 Dec 2024 08:33:25 +0000 Subject: [PATCH 0051/2162] build: update Angular packages to version 19.1.x --- package.json | 26 +- packages/angular/build/package.json | 12 +- packages/angular/pwa/package.json | 2 +- packages/angular/ssr/package.json | 20 +- .../angular_devkit/build_angular/package.json | 12 +- packages/ngtools/webpack/package.json | 8 +- .../utility/latest-versions/package.json | 4 +- yarn.lock | 452 +++++++++++++----- 8 files changed, 367 insertions(+), 169 deletions(-) diff --git a/package.json b/package.json index 890f664494f1..48c9e741a209 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.0.1", + "@angular/animations": "^19.1.0-next.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9", "@angular/cdk": "19.0.0", - "@angular/common": "19.0.1", - "@angular/compiler": "19.0.1", - "@angular/compiler-cli": "19.0.1", - "@angular/core": "19.0.1", - "@angular/forms": "19.0.1", - "@angular/localize": "19.0.1", + "@angular/common": "^19.1.0-next.0", + "@angular/compiler": "^19.1.0-next.0", + "@angular/compiler-cli": "^19.1.0-next.0", + "@angular/core": "^19.1.0-next.0", + "@angular/forms": "^19.1.0-next.0", + "@angular/localize": "^19.1.0-next.0", "@angular/material": "19.0.0", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e", - "@angular/platform-browser": "19.0.1", - "@angular/platform-browser-dynamic": "19.0.1", - "@angular/platform-server": "19.0.1", - "@angular/router": "19.0.1", - "@angular/service-worker": "19.0.1", + "@angular/platform-browser": "^19.1.0-next.0", + "@angular/platform-browser-dynamic": "^19.1.0-next.0", + "@angular/platform-server": "^19.1.0-next.0", + "@angular/router": "^19.1.0-next.0", + "@angular/service-worker": "^19.1.0-next.0", "@babel/core": "7.26.0", "@babel/generator": "7.26.2", "@babel/helper-annotate-as-pure": "7.25.9", @@ -168,7 +168,7 @@ "magic-string": "0.30.14", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", - "ng-packagr": "19.0.1", + "ng-packagr": "19.1.0-next.2", "npm": "^10.8.1", "npm-package-arg": "12.0.0", "npm-pick-manifest": "10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index cccd124fd894..a9faf53ec8c1 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -48,16 +48,16 @@ "lmdb": "3.1.6" }, "peerDependencies": { - "@angular/compiler": "^19.0.0", - "@angular/compiler-cli": "^19.0.0", - "@angular/localize": "^19.0.0", - "@angular/platform-server": "^19.0.0", - "@angular/service-worker": "^19.0.0", + "@angular/compiler": "^19.0.0 || ^19.1.0-next.0", + "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0", + "@angular/localize": "^19.0.0 || ^19.1.0-next.0", + "@angular/platform-server": "^19.0.0 || ^19.1.0-next.0", + "@angular/service-worker": "^19.0.0 || ^19.1.0-next.0", "@angular/ssr": "^0.0.0-PLACEHOLDER", "less": "^4.2.0", "postcss": "^8.4.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.5 <5.7" + "typescript": ">=5.5 <5.8" }, "peerDependenciesMeta": { "@angular/localize": { diff --git a/packages/angular/pwa/package.json b/packages/angular/pwa/package.json index cfc5811e7e4f..aac4c5ddbd9a 100644 --- a/packages/angular/pwa/package.json +++ b/packages/angular/pwa/package.json @@ -17,7 +17,7 @@ "parse5-html-rewriting-stream": "7.0.0" }, "peerDependencies": { - "@angular/cli": "^19.0.0-next.0" + "@angular/cli": "^19.0.0 || ^19.1.0-next.0" }, "peerDependenciesMeta": { "@angular/cli": { diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 10f9ee8db4bd..92cb645374e2 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -16,10 +16,10 @@ "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/platform-server": "^19.0.0", - "@angular/router": "^19.0.0" + "@angular/common": "^19.0.0 || ^19.1.0-next.0", + "@angular/core": "^19.0.0 || ^19.1.0-next.0", + "@angular/platform-server": "^19.0.0 || ^19.1.0-next.0", + "@angular/router": "^19.0.0 || ^19.1.0-next.0" }, "peerDependenciesMeta": { "@angular/platform-server": { @@ -27,12 +27,12 @@ } }, "devDependencies": { - "@angular/common": "19.0.1", - "@angular/compiler": "19.0.1", - "@angular/core": "19.0.1", - "@angular/platform-browser": "19.0.1", - "@angular/platform-server": "19.0.1", - "@angular/router": "19.0.1", + "@angular/common": "19.1.0-next.0", + "@angular/compiler": "19.1.0-next.0", + "@angular/core": "19.1.0-next.0", + "@angular/platform-browser": "19.1.0-next.0", + "@angular/platform-server": "19.1.0-next.0", + "@angular/router": "19.1.0-next.0", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 09ff44aa0de6..dc1f47c4fbaf 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -69,20 +69,20 @@ "undici": "7.0.0" }, "peerDependencies": { - "@angular/compiler-cli": "^19.0.0", - "@angular/localize": "^19.0.0", - "@angular/platform-server": "^19.0.0", - "@angular/service-worker": "^19.0.0", + "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0", + "@angular/localize": "^19.0.0 || ^19.1.0-next.0", + "@angular/platform-server": "^19.0.0 || ^19.1.0-next.0", + "@angular/service-worker": "^19.0.0 || ^19.1.0-next.0", "@angular/ssr": "^0.0.0-PLACEHOLDER", "@web/test-runner": "^0.19.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^19.0.0", + "ng-packagr": "^19.0.0 || ^19.1.0-next.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.5 <5.7" + "typescript": ">=5.5 <5.8" }, "peerDependenciesMeta": { "@angular/localize": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 5f75e6abb705..9b349e3773b3 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -21,14 +21,14 @@ }, "homepage": "https://github.com/angular/angular-cli/tree/main/packages/ngtools/webpack", "peerDependencies": { - "@angular/compiler-cli": "^19.0.0", - "typescript": ">=5.5 <5.7", + "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0", + "typescript": ">=5.5 <5.8", "webpack": "^5.54.0" }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.0.1", - "@angular/compiler-cli": "19.0.1", + "@angular/compiler": "19.1.0-next.0", + "@angular/compiler-cli": "19.1.0-next.0", "typescript": "5.6.3", "webpack": "5.96.1" } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index cee728d87854..19f71ed7985d 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -3,7 +3,7 @@ "comment": "This file is needed so that dependencies are synced by Renovate.", "private": true, "dependencies": { - "@angular/core": "^19.0.0", + "@angular/core": "^19.1.0-next.0", "@types/express": "^4.17.17", "@types/jasmine": "~5.1.0", "@types/node": "^18.18.0", @@ -17,7 +17,7 @@ "karma-jasmine": "~5.1.0", "karma": "~6.4.0", "less": "^4.2.0", - "ng-packagr": "^19.0.0", + "ng-packagr": "^19.1.0-next.0", "postcss": "^8.4.38", "protractor": "~7.0.0", "rxjs": "~7.8.0", diff --git a/yarn.lock b/yarn.lock index 20dd0f78cbed..ee89c0616f88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -117,20 +117,20 @@ __metadata: webpack-merge: "npm:6.0.1" webpack-subresource-integrity: "npm:5.1.0" peerDependencies: - "@angular/compiler-cli": ^19.0.0 - "@angular/localize": ^19.0.0 - "@angular/platform-server": ^19.0.0 - "@angular/service-worker": ^19.0.0 + "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 + "@angular/localize": ^19.0.0 || ^19.1.0-next.0 + "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 + "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 "@angular/ssr": ^0.0.0-PLACEHOLDER "@web/test-runner": ^0.19.0 browser-sync: ^3.0.2 jest: ^29.5.0 jest-environment-jsdom: ^29.5.0 karma: ^6.3.0 - ng-packagr: ^19.0.0 + ng-packagr: ^19.0.0 || ^19.1.0-next.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=5.5 <5.7" + typescript: ">=5.5 <5.8" dependenciesMeta: esbuild: optional: true @@ -245,14 +245,14 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/animations@npm:19.0.1" +"@angular/animations@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/animations@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.1 - checksum: 10c0/ebacea8ea6a7f1b51fce210c8d7ad72eb902c6b65f35b231b3b746a3e70ffcb28b867ab1926b07b1bcc6326ef9e43e18b8e689b8cd01603d3d08226251635585 + "@angular/core": 19.1.0-next.0 + checksum: 10c0/d3d1fe745f7aa5310565cfd56cddaf5e9f40db6cfa322f7ac7a0f01c670ef71efccb13932c0bb98acb3f8aa531348402fe5e253bde79873f02d3140ae7325bb9 languageName: node linkType: hard @@ -398,16 +398,16 @@ __metadata: vite: "npm:6.0.1" watchpack: "npm:2.4.2" peerDependencies: - "@angular/compiler": ^19.0.0 - "@angular/compiler-cli": ^19.0.0 - "@angular/localize": ^19.0.0 - "@angular/platform-server": ^19.0.0 - "@angular/service-worker": ^19.0.0 + "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 + "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 + "@angular/localize": ^19.0.0 || ^19.1.0-next.0 + "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 + "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 "@angular/ssr": ^0.0.0-PLACEHOLDER less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=5.5 <5.7" + typescript: ">=5.5 <5.8" dependenciesMeta: lmdb: optional: true @@ -539,21 +539,21 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/common@npm:19.0.1" +"@angular/common@npm:19.1.0-next.0, @angular/common@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/common@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.1 + "@angular/core": 19.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/20791a8eeafc701bcff8939f26441e696a62dac8f15e3a834345e30857ec11b2e213c44259af2ca26bfcea2b10a9f18b5752ebd2d087518911cceddd85f2daa9 + checksum: 10c0/d0a579a389f7e9205eeb651eec3c48e19e34db51f8b244f3be8f68905839594f6a01b4ff8ce5d8cd37542d25326e63e0f8886c44266d5af3f158499af3b0f5be languageName: node linkType: hard -"@angular/compiler-cli@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/compiler-cli@npm:19.0.1" +"@angular/compiler-cli@npm:19.1.0-next.0, @angular/compiler-cli@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/compiler-cli@npm:19.1.0-next.0" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -564,39 +564,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.1 - typescript: ">=5.5 <5.7" + "@angular/compiler": 19.1.0-next.0 + typescript: ">=5.5 <5.8" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/fe250abccdf5be4be611404cf78d4151054c9f7c228106244f94e4cfa858bf333877d729423af6c6ef1ab1f5fbfcc5f0f81264bbfe76b1f3ac27eae05b8b7995 + checksum: 10c0/21f66911fb8c43b7c4cb7bae9ee1eeba2706e9e2ae2900ba8951f1f957fb8ff67c8b6fffe12b1f1eb19d7d0e06f6b905aa1591a390b9835a680fb67b2de8d1a2 languageName: node linkType: hard -"@angular/compiler@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/compiler@npm:19.0.1" +"@angular/compiler@npm:19.1.0-next.0, @angular/compiler@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/compiler@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.0.1 + "@angular/core": 19.1.0-next.0 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/e5588d14fe1d829f1bede996f33a5c7c48c77cb02954085f18f5b1d60fbfe2c7212c48febed33f7b4d457b107af4a58a866f2c3f5cb3751766f44fa4aec7ab25 + checksum: 10c0/702a30d919a9132b784ac17dfe2af52ba49dc85a49bcb4df1f5d0fbc48e8682b4ef1f2b55a0342662f1f7cfd88f8a67a7f21c19f9662c0fee1e246a0ee06d11c languageName: node linkType: hard -"@angular/core@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/core@npm:19.0.1" +"@angular/core@npm:19.1.0-next.0, @angular/core@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/core@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/b9c9178de2d729faee24ddf7548b2de166aa30d257363cb3748e5dbe6e8007075a32ea800d61d84eec6fba83e734c7c2d0f2f17e68433e67183c517d7d0e3355 + checksum: 10c0/5f930946d65ea171bf6fad7ba27f497f42cc61b8e50acad85c01372e129b5ae451ce4ce698413ed2b0de24f3837cad2b64f28da396c0becf3d46a1ffd6574361 languageName: node linkType: hard @@ -627,23 +627,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.0.1" + "@angular/animations": "npm:^19.1.0-next.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9" "@angular/cdk": "npm:19.0.0" - "@angular/common": "npm:19.0.1" - "@angular/compiler": "npm:19.0.1" - "@angular/compiler-cli": "npm:19.0.1" - "@angular/core": "npm:19.0.1" - "@angular/forms": "npm:19.0.1" - "@angular/localize": "npm:19.0.1" + "@angular/common": "npm:^19.1.0-next.0" + "@angular/compiler": "npm:^19.1.0-next.0" + "@angular/compiler-cli": "npm:^19.1.0-next.0" + "@angular/core": "npm:^19.1.0-next.0" + "@angular/forms": "npm:^19.1.0-next.0" + "@angular/localize": "npm:^19.1.0-next.0" "@angular/material": "npm:19.0.0" "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e" - "@angular/platform-browser": "npm:19.0.1" - "@angular/platform-browser-dynamic": "npm:19.0.1" - "@angular/platform-server": "npm:19.0.1" - "@angular/router": "npm:19.0.1" - "@angular/service-worker": "npm:19.0.1" + "@angular/platform-browser": "npm:^19.1.0-next.0" + "@angular/platform-browser-dynamic": "npm:^19.1.0-next.0" + "@angular/platform-server": "npm:^19.1.0-next.0" + "@angular/router": "npm:^19.1.0-next.0" + "@angular/service-worker": "npm:^19.1.0-next.0" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.2" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -743,7 +743,7 @@ __metadata: magic-string: "npm:0.30.14" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" - ng-packagr: "npm:19.0.1" + ng-packagr: "npm:19.1.0-next.2" npm: "npm:^10.8.1" npm-package-arg: "npm:12.0.0" npm-pick-manifest: "npm:10.0.0" @@ -800,36 +800,36 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/forms@npm:19.0.1" +"@angular/forms@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/forms@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.1 - "@angular/core": 19.0.1 - "@angular/platform-browser": 19.0.1 + "@angular/common": 19.1.0-next.0 + "@angular/core": 19.1.0-next.0 + "@angular/platform-browser": 19.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/0dc8bd1737469bf733f8d5386ef0cac7753bac170eb7f4d309f54f71d3808e8ed906ee87d45d4560d19f118bc51f25c7b5c8845b606b0fe74689f03e63d76926 + checksum: 10c0/afee46b77661b2a88a05e94e1789fa881af0e442003fdcfd328ae4ebc56c473b7f4666a345fbdd60e2cc92167aefb2a4ca5e80e0c66f66ebb10b7294f07e5561 languageName: node linkType: hard -"@angular/localize@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/localize@npm:19.0.1" +"@angular/localize@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/localize@npm:19.1.0-next.0" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.0.1 - "@angular/compiler-cli": 19.0.1 + "@angular/compiler": 19.1.0-next.0 + "@angular/compiler-cli": 19.1.0-next.0 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/3306748a3f616df313fadfcce00ff939fe90ef1aba808a4c835be6fd2b48e33acab23d47039d076cb1f448ca5858c687f5e81fa90887195ac58696e9a9d93b0c + checksum: 10c0/b55ccdf384562da4f6527799eb1259620af7dcbdbbc82941ceb92494f71e7bf47189262f89831738940d156c81c9dff5c7918a0058d097fa7daf5ebce17aa32e languageName: node linkType: hard @@ -871,49 +871,49 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/platform-browser-dynamic@npm:19.0.1" +"@angular/platform-browser-dynamic@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.1 - "@angular/compiler": 19.0.1 - "@angular/core": 19.0.1 - "@angular/platform-browser": 19.0.1 - checksum: 10c0/e1d7555d361d50435d68ca68c499aea945a428c917f2871a1f1c4900e4d1615f7929d945e55696b0492998474f5e66da0290977a58930ad14fcd52ea2eaf35d3 + "@angular/common": 19.1.0-next.0 + "@angular/compiler": 19.1.0-next.0 + "@angular/core": 19.1.0-next.0 + "@angular/platform-browser": 19.1.0-next.0 + checksum: 10c0/6c94a65cef61cb7a076cebc245f410e72da0c0138fe874a6a8b4a8263e0c921180235ef7c02d2cc0a8f9f0af1af05dbec44636f8ce80692d0a07114b84bf3582 languageName: node linkType: hard -"@angular/platform-browser@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/platform-browser@npm:19.0.1" +"@angular/platform-browser@npm:19.1.0-next.0, @angular/platform-browser@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/platform-browser@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.0.1 - "@angular/common": 19.0.1 - "@angular/core": 19.0.1 + "@angular/animations": 19.1.0-next.0 + "@angular/common": 19.1.0-next.0 + "@angular/core": 19.1.0-next.0 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/c810b17ded350e2d694f327310860c31d934a82e02f56bbb80f9a6f6bb96ac85493d27007f4b0f42bcc3ef152a4482e400b6217364a7078ed900e38e42201f3c + checksum: 10c0/e00f00e7b6d566735ca5cce0af9c0b4195036b3cad18e4dc604df9d77e8b13e3d259fcd57426b060faab76f1628ecdb78dc61511e6567cfaa6dcdc9ed7458644 languageName: node linkType: hard -"@angular/platform-server@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/platform-server@npm:19.0.1" +"@angular/platform-server@npm:19.1.0-next.0, @angular/platform-server@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/platform-server@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.0.1 - "@angular/common": 19.0.1 - "@angular/compiler": 19.0.1 - "@angular/core": 19.0.1 - "@angular/platform-browser": 19.0.1 - checksum: 10c0/1418b813a1eda77e24139624286a1aaf5ad45c3759d685c4359cce51dfe7bb66cf432039cdab5181031a3cace16bc357c4ab0c4cab64daea756e159cf2991a01 + "@angular/animations": 19.1.0-next.0 + "@angular/common": 19.1.0-next.0 + "@angular/compiler": 19.1.0-next.0 + "@angular/core": 19.1.0-next.0 + "@angular/platform-browser": 19.1.0-next.0 + checksum: 10c0/4587209a039d2cb171ceb57c8885841a786c7162d2c7b9a22e52733718f0be2f9e3605299e66eeef3c28084e45d5ce4d48d9b63f1c9455090e19d6c919c63816 languageName: node linkType: hard @@ -925,38 +925,38 @@ __metadata: "@schematics/angular": "npm:0.0.0-PLACEHOLDER" parse5-html-rewriting-stream: "npm:7.0.0" peerDependencies: - "@angular/cli": ^19.0.0-next.0 + "@angular/cli": ^19.0.0 || ^19.1.0-next.0 peerDependenciesMeta: "@angular/cli": optional: true languageName: unknown linkType: soft -"@angular/router@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/router@npm:19.0.1" +"@angular/router@npm:19.1.0-next.0, @angular/router@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/router@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.1 - "@angular/core": 19.0.1 - "@angular/platform-browser": 19.0.1 + "@angular/common": 19.1.0-next.0 + "@angular/core": 19.1.0-next.0 + "@angular/platform-browser": 19.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/6f717d2c8c31e52094909d964f7187a12cdfcfcb5fceec03fa4f2d5897086ed5b5ae9e722c8a004258f15f406a109b5cdf5e35783fe8c75345360dcdc68c3a46 + checksum: 10c0/fbb3a6b0de491135d81e5ad8f34108e56e47ed16f0a0a0de222ebd30b18551eb30bfc80a39fe6237e939a03cd67f4dce1810da76f6858c6c2a8808d4579d293c languageName: node linkType: hard -"@angular/service-worker@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/service-worker@npm:19.0.1" +"@angular/service-worker@npm:^19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/service-worker@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.0.1 - "@angular/core": 19.0.1 + "@angular/common": 19.1.0-next.0 + "@angular/core": 19.1.0-next.0 bin: ngsw-config: ngsw-config.js - checksum: 10c0/b9dbf95b95038a9999afb04b6a93294042463a4d6c0519f9dede7bab91af57225fe4a556c031ca343ca19065cf4b7daec6a3c8c14a841d9524dec8507161a8a0 + checksum: 10c0/76acbd4284cbf7dfd30c3043ff31f75d0c86309e300e9c57db9716bba1795a806e4e3766d51902623e78fd8e35a32c083efc0c911792637518118dec3f85c45a languageName: node linkType: hard @@ -964,19 +964,22 @@ __metadata: version: 0.0.0-use.local resolution: "@angular/ssr@workspace:packages/angular/ssr" dependencies: - "@angular/common": "npm:19.0.1" - "@angular/compiler": "npm:19.0.1" - "@angular/core": "npm:19.0.1" - "@angular/platform-browser": "npm:19.0.1" - "@angular/platform-server": "npm:19.0.1" - "@angular/router": "npm:19.0.1" + "@angular/common": "npm:19.1.0-next.0" + "@angular/compiler": "npm:19.1.0-next.0" + "@angular/core": "npm:19.1.0-next.0" + "@angular/platform-browser": "npm:19.1.0-next.0" + "@angular/platform-server": "npm:19.1.0-next.0" + "@angular/router": "npm:19.1.0-next.0" "@bazel/runfiles": "npm:^5.8.1" tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": ^19.0.0 - "@angular/core": ^19.0.0 - "@angular/platform-server": ^19.0.0 - "@angular/router": ^19.0.0 + "@angular/common": ^19.0.0 || ^19.1.0-next.0 + "@angular/core": ^19.0.0 || ^19.1.0-next.0 + "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 + "@angular/router": ^19.0.0 || ^19.1.0-next.0 + peerDependenciesMeta: + "@angular/platform-server": + optional: true languageName: unknown linkType: soft @@ -3628,13 +3631,13 @@ __metadata: resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.0.1" - "@angular/compiler-cli": "npm:19.0.1" + "@angular/compiler": "npm:19.1.0-next.0" + "@angular/compiler-cli": "npm:19.1.0-next.0" typescript: "npm:5.6.3" webpack: "npm:5.96.1" peerDependencies: - "@angular/compiler-cli": ^19.0.0 - typescript: ">=5.5 <5.7" + "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 + typescript: ">=5.5 <5.8" webpack: ^5.54.0 languageName: unknown linkType: soft @@ -4404,6 +4407,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-android-arm64@npm:4.26.0" @@ -4418,6 +4428,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-android-arm64@npm:4.28.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.26.0" @@ -4432,6 +4449,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.28.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-darwin-x64@npm:4.26.0" @@ -4446,6 +4470,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.28.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.26.0" @@ -4460,6 +4491,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.26.0" @@ -4474,6 +4512,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.28.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0" @@ -4488,6 +4533,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.26.0" @@ -4502,6 +4554,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.26.0" @@ -4516,6 +4575,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.26.0" @@ -4530,6 +4596,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0" @@ -4544,6 +4617,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.26.0" @@ -4558,6 +4638,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.26.0" @@ -4572,6 +4659,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.26.0" @@ -4586,6 +4680,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.26.0" @@ -4600,6 +4701,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.26.0" @@ -4614,6 +4722,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.26.0" @@ -4628,6 +4743,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.26.0": version: 4.26.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.26.0" @@ -4642,9 +4764,16 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.28.0": + version: 4.28.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/wasm-node@npm:^4.24.0": - version: 4.27.4 - resolution: "@rollup/wasm-node@npm:4.27.4" + version: 4.28.0 + resolution: "@rollup/wasm-node@npm:4.28.0" dependencies: "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" @@ -4653,7 +4782,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/a37111e809950aee3f5a4c314896f0de9c2325d1574640c0a0c51a7baecfd4bda77442dadefca3d015fff35ee8f9b1928231d48ee7697f47ed0a3bb0b2e012d3 + checksum: 10c0/804836da6287289ba22119df0f0838ebd3f5308de1e14b421734542af5dd836a1cf733e4a0d052b1bb6c35e01cb884a080fddd47ec7091619b73480ba726dd09 languageName: node linkType: hard @@ -14074,9 +14203,9 @@ __metadata: languageName: node linkType: hard -"ng-packagr@npm:19.0.1": - version: 19.0.1 - resolution: "ng-packagr@npm:19.0.1" +"ng-packagr@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "ng-packagr@npm:19.1.0-next.2" dependencies: "@rollup/plugin-json": "npm:^6.1.0" "@rollup/wasm-node": "npm:^4.24.0" @@ -14098,12 +14227,12 @@ __metadata: postcss: "npm:^8.4.47" rollup: "npm:^4.24.0" rxjs: "npm:^7.8.1" - sass: "npm:^1.79.5" + sass: "npm:^1.81.0" peerDependencies: - "@angular/compiler-cli": ^19.0.0-next.0 + "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 tailwindcss: ^2.0.0 || ^3.0.0 tslib: ^2.3.0 - typescript: ">=5.5 <5.7" + typescript: ">=5.5 <5.8" dependenciesMeta: rollup: optional: true @@ -14112,7 +14241,7 @@ __metadata: optional: true bin: ng-packagr: cli/main.js - checksum: 10c0/56a1d29b017a694f0350b44ba60bee88716208d7ae067ba09e94bab63b6d9110550eaa1c913131bce0f31cc87fcbc426a081f63c1a2cf337e4d53bc3ac4787c9 + checksum: 10c0/0d3bfa91b00a7b097fb43d8a4e5a8cb6dcc58b6c93bc5de5d5f8938e1ad4a6d04e798f5f9ee5a5901a1c0e8662614d3e4ef9eb0bb671376da0f7aeb8593210e9 languageName: node linkType: hard @@ -16376,7 +16505,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.27.4, rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.27.4, rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.4.0": version: 4.27.4 resolution: "rollup@npm:4.27.4" dependencies: @@ -16445,6 +16574,75 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.24.0": + version: 4.28.0 + resolution: "rollup@npm:4.28.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.28.0" + "@rollup/rollup-android-arm64": "npm:4.28.0" + "@rollup/rollup-darwin-arm64": "npm:4.28.0" + "@rollup/rollup-darwin-x64": "npm:4.28.0" + "@rollup/rollup-freebsd-arm64": "npm:4.28.0" + "@rollup/rollup-freebsd-x64": "npm:4.28.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.28.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.28.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.28.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.28.0" + "@rollup/rollup-linux-x64-musl": "npm:4.28.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.28.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.28.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.28.0" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/98d3bc2b784eff71b997cfc2be97c00e2f100ee38adc2f8ada7b9b9ecbbc96937f667a6a247a45491807b3f2adef3c73d1f5df40d71771bff0c2d8c0cca9b369 + languageName: node + linkType: hard + "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -16571,7 +16769,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.81.0, sass@npm:^1.79.5": +"sass@npm:1.81.0, sass@npm:^1.81.0": version: 1.81.0 resolution: "sass@npm:1.81.0" dependencies: From 994a7823370c97926a82904d48a0591d19e87407 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 2 Dec 2024 12:20:15 +0000 Subject: [PATCH 0052/2162] build: update all non-major dependencies --- package.json | 6 +- packages/angular/build/package.json | 6 +- yarn.lock | 166 ++++++++++++++-------------- 3 files changed, 89 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index 48c9e741a209..315e1d22e4f0 100644 --- a/package.json +++ b/package.json @@ -162,7 +162,7 @@ "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "listr2": "8.2.5", - "lmdb": "3.1.6", + "lmdb": "3.2.0", "loader-utils": "3.3.1", "lodash": "^4.17.21", "magic-string": "0.30.14", @@ -185,7 +185,7 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.27.4", + "rollup": "4.28.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", @@ -207,7 +207,7 @@ "unenv": "^1.10.0", "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", - "vite": "6.0.1", + "vite": "6.0.2", "watchpack": "2.4.2", "webpack": "5.96.1", "webpack-dev-middleware": "7.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index a9faf53ec8c1..c70c650ae9eb 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,14 +38,14 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.7.0", - "rollup": "4.27.4", + "rollup": "4.28.0", "sass": "1.81.0", "semver": "7.6.3", - "vite": "6.0.1", + "vite": "6.0.2", "watchpack": "2.4.2" }, "optionalDependencies": { - "lmdb": "3.1.6" + "lmdb": "3.2.0" }, "peerDependencies": { "@angular/compiler": "^19.0.0 || ^19.1.0-next.0", diff --git a/yarn.lock b/yarn.lock index ee89c0616f88..2813d896e6cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -386,16 +386,16 @@ __metadata: https-proxy-agent: "npm:7.0.5" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" - lmdb: "npm:3.1.6" + lmdb: "npm:3.2.0" magic-string: "npm:0.30.14" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.7.0" - rollup: "npm:4.27.4" + rollup: "npm:4.28.0" sass: "npm:1.81.0" semver: "npm:7.6.3" - vite: "npm:6.0.1" + vite: "npm:6.0.2" watchpack: "npm:2.4.2" peerDependencies: "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 @@ -737,7 +737,7 @@ __metadata: less-loader: "npm:12.2.0" license-webpack-plugin: "npm:4.0.2" listr2: "npm:8.2.5" - lmdb: "npm:3.1.6" + lmdb: "npm:3.2.0" loader-utils: "npm:3.3.1" lodash: "npm:^4.17.21" magic-string: "npm:0.30.14" @@ -760,7 +760,7 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.27.4" + rollup: "npm:4.28.0" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" @@ -782,7 +782,7 @@ __metadata: unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:6.0.1" + vite: "npm:6.0.2" watchpack: "npm:2.4.2" webpack: "npm:5.96.1" webpack-dev-middleware: "npm:7.4.2" @@ -3251,9 +3251,9 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-arm64@npm:3.1.6": - version: 3.1.6 - resolution: "@lmdb/lmdb-darwin-arm64@npm:3.1.6" +"@lmdb/lmdb-darwin-arm64@npm:3.2.0": + version: 3.2.0 + resolution: "@lmdb/lmdb-darwin-arm64@npm:3.2.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -3265,9 +3265,9 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-x64@npm:3.1.6": - version: 3.1.6 - resolution: "@lmdb/lmdb-darwin-x64@npm:3.1.6" +"@lmdb/lmdb-darwin-x64@npm:3.2.0": + version: 3.2.0 + resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -3279,9 +3279,9 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm64@npm:3.1.6": - version: 3.1.6 - resolution: "@lmdb/lmdb-linux-arm64@npm:3.1.6" +"@lmdb/lmdb-linux-arm64@npm:3.2.0": + version: 3.2.0 + resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -3293,9 +3293,9 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm@npm:3.1.6": - version: 3.1.6 - resolution: "@lmdb/lmdb-linux-arm@npm:3.1.6" +"@lmdb/lmdb-linux-arm@npm:3.2.0": + version: 3.2.0 + resolution: "@lmdb/lmdb-linux-arm@npm:3.2.0" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -3307,9 +3307,9 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-x64@npm:3.1.6": - version: 3.1.6 - resolution: "@lmdb/lmdb-linux-x64@npm:3.1.6" +"@lmdb/lmdb-linux-x64@npm:3.2.0": + version: 3.2.0 + resolution: "@lmdb/lmdb-linux-x64@npm:3.2.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -3321,9 +3321,9 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-win32-x64@npm:3.1.6": - version: 3.1.6 - resolution: "@lmdb/lmdb-win32-x64@npm:3.1.6" +"@lmdb/lmdb-win32-x64@npm:3.2.0": + version: 3.2.0 + resolution: "@lmdb/lmdb-win32-x64@npm:3.2.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -13278,16 +13278,16 @@ __metadata: languageName: node linkType: hard -"lmdb@npm:3.1.6": - version: 3.1.6 - resolution: "lmdb@npm:3.1.6" - dependencies: - "@lmdb/lmdb-darwin-arm64": "npm:3.1.6" - "@lmdb/lmdb-darwin-x64": "npm:3.1.6" - "@lmdb/lmdb-linux-arm": "npm:3.1.6" - "@lmdb/lmdb-linux-arm64": "npm:3.1.6" - "@lmdb/lmdb-linux-x64": "npm:3.1.6" - "@lmdb/lmdb-win32-x64": "npm:3.1.6" +"lmdb@npm:3.2.0": + version: 3.2.0 + resolution: "lmdb@npm:3.2.0" + dependencies: + "@lmdb/lmdb-darwin-arm64": "npm:3.2.0" + "@lmdb/lmdb-darwin-x64": "npm:3.2.0" + "@lmdb/lmdb-linux-arm": "npm:3.2.0" + "@lmdb/lmdb-linux-arm64": "npm:3.2.0" + "@lmdb/lmdb-linux-x64": "npm:3.2.0" + "@lmdb/lmdb-win32-x64": "npm:3.2.0" msgpackr: "npm:^1.11.2" node-addon-api: "npm:^6.1.0" node-gyp: "npm:latest" @@ -13309,7 +13309,7 @@ __metadata: optional: true bin: download-lmdb-prebuilds: bin/download-prebuilds.js - checksum: 10c0/081804f72aab6eb0f712654e3bbb2d454dd455bbfe09f223e10728971f201cfc166d4d6dd6a3099aabf79e4fd62e9c2a5eb9117bd5f2153ec5a419333f69a338 + checksum: 10c0/f7bf2ad3a8e95b5f683f4633d029db00e5c8bc048bbfe783bcd60a91a21097569c91bc57de9e394db30da03812219b72fd9641ef3abd0e517f297d9e96038c05 languageName: node linkType: hard @@ -16505,28 +16505,28 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.27.4, rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.4.0": - version: 4.27.4 - resolution: "rollup@npm:4.27.4" +"rollup@npm:4.28.0, rollup@npm:^4.24.0": + version: 4.28.0 + resolution: "rollup@npm:4.28.0" dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.4" - "@rollup/rollup-android-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-x64": "npm:4.27.4" - "@rollup/rollup-freebsd-arm64": "npm:4.27.4" - "@rollup/rollup-freebsd-x64": "npm:4.27.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-musl": "npm:4.27.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" + "@rollup/rollup-android-arm-eabi": "npm:4.28.0" + "@rollup/rollup-android-arm64": "npm:4.28.0" + "@rollup/rollup-darwin-arm64": "npm:4.28.0" + "@rollup/rollup-darwin-x64": "npm:4.28.0" + "@rollup/rollup-freebsd-arm64": "npm:4.28.0" + "@rollup/rollup-freebsd-x64": "npm:4.28.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.28.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.28.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.28.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.28.0" + "@rollup/rollup-linux-x64-musl": "npm:4.28.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.28.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.28.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.28.0" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -16570,32 +16570,32 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 + checksum: 10c0/98d3bc2b784eff71b997cfc2be97c00e2f100ee38adc2f8ada7b9b9ecbbc96937f667a6a247a45491807b3f2adef3c73d1f5df40d71771bff0c2d8c0cca9b369 languageName: node linkType: hard -"rollup@npm:^4.24.0": - version: 4.28.0 - resolution: "rollup@npm:4.28.0" +"rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.4.0": + version: 4.27.4 + resolution: "rollup@npm:4.27.4" dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.28.0" - "@rollup/rollup-android-arm64": "npm:4.28.0" - "@rollup/rollup-darwin-arm64": "npm:4.28.0" - "@rollup/rollup-darwin-x64": "npm:4.28.0" - "@rollup/rollup-freebsd-arm64": "npm:4.28.0" - "@rollup/rollup-freebsd-x64": "npm:4.28.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.28.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.28.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.28.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.28.0" - "@rollup/rollup-linux-x64-musl": "npm:4.28.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.28.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.28.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.28.0" + "@rollup/rollup-android-arm-eabi": "npm:4.27.4" + "@rollup/rollup-android-arm64": "npm:4.27.4" + "@rollup/rollup-darwin-arm64": "npm:4.27.4" + "@rollup/rollup-darwin-x64": "npm:4.27.4" + "@rollup/rollup-freebsd-arm64": "npm:4.27.4" + "@rollup/rollup-freebsd-x64": "npm:4.27.4" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" + "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" + "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-x64-musl": "npm:4.27.4" + "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" + "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" + "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -16639,7 +16639,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/98d3bc2b784eff71b997cfc2be97c00e2f100ee38adc2f8ada7b9b9ecbbc96937f667a6a247a45491807b3f2adef3c73d1f5df40d71771bff0c2d8c0cca9b369 + checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 languageName: node linkType: hard @@ -18977,9 +18977,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.1": - version: 6.0.1 - resolution: "vite@npm:6.0.1" +"vite@npm:6.0.2": + version: 6.0.2 + resolution: "vite@npm:6.0.2" dependencies: esbuild: "npm:^0.24.0" fsevents: "npm:~2.3.3" @@ -19025,7 +19025,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/e4d853eb9042ff29fa4d7cee1484738faaee4b1d9dcf786a94783bebb736b39af0afa7ac1a209000530638098d0a1b240b51f509d32addb028b222453f862916 + checksum: 10c0/45fc609f2bc5fb5beb5a8e2cad9ad6c2edce229a922f6fc1270ea2a9d75819482edcc0f77c85b4a7abdad7eb69ce6a4f26131925d47cdc0778fc15d1bbc3b6a2 languageName: node linkType: hard From 3d1c52b0ec6f45caf05eea429ef252c5c57cac36 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 2 Dec 2024 12:20:04 +0000 Subject: [PATCH 0053/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 40 +++++++++--------- package.json | 8 ++-- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++------- yarn.lock | 42 +++++++++---------- 9 files changed, 89 insertions(+), 89 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 5d1211ade5a2..4f7fb09e6ba8 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + - uses: angular/dev-infra/github-actions/branch-manager@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c2d5adfa124f..0aa8f8058e88 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - run: yarn 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 d056ac5499c3..a8051fe5e800 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + - uses: angular/dev-infra/github-actions/commit-message-based-labels@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + - uses: angular/dev-infra/github-actions/post-approval-changes@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 2c8610027d49..9489e2b22dc5 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + - uses: angular/dev-infra/github-actions/feature-request@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index ab8c1fb6b9e9..3b38ec2c9423 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -21,7 +21,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - id: workflows @@ -36,9 +36,9 @@ jobs: workflow: ${{ fromJSON(needs.list.outputs.workflows) }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable # 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 4e4ec07057d0..991c053efa90 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/linting/licenses@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Check tooling setup run: yarn 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@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9bf81f9c029a09347afb376b9e1ae12b33f1a1fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 315e1d22e4f0..c63c82aa616d 100644 --- a/package.json +++ b/package.json @@ -54,16 +54,16 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "^19.1.0-next.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9", - "@angular/cdk": "19.0.0", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a35ad7f4e30ae1fc531517867efcae89cce5afa2", + "@angular/cdk": "19.0.1", "@angular/common": "^19.1.0-next.0", "@angular/compiler": "^19.1.0-next.0", "@angular/compiler-cli": "^19.1.0-next.0", "@angular/core": "^19.1.0-next.0", "@angular/forms": "^19.1.0-next.0", "@angular/localize": "^19.1.0-next.0", - "@angular/material": "19.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e", + "@angular/material": "19.0.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#dde9fb807550b7634613f88bb224702155f58e07", "@angular/platform-browser": "^19.1.0-next.0", "@angular/platform-browser-dynamic": "^19.1.0-next.0", "@angular/platform-server": "^19.1.0-next.0", diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 9d29f9e566ef..31c9c5ad5bce 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#5fc988ce4748193fe8d01a163ded4d0b2994ebf2", - "@angular/cdk": "github:angular/cdk-builds#71de1cc97034a940d48de0b2a4170a7467a4ba05", - "@angular/common": "github:angular/common-builds#12e8b1d681dc346d72225ea6c0bec691caa18e6e", - "@angular/compiler": "github:angular/compiler-builds#fff333d49a30caf27f97a0c7992991ee7c753d73", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#93172d90196028fa0d5036271c7720090e25f8d1", - "@angular/core": "github:angular/core-builds#3b7c1bb1a152aafe716081433bea1642b789d387", - "@angular/forms": "github:angular/forms-builds#f2e85d1556c984f8922fe7a2fdbe4590fe598b6f", - "@angular/language-service": "github:angular/language-service-builds#cacc16acef1ce14cbbbdb55adaca42f618c9a1de", - "@angular/localize": "github:angular/localize-builds#8c62e2242cbbebdfc8f7486fa4a70b2940673c3c", - "@angular/material": "github:angular/material-builds#352755fa607cda7647c13012d561694c834282dc", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#85a8c12a6f819ced29d79aea93cc950faf10f667", - "@angular/platform-browser": "github:angular/platform-browser-builds#4c6f919db36f1b0e54ead1aa26863239f31aa810", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7b858ec01e258b750c48cb56d65342f1d25b2b6d", - "@angular/platform-server": "github:angular/platform-server-builds#936283e829cec55f2902159acef616ada3632f1d", - "@angular/router": "github:angular/router-builds#83d5efe0a005f0f2f31373316ca5e8eae591d148", - "@angular/service-worker": "github:angular/service-worker-builds#8e819415a04fe7aec9c32dffb71eca331916a1df" + "@angular/animations": "github:angular/animations-builds#40e9067e991471de6876410139f6f1e97241501f", + "@angular/cdk": "github:angular/cdk-builds#3692c15d68e768f4f06c52e38b55bdb86cfc7af8", + "@angular/common": "github:angular/common-builds#01e5335258021581c42b88c7d33ff460dd1d0de7", + "@angular/compiler": "github:angular/compiler-builds#d8694436fbc8767788c88ed2e048b13aded43fa0", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#a0c6ea901e3cdbb08dd50b04c122f21e31c6369f", + "@angular/core": "github:angular/core-builds#3f88d7dac38867ea9458c39b648b122e8756d7cc", + "@angular/forms": "github:angular/forms-builds#2f669469063ee2964f6bcb4c79be169a1711f923", + "@angular/language-service": "github:angular/language-service-builds#f5d47dd0b61033c58881622a6588e7837773c407", + "@angular/localize": "github:angular/localize-builds#f2e9ef2007127277e226e712984cf188551930df", + "@angular/material": "github:angular/material-builds#5db7aa2243e10ff74bce5710ea6d3560e9442eff", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#80c8de455145501d70f827c64cc8c490b6709db4", + "@angular/platform-browser": "github:angular/platform-browser-builds#d4d0cda4219322ba6510e2af96e3ea2bbd938bc6", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#83a577be77488b64a4ae89ac90da66a1ddb61678", + "@angular/platform-server": "github:angular/platform-server-builds#56c6522d398c5eb41600895a24b605d56c4c500d", + "@angular/router": "github:angular/router-builds#95b11226d3b016ff58130fdb63c4f4d352e514d9", + "@angular/service-worker": "github:angular/service-worker-builds#ad2cb47d501a07ff403715f11153443720112973" } } diff --git a/yarn.lock b/yarn.lock index 2813d896e6cb..faea553c74a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -324,9 +324,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9": - version: 0.0.0-9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=41d5efafd8094da3c8455e1b54b381e346d0c7a9" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#a35ad7f4e30ae1fc531517867efcae89cce5afa2": + version: 0.0.0-9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=a35ad7f4e30ae1fc531517867efcae89cce5afa2" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.0.0" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/25b877186449ab1545f8c0f74e0a9ce5bcf2ac3b13f1ebbaa8caf1fcb8e1f2ca926fb1a33e2fcc4cad3480ac58d7ae01490740945c9297f1728c09a9b8b25b13 + checksum: 10c0/b9d7c4f8a9f6a99d51874944cff78e75fa5249c46b3e7e653146f65f6c9bf1b7af5b941bee70340da1b7769fee503b437cf2d0eb9a07b8a3498f373d2d71472f languageName: node linkType: hard @@ -496,9 +496,9 @@ __metadata: languageName: node linkType: hard -"@angular/cdk@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/cdk@npm:19.0.0" +"@angular/cdk@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/cdk@npm:19.0.1" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" @@ -509,7 +509,7 @@ __metadata: dependenciesMeta: parse5: optional: true - checksum: 10c0/542659c4fd19a08514b26c4ab5428ce1efcae6921243eb13d6bd27ed2f3a63466fc1625e087e9509da381cb9aa0ffded1ecd102ab9c84ad689916f4b475bbe44 + checksum: 10c0/d021efced1022ba5e5a1df30f9a2c4f0dd9742bb85b5b6b37ca49963d584b6dd9f0bf142b7d895295ac5c400d2df062524af7e21dad740f33179552bd56f6ccb languageName: node linkType: hard @@ -629,16 +629,16 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:^19.1.0-next.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#41d5efafd8094da3c8455e1b54b381e346d0c7a9" - "@angular/cdk": "npm:19.0.0" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a35ad7f4e30ae1fc531517867efcae89cce5afa2" + "@angular/cdk": "npm:19.0.1" "@angular/common": "npm:^19.1.0-next.0" "@angular/compiler": "npm:^19.1.0-next.0" "@angular/compiler-cli": "npm:^19.1.0-next.0" "@angular/core": "npm:^19.1.0-next.0" "@angular/forms": "npm:^19.1.0-next.0" "@angular/localize": "npm:^19.1.0-next.0" - "@angular/material": "npm:19.0.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e" + "@angular/material": "npm:19.0.1" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#dde9fb807550b7634613f88bb224702155f58e07" "@angular/platform-browser": "npm:^19.1.0-next.0" "@angular/platform-browser-dynamic": "npm:^19.1.0-next.0" "@angular/platform-server": "npm:^19.1.0-next.0" @@ -833,26 +833,26 @@ __metadata: languageName: node linkType: hard -"@angular/material@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/material@npm:19.0.0" +"@angular/material@npm:19.0.1": + version: 19.0.1 + resolution: "@angular/material@npm:19.0.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: "@angular/animations": ^19.0.0 || ^20.0.0 - "@angular/cdk": 19.0.0 + "@angular/cdk": 19.0.1 "@angular/common": ^19.0.0 || ^20.0.0 "@angular/core": ^19.0.0 || ^20.0.0 "@angular/forms": ^19.0.0 || ^20.0.0 "@angular/platform-browser": ^19.0.0 || ^20.0.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/dd8ad1a2fac0b9437dd2f22e04c5c3c1b9aeaff936cc10c4044489063e4a83a8eced8ddcd42654995a8d78182348e1431d227a667151fde8fc06a208d3728115 + checksum: 10c0/29350dc7de231316d4fa1ac65a5fcbf86722dfdb95ae9e5d6f5bdcc0e8202d2699fa02b3c6f03d1899686af1a01fbf9b017a8a0fc0b4b085cba327d40c101196 languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#47ccf2ca29307997c021994c859c03c71fae686e": - version: 0.0.0-9bf81f9c029a09347afb376b9e1ae12b33f1a1fa - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=47ccf2ca29307997c021994c859c03c71fae686e" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#dde9fb807550b7634613f88bb224702155f58e07": + version: 0.0.0-9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=dde9fb807550b7634613f88bb224702155f58e07" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -867,7 +867,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/0f2dbafb69c2abeaf1da70a35c3b1d5d2483d49d59927214daaa83383fbf662edc411b54045a9539402101483b30966525933806da9e4a2add2544a0d737994f + checksum: 10c0/cd492e9d57478f61f5dc8469f12f388da5b05a2b3233bb299766d3ece828df1ca035b9b8f428d859861035f8df40251a78fbc4351dd433e8bf81170db3ed6290 languageName: node linkType: hard From 4d466bfa6a18d72b11b26071a2765074d81e5646 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 2 Dec 2024 13:44:19 +0100 Subject: [PATCH 0054/2162] build: update to TypeScript 5.7 Updates the repo to use TypeScript 5.7. --- .../angular_devkit/schematics/index.api.md | 4 + package.json | 2 +- packages/angular_devkit/core/node/host.ts | 4 +- .../blank/project-files/package.json | 2 +- .../schematic/files/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- .../Microsoft/TypeScript/BUILD.bazel | 8 +- .../Microsoft/TypeScript/lib/typescript.d.ts | 104 +- .../Microsoft/TypeScript/lib/typescript.js | 8554 +++++++++++------ .../utility/latest-versions/package.json | 2 +- .../19-ssr-project-webpack/package.json | 26 +- yarn.lock | 24 +- 12 files changed, 5700 insertions(+), 3034 deletions(-) diff --git a/goldens/public-api/angular_devkit/schematics/index.api.md b/goldens/public-api/angular_devkit/schematics/index.api.md index e72c46745599..de17a0462162 100644 --- a/goldens/public-api/angular_devkit/schematics/index.api.md +++ b/goldens/public-api/angular_devkit/schematics/index.api.md @@ -206,6 +206,8 @@ export interface CreateFileAction extends ActionBase { export class DelegateTree implements Tree_2 { constructor(_other: Tree_2); // (undocumented) + [x: symbol]: () => this; + // (undocumented) get actions(): Action[]; // (undocumented) apply(action: Action, strategy?: MergeStrategy): void; @@ -518,6 +520,8 @@ export class HostSink extends SimpleSinkBase { export class HostTree implements Tree_2 { constructor(_backend?: virtualFs.ReadonlyHost<{}>); // (undocumented) + [x: symbol]: () => this; + // (undocumented) get actions(): Action[]; // (undocumented) apply(action: Action, strategy?: MergeStrategy): void; diff --git a/package.json b/package.json index c63c82aa616d..b8cfa26135cf 100644 --- a/package.json +++ b/package.json @@ -202,7 +202,7 @@ "tree-kill": "1.2.2", "ts-node": "^10.9.1", "tslib": "2.8.1", - "typescript": "5.6.3", + "typescript": "5.7.2", "undici": "7.0.0", "unenv": "^1.10.0", "verdaccio": "6.0.2", diff --git a/packages/angular_devkit/core/node/host.ts b/packages/angular_devkit/core/node/host.ts index 578296d3749c..422a95af2b01 100644 --- a/packages/angular_devkit/core/node/host.ts +++ b/packages/angular_devkit/core/node/host.ts @@ -71,7 +71,7 @@ export class NodeJsAsyncHost implements virtualFs.Host { read(path: Path): Observable { return observableFrom(fsPromises.readFile(getSystemPath(path))).pipe( - map((buffer) => new Uint8Array(buffer).buffer as virtualFs.FileBuffer), + map((buffer) => new Uint8Array(buffer).buffer), ); } @@ -169,7 +169,7 @@ export class NodeJsSyncHost implements virtualFs.Host { return new Observable((obs) => { const buffer = readFileSync(getSystemPath(path)); - obs.next(new Uint8Array(buffer).buffer as virtualFs.FileBuffer); + obs.next(new Uint8Array(buffer).buffer); obs.complete(); }); } diff --git a/packages/angular_devkit/schematics_cli/blank/project-files/package.json b/packages/angular_devkit/schematics_cli/blank/project-files/package.json index a023c62734bd..e09b6a73952d 100644 --- a/packages/angular_devkit/schematics_cli/blank/project-files/package.json +++ b/packages/angular_devkit/schematics_cli/blank/project-files/package.json @@ -15,7 +15,7 @@ "dependencies": { "@angular-devkit/core": "^<%= coreVersion %>", "@angular-devkit/schematics": "^<%= schematicsVersion %>", - "typescript": "~5.6.2" + "typescript": "~5.7.2" }, "devDependencies": { "@types/node": "^18.18.0", diff --git a/packages/angular_devkit/schematics_cli/schematic/files/package.json b/packages/angular_devkit/schematics_cli/schematic/files/package.json index 0536430f224e..f28d62cb0ff2 100644 --- a/packages/angular_devkit/schematics_cli/schematic/files/package.json +++ b/packages/angular_devkit/schematics_cli/schematic/files/package.json @@ -15,7 +15,7 @@ "dependencies": { "@angular-devkit/core": "^<%= coreVersion %>", "@angular-devkit/schematics": "^<%= schematicsVersion %>", - "typescript": "~5.6.2" + "typescript": "~5.7.2" }, "devDependencies": { "@types/node": "^18.18.0", diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 9b349e3773b3..820b5e7c67d7 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -29,7 +29,7 @@ "@angular-devkit/core": "0.0.0-PLACEHOLDER", "@angular/compiler": "19.1.0-next.0", "@angular/compiler-cli": "19.1.0-next.0", - "typescript": "5.6.3", + "typescript": "5.7.2", "webpack": "5.96.1" } } diff --git a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel index 42927c5a88db..0da24bacd4ff 100644 --- a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel +++ b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel @@ -1,11 +1,11 @@ load("//tools:defaults.bzl", "ts_library") -# files fetched on 2024-09-10 from -# https://github.com/microsoft/TypeScript/releases/tag/v5.6.2 +# files fetched on 2024-11-28 from +# https://github.com/microsoft/TypeScript/releases/tag/v5.7.2 # Commands to download: -# curl https://raw.githubusercontent.com/microsoft/TypeScript/v5.6.2/lib/typescript.d.ts -o packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts -# curl https://raw.githubusercontent.com/microsoft/TypeScript/v5.6.2/lib/typescript.js -o packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js +# curl https://raw.githubusercontent.com/microsoft/TypeScript/v5.7.2/lib/typescript.d.ts -o packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts +# curl https://raw.githubusercontent.com/microsoft/TypeScript/v5.7.2/lib/typescript.js -o packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js licenses(["notice"]) # Apache 2.0 diff --git a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts index 963c5732b922..6780dd1ddb94 100644 --- a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts +++ b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.d.ts @@ -107,6 +107,7 @@ declare namespace ts { GetApplicableRefactors = "getApplicableRefactors", GetEditsForRefactor = "getEditsForRefactor", GetMoveToRefactoringFileSuggestions = "getMoveToRefactoringFileSuggestions", + PreparePasteEdits = "preparePasteEdits", GetPasteEdits = "getPasteEdits", OrganizeImports = "organizeImports", GetEditsForFileRename = "getEditsForFileRename", @@ -363,6 +364,10 @@ declare namespace ts { * Indicate if the file name list of the project is needed */ needFileNameList: boolean; + /** + * if true returns details about default configured project calculation + */ + needDefaultConfiguredProjectInfo?: boolean; } /** * A request to get the project information of the current file. @@ -386,6 +391,17 @@ declare namespace ts { */ projectFileName: string; } + /** + * Details about the default project for the file if tsconfig file is found + */ + export interface DefaultConfiguredProjectInfo { + /** List of config files looked and did not match because file was not part of root file names */ + notMatchedByConfig?: readonly string[]; + /** List of projects which were loaded but file was not part of the project or is file from referenced project */ + notInProject?: readonly string[]; + /** Configured project used as default */ + defaultProject?: string; + } /** * Response message body for "projectInfo" request */ @@ -403,6 +419,10 @@ declare namespace ts { * Indicates if the project has a active language service instance */ languageServiceDisabled?: boolean; + /** + * Information about default project + */ + configuredProjectInfo?: DefaultConfiguredProjectInfo; } /** * Represents diagnostic info that includes location of diagnostic in two forms @@ -495,6 +515,19 @@ declare namespace ts { files: string[]; }; } + /** + * Request to check if `pasteEdits` should be provided for a given location post copying text from that location. + */ + export interface PreparePasteEditsRequest extends FileRequest { + command: CommandTypes.PreparePasteEdits; + arguments: PreparePasteEditsRequestArgs; + } + export interface PreparePasteEditsRequestArgs extends FileRequestArgs { + copiedTextSpan: TextSpan[]; + } + export interface PreparePasteEditsResponse extends Response { + body: boolean; + } /** * Request refactorings at a given position post pasting text from some other location. */ @@ -2507,6 +2540,7 @@ declare namespace ts { ES2021 = "es2021", ES2022 = "es2022", ES2023 = "es2023", + ES2024 = "es2024", ESNext = "esnext", JSON = "json", Latest = "esnext", @@ -2808,7 +2842,6 @@ declare namespace ts { abstract class Project implements LanguageServiceHost, ModuleResolutionHost { readonly projectKind: ProjectKind; readonly projectService: ProjectService; - private documentRegistry; private compilerOptions; compileOnSaveEnabled: boolean; protected watchOptions: WatchOptions | undefined; @@ -2828,7 +2861,6 @@ declare namespace ts { private lastReportedFileNames; private lastReportedVersion; protected projectErrors: Diagnostic[] | undefined; - protected isInitialLoadPending: () => boolean; private typingsCache; private typingWatchers; private readonly cancellationToken; @@ -2842,14 +2874,14 @@ declare namespace ts { readonly jsDocParsingMode: JSDocParsingMode | undefined; isKnownTypesPackageName(name: string): boolean; installPackage(options: InstallPackageOptions): Promise; - getCompilationSettings(): ts.CompilerOptions; - getCompilerOptions(): ts.CompilerOptions; + getCompilationSettings(): CompilerOptions; + getCompilerOptions(): CompilerOptions; getNewLine(): string; getProjectVersion(): string; getProjectReferences(): readonly ProjectReference[] | undefined; getScriptFileNames(): string[]; private getOrCreateScriptInfoAndAttachToProject; - getScriptKind(fileName: string): ts.ScriptKind; + getScriptKind(fileName: string): ScriptKind; getScriptVersion(filename: string): string; getScriptSnapshot(filename: string): IScriptSnapshot | undefined; getCancellationToken(): HostCancellationToken; @@ -2885,16 +2917,16 @@ declare namespace ts { getProjectName(): string; protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition; getExternalFiles(updateLevel?: ProgramUpdateLevel): SortedReadonlyArray; - getSourceFile(path: Path): ts.SourceFile | undefined; + getSourceFile(path: Path): SourceFile | undefined; close(): void; private detachScriptInfoIfNotRoot; isClosed(): boolean; hasRoots(): boolean; getRootFiles(): NormalizedPath[]; - getRootScriptInfos(): ts.server.ScriptInfo[]; + getRootScriptInfos(): ScriptInfo[]; getScriptInfos(): ScriptInfo[]; getExcludedFiles(): readonly NormalizedPath[]; - getFileNames(excludeFilesFromExternalLibraries?: boolean, excludeConfigFiles?: boolean): ts.server.NormalizedPath[]; + getFileNames(excludeFilesFromExternalLibraries?: boolean, excludeConfigFiles?: boolean): NormalizedPath[]; hasConfigFile(configFilePath: NormalizedPath): boolean; containsScriptInfo(info: ScriptInfo): boolean; containsFile(filename: NormalizedPath, requireOpen?: boolean): boolean; @@ -2919,19 +2951,18 @@ declare namespace ts { private isValidGeneratedFileWatcher; private clearGeneratedFileWatch; getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined; - getScriptInfo(uncheckedFileName: string): ts.server.ScriptInfo | undefined; + getScriptInfo(uncheckedFileName: string): ScriptInfo | undefined; filesToString(writeProjectFileNames: boolean): string; private filesToStringWorker; setCompilerOptions(compilerOptions: CompilerOptions): void; setTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): void; - getTypeAcquisition(): ts.TypeAcquisition; + getTypeAcquisition(): TypeAcquisition; protected removeRoot(info: ScriptInfo): void; protected enableGlobalPlugins(options: CompilerOptions): void; protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[]): void; /** Starts a new check for diagnostics. Call this if some file has updated that would cause diagnostics to be changed. */ refreshDiagnostics(): void; private isDefaultProjectForOpenFiles; - private getCompilerOptionsForNoDtsResolutionProject; } /** * If a file is opened and no tsconfig (or jsconfig) is found, @@ -2958,7 +2989,7 @@ declare namespace ts { getScriptFileNames(): string[]; getLanguageService(): never; getHostForAutoImportProvider(): never; - getProjectReferences(): readonly ts.ProjectReference[] | undefined; + getProjectReferences(): readonly ProjectReference[] | undefined; } /** * If a file is opened, the server will look for a tsconfig (or jsconfig) @@ -2975,7 +3006,7 @@ declare namespace ts { * @returns: true if set of files in the project stays the same and false - otherwise. */ updateGraph(): boolean; - getConfigFilePath(): ts.server.NormalizedPath; + getConfigFilePath(): NormalizedPath; getProjectReferences(): readonly ProjectReference[] | undefined; updateReferences(refs: readonly ProjectReference[] | undefined): void; /** @@ -2999,14 +3030,14 @@ declare namespace ts { compileOnSaveEnabled: boolean; excludedFiles: readonly NormalizedPath[]; updateGraph(): boolean; - getExcludedFiles(): readonly ts.server.NormalizedPath[]; + getExcludedFiles(): readonly NormalizedPath[]; } function convertFormatOptions(protocolOptions: protocol.FormatCodeSettings): FormatCodeSettings; function convertCompilerOptions(protocolOptions: protocol.ExternalProjectCompilerOptions): CompilerOptions & protocol.CompileOnSaveMixin; function convertWatchOptions(protocolOptions: protocol.ExternalProjectCompilerOptions, currentDirectory?: string): WatchOptionsAndErrors | undefined; function convertTypeAcquisition(protocolOptions: protocol.InferredProjectCompilerOptions): TypeAcquisition | undefined; function tryConvertScriptKindName(scriptKindName: protocol.ScriptKindName | ScriptKind): ScriptKind; - function convertScriptKindName(scriptKindName: protocol.ScriptKindName): ScriptKind.Unknown | ScriptKind.JS | ScriptKind.JSX | ScriptKind.TS | ScriptKind.TSX; + function convertScriptKindName(scriptKindName: protocol.ScriptKindName): ScriptKind; const maxProgramSizeForNonTsFiles: number; const ProjectsUpdatedInBackgroundEvent = "projectsUpdatedInBackground"; interface ProjectsUpdatedInBackgroundEvent { @@ -3277,6 +3308,7 @@ declare namespace ts { private deleteScriptInfo; private configFileExists; private createConfigFileWatcherForParsedConfig; + private ensureConfigFileWatcherForProject; private forEachConfigFileLocation; private getConfigFileNameForFileFromCache; private setConfigFileNameForFileInCache; @@ -3290,6 +3322,7 @@ declare namespace ts { private updateNonInferredProjectFiles; private updateRootAndOptionsOfNonInferredProject; private reloadFileNamesOfParsedConfig; + private setProjectForReload; private clearSemanticCache; private getOrCreateInferredProjectForProjectRootPathIfEnabled; private getOrCreateSingleInferredProjectIfEnabled; @@ -3336,6 +3369,8 @@ declare namespace ts { private getOrCreateOpenScriptInfo; private assignProjectToOpenedScriptInfo; private tryFindDefaultConfiguredProjectForOpenScriptInfo; + private isMatchedByConfig; + private tryFindDefaultConfiguredProjectForOpenScriptInfoOrClosedFileInfo; private tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo; private ensureProjectChildren; private cleanupConfiguredProjects; @@ -3480,9 +3515,11 @@ declare namespace ts { private getDocumentHighlights; private provideInlayHints; private mapCode; + private getCopilotRelatedInfo; private setCompilerOptionsForInferredProjects; private getProjectInfo; private getProjectInfoWorker; + private getDefaultConfiguredProjectInfo; private getRenameInfo; private getProjects; private getDefaultProject; @@ -3535,6 +3572,7 @@ declare namespace ts { private getApplicableRefactors; private getEditsForRefactor; private getMoveToRefactoringFileSuggestions; + private preparePasteEdits; private getPasteEdits; private organizeImports; private getEditsForFileRename; @@ -3595,7 +3633,7 @@ declare namespace ts { readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[] | undefined, depth?: number): string[]; } } - const versionMajorMinor = "5.6"; + const versionMajorMinor = "5.7"; /** The version of the TypeScript compiler release */ const version: string; /** @@ -3983,10 +4021,11 @@ declare namespace ts { JSDocImportTag = 351, SyntaxList = 352, NotEmittedStatement = 353, - PartiallyEmittedExpression = 354, - CommaListExpression = 355, - SyntheticReferenceExpression = 356, - Count = 357, + NotEmittedTypeElement = 354, + PartiallyEmittedExpression = 355, + CommaListExpression = 356, + SyntheticReferenceExpression = 357, + Count = 358, FirstAssignment = 64, LastAssignment = 79, FirstCompoundAssignment = 65, @@ -5098,7 +5137,7 @@ declare namespace ts { interface InstanceofExpression extends BinaryExpression { readonly operatorToken: Token; } - type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement | InstanceofExpression; + type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxCallLike | InstanceofExpression; interface AsExpression extends Expression { readonly kind: SyntaxKind.AsExpression; readonly expression: Expression; @@ -5134,6 +5173,7 @@ declare namespace ts { readonly closingElement: JsxClosingElement; } type JsxOpeningLikeElement = JsxSelfClosingElement | JsxOpeningElement; + type JsxCallLike = JsxOpeningLikeElement | JsxOpeningFragment; type JsxAttributeLike = JsxAttribute | JsxSpreadAttribute; type JsxAttributeName = Identifier | JsxNamespacedName; type JsxTagNameExpression = Identifier | ThisExpression | JsxTagNamePropertyAccess | JsxNamespacedName; @@ -5212,6 +5252,9 @@ declare namespace ts { interface NotEmittedStatement extends Statement { readonly kind: SyntaxKind.NotEmittedStatement; } + interface NotEmittedTypeElement extends TypeElement { + readonly kind: SyntaxKind.NotEmittedTypeElement; + } /** * A list of comma-separated expressions. This node is only created by transformations. */ @@ -6115,7 +6158,7 @@ declare namespace ts { getPrivateIdentifierPropertyOfType(leftType: Type, name: string, location: Node): Symbol | undefined; getIndexInfoOfType(type: Type, kind: IndexKind): IndexInfo | undefined; getIndexInfosOfType(type: Type): readonly IndexInfo[]; - getIndexInfosOfIndexSymbol: (indexSymbol: Symbol) => IndexInfo[]; + getIndexInfosOfIndexSymbol: (indexSymbol: Symbol, siblingSymbols?: Symbol[] | undefined) => IndexInfo[]; getSignaturesOfType(type: Type, kind: SignatureKind): readonly Signature[]; getIndexTypeOfType(type: Type, kind: IndexKind): Type | undefined; getBaseTypes(type: InterfaceType): BaseType[]; @@ -6982,6 +7025,7 @@ declare namespace ts { moduleDetection?: ModuleDetectionKind; newLine?: NewLineKind; noEmit?: boolean; + noCheck?: boolean; noEmitHelpers?: boolean; noEmitOnError?: boolean; noErrorTruncation?: boolean; @@ -7021,6 +7065,7 @@ declare namespace ts { removeComments?: boolean; resolvePackageJsonExports?: boolean; resolvePackageJsonImports?: boolean; + rewriteRelativeImportExtensions?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; @@ -7131,6 +7176,7 @@ declare namespace ts { ES2021 = 8, ES2022 = 9, ES2023 = 10, + ES2024 = 11, ESNext = 99, JSON = 100, Latest = 99, @@ -7813,6 +7859,7 @@ declare namespace ts { createSourceFile(statements: readonly Statement[], endOfFileToken: EndOfFileToken, flags: NodeFlags): SourceFile; updateSourceFile(node: SourceFile, statements: readonly Statement[], isDeclarationFile?: boolean, referencedFiles?: readonly FileReference[], typeReferences?: readonly FileReference[], hasNoDefaultLib?: boolean, libReferences?: readonly FileReference[]): SourceFile; createNotEmittedStatement(original: Node): NotEmittedStatement; + createNotEmittedTypeElement(): NotEmittedTypeElement; createPartiallyEmittedExpression(expression: Expression, original?: Node): PartiallyEmittedExpression; updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression; createCommaListExpression(elements: readonly Expression[]): CommaListExpression; @@ -8694,6 +8741,7 @@ declare namespace ts { function isTypeOnlyImportDeclaration(node: Node): node is TypeOnlyImportDeclaration; function isTypeOnlyExportDeclaration(node: Node): node is TypeOnlyExportDeclaration; function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration; + function isPartOfTypeOnlyImportOrExportDeclaration(node: Node): boolean; function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; function isImportAttributeName(node: Node): node is ImportAttributeName; function isModifier(node: Node): node is Modifier; @@ -8742,6 +8790,7 @@ declare namespace ts { function isJsxAttributeLike(node: Node): node is JsxAttributeLike; function isStringLiteralOrJsxExpression(node: Node): node is StringLiteral | JsxExpression; function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement; + function isJsxCallLike(node: Node): node is JsxCallLike; function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause; /** True if node is of a kind that may contain comment text. */ function isJSDocCommentContainingNode(node: Node): boolean; @@ -9120,6 +9169,7 @@ declare namespace ts { jsDocParsingMode?: JSDocParsingMode; } function parseCommandLine(commandLine: readonly string[], readFile?: (path: string) => string | undefined): ParsedCommandLine; + function parseBuildCommand(commandLine: readonly string[]): ParsedBuildCommand; /** * Reads the config file, reports errors if any and exits if the config file cannot be found */ @@ -9174,6 +9224,13 @@ declare namespace ts { options: TypeAcquisition; errors: Diagnostic[]; }; + /** Parsed command line for build */ + interface ParsedBuildCommand { + buildOptions: BuildOptions; + watchOptions: WatchOptions | undefined; + projects: string[]; + errors: Diagnostic[]; + } type DiagnosticReporter = (diagnostic: Diagnostic) => void; /** * Reports config file diagnostics @@ -9901,6 +9958,8 @@ declare namespace ts { emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined; } type InvalidatedProject = UpdateOutputFileStampsProject | BuildInvalidedProject; + /** Returns true if commandline is --build and needs to be parsed useing parseBuildCommand */ + function isBuildCommand(commandLineArgs: readonly string[]): boolean; function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings; /** * Represents an immutable snapshot of a script at a specified time.Once acquired, the @@ -10175,6 +10234,7 @@ declare namespace ts { uncommentSelection(fileName: string, textRange: TextRange): TextChange[]; getSupportedCodeFixes(fileName?: string): readonly string[]; dispose(): void; + preparePasteEditsForFile(fileName: string, copiedTextRanges: TextRange[]): boolean; getPasteEdits(args: PasteEditsArgs, formatOptions: FormatCodeSettings): PasteEdits; } interface JsxClosingTagInfo { diff --git a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js index 90f3266ee69f..33387eadeb84 100644 --- a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js +++ b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript.js @@ -144,6 +144,7 @@ __export(typescript_exports, { PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, PredicateSemantics: () => PredicateSemantics, + PreparePasteEdits: () => ts_preparePasteEdits_exports, PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, ProgramUpdateLevel: () => ProgramUpdateLevel, @@ -239,7 +240,6 @@ __export(typescript_exports, { buildOverload: () => buildOverload, bundlerModuleNameResolver: () => bundlerModuleNameResolver, canBeConvertedToAsync: () => canBeConvertedToAsync, - canEmitTsBuildInfo: () => canEmitTsBuildInfo, canHaveDecorators: () => canHaveDecorators, canHaveExportModifier: () => canHaveExportModifier, canHaveFlowNode: () => canHaveFlowNode, @@ -259,6 +259,7 @@ __export(typescript_exports, { canWatchAffectingLocation: () => canWatchAffectingLocation, canWatchAtTypes: () => canWatchAtTypes, canWatchDirectoryOrFile: () => canWatchDirectoryOrFile, + canWatchDirectoryOrFilePath: () => canWatchDirectoryOrFilePath, cartesianProduct: () => cartesianProduct, cast: () => cast, chainBundle: () => chainBundle, @@ -529,6 +530,7 @@ __export(typescript_exports, { escapeTemplateSubstitution: () => escapeTemplateSubstitution, evaluatorResult: () => evaluatorResult, every: () => every, + exclusivelyPrefixedNodeCoreModules: () => exclusivelyPrefixedNodeCoreModules, executeCommandLine: () => executeCommandLine, expandPreOrPostfixIncrementOrDecrementExpression: () => expandPreOrPostfixIncrementOrDecrementExpression, explainFiles: () => explainFiles, @@ -541,7 +543,6 @@ __export(typescript_exports, { extensionsNotSupportingExtensionlessResolution: () => extensionsNotSupportingExtensionlessResolution, externalHelpersModuleNameText: () => externalHelpersModuleNameText, factory: () => factory, - fileContainsPackageImport: () => fileContainsPackageImport, fileExtensionIs: () => fileExtensionIs, fileExtensionIsOneOf: () => fileExtensionIsOneOf, fileIncludeReasonToDiagnostics: () => fileIncludeReasonToDiagnostics, @@ -591,8 +592,10 @@ __export(typescript_exports, { forEach: () => forEach, forEachAncestor: () => forEachAncestor, forEachAncestorDirectory: () => forEachAncestorDirectory, + forEachAncestorDirectoryStoppingAtGlobalCache: () => forEachAncestorDirectoryStoppingAtGlobalCache, forEachChild: () => forEachChild, forEachChildRecursively: () => forEachChildRecursively, + forEachDynamicImportOrRequireCall: () => forEachDynamicImportOrRequireCall, forEachEmittedFile: () => forEachEmittedFile, forEachEnclosingBlockScopeContainer: () => forEachEnclosingBlockScopeContainer, forEachEntry: () => forEachEntry, @@ -633,6 +636,7 @@ __export(typescript_exports, { getAllKeys: () => getAllKeys, getAllProjectOutputs: () => getAllProjectOutputs, getAllSuperTypeNodes: () => getAllSuperTypeNodes, + getAllowImportingTsExtensions: () => getAllowImportingTsExtensions, getAllowJSCompilerOption: () => getAllowJSCompilerOption, getAllowSyntheticDefaultImports: () => getAllowSyntheticDefaultImports, getAncestor: () => getAncestor, @@ -941,6 +945,7 @@ __export(typescript_exports, { getPositionOfLineAndCharacter: () => getPositionOfLineAndCharacter, getPossibleGenericSignatures: () => getPossibleGenericSignatures, getPossibleOriginalInputExtensionForExtension: () => getPossibleOriginalInputExtensionForExtension, + getPossibleOriginalInputPathWithoutChangingExt: () => getPossibleOriginalInputPathWithoutChangingExt, getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, @@ -1204,7 +1209,7 @@ __export(typescript_exports, { isBooleanLiteral: () => isBooleanLiteral, isBreakOrContinueStatement: () => isBreakOrContinueStatement, isBreakStatement: () => isBreakStatement, - isBuild: () => isBuild, + isBuildCommand: () => isBuildCommand, isBuildInfoFile: () => isBuildInfoFile, isBuilderProgram: () => isBuilderProgram, isBundle: () => isBundle, @@ -1391,7 +1396,7 @@ __export(typescript_exports, { isImportSpecifier: () => isImportSpecifier, isImportTypeAssertionContainer: () => isImportTypeAssertionContainer, isImportTypeNode: () => isImportTypeNode, - isImportableFile: () => isImportableFile, + isImportable: () => isImportable, isInComment: () => isInComment, isInCompoundLikeAssignment: () => isInCompoundLikeAssignment, isInExpressionContext: () => isInExpressionContext, @@ -1490,6 +1495,7 @@ __export(typescript_exports, { isJsxAttributeLike: () => isJsxAttributeLike, isJsxAttributeName: () => isJsxAttributeName, isJsxAttributes: () => isJsxAttributes, + isJsxCallLike: () => isJsxCallLike, isJsxChild: () => isJsxChild, isJsxClosingElement: () => isJsxClosingElement, isJsxClosingFragment: () => isJsxClosingFragment, @@ -1572,6 +1578,7 @@ __export(typescript_exports, { isNamespaceReexportDeclaration: () => isNamespaceReexportDeclaration, isNewExpression: () => isNewExpression, isNewExpressionTarget: () => isNewExpressionTarget, + isNewScopeNode: () => isNewScopeNode, isNoSubstitutionTemplateLiteral: () => isNoSubstitutionTemplateLiteral, isNodeArray: () => isNodeArray, isNodeArrayMultiLine: () => isNodeArrayMultiLine, @@ -1620,6 +1627,7 @@ __export(typescript_exports, { isParseTreeNode: () => isParseTreeNode, isPartOfParameterDeclaration: () => isPartOfParameterDeclaration, isPartOfTypeNode: () => isPartOfTypeNode, + isPartOfTypeOnlyImportOrExportDeclaration: () => isPartOfTypeOnlyImportOrExportDeclaration, isPartOfTypeQuery: () => isPartOfTypeQuery, isPartiallyEmittedExpression: () => isPartiallyEmittedExpression, isPatternMatch: () => isPatternMatch, @@ -1688,6 +1696,7 @@ __export(typescript_exports, { isSimpleInlineableExpression: () => isSimpleInlineableExpression, isSimpleParameterList: () => isSimpleParameterList, isSingleOrDoubleQuote: () => isSingleOrDoubleQuote, + isSolutionConfig: () => isSolutionConfig, isSourceElement: () => isSourceElement, isSourceFile: () => isSourceFile, isSourceFileFromLibrary: () => isSourceFileFromLibrary, @@ -1796,7 +1805,6 @@ __export(typescript_exports, { isVariableDeclarationInitializedToRequire: () => isVariableDeclarationInitializedToRequire, isVariableDeclarationList: () => isVariableDeclarationList, isVariableLike: () => isVariableLike, - isVariableLikeOrAccessor: () => isVariableLikeOrAccessor, isVariableStatement: () => isVariableStatement, isVoidExpression: () => isVoidExpression, isWatchSet: () => isWatchSet, @@ -1833,6 +1841,7 @@ __export(typescript_exports, { matchPatternOrExact: () => matchPatternOrExact, matchedText: () => matchedText, matchesExclude: () => matchesExclude, + matchesExcludeWorker: () => matchesExcludeWorker, maxBy: () => maxBy, maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, @@ -1872,6 +1881,7 @@ __export(typescript_exports, { noTransformers: () => noTransformers, noTruncationMaximumTruncationLength: () => noTruncationMaximumTruncationLength, nodeCanBeDecorated: () => nodeCanBeDecorated, + nodeCoreModules: () => nodeCoreModules, nodeHasName: () => nodeHasName, nodeIsDecorated: () => nodeIsDecorated, nodeIsMissing: () => nodeIsMissing, @@ -2016,6 +2026,7 @@ __export(typescript_exports, { returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + rewriteModuleSpecifier: () => rewriteModuleSpecifier, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, @@ -2061,6 +2072,7 @@ __export(typescript_exports, { setValueDeclaration: () => setValueDeclaration, shouldAllowImportingTsExtension: () => shouldAllowImportingTsExtension, shouldPreserveConstEnums: () => shouldPreserveConstEnums, + shouldRewriteModuleSpecifier: () => shouldRewriteModuleSpecifier, shouldUseUriStyleNodeCoreModules: () => shouldUseUriStyleNodeCoreModules, showModuleSpecifier: () => showModuleSpecifier, signatureHasRestParameter: () => signatureHasRestParameter, @@ -2118,6 +2130,7 @@ __export(typescript_exports, { tagNamesAreEquivalent: () => tagNamesAreEquivalent, takeWhile: () => takeWhile, targetOptionDeclaration: () => targetOptionDeclaration, + targetToLibMap: () => targetToLibMap, testFormatSettings: () => testFormatSettings, textChangeRangeIsUnchanged: () => textChangeRangeIsUnchanged, textChangeRangeNewSpan: () => textChangeRangeNewSpan, @@ -2211,6 +2224,7 @@ __export(typescript_exports, { tryRemoveExtension: () => tryRemoveExtension, tryRemovePrefix: () => tryRemovePrefix, tryRemoveSuffix: () => tryRemoveSuffix, + tscBuildOption: () => tscBuildOption, typeAcquisitionDeclarations: () => typeAcquisitionDeclarations, typeAliasNamePart: () => typeAliasNamePart, typeDirectiveIsEqualTo: () => typeDirectiveIsEqualTo, @@ -2222,6 +2236,7 @@ __export(typescript_exports, { unescapeLeadingUnderscores: () => unescapeLeadingUnderscores, unmangleScopedPackageName: () => unmangleScopedPackageName, unorderedRemoveItem: () => unorderedRemoveItem, + unprefixedNodeCoreModules: () => unprefixedNodeCoreModules, unreachableCodeIsError: () => unreachableCodeIsError, unsetNodeChildren: () => unsetNodeChildren, unusedLabelIsError: () => unusedLabelIsError, @@ -2262,8 +2277,8 @@ __export(typescript_exports, { module.exports = __toCommonJS(typescript_exports); // src/compiler/corePublic.ts -var versionMajorMinor = "5.6"; -var version = "5.6.2"; +var versionMajorMinor = "5.7"; +var version = "5.7.2"; var Comparison = /* @__PURE__ */ ((Comparison3) => { Comparison3[Comparison3["LessThan"] = -1] = "LessThan"; Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo"; @@ -2731,7 +2746,10 @@ function deduplicateSorted(array, comparer) { for (let i = 1; i < array.length; i++) { const next = array[i]; switch (comparer(next, last2)) { + // equality comparison case true: + // relational comparison + // falls through case 0 /* EqualTo */: continue; case -1 /* LessThan */: @@ -3616,7 +3634,7 @@ function findBestPatternMatch(values, getPattern, candidate) { for (let i = 0; i < values.length; i++) { const v = values[i]; const pattern = getPattern(v); - if (isPatternMatch(pattern, candidate) && pattern.prefix.length > longestMatchPrefixLength) { + if (pattern.prefix.length > longestMatchPrefixLength && isPatternMatch(pattern, candidate)) { longestMatchPrefixLength = pattern.prefix.length; matchedValue = v; } @@ -5852,10 +5870,11 @@ var SyntaxKind = /* @__PURE__ */ ((SyntaxKind5) => { SyntaxKind5[SyntaxKind5["JSDocImportTag"] = 351] = "JSDocImportTag"; SyntaxKind5[SyntaxKind5["SyntaxList"] = 352] = "SyntaxList"; SyntaxKind5[SyntaxKind5["NotEmittedStatement"] = 353] = "NotEmittedStatement"; - SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 354] = "PartiallyEmittedExpression"; - SyntaxKind5[SyntaxKind5["CommaListExpression"] = 355] = "CommaListExpression"; - SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 356] = "SyntheticReferenceExpression"; - SyntaxKind5[SyntaxKind5["Count"] = 357] = "Count"; + SyntaxKind5[SyntaxKind5["NotEmittedTypeElement"] = 354] = "NotEmittedTypeElement"; + SyntaxKind5[SyntaxKind5["PartiallyEmittedExpression"] = 355] = "PartiallyEmittedExpression"; + SyntaxKind5[SyntaxKind5["CommaListExpression"] = 356] = "CommaListExpression"; + SyntaxKind5[SyntaxKind5["SyntheticReferenceExpression"] = 357] = "SyntheticReferenceExpression"; + SyntaxKind5[SyntaxKind5["Count"] = 358] = "Count"; SyntaxKind5[SyntaxKind5["FirstAssignment"] = 64 /* EqualsToken */] = "FirstAssignment"; SyntaxKind5[SyntaxKind5["LastAssignment"] = 79 /* CaretEqualsToken */] = "LastAssignment"; SyntaxKind5[SyntaxKind5["FirstCompoundAssignment"] = 65 /* PlusEqualsToken */] = "FirstCompoundAssignment"; @@ -6755,6 +6774,7 @@ var ScriptTarget = /* @__PURE__ */ ((ScriptTarget12) => { ScriptTarget12[ScriptTarget12["ES2021"] = 8] = "ES2021"; ScriptTarget12[ScriptTarget12["ES2022"] = 9] = "ES2022"; ScriptTarget12[ScriptTarget12["ES2023"] = 10] = "ES2023"; + ScriptTarget12[ScriptTarget12["ES2024"] = 11] = "ES2024"; ScriptTarget12[ScriptTarget12["ESNext"] = 99] = "ESNext"; ScriptTarget12[ScriptTarget12["JSON"] = 100] = "JSON"; ScriptTarget12[ScriptTarget12["Latest"] = 99 /* ESNext */] = "Latest"; @@ -7031,43 +7051,42 @@ var InternalEmitFlags = /* @__PURE__ */ ((InternalEmitFlags3) => { InternalEmitFlags3[InternalEmitFlags3["TransformPrivateStaticElements"] = 32] = "TransformPrivateStaticElements"; return InternalEmitFlags3; })(InternalEmitFlags || {}); -var LanguageFeatureMinimumTarget = /* @__PURE__ */ ((LanguageFeatureMinimumTarget2) => { - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["Classes"] = 2 /* ES2015 */] = "Classes"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ForOf"] = 2 /* ES2015 */] = "ForOf"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["Generators"] = 2 /* ES2015 */] = "Generators"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["Iteration"] = 2 /* ES2015 */] = "Iteration"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["SpreadElements"] = 2 /* ES2015 */] = "SpreadElements"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["RestElements"] = 2 /* ES2015 */] = "RestElements"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["TaggedTemplates"] = 2 /* ES2015 */] = "TaggedTemplates"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["DestructuringAssignment"] = 2 /* ES2015 */] = "DestructuringAssignment"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["BindingPatterns"] = 2 /* ES2015 */] = "BindingPatterns"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ArrowFunctions"] = 2 /* ES2015 */] = "ArrowFunctions"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["BlockScopedVariables"] = 2 /* ES2015 */] = "BlockScopedVariables"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ObjectAssign"] = 2 /* ES2015 */] = "ObjectAssign"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["RegularExpressionFlagsUnicode"] = 2 /* ES2015 */] = "RegularExpressionFlagsUnicode"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["RegularExpressionFlagsSticky"] = 2 /* ES2015 */] = "RegularExpressionFlagsSticky"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["Exponentiation"] = 3 /* ES2016 */] = "Exponentiation"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["AsyncFunctions"] = 4 /* ES2017 */] = "AsyncFunctions"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ForAwaitOf"] = 5 /* ES2018 */] = "ForAwaitOf"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["AsyncGenerators"] = 5 /* ES2018 */] = "AsyncGenerators"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["AsyncIteration"] = 5 /* ES2018 */] = "AsyncIteration"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ObjectSpreadRest"] = 5 /* ES2018 */] = "ObjectSpreadRest"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["RegularExpressionFlagsDotAll"] = 5 /* ES2018 */] = "RegularExpressionFlagsDotAll"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["BindinglessCatch"] = 6 /* ES2019 */] = "BindinglessCatch"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["BigInt"] = 7 /* ES2020 */] = "BigInt"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["NullishCoalesce"] = 7 /* ES2020 */] = "NullishCoalesce"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["OptionalChaining"] = 7 /* ES2020 */] = "OptionalChaining"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["LogicalAssignment"] = 8 /* ES2021 */] = "LogicalAssignment"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["TopLevelAwait"] = 9 /* ES2022 */] = "TopLevelAwait"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ClassFields"] = 9 /* ES2022 */] = "ClassFields"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["PrivateNamesAndClassStaticBlocks"] = 9 /* ES2022 */] = "PrivateNamesAndClassStaticBlocks"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["RegularExpressionFlagsHasIndices"] = 9 /* ES2022 */] = "RegularExpressionFlagsHasIndices"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ShebangComments"] = 99 /* ESNext */] = "ShebangComments"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["UsingAndAwaitUsing"] = 99 /* ESNext */] = "UsingAndAwaitUsing"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["ClassAndClassElementDecorators"] = 99 /* ESNext */] = "ClassAndClassElementDecorators"; - LanguageFeatureMinimumTarget2[LanguageFeatureMinimumTarget2["RegularExpressionFlagsUnicodeSets"] = 99 /* ESNext */] = "RegularExpressionFlagsUnicodeSets"; - return LanguageFeatureMinimumTarget2; -})(LanguageFeatureMinimumTarget || {}); +var LanguageFeatureMinimumTarget = { + Classes: 2 /* ES2015 */, + ForOf: 2 /* ES2015 */, + Generators: 2 /* ES2015 */, + Iteration: 2 /* ES2015 */, + SpreadElements: 2 /* ES2015 */, + RestElements: 2 /* ES2015 */, + TaggedTemplates: 2 /* ES2015 */, + DestructuringAssignment: 2 /* ES2015 */, + BindingPatterns: 2 /* ES2015 */, + ArrowFunctions: 2 /* ES2015 */, + BlockScopedVariables: 2 /* ES2015 */, + ObjectAssign: 2 /* ES2015 */, + RegularExpressionFlagsUnicode: 2 /* ES2015 */, + RegularExpressionFlagsSticky: 2 /* ES2015 */, + Exponentiation: 3 /* ES2016 */, + AsyncFunctions: 4 /* ES2017 */, + ForAwaitOf: 5 /* ES2018 */, + AsyncGenerators: 5 /* ES2018 */, + AsyncIteration: 5 /* ES2018 */, + ObjectSpreadRest: 5 /* ES2018 */, + RegularExpressionFlagsDotAll: 5 /* ES2018 */, + BindinglessCatch: 6 /* ES2019 */, + BigInt: 7 /* ES2020 */, + NullishCoalesce: 7 /* ES2020 */, + OptionalChaining: 7 /* ES2020 */, + LogicalAssignment: 8 /* ES2021 */, + TopLevelAwait: 9 /* ES2022 */, + ClassFields: 9 /* ES2022 */, + PrivateNamesAndClassStaticBlocks: 9 /* ES2022 */, + RegularExpressionFlagsHasIndices: 9 /* ES2022 */, + ShebangComments: 10 /* ES2023 */, + RegularExpressionFlagsUnicodeSets: 11 /* ES2024 */, + UsingAndAwaitUsing: 99 /* ESNext */, + ClassAndClassElementDecorators: 99 /* ESNext */ +}; var ExternalEmitHelpers = /* @__PURE__ */ ((ExternalEmitHelpers2) => { ExternalEmitHelpers2[ExternalEmitHelpers2["Extends"] = 1] = "Extends"; ExternalEmitHelpers2[ExternalEmitHelpers2["Assign"] = 2] = "Assign"; @@ -7095,6 +7114,7 @@ var ExternalEmitHelpers = /* @__PURE__ */ ((ExternalEmitHelpers2) => { ExternalEmitHelpers2[ExternalEmitHelpers2["SetFunctionName"] = 4194304] = "SetFunctionName"; ExternalEmitHelpers2[ExternalEmitHelpers2["PropKey"] = 8388608] = "PropKey"; ExternalEmitHelpers2[ExternalEmitHelpers2["AddDisposableResourceAndDisposeResources"] = 16777216] = "AddDisposableResourceAndDisposeResources"; + ExternalEmitHelpers2[ExternalEmitHelpers2["RewriteRelativeImportExtension"] = 33554432] = "RewriteRelativeImportExtension"; ExternalEmitHelpers2[ExternalEmitHelpers2["FirstEmitHelper"] = 1 /* Extends */] = "FirstEmitHelper"; ExternalEmitHelpers2[ExternalEmitHelpers2["LastEmitHelper"] = 16777216 /* AddDisposableResourceAndDisposeResources */] = "LastEmitHelper"; ExternalEmitHelpers2[ExternalEmitHelpers2["ForOfIncludes"] = 256 /* Values */] = "ForOfIncludes"; @@ -7995,6 +8015,7 @@ function createSystemWatchFunctions({ return generateWatchFileOptions(4 /* UseFsEvents */, 2 /* DynamicPriority */, options); case "UseFsEventsOnParentDirectory": useNonPollingWatchers2 = true; + // fall through default: return useNonPollingWatchers2 ? ( // Use notifications from FS to watch with falling back to fs.watchFile @@ -8243,6 +8264,7 @@ var sys = (() => { let profilePath = "./profile.cpuprofile"; const isMacOs = process.platform === "darwin"; const isLinuxOrMacOs = process.platform === "linux" || isMacOs; + const statSyncOptions = { throwIfNoEntry: false }; const platform = _os.platform(); const useCaseSensitiveFileNames2 = isFileSystemCaseSensitive(); const fsRealpath = !!_fs.realpathSync.native ? process.platform === "win32" ? fsRealPathHandlingLongPath : _fs.realpathSync.native : _fs.realpathSync; @@ -8324,12 +8346,9 @@ var sys = (() => { return process.memoryUsage().heapUsed; }, getFileSize(path) { - try { - const stat = statSync(path); - if (stat == null ? void 0 : stat.isFile()) { - return stat.size; - } - } catch { + const stat = statSync(path); + if (stat == null ? void 0 : stat.isFile()) { + return stat.size; } return 0; }, @@ -8372,7 +8391,11 @@ var sys = (() => { }; return nodeSystem; function statSync(path) { - return _fs.statSync(path, { throwIfNoEntry: false }); + try { + return _fs.statSync(path, statSyncOptions); + } catch { + return void 0; + } } function enableCPUProfiler(path, cb) { if (activeSession) { @@ -8426,11 +8449,8 @@ var sys = (() => { activeSession.post("Profiler.stop", (err, { profile }) => { var _a; if (!err) { - try { - if ((_a = statSync(profilePath)) == null ? void 0 : _a.isDirectory()) { - profilePath = _path.join(profilePath, `${(/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-")}+P${process.pid}.cpuprofile`); - } - } catch { + if ((_a = statSync(profilePath)) == null ? void 0 : _a.isDirectory()) { + profilePath = _path.join(profilePath, `${(/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-")}+P${process.pid}.cpuprofile`); } try { _fs.mkdirSync(_path.dirname(profilePath), { recursive: true }); @@ -8549,12 +8569,8 @@ var sys = (() => { let stat; if (typeof dirent === "string" || dirent.isSymbolicLink()) { const name = combinePaths(path, entry); - try { - stat = statSync(name); - if (!stat) { - continue; - } - } catch { + stat = statSync(name); + if (!stat) { continue; } } else { @@ -8577,25 +8593,17 @@ var sys = (() => { return matchFiles(path, extensions, excludes, includes, useCaseSensitiveFileNames2, process.cwd(), depth, getAccessibleFileSystemEntries, realpath); } function fileSystemEntryExists(path, entryKind) { - const originalStackTraceLimit = Error.stackTraceLimit; - Error.stackTraceLimit = 0; - try { - const stat = statSync(path); - if (!stat) { - return false; - } - switch (entryKind) { - case 0 /* File */: - return stat.isFile(); - case 1 /* Directory */: - return stat.isDirectory(); - default: - return false; - } - } catch { + const stat = statSync(path); + if (!stat) { return false; - } finally { - Error.stackTraceLimit = originalStackTraceLimit; + } + switch (entryKind) { + case 0 /* File */: + return stat.isFile(); + case 1 /* Directory */: + return stat.isDirectory(); + default: + return false; } } function fileExists(path) { @@ -8619,15 +8627,7 @@ var sys = (() => { } function getModifiedTime3(path) { var _a; - const originalStackTraceLimit = Error.stackTraceLimit; - Error.stackTraceLimit = 0; - try { - return (_a = statSync(path)) == null ? void 0 : _a.mtime; - } catch { - return void 0; - } finally { - Error.stackTraceLimit = originalStackTraceLimit; - } + return (_a = statSync(path)) == null ? void 0 : _a.mtime; } function setModifiedTime(path, time) { try { @@ -9537,6 +9537,10 @@ var Diagnostics = { /*reportsDeprecated*/ true ), + Type_only_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute: diag(1541, 1 /* Error */, "Type_only_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribut_1541", "Type-only import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute."), + Type_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute: diag(1542, 1 /* Error */, "Type_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute_1542", "Type import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute."), + Importing_a_JSON_file_into_an_ECMAScript_module_requires_a_type_Colon_json_import_attribute_when_module_is_set_to_0: diag(1543, 1 /* Error */, "Importing_a_JSON_file_into_an_ECMAScript_module_requires_a_type_Colon_json_import_attribute_when_mod_1543", `Importing a JSON file into an ECMAScript module requires a 'type: "json"' import attribute when 'module' is set to '{0}'.`), + Named_imports_from_a_JSON_file_into_an_ECMAScript_module_are_not_allowed_when_module_is_set_to_0: diag(1544, 1 /* Error */, "Named_imports_from_a_JSON_file_into_an_ECMAScript_module_are_not_allowed_when_module_is_set_to_0_1544", "Named imports from a JSON file into an ECMAScript module are not allowed when 'module' is set to '{0}'."), The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."), The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."), Call_signature_return_types_0_and_1_are_incompatible: diag( @@ -10108,6 +10112,12 @@ var Diagnostics = { This_expression_is_always_nullish: diag(2871, 1 /* Error */, "This_expression_is_always_nullish_2871", "This expression is always nullish."), This_kind_of_expression_is_always_truthy: diag(2872, 1 /* Error */, "This_kind_of_expression_is_always_truthy_2872", "This kind of expression is always truthy."), This_kind_of_expression_is_always_falsy: diag(2873, 1 /* Error */, "This_kind_of_expression_is_always_falsy_2873", "This kind of expression is always falsy."), + This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found: diag(2874, 1 /* Error */, "This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874", "This JSX tag requires '{0}' to be in scope, but it could not be found."), + This_JSX_tag_requires_the_module_path_0_to_exist_but_none_could_be_found_Make_sure_you_have_types_for_the_appropriate_package_installed: diag(2875, 1 /* Error */, "This_JSX_tag_requires_the_module_path_0_to_exist_but_none_could_be_found_Make_sure_you_have_types_fo_2875", "This JSX tag requires the module path '{0}' to exist, but none could be found. Make sure you have types for the appropriate package installed."), + This_relative_import_path_is_unsafe_to_rewrite_because_it_looks_like_a_file_name_but_actually_resolves_to_0: diag(2876, 1 /* Error */, "This_relative_import_path_is_unsafe_to_rewrite_because_it_looks_like_a_file_name_but_actually_resolv_2876", 'This relative import path is unsafe to rewrite because it looks like a file name, but actually resolves to "{0}".'), + This_import_uses_a_0_extension_to_resolve_to_an_input_TypeScript_file_but_will_not_be_rewritten_during_emit_because_it_is_not_a_relative_path: diag(2877, 1 /* Error */, "This_import_uses_a_0_extension_to_resolve_to_an_input_TypeScript_file_but_will_not_be_rewritten_duri_2877", "This import uses a '{0}' extension to resolve to an input TypeScript file, but will not be rewritten during emit because it is not a relative path."), + This_import_path_is_unsafe_to_rewrite_because_it_resolves_to_another_project_and_the_relative_path_between_the_projects_output_files_is_not_the_same_as_the_relative_path_between_its_input_files: diag(2878, 1 /* Error */, "This_import_path_is_unsafe_to_rewrite_because_it_resolves_to_another_project_and_the_relative_path_b_2878", "This import path is unsafe to rewrite because it resolves to another project, and the relative path between the projects' output files is not the same as the relative path between its input files."), + Using_JSX_fragments_requires_fragment_factory_0_to_be_in_scope_but_it_could_not_be_found: diag(2879, 1 /* Error */, "Using_JSX_fragments_requires_fragment_factory_0_to_be_in_scope_but_it_could_not_be_found_2879", "Using JSX fragments requires fragment factory '{0}' to be in scope, but it could not be found."), Import_declaration_0_is_using_private_name_1: diag(4e3, 1 /* Error */, "Import_declaration_0_is_using_private_name_1_4000", "Import declaration '{0}' is using private name '{1}'."), Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: diag(4002, 1 /* Error */, "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", "Type parameter '{0}' of exported class has or is using private name '{1}'."), Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: diag(4004, 1 /* Error */, "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", "Type parameter '{0}' of exported interface has or is using private name '{1}'."), @@ -10283,7 +10293,6 @@ var Diagnostics = { Option_0_1_has_been_removed_Please_remove_it_from_your_configuration: diag(5108, 1 /* Error */, "Option_0_1_has_been_removed_Please_remove_it_from_your_configuration_5108", "Option '{0}={1}' has been removed. Please remove it from your configuration."), Option_moduleResolution_must_be_set_to_0_or_left_unspecified_when_option_module_is_set_to_1: diag(5109, 1 /* Error */, "Option_moduleResolution_must_be_set_to_0_or_left_unspecified_when_option_module_is_set_to_1_5109", "Option 'moduleResolution' must be set to '{0}' (or left unspecified) when option 'module' is set to '{1}'."), Option_module_must_be_set_to_0_when_option_moduleResolution_is_set_to_1: diag(5110, 1 /* Error */, "Option_module_must_be_set_to_0_when_option_moduleResolution_is_set_to_1_5110", "Option 'module' must be set to '{0}' when option 'moduleResolution' is set to '{1}'."), - Option_tsBuildInfoFile_cannot_be_specified_without_specifying_option_incremental_or_composite_or_if_not_running_tsc_b: diag(5111, 1 /* Error */, "Option_tsBuildInfoFile_cannot_be_specified_without_specifying_option_incremental_or_composite_or_if__5111", "Option 'tsBuildInfoFile' cannot be specified without specifying option 'incremental' or 'composite' or if not running 'tsc -b'."), Generates_a_sourcemap_for_each_corresponding_d_ts_file: diag(6e3, 3 /* Message */, "Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000", "Generates a sourcemap for each corresponding '.d.ts' file."), Concatenate_and_emit_output_to_single_file: diag(6001, 3 /* Message */, "Concatenate_and_emit_output_to_single_file_6001", "Concatenate and emit output to single file."), Generates_corresponding_d_ts_file: diag(6002, 3 /* Message */, "Generates_corresponding_d_ts_file_6002", "Generates corresponding '.d.ts' file."), @@ -10665,6 +10674,7 @@ var Diagnostics = { Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0: diag(6418, 3 /* Message */, "Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0_6418", "Searching all ancestor node_modules directories for fallback extensions: {0}."), Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_program_needs_to_report_errors: diag(6419, 3 /* Message */, "Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_program_needs_to_report_errors_6419", "Project '{0}' is out of date because buildinfo file '{1}' indicates that program needs to report errors."), Project_0_is_out_of_date_because_1: diag(6420, 3 /* Message */, "Project_0_is_out_of_date_because_1_6420", "Project '{0}' is out of date because {1}."), + Rewrite_ts_tsx_mts_and_cts_file_extensions_in_relative_import_paths_to_their_JavaScript_equivalent_in_output_files: diag(6421, 3 /* Message */, "Rewrite_ts_tsx_mts_and_cts_file_extensions_in_relative_import_paths_to_their_JavaScript_equivalent_i_6421", "Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files."), The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1: diag(6500, 3 /* Message */, "The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1_6500", "The expected type comes from property '{0}' which is declared here on type '{1}'"), The_expected_type_comes_from_this_index_signature: diag(6501, 3 /* Message */, "The_expected_type_comes_from_this_index_signature_6501", "The expected type comes from this index signature."), The_expected_type_comes_from_the_return_type_of_this_signature: diag(6502, 3 /* Message */, "The_expected_type_comes_from_the_return_type_of_this_signature_6502", "The expected type comes from the return type of this signature."), @@ -10844,7 +10854,7 @@ var Diagnostics = { _0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer: diag(7022, 1 /* Error */, "_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or__7022", "'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer."), _0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: diag(7023, 1 /* Error */, "_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_reference_7023", "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."), Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: diag(7024, 1 /* Error */, "Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_ref_7024", "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."), - Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation: diag(7025, 1 /* Error */, "Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_retu_7025", "Generator implicitly has yield type '{0}' because it does not yield any values. Consider supplying a return type annotation."), + Generator_implicitly_has_yield_type_0_Consider_supplying_a_return_type_annotation: diag(7025, 1 /* Error */, "Generator_implicitly_has_yield_type_0_Consider_supplying_a_return_type_annotation_7025", "Generator implicitly has yield type '{0}'. Consider supplying a return type annotation."), JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists: diag(7026, 1 /* Error */, "JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026", "JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists."), Unreachable_code_detected: diag( 7027, @@ -10935,7 +10945,7 @@ var Diagnostics = { Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit: diag(9006, 1 /* Error */, "Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006", "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."), Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations: diag(9007, 1 /* Error */, "Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations_9007", "Function must have an explicit return type annotation with --isolatedDeclarations."), Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations: diag(9008, 1 /* Error */, "Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations_9008", "Method must have an explicit return type annotation with --isolatedDeclarations."), - At_least_one_accessor_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations: diag(9009, 1 /* Error */, "At_least_one_accessor_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations_9009", "At least one accessor must have an explicit return type annotation with --isolatedDeclarations."), + At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations: diag(9009, 1 /* Error */, "At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9009", "At least one accessor must have an explicit type annotation with --isolatedDeclarations."), Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations: diag(9010, 1 /* Error */, "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", "Variable must have an explicit type annotation with --isolatedDeclarations."), Parameter_must_have_an_explicit_type_annotation_with_isolatedDeclarations: diag(9011, 1 /* Error */, "Parameter_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9011", "Parameter must have an explicit type annotation with --isolatedDeclarations."), Property_must_have_an_explicit_type_annotation_with_isolatedDeclarations: diag(9012, 1 /* Error */, "Property_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9012", "Property must have an explicit type annotation with --isolatedDeclarations."), @@ -10950,7 +10960,7 @@ var Diagnostics = { Extends_clause_can_t_contain_an_expression_with_isolatedDeclarations: diag(9021, 1 /* Error */, "Extends_clause_can_t_contain_an_expression_with_isolatedDeclarations_9021", "Extends clause can't contain an expression with --isolatedDeclarations."), Inference_from_class_expressions_is_not_supported_with_isolatedDeclarations: diag(9022, 1 /* Error */, "Inference_from_class_expressions_is_not_supported_with_isolatedDeclarations_9022", "Inference from class expressions is not supported with --isolatedDeclarations."), Assigning_properties_to_functions_without_declaring_them_is_not_supported_with_isolatedDeclarations_Add_an_explicit_declaration_for_the_properties_assigned_to_this_function: diag(9023, 1 /* Error */, "Assigning_properties_to_functions_without_declaring_them_is_not_supported_with_isolatedDeclarations__9023", "Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function."), - Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_it_s_type_This_is_not_supported_with_isolatedDeclarations: diag(9025, 1 /* Error */, "Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_it_s_type_This_is_not_su_9025", "Declaration emit for this parameter requires implicitly adding undefined to it's type. This is not supported with --isolatedDeclarations."), + Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_its_type_This_is_not_supported_with_isolatedDeclarations: diag(9025, 1 /* Error */, "Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_its_type_This_is_not_sup_9025", "Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations."), Declaration_emit_for_this_file_requires_preserving_this_import_for_augmentations_This_is_not_supported_with_isolatedDeclarations: diag(9026, 1 /* Error */, "Declaration_emit_for_this_file_requires_preserving_this_import_for_augmentations_This_is_not_support_9026", "Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations."), Add_a_type_annotation_to_the_variable_0: diag(9027, 1 /* Error */, "Add_a_type_annotation_to_the_variable_0_9027", "Add a type annotation to the variable {0}."), Add_a_type_annotation_to_the_parameter_0: diag(9028, 1 /* Error */, "Add_a_type_annotation_to_the_parameter_0_9028", "Add a type annotation to the parameter {0}."), @@ -11244,6 +11254,8 @@ var Diagnostics = { Add_all_optional_parameters: diag(95193, 3 /* Message */, "Add_all_optional_parameters_95193", "Add all optional parameters"), Wrap_in_parentheses: diag(95194, 3 /* Message */, "Wrap_in_parentheses_95194", "Wrap in parentheses"), Wrap_all_invalid_decorator_expressions_in_parentheses: diag(95195, 3 /* Message */, "Wrap_all_invalid_decorator_expressions_in_parentheses_95195", "Wrap all invalid decorator expressions in parentheses"), + Add_resolution_mode_import_attribute: diag(95196, 3 /* Message */, "Add_resolution_mode_import_attribute_95196", "Add 'resolution-mode' import attribute"), + Add_resolution_mode_import_attribute_to_all_type_only_imports_that_need_it: diag(95197, 3 /* Message */, "Add_resolution_mode_import_attribute_to_all_type_only_imports_that_need_it_95197", "Add 'resolution-mode' import attribute to all type-only imports that need it"), No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer: diag(18004, 1 /* Error */, "No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004", "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."), Classes_may_not_have_a_field_named_constructor: diag(18006, 1 /* Error */, "Classes_may_not_have_a_field_named_constructor_18006", "Classes may not have a field named 'constructor'."), JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array: diag(18007, 1 /* Error */, "JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007", "JSX expressions may not use the comma operator. Did you mean to write an array?"), @@ -11459,11 +11471,11 @@ var charCodeToRegExpFlag = /* @__PURE__ */ new Map([ [121 /* y */, 128 /* Sticky */] ]); var regExpFlagToFirstAvailableLanguageVersion = /* @__PURE__ */ new Map([ - [1 /* HasIndices */, 9 /* RegularExpressionFlagsHasIndices */], - [16 /* DotAll */, 5 /* RegularExpressionFlagsDotAll */], - [32 /* Unicode */, 2 /* RegularExpressionFlagsUnicode */], - [64 /* UnicodeSets */, 99 /* RegularExpressionFlagsUnicodeSets */], - [128 /* Sticky */, 2 /* RegularExpressionFlagsSticky */] + [1 /* HasIndices */, LanguageFeatureMinimumTarget.RegularExpressionFlagsHasIndices], + [16 /* DotAll */, LanguageFeatureMinimumTarget.RegularExpressionFlagsDotAll], + [32 /* Unicode */, LanguageFeatureMinimumTarget.RegularExpressionFlagsUnicode], + [64 /* UnicodeSets */, LanguageFeatureMinimumTarget.RegularExpressionFlagsUnicodeSets], + [128 /* Sticky */, LanguageFeatureMinimumTarget.RegularExpressionFlagsSticky] ]); var unicodeES5IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6e3, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43e3, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500]; var unicodeES5IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6e3, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43e3, 43047, 43072, 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500]; @@ -11532,6 +11544,7 @@ function computeLineStarts(text) { if (text.charCodeAt(pos) === 10 /* lineFeed */) { pos++; } + // falls through case 10 /* lineFeed */: result.push(lineStart); lineStart = pos; @@ -11634,6 +11647,8 @@ function couldStartTrivia(text, pos) { case 12 /* formFeed */: case 32 /* space */: case 47 /* slash */: + // starts of normal trivia + // falls through case 60 /* lessThan */: case 124 /* bar */: case 61 /* equals */: @@ -11657,6 +11672,7 @@ function skipTrivia(text, pos, stopAfterLineBreak, stopAtComments, inJSDoc) { if (text.charCodeAt(pos + 1) === 10 /* lineFeed */) { pos++; } + // falls through case 10 /* lineFeed */: pos++; if (stopAfterLineBreak) { @@ -11803,6 +11819,7 @@ function iterateCommentRanges(reduce, text, pos, trailing, cb, state, initial) { if (text.charCodeAt(pos + 1) === 10 /* lineFeed */) { pos++; } + // falls through case 10 /* lineFeed */: pos++; if (trailing) { @@ -12368,12 +12385,16 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan if (pos >= end || !isDigit(charCodeUnchecked(pos))) { return "\0"; } + // '\01', '\011' + // falls through case 49 /* _1 */: case 50 /* _2 */: case 51 /* _3 */: if (pos < end && isOctalDigit(charCodeUnchecked(pos))) { pos++; } + // '\17', '\177' + // falls through case 52 /* _4 */: case 53 /* _5 */: case 54 /* _6 */: @@ -12471,10 +12492,13 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan } tokenFlags |= 4096 /* HexEscape */; return String.fromCharCode(parseInt(text.substring(start2 + 2, pos), 16)); + // when encountering a LineContinuation (i.e. a backslash and a line terminator sequence), + // the line terminator is interpreted to be "the empty code unit sequence". case 13 /* carriageReturn */: if (pos < end && charCodeUnchecked(pos) === 10 /* lineFeed */) { pos++; } + // falls through case 10 /* lineFeed */: case 8232 /* lineSeparator */: case 8233 /* paragraphSeparator */: @@ -12905,6 +12929,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan tokenFlags |= 256 /* OctalSpecifier */; return token = checkBigIntSuffix(); } + // falls through case 49 /* _1 */: case 50 /* _2 */: case 51 /* _3 */: @@ -13424,6 +13449,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan break; } } + // falls through case 42 /* asterisk */: case 43 /* plus */: case 63 /* question */: @@ -13454,6 +13480,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan if (isInGroup) { return; } + // falls through case 93 /* closeBracket */: case 125 /* closeBrace */: if (anyUnicodeModeOrNonAnnexB || ch === 41 /* closeParen */) { @@ -13516,6 +13543,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan error2(Diagnostics.q_is_only_available_inside_character_class, pos - 2, 2); break; } + // falls through default: Debug.assert(scanCharacterClassEscape() || scanDecimalEscape() || scanCharacterEscape( /*atomEscape*/ @@ -13653,6 +13681,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan let start2 = pos; let operand; switch (text.slice(pos, pos + 2)) { + // TODO: don't use slice case "--": case "&&": error2(Diagnostics.Expected_a_class_set_operand); @@ -13758,6 +13787,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan } start2 = pos; switch (text.slice(pos, pos + 2)) { + // TODO: don't use slice case "--": case "&&": error2(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos, 2); @@ -13855,6 +13885,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan } } pos--; + // falls through default: return scanClassSetCharacter(); } @@ -14001,6 +14032,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan return true; case 80 /* P */: isCharacterComplement = true; + // falls through case 112 /* p */: pos++; if (charCodeChecked(pos) === 123 /* openBrace */) { @@ -14308,6 +14340,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan if (charCodeUnchecked(pos) === 10 /* lineFeed */) { pos++; } + // falls through case 10 /* lineFeed */: tokenFlags |= 1 /* PrecedingLineBreak */; return token = 4 /* NewLineTrivia */; @@ -14512,28 +14545,33 @@ function isExternalModuleNameRelative(moduleName) { function sortAndDeduplicateDiagnostics(diagnostics) { return sortAndDeduplicate(diagnostics, compareDiagnostics, diagnosticsEqualityComparer); } +var targetToLibMap = /* @__PURE__ */ new Map([ + [99 /* ESNext */, "lib.esnext.full.d.ts"], + [10 /* ES2023 */, "lib.es2023.full.d.ts"], + [9 /* ES2022 */, "lib.es2022.full.d.ts"], + [8 /* ES2021 */, "lib.es2021.full.d.ts"], + [7 /* ES2020 */, "lib.es2020.full.d.ts"], + [6 /* ES2019 */, "lib.es2019.full.d.ts"], + [5 /* ES2018 */, "lib.es2018.full.d.ts"], + [4 /* ES2017 */, "lib.es2017.full.d.ts"], + [3 /* ES2016 */, "lib.es2016.full.d.ts"], + [2 /* ES2015 */, "lib.es6.d.ts"] + // We don't use lib.es2015.full.d.ts due to breaking change. +]); function getDefaultLibFileName(options) { - switch (getEmitScriptTarget(options)) { + const target = getEmitScriptTarget(options); + switch (target) { case 99 /* ESNext */: - return "lib.esnext.full.d.ts"; case 10 /* ES2023 */: - return "lib.es2023.full.d.ts"; case 9 /* ES2022 */: - return "lib.es2022.full.d.ts"; case 8 /* ES2021 */: - return "lib.es2021.full.d.ts"; case 7 /* ES2020 */: - return "lib.es2020.full.d.ts"; case 6 /* ES2019 */: - return "lib.es2019.full.d.ts"; case 5 /* ES2018 */: - return "lib.es2018.full.d.ts"; case 4 /* ES2017 */: - return "lib.es2017.full.d.ts"; case 3 /* ES2016 */: - return "lib.es2016.full.d.ts"; case 2 /* ES2015 */: - return "lib.es6.d.ts"; + return targetToLibMap.get(target); default: return "lib.d.ts"; } @@ -15326,6 +15364,9 @@ function isTypeOnlyExportDeclaration(node) { function isTypeOnlyImportOrExportDeclaration(node) { return isTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node); } +function isPartOfTypeOnlyImportOrExportDeclaration(node) { + return findAncestor(node, isTypeOnlyImportOrExportDeclaration) !== void 0; +} function isStringTextContainingNode(node) { return node.kind === 11 /* StringLiteral */ || isTemplateLiteralKind(node.kind); } @@ -15474,7 +15515,7 @@ function isModifierLike(node) { } function isTypeElement(node) { const kind = node.kind; - return kind === 180 /* ConstructSignature */ || kind === 179 /* CallSignature */ || kind === 171 /* PropertySignature */ || kind === 173 /* MethodSignature */ || kind === 181 /* IndexSignature */ || kind === 177 /* GetAccessor */ || kind === 178 /* SetAccessor */; + return kind === 180 /* ConstructSignature */ || kind === 179 /* CallSignature */ || kind === 171 /* PropertySignature */ || kind === 173 /* MethodSignature */ || kind === 181 /* IndexSignature */ || kind === 177 /* GetAccessor */ || kind === 178 /* SetAccessor */ || kind === 354 /* NotEmittedTypeElement */; } function isClassOrTypeElement(node) { return isTypeElement(node) || isClassElement(node); @@ -15536,7 +15577,9 @@ function isObjectBindingOrAssignmentElement(node) { switch (node.kind) { case 208 /* BindingElement */: case 303 /* PropertyAssignment */: + // AssignmentProperty case 304 /* ShorthandPropertyAssignment */: + // AssignmentProperty case 305 /* SpreadAssignment */: return true; } @@ -15554,11 +15597,17 @@ function isArrayBindingOrAssignmentElement(node) { switch (node.kind) { case 208 /* BindingElement */: case 232 /* OmittedExpression */: + // Elision case 230 /* SpreadElement */: + // AssignmentRestElement case 209 /* ArrayLiteralExpression */: + // ArrayAssignmentPattern case 210 /* ObjectLiteralExpression */: + // ObjectAssignmentPattern case 80 /* Identifier */: + // DestructuringAssignmentTarget case 211 /* PropertyAccessExpression */: + // DestructuringAssignmentTarget case 212 /* ElementAccessExpression */: return true; } @@ -15581,13 +15630,16 @@ function isCallLikeOrFunctionLikeExpression(node) { } function isCallLikeExpression(node) { switch (node.kind) { - case 286 /* JsxOpeningElement */: - case 285 /* JsxSelfClosingElement */: case 213 /* CallExpression */: case 214 /* NewExpression */: case 215 /* TaggedTemplateExpression */: case 170 /* Decorator */: + case 286 /* JsxOpeningElement */: + case 285 /* JsxSelfClosingElement */: + case 289 /* JsxOpeningFragment */: return true; + case 226 /* BinaryExpression */: + return node.operatorToken.kind === 104 /* InstanceOfKeyword */; default: return false; } @@ -15619,6 +15671,7 @@ function isLeftHandSideExpressionKind(kind) { case 218 /* FunctionExpression */: case 80 /* Identifier */: case 81 /* PrivateIdentifier */: + // technically this is only an Expression if it's in a `#field in expr` BinaryExpression case 14 /* RegularExpressionLiteral */: case 9 /* NumericLiteral */: case 10 /* BigIntLiteral */: @@ -15634,6 +15687,7 @@ function isLeftHandSideExpressionKind(kind) { case 233 /* ExpressionWithTypeArguments */: case 236 /* MetaProperty */: case 102 /* ImportKeyword */: + // technically this is only an Expression if it's in a CallExpression case 282 /* MissingDeclaration */: return true; default: @@ -15690,8 +15744,8 @@ function isExpressionKind(kind) { case 230 /* SpreadElement */: case 234 /* AsExpression */: case 232 /* OmittedExpression */: - case 355 /* CommaListExpression */: - case 354 /* PartiallyEmittedExpression */: + case 356 /* CommaListExpression */: + case 355 /* PartiallyEmittedExpression */: case 238 /* SatisfiesExpression */: return true; default: @@ -15928,6 +15982,10 @@ function isJsxOpeningLikeElement(node) { const kind = node.kind; return kind === 286 /* JsxOpeningElement */ || kind === 285 /* JsxSelfClosingElement */; } +function isJsxCallLike(node) { + const kind = node.kind; + return kind === 286 /* JsxOpeningElement */ || kind === 285 /* JsxSelfClosingElement */ || kind === 289 /* JsxOpeningFragment */; +} function isCaseOrDefaultClause(node) { const kind = node.kind; return kind === 296 /* CaseClause */ || kind === 297 /* DefaultClause */; @@ -16568,11 +16626,45 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( AsyncIterator: new Map(Object.entries({ es2015: emptyArray })), + ArrayBuffer: new Map(Object.entries({ + es2024: [ + "maxByteLength", + "resizable", + "resize", + "detached", + "transfer", + "transferToFixedLength" + ] + })), Atomics: new Map(Object.entries({ - es2017: emptyArray + es2017: [ + "add", + "and", + "compareExchange", + "exchange", + "isLockFree", + "load", + "or", + "store", + "sub", + "wait", + "notify", + "xor" + ], + es2024: [ + "waitAsync" + ] })), SharedArrayBuffer: new Map(Object.entries({ - es2017: emptyArray + es2017: [ + "byteLength", + "slice" + ], + es2024: [ + "growable", + "maxByteLength", + "grow" + ] })), AsyncIterable: new Map(Object.entries({ es2018: emptyArray @@ -16594,6 +16686,9 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( ], es2018: [ "dotAll" + ], + es2024: [ + "unicodeSets" ] })), Reflect: new Map(Object.entries({ @@ -16640,6 +16735,9 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( ], es2022: [ "hasOwn" + ], + es2024: [ + "groupBy" ] })), NumberConstructor: new Map(Object.entries({ @@ -16680,11 +16778,25 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( "values" ] })), + MapConstructor: new Map(Object.entries({ + es2024: [ + "groupBy" + ] + })), Set: new Map(Object.entries({ es2015: [ "entries", "keys", "values" + ], + esnext: [ + "union", + "intersection", + "difference", + "symmetricDifference", + "isSubsetOf", + "isSupersetOf", + "isDisjointFrom" ] })), PromiseConstructor: new Map(Object.entries({ @@ -16699,6 +16811,9 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( ], es2021: [ "any" + ], + es2024: [ + "withResolvers" ] })), Symbol: new Map(Object.entries({ @@ -16765,7 +16880,7 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( es2022: [ "at" ], - esnext: [ + es2024: [ "isWellFormed", "toWellFormed" ] @@ -16810,6 +16925,11 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize( SymbolConstructor: new Map(Object.entries({ es2020: [ "matchAll" + ], + esnext: [ + "metadata", + "dispose", + "asyncDispose" ] })), DataView: new Map(Object.entries({ @@ -17430,6 +17550,8 @@ function getErrorSpanForNode(sourceFile, node) { } return getSpanOfTokenAtPosition(sourceFile, pos2); } + // This list is a work in progress. Add missing node kinds to improve their error + // spans. case 260 /* VariableDeclaration */: case 208 /* BindingElement */: case 263 /* ClassDeclaration */: @@ -17601,6 +17723,8 @@ function isPartOfTypeNode(node) { return isPartOfTypeExpressionWithTypeArguments(node); case 168 /* TypeParameter */: return node.parent.kind === 200 /* MappedType */ || node.parent.kind === 195 /* InferType */; + // Identifiers and qualified names may be type nodes, depending on their context. Climb + // above them to find the lowest container case 80 /* Identifier */: if (node.parent.kind === 166 /* QualifiedName */ && node.parent.right === node) { node = node.parent; @@ -17608,6 +17732,7 @@ function isPartOfTypeNode(node) { node = node.parent; } Debug.assert(node.kind === 80 /* Identifier */ || node.kind === 166 /* QualifiedName */ || node.kind === 211 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isPartOfTypeNode'."); + // falls through case 166 /* QualifiedName */: case 211 /* PropertyAccessExpression */: case 110 /* ThisKeyword */: { @@ -17749,9 +17874,6 @@ function isVariableLike(node) { } return false; } -function isVariableLikeOrAccessor(node) { - return isVariableLike(node) || isAccessor(node); -} function isVariableDeclarationInVariableStatement(node) { return node.parent.kind === 261 /* VariableDeclarationList */ && node.parent.parent.kind === 243 /* VariableStatement */; } @@ -17876,6 +17998,7 @@ function getThisContainer(node, includeArrowFunctions, includeClassComputedPrope if (!includeArrowFunctions) { continue; } + // falls through case 262 /* FunctionDeclaration */: case 218 /* FunctionExpression */: case 267 /* ModuleDeclaration */: @@ -17898,6 +18021,8 @@ function getThisContainer(node, includeArrowFunctions, includeClassComputedPrope } function isThisContainerOrFunctionBlock(node) { switch (node.kind) { + // Arrow functions use the same scope, but may do so in a "delayed" manner + // For example, `const getThis = () => this` may be before a super() call in a derived constructor case 219 /* ArrowFunction */: case 262 /* FunctionDeclaration */: case 218 /* FunctionExpression */: @@ -17964,6 +18089,7 @@ function getSuperContainer(node, stopOnFunctions) { if (!stopOnFunctions) { continue; } + // falls through case 172 /* PropertyDeclaration */: case 171 /* PropertySignature */: case 174 /* MethodDeclaration */: @@ -18017,6 +18143,7 @@ function getEntityNameFromTypeNode(node) { return node.typeName; case 233 /* ExpressionWithTypeArguments */: return isEntityNameExpression(node.expression) ? node.expression : void 0; + // TODO(rbuckton): These aren't valid TypeNodes, but we treat them as such because of `isPartOfTypeNode`, which returns `true` for things that aren't `TypeNode`s. case 80 /* Identifier */: case 166 /* QualifiedName */: return node; @@ -18032,6 +18159,8 @@ function getInvokedExpression(node) { return node.tagName; case 226 /* BinaryExpression */: return node.right; + case 289 /* JsxOpeningFragment */: + return node; default: return node.expression; } @@ -18181,6 +18310,7 @@ function isExpressionNode(node) { if (node.parent.kind === 186 /* TypeQuery */ || isJSDocLinkLike(node.parent) || isJSDocNameReference(node.parent) || isJSDocMemberName(node.parent) || isJSXTagName(node)) { return true; } + // falls through case 9 /* NumericLiteral */: case 10 /* BigIntLiteral */: case 11 /* StringLiteral */: @@ -18635,12 +18765,17 @@ function tryGetImportFromModuleSpecifier(node) { false ) ? node.parent : void 0; case 201 /* LiteralType */: - Debug.assert(isStringLiteral(node)); + if (!isStringLiteral(node)) { + break; + } return tryCast(node.parent.parent, isImportTypeNode); default: return void 0; } } +function shouldRewriteModuleSpecifier(specifier, compilerOptions) { + return !!compilerOptions.rewriteRelativeImportExtensions && pathIsRelative(specifier) && !isDeclarationFileName(specifier) && hasTSFileExtension(specifier); +} function getExternalModuleName(node) { switch (node.kind) { case 272 /* ImportDeclaration */: @@ -18685,17 +18820,15 @@ function forEachImportClauseDeclaration(node, action) { } } function hasQuestionToken(node) { - if (node) { - switch (node.kind) { - case 169 /* Parameter */: - case 174 /* MethodDeclaration */: - case 173 /* MethodSignature */: - case 304 /* ShorthandPropertyAssignment */: - case 303 /* PropertyAssignment */: - case 172 /* PropertyDeclaration */: - case 171 /* PropertySignature */: - return node.questionToken !== void 0; - } + switch (node.kind) { + case 169 /* Parameter */: + case 174 /* MethodDeclaration */: + case 173 /* MethodSignature */: + case 304 /* ShorthandPropertyAssignment */: + case 303 /* PropertyAssignment */: + case 172 /* PropertyDeclaration */: + case 171 /* PropertySignature */: + return node.questionToken !== void 0; } return false; } @@ -19095,6 +19228,7 @@ function getDeclarationFromName(name) { case 15 /* NoSubstitutionTemplateLiteral */: case 9 /* NumericLiteral */: if (isComputedPropertyName(parent2)) return parent2.parent; + // falls through case 80 /* Identifier */: if (isDeclaration(parent2)) { return parent2.name === name ? parent2 : void 0; @@ -19265,6 +19399,7 @@ function getFunctionFlags(node) { if (node.asteriskToken) { flags |= 1 /* Generator */; } + // falls through case 219 /* ArrowFunction */: if (hasSyntacticModifier(node, 1024 /* Async */)) { flags |= 2 /* Async */; @@ -19535,7 +19670,7 @@ var OperatorPrecedence = /* @__PURE__ */ ((OperatorPrecedence2) => { })(OperatorPrecedence || {}); function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { switch (nodeKind) { - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return 0 /* Comma */; case 230 /* SpreadElement */: return 1 /* Spread */; @@ -19567,6 +19702,7 @@ function getOperatorPrecedence(nodeKind, operatorKind, hasArguments) { default: return getBinaryOperatorPrecedence(operatorKind); } + // TODO: Should prefix `++` and `--` be moved to the `Update` precedence? case 216 /* TypeAssertionExpression */: case 235 /* NonNullExpression */: case 224 /* PrefixUnaryExpression */: @@ -19749,7 +19885,7 @@ function hasInvalidEscape(template) { } var doubleQuoteEscapedCharsRegExp = /[\\"\u0000-\u001f\u2028\u2029\u0085]/g; var singleQuoteEscapedCharsRegExp = /[\\'\u0000-\u001f\u2028\u2029\u0085]/g; -var backtickQuoteEscapedCharsRegExp = /\r\n|[\\`\u0000-\u001f\u2028\u2029\u0085]/g; +var backtickQuoteEscapedCharsRegExp = /\r\n|[\\`\u0000-\u0009\u000b-\u001f\u2028\u2029\u0085]/g; var escapedCharsMap = new Map(Object.entries({ " ": "\\t", "\v": "\\v", @@ -20069,6 +20205,12 @@ function getDeclarationEmitExtensionForPath(path) { function getPossibleOriginalInputExtensionForExtension(path) { return fileExtensionIsOneOf(path, [".d.mts" /* Dmts */, ".mjs" /* Mjs */, ".mts" /* Mts */]) ? [".mts" /* Mts */, ".mjs" /* Mjs */] : fileExtensionIsOneOf(path, [".d.cts" /* Dcts */, ".cjs" /* Cjs */, ".cts" /* Cts */]) ? [".cts" /* Cts */, ".cjs" /* Cjs */] : fileExtensionIsOneOf(path, [`.d.json.ts`]) ? [".json" /* Json */] : [".tsx" /* Tsx */, ".ts" /* Ts */, ".jsx" /* Jsx */, ".js" /* Js */]; } +function getPossibleOriginalInputPathWithoutChangingExt(filePath, ignoreCase, outputDir, getCommonSourceDirectory2) { + return outputDir ? resolvePath( + getCommonSourceDirectory2(), + getRelativePathFromDirectory(outputDir, filePath, ignoreCase) + ) : filePath; +} function getPathsBasePath(options, host) { var _a; if (!options.paths) return void 0; @@ -20942,6 +21084,12 @@ function getLinesBetweenPositionAndNextNonWhitespaceCharacter(pos, stopPos, sour ); return getLinesBetweenPositions(sourceFile, pos, Math.min(stopPos, nextPos)); } +function rangeContainsRange(r1, r2) { + return startEndContainsRange(r1.pos, r1.end, r2); +} +function startEndContainsRange(start, end, range) { + return start <= range.pos && end >= range.end; +} function getPreviousNonWhitespacePosition(pos, stopPos = 0, sourceFile) { while (pos-- > stopPos) { if (!isWhiteSpaceLike(sourceFile.text.charCodeAt(pos))) { @@ -21026,6 +21174,9 @@ function accessKind(node) { return node === parent2.objectAssignmentInitializer ? 0 /* Read */ : accessKind(parent2.parent); case 209 /* ArrayLiteralExpression */: return accessKind(parent2); + case 249 /* ForInStatement */: + case 250 /* ForOfStatement */: + return node === parent2.initializer ? 1 /* Write */ : 0 /* Read */; default: return 0 /* Read */; } @@ -21118,11 +21269,11 @@ function getLastChild(node) { }); return lastChild; } -function addToSeen(seen, key, value = true) { +function addToSeen(seen, key) { if (seen.has(key)) { return false; } - seen.set(key, value); + seen.add(key); return true; } function isObjectTypeDeclaration(node) { @@ -21198,11 +21349,12 @@ function getLeftmostExpression(node, stopAtCallExpressions) { if (stopAtCallExpressions) { return node; } + // falls through case 234 /* AsExpression */: case 212 /* ElementAccessExpression */: case 211 /* PropertyAccessExpression */: case 235 /* NonNullExpression */: - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: case 238 /* SatisfiesExpression */: node = node.expression; continue; @@ -21602,7 +21754,13 @@ function importSyntaxAffectsModuleResolution(options) { function createComputedCompilerOptions(options) { return options; } -var computedOptions = createComputedCompilerOptions({ +var _computedOptions = createComputedCompilerOptions({ + allowImportingTsExtensions: { + dependencies: ["rewriteRelativeImportExtensions"], + computeValue: (compilerOptions) => { + return !!(compilerOptions.allowImportingTsExtensions || compilerOptions.rewriteRelativeImportExtensions); + } + }, target: { dependencies: ["module"], computeValue: (compilerOptions) => { @@ -21613,7 +21771,7 @@ var computedOptions = createComputedCompilerOptions({ module: { dependencies: ["target"], computeValue: (compilerOptions) => { - return typeof compilerOptions.module === "number" ? compilerOptions.module : computedOptions.target.computeValue(compilerOptions) >= 2 /* ES2015 */ ? 5 /* ES2015 */ : 1 /* CommonJS */; + return typeof compilerOptions.module === "number" ? compilerOptions.module : _computedOptions.target.computeValue(compilerOptions) >= 2 /* ES2015 */ ? 5 /* ES2015 */ : 1 /* CommonJS */; } }, moduleResolution: { @@ -21621,7 +21779,7 @@ var computedOptions = createComputedCompilerOptions({ computeValue: (compilerOptions) => { let moduleResolution = compilerOptions.moduleResolution; if (moduleResolution === void 0) { - switch (computedOptions.module.computeValue(compilerOptions)) { + switch (_computedOptions.module.computeValue(compilerOptions)) { case 1 /* CommonJS */: moduleResolution = 2 /* Node10 */; break; @@ -21645,7 +21803,7 @@ var computedOptions = createComputedCompilerOptions({ moduleDetection: { dependencies: ["module", "target"], computeValue: (compilerOptions) => { - return compilerOptions.moduleDetection || (computedOptions.module.computeValue(compilerOptions) === 100 /* Node16 */ || computedOptions.module.computeValue(compilerOptions) === 199 /* NodeNext */ ? 3 /* Force */ : 2 /* Auto */); + return compilerOptions.moduleDetection || (_computedOptions.module.computeValue(compilerOptions) === 100 /* Node16 */ || _computedOptions.module.computeValue(compilerOptions) === 199 /* NodeNext */ ? 3 /* Force */ : 2 /* Auto */); } }, isolatedModules: { @@ -21660,7 +21818,7 @@ var computedOptions = createComputedCompilerOptions({ if (compilerOptions.esModuleInterop !== void 0) { return compilerOptions.esModuleInterop; } - switch (computedOptions.module.computeValue(compilerOptions)) { + switch (_computedOptions.module.computeValue(compilerOptions)) { case 100 /* Node16 */: case 199 /* NodeNext */: case 200 /* Preserve */: @@ -21675,13 +21833,13 @@ var computedOptions = createComputedCompilerOptions({ if (compilerOptions.allowSyntheticDefaultImports !== void 0) { return compilerOptions.allowSyntheticDefaultImports; } - return computedOptions.esModuleInterop.computeValue(compilerOptions) || computedOptions.module.computeValue(compilerOptions) === 4 /* System */ || computedOptions.moduleResolution.computeValue(compilerOptions) === 100 /* Bundler */; + return _computedOptions.esModuleInterop.computeValue(compilerOptions) || _computedOptions.module.computeValue(compilerOptions) === 4 /* System */ || _computedOptions.moduleResolution.computeValue(compilerOptions) === 100 /* Bundler */; } }, resolvePackageJsonExports: { dependencies: ["moduleResolution"], computeValue: (compilerOptions) => { - const moduleResolution = computedOptions.moduleResolution.computeValue(compilerOptions); + const moduleResolution = _computedOptions.moduleResolution.computeValue(compilerOptions); if (!moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) { return false; } @@ -21700,7 +21858,7 @@ var computedOptions = createComputedCompilerOptions({ resolvePackageJsonImports: { dependencies: ["moduleResolution", "resolvePackageJsonExports"], computeValue: (compilerOptions) => { - const moduleResolution = computedOptions.moduleResolution.computeValue(compilerOptions); + const moduleResolution = _computedOptions.moduleResolution.computeValue(compilerOptions); if (!moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) { return false; } @@ -21722,7 +21880,7 @@ var computedOptions = createComputedCompilerOptions({ if (compilerOptions.resolveJsonModule !== void 0) { return compilerOptions.resolveJsonModule; } - return computedOptions.moduleResolution.computeValue(compilerOptions) === 100 /* Bundler */; + return _computedOptions.moduleResolution.computeValue(compilerOptions) === 100 /* Bundler */; } }, declaration: { @@ -21734,7 +21892,7 @@ var computedOptions = createComputedCompilerOptions({ preserveConstEnums: { dependencies: ["isolatedModules", "verbatimModuleSyntax"], computeValue: (compilerOptions) => { - return !!(compilerOptions.preserveConstEnums || computedOptions.isolatedModules.computeValue(compilerOptions)); + return !!(compilerOptions.preserveConstEnums || _computedOptions.isolatedModules.computeValue(compilerOptions)); } }, incremental: { @@ -21746,7 +21904,7 @@ var computedOptions = createComputedCompilerOptions({ declarationMap: { dependencies: ["declaration", "composite"], computeValue: (compilerOptions) => { - return !!(compilerOptions.declarationMap && computedOptions.declaration.computeValue(compilerOptions)); + return !!(compilerOptions.declarationMap && _computedOptions.declaration.computeValue(compilerOptions)); } }, allowJs: { @@ -21758,7 +21916,7 @@ var computedOptions = createComputedCompilerOptions({ useDefineForClassFields: { dependencies: ["target", "module"], computeValue: (compilerOptions) => { - return compilerOptions.useDefineForClassFields === void 0 ? computedOptions.target.computeValue(compilerOptions) >= 9 /* ES2022 */ : compilerOptions.useDefineForClassFields; + return compilerOptions.useDefineForClassFields === void 0 ? _computedOptions.target.computeValue(compilerOptions) >= 9 /* ES2022 */ : compilerOptions.useDefineForClassFields; } }, noImplicitAny: { @@ -21816,22 +21974,24 @@ var computedOptions = createComputedCompilerOptions({ } } }); -var getEmitScriptTarget = computedOptions.target.computeValue; -var getEmitModuleKind = computedOptions.module.computeValue; -var getEmitModuleResolutionKind = computedOptions.moduleResolution.computeValue; -var getEmitModuleDetectionKind = computedOptions.moduleDetection.computeValue; -var getIsolatedModules = computedOptions.isolatedModules.computeValue; -var getESModuleInterop = computedOptions.esModuleInterop.computeValue; -var getAllowSyntheticDefaultImports = computedOptions.allowSyntheticDefaultImports.computeValue; -var getResolvePackageJsonExports = computedOptions.resolvePackageJsonExports.computeValue; -var getResolvePackageJsonImports = computedOptions.resolvePackageJsonImports.computeValue; -var getResolveJsonModule = computedOptions.resolveJsonModule.computeValue; -var getEmitDeclarations = computedOptions.declaration.computeValue; -var shouldPreserveConstEnums = computedOptions.preserveConstEnums.computeValue; -var isIncrementalCompilation = computedOptions.incremental.computeValue; -var getAreDeclarationMapsEnabled = computedOptions.declarationMap.computeValue; -var getAllowJSCompilerOption = computedOptions.allowJs.computeValue; -var getUseDefineForClassFields = computedOptions.useDefineForClassFields.computeValue; +var computedOptions = _computedOptions; +var getAllowImportingTsExtensions = _computedOptions.allowImportingTsExtensions.computeValue; +var getEmitScriptTarget = _computedOptions.target.computeValue; +var getEmitModuleKind = _computedOptions.module.computeValue; +var getEmitModuleResolutionKind = _computedOptions.moduleResolution.computeValue; +var getEmitModuleDetectionKind = _computedOptions.moduleDetection.computeValue; +var getIsolatedModules = _computedOptions.isolatedModules.computeValue; +var getESModuleInterop = _computedOptions.esModuleInterop.computeValue; +var getAllowSyntheticDefaultImports = _computedOptions.allowSyntheticDefaultImports.computeValue; +var getResolvePackageJsonExports = _computedOptions.resolvePackageJsonExports.computeValue; +var getResolvePackageJsonImports = _computedOptions.resolvePackageJsonImports.computeValue; +var getResolveJsonModule = _computedOptions.resolveJsonModule.computeValue; +var getEmitDeclarations = _computedOptions.declaration.computeValue; +var shouldPreserveConstEnums = _computedOptions.preserveConstEnums.computeValue; +var isIncrementalCompilation = _computedOptions.incremental.computeValue; +var getAreDeclarationMapsEnabled = _computedOptions.declarationMap.computeValue; +var getAllowJSCompilerOption = _computedOptions.allowJs.computeValue; +var getUseDefineForClassFields = _computedOptions.useDefineForClassFields.computeValue; function emitModuleKindIsNonNodeESM(moduleKind) { return moduleKind >= 5 /* ES2015 */ && moduleKind <= 99 /* ESNext */; } @@ -22376,8 +22536,33 @@ function tryParsePattern(pattern) { suffix: pattern.substr(indexOfStar + 1) }; } +var parsedPatternsCache = /* @__PURE__ */ new WeakMap(); function tryParsePatterns(paths) { - return mapDefined(getOwnKeys(paths), (path) => tryParsePattern(path)); + let result = parsedPatternsCache.get(paths); + if (result !== void 0) { + return result; + } + let matchableStringSet; + let patterns; + const pathList = getOwnKeys(paths); + for (const path of pathList) { + const patternOrStr = tryParsePattern(path); + if (patternOrStr === void 0) { + continue; + } else if (typeof patternOrStr === "string") { + (matchableStringSet ?? (matchableStringSet = /* @__PURE__ */ new Set())).add(patternOrStr); + } else { + (patterns ?? (patterns = [])).push(patternOrStr); + } + } + parsedPatternsCache.set( + paths, + result = { + matchableStringSet, + patterns + } + ); + return result; } function positionIsSynthesized(pos) { return !(pos >= 0); @@ -22405,15 +22590,13 @@ var emptyFileSystemEntries = { files: emptyArray, directories: emptyArray }; -function matchPatternOrExact(patternOrStrings, candidate) { - const patterns = []; - for (const patternOrString of patternOrStrings) { - if (patternOrString === candidate) { - return candidate; - } - if (!isString(patternOrString)) { - patterns.push(patternOrString); - } +function matchPatternOrExact(parsedPatterns, candidate) { + const { matchableStringSet, patterns } = parsedPatterns; + if (matchableStringSet == null ? void 0 : matchableStringSet.has(candidate)) { + return candidate; + } + if (patterns === void 0 || patterns.length === 0) { + return void 0; } return findBestPatternMatch(patterns, (_) => _, candidate); } @@ -22490,6 +22673,7 @@ function isJsonEqual(a, b) { function parsePseudoBigInt(stringValue) { let log2Base; switch (stringValue.charCodeAt(1)) { + // "x" in "0x123" case 98 /* b */: case 66 /* B */: log2Base = 1; @@ -22737,7 +22921,7 @@ function getContainingNodeArray(node) { return parent2.types; case 189 /* TupleType */: case 209 /* ArrayLiteralExpression */: - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: case 275 /* NamedImports */: case 279 /* NamedExports */: return parent2.elements; @@ -23276,6 +23460,7 @@ function createNameResolver({ switch (location.kind) { case 307 /* SourceFile */: if (!isExternalOrCommonJsModule(location)) break; + // falls through case 267 /* ModuleDeclaration */: const moduleExports = ((_a = getSymbolOfDeclaration(location)) == null ? void 0 : _a.exports) || emptySymbols; if (location.kind === 307 /* SourceFile */ || isModuleDeclaration(location) && location.flags & 33554432 /* Ambient */ && !isGlobalScopeAugmentation(location)) { @@ -23359,6 +23544,14 @@ function createNameResolver({ } } break; + // It is not legal to reference a class's own type parameters from a computed property name that + // belongs to the class. For example: + // + // function foo() { return '' } + // class C { // <-- Class's own type parameter T + // [foo()]() { } // <-- Reference to T from class's own computed property + // } + // case 167 /* ComputedPropertyName */: grandparent = location.parent.parent; if (isClassLike(grandparent) || grandparent.kind === 264 /* InterfaceDeclaration */) { @@ -23374,6 +23567,7 @@ function createNameResolver({ if (getEmitScriptTarget(compilerOptions) >= 2 /* ES2015 */) { break; } + // falls through case 174 /* MethodDeclaration */: case 176 /* Constructor */: case 177 /* GetAccessor */: @@ -23616,6 +23810,9 @@ function hasInferredType(node) { case 260 /* VariableDeclaration */: case 277 /* ExportAssignment */: case 303 /* PropertyAssignment */: + case 304 /* ShorthandPropertyAssignment */: + case 341 /* JSDocParameterTag */: + case 348 /* JSDocPropertyTag */: return true; default: assertType(node); @@ -23626,6 +23823,118 @@ function isSideEffectImport(node) { const ancestor = findAncestor(node, isImportDeclaration); return !!ancestor && !ancestor.importClause; } +var unprefixedNodeCoreModulesList = [ + "assert", + "assert/strict", + "async_hooks", + "buffer", + "child_process", + "cluster", + "console", + "constants", + "crypto", + "dgram", + "diagnostics_channel", + "dns", + "dns/promises", + "domain", + "events", + "fs", + "fs/promises", + "http", + "http2", + "https", + "inspector", + "inspector/promises", + "module", + "net", + "os", + "path", + "path/posix", + "path/win32", + "perf_hooks", + "process", + "punycode", + "querystring", + "readline", + "readline/promises", + "repl", + "stream", + "stream/consumers", + "stream/promises", + "stream/web", + "string_decoder", + "sys", + "test/mock_loader", + "timers", + "timers/promises", + "tls", + "trace_events", + "tty", + "url", + "util", + "util/types", + "v8", + "vm", + "wasi", + "worker_threads", + "zlib" +]; +var unprefixedNodeCoreModules = new Set(unprefixedNodeCoreModulesList); +var exclusivelyPrefixedNodeCoreModules = /* @__PURE__ */ new Set([ + "node:sea", + "node:sqlite", + "node:test", + "node:test/reporters" +]); +var nodeCoreModules = /* @__PURE__ */ new Set([ + ...unprefixedNodeCoreModulesList, + ...unprefixedNodeCoreModulesList.map((name) => `node:${name}`), + ...exclusivelyPrefixedNodeCoreModules +]); +function forEachDynamicImportOrRequireCall(file, includeTypeSpaceImports, requireStringLiteralLikeArgument, cb) { + const isJavaScriptFile = isInJSFile(file); + const r = /import|require/g; + while (r.exec(file.text) !== null) { + const node = getNodeAtPosition( + file, + r.lastIndex, + /*includeJSDoc*/ + includeTypeSpaceImports + ); + if (isJavaScriptFile && isRequireCall(node, requireStringLiteralLikeArgument)) { + cb(node, node.arguments[0]); + } else if (isImportCall(node) && node.arguments.length >= 1 && (!requireStringLiteralLikeArgument || isStringLiteralLike(node.arguments[0]))) { + cb(node, node.arguments[0]); + } else if (includeTypeSpaceImports && isLiteralImportTypeNode(node)) { + cb(node, node.argument.literal); + } else if (includeTypeSpaceImports && isJSDocImportTag(node)) { + const moduleNameExpr = getExternalModuleName(node); + if (moduleNameExpr && isStringLiteral(moduleNameExpr) && moduleNameExpr.text) { + cb(node, moduleNameExpr); + } + } + } +} +function getNodeAtPosition(sourceFile, position, includeJSDoc) { + const isJavaScriptFile = isInJSFile(sourceFile); + let current = sourceFile; + const getContainingChild = (child) => { + if (child.pos <= position && (position < child.end || position === child.end && child.kind === 1 /* EndOfFileToken */)) { + return child; + } + }; + while (true) { + const child = isJavaScriptFile && includeJSDoc && hasJSDocNodes(current) && forEach(current.jsDoc, getContainingChild) || forEachChild(current, getContainingChild); + if (!child) { + return current; + } + current = child; + } +} +function isNewScopeNode(node) { + return isFunctionLike(node) || isJSDocSignature(node) || isMappedTypeNode(node); +} // src/compiler/factory/baseNodeFactory.ts function createBaseNodeFactory() { @@ -23949,6 +24258,7 @@ function createParenthesizerRules(factory2) { function parenthesizeConstituentTypeOfUnionType(type) { switch (type.kind) { case 192 /* UnionType */: + // Not strictly necessary, but a union containing a union should have been flattened case 193 /* IntersectionType */: return factory2.createParenthesizedType(type); } @@ -24730,6 +25040,7 @@ function createNodeFactory(flags, baseFactory2) { createSyntheticExpression, createSyntaxList: createSyntaxList3, createNotEmittedStatement, + createNotEmittedTypeElement, createPartiallyEmittedExpression, updatePartiallyEmittedExpression, createCommaListExpression, @@ -27756,7 +28067,7 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createPartiallyEmittedExpression(expression, original) { - const node = createBaseNode(354 /* PartiallyEmittedExpression */); + const node = createBaseNode(355 /* PartiallyEmittedExpression */); node.expression = expression; node.original = original; node.transformFlags |= propagateChildFlags(node.expression) | 1 /* ContainsTypeScript */; @@ -27766,6 +28077,9 @@ function createNodeFactory(flags, baseFactory2) { function updatePartiallyEmittedExpression(node, expression) { return node.expression !== expression ? update(createPartiallyEmittedExpression(expression, node.original), node) : node; } + function createNotEmittedTypeElement() { + return createBaseNode(354 /* NotEmittedTypeElement */); + } function flattenCommaElements(node) { if (nodeIsSynthesized(node) && !isParseTreeNode(node) && !node.original && !node.emitNode && !node.id) { if (isCommaListExpression(node)) { @@ -27778,7 +28092,7 @@ function createNodeFactory(flags, baseFactory2) { return node; } function createCommaListExpression(elements) { - const node = createBaseNode(355 /* CommaListExpression */); + const node = createBaseNode(356 /* CommaListExpression */); node.elements = createNodeArray(sameFlatMap(elements, flattenCommaElements)); node.transformFlags |= propagateChildrenFlags(node.elements); return node; @@ -27787,7 +28101,7 @@ function createNodeFactory(flags, baseFactory2) { return node.elements !== elements ? update(createCommaListExpression(elements), node) : node; } function createSyntheticReferenceExpression(expression, thisArg) { - const node = createBaseNode(356 /* SyntheticReferenceExpression */); + const node = createBaseNode(357 /* SyntheticReferenceExpression */); node.expression = expression; node.thisArg = thisArg; node.transformFlags |= propagateChildFlags(node.expression) | propagateChildFlags(node.thisArg); @@ -28034,7 +28348,7 @@ function createNodeFactory(flags, baseFactory2) { return updateNonNullExpression(outerExpression, expression); case 233 /* ExpressionWithTypeArguments */: return updateExpressionWithTypeArguments(outerExpression, expression, outerExpression.typeArguments); - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: return updatePartiallyEmittedExpression(outerExpression, expression); } } @@ -28579,7 +28893,7 @@ function getTransformFlagsSubtreeExclusions(kind) { case 216 /* TypeAssertionExpression */: case 238 /* SatisfiesExpression */: case 234 /* AsExpression */: - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: case 217 /* ParenthesizedExpression */: case 108 /* SuperKeyword */: return -2147483648 /* OuterExpressionExcludes */; @@ -28952,7 +29266,9 @@ function createEmitHelperFactory(context) { createClassPrivateFieldInHelper, // 'using' helpers createAddDisposableResourceHelper, - createDisposeResourcesHelper + createDisposeResourcesHelper, + // --rewriteRelativeImportExtensions helpers + createRewriteRelativeImportExtensionsHelper }; function getUnscopedHelperName(name) { return setEmitFlags(factory2.createIdentifier(name), 8192 /* HelperName */ | 4 /* AdviseOnEmitNode */); @@ -29441,6 +29757,15 @@ function createEmitHelperFactory(context) { [envBinding] ); } + function createRewriteRelativeImportExtensionsHelper(expression) { + context.requestEmitHelper(rewriteRelativeImportExtensionsHelper); + return factory2.createCallExpression( + getUnscopedHelperName("__rewriteRelativeImportExtension"), + /*typeArguments*/ + void 0, + context.getCompilerOptions().jsx === 1 /* Preserve */ ? [expression, factory2.createTrue()] : [expression] + ); + } } function compareEmitHelpers(x, y) { if (x === y) return 0 /* EqualTo */; @@ -29821,13 +30146,23 @@ var importStarHelper = { dependencies: [createBindingHelper, setModuleDefaultHelper], priority: 2, text: ` - var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - };` + var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; + })();` }; var importDefaultHelper = { name: "typescript:commonjsimportdefault", @@ -29946,6 +30281,20 @@ var disposeResourcesHelper = { return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; });` }; +var rewriteRelativeImportExtensionsHelper = { + name: "typescript:rewriteRelativeImportExtensions", + importName: "__rewriteRelativeImportExtension", + scoped: false, + text: ` + var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) { + if (typeof path === "string" && /^\\.\\.?\\//.test(path)) { + return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; + };` +}; var asyncSuperHelper = { name: "typescript:async-super", scoped: true, @@ -30288,10 +30637,10 @@ function isSyntheticExpression(node) { return node.kind === 237 /* SyntheticExpression */; } function isPartiallyEmittedExpression(node) { - return node.kind === 354 /* PartiallyEmittedExpression */; + return node.kind === 355 /* PartiallyEmittedExpression */; } function isCommaListExpression(node) { - return node.kind === 355 /* CommaListExpression */; + return node.kind === 356 /* CommaListExpression */; } function isTemplateSpan(node) { return node.kind === 239 /* TemplateSpan */; @@ -30447,7 +30796,7 @@ function isNotEmittedStatement(node) { return node.kind === 353 /* NotEmittedStatement */; } function isSyntheticReference(node) { - return node.kind === 356 /* SyntheticReferenceExpression */; + return node.kind === 357 /* SyntheticReferenceExpression */; } function isExternalModuleReference(node) { return node.kind === 283 /* ExternalModuleReference */; @@ -31070,7 +31419,7 @@ function isOuterExpression(node, kinds = 31 /* All */) { return (kinds & 16 /* ExpressionsWithTypeArguments */) !== 0; case 235 /* NonNullExpression */: return (kinds & 4 /* NonNullAssertions */) !== 0; - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: return (kinds & 8 /* PartiallyEmittedExpressions */) !== 0; } return false; @@ -31108,23 +31457,21 @@ function hasRecordedExternalHelpers(sourceFile) { } function createExternalHelpersImportDeclarationIfNeeded(nodeFactory, helperFactory, sourceFile, compilerOptions, hasExportStarsToExportValues, hasImportStar, hasImportDefault) { if (compilerOptions.importHelpers && isEffectiveExternalModule(sourceFile, compilerOptions)) { - let namedBindings; const moduleKind = getEmitModuleKind(compilerOptions); - if (moduleKind >= 5 /* ES2015 */ && moduleKind <= 99 /* ESNext */ || getImpliedNodeFormatForEmitWorker(sourceFile, compilerOptions) === 99 /* ESNext */) { - const helpers = getEmitHelpers(sourceFile); + const impliedModuleKind = getImpliedNodeFormatForEmitWorker(sourceFile, compilerOptions); + const helpers = getImportedHelpers(sourceFile); + if (moduleKind >= 5 /* ES2015 */ && moduleKind <= 99 /* ESNext */ || impliedModuleKind === 99 /* ESNext */ || impliedModuleKind === void 0 && moduleKind === 200 /* Preserve */) { if (helpers) { const helperNames = []; for (const helper of helpers) { - if (!helper.scoped) { - const importName = helper.importName; - if (importName) { - pushIfUnique(helperNames, importName); - } + const importName = helper.importName; + if (importName) { + pushIfUnique(helperNames, importName); } } if (some(helperNames)) { helperNames.sort(compareStringsCaseSensitive); - namedBindings = nodeFactory.createNamedImports( + const namedBindings = nodeFactory.createNamedImports( map(helperNames, (name) => isFileLevelUniqueName(sourceFile, name) ? nodeFactory.createImportSpecifier( /*isTypeOnly*/ false, @@ -31141,57 +31488,54 @@ function createExternalHelpersImportDeclarationIfNeeded(nodeFactory, helperFacto const parseNode = getOriginalNode(sourceFile, isSourceFile); const emitNode = getOrCreateEmitNode(parseNode); emitNode.externalHelpers = true; + const externalHelpersImportDeclaration = nodeFactory.createImportDeclaration( + /*modifiers*/ + void 0, + nodeFactory.createImportClause( + /*isTypeOnly*/ + false, + /*name*/ + void 0, + namedBindings + ), + nodeFactory.createStringLiteral(externalHelpersModuleNameText), + /*attributes*/ + void 0 + ); + addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); + return externalHelpersImportDeclaration; } } } else { - const externalHelpersModuleName = getOrCreateExternalHelpersModuleNameIfNeeded(nodeFactory, sourceFile, compilerOptions, hasExportStarsToExportValues, hasImportStar || hasImportDefault); + const externalHelpersModuleName = getOrCreateExternalHelpersModuleNameIfNeeded(nodeFactory, sourceFile, compilerOptions, helpers, hasExportStarsToExportValues, hasImportStar || hasImportDefault); if (externalHelpersModuleName) { - namedBindings = nodeFactory.createNamespaceImport(externalHelpersModuleName); - } - } - if (namedBindings) { - const externalHelpersImportDeclaration = nodeFactory.createImportDeclaration( - /*modifiers*/ - void 0, - nodeFactory.createImportClause( + const externalHelpersImportDeclaration = nodeFactory.createImportEqualsDeclaration( + /*modifiers*/ + void 0, /*isTypeOnly*/ false, - /*name*/ - void 0, - namedBindings - ), - nodeFactory.createStringLiteral(externalHelpersModuleNameText), - /*attributes*/ - void 0 - ); - addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); - return externalHelpersImportDeclaration; + externalHelpersModuleName, + nodeFactory.createExternalModuleReference(nodeFactory.createStringLiteral(externalHelpersModuleNameText)) + ); + addInternalEmitFlags(externalHelpersImportDeclaration, 2 /* NeverApplyImportHelper */); + return externalHelpersImportDeclaration; + } } } } -function getOrCreateExternalHelpersModuleNameIfNeeded(factory2, node, compilerOptions, hasExportStarsToExportValues, hasImportStarOrImportDefault) { - if (compilerOptions.importHelpers && isEffectiveExternalModule(node, compilerOptions)) { - const externalHelpersModuleName = getExternalHelpersModuleName(node); - if (externalHelpersModuleName) { - return externalHelpersModuleName; - } - let create = (hasExportStarsToExportValues || getESModuleInterop(compilerOptions) && hasImportStarOrImportDefault) && getEmitModuleFormatOfFileWorker(node, compilerOptions) < 4 /* System */; - if (!create) { - const helpers = getEmitHelpers(node); - if (helpers) { - for (const helper of helpers) { - if (!helper.scoped) { - create = true; - break; - } - } - } - } - if (create) { - const parseNode = getOriginalNode(node, isSourceFile); - const emitNode = getOrCreateEmitNode(parseNode); - return emitNode.externalHelpersModuleName || (emitNode.externalHelpersModuleName = factory2.createUniqueName(externalHelpersModuleNameText)); - } +function getImportedHelpers(sourceFile) { + return filter(getEmitHelpers(sourceFile), (helper) => !helper.scoped); +} +function getOrCreateExternalHelpersModuleNameIfNeeded(factory2, node, compilerOptions, helpers, hasExportStarsToExportValues, hasImportStarOrImportDefault) { + const externalHelpersModuleName = getExternalHelpersModuleName(node); + if (externalHelpersModuleName) { + return externalHelpersModuleName; + } + const create = some(helpers) || (hasExportStarsToExportValues || getESModuleInterop(compilerOptions) && hasImportStarOrImportDefault) && getEmitModuleFormatOfFileWorker(node, compilerOptions) < 4 /* System */; + if (create) { + const parseNode = getOriginalNode(node, isSourceFile); + const emitNode = getOrCreateEmitNode(parseNode); + return emitNode.externalHelpersModuleName || (emitNode.externalHelpersModuleName = factory2.createUniqueName(externalHelpersModuleNameText)); } } function getLocalNameForExternalImport(factory2, node, sourceFile) { @@ -31514,10 +31858,13 @@ var BinaryExpressionState; switch (currentState) { case enter: if (machine.onLeft) return left; + // falls through case left: if (machine.onOperator) return operator; + // falls through case operator: if (machine.onRight) return right; + // falls through case right: return exit; case exit: @@ -32145,7 +32492,7 @@ var forEachChildTable = { [282 /* MissingDeclaration */]: function forEachChildInMissingDeclaration(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.modifiers); }, - [355 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { + [356 /* CommaListExpression */]: function forEachChildInCommaListExpression(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.elements); }, [284 /* JsxElement */]: function forEachChildInJsxElement(node, cbNode, cbNodes) { @@ -32241,7 +32588,7 @@ var forEachChildTable = { [331 /* JSDocDeprecatedTag */]: forEachChildInJSDocTag, [337 /* JSDocOverrideTag */]: forEachChildInJSDocTag, [351 /* JSDocImportTag */]: forEachChildInJSDocImportTag, - [354 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression + [355 /* PartiallyEmittedExpression */]: forEachChildInPartiallyEmittedExpression }; function forEachChildInCallOrConstructSignature(node, cbNode, cbNodes) { return visitNodes(cbNode, cbNodes, node.typeParameters) || visitNodes(cbNode, cbNodes, node.parameters) || visitNode2(cbNode, node.type); @@ -32611,6 +32958,7 @@ var Parser; expression2 = parseLiteralNode(); break; } + // falls through default: expression2 = parseObjectLiteralExpression(); break; @@ -33452,10 +33800,12 @@ var Parser; case 90 /* DefaultKeyword */: return nextTokenCanFollowDefaultKeyword(); case 126 /* StaticKeyword */: + nextToken(); + return canFollowModifier(); case 139 /* GetKeyword */: case 153 /* SetKeyword */: nextToken(); - return canFollowModifier(); + return canFollowGetOrSetKeyword(); default: return nextTokenIsOnSameLineAndCanFollowModifier(); } @@ -33473,6 +33823,9 @@ var Parser; function canFollowModifier() { return token() === 23 /* OpenBracketToken */ || token() === 19 /* OpenBraceToken */ || token() === 42 /* AsteriskToken */ || token() === 26 /* DotDotDotToken */ || isLiteralPropertyName(); } + function canFollowGetOrSetKeyword() { + return token() === 23 /* OpenBracketToken */ || isLiteralPropertyName(); + } function nextTokenCanFollowDefaultKeyword() { nextToken(); return token() === 86 /* ClassKeyword */ || token() === 100 /* FunctionKeyword */ || token() === 120 /* InterfaceKeyword */ || token() === 60 /* AtToken */ || token() === 128 /* AbstractKeyword */ && lookAhead(nextTokenIsClassKeywordOnSameLine) || token() === 134 /* AsyncKeyword */ && lookAhead(nextTokenIsFunctionKeywordOnSameLine); @@ -33532,6 +33885,7 @@ var Parser; case 25 /* DotToken */: return true; } + // falls through case 11 /* ArgumentExpressions */: return token() === 26 /* DotDotDotToken */ || isStartOfExpression(); case 16 /* Parameters */: @@ -33565,6 +33919,7 @@ var Parser; return true; case 26 /* Count */: return Debug.fail("ParsingContext.Count used as a context"); + // Not a real context, only a marker. default: Debug.assertNever(parsingContext2, "Non-exhaustive case in 'isListElement'."); } @@ -33881,6 +34236,7 @@ var Parser; case 3 /* SwitchClauseStatements */: return parseErrorAtCurrentToken(Diagnostics.Statement_expected); case 18 /* RestProperties */: + // fallthrough case 4 /* TypeMembers */: return parseErrorAtCurrentToken(Diagnostics.Property_or_signature_expected); case 5 /* ClassMembers */: @@ -33928,6 +34284,7 @@ var Parser; return parseErrorAtCurrentToken(Diagnostics.Identifier_expected); case 26 /* Count */: return Debug.fail("ParsingContext.Count used as a context"); + // Not a real context, only a marker. default: Debug.assertNever(context); } @@ -34852,10 +35209,12 @@ var Parser; return tryParse(parseKeywordAndNoDot) || parseTypeReference(); case 67 /* AsteriskEqualsToken */: scanner2.reScanAsteriskEqualsToken(); + // falls through case 42 /* AsteriskToken */: return parseJSDocAllType(); case 61 /* QuestionQuestionToken */: scanner2.reScanQuestionToken(); + // falls through case 58 /* QuestionToken */: return parseJSDocUnknownOrNullableType(); case 100 /* FunctionKeyword */: @@ -35733,6 +36092,7 @@ var Parser; if (isAwaitExpression2()) { return parseAwaitExpression(); } + // falls through default: return parseUpdateExpression(); } @@ -35752,6 +36112,8 @@ var Parser; if (languageVariant !== 1 /* JSX */) { return false; } + // We are in JSX context and the token is part of JSXElement. + // falls through default: return true; } @@ -36325,10 +36687,16 @@ var Parser; } function canFollowTypeArgumentsInExpression() { switch (token()) { + // These tokens can follow a type argument list in a call expression. case 21 /* OpenParenToken */: + // foo( case 15 /* NoSubstitutionTemplateLiteral */: + // foo `...` case 16 /* TemplateHead */: return true; + // A type argument list followed by `<` never makes sense, and a type argument list followed + // by `>` is ambiguous with a (re-scanned) `>>` operator, so we disqualify both. Also, in + // this context, `+` and `-` are unary operators, not binary operators. case 30 /* LessThanToken */: case 32 /* GreaterThanToken */: case 40 /* PlusToken */: @@ -36346,6 +36714,7 @@ var Parser; false ); } + // falls through case 9 /* NumericLiteral */: case 10 /* BigIntLiteral */: case 11 /* StringLiteral */: @@ -36849,6 +37218,27 @@ var Parser; return isUsingDeclaration(); case 135 /* AwaitKeyword */: return isAwaitUsingDeclaration(); + // 'declare', 'module', 'namespace', 'interface'* and 'type' are all legal JavaScript identifiers; + // however, an identifier cannot be followed by another identifier on the same line. This is what we + // count on to parse out the respective declarations. For instance, we exploit this to say that + // + // namespace n + // + // can be none other than the beginning of a namespace declaration, but need to respect that JavaScript sees + // + // namespace + // n + // + // as the identifier 'namespace' on one line followed by the identifier 'n' on another. + // We need to look one token ahead to see if it permissible to try parsing a declaration. + // + // *Note*: 'interface' is actually a strict mode reserved word. So while + // + // "use strict" + // interface + // I {} + // + // could be legal, it would add complexity for very little gain. case 120 /* InterfaceKeyword */: case 156 /* TypeKeyword */: return nextTokenIsIdentifierOnSameLine(); @@ -36921,6 +37311,9 @@ var Parser; case 111 /* ThrowKeyword */: case 113 /* TryKeyword */: case 89 /* DebuggerKeyword */: + // 'catch' and 'finally' do not actually indicate that the code is part of a statement, + // however, we say they are here so that we may gracefully parse them and error later. + // falls through case 85 /* CatchKeyword */: case 98 /* FinallyKeyword */: return true; @@ -37059,6 +37452,8 @@ var Parser; case 111 /* ThrowKeyword */: return parseThrowStatement(); case 113 /* TryKeyword */: + // Include 'catch' and 'finally' for error recovery. + // falls through case 85 /* CatchKeyword */: case 98 /* FinallyKeyword */: return parseTryStatement(); @@ -37477,10 +37872,15 @@ var Parser; } switch (token()) { case 21 /* OpenParenToken */: + // Method declaration case 30 /* LessThanToken */: + // Generic Method declaration case 54 /* ExclamationToken */: + // Non-null assertion on property name case 59 /* ColonToken */: + // Type Annotation for declaration case 64 /* EqualsToken */: + // Initializer for declaration case 58 /* QuestionToken */: return true; default: @@ -38387,6 +38787,7 @@ var Parser; linkEnd = scanner2.getTokenEnd(); break; } + // fallthrough if it's not a {@link sequence default: state = 2 /* SavingComments */; pushComment(scanner2.getTokenText()); @@ -38645,6 +39046,8 @@ var Parser; indent3 += 1; break; } + // record the * as a comment + // falls through default: if (state !== 3 /* SavingBackticks */) { state = 2 /* SavingComments */; @@ -39616,9 +40019,10 @@ function getDeclarationFileExtension(fileName) { return standardExtension; } if (fileExtensionIs(fileName, ".ts" /* Ts */)) { - const index = getBaseFileName(fileName).lastIndexOf(".d."); + const baseName = getBaseFileName(fileName); + const index = baseName.lastIndexOf(".d."); if (index >= 0) { - return fileName.substring(index); + return baseName.substring(index); } } return void 0; @@ -39725,6 +40129,7 @@ function processPragmasIntoFields(context, reportDiagnostic) { case "jsximportsource": case "jsxruntime": return; + // Accessed directly default: Debug.fail("Unhandled pragma kind"); } @@ -39862,6 +40267,7 @@ var libEntries = [ ["es2021", "lib.es2021.d.ts"], ["es2022", "lib.es2022.d.ts"], ["es2023", "lib.es2023.d.ts"], + ["es2024", "lib.es2024.d.ts"], ["esnext", "lib.esnext.d.ts"], // Host only ["dom", "lib.dom.d.ts"], @@ -39884,6 +40290,7 @@ var libEntries = [ ["es2015.symbol.wellknown", "lib.es2015.symbol.wellknown.d.ts"], ["es2016.array.include", "lib.es2016.array.include.d.ts"], ["es2016.intl", "lib.es2016.intl.d.ts"], + ["es2017.arraybuffer", "lib.es2017.arraybuffer.d.ts"], ["es2017.date", "lib.es2017.date.d.ts"], ["es2017.object", "lib.es2017.object.d.ts"], ["es2017.sharedmemory", "lib.es2017.sharedmemory.d.ts"], @@ -39916,12 +40323,18 @@ var libEntries = [ ["es2022.error", "lib.es2022.error.d.ts"], ["es2022.intl", "lib.es2022.intl.d.ts"], ["es2022.object", "lib.es2022.object.d.ts"], - ["es2022.sharedmemory", "lib.es2022.sharedmemory.d.ts"], ["es2022.string", "lib.es2022.string.d.ts"], ["es2022.regexp", "lib.es2022.regexp.d.ts"], ["es2023.array", "lib.es2023.array.d.ts"], ["es2023.collection", "lib.es2023.collection.d.ts"], ["es2023.intl", "lib.es2023.intl.d.ts"], + ["es2024.arraybuffer", "lib.es2024.arraybuffer.d.ts"], + ["es2024.collection", "lib.es2024.collection.d.ts"], + ["es2024.object", "lib.es2024.object.d.ts"], + ["es2024.promise", "lib.es2024.promise.d.ts"], + ["es2024.regexp", "lib.es2024.regexp.d.ts"], + ["es2024.sharedmemory", "lib.es2024.sharedmemory.d.ts"], + ["es2024.string", "lib.es2024.string.d.ts"], ["esnext.array", "lib.es2023.array.d.ts"], ["esnext.collection", "lib.esnext.collection.d.ts"], ["esnext.symbol", "lib.es2019.symbol.d.ts"], @@ -39930,13 +40343,13 @@ var libEntries = [ ["esnext.disposable", "lib.esnext.disposable.d.ts"], ["esnext.bigint", "lib.es2020.bigint.d.ts"], ["esnext.string", "lib.es2022.string.d.ts"], - ["esnext.promise", "lib.esnext.promise.d.ts"], + ["esnext.promise", "lib.es2024.promise.d.ts"], ["esnext.weakref", "lib.es2021.weakref.d.ts"], ["esnext.decorators", "lib.esnext.decorators.d.ts"], - ["esnext.object", "lib.esnext.object.d.ts"], + ["esnext.object", "lib.es2024.object.d.ts"], ["esnext.array", "lib.esnext.array.d.ts"], - ["esnext.regexp", "lib.esnext.regexp.d.ts"], - ["esnext.string", "lib.esnext.string.d.ts"], + ["esnext.regexp", "lib.es2024.regexp.d.ts"], + ["esnext.string", "lib.es2024.string.d.ts"], ["esnext.iterator", "lib.esnext.iterator.d.ts"], ["decorators", "lib.decorators.d.ts"], ["decorators.legacy", "lib.decorators.legacy.d.ts"] @@ -40235,6 +40648,7 @@ var targetOptionDeclaration = { es2021: 8 /* ES2021 */, es2022: 9 /* ES2022 */, es2023: 10 /* ES2023 */, + es2024: 11 /* ES2024 */, esnext: 99 /* ESNext */ })), affectsSourceFile: true, @@ -40313,15 +40727,6 @@ var commandOptionsWithoutBuild = [ paramType: Diagnostics.FILE_OR_DIRECTORY, description: Diagnostics.Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json }, - { - name: "build", - type: "boolean", - shortName: "b", - showInSimplifiedHelpView: true, - category: Diagnostics.Command_line_Options, - description: Diagnostics.Build_one_or_more_projects_and_their_dependencies_if_out_of_date, - defaultValueDescription: false - }, { name: "showConfig", type: "boolean", @@ -40846,6 +41251,15 @@ var commandOptionsWithoutBuild = [ defaultValueDescription: false, transpileOptionValue: void 0 }, + { + name: "rewriteRelativeImportExtensions", + type: "boolean", + affectsSemanticDiagnostics: true, + affectsBuildInfo: true, + category: Diagnostics.Modules, + description: Diagnostics.Rewrite_ts_tsx_mts_and_cts_file_extensions_in_relative_import_paths_to_their_JavaScript_equivalent_in_output_files, + defaultValueDescription: false + }, { name: "resolvePackageJsonExports", type: "boolean", @@ -41306,7 +41720,17 @@ var commandLineOptionOfCustomType = optionDeclarations.filter(isCommandLineOptio function isCommandLineOptionOfCustomType(option) { return !isString(option.type); } +var tscBuildOption = { + name: "build", + type: "boolean", + shortName: "b", + showInSimplifiedHelpView: true, + category: Diagnostics.Command_line_Options, + description: Diagnostics.Build_one_or_more_projects_and_their_dependencies_if_out_of_date, + defaultValueDescription: false +}; var optionsForBuild = [ + tscBuildOption, { name: "verbose", shortName: "v", @@ -41445,8 +41869,14 @@ function getOptionName(option) { } function createUnknownOptionError(unknownOption, diagnostics, unknownOptionErrorText, node, sourceFile) { var _a; - if ((_a = diagnostics.alternateMode) == null ? void 0 : _a.getOptionsNameMap().optionsNameMap.has(unknownOption.toLowerCase())) { - return createDiagnosticForNodeInSourceFileOrCompilerDiagnostic(sourceFile, node, diagnostics.alternateMode.diagnostic, unknownOption); + const otherOption = (_a = diagnostics.alternateMode) == null ? void 0 : _a.getOptionsNameMap().optionsNameMap.get(unknownOption.toLowerCase()); + if (otherOption) { + return createDiagnosticForNodeInSourceFileOrCompilerDiagnostic( + sourceFile, + node, + otherOption !== tscBuildOption ? diagnostics.alternateMode.diagnostic : Diagnostics.Option_build_must_be_the_first_command_line_argument, + unknownOption + ); } const possibleOption = getSpellingSuggestion(unknownOption, diagnostics.optionDeclarations, getOptionName); return possibleOption ? createDiagnosticForNodeInSourceFileOrCompilerDiagnostic(sourceFile, node, diagnostics.unknownDidYouMeanDiagnostic, unknownOptionErrorText || unknownOption, possibleOption.name) : createDiagnosticForNodeInSourceFileOrCompilerDiagnostic(sourceFile, node, diagnostics.unknownOptionDiagnostic, unknownOptionErrorText || unknownOption); @@ -41581,6 +42011,7 @@ function parseOptionValue(args, i, diagnostics, opt, options, errors) { case "listOrElement": Debug.fail("listOrElement not supported here"); break; + // If not a primitive, the possible types are specified in what is effectively a map of options. default: options[opt.name] = parseCustomTypeOption(opt, args[i], errors); i++; @@ -41634,10 +42065,10 @@ var buildOptionsDidYouMeanDiagnostics = { unknownDidYouMeanDiagnostic: Diagnostics.Unknown_build_option_0_Did_you_mean_1, optionTypeMismatchDiagnostic: Diagnostics.Build_option_0_requires_a_value_of_type_1 }; -function parseBuildCommand(args) { +function parseBuildCommand(commandLine) { const { options, watchOptions, fileNames: projects, errors } = parseCommandLineWorker( buildOptionsDidYouMeanDiagnostics, - args + commandLine ); const buildOptions = options; if (projects.length === 0) { @@ -41921,6 +42352,7 @@ function convertToJson(sourceFile, rootExpression, errors, returnValue, jsonConv return false; case 106 /* NullKeyword */: return null; + // eslint-disable-line no-restricted-syntax case 11 /* StringLiteral */: if (!isDoubleQuotedString(valueExpression)) { errors.push(createDiagnosticForNodeInSourceFile(sourceFile, valueExpression, Diagnostics.String_literal_with_double_quotes_expected)); @@ -42014,7 +42446,7 @@ function convertToTSConfig(configParseResult, configFileName, host) { const providedKeys = new Set(optionMap.keys()); const impliedCompilerOptions = {}; for (const option in computedOptions) { - if (!providedKeys.has(option) && some(computedOptions[option].dependencies, (dep) => providedKeys.has(dep))) { + if (!providedKeys.has(option) && optionDependsOn(option, providedKeys)) { const implied = computedOptions[option].computeValue(configParseResult.options); const defaultValue = computedOptions[option].computeValue({}); if (implied !== defaultValue) { @@ -42025,6 +42457,17 @@ function convertToTSConfig(configParseResult, configFileName, host) { assign(config.compilerOptions, optionMapToObject(serializeCompilerOptions(impliedCompilerOptions, pathOptions))); return config; } +function optionDependsOn(option, dependsOn) { + const seen = /* @__PURE__ */ new Set(); + return optionDependsOnRecursive(option); + function optionDependsOnRecursive(option2) { + var _a; + if (addToSeen(seen, option2)) { + return some((_a = computedOptions[option2]) == null ? void 0 : _a.dependencies, (dep) => dependsOn.has(dep) || optionDependsOnRecursive(dep)); + } + return false; + } +} function optionMapToObject(optionMap) { return Object.fromEntries(optionMap); } @@ -42400,8 +42843,6 @@ function parseJsonConfigFileContentWorker(json, sourceFile, host, basePath, exis validatedFilesSpecBeforeSubstitution, validatedIncludeSpecsBeforeSubstitution, validatedExcludeSpecsBeforeSubstitution, - pathPatterns: void 0, - // Initialized on first use isDefaultIncludeSpec }; } @@ -42540,6 +42981,9 @@ function getErrorForNoInputFiles({ includeSpecs, excludeSpecs }, configFileName) function shouldReportNoInputFiles(fileNames, canJsonReportNoInutFiles, resolutionStack) { return fileNames.length === 0 && canJsonReportNoInutFiles && (!resolutionStack || resolutionStack.length === 0); } +function isSolutionConfig(config) { + return !config.fileNames.length && hasProperty(config.raw, "references"); +} function canJsonReportNoInputFiles(raw) { return !hasProperty(raw, "files") && !hasProperty(raw, "references"); } @@ -42581,7 +43025,7 @@ function parseConfig(json, sourceFile, host, basePath, configFileName, resolutio if (ownConfig.raw.compileOnSave === void 0 && result.compileOnSave) ownConfig.raw.compileOnSave = result.compileOnSave; if (sourceFile && result.extendedSourceFiles) sourceFile.extendedSourceFiles = arrayFrom(result.extendedSourceFiles.keys()); ownConfig.options = assign(result.options, ownConfig.options); - ownConfig.watchOptions = ownConfig.watchOptions && result.watchOptions ? assign(result.watchOptions, ownConfig.watchOptions) : ownConfig.watchOptions || result.watchOptions; + ownConfig.watchOptions = ownConfig.watchOptions && result.watchOptions ? assignWatchOptions(result, ownConfig.watchOptions) : ownConfig.watchOptions || result.watchOptions; } return ownConfig; function applyExtendedConfig(result, extendedConfigPath) { @@ -42605,9 +43049,14 @@ function parseConfig(json, sourceFile, host, basePath, configFileName, resolutio result.compileOnSave = extendsRaw.compileOnSave; } assign(result.options, extendedConfig.options); - result.watchOptions = result.watchOptions && extendedConfig.watchOptions ? assign({}, result.watchOptions, extendedConfig.watchOptions) : result.watchOptions || extendedConfig.watchOptions; + result.watchOptions = result.watchOptions && extendedConfig.watchOptions ? assignWatchOptions(result, extendedConfig.watchOptions) : result.watchOptions || extendedConfig.watchOptions; } } + function assignWatchOptions(result, watchOptions) { + if (result.watchOptionsCopied) return assign(result.watchOptions, watchOptions); + result.watchOptionsCopied = true; + return assign({}, result.watchOptions, watchOptions); + } } function parseOwnConfigOfJson(json, host, basePath, configFileName, errors) { if (hasProperty(json, "excludes")) { @@ -43129,6 +43578,7 @@ function getOptionValueWithEmptyStrings(value, option) { return typeof value === "boolean" ? value : ""; case "listOrElement": if (!isArray(value)) return getOptionValueWithEmptyStrings(value, option.element); + // fall through to list case "list": const elementType = option.element; return isArray(value) ? mapDefined(value, (v) => getOptionValueWithEmptyStrings(v, elementType)) : ""; @@ -43649,7 +44099,7 @@ function getConditions(options, resolutionMode) { } function resolvePackageNameToPackageJson(packageName, containingDirectory, options, host, cache) { const moduleResolutionState = getTemporaryModuleResolutionState(cache == null ? void 0 : cache.getPackageJsonInfoCache(), host, options); - return forEachAncestorDirectory(containingDirectory, (ancestorDirectory) => { + return forEachAncestorDirectoryStoppingAtGlobalCache(host, containingDirectory, (ancestorDirectory) => { if (getBaseFileName(ancestorDirectory) !== "node_modules") { const nodeModulesFolder = combinePaths(ancestorDirectory, "node_modules"); const candidate = combinePaths(nodeModulesFolder, packageName); @@ -44105,8 +44555,7 @@ function tryLoadModuleUsingOptionalResolutionSettings(extensions, moduleName, co } } function tryLoadModuleUsingPathsIfEligible(extensions, moduleName, loader, state) { - var _a; - const { baseUrl, paths, configFile } = state.compilerOptions; + const { baseUrl, paths } = state.compilerOptions; if (paths && !pathIsRelative(moduleName)) { if (state.traceEnabled) { if (baseUrl) { @@ -44115,7 +44564,7 @@ function tryLoadModuleUsingPathsIfEligible(extensions, moduleName, loader, state trace(state.host, Diagnostics.paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0, moduleName); } const baseDirectory = getPathsBasePath(state.compilerOptions, state.host); - const pathPatterns = (configFile == null ? void 0 : configFile.configFileSpecs) ? (_a = configFile.configFileSpecs).pathPatterns || (_a.pathPatterns = tryParsePatterns(paths)) : void 0; + const pathPatterns = tryParsePatterns(paths); return tryLoadModuleUsingPaths( extensions, moduleName, @@ -44427,25 +44876,28 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory, return toSearchResult({ resolved, isExternalLibraryImport: pathContainsNodeModules(resolved.path) }); } if (!isExternalModuleNameRelative(moduleName)) { - let resolved2; if (features & 2 /* Imports */ && startsWith(moduleName, "#")) { - resolved2 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); - } - if (!resolved2 && features & 4 /* SelfName */) { - resolved2 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); + const resolved3 = loadModuleFromImports(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); + if (resolved3) { + return resolved3.value && { value: { resolved: resolved3.value, isExternalLibraryImport: false } }; + } } - if (!resolved2) { - if (moduleName.includes(":")) { - if (traceEnabled) { - trace(host, Diagnostics.Skipping_module_0_that_looks_like_an_absolute_URI_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); - } - return void 0; + if (features & 4 /* SelfName */) { + const resolved3 = loadModuleFromSelfNameReference(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); + if (resolved3) { + return resolved3.value && { value: { resolved: resolved3.value, isExternalLibraryImport: false } }; } + } + if (moduleName.includes(":")) { if (traceEnabled) { - trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); + trace(host, Diagnostics.Skipping_module_0_that_looks_like_an_absolute_URI_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); } - resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); + return void 0; } + if (traceEnabled) { + trace(host, Diagnostics.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1, moduleName, formatExtensions(extensions2)); + } + let resolved2 = loadModuleFromNearestNodeModulesDirectory(extensions2, moduleName, containingDirectory, state2, cache, redirectedReference); if (extensions2 & 4 /* Declaration */) { resolved2 ?? (resolved2 = resolveFromTypeRoot(moduleName, state2)); } @@ -44573,10 +45025,11 @@ function loadModuleFromFileNoImplicitExtensions(extensions, candidate, onlyRecor } return tryAddingExtensions(extensionless, extensions, extension, onlyRecordFailures, state); } -function loadFileNameFromPackageJsonField(extensions, candidate, onlyRecordFailures, state) { +function loadFileNameFromPackageJsonField(extensions, candidate, packageJsonValue, onlyRecordFailures, state) { if (extensions & 1 /* TypeScript */ && fileExtensionIsOneOf(candidate, supportedTSImplementationExtensions) || extensions & 4 /* Declaration */ && fileExtensionIsOneOf(candidate, supportedDeclarationExtensions)) { const result = tryFile(candidate, onlyRecordFailures, state); - return result !== void 0 ? { path: candidate, ext: tryExtractTSExtension(candidate), resolvedUsingTsExtension: void 0 } : void 0; + const ext = tryExtractTSExtension(candidate); + return result !== void 0 ? { path: candidate, ext, resolvedUsingTsExtension: packageJsonValue ? !endsWith(packageJsonValue, ext) : void 0 } : void 0; } if (state.isConfigLookup && extensions === 8 /* Json */ && fileExtensionIs(candidate, ".json" /* Json */)) { const result = tryFile(candidate, onlyRecordFailures, state); @@ -44738,6 +45191,7 @@ function loadEntrypointsFromExportMap(scope, exports2, state, extensions) { const result = loadFileNameFromPackageJsonField( extensions, finalPath, + target, /*onlyRecordFailures*/ false, state @@ -44782,7 +45236,8 @@ function getTemporaryModuleResolutionState(packageJsonInfoCache, host, options) }; } function getPackageScopeForPath(directory, state) { - return forEachAncestorDirectory( + return forEachAncestorDirectoryStoppingAtGlobalCache( + state.host, directory, (dir) => getPackageJsonInfo( dir, @@ -44878,7 +45333,14 @@ function loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFail } } const loader = (extensions2, candidate2, onlyRecordFailures2, state2) => { - const fromFile = loadFileNameFromPackageJsonField(extensions2, candidate2, onlyRecordFailures2, state2); + const fromFile = loadFileNameFromPackageJsonField( + extensions2, + candidate2, + /*packageJsonValue*/ + void 0, + onlyRecordFailures2, + state2 + ); if (fromFile) { return noPackageId(fromFile); } @@ -44914,17 +45376,8 @@ function loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFail if (state.traceEnabled) { trace(state.host, Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2, versionPaths.version, version, moduleName); } - const result = tryLoadModuleUsingPaths( - extensions, - moduleName, - candidate, - versionPaths.paths, - /*pathPatterns*/ - void 0, - loader, - onlyRecordFailuresForPackageFile || onlyRecordFailuresForIndex, - state - ); + const pathPatterns = tryParsePatterns(versionPaths.paths); + const result = tryLoadModuleUsingPaths(extensions, moduleName, candidate, versionPaths.paths, pathPatterns, loader, onlyRecordFailuresForPackageFile || onlyRecordFailuresForIndex, state); if (result) { return removeIgnoredPackageId(result.value); } @@ -44987,7 +45440,7 @@ function loadModuleFromExports(scope, extensions, subpath, state, cache, redirec mainExport = scope.contents.packageJsonContent.exports["."]; } if (mainExport) { - const loadModuleFromTargetImportOrExport = getLoadModuleFromTargetImportOrExport( + const loadModuleFromTargetExportOrImport = getLoadModuleFromTargetExportOrImport( extensions, state, cache, @@ -44997,7 +45450,7 @@ function loadModuleFromExports(scope, extensions, subpath, state, cache, redirec /*isImports*/ false ); - return loadModuleFromTargetImportOrExport( + return loadModuleFromTargetExportOrImport( mainExport, "", /*pattern*/ @@ -45015,7 +45468,7 @@ function loadModuleFromExports(scope, extensions, subpath, state, cache, redirec void 0 ); } - const result = loadModuleFromImportsOrExports( + const result = loadModuleFromExportsOrImports( extensions, state, cache, @@ -45069,7 +45522,7 @@ function loadModuleFromImports(extensions, moduleName, directory, state, cache, void 0 ); } - const result = loadModuleFromImportsOrExports( + const result = loadModuleFromExportsOrImports( extensions, state, cache, @@ -45096,19 +45549,19 @@ function comparePatternKeys(a, b) { const bPatternIndex = b.indexOf("*"); const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; - if (baseLenA > baseLenB) return -1; - if (baseLenB > baseLenA) return 1; - if (aPatternIndex === -1) return 1; - if (bPatternIndex === -1) return -1; - if (a.length > b.length) return -1; - if (b.length > a.length) return 1; - return 0; + if (baseLenA > baseLenB) return -1 /* LessThan */; + if (baseLenB > baseLenA) return 1 /* GreaterThan */; + if (aPatternIndex === -1) return 1 /* GreaterThan */; + if (bPatternIndex === -1) return -1 /* LessThan */; + if (a.length > b.length) return -1 /* LessThan */; + if (b.length > a.length) return 1 /* GreaterThan */; + return 0 /* EqualTo */; } -function loadModuleFromImportsOrExports(extensions, state, cache, redirectedReference, moduleName, lookupTable, scope, isImports) { - const loadModuleFromTargetImportOrExport = getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirectedReference, moduleName, scope, isImports); +function loadModuleFromExportsOrImports(extensions, state, cache, redirectedReference, moduleName, lookupTable, scope, isImports) { + const loadModuleFromTargetExportOrImport = getLoadModuleFromTargetExportOrImport(extensions, state, cache, redirectedReference, moduleName, scope, isImports); if (!endsWith(moduleName, directorySeparator) && !moduleName.includes("*") && hasProperty(lookupTable, moduleName)) { const target = lookupTable[moduleName]; - return loadModuleFromTargetImportOrExport( + return loadModuleFromTargetExportOrImport( target, /*subpath*/ "", @@ -45123,7 +45576,7 @@ function loadModuleFromImportsOrExports(extensions, state, cache, redirectedRefe const target = lookupTable[potentialTarget]; const starPos = potentialTarget.indexOf("*"); const subpath = moduleName.substring(potentialTarget.substring(0, starPos).length, moduleName.length - (potentialTarget.length - 1 - starPos)); - return loadModuleFromTargetImportOrExport( + return loadModuleFromTargetExportOrImport( target, subpath, /*pattern*/ @@ -45133,7 +45586,7 @@ function loadModuleFromImportsOrExports(extensions, state, cache, redirectedRefe } else if (endsWith(potentialTarget, "*") && startsWith(moduleName, potentialTarget.substring(0, potentialTarget.length - 1))) { const target = lookupTable[potentialTarget]; const subpath = moduleName.substring(potentialTarget.length - 1); - return loadModuleFromTargetImportOrExport( + return loadModuleFromTargetExportOrImport( target, subpath, /*pattern*/ @@ -45143,7 +45596,7 @@ function loadModuleFromImportsOrExports(extensions, state, cache, redirectedRefe } else if (startsWith(moduleName, potentialTarget)) { const target = lookupTable[potentialTarget]; const subpath = moduleName.substring(potentialTarget.length); - return loadModuleFromTargetImportOrExport( + return loadModuleFromTargetExportOrImport( target, subpath, /*pattern*/ @@ -45163,9 +45616,9 @@ function hasOneAsterisk(patternKey) { const firstStar = patternKey.indexOf("*"); return firstStar !== -1 && firstStar === patternKey.lastIndexOf("*"); } -function getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirectedReference, moduleName, scope, isImports) { - return loadModuleFromTargetImportOrExport; - function loadModuleFromTargetImportOrExport(target, subpath, pattern, key) { +function getLoadModuleFromTargetExportOrImport(extensions, state, cache, redirectedReference, moduleName, scope, isImports) { + return loadModuleFromTargetExportOrImport; + function loadModuleFromTargetExportOrImport(target, subpath, pattern, key) { if (typeof target === "string") { if (!pattern && subpath.length > 0 && !endsWith(target, "/")) { if (state.traceEnabled) { @@ -45243,6 +45696,7 @@ function getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirec return toSearchResult(withPackageId(scope, loadFileNameFromPackageJsonField( extensions, finalPath, + target, /*onlyRecordFailures*/ false, state @@ -45254,7 +45708,7 @@ function getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirec if (condition === "default" || state.conditions.includes(condition) || isApplicableVersionedTypesKey(state.conditions, condition)) { traceIfEnabled(state, Diagnostics.Matched_0_condition_1, isImports ? "imports" : "exports", condition); const subTarget = target[condition]; - const result = loadModuleFromTargetImportOrExport(subTarget, subpath, pattern, key); + const result = loadModuleFromTargetExportOrImport(subTarget, subpath, pattern, key); if (result) { traceIfEnabled(state, Diagnostics.Resolved_under_condition_0, condition); traceIfEnabled(state, Diagnostics.Exiting_conditional_exports); @@ -45279,7 +45733,7 @@ function getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirec ); } for (const elem of target) { - const result = loadModuleFromTargetImportOrExport(elem, subpath, pattern, key); + const result = loadModuleFromTargetExportOrImport(elem, subpath, pattern, key); if (result) { return result; } @@ -45355,6 +45809,8 @@ function getLoadModuleFromTargetImportOrExport(extensions, state, cache, redirec return toSearchResult(withPackageId(scope, loadFileNameFromPackageJsonField( extensions, possibleInputWithInputExtension, + /*packageJsonValue*/ + void 0, /*onlyRecordFailures*/ false, state @@ -45430,17 +45886,30 @@ function loadModuleFromNearestNodeModulesDirectoryWorker(extensions, moduleName, return lookup(secondaryExtensions); } function lookup(extensions2) { - return forEachAncestorDirectory(normalizeSlashes(directory), (ancestorDirectory) => { - if (getBaseFileName(ancestorDirectory) !== "node_modules") { - const resolutionFromCache = tryFindNonRelativeModuleNameInCache(cache, moduleName, mode, ancestorDirectory, redirectedReference, state); - if (resolutionFromCache) { - return resolutionFromCache; + return forEachAncestorDirectoryStoppingAtGlobalCache( + state.host, + normalizeSlashes(directory), + (ancestorDirectory) => { + if (getBaseFileName(ancestorDirectory) !== "node_modules") { + const resolutionFromCache = tryFindNonRelativeModuleNameInCache(cache, moduleName, mode, ancestorDirectory, redirectedReference, state); + if (resolutionFromCache) { + return resolutionFromCache; + } + return toSearchResult(loadModuleFromImmediateNodeModulesDirectory(extensions2, moduleName, ancestorDirectory, state, typesScopeOnly, cache, redirectedReference)); } - return toSearchResult(loadModuleFromImmediateNodeModulesDirectory(extensions2, moduleName, ancestorDirectory, state, typesScopeOnly, cache, redirectedReference)); } - }); + ); } } +function forEachAncestorDirectoryStoppingAtGlobalCache(host, directory, callback) { + var _a; + const globalCache = (_a = host == null ? void 0 : host.getGlobalTypingsCacheLocation) == null ? void 0 : _a.call(host); + return forEachAncestorDirectory(directory, (ancestorDirectory) => { + const result = callback(ancestorDirectory); + if (result !== void 0) return result; + if (ancestorDirectory === globalCache) return false; + }) || void 0; +} function loadModuleFromImmediateNodeModulesDirectory(extensions, moduleName, directory, state, typesScopeOnly, cache, redirectedReference) { const nodeModulesFolder = combinePaths(directory, "node_modules"); const nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, state.host); @@ -45516,17 +45985,8 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, node trace(state.host, Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2, versionPaths.version, version, rest); } const packageDirectoryExists = nodeModulesDirectoryExists && directoryProbablyExists(packageDirectory, state.host); - const fromPaths = tryLoadModuleUsingPaths( - extensions, - rest, - packageDirectory, - versionPaths.paths, - /*pathPatterns*/ - void 0, - loader, - !packageDirectoryExists, - state - ); + const pathPatterns = tryParsePatterns(versionPaths.paths); + const fromPaths = tryLoadModuleUsingPaths(extensions, rest, packageDirectory, versionPaths.paths, pathPatterns, loader, !packageDirectoryExists, state); if (fromPaths) { return fromPaths.value; } @@ -45534,7 +45994,6 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, node return loader(extensions, candidate, !nodeModulesDirectoryExists, state); } function tryLoadModuleUsingPaths(extensions, moduleName, baseDirectory, paths, pathPatterns, loader, onlyRecordFailures, state) { - pathPatterns || (pathPatterns = tryParsePatterns(paths)); const matchedPattern = matchPatternOrExact(pathPatterns, moduleName); if (matchedPattern) { const matchedStar = isString(matchedPattern) ? void 0 : matchedText(matchedPattern, moduleName); @@ -45646,28 +46105,32 @@ function classicNameResolver(moduleName, containingFile, compilerOptions, host, return { value: resolvedUsingSettings }; } if (!isExternalModuleNameRelative(moduleName)) { - const resolved2 = forEachAncestorDirectory(containingDirectory, (directory) => { - const resolutionFromCache = tryFindNonRelativeModuleNameInCache( - cache, - moduleName, - /*mode*/ - void 0, - directory, - redirectedReference, - state - ); - if (resolutionFromCache) { - return resolutionFromCache; + const resolved2 = forEachAncestorDirectoryStoppingAtGlobalCache( + state.host, + containingDirectory, + (directory) => { + const resolutionFromCache = tryFindNonRelativeModuleNameInCache( + cache, + moduleName, + /*mode*/ + void 0, + directory, + redirectedReference, + state + ); + if (resolutionFromCache) { + return resolutionFromCache; + } + const searchName = normalizePath(combinePaths(directory, moduleName)); + return toSearchResult(loadModuleFromFileNoPackageId( + extensions, + searchName, + /*onlyRecordFailures*/ + false, + state + )); } - const searchName = normalizePath(combinePaths(directory, moduleName)); - return toSearchResult(loadModuleFromFileNoPackageId( - extensions, - searchName, - /*onlyRecordFailures*/ - false, - state - )); - }); + ); if (resolved2) return resolved2; if (extensions & (1 /* TypeScript */ | 4 /* Declaration */)) { let resolved3 = loadModuleFromNearestNodeModulesDirectoryTypesScope(moduleName, containingDirectory, state); @@ -45710,7 +46173,7 @@ function resolveFromTypeRoot(moduleName, state) { } } function shouldAllowImportingTsExtension(compilerOptions, fromFileName) { - return !!compilerOptions.allowImportingTsExtensions || fromFileName && isDeclarationFileName(fromFileName); + return getAllowImportingTsExtensions(compilerOptions) || !!fromFileName && isDeclarationFileName(fromFileName); } function loadModuleFromGlobalCache(moduleName, projectName, compilerOptions, host, globalCache, packageJsonInfoCache) { const traceEnabled = isTraceEnabled(compilerOptions, host); @@ -45801,20 +46264,24 @@ function getModuleInstanceStateCached(node, visited = /* @__PURE__ */ new Map()) } function getModuleInstanceStateWorker(node, visited) { switch (node.kind) { + // 1. interface declarations, type alias declarations case 264 /* InterfaceDeclaration */: case 265 /* TypeAliasDeclaration */: return 0 /* NonInstantiated */; + // 2. const enum declarations case 266 /* EnumDeclaration */: if (isEnumConst(node)) { return 2 /* ConstEnumOnly */; } break; + // 3. non-exported import declarations case 272 /* ImportDeclaration */: case 271 /* ImportEqualsDeclaration */: if (!hasSyntacticModifier(node, 32 /* Export */)) { return 0 /* NonInstantiated */; } break; + // 4. Export alias declarations pointing at only uninstantiated modules or things uninstantiated modules contain case 278 /* ExportDeclaration */: const exportDeclaration = node; if (!exportDeclaration.moduleSpecifier && exportDeclaration.exportClause && exportDeclaration.exportClause.kind === 279 /* NamedExports */) { @@ -45831,6 +46298,7 @@ function getModuleInstanceStateWorker(node, visited) { return state; } break; + // 5. other uninstantiated module declarations. case 268 /* ModuleBlock */: { let state = 0 /* NonInstantiated */; forEachChild(node, (n) => { @@ -45948,7 +46416,7 @@ function createBinder() { var inStrictMode; var inAssignmentPattern = false; var symbolCount = 0; - var Symbol47; + var Symbol48; var classifiableNames; var unreachableFlow = createFlowNode( 1 /* Unreachable */, @@ -45977,7 +46445,7 @@ function createBinder() { inStrictMode = bindInStrictMode(file, opts); classifiableNames = /* @__PURE__ */ new Set(); symbolCount = 0; - Symbol47 = objectAllocator.getSymbolConstructor(); + Symbol48 = objectAllocator.getSymbolConstructor(); Debug.attachFlowNodeDebugInfo(unreachableFlow); Debug.attachFlowNodeDebugInfo(reportedUnreachableFlow); if (!file.locals) { @@ -46028,7 +46496,7 @@ function createBinder() { } function createSymbol(flags, name) { symbolCount++; - return new Symbol47(flags, name); + return new Symbol48(flags, name); } function addDeclarationToSymbol(symbol, node, symbolFlags) { symbol.flags |= symbolFlags; @@ -46441,6 +46909,7 @@ function createBinder() { case 351 /* JSDocImportTag */: bindJSDocImportTag(node); break; + // In source files and blocks, bind functions first to match hoisting that occurs at runtime case 307 /* SourceFile */: { bindEachFunctionsFirst(node.statements); bind(node.endOfFileToken); @@ -46461,6 +46930,7 @@ function createBinder() { case 303 /* PropertyAssignment */: case 230 /* SpreadElement */: inAssignmentPattern = saveInAssignmentPattern; + // falls through default: bindEachChild(node); break; @@ -46482,6 +46952,7 @@ function createBinder() { if (isJSDocTypeAssertion(expr)) { return false; } + // fallthrough case 235 /* NonNullExpression */: return isNarrowingExpression(expr.expression); case 226 /* BinaryExpression */: @@ -47313,6 +47784,10 @@ function createBinder() { } function declareSymbolAndAddToSymbolTable(node, symbolFlags, symbolExcludes) { switch (container.kind) { + // Modules, source files, and classes need specialized handling for how their + // members are declared (for example, a member of a class will go into a specific + // symbol table depending on if it is static or not). We defer to specialized + // handlers to take care of declaring these child members. case 267 /* ModuleDeclaration */: return declareModuleMember(node, symbolFlags, symbolExcludes); case 307 /* SourceFile */: @@ -47454,6 +47929,7 @@ function createBinder() { declareModuleMember(node, symbolFlags, symbolExcludes); break; } + // falls through default: Debug.assertNode(blockScopeContainer, canHaveLocals); if (!blockScopeContainer.locals) { @@ -47774,6 +48250,7 @@ function createBinder() { } function bindWorker(node) { switch (node.kind) { + /* Strict mode checks */ case 80 /* Identifier */: if (node.flags & 4096 /* IdentifierIsInJSDocNamespace */) { let parentNode = node.parent; @@ -47783,6 +48260,7 @@ function createBinder() { bindBlockScopedDeclaration(parentNode, 524288 /* TypeAlias */, 788968 /* TypeAliasExcludes */); break; } + // falls through case 110 /* ThisKeyword */: if (currentFlow && (isExpression(node) || parent2.kind === 304 /* ShorthandPropertyAssignment */)) { node.flowNode = currentFlow; @@ -47871,6 +48349,7 @@ function createBinder() { return; case 182 /* TypePredicate */: break; + // Binding the children will handle everything case 168 /* TypeParameter */: return bindTypeParameter(node); case 169 /* Parameter */: @@ -47935,6 +48414,7 @@ function createBinder() { return bindObjectDefinePrototypeProperty(node); case 0 /* None */: break; + // Nothing to do default: return Debug.fail("Unknown call expression assignment declaration kind"); } @@ -47942,6 +48422,7 @@ function createBinder() { bindCallExpression(node); } break; + // Members of classes, interfaces, and modules case 231 /* ClassExpression */: case 263 /* ClassDeclaration */: inStrictMode = true; @@ -47954,10 +48435,12 @@ function createBinder() { return bindEnumDeclaration(node); case 267 /* ModuleDeclaration */: return bindModuleDeclaration(node); + // Jsx-attributes case 292 /* JsxAttributes */: return bindJsxAttributes(node); case 291 /* JsxAttribute */: return bindJsxAttribute(node, 4 /* Property */, 0 /* PropertyExcludes */); + // Imports and exports case 271 /* ImportEqualsDeclaration */: case 274 /* NamespaceImport */: case 276 /* ImportSpecifier */: @@ -47978,6 +48461,7 @@ function createBinder() { if (!isFunctionLikeOrClassStaticBlockDeclaration(node.parent)) { return; } + // falls through case 268 /* ModuleBlock */: return updateStrictModeStatementList(node.statements); case 341 /* JSDocParameterTag */: @@ -47987,6 +48471,7 @@ function createBinder() { if (node.parent.kind !== 322 /* JSDocTypeLiteral */) { break; } + // falls through case 348 /* JSDocPropertyTag */: const propTag = node; const flags = propTag.isBracketed || propTag.typeExpression && propTag.typeExpression.type.kind === 316 /* JSDocOptionalType */ ? 4 /* Property */ | 16777216 /* Optional */ : 4 /* Property */; @@ -48199,6 +48684,7 @@ function createBinder() { declareSymbolAndAddToSymbolTable(node, 1 /* FunctionScopedVariable */, 111550 /* FunctionScopedVariableExcludes */); } break; + // Namespaces are not allowed in javascript files, so do nothing here case 267 /* ModuleDeclaration */: break; default: @@ -48695,6 +49181,7 @@ function getContainerFlags(node) { if (isObjectLiteralOrClassExpressionMethodOrAccessor(node)) { return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */ | 128 /* IsObjectLiteralOrClassExpressionMethodOrAccessor */; } + // falls through case 176 /* Constructor */: case 262 /* FunctionDeclaration */: case 173 /* MethodSignature */: @@ -49142,31 +49629,29 @@ function computeModuleSpecifiers(modulePaths, compilerOptions, importingSourceFi return { kind: "node_modules", moduleSpecifiers: nodeModulesSpecifiers, computedWithoutCache: true }; } } - if (!specifier) { - const local = getLocalModuleSpecifier( - modulePath.path, - info, - compilerOptions, - host, - options.overrideImportMode || importingSourceFile.impliedNodeFormat, - preferences, - /*pathsOnly*/ - modulePath.isRedirect - ); - if (!local || forAutoImport && isExcludedByRegex(local, preferences.excludeRegexes)) { - continue; - } - if (modulePath.isRedirect) { - redirectPathsSpecifiers = append(redirectPathsSpecifiers, local); - } else if (pathIsBareSpecifier(local)) { - if (pathContainsNodeModules(local)) { - relativeSpecifiers = append(relativeSpecifiers, local); - } else { - pathsSpecifiers = append(pathsSpecifiers, local); - } - } else if (forAutoImport || !importedFileIsInNodeModules || modulePath.isInNodeModules) { + const local = getLocalModuleSpecifier( + modulePath.path, + info, + compilerOptions, + host, + options.overrideImportMode || importingSourceFile.impliedNodeFormat, + preferences, + /*pathsOnly*/ + modulePath.isRedirect || !!specifier + ); + if (!local || forAutoImport && isExcludedByRegex(local, preferences.excludeRegexes)) { + continue; + } + if (modulePath.isRedirect) { + redirectPathsSpecifiers = append(redirectPathsSpecifiers, local); + } else if (pathIsBareSpecifier(local)) { + if (pathContainsNodeModules(local)) { relativeSpecifiers = append(relativeSpecifiers, local); + } else { + pathsSpecifiers = append(pathsSpecifiers, local); } + } else if (forAutoImport || !importedFileIsInNodeModules || modulePath.isInNodeModules) { + relativeSpecifiers = append(relativeSpecifiers, local); } } return (pathsSpecifiers == null ? void 0 : pathsSpecifiers.length) ? { kind: "paths", moduleSpecifiers: pathsSpecifiers, computedWithoutCache: true } : (redirectPathsSpecifiers == null ? void 0 : redirectPathsSpecifiers.length) ? { kind: "redirect", moduleSpecifiers: redirectPathsSpecifiers, computedWithoutCache: true } : (nodeModulesSpecifiers == null ? void 0 : nodeModulesSpecifiers.length) ? { kind: "node_modules", moduleSpecifiers: nodeModulesSpecifiers, computedWithoutCache: true } : { kind: "relative", moduleSpecifiers: relativeSpecifiers ?? emptyArray, computedWithoutCache: true }; @@ -49212,7 +49697,7 @@ function getLocalModuleSpecifier(moduleFileName, info, compilerOptions, host, im importMode, prefersTsExtension(allowedEndings) ); - const fromPaths = pathsOnly || fromPackageJsonImports === void 0 ? paths && tryGetModuleNameFromPaths(relativeToBaseUrl, paths, allowedEndings, host, compilerOptions) : void 0; + const fromPaths = pathsOnly || fromPackageJsonImports === void 0 ? paths && tryGetModuleNameFromPaths(relativeToBaseUrl, paths, allowedEndings, baseDirectory, getCanonicalFileName, host, compilerOptions) : void 0; if (pathsOnly) { return fromPaths; } @@ -49268,9 +49753,11 @@ function getNearestAncestorDirectoryWithPackageJson(host, fileName) { if (host.getNearestAncestorDirectoryWithPackageJson) { return host.getNearestAncestorDirectoryWithPackageJson(fileName); } - return forEachAncestorDirectory(fileName, (directory) => { - return host.fileExists(combinePaths(directory, "package.json")) ? directory : void 0; - }); + return forEachAncestorDirectoryStoppingAtGlobalCache( + host, + fileName, + (directory) => host.fileExists(combinePaths(directory, "package.json")) ? directory : void 0 + ); } function forEachFileNameOfModule(importingFileName, importedFileName, host, preferSymlinks, cb) { var _a; @@ -49288,25 +49775,29 @@ function forEachFileNameOfModule(importingFileName, importedFileName, host, pref } const symlinkedDirectories = (_a = host.getSymlinkCache) == null ? void 0 : _a.call(host).getSymlinkedDirectoriesByRealpath(); const fullImportedFileName = getNormalizedAbsolutePath(importedFileName, cwd); - const result = symlinkedDirectories && forEachAncestorDirectory(getDirectoryPath(fullImportedFileName), (realPathDirectory) => { - const symlinkDirectories = symlinkedDirectories.get(ensureTrailingDirectorySeparator(toPath(realPathDirectory, cwd, getCanonicalFileName))); - if (!symlinkDirectories) return void 0; - if (startsWithDirectory(importingFileName, realPathDirectory, getCanonicalFileName)) { - return false; - } - return forEach(targets, (target) => { - if (!startsWithDirectory(target, realPathDirectory, getCanonicalFileName)) { - return; - } - const relative = getRelativePathFromDirectory(realPathDirectory, target, getCanonicalFileName); - for (const symlinkDirectory of symlinkDirectories) { - const option = resolvePath(symlinkDirectory, relative); - const result2 = cb(option, target === referenceRedirect); - shouldFilterIgnoredPaths = true; - if (result2) return result2; + const result = symlinkedDirectories && forEachAncestorDirectoryStoppingAtGlobalCache( + host, + getDirectoryPath(fullImportedFileName), + (realPathDirectory) => { + const symlinkDirectories = symlinkedDirectories.get(ensureTrailingDirectorySeparator(toPath(realPathDirectory, cwd, getCanonicalFileName))); + if (!symlinkDirectories) return void 0; + if (startsWithDirectory(importingFileName, realPathDirectory, getCanonicalFileName)) { + return false; } - }); - }); + return forEach(targets, (target) => { + if (!startsWithDirectory(target, realPathDirectory, getCanonicalFileName)) { + return; + } + const relative = getRelativePathFromDirectory(realPathDirectory, target, getCanonicalFileName); + for (const symlinkDirectory of symlinkDirectories) { + const option = resolvePath(symlinkDirectory, relative); + const result2 = cb(option, target === referenceRedirect); + shouldFilterIgnoredPaths = true; + if (result2) return result2; + } + }); + } + ); return result || (preferSymlinks ? forEach(targets, (p) => shouldFilterIgnoredPaths && containsIgnoredPath(p) ? void 0 : cb(p, p === referenceRedirect)) : void 0); } function getAllModulePaths(info, importedFileName, host, preferences, compilerOptions, options = {}) { @@ -49435,10 +49926,11 @@ function tryGetModuleNameFromAmbientModule(moduleSymbol, checker) { return ambientModuleDeclare.name.text; } } -function tryGetModuleNameFromPaths(relativeToBaseUrl, paths, allowedEndings, host, compilerOptions) { +function tryGetModuleNameFromPaths(relativeToBaseUrl, paths, allowedEndings, baseDirectory, getCanonicalFileName, host, compilerOptions) { for (const key in paths) { for (const patternText2 of paths[key]) { - const pattern = normalizePath(patternText2); + const normalized = normalizePath(patternText2); + const pattern = getRelativePathIfInSameVolume(normalized, baseDirectory, getCanonicalFileName) ?? normalized; const indexOfStar = pattern.indexOf("*"); const candidates = allowedEndings.map((ending) => ({ ending, @@ -49767,6 +50259,8 @@ function tryGetModuleNameAsNodeModule({ path, isRedirect }, { getCanonicalFileNa subModuleName, versionPaths.paths, allowedEndings, + packageRootPath, + getCanonicalFileName, host, options ); @@ -50060,9 +50554,9 @@ function createTypeChecker(host) { }; var cancellationToken; var scanner2; - var Symbol47 = objectAllocator.getSymbolConstructor(); + var Symbol48 = objectAllocator.getSymbolConstructor(); var Type29 = objectAllocator.getTypeConstructor(); - var Signature14 = objectAllocator.getSignatureConstructor(); + var Signature13 = objectAllocator.getSignatureConstructor(); var typeCount = 0; var symbolCount = 0; var totalInstantiationCount = 0; @@ -50094,17 +50588,7 @@ function createTypeChecker(host) { var checkBinaryExpression = createCheckBinaryExpression(); var emitResolver = createResolver(); var nodeBuilder = createNodeBuilder(); - var syntacticNodeBuilder = createSyntacticTypeNodeBuilder(compilerOptions, { - isEntityNameVisible, - isExpandoFunctionDeclaration, - getAllAccessorDeclarations: getAllAccessorDeclarationsForDeclaration, - requiresAddingImplicitUndefined, - isUndefinedIdentifierExpression(node) { - Debug.assert(isExpressionNode(node)); - return getSymbolAtLocation(node) === undefinedSymbol; - }, - isDefinitelyReferenceToGlobalSymbolObject - }); + var syntacticNodeBuilder = createSyntacticTypeNodeBuilder(compilerOptions, nodeBuilder.syntacticBuilderResolver); var evaluate = createEvaluator({ evaluateElementAccessExpression, evaluateEntityNameExpression @@ -50205,6 +50689,7 @@ function createTypeChecker(host) { getBaseTypeOfLiteralType, getWidenedType, getWidenedLiteralType, + fillMissingTypeArguments, getTypeFromTypeNode: (nodeIn) => { const node = getParseTreeNode(nodeIn, isTypeNode); return node ? getTypeFromTypeNode(node) : errorType; @@ -50761,6 +51246,15 @@ function createTypeChecker(host) { emptyArray ); emptyJsxObjectType.objectFlags |= 2048 /* JsxAttributes */; + var emptyFreshJsxObjectType = createAnonymousType( + /*symbol*/ + void 0, + emptySymbols, + emptyArray, + emptyArray, + emptyArray + ); + emptyFreshJsxObjectType.objectFlags |= 2048 /* JsxAttributes */ | 8192 /* FreshLiteral */ | 128 /* ObjectLiteral */ | 131072 /* ContainsObjectOrArrayLiteral */; var emptyTypeLiteralSymbol = createSymbol(2048 /* TypeLiteral */, "__type" /* Type */); emptyTypeLiteralSymbol.members = createSymbolTable(); var emptyTypeLiteralType = createAnonymousType(emptyTypeLiteralSymbol, emptySymbols, emptyArray, emptyArray, emptyArray); @@ -51239,7 +51733,7 @@ function createTypeChecker(host) { } function createSymbol(flags, name, checkFlags) { symbolCount++; - const symbol = new Symbol47(flags | 33554432 /* Transient */, name); + const symbol = new Symbol48(flags | 33554432 /* Transient */, name); symbol.links = new SymbolLinks(); symbol.links.checkFlags = checkFlags || 0 /* None */; return symbol; @@ -51848,6 +52342,7 @@ function createTypeChecker(host) { if (isEntityNameExpression(node.expression)) { return node.expression; } + // falls through default: return void 0; } @@ -52143,10 +52638,19 @@ function createTypeChecker(host) { function isESMFormatImportImportingCommonjsFormatFile(usageMode, targetMode) { return usageMode === 99 /* ESNext */ && targetMode === 1 /* CommonJS */; } - function isOnlyImportableAsDefault(usage) { + function isOnlyImportableAsDefault(usage, resolvedModule) { if (100 /* Node16 */ <= moduleKind && moduleKind <= 199 /* NodeNext */) { const usageMode = getEmitSyntaxForModuleSpecifierExpression(usage); - return usageMode === 99 /* ESNext */ && endsWith(usage.text, ".json" /* Json */); + if (usageMode === 99 /* ESNext */) { + resolvedModule ?? (resolvedModule = resolveExternalModuleName( + usage, + usage, + /*ignoreErrors*/ + true + )); + const targetFile = resolvedModule && getSourceFileOfModule(resolvedModule); + return targetFile && (isJsonSourceFile(targetFile) || getDeclarationFileExtension(targetFile.fileName) === ".d.json.ts"); + } } return false; } @@ -52217,7 +52721,7 @@ function createTypeChecker(host) { if (!specifier) { return exportDefaultSymbol; } - const hasDefaultOnly = isOnlyImportableAsDefault(specifier); + const hasDefaultOnly = isOnlyImportableAsDefault(specifier, moduleSymbol); const hasSyntheticDefault = canHaveSyntheticDefault(file, moduleSymbol, dontResolveAlias, specifier); if (!exportDefaultSymbol && !hasSyntheticDefault && !hasDefaultOnly) { if (hasExportAssignmentSymbol(moduleSymbol) && !allowSyntheticDefaultImports) { @@ -52419,12 +52923,14 @@ function createTypeChecker(host) { let symbolFromModule = getExportOfModule(targetSymbol, nameText, specifier, dontResolveAlias); if (symbolFromModule === void 0 && nameText === "default" /* Default */) { const file = (_a = moduleSymbol.declarations) == null ? void 0 : _a.find(isSourceFile); - if (isOnlyImportableAsDefault(moduleSpecifier) || canHaveSyntheticDefault(file, moduleSymbol, dontResolveAlias, moduleSpecifier)) { + if (isOnlyImportableAsDefault(moduleSpecifier, moduleSymbol) || canHaveSyntheticDefault(file, moduleSymbol, dontResolveAlias, moduleSpecifier)) { symbolFromModule = resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias) || resolveSymbol(moduleSymbol, dontResolveAlias); } } const symbol = symbolFromModule && symbolFromVariable && symbolFromModule !== symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; - if (!symbol) { + if (isImportOrExportSpecifier(specifier) && isOnlyImportableAsDefault(moduleSpecifier, moduleSymbol) && nameText !== "default" /* Default */) { + error2(name, Diagnostics.Named_imports_from_a_JSON_file_into_an_ECMAScript_module_are_not_allowed_when_module_is_set_to_0, ModuleKind[moduleKind]); + } else if (!symbol) { errorNoModuleMemberSymbol(moduleSymbol, targetSymbol, node, name); } return symbol; @@ -53018,14 +53524,14 @@ function createTypeChecker(host) { return ambientModule; } const currentSourceFile = getSourceFileOfNode(location); - const contextSpecifier = isStringLiteralLike(location) ? location : ((_a = isModuleDeclaration(location) ? location : location.parent && isModuleDeclaration(location.parent) && location.parent.name === location ? location.parent : void 0) == null ? void 0 : _a.name) || ((_b = isLiteralImportTypeNode(location) ? location : void 0) == null ? void 0 : _b.argument.literal) || (isInJSFile(location) && isJSDocImportTag(location) ? location.moduleSpecifier : void 0) || (isVariableDeclaration(location) && location.initializer && isRequireCall( + const contextSpecifier = isStringLiteralLike(location) ? location : ((_a = isModuleDeclaration(location) ? location : location.parent && isModuleDeclaration(location.parent) && location.parent.name === location ? location.parent : void 0) == null ? void 0 : _a.name) || ((_b = isLiteralImportTypeNode(location) ? location : void 0) == null ? void 0 : _b.argument.literal) || (isVariableDeclaration(location) && location.initializer && isRequireCall( location.initializer, /*requireStringLiteralLikeArgument*/ true - ) ? location.initializer.arguments[0] : void 0) || ((_c = findAncestor(location, isImportCall)) == null ? void 0 : _c.arguments[0]) || ((_d = findAncestor(location, isImportDeclaration)) == null ? void 0 : _d.moduleSpecifier) || ((_e = findAncestor(location, isExternalModuleImportEqualsDeclaration)) == null ? void 0 : _e.moduleReference.expression) || ((_f = findAncestor(location, isExportDeclaration)) == null ? void 0 : _f.moduleSpecifier); + ) ? location.initializer.arguments[0] : void 0) || ((_c = findAncestor(location, isImportCall)) == null ? void 0 : _c.arguments[0]) || ((_d = findAncestor(location, or(isImportDeclaration, isJSDocImportTag, isExportDeclaration))) == null ? void 0 : _d.moduleSpecifier) || ((_e = findAncestor(location, isExternalModuleImportEqualsDeclaration)) == null ? void 0 : _e.moduleReference.expression); const mode = contextSpecifier && isStringLiteralLike(contextSpecifier) ? host.getModeForUsageLocation(currentSourceFile, contextSpecifier) : host.getDefaultResolutionModeForFile(currentSourceFile); const moduleResolutionKind = getEmitModuleResolutionKind(compilerOptions); - const resolvedModule = (_g = host.getResolvedModule(currentSourceFile, moduleReference, mode)) == null ? void 0 : _g.resolvedModule; + const resolvedModule = (_f = host.getResolvedModule(currentSourceFile, moduleReference, mode)) == null ? void 0 : _f.resolvedModule; const resolutionDiagnostic = errorNode && resolvedModule && getResolutionDiagnostic(compilerOptions, resolvedModule, currentSourceFile); const sourceFile = resolvedModule && (!resolutionDiagnostic || resolutionDiagnostic === Diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set) && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { @@ -53033,7 +53539,7 @@ function createTypeChecker(host) { error2(errorNode, resolutionDiagnostic, moduleReference, resolvedModule.resolvedFileName); } if (resolvedModule.resolvedUsingTsExtension && isDeclarationFileName(moduleReference)) { - const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration)); + const importOrExport = ((_g = findAncestor(location, isImportDeclaration)) == null ? void 0 : _g.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration)); if (errorNode && importOrExport && !importOrExport.isTypeOnly || findAncestor(location, isImportCall)) { error2( errorNode, @@ -53042,11 +53548,41 @@ function createTypeChecker(host) { ); } } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) { - const importOrExport = ((_i = findAncestor(location, isImportDeclaration)) == null ? void 0 : _i.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration)); + const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration)); if (errorNode && !((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) { const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference)); error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension); } + } else if (compilerOptions.rewriteRelativeImportExtensions && !(location.flags & 33554432 /* Ambient */) && !isDeclarationFileName(moduleReference) && !isLiteralImportTypeNode(location) && !isPartOfTypeOnlyImportOrExportDeclaration(location)) { + const shouldRewrite = shouldRewriteModuleSpecifier(moduleReference, compilerOptions); + if (!resolvedModule.resolvedUsingTsExtension && shouldRewrite) { + error2( + errorNode, + Diagnostics.This_relative_import_path_is_unsafe_to_rewrite_because_it_looks_like_a_file_name_but_actually_resolves_to_0, + getRelativePathFromFile(getNormalizedAbsolutePath(currentSourceFile.fileName, host.getCurrentDirectory()), resolvedModule.resolvedFileName, hostGetCanonicalFileName(host)) + ); + } else if (resolvedModule.resolvedUsingTsExtension && !shouldRewrite && sourceFileMayBeEmitted(sourceFile, host)) { + error2( + errorNode, + Diagnostics.This_import_uses_a_0_extension_to_resolve_to_an_input_TypeScript_file_but_will_not_be_rewritten_during_emit_because_it_is_not_a_relative_path, + getAnyExtensionFromPath(moduleReference) + ); + } else if (resolvedModule.resolvedUsingTsExtension && shouldRewrite) { + const redirect = host.getResolvedProjectReferenceToRedirect(sourceFile.path); + if (redirect) { + const ignoreCase = !host.useCaseSensitiveFileNames(); + const ownRootDir = host.getCommonSourceDirectory(); + const otherRootDir = getCommonSourceDirectoryOfConfig(redirect.commandLine, ignoreCase); + const rootDirPath = getRelativePathFromDirectory(ownRootDir, otherRootDir, ignoreCase); + const outDirPath = getRelativePathFromDirectory(compilerOptions.outDir || ownRootDir, redirect.commandLine.options.outDir || otherRootDir, ignoreCase); + if (rootDirPath !== outDirPath) { + error2( + errorNode, + Diagnostics.This_import_path_is_unsafe_to_rewrite_because_it_resolves_to_another_project_and_the_relative_path_between_the_projects_output_files_is_not_the_same_as_the_relative_path_between_its_input_files + ); + } + } + } } if (sourceFile.symbol) { if (errorNode && resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) { @@ -53072,14 +53608,11 @@ function createTypeChecker(host) { if (ext === ".ts" /* Ts */ || ext === ".js" /* Js */ || ext === ".tsx" /* Tsx */ || ext === ".jsx" /* Jsx */) { diagnosticDetails = createModeMismatchDetails(currentSourceFile); } + const message = (overrideHost == null ? void 0 : overrideHost.kind) === 272 /* ImportDeclaration */ && ((_i = overrideHost.importClause) == null ? void 0 : _i.isTypeOnly) ? Diagnostics.Type_only_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute : (overrideHost == null ? void 0 : overrideHost.kind) === 205 /* ImportType */ ? Diagnostics.Type_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute : Diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead; diagnostics.add(createDiagnosticForNodeFromMessageChain( getSourceFileOfNode(errorNode), errorNode, - chainDiagnosticMessages( - diagnosticDetails, - Diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead, - moduleReference - ) + chainDiagnosticMessages(diagnosticDetails, message, moduleReference) )); } } @@ -53706,6 +54239,7 @@ function createTypeChecker(host) { if (!isExternalOrCommonJsModule(location)) { break; } + // falls through case 267 /* ModuleDeclaration */: const sym = getSymbolOfDeclaration(location); if (result = callback( @@ -53759,7 +54293,7 @@ function createTypeChecker(host) { const links = getSymbolLinks(symbol); const cache = links.accessibleChainCache || (links.accessibleChainCache = /* @__PURE__ */ new Map()); const firstRelevantLocation = forEachSymbolTableInScope(enclosingDeclaration, (_, __, ___, node) => node); - const key = `${useOnlyExternalAliasing ? 0 : 1}|${firstRelevantLocation && getNodeId(firstRelevantLocation)}|${meaning}`; + const key = `${useOnlyExternalAliasing ? 0 : 1}|${firstRelevantLocation ? getNodeId(firstRelevantLocation) : 0}|${meaning}`; if (cache.has(key)) { return cache.get(key); } @@ -54212,12 +54746,194 @@ function createTypeChecker(host) { return getTypeFromTypeNode(node); } function createNodeBuilder() { + const syntacticBuilderResolver = { + evaluateEntityNameExpression, + isExpandoFunctionDeclaration, + hasLateBindableName, + shouldRemoveDeclaration(context, node) { + return !(context.internalFlags & 8 /* AllowUnresolvedNames */ && isEntityNameExpression(node.name.expression) && checkComputedPropertyName(node.name).flags & 1 /* Any */); + }, + createRecoveryBoundary(context) { + return createRecoveryBoundary(context); + }, + isDefinitelyReferenceToGlobalSymbolObject, + getAllAccessorDeclarations: getAllAccessorDeclarationsForDeclaration, + requiresAddingImplicitUndefined(declaration, symbol, enclosingDeclaration) { + var _a; + switch (declaration.kind) { + case 172 /* PropertyDeclaration */: + case 171 /* PropertySignature */: + case 348 /* JSDocPropertyTag */: + symbol ?? (symbol = getSymbolOfDeclaration(declaration)); + const type = getTypeOfSymbol(symbol); + return !!(symbol.flags & 4 /* Property */ && symbol.flags & 16777216 /* Optional */ && isOptionalDeclaration(declaration) && ((_a = symbol.links) == null ? void 0 : _a.mappedType) && containsNonMissingUndefinedType(type)); + case 169 /* Parameter */: + case 341 /* JSDocParameterTag */: + return requiresAddingImplicitUndefined(declaration, enclosingDeclaration); + default: + Debug.assertNever(declaration); + } + }, + isOptionalParameter, + isUndefinedIdentifierExpression(node) { + Debug.assert(isExpressionNode(node)); + return getSymbolAtLocation(node) === undefinedSymbol; + }, + isEntityNameVisible(context, entityName, shouldComputeAliasToMakeVisible) { + return isEntityNameVisible(entityName, context.enclosingDeclaration, shouldComputeAliasToMakeVisible); + }, + serializeExistingTypeNode(context, typeNode, addUndefined) { + return serializeExistingTypeNode(context, typeNode, !!addUndefined); + }, + serializeReturnTypeForSignature(syntacticContext, signatureDeclaration) { + const context = syntacticContext; + const signature = getSignatureFromDeclaration(signatureDeclaration); + const returnType = context.enclosingSymbolTypes.get(getSymbolId(getSymbolOfDeclaration(signatureDeclaration))) ?? instantiateType(getReturnTypeOfSignature(signature), context.mapper); + return serializeInferredReturnTypeForSignature(context, signature, returnType); + }, + serializeTypeOfExpression(syntacticContext, expr) { + const context = syntacticContext; + const type = instantiateType(getWidenedType(getRegularTypeOfExpression(expr)), context.mapper); + return typeToTypeNodeHelper(type, context); + }, + serializeTypeOfDeclaration(syntacticContext, declaration, symbol) { + var _a; + const context = syntacticContext; + symbol ?? (symbol = getSymbolOfDeclaration(declaration)); + let type = (_a = context.enclosingSymbolTypes) == null ? void 0 : _a.get(getSymbolId(symbol)); + if (type === void 0) { + type = symbol && !(symbol.flags & (2048 /* TypeLiteral */ | 131072 /* Signature */)) ? instantiateType(getWidenedLiteralType(getTypeOfSymbol(symbol)), context.mapper) : errorType; + } + const addUndefinedForParameter = declaration && (isParameter(declaration) || isJSDocParameterTag(declaration)) && requiresAddingImplicitUndefined(declaration, context.enclosingDeclaration); + if (addUndefinedForParameter) { + type = getOptionalType(type); + } + return serializeInferredTypeForDeclaration(symbol, context, type); + }, + serializeNameOfParameter(context, parameter) { + return parameterToParameterDeclarationName(getSymbolOfDeclaration(parameter), parameter, context); + }, + serializeEntityName(syntacticContext, node) { + const context = syntacticContext; + const symbol = getSymbolAtLocation( + node, + /*ignoreErrors*/ + true + ); + if (!symbol) return void 0; + if (!isValueSymbolAccessible(symbol, context.enclosingDeclaration)) return void 0; + return symbolToExpression(symbol, context, 111551 /* Value */ | 1048576 /* ExportValue */); + }, + serializeTypeName(context, node, isTypeOf, typeArguments) { + return serializeTypeName(context, node, isTypeOf, typeArguments); + }, + getJsDocPropertyOverride(syntacticContext, jsDocTypeLiteral, jsDocProperty) { + const context = syntacticContext; + const name = isIdentifier(jsDocProperty.name) ? jsDocProperty.name : jsDocProperty.name.right; + const typeViaParent = getTypeOfPropertyOfType(getTypeFromTypeNode2(context, jsDocTypeLiteral), name.escapedText); + const overrideTypeNode = typeViaParent && jsDocProperty.typeExpression && getTypeFromTypeNode2(context, jsDocProperty.typeExpression.type) !== typeViaParent ? typeToTypeNodeHelper(typeViaParent, context) : void 0; + return overrideTypeNode; + }, + enterNewScope(context, node) { + if (isFunctionLike(node) || isJSDocSignature(node)) { + const signature = getSignatureFromDeclaration(node); + const expandedParams = getExpandedParameters( + signature, + /*skipUnionExpanding*/ + true + )[0]; + return enterNewScope(context, node, expandedParams, signature.typeParameters); + } else { + const typeParameters = isConditionalTypeNode(node) ? getInferTypeParameters(node) : [getDeclaredTypeOfTypeParameter(getSymbolOfDeclaration(node.typeParameter))]; + return enterNewScope( + context, + node, + /*expandedParams*/ + void 0, + typeParameters + ); + } + }, + markNodeReuse(context, range, location) { + return setTextRange2(context, range, location); + }, + trackExistingEntityName(context, node) { + return trackExistingEntityName(node, context); + }, + trackComputedName(context, accessExpression) { + trackComputedName(accessExpression, context.enclosingDeclaration, context); + }, + getModuleSpecifierOverride(syntacticContext, parent2, lit) { + const context = syntacticContext; + if (context.bundled || context.enclosingFile !== getSourceFileOfNode(lit)) { + let name = lit.text; + const nodeSymbol = getNodeLinks(parent2).resolvedSymbol; + const meaning = parent2.isTypeOf ? 111551 /* Value */ : 788968 /* Type */; + const parentSymbol = nodeSymbol && isSymbolAccessible( + nodeSymbol, + context.enclosingDeclaration, + meaning, + /*shouldComputeAliasesToMakeVisible*/ + false + ).accessibility === 0 /* Accessible */ && lookupSymbolChain( + nodeSymbol, + context, + meaning, + /*yieldModuleSymbol*/ + true + )[0]; + if (parentSymbol && isExternalModuleSymbol(parentSymbol)) { + name = getSpecifierForModuleSymbol(parentSymbol, context); + } else { + const targetFile = getExternalModuleFileFromDeclaration(parent2); + if (targetFile) { + name = getSpecifierForModuleSymbol(targetFile.symbol, context); + } + } + if (name.includes("/node_modules/")) { + context.encounteredError = true; + if (context.tracker.reportLikelyUnsafeImportRequiredError) { + context.tracker.reportLikelyUnsafeImportRequiredError(name); + } + } + return name; + } + }, + canReuseTypeNode(context, typeNode) { + return canReuseTypeNode(context, typeNode); + }, + canReuseTypeNodeAnnotation(syntacticContext, node, existing, symbol, requiresAddingUndefined) { + var _a; + const context = syntacticContext; + if (context.enclosingDeclaration === void 0) return false; + symbol ?? (symbol = getSymbolOfDeclaration(node)); + let type = (_a = context.enclosingSymbolTypes) == null ? void 0 : _a.get(getSymbolId(symbol)); + if (type === void 0) { + if (symbol.flags & 98304 /* Accessor */) { + type = node.kind === 178 /* SetAccessor */ ? getWriteTypeOfSymbol(symbol) : getTypeOfAccessors(symbol); + } else if (isValueSignatureDeclaration(node)) { + type = getReturnTypeOfSignature(getSignatureFromDeclaration(node)); + } else { + type = getTypeOfSymbol(symbol); + } + } + let annotationType = getTypeFromTypeNodeWithoutContext(existing); + if (isErrorType(annotationType)) { + return true; + } + if (requiresAddingUndefined && annotationType) { + annotationType = getOptionalType(annotationType, !isParameter(node)); + } + return !!annotationType && typeNodeIsEquivalentToType(node, type, annotationType) && existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, type); + } + }; return { + syntacticBuilderResolver, typeToTypeNode: (type, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => typeToTypeNodeHelper(type, context)), typePredicateToTypePredicateNode: (typePredicate, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => typePredicateToTypePredicateNodeHelper(typePredicate, context)), - expressionOrTypeToTypeNode: (expr, type, addUndefined, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => expressionOrTypeToTypeNode(context, expr, type, addUndefined)), - serializeTypeForDeclaration: (declaration, type, symbol, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => serializeTypeForDeclaration(context, declaration, type, symbol)), - serializeReturnTypeForSignature: (signature, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => serializeReturnTypeForSignature(context, signature)), + serializeTypeForExpression: (expr, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => syntacticNodeBuilder.serializeTypeOfExpression(expr, context)), + serializeTypeForDeclaration: (declaration, symbol, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => syntacticNodeBuilder.serializeTypeOfDeclaration(declaration, symbol, context)), + serializeReturnTypeForSignature: (signature, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => syntacticNodeBuilder.serializeReturnTypeForSignature(signature, getSymbolOfDeclaration(signature), context)), indexInfoToIndexSignatureDeclaration: (indexInfo, enclosingDeclaration, flags, internalFlags, tracker) => withContext2(enclosingDeclaration, flags, internalFlags, tracker, (context) => indexInfoToIndexSignatureDeclarationHelper( indexInfo, context, @@ -54265,65 +54981,6 @@ function createTypeChecker(host) { } return range; } - function expressionOrTypeToTypeNode(context, expr, type, addUndefined) { - const restoreFlags = saveRestoreFlags(context); - if (expr && !(context.internalFlags & 2 /* NoSyntacticPrinter */)) { - syntacticNodeBuilder.serializeTypeOfExpression(expr, context, addUndefined); - } - context.internalFlags |= 2 /* NoSyntacticPrinter */; - const result = expressionOrTypeToTypeNodeHelper(context, expr, type, addUndefined); - restoreFlags(); - return result; - } - function expressionOrTypeToTypeNodeHelper(context, expr, type, addUndefined) { - if (expr) { - const typeNode = isAssertionExpression(expr) ? expr.type : isJSDocTypeAssertion(expr) ? getJSDocTypeAssertionType(expr) : void 0; - if (typeNode && !isConstTypeReference(typeNode)) { - const result = tryReuseExistingTypeNode(context, typeNode, type, expr.parent, addUndefined); - if (result) { - return result; - } - } - } - if (addUndefined) { - type = getOptionalType(type); - } - return typeToTypeNodeHelper(type, context); - } - function tryReuseExistingTypeNode(context, typeNode, type, host2, addUndefined) { - const originalType = type; - if (addUndefined) { - type = getOptionalType(type, !isParameter(host2)); - } - const clone2 = tryReuseExistingNonParameterTypeNode(context, typeNode, type, host2); - if (clone2) { - if (addUndefined && containsNonMissingUndefinedType(type) && !someType(getTypeFromTypeNode2(context, typeNode), (t) => !!(t.flags & 32768 /* Undefined */))) { - return factory.createUnionTypeNode([clone2, factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); - } - return clone2; - } - if (addUndefined && originalType !== type) { - const cloneMissingUndefined = tryReuseExistingNonParameterTypeNode(context, typeNode, originalType, host2); - if (cloneMissingUndefined) { - return factory.createUnionTypeNode([cloneMissingUndefined, factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); - } - } - return void 0; - } - function tryReuseExistingNonParameterTypeNode(context, existing, type, host2 = context.enclosingDeclaration, annotationType = getTypeFromTypeNode2( - context, - existing, - /*noMappedTypes*/ - true - )) { - if (annotationType && typeNodeIsEquivalentToType(host2, type, annotationType) && existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, type)) { - const result = tryReuseExistingTypeNodeHelper(context, existing); - if (result) { - return result; - } - } - return void 0; - } function symbolToNode(symbol, context, meaning) { if (context.internalFlags & 1 /* WriteComputedProps */) { if (symbol.valueDeclaration) { @@ -54347,6 +55004,7 @@ function createTypeChecker(host) { internalFlags: internalFlags || 0 /* None */, tracker: void 0, encounteredError: false, + suppressReportInferenceFallback: false, reportedDiagnostic: false, visitedTypes: void 0, symbolDepth: void 0, @@ -54365,6 +55023,7 @@ function createTypeChecker(host) { typeParameterNames: void 0, typeParameterNamesByText: void 0, typeParameterNamesByTextNextNameCount: void 0, + enclosingSymbolTypes: /* @__PURE__ */ new Map(), mapper: void 0 }; context.tracker = new SymbolTrackerImpl(context, tracker, moduleResolverHost); @@ -54374,6 +55033,19 @@ function createTypeChecker(host) { } return context.encounteredError ? void 0 : resultingNode; } + function addSymbolTypeToContext(context, symbol, type) { + const id = getSymbolId(symbol); + const oldType = context.enclosingSymbolTypes.get(id); + context.enclosingSymbolTypes.set(id, type); + return restore; + function restore() { + if (oldType) { + context.enclosingSymbolTypes.set(id, oldType); + } else { + context.enclosingSymbolTypes.delete(id); + } + } + } function saveRestoreFlags(context) { const flags = context.flags; const internalFlags = context.internalFlags; @@ -54785,8 +55457,8 @@ function createTypeChecker(host) { if (isInstantiationExpressionType) { const instantiationExpressionType = type2; const existing = instantiationExpressionType.node; - if (isTypeQueryNode(existing)) { - const typeNode = tryReuseExistingNonParameterTypeNode(context, existing, type2); + if (isTypeQueryNode(existing) && getTypeFromTypeNode2(context, existing) === type2) { + const typeNode = syntacticNodeBuilder.tryReuseExistingTypeNode(context, existing); if (typeNode) { return typeNode; } @@ -55128,6 +55800,9 @@ function createTypeChecker(host) { } function createTypeNodesFromResolvedType(resolvedType) { if (checkTruncationLength(context)) { + if (context.flags & 1 /* NoTruncation */) { + return [addSyntheticTrailingComment(factory.createNotEmittedTypeElement(), 3 /* MultiLineCommentTrivia */, "elided")]; + } return [factory.createPropertySignature( /*modifiers*/ void 0, @@ -55165,15 +55840,20 @@ function createTypeChecker(host) { } } if (checkTruncationLength(context) && i + 2 < properties.length - 1) { - typeElements.push(factory.createPropertySignature( - /*modifiers*/ - void 0, - `... ${properties.length - i} more ...`, - /*questionToken*/ - void 0, - /*type*/ - void 0 - )); + if (context.flags & 1 /* NoTruncation */) { + const typeElement = typeElements.pop(); + typeElements.push(addSyntheticTrailingComment(typeElement, 3 /* MultiLineCommentTrivia */, `... ${properties.length - i} more elided ...`)); + } else { + typeElements.push(factory.createPropertySignature( + /*modifiers*/ + void 0, + `... ${properties.length - i} more ...`, + /*questionToken*/ + void 0, + /*type*/ + void 0 + )); + } addPropertyToElementList(properties[properties.length - 1], context, typeElements); break; } @@ -55191,7 +55871,7 @@ function createTypeChecker(host) { void 0 ); } - return factory.createKeywordTypeNode(133 /* AnyKeyword */); + return addSyntheticLeadingComment(factory.createKeywordTypeNode(133 /* AnyKeyword */), 3 /* MultiLineCommentTrivia */, "elided"); } function shouldUsePlaceholderForProperty(propertySymbol, context) { var _a; @@ -55267,7 +55947,7 @@ function createTypeChecker(host) { const signatures = getSignaturesOfType(filterType(propertyType, (t) => !(t.flags & 32768 /* Undefined */)), 0 /* Call */); for (const signature of signatures) { const methodDeclaration = signatureToSignatureDeclarationHelper(signature, 173 /* MethodSignature */, context, { name: propertyName, questionToken: optionalToken }); - typeElements.push(preserveCommentsOn(methodDeclaration)); + typeElements.push(preserveCommentsOn(methodDeclaration, signature.declaration || propertySymbol.valueDeclaration)); } if (signatures.length || !optionalToken) { return; @@ -55302,8 +55982,8 @@ function createTypeChecker(host) { optionalToken, propertyTypeNode ); - typeElements.push(preserveCommentsOn(propertySignature)); - function preserveCommentsOn(node) { + typeElements.push(preserveCommentsOn(propertySignature, propertySymbol.valueDeclaration)); + function preserveCommentsOn(node, range) { var _a2; const jsdocPropertyTag = (_a2 = propertySymbol.declarations) == null ? void 0 : _a2.find((d) => d.kind === 348 /* JSDocPropertyTag */); if (jsdocPropertyTag) { @@ -55311,8 +55991,8 @@ function createTypeChecker(host) { if (commentText) { setSyntheticLeadingComments(node, [{ kind: 3 /* MultiLineCommentTrivia */, text: "*\n * " + commentText.replace(/\n/g, "\n * ") + "\n ", pos: -1, end: -1, hasTrailingNewLine: true }]); } - } else if (propertySymbol.valueDeclaration) { - setCommentRange2(context, node, propertySymbol.valueDeclaration); + } else if (range) { + setCommentRange2(context, node, range); } return node; } @@ -55327,15 +56007,17 @@ function createTypeChecker(host) { if (some(types)) { if (checkTruncationLength(context)) { if (!isBareList) { - return [factory.createTypeReferenceNode( - "...", - /*typeArguments*/ - void 0 - )]; + return [ + context.flags & 1 /* NoTruncation */ ? addSyntheticLeadingComment(factory.createKeywordTypeNode(133 /* AnyKeyword */), 3 /* MultiLineCommentTrivia */, "elided") : factory.createTypeReferenceNode( + "...", + /*typeArguments*/ + void 0 + ) + ]; } else if (types.length > 2) { return [ typeToTypeNodeHelper(types[0], context), - factory.createTypeReferenceNode( + context.flags & 1 /* NoTruncation */ ? addSyntheticLeadingComment(factory.createKeywordTypeNode(133 /* AnyKeyword */), 3 /* MultiLineCommentTrivia */, `... ${types.length - 2} more elided ...`) : factory.createTypeReferenceNode( `... ${types.length - 2} more ...`, /*typeArguments*/ void 0 @@ -55351,11 +56033,13 @@ function createTypeChecker(host) { for (const type of types) { i++; if (checkTruncationLength(context) && i + 2 < types.length - 1) { - result.push(factory.createTypeReferenceNode( - `... ${types.length - i} more ...`, - /*typeArguments*/ - void 0 - )); + result.push( + context.flags & 1 /* NoTruncation */ ? addSyntheticLeadingComment(factory.createKeywordTypeNode(133 /* AnyKeyword */), 3 /* MultiLineCommentTrivia */, `... ${types.length - i} more elided ...`) : factory.createTypeReferenceNode( + `... ${types.length - i} more ...`, + /*typeArguments*/ + void 0 + ) + ); const typeNode2 = typeToTypeNodeHelper(types[types.length - 1], context); if (typeNode2) { result.push(typeNode2); @@ -55525,14 +56209,85 @@ function createTypeChecker(host) { cleanup == null ? void 0 : cleanup(); return node; } - function isNewScopeNode(node) { - return isFunctionLike(node) || isJSDocSignature(node) || isMappedTypeNode(node); - } - function getTypeParametersInScope(node) { - return isFunctionLike(node) || isJSDocSignature(node) ? getSignatureFromDeclaration(node).typeParameters : isConditionalTypeNode(node) ? getInferTypeParameters(node) : [getDeclaredTypeOfTypeParameter(getSymbolOfDeclaration(node.typeParameter))]; - } - function getParametersInScope(node) { - return isFunctionLike(node) || isJSDocSignature(node) ? getSignatureFromDeclaration(node).parameters : void 0; + function createRecoveryBoundary(context) { + if (cancellationToken && cancellationToken.throwIfCancellationRequested) { + cancellationToken.throwIfCancellationRequested(); + } + let trackedSymbols; + let unreportedErrors; + let hadError = false; + const oldTracker = context.tracker; + const oldTrackedSymbols = context.trackedSymbols; + context.trackedSymbols = void 0; + const oldEncounteredError = context.encounteredError; + context.tracker = new SymbolTrackerImpl(context, { + ...oldTracker.inner, + reportCyclicStructureError() { + markError(() => oldTracker.reportCyclicStructureError()); + }, + reportInaccessibleThisError() { + markError(() => oldTracker.reportInaccessibleThisError()); + }, + reportInaccessibleUniqueSymbolError() { + markError(() => oldTracker.reportInaccessibleUniqueSymbolError()); + }, + reportLikelyUnsafeImportRequiredError(specifier) { + markError(() => oldTracker.reportLikelyUnsafeImportRequiredError(specifier)); + }, + reportNonSerializableProperty(name) { + markError(() => oldTracker.reportNonSerializableProperty(name)); + }, + reportPrivateInBaseOfClassExpression(propertyName) { + markError(() => oldTracker.reportPrivateInBaseOfClassExpression(propertyName)); + }, + trackSymbol(sym, decl, meaning) { + (trackedSymbols ?? (trackedSymbols = [])).push([sym, decl, meaning]); + return false; + }, + moduleResolverHost: context.tracker.moduleResolverHost + }, context.tracker.moduleResolverHost); + return { + startRecoveryScope, + finalizeBoundary, + markError, + hadError: () => hadError + }; + function markError(unreportedError) { + hadError = true; + if (unreportedError) { + (unreportedErrors ?? (unreportedErrors = [])).push(unreportedError); + } + } + function startRecoveryScope() { + const trackedSymbolsTop = (trackedSymbols == null ? void 0 : trackedSymbols.length) ?? 0; + const unreportedErrorsTop = (unreportedErrors == null ? void 0 : unreportedErrors.length) ?? 0; + return () => { + hadError = false; + if (trackedSymbols) { + trackedSymbols.length = trackedSymbolsTop; + } + if (unreportedErrors) { + unreportedErrors.length = unreportedErrorsTop; + } + }; + } + function finalizeBoundary() { + context.tracker = oldTracker; + context.trackedSymbols = oldTrackedSymbols; + context.encounteredError = oldEncounteredError; + unreportedErrors == null ? void 0 : unreportedErrors.forEach((fn) => fn()); + if (hadError) { + return false; + } + trackedSymbols == null ? void 0 : trackedSymbols.forEach( + ([symbol, enclosingDeclaration, meaning]) => context.tracker.trackSymbol( + symbol, + enclosingDeclaration, + meaning + ) + ); + return true; + } } function enterNewScope(context, declaration, expandedParams, typeParameters, originalParameters, mapper) { const cleanupContext = cloneNodeBuilderContext(context); @@ -55675,7 +56430,7 @@ function createTypeChecker(host) { return factory.createTypeParameterDeclaration(modifiers, name, constraintNode, defaultParameterNode); } function typeToTypeNodeHelperWithPossibleReusableTypeNode(type, typeNode, context) { - return typeNode && tryReuseExistingNonParameterTypeNode(context, typeNode, type) || typeToTypeNodeHelper(type, context); + return typeNode && getTypeFromTypeNode2(context, typeNode) === type && syntacticNodeBuilder.tryReuseExistingTypeNode(context, typeNode) || typeToTypeNodeHelper(type, context); } function typeParameterToDeclaration(type, context, constraint = getConstraintOfTypeParameter(type)) { const constraintNode = constraint && typeToTypeNodeHelperWithPossibleReusableTypeNode(constraint, getConstraintDeclaration(type), context); @@ -56297,41 +57052,46 @@ function createTypeChecker(host) { } return enclosingDeclaration; } + function serializeInferredTypeForDeclaration(symbol, context, type) { + if (type.flags & 8192 /* UniqueESSymbol */ && type.symbol === symbol && (!context.enclosingDeclaration || some(symbol.declarations, (d) => getSourceFileOfNode(d) === context.enclosingFile))) { + context.flags |= 1048576 /* AllowUniqueESSymbolType */; + } + const result = typeToTypeNodeHelper(type, context); + return result; + } function serializeTypeForDeclaration(context, declaration, type, symbol) { - var _a, _b; + var _a; + let result; const addUndefinedForParameter = declaration && (isParameter(declaration) || isJSDocParameterTag(declaration)) && requiresAddingImplicitUndefined(declaration, context.enclosingDeclaration); - const enclosingDeclaration = context.enclosingDeclaration; - const restoreFlags = saveRestoreFlags(context); - if (declaration && hasInferredType(declaration) && !(context.internalFlags & 2 /* NoSyntacticPrinter */)) { - syntacticNodeBuilder.serializeTypeOfDeclaration(declaration, context); - } - context.internalFlags |= 2 /* NoSyntacticPrinter */; - if (enclosingDeclaration && (!isErrorType(type) || context.internalFlags & 8 /* AllowUnresolvedNames */)) { - const declWithExistingAnnotation = declaration && getNonlocalEffectiveTypeAnnotationNode(declaration) ? declaration : getDeclarationWithTypeAnnotation(symbol); - if (declWithExistingAnnotation && !isFunctionLikeDeclaration(declWithExistingAnnotation) && !isGetAccessorDeclaration(declWithExistingAnnotation)) { - const existing = getNonlocalEffectiveTypeAnnotationNode(declWithExistingAnnotation); - const addUndefined = addUndefinedForParameter || !!(symbol.flags & 4 /* Property */ && symbol.flags & 16777216 /* Optional */ && isOptionalDeclaration(declWithExistingAnnotation) && ((_a = symbol.links) == null ? void 0 : _a.mappedType) && containsNonMissingUndefinedType(type)); - const result2 = !isTypePredicateNode(existing) && tryReuseExistingTypeNode(context, existing, type, declWithExistingAnnotation, addUndefined); - if (result2) { - restoreFlags(); - return result2; - } + const decl = declaration ?? symbol.valueDeclaration ?? getDeclarationWithTypeAnnotation(symbol) ?? ((_a = symbol.declarations) == null ? void 0 : _a[0]); + if (decl) { + if (isAccessor(decl)) { + result = syntacticNodeBuilder.serializeTypeOfAccessor(decl, symbol, context); + } else if (hasInferredType(decl) && !nodeIsSynthesized(decl) && !(getObjectFlags(type) & 196608 /* RequiresWidening */)) { + const restore = addSymbolTypeToContext(context, symbol, type); + result = syntacticNodeBuilder.serializeTypeOfDeclaration(decl, symbol, context); + restore(); } } - if (type.flags & 8192 /* UniqueESSymbol */ && type.symbol === symbol && (!context.enclosingDeclaration || some(symbol.declarations, (d) => getSourceFileOfNode(d) === getSourceFileOfNode(context.enclosingDeclaration)))) { - context.flags |= 1048576 /* AllowUniqueESSymbolType */; + if (!result) { + if (addUndefinedForParameter) { + type = getOptionalType(type); + } + result = serializeInferredTypeForDeclaration(symbol, context, type); } - const decl = declaration ?? symbol.valueDeclaration ?? ((_b = symbol.declarations) == null ? void 0 : _b[0]); - const expr = decl && isDeclarationWithPossibleInnerTypeNodeReuse(decl) ? getPossibleTypeNodeReuseExpression(decl) : void 0; - const result = expressionOrTypeToTypeNode(context, expr, type, addUndefinedForParameter); - restoreFlags(); - return result; + return result ?? factory.createKeywordTypeNode(133 /* AnyKeyword */); } function typeNodeIsEquivalentToType(annotatedDeclaration, type, typeFromTypeNode) { if (typeFromTypeNode === type) { return true; } - if (annotatedDeclaration && (isParameter(annotatedDeclaration) || isPropertySignature(annotatedDeclaration) || isPropertyDeclaration(annotatedDeclaration)) && annotatedDeclaration.questionToken) { + if (!annotatedDeclaration) { + return false; + } + if ((isPropertySignature(annotatedDeclaration) || isPropertyDeclaration(annotatedDeclaration)) && annotatedDeclaration.questionToken) { + return getTypeWithFacts(type, 524288 /* NEUndefined */) === typeFromTypeNode; + } + if (isParameter(annotatedDeclaration) && hasEffectiveQuestionToken(annotatedDeclaration)) { return getTypeWithFacts(type, 524288 /* NEUndefined */) === typeFromTypeNode; } return false; @@ -56342,37 +57102,32 @@ function createTypeChecker(host) { if (suppressAny) context.flags &= ~256 /* SuppressAnyReturnType */; let returnTypeNode; const returnType = getReturnTypeOfSignature(signature); - if (returnType && !(suppressAny && isTypeAny(returnType))) { - if (signature.declaration && !(context.internalFlags & 2 /* NoSyntacticPrinter */)) { - syntacticNodeBuilder.serializeReturnTypeForSignature(signature.declaration, context); + if (!(suppressAny && isTypeAny(returnType))) { + if (signature.declaration && !nodeIsSynthesized(signature.declaration)) { + const declarationSymbol = getSymbolOfDeclaration(signature.declaration); + const restore = addSymbolTypeToContext(context, declarationSymbol, returnType); + returnTypeNode = syntacticNodeBuilder.serializeReturnTypeForSignature(signature.declaration, declarationSymbol, context); + restore(); + } + if (!returnTypeNode) { + returnTypeNode = serializeInferredReturnTypeForSignature(context, signature, returnType); } - context.internalFlags |= 2 /* NoSyntacticPrinter */; - returnTypeNode = serializeReturnTypeForSignatureWorker(context, signature); - } else if (!suppressAny) { + } + if (!returnTypeNode && !suppressAny) { returnTypeNode = factory.createKeywordTypeNode(133 /* AnyKeyword */); } restoreFlags(); return returnTypeNode; } - function serializeReturnTypeForSignatureWorker(context, signature) { + function serializeInferredReturnTypeForSignature(context, signature, returnType) { + const oldSuppressReportInferenceFallback = context.suppressReportInferenceFallback; + context.suppressReportInferenceFallback = true; const typePredicate = getTypePredicateOfSignature(signature); - const type = getReturnTypeOfSignature(signature); - if (context.enclosingDeclaration && (!isErrorType(type) || context.internalFlags & 8 /* AllowUnresolvedNames */) && signature.declaration && !nodeIsSynthesized(signature.declaration)) { - const annotation = getNonlocalEffectiveReturnTypeAnnotationNode(signature.declaration); - if (annotation) { - const result = tryReuseExistingTypeNode(context, annotation, type, context.enclosingDeclaration); - if (result) { - return result; - } - } - } - if (typePredicate) { - return typePredicateToTypePredicateNodeHelper(typePredicate, context); - } - const expr = signature.declaration && getPossibleTypeNodeReuseExpression(signature.declaration); - return expressionOrTypeToTypeNode(context, expr, type); + const returnTypeNode = typePredicate ? typePredicateToTypePredicateNodeHelper(context.mapper ? instantiateTypePredicate(typePredicate, context.mapper) : typePredicate, context) : typeToTypeNodeHelper(returnType, context); + context.suppressReportInferenceFallback = oldSuppressReportInferenceFallback; + return returnTypeNode; } - function trackExistingEntityName(node, context) { + function trackExistingEntityName(node, context, enclosingDeclaration = context.enclosingDeclaration) { let introducesError = false; const leftmost = getFirstIdentifier(node); if (isInJSFile(node) && (isExportsIdentifier(leftmost) || isModuleExportsAccessExpression(leftmost.parent) || isQualifiedName(leftmost.parent) && isModuleIdentifier(leftmost.parent.left) && isExportsIdentifier(leftmost.parent.right))) { @@ -56423,7 +57178,7 @@ function createTypeChecker(host) { if ( // Check for unusable parameters symbols symAtLocation === unknownSymbol || // If the symbol is not found, but was not found in the original scope either we probably have an error, don't reuse the node - symAtLocation === void 0 && sym !== void 0 || // If the symbol is found both in declaration scope and in current scope then it shoudl point to the same reference + symAtLocation === void 0 && sym !== void 0 || // If the symbol is found both in declaration scope and in current scope then it should point to the same reference symAtLocation && sym && !getSymbolIfSameReference(getExportSymbolOfValueSymbolIfExported(symAtLocation), sym) ) { if (symAtLocation !== unknownSymbol) { @@ -56444,7 +57199,7 @@ function createTypeChecker(host) { if (!(sym.flags & 262144 /* TypeParameter */) && // Type parameters are visible in the current context if they are are resolvable !isDeclarationName(node) && isSymbolAccessible( sym, - context.enclosingDeclaration, + enclosingDeclaration, meaning, /*shouldComputeAliasesToMakeVisible*/ false @@ -56452,7 +57207,7 @@ function createTypeChecker(host) { context.tracker.reportInferenceFallback(node); introducesError = true; } else { - context.tracker.trackSymbol(sym, context.enclosingDeclaration, meaning); + context.tracker.trackSymbol(sym, enclosingDeclaration, meaning); } return { introducesError, node: attachSymbolToLeftmostIdentifier(node) }; } @@ -56496,6 +57251,15 @@ function createTypeChecker(host) { return symbolToTypeNode(resolvedSymbol, context, meaning, typeArguments); } function canReuseTypeNode(context, existing) { + const type = getTypeFromTypeNode2( + context, + existing, + /*noMappedTypes*/ + true + ); + if (!type) { + return false; + } if (isInJSFile(existing)) { if (isLiteralImportTypeNode(existing)) { void getTypeFromImportTypeNode(existing); @@ -56505,29 +57269,16 @@ function createTypeChecker(host) { !(length(existing.typeArguments) >= getMinTypeArgumentCount(getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(nodeSymbol)))); } } - if (isThisTypeNode(existing)) { - if (context.mapper === void 0) return true; - const type = getTypeFromTypeNode2( - context, - existing, - /*noMappedTypes*/ - true - ); - return !!type; - } if (isTypeReferenceNode(existing)) { if (isConstTypeReference(existing)) return false; - const type = getTypeFromTypeReference(existing); const symbol = getNodeLinks(existing).resolvedSymbol; if (!symbol) return false; if (symbol.flags & 262144 /* TypeParameter */) { - const type2 = getDeclaredTypeOfSymbol(symbol); - if (context.mapper && getMappedType(type2, context.mapper) !== type2) { - return false; - } + const declaredType = getDeclaredTypeOfSymbol(symbol); + return !(context.mapper && getMappedType(declaredType, context.mapper) !== declaredType); } if (isInJSDoc(existing)) { - return existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, type) && !getIntendedTypeFromJSDocTypeReference(existing) && symbol.flags & 788968 /* Type */; + return existingTypeNodeIsNotReferenceOrIsReferenceWithCompatibleTypeArgumentCount(existing, type) && !getIntendedTypeFromJSDocTypeReference(existing) && !!(symbol.flags & 788968 /* Type */); } } if (isTypeOperatorNode(existing) && existing.operator === 158 /* UniqueKeyword */ && existing.type.kind === 155 /* SymbolKeyword */) { @@ -56536,511 +57287,15 @@ function createTypeChecker(host) { } return true; } - function serializeExistingTypeNode(context, typeNode) { + function serializeExistingTypeNode(context, typeNode, addUndefined) { const type = getTypeFromTypeNode2(context, typeNode); - return typeToTypeNodeHelper(type, context); - } - function tryReuseExistingTypeNodeHelper(context, existing) { - if (cancellationToken && cancellationToken.throwIfCancellationRequested) { - cancellationToken.throwIfCancellationRequested(); - } - let hadError = false; - const { finalizeBoundary, startRecoveryScope } = createRecoveryBoundary(); - const transformed = visitNode(existing, visitExistingNodeTreeSymbols, isTypeNode); - if (!finalizeBoundary()) { - return void 0; - } - context.approximateLength += existing.end - existing.pos; - return transformed; - function visitExistingNodeTreeSymbols(node) { - if (hadError) return node; - const recover = startRecoveryScope(); - const onExitNewScope = isNewScopeNode(node) ? onEnterNewScope(node) : void 0; - const result = visitExistingNodeTreeSymbolsWorker(node); - onExitNewScope == null ? void 0 : onExitNewScope(); - if (hadError) { - if (isTypeNode(node) && !isTypePredicateNode(node)) { - recover(); - return serializeExistingTypeNode(context, node); - } - return node; - } - return result ? setTextRange2(context, result, node) : void 0; - } - function createRecoveryBoundary() { - let trackedSymbols; - let unreportedErrors; - const oldTracker = context.tracker; - const oldTrackedSymbols = context.trackedSymbols; - context.trackedSymbols = void 0; - const oldEncounteredError = context.encounteredError; - context.tracker = new SymbolTrackerImpl(context, { - ...oldTracker.inner, - reportCyclicStructureError() { - markError(() => oldTracker.reportCyclicStructureError()); - }, - reportInaccessibleThisError() { - markError(() => oldTracker.reportInaccessibleThisError()); - }, - reportInaccessibleUniqueSymbolError() { - markError(() => oldTracker.reportInaccessibleUniqueSymbolError()); - }, - reportLikelyUnsafeImportRequiredError(specifier) { - markError(() => oldTracker.reportLikelyUnsafeImportRequiredError(specifier)); - }, - reportNonSerializableProperty(name) { - markError(() => oldTracker.reportNonSerializableProperty(name)); - }, - trackSymbol(sym, decl, meaning) { - (trackedSymbols ?? (trackedSymbols = [])).push([sym, decl, meaning]); - return false; - }, - moduleResolverHost: context.tracker.moduleResolverHost - }, context.tracker.moduleResolverHost); - return { - startRecoveryScope: startRecoveryScope2, - finalizeBoundary: finalizeBoundary2 - }; - function markError(unreportedError) { - hadError = true; - (unreportedErrors ?? (unreportedErrors = [])).push(unreportedError); - } - function startRecoveryScope2() { - const trackedSymbolsTop = (trackedSymbols == null ? void 0 : trackedSymbols.length) ?? 0; - const unreportedErrorsTop = (unreportedErrors == null ? void 0 : unreportedErrors.length) ?? 0; - return () => { - hadError = false; - if (trackedSymbols) { - trackedSymbols.length = trackedSymbolsTop; - } - if (unreportedErrors) { - unreportedErrors.length = unreportedErrorsTop; - } - }; - } - function finalizeBoundary2() { - context.tracker = oldTracker; - context.trackedSymbols = oldTrackedSymbols; - context.encounteredError = oldEncounteredError; - unreportedErrors == null ? void 0 : unreportedErrors.forEach((fn) => fn()); - if (hadError) { - return false; - } - trackedSymbols == null ? void 0 : trackedSymbols.forEach( - ([symbol, enclosingDeclaration, meaning]) => context.tracker.trackSymbol( - symbol, - enclosingDeclaration, - meaning - ) - ); - return true; - } - } - function onEnterNewScope(node) { - return enterNewScope(context, node, getParametersInScope(node), getTypeParametersInScope(node)); - } - function tryVisitSimpleTypeNode(node) { - const innerNode = skipTypeParentheses(node); - switch (innerNode.kind) { - case 183 /* TypeReference */: - return tryVisitTypeReference(innerNode); - case 186 /* TypeQuery */: - return tryVisitTypeQuery(innerNode); - case 199 /* IndexedAccessType */: - return tryVisitIndexedAccess(innerNode); - case 198 /* TypeOperator */: - const typeOperatorNode = innerNode; - if (typeOperatorNode.operator === 143 /* KeyOfKeyword */) { - return tryVisitKeyOf(typeOperatorNode); - } - } - return visitNode(node, visitExistingNodeTreeSymbols, isTypeNode); - } - function tryVisitIndexedAccess(node) { - const resultObjectType = tryVisitSimpleTypeNode(node.objectType); - if (resultObjectType === void 0) { - return void 0; - } - return factory.updateIndexedAccessTypeNode(node, resultObjectType, visitNode(node.indexType, visitExistingNodeTreeSymbols, isTypeNode)); - } - function tryVisitKeyOf(node) { - Debug.assertEqual(node.operator, 143 /* KeyOfKeyword */); - const type = tryVisitSimpleTypeNode(node.type); - if (type === void 0) { - return void 0; - } - return factory.updateTypeOperatorNode(node, type); - } - function tryVisitTypeQuery(node) { - const { introducesError, node: exprName } = trackExistingEntityName(node.exprName, context); - if (!introducesError) { - return factory.updateTypeQueryNode( - node, - exprName, - visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode) - ); - } - const serializedName = serializeTypeName( - context, - node.exprName, - /*isTypeOf*/ - true - ); - if (serializedName) { - return setTextRange2(context, serializedName, node.exprName); - } - } - function tryVisitTypeReference(node) { - if (canReuseTypeNode(context, node)) { - const { introducesError, node: newName } = trackExistingEntityName(node.typeName, context); - const typeArguments = visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode); - if (!introducesError) { - const updated = factory.updateTypeReferenceNode( - node, - newName, - typeArguments - ); - return setTextRange2(context, updated, node); - } else { - const serializedName = serializeTypeName( - context, - node.typeName, - /*isTypeOf*/ - false, - typeArguments - ); - if (serializedName) { - return setTextRange2(context, serializedName, node.typeName); - } - } - } - } - function visitExistingNodeTreeSymbolsWorker(node) { - if (isJSDocTypeExpression(node)) { - return visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode); - } - if (isJSDocAllType(node) || node.kind === 319 /* JSDocNamepathType */) { - return factory.createKeywordTypeNode(133 /* AnyKeyword */); - } - if (isJSDocUnknownType(node)) { - return factory.createKeywordTypeNode(159 /* UnknownKeyword */); - } - if (isJSDocNullableType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createLiteralTypeNode(factory.createNull())]); - } - if (isJSDocOptionalType(node)) { - return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); - } - if (isJSDocNonNullableType(node)) { - return visitNode(node.type, visitExistingNodeTreeSymbols); - } - if (isJSDocVariadicType(node)) { - return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); - } - if (isJSDocTypeLiteral(node)) { - return factory.createTypeLiteralNode(map(node.jsDocPropertyTags, (t) => { - const name = visitNode(isIdentifier(t.name) ? t.name : t.name.right, visitExistingNodeTreeSymbols, isIdentifier); - const typeViaParent = getTypeOfPropertyOfType(getTypeFromTypeNode2(context, node), name.escapedText); - const overrideTypeNode = typeViaParent && t.typeExpression && getTypeFromTypeNode2(context, t.typeExpression.type) !== typeViaParent ? typeToTypeNodeHelper(typeViaParent, context) : void 0; - return factory.createPropertySignature( - /*modifiers*/ - void 0, - name, - t.isBracketed || t.typeExpression && isJSDocOptionalType(t.typeExpression.type) ? factory.createToken(58 /* QuestionToken */) : void 0, - overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(133 /* AnyKeyword */) - ); - })); - } - if (isTypeReferenceNode(node) && isIdentifier(node.typeName) && node.typeName.escapedText === "") { - return setOriginalNode(factory.createKeywordTypeNode(133 /* AnyKeyword */), node); - } - if ((isExpressionWithTypeArguments(node) || isTypeReferenceNode(node)) && isJSDocIndexSignature(node)) { - return factory.createTypeLiteralNode([factory.createIndexSignature( - /*modifiers*/ - void 0, - [factory.createParameterDeclaration( - /*modifiers*/ - void 0, - /*dotDotDotToken*/ - void 0, - "x", - /*questionToken*/ - void 0, - visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols, isTypeNode) - )], - visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols, isTypeNode) - )]); - } - if (isJSDocFunctionType(node)) { - if (isJSDocConstructSignature(node)) { - let newTypeNode; - return factory.createConstructorTypeNode( - /*modifiers*/ - void 0, - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), - mapDefined(node.parameters, (p, i) => p.name && isIdentifier(p.name) && p.name.escapedText === "new" ? (newTypeNode = p.type, void 0) : factory.createParameterDeclaration( - /*modifiers*/ - void 0, - getEffectiveDotDotDotForParameter(p), - setTextRange2(context, factory.createIdentifier(getNameForJSDocFunctionParameter(p, i)), p), - factory.cloneNode(p.questionToken), - visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), - /*initializer*/ - void 0 - )), - visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(133 /* AnyKeyword */) - ); - } else { - return factory.createFunctionTypeNode( - visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), - map(node.parameters, (p, i) => factory.createParameterDeclaration( - /*modifiers*/ - void 0, - getEffectiveDotDotDotForParameter(p), - setTextRange2(context, factory.createIdentifier(getNameForJSDocFunctionParameter(p, i)), p), - factory.cloneNode(p.questionToken), - visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), - /*initializer*/ - void 0 - )), - visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(133 /* AnyKeyword */) - ); - } - } - if (isThisTypeNode(node)) { - if (canReuseTypeNode(context, node)) { - return node; - } - hadError = true; - return node; - } - if (isTypeParameterDeclaration(node)) { - return factory.updateTypeParameterDeclaration( - node, - visitNodes2(node.modifiers, visitExistingNodeTreeSymbols, isModifier), - setTextRange2(context, typeParameterToName(getDeclaredTypeOfSymbol(getSymbolOfDeclaration(node)), context), node), - visitNode(node.constraint, visitExistingNodeTreeSymbols, isTypeNode), - visitNode(node.default, visitExistingNodeTreeSymbols, isTypeNode) - ); - } - if (isIndexedAccessTypeNode(node)) { - const result = tryVisitIndexedAccess(node); - if (!result) { - hadError = true; - return node; - } - return result; - } - if (isTypeReferenceNode(node)) { - const result = tryVisitTypeReference(node); - if (result) { - return result; - } - hadError = true; - return node; - } - if (isLiteralImportTypeNode(node)) { - const nodeSymbol = getNodeLinks(node).resolvedSymbol; - if (isInJSDoc(node) && nodeSymbol && // The import type resolved using jsdoc fallback logic - (!node.isTypeOf && !(nodeSymbol.flags & 788968 /* Type */) || // The import type had type arguments autofilled by js fallback logic - !(length(node.typeArguments) >= getMinTypeArgumentCount(getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(nodeSymbol))))) { - return setTextRange2(context, typeToTypeNodeHelper(getTypeFromTypeNode2(context, node), context), node); - } - return factory.updateImportTypeNode( - node, - factory.updateLiteralTypeNode(node.argument, rewriteModuleSpecifier(node, node.argument.literal)), - visitNode(node.attributes, visitExistingNodeTreeSymbols, isImportAttributes), - visitNode(node.qualifier, visitExistingNodeTreeSymbols, isEntityName), - visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode), - node.isTypeOf - ); - } - if (isNamedDeclaration(node) && node.name.kind === 167 /* ComputedPropertyName */ && !isLateBindableName(node.name)) { - if (!hasDynamicName(node)) { - return visitEachChild2(node, visitExistingNodeTreeSymbols); - } - if (!(context.internalFlags & 8 /* AllowUnresolvedNames */ && isEntityNameExpression(node.name.expression) && checkComputedPropertyName(node.name).flags & 1 /* Any */)) { - return void 0; - } - } - if (isFunctionLike(node) && !node.type || isPropertyDeclaration(node) && !node.type && !node.initializer || isPropertySignature(node) && !node.type && !node.initializer || isParameter(node) && !node.type && !node.initializer) { - let visited = visitEachChild2(node, visitExistingNodeTreeSymbols); - if (visited === node) { - visited = setTextRange2(context, factory.cloneNode(node), node); - } - visited.type = factory.createKeywordTypeNode(133 /* AnyKeyword */); - if (isParameter(node)) { - visited.modifiers = void 0; - } - return visited; - } - if (isTypeQueryNode(node)) { - const result = tryVisitTypeQuery(node); - if (!result) { - hadError = true; - return node; - } - return result; - } - if (isComputedPropertyName(node) && isEntityNameExpression(node.expression)) { - const { node: result, introducesError } = trackExistingEntityName(node.expression, context); - if (!introducesError) { - return factory.updateComputedPropertyName(node, result); - } else { - const type = getWidenedType(getRegularTypeOfExpression(node.expression)); - const computedPropertyNameType = typeToTypeNodeHelper(type, context); - let literal; - if (isLiteralTypeNode(computedPropertyNameType)) { - literal = computedPropertyNameType.literal; - } else { - const evaluated = evaluateEntityNameExpression(node.expression); - const literalNode = typeof evaluated.value === "string" ? factory.createStringLiteral( - evaluated.value, - /*isSingleQuote*/ - void 0 - ) : typeof evaluated.value === "number" ? factory.createNumericLiteral( - evaluated.value, - /*numericLiteralFlags*/ - 0 - ) : void 0; - if (!literalNode) { - if (isImportTypeNode(computedPropertyNameType)) { - trackComputedName(node.expression, context.enclosingDeclaration, context); - } - return node; - } - literal = literalNode; - } - if (literal.kind === 11 /* StringLiteral */ && isIdentifierText(literal.text, getEmitScriptTarget(compilerOptions))) { - return factory.createIdentifier(literal.text); - } - if (literal.kind === 9 /* NumericLiteral */ && !literal.text.startsWith("-")) { - return literal; - } - return factory.updateComputedPropertyName(node, literal); - } - } - if (isTypePredicateNode(node)) { - let parameterName; - if (isIdentifier(node.parameterName)) { - const { node: result, introducesError } = trackExistingEntityName(node.parameterName, context); - hadError = hadError || introducesError; - parameterName = result; - } else { - parameterName = factory.cloneNode(node.parameterName); - } - return factory.updateTypePredicateNode(node, factory.cloneNode(node.assertsModifier), parameterName, visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); - } - if (isTupleTypeNode(node) || isTypeLiteralNode(node) || isMappedTypeNode(node)) { - const visited = visitEachChild2(node, visitExistingNodeTreeSymbols); - const clone2 = setTextRange2(context, visited === node ? factory.cloneNode(node) : visited, node); - const flags = getEmitFlags(clone2); - setEmitFlags(clone2, flags | (context.flags & 1024 /* MultilineObjectLiterals */ && isTypeLiteralNode(node) ? 0 : 1 /* SingleLine */)); - return clone2; - } - if (isStringLiteral(node) && !!(context.flags & 268435456 /* UseSingleQuotesForStringLiteralType */) && !node.singleQuote) { - const clone2 = factory.cloneNode(node); - clone2.singleQuote = true; - return clone2; - } - if (isConditionalTypeNode(node)) { - const checkType = visitNode(node.checkType, visitExistingNodeTreeSymbols, isTypeNode); - const disposeScope = onEnterNewScope(node); - const extendType = visitNode(node.extendsType, visitExistingNodeTreeSymbols, isTypeNode); - const trueType2 = visitNode(node.trueType, visitExistingNodeTreeSymbols, isTypeNode); - disposeScope(); - const falseType2 = visitNode(node.falseType, visitExistingNodeTreeSymbols, isTypeNode); - return factory.updateConditionalTypeNode( - node, - checkType, - extendType, - trueType2, - falseType2 - ); - } - if (isTypeOperatorNode(node)) { - if (node.operator === 158 /* UniqueKeyword */ && node.type.kind === 155 /* SymbolKeyword */) { - if (!canReuseTypeNode(context, node)) { - hadError = true; - return node; - } - } else if (node.operator === 143 /* KeyOfKeyword */) { - const result = tryVisitKeyOf(node); - if (!result) { - hadError = true; - return node; - } - return result; - } - } - return visitEachChild2(node, visitExistingNodeTreeSymbols); - function visitEachChild2(node2, visitor) { - const nonlocalNode = !context.enclosingFile || context.enclosingFile !== getSourceFileOfNode(node2); - return visitEachChild( - node2, - visitor, - /*context*/ - void 0, - nonlocalNode ? visitNodesWithoutCopyingPositions : void 0 - ); - } - function visitNodesWithoutCopyingPositions(nodes, visitor, test, start, count) { - let result = visitNodes2(nodes, visitor, test, start, count); - if (result) { - if (result.pos !== -1 || result.end !== -1) { - if (result === nodes) { - result = factory.createNodeArray(nodes.slice(), nodes.hasTrailingComma); - } - setTextRangePosEnd(result, -1, -1); - } - } - return result; - } - function getEffectiveDotDotDotForParameter(p) { - return p.dotDotDotToken || (p.type && isJSDocVariadicType(p.type) ? factory.createToken(26 /* DotDotDotToken */) : void 0); - } - function getNameForJSDocFunctionParameter(p, index) { - return p.name && isIdentifier(p.name) && p.name.escapedText === "this" ? "this" : getEffectiveDotDotDotForParameter(p) ? `args` : `arg${index}`; - } - function rewriteModuleSpecifier(parent2, lit) { - if (context.bundled || context.enclosingFile !== getSourceFileOfNode(lit)) { - let name = lit.text; - const nodeSymbol = getNodeLinks(node).resolvedSymbol; - const meaning = parent2.isTypeOf ? 111551 /* Value */ : 788968 /* Type */; - const parentSymbol = nodeSymbol && isSymbolAccessible( - nodeSymbol, - context.enclosingDeclaration, - meaning, - /*shouldComputeAliasesToMakeVisible*/ - false - ).accessibility === 0 /* Accessible */ && lookupSymbolChain( - nodeSymbol, - context, - meaning, - /*yieldModuleSymbol*/ - true - )[0]; - if (parentSymbol && isExternalModuleSymbol(parentSymbol)) { - name = getSpecifierForModuleSymbol(parentSymbol, context); - } else { - const targetFile = getExternalModuleFileFromDeclaration(parent2); - if (targetFile) { - name = getSpecifierForModuleSymbol(targetFile.symbol, context); - } - } - if (name.includes("/node_modules/")) { - context.encounteredError = true; - if (context.tracker.reportLikelyUnsafeImportRequiredError) { - context.tracker.reportLikelyUnsafeImportRequiredError(name); - } - } - if (name !== lit.text) { - return setOriginalNode(factory.createStringLiteral(name), lit); - } - } - return visitNode(lit, visitExistingNodeTreeSymbols, isStringLiteral); + if (addUndefined && !someType(type, (t) => !!(t.flags & 32768 /* Undefined */)) && canReuseTypeNode(context, typeNode)) { + const clone2 = syntacticNodeBuilder.tryReuseExistingTypeNode(context, typeNode); + if (clone2) { + return factory.createUnionTypeNode([clone2, factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); } } + return typeToTypeNodeHelper(type, context); } function symbolTableToDeclarationStatements(symbolTable, context) { var _a; @@ -57292,7 +57547,9 @@ function createTypeChecker(host) { const skipMembershipCheck = !isPrivate; if (skipMembershipCheck || !!length(symbol.declarations) && some(symbol.declarations, (d) => !!findAncestor(d, (n) => n === enclosingDeclaration))) { const scopeCleanup = cloneNodeBuilderContext(context); + context.tracker.pushErrorFallbackNode(find(symbol.declarations, (d) => getSourceFileOfNode(d) === context.enclosingFile)); serializeSymbolWorker(symbol, isPrivate, propertyAsAlias); + context.tracker.popErrorFallbackNode(); scopeCleanup(); } } @@ -57515,13 +57772,7 @@ function createTypeChecker(host) { context.flags |= 8388608 /* InTypeAlias */; const oldEnclosingDecl = context.enclosingDeclaration; context.enclosingDeclaration = jsdocAliasDecl; - const typeNode = jsdocAliasDecl && jsdocAliasDecl.typeExpression && isJSDocTypeExpression(jsdocAliasDecl.typeExpression) && tryReuseExistingNonParameterTypeNode( - context, - jsdocAliasDecl.typeExpression.type, - aliasType, - /*host*/ - void 0 - ) || typeToTypeNodeHelper(aliasType, context); + const typeNode = jsdocAliasDecl && jsdocAliasDecl.typeExpression && isJSDocTypeExpression(jsdocAliasDecl.typeExpression) && syntacticNodeBuilder.tryReuseExistingTypeNode(context, jsdocAliasDecl.typeExpression.type) || typeToTypeNodeHelper(aliasType, context); addResult( setSyntheticLeadingComments( factory.createTypeAliasDeclaration( @@ -57754,7 +58005,7 @@ function createTypeChecker(host) { } return cleanup(factory.createExpressionWithTypeArguments( expr, - map(e.typeArguments, (a) => tryReuseExistingNonParameterTypeNode(context, a, getTypeFromTypeNode2(context, a)) || typeToTypeNodeHelper(getTypeFromTypeNode2(context, a), context)) + map(e.typeArguments, (a) => syntacticNodeBuilder.tryReuseExistingTypeNode(context, a) || typeToTypeNodeHelper(getTypeFromTypeNode2(context, a), context)) )); function cleanup(result2) { context.enclosingDeclaration = oldEnclosing; @@ -57950,6 +58201,7 @@ function createTypeChecker(host) { ); break; } + // else fall through and treat commonjs require just like import= case 271 /* ImportEqualsDeclaration */: if (target.escapedName === "export=" /* ExportEquals */ && some(target.declarations, (d) => isSourceFile(d) && isJsonSourceFile(d))) { serializeMaybeAliasAssignment(symbol); @@ -58240,7 +58492,7 @@ function createTypeChecker(host) { } function makeSerializePropertySymbol(createProperty2, methodKind, useAccessors) { return function serializePropertySymbol(p, isStatic2, baseType) { - var _a2, _b, _c, _d, _e; + var _a2, _b, _c, _d, _e, _f; const modifierFlags = getDeclarationModifierFlagsFromSymbol(p); const isPrivate = !!(modifierFlags & 2 /* Private */); if (isStatic2 && p.flags & (788968 /* Type */ | 1920 /* Namespace */ | 2097152 /* Alias */)) { @@ -58270,6 +58522,7 @@ function createTypeChecker(host) { }); Debug.assert(!!setter); const paramSymbol = isFunctionLikeDeclaration(setter) ? getSignatureFromDeclaration(setter).parameters[0] : void 0; + const setterDeclaration = (_b = p.declarations) == null ? void 0 : _b.find(isSetAccessor); result.push(setTextRange2( context, factory.createSetAccessorDeclaration( @@ -58283,39 +58536,28 @@ function createTypeChecker(host) { paramSymbol ? parameterToParameterDeclarationName(paramSymbol, getEffectiveParameterDeclaration(paramSymbol), context) : "value", /*questionToken*/ void 0, - isPrivate ? void 0 : serializeTypeForDeclaration( - context, - /*declaration*/ - void 0, - getWriteTypeOfSymbol(p), - p - ) + isPrivate ? void 0 : serializeTypeForDeclaration(context, setterDeclaration, getWriteTypeOfSymbol(p), p) )], /*body*/ void 0 ), - ((_b = p.declarations) == null ? void 0 : _b.find(isSetAccessor)) || firstPropertyLikeDecl + setterDeclaration ?? firstPropertyLikeDecl )); } if (p.flags & 32768 /* GetAccessor */) { const isPrivate2 = modifierFlags & 2 /* Private */; + const getterDeclaration = (_c = p.declarations) == null ? void 0 : _c.find(isGetAccessor); result.push(setTextRange2( context, factory.createGetAccessorDeclaration( factory.createModifiersFromModifierFlags(flag), name, [], - isPrivate2 ? void 0 : serializeTypeForDeclaration( - context, - /*declaration*/ - void 0, - getTypeOfSymbol(p), - p - ), + isPrivate2 ? void 0 : serializeTypeForDeclaration(context, getterDeclaration, getTypeOfSymbol(p), p), /*body*/ void 0 ), - ((_c = p.declarations) == null ? void 0 : _c.find(isGetAccessor)) || firstPropertyLikeDecl + getterDeclaration ?? firstPropertyLikeDecl )); } return result; @@ -58326,19 +58568,13 @@ function createTypeChecker(host) { factory.createModifiersFromModifierFlags((isReadonlySymbol(p) ? 8 /* Readonly */ : 0) | flag), name, p.flags & 16777216 /* Optional */ ? factory.createToken(58 /* QuestionToken */) : void 0, - isPrivate ? void 0 : serializeTypeForDeclaration( - context, - /*declaration*/ - void 0, - getWriteTypeOfSymbol(p), - p - ), + isPrivate ? void 0 : serializeTypeForDeclaration(context, (_d = p.declarations) == null ? void 0 : _d.find(isSetAccessorDeclaration), getWriteTypeOfSymbol(p), p), // TODO: https://github.com/microsoft/TypeScript/pull/32372#discussion_r328386357 // interface members can't have initializers, however class members _can_ /*initializer*/ void 0 ), - ((_d = p.declarations) == null ? void 0 : _d.find(or(isPropertyDeclaration, isVariableDeclaration))) || firstPropertyLikeDecl + ((_e = p.declarations) == null ? void 0 : _e.find(or(isPropertyDeclaration, isVariableDeclaration))) || firstPropertyLikeDecl ); } if (p.flags & (8192 /* Method */ | 16 /* Function */)) { @@ -58356,7 +58592,7 @@ function createTypeChecker(host) { /*initializer*/ void 0 ), - ((_e = p.declarations) == null ? void 0 : _e.find(isFunctionLikeDeclaration)) || signatures[0] && signatures[0].declaration || p.declarations && p.declarations[0] + ((_f = p.declarations) == null ? void 0 : _f.find(isFunctionLikeDeclaration)) || signatures[0] && signatures[0].declaration || p.declarations && p.declarations[0] ); } const results2 = []; @@ -58399,7 +58635,7 @@ function createTypeChecker(host) { return []; } if (baseSigs.length === signatures.length) { - let failed = false; + let failed2 = false; for (let i = 0; i < baseSigs.length; i++) { if (!compareSignaturesIdentical( signatures[i], @@ -58412,11 +58648,11 @@ function createTypeChecker(host) { true, compareTypesIdentical )) { - failed = true; + failed2 = true; break; } } - if (!failed) { + if (!failed2) { return []; } } @@ -58722,6 +58958,7 @@ function createTypeChecker(host) { if (isBindingPattern(node.name) && !node.name.elements.length) { return false; } + // falls through case 267 /* ModuleDeclaration */: case 263 /* ClassDeclaration */: case 264 /* InterfaceDeclaration */: @@ -58746,6 +58983,8 @@ function createTypeChecker(host) { if (hasEffectiveModifier(node, 2 /* Private */ | 4 /* Protected */)) { return false; } + // Public properties/methods are visible if its parents are visible, so: + // falls through case 176 /* Constructor */: case 180 /* ConstructSignature */: case 179 /* CallSignature */: @@ -58763,14 +59002,20 @@ function createTypeChecker(host) { case 196 /* ParenthesizedType */: case 202 /* NamedTupleMember */: return isDeclarationVisible(node.parent); + // Default binding, import specifier and namespace import is visible + // only on demand so by default it is not visible case 273 /* ImportClause */: case 274 /* NamespaceImport */: case 276 /* ImportSpecifier */: return false; + // Type parameters are always visible case 168 /* TypeParameter */: + // Source file and namespace export are always visible + // falls through case 307 /* SourceFile */: case 270 /* NamespaceExportDeclaration */: return true; + // Export assignments do not create name bindings outside the module case 277 /* ExportAssignment */: return false; default: @@ -59580,7 +59825,7 @@ function createTypeChecker(host) { /*reportErrors*/ false ) : unknownType; - return addOptionality(widenTypeInferredFromInitializer(element, checkDeclarationInitializer(element, 0 /* Normal */, contextualType))); + return addOptionality(getWidenedLiteralTypeForInitializer(element, checkDeclarationInitializer(element, 0 /* Normal */, contextualType))); } if (isBindingPattern(element.name)) { return getTypeFromBindingPattern(element.name, includePatternInType, reportErrors2); @@ -59614,7 +59859,6 @@ function createTypeChecker(host) { const flags = 4 /* Property */ | (e.initializer ? 16777216 /* Optional */ : 0); const symbol = createSymbol(flags, text); symbol.links.type = getTypeFromBindingElement(e, includePatternInType, reportErrors2); - symbol.links.bindingElement = e; members.set(symbol.escapedName, symbol); }); const result = createAnonymousType( @@ -59859,7 +60103,7 @@ function createTypeChecker(host) { const getter = getDeclarationOfKind(symbol, 177 /* GetAccessor */); const setter = getDeclarationOfKind(symbol, 178 /* SetAccessor */); const accessor = tryCast(getDeclarationOfKind(symbol, 172 /* PropertyDeclaration */), isAutoAccessorPropertyDeclaration); - let type = getter && isInJSFile(getter) && getTypeForDeclarationFromJSDocComment(getter) || getAnnotatedAccessorType(getter) || getAnnotatedAccessorType(setter) || getAnnotatedAccessorType(accessor) || getter && getter.body && getReturnTypeFromBody(getter) || accessor && accessor.initializer && getWidenedTypeForVariableLikeDeclaration( + let type = getter && isInJSFile(getter) && getTypeForDeclarationFromJSDocComment(getter) || getAnnotatedAccessorType(getter) || getAnnotatedAccessorType(setter) || getAnnotatedAccessorType(accessor) || getter && getter.body && getReturnTypeFromBody(getter) || accessor && getWidenedTypeForVariableLikeDeclaration( accessor, /*reportErrors*/ true @@ -60715,11 +60959,20 @@ function createTypeChecker(host) { return type; } function isLateBindableName(node) { + return isLateBindableAST(node) && isTypeUsableAsPropertyName(isComputedPropertyName(node) ? checkComputedPropertyName(node) : checkExpressionCached(node.argumentExpression)); + } + function isLateBindableIndexSignature(node) { + return isLateBindableAST(node) && isTypeUsableAsIndexSignature(isComputedPropertyName(node) ? checkComputedPropertyName(node) : checkExpressionCached(node.argumentExpression)); + } + function isLateBindableAST(node) { if (!isComputedPropertyName(node) && !isElementAccessExpression(node)) { return false; } const expr = isComputedPropertyName(node) ? node.expression : node.argumentExpression; - return isEntityNameExpression(expr) && isTypeUsableAsPropertyName(isComputedPropertyName(node) ? checkComputedPropertyName(node) : checkExpressionCached(expr)); + return isEntityNameExpression(expr); + } + function isTypeUsableAsIndexSignature(type) { + return isTypeAssignableTo(type, stringNumberSymbolType); } function isLateBoundName(name) { return name.charCodeAt(0) === 95 /* _ */ && name.charCodeAt(1) === 95 /* _ */ && name.charCodeAt(2) === 64 /* at */; @@ -60728,6 +60981,10 @@ function createTypeChecker(host) { const name = getNameOfDeclaration(node); return !!name && isLateBindableName(name); } + function hasLateBindableIndexSignature(node) { + const name = getNameOfDeclaration(node); + return !!name && isLateBindableIndexSignature(name); + } function hasBindableName(node) { return !hasDynamicName(node) || hasLateBindableName(node); } @@ -60781,6 +61038,24 @@ function createTypeChecker(host) { } return links.resolvedSymbol; } + function lateBindIndexSignature(parent2, earlySymbols, lateSymbols, decl) { + let indexSymbol = lateSymbols.get("__index" /* Index */); + if (!indexSymbol) { + const early = earlySymbols == null ? void 0 : earlySymbols.get("__index" /* Index */); + if (!early) { + indexSymbol = createSymbol(0 /* None */, "__index" /* Index */, 4096 /* Late */); + } else { + indexSymbol = cloneSymbol(early); + indexSymbol.links.checkFlags |= 4096 /* Late */; + } + lateSymbols.set("__index" /* Index */, indexSymbol); + } + if (!indexSymbol.declarations) { + indexSymbol.declarations = [decl]; + } else if (!decl.symbol.isReplaceableByMethod) { + indexSymbol.declarations.push(decl); + } + } function getResolvedMembersOrExportsOfSymbol(symbol, resolutionKind) { const links = getSymbolLinks(symbol); if (!links[resolutionKind]) { @@ -60795,6 +61070,8 @@ function createTypeChecker(host) { if (isStatic2 === hasStaticModifier(member)) { if (hasLateBindableName(member)) { lateBindMember(symbol, earlySymbols, lateSymbols, member); + } else if (hasLateBindableIndexSignature(member)) { + lateBindIndexSignature(symbol, earlySymbols, lateSymbols, member); } } } @@ -60925,7 +61202,7 @@ function createTypeChecker(host) { resolveObjectTypeMembers(type, source, typeParameters, paddedTypeArguments); } function createSignature(declaration, typeParameters, thisParameter, parameters, resolvedReturnType, resolvedTypePredicate, minArgumentCount, flags) { - const sig = new Signature14(checker, flags); + const sig = new Signature13(checker, flags); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; @@ -61252,8 +61529,13 @@ function createTypeChecker(host) { if (left.typeParameters && right.typeParameters) { paramMapper = createTypeMapper(right.typeParameters, left.typeParameters); } + let flags = (left.flags | right.flags) & (167 /* PropagatingFlags */ & ~1 /* HasRestParameter */); const declaration = left.declaration; const params = combineUnionParameters(left, right, paramMapper); + const lastParam = lastOrUndefined(params); + if (lastParam && getCheckFlags(lastParam) & 32768 /* RestParameter */) { + flags |= 1 /* HasRestParameter */; + } const thisParam = combineUnionThisParam(left.thisParameter, right.thisParameter, paramMapper); const minArgCount = Math.max(left.minArgumentCount, right.minArgumentCount); const result = createSignature( @@ -61266,7 +61548,7 @@ function createTypeChecker(host) { /*resolvedTypePredicate*/ void 0, minArgCount, - (left.flags | right.flags) & 167 /* PropagatingFlags */ + flags ); result.compositeKind = 1048576 /* Union */; result.compositeSignatures = concatenate(left.compositeKind !== 2097152 /* Intersection */ && left.compositeSignatures || [left], [right]); @@ -61439,7 +61721,7 @@ function createTypeChecker(host) { } const indexSymbol = getIndexSymbolFromSymbolTable(members); if (indexSymbol) { - indexInfos = getIndexInfosOfIndexSymbol(indexSymbol); + indexInfos = getIndexInfosOfIndexSymbol(indexSymbol, arrayFrom(members.values())); } else { if (baseConstructorIndexInfo) { indexInfos = append(indexInfos, baseConstructorIndexInfo); @@ -63058,7 +63340,7 @@ function createTypeChecker(host) { return signature.isolatedSignatureType; } function getIndexSymbol(symbol) { - return symbol.members ? getIndexSymbolFromSymbolTable(symbol.members) : void 0; + return symbol.members ? getIndexSymbolFromSymbolTable(getMembersOfSymbol(symbol)) : void 0; } function getIndexSymbolFromSymbolTable(symbolTable) { return symbolTable.get("__index" /* Index */); @@ -63068,23 +63350,61 @@ function createTypeChecker(host) { } function getIndexInfosOfSymbol(symbol) { const indexSymbol = getIndexSymbol(symbol); - return indexSymbol ? getIndexInfosOfIndexSymbol(indexSymbol) : emptyArray; + return indexSymbol ? getIndexInfosOfIndexSymbol(indexSymbol, arrayFrom(getMembersOfSymbol(symbol).values())) : emptyArray; } - function getIndexInfosOfIndexSymbol(indexSymbol) { + function getIndexInfosOfIndexSymbol(indexSymbol, siblingSymbols = indexSymbol.parent ? arrayFrom(getMembersOfSymbol(indexSymbol.parent).values()) : void 0) { if (indexSymbol.declarations) { const indexInfos = []; + let hasComputedNumberProperty = false; + let readonlyComputedNumberProperty = true; + let hasComputedSymbolProperty = false; + let readonlyComputedSymbolProperty = true; + let hasComputedStringProperty = false; + let readonlyComputedStringProperty = true; + const computedPropertySymbols = []; for (const declaration of indexSymbol.declarations) { - if (declaration.parameters.length === 1) { - const parameter = declaration.parameters[0]; - if (parameter.type) { - forEachType(getTypeFromTypeNode(parameter.type), (keyType) => { - if (isValidIndexKeyType(keyType) && !findIndexInfo(indexInfos, keyType)) { - indexInfos.push(createIndexInfo(keyType, declaration.type ? getTypeFromTypeNode(declaration.type) : anyType, hasEffectiveModifier(declaration, 8 /* Readonly */), declaration)); + if (isIndexSignatureDeclaration(declaration)) { + if (declaration.parameters.length === 1) { + const parameter = declaration.parameters[0]; + if (parameter.type) { + forEachType(getTypeFromTypeNode(parameter.type), (keyType) => { + if (isValidIndexKeyType(keyType) && !findIndexInfo(indexInfos, keyType)) { + indexInfos.push(createIndexInfo(keyType, declaration.type ? getTypeFromTypeNode(declaration.type) : anyType, hasEffectiveModifier(declaration, 8 /* Readonly */), declaration)); + } + }); + } + } + } else if (hasLateBindableIndexSignature(declaration)) { + const declName = isBinaryExpression(declaration) ? declaration.left : declaration.name; + const keyType = isElementAccessExpression(declName) ? checkExpressionCached(declName.argumentExpression) : checkComputedPropertyName(declName); + if (findIndexInfo(indexInfos, keyType)) { + continue; + } + if (isTypeAssignableTo(keyType, stringNumberSymbolType)) { + if (isTypeAssignableTo(keyType, numberType)) { + hasComputedNumberProperty = true; + if (!hasEffectiveReadonlyModifier(declaration)) { + readonlyComputedNumberProperty = false; } - }); + } else if (isTypeAssignableTo(keyType, esSymbolType)) { + hasComputedSymbolProperty = true; + if (!hasEffectiveReadonlyModifier(declaration)) { + readonlyComputedSymbolProperty = false; + } + } else { + hasComputedStringProperty = true; + if (!hasEffectiveReadonlyModifier(declaration)) { + readonlyComputedStringProperty = false; + } + } + computedPropertySymbols.push(declaration.symbol); } } } + const allPropertySymbols = concatenate(computedPropertySymbols, filter(siblingSymbols, (s) => s !== indexSymbol)); + if (hasComputedStringProperty && !findIndexInfo(indexInfos, stringType)) indexInfos.push(getObjectLiteralIndexInfo(readonlyComputedStringProperty, 0, allPropertySymbols, stringType)); + if (hasComputedNumberProperty && !findIndexInfo(indexInfos, numberType)) indexInfos.push(getObjectLiteralIndexInfo(readonlyComputedNumberProperty, 0, allPropertySymbols, numberType)); + if (hasComputedSymbolProperty && !findIndexInfo(indexInfos, esSymbolType)) indexInfos.push(getObjectLiteralIndexInfo(readonlyComputedSymbolProperty, 0, allPropertySymbols, esSymbolType)); return indexInfos; } return emptyArray; @@ -65928,7 +66248,7 @@ function createTypeChecker(host) { const links = getNodeLinks(node); if (!links.resolvedType) { const aliasSymbol = getAliasSymbolForTypeNode(node); - if (getMembersOfSymbol(node.symbol).size === 0 && !aliasSymbol) { + if (!node.symbol || getMembersOfSymbol(node.symbol).size === 0 && !aliasSymbol) { links.resolvedType = emptyTypeLiteralType; } else { let type = createObjectType(16 /* Anonymous */, node.symbol); @@ -66320,6 +66640,9 @@ function createTypeChecker(host) { return getTypeFromTemplateTypeNode(node); case 205 /* ImportType */: return getTypeFromImportTypeNode(node); + // This function assumes that an identifier, qualified name, or property access expression is a type expression + // Callers should first ensure this by calling `isPartOfTypeNode` + // TODO(rbuckton): These aren't valid TypeNodes, but we treat them as such because of `isPartOfTypeNode`, which returns `true` for things that aren't `TypeNode`s. case 80 /* Identifier */: case 166 /* QualifiedName */: case 211 /* PropertyAccessExpression */: @@ -66567,6 +66890,7 @@ function createTypeChecker(host) { return !!tp.isThisType; case 80 /* Identifier */: return !tp.isThisType && isPartOfTypeNode(node2) && maybeTypeParameterReference(node2) && getTypeFromTypeNodeWorker(node2) === tp; + // use worker because we're looking for === equality case 186 /* TypeQuery */: const entityName = node2.exprName; const firstIdentifier = getFirstIdentifier(entityName); @@ -66986,6 +67310,7 @@ function createTypeChecker(host) { if (!isConstAssertion(node)) { break; } + // fallthrough case 294 /* JsxExpression */: case 217 /* ParenthesizedExpression */: return elaborateError(node.expression, source, target, relation, headMessage, containingMessageChain, errorOutputContainer); @@ -68081,7 +68406,7 @@ function createTypeChecker(host) { const [sourceType, targetType] = getTypeNamesForErrorDisplay(source2, target2); let generalizedSource = source2; let generalizedSourceType = sourceType; - if (isLiteralType(source2) && !typeCouldHaveTopLevelSingletonTypes(target2)) { + if (!(target2.flags & 131072 /* Never */) && isLiteralType(source2) && !typeCouldHaveTopLevelSingletonTypes(target2)) { generalizedSource = getBaseTypeOfLiteralType(source2); Debug.assert(!isTypeAssignableTo(generalizedSource, target2), "generalized source shouldn't be assignable"); generalizedSourceType = getTypeNameForErrorDisplay(generalizedSource); @@ -71113,7 +71438,7 @@ function createTypeChecker(host) { case 219 /* ArrowFunction */: if (noImplicitAny && !declaration.name) { if (wideningKind === 3 /* GeneratorYield */) { - error2(declaration, Diagnostics.Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation, typeAsString); + error2(declaration, Diagnostics.Generator_implicitly_has_yield_type_0_Consider_supplying_a_return_type_annotation, typeAsString); } else { error2(declaration, Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); } @@ -71131,11 +71456,37 @@ function createTypeChecker(host) { } errorOrSuggestion(noImplicitAny, declaration, diagnostic, declarationNameToString(getNameOfDeclaration(declaration)), typeAsString); } + function shouldReportErrorsFromWideningWithContextualSignature(declaration, wideningKind) { + const signature = getContextualSignatureForFunctionLikeDeclaration(declaration); + if (!signature) { + return true; + } + let returnType = getReturnTypeOfSignature(signature); + const flags = getFunctionFlags(declaration); + switch (wideningKind) { + case 1 /* FunctionReturn */: + if (flags & 1 /* Generator */) { + returnType = getIterationTypeOfGeneratorFunctionReturnType(1 /* Return */, returnType, !!(flags & 2 /* Async */)) ?? returnType; + } else if (flags & 2 /* Async */) { + returnType = getAwaitedTypeNoAlias(returnType) ?? returnType; + } + return isGenericType(returnType); + case 3 /* GeneratorYield */: + const yieldType = getIterationTypeOfGeneratorFunctionReturnType(0 /* Yield */, returnType, !!(flags & 2 /* Async */)); + return !!yieldType && isGenericType(yieldType); + case 2 /* GeneratorNext */: + const nextType = getIterationTypeOfGeneratorFunctionReturnType(2 /* Next */, returnType, !!(flags & 2 /* Async */)); + return !!nextType && isGenericType(nextType); + } + return false; + } function reportErrorsFromWidening(declaration, type, wideningKind) { addLazyDiagnostic(() => { - if (noImplicitAny && getObjectFlags(type) & 65536 /* ContainsWideningType */ && (!wideningKind || !getContextualSignatureForFunctionLikeDeclaration(declaration))) { - if (!reportWideningErrorsInType(type)) { - reportImplicitAny(declaration, type, wideningKind); + if (noImplicitAny && getObjectFlags(type) & 65536 /* ContainsWideningType */) { + if (!wideningKind || isFunctionLikeDeclaration(declaration) && shouldReportErrorsFromWideningWithContextualSignature(declaration, wideningKind)) { + if (!reportWideningErrorsInType(type)) { + reportImplicitAny(declaration, type, wideningKind); + } } } }); @@ -72305,6 +72656,7 @@ function createTypeChecker(host) { if (isCallExpression(node.parent)) { return Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function; } + // falls through default: if (node.parent.kind === 304 /* ShorthandPropertyAssignment */) { return Diagnostics.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer; @@ -72338,6 +72690,7 @@ function createTypeChecker(host) { const symbol = getResolvedSymbol(node); return symbol !== unknownSymbol ? `${flowContainer ? getNodeId(flowContainer) : "-1"}|${getTypeId(declaredType)}|${getTypeId(initialType)}|${getSymbolId(symbol)}` : void 0; } + // falls through case 110 /* ThisKeyword */: return `0|${flowContainer ? getNodeId(flowContainer) : "-1"}|${getTypeId(declaredType)}|${getTypeId(initialType)}`; case 235 /* NonNullExpression */: @@ -73891,6 +74244,9 @@ function createTypeChecker(host) { break; case 28 /* CommaToken */: return narrowType(type, expr.right, assumeTrue); + // Ordinarily we won't see && and || expressions in control flow analysis because the Binder breaks those + // expressions down to individual conditional control flows. However, we may encounter them when analyzing + // aliased conditional expressions. case 56 /* AmpersandAmpersandToken */: return assumeTrue ? narrowType( narrowType( @@ -74334,6 +74690,7 @@ function createTypeChecker(host) { } } } + // falls through case 110 /* ThisKeyword */: case 108 /* SuperKeyword */: case 211 /* PropertyAccessExpression */: @@ -74394,6 +74751,12 @@ function createTypeChecker(host) { function getControlFlowContainer(node) { return findAncestor(node.parent, (node2) => isFunctionLike(node2) && !getImmediatelyInvokedFunctionExpression(node2) || node2.kind === 268 /* ModuleBlock */ || node2.kind === 307 /* SourceFile */ || node2.kind === 172 /* PropertyDeclaration */); } + function isSymbolAssignedDefinitely(symbol) { + if (symbol.lastAssignmentPos !== void 0) { + return symbol.lastAssignmentPos < 0; + } + return isSymbolAssigned(symbol) && symbol.lastAssignmentPos !== void 0 && symbol.lastAssignmentPos < 0; + } function isSymbolAssigned(symbol) { return !isPastLastAssignment( symbol, @@ -74413,7 +74776,7 @@ function createTypeChecker(host) { markNodeAssignments(parent2); } } - return !symbol.lastAssignmentPos || location && symbol.lastAssignmentPos < location.pos; + return !symbol.lastAssignmentPos || location && Math.abs(symbol.lastAssignmentPos) < location.pos; } function isSomeSymbolAssigned(rootDeclaration) { Debug.assert(isVariableDeclaration(rootDeclaration) || isParameter(rootDeclaration)); @@ -74434,12 +74797,19 @@ function createTypeChecker(host) { function markNodeAssignments(node) { switch (node.kind) { case 80 /* Identifier */: - if (isAssignmentTarget(node)) { + const assigmentTarget = getAssignmentTargetKind(node); + if (assigmentTarget !== 0 /* None */) { const symbol = getResolvedSymbol(node); - if (isParameterOrMutableLocalVariable(symbol) && symbol.lastAssignmentPos !== Number.MAX_VALUE) { - const referencingFunction = findAncestor(node, isFunctionOrSourceFile); - const declaringFunction = findAncestor(symbol.valueDeclaration, isFunctionOrSourceFile); - symbol.lastAssignmentPos = referencingFunction === declaringFunction ? extendAssignmentPosition(node, symbol.valueDeclaration) : Number.MAX_VALUE; + const hasDefiniteAssignment = assigmentTarget === 1 /* Definite */ || symbol.lastAssignmentPos !== void 0 && symbol.lastAssignmentPos < 0; + if (isParameterOrMutableLocalVariable(symbol)) { + if (symbol.lastAssignmentPos === void 0 || Math.abs(symbol.lastAssignmentPos) !== Number.MAX_VALUE) { + const referencingFunction = findAncestor(node, isFunctionOrSourceFile); + const declaringFunction = findAncestor(symbol.valueDeclaration, isFunctionOrSourceFile); + symbol.lastAssignmentPos = referencingFunction === declaringFunction ? extendAssignmentPosition(node, symbol.valueDeclaration) : Number.MAX_VALUE; + } + if (hasDefiniteAssignment && symbol.lastAssignmentPos > 0) { + symbol.lastAssignmentPos *= -1; + } } } return; @@ -74456,7 +74826,8 @@ function createTypeChecker(host) { true ); if (symbol && isParameterOrMutableLocalVariable(symbol)) { - symbol.lastAssignmentPos = Number.MAX_VALUE; + const sign = symbol.lastAssignmentPos !== void 0 && symbol.lastAssignmentPos < 0 ? -1 : 1; + symbol.lastAssignmentPos = sign * Number.MAX_VALUE; } } return; @@ -74689,7 +75060,7 @@ function createTypeChecker(host) { } function markJsxAliasReferenced(node) { if (!getJsxNamespaceContainerForImplicitImport(node)) { - const jsxFactoryRefErr = diagnostics && compilerOptions.jsx === 2 /* React */ ? Diagnostics.Cannot_find_name_0 : void 0; + const jsxFactoryRefErr = diagnostics && compilerOptions.jsx === 2 /* React */ ? Diagnostics.This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found : void 0; const jsxFactoryNamespace = getJsxNamespace(node); const jsxFactoryLocation = isJsxOpeningLikeElement(node) ? node.tagName : node; let jsxFactorySym; @@ -74697,7 +75068,7 @@ function createTypeChecker(host) { jsxFactorySym = resolveName( jsxFactoryLocation, jsxFactoryNamespace, - 111551 /* Value */, + compilerOptions.jsx === 1 /* Preserve */ ? 111551 /* Value */ & ~384 /* Enum */ : 111551 /* Value */, jsxFactoryRefErr, /*isUse*/ true @@ -74716,7 +75087,7 @@ function createTypeChecker(host) { resolveName( jsxFactoryLocation, localJsxNamespace, - 111551 /* Value */, + compilerOptions.jsx === 1 /* Preserve */ ? 111551 /* Value */ & ~384 /* Enum */ : 111551 /* Value */, jsxFactoryRefErr, /*isUse*/ true @@ -75040,6 +75411,7 @@ function createTypeChecker(host) { } const localOrExportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); let declaration = localOrExportSymbol.valueDeclaration; + const immediateDeclaration = declaration; if (declaration && declaration.kind === 208 /* BindingElement */ && contains(contextualBindingPatterns, declaration.parent) && findAncestor(node, (parent2) => parent2 === declaration.parent)) { return nonInferrableAnyType; } @@ -75085,7 +75457,8 @@ function createTypeChecker(host) { while (flowContainer !== declarationContainer && (flowContainer.kind === 218 /* FunctionExpression */ || flowContainer.kind === 219 /* ArrowFunction */ || isObjectLiteralOrClassExpressionMethodOrAccessor(flowContainer)) && (isConstantVariable(localOrExportSymbol) && type !== autoArrayType || isParameterOrMutableLocalVariable(localOrExportSymbol) && isPastLastAssignment(localOrExportSymbol, node))) { flowContainer = getControlFlowContainer(flowContainer); } - const assumeInitialized = isParameter2 || isAlias || isOuterVariable || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 281 /* ExportSpecifier */) || node.parent.kind === 235 /* NonNullExpression */ || declaration.kind === 260 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 33554432 /* Ambient */; + const isNeverInitialized = immediateDeclaration && isVariableDeclaration(immediateDeclaration) && !immediateDeclaration.initializer && !immediateDeclaration.exclamationToken && isMutableLocalVariableDeclaration(immediateDeclaration) && !isSymbolAssignedDefinitely(symbol); + const assumeInitialized = isParameter2 || isAlias || isOuterVariable && !isNeverInitialized || isSpreadDestructuringAssignmentTarget || isModuleExports || isSameScopedBindingElement(node, declaration) || type !== autoType && type !== autoArrayType && (!strictNullChecks || (type.flags & (3 /* AnyOrUnknown */ | 16384 /* Void */)) !== 0 || isInTypeQuery(node) || isInAmbientOrTypeNode(node) || node.parent.kind === 281 /* ExportSpecifier */) || node.parent.kind === 235 /* NonNullExpression */ || declaration.kind === 260 /* VariableDeclaration */ && declaration.exclamationToken || declaration.flags & 33554432 /* Ambient */; const initialType = isAutomaticTypeInNonNull ? undefinedType : assumeInitialized ? isParameter2 ? removeOptionalityFromDeclaredType(type, declaration) : type : typeIsAutomatic ? undefinedType : getOptionalType(type); const flowType = isAutomaticTypeInNonNull ? getNonNullableType(getFlowTypeOfReference(node, type, initialType, flowContainer)) : getFlowTypeOfReference(node, type, initialType, flowContainer); if (!isEvolvingArrayOperationTarget(node) && (type === autoType || type === autoArrayType)) { @@ -75990,46 +76363,108 @@ function createTypeChecker(host) { function isCircularMappedProperty(symbol) { return !!(getCheckFlags(symbol) & 262144 /* Mapped */ && !symbol.links.type && findResolutionCycleStartIndex(symbol, 0 /* Type */) >= 0); } + function isExcludedMappedPropertyName(constraint, propertyNameType) { + if (constraint.flags & 16777216 /* Conditional */) { + const type = constraint; + return !!(getReducedType(getTrueTypeFromConditionalType(type)).flags & 131072 /* Never */) && getActualTypeVariable(getFalseTypeFromConditionalType(type)) === getActualTypeVariable(type.checkType) && isTypeAssignableTo(propertyNameType, type.extendsType); + } + if (constraint.flags & 2097152 /* Intersection */) { + return some(constraint.types, (t) => isExcludedMappedPropertyName(t, propertyNameType)); + } + return false; + } function getTypeOfPropertyOfContextualType(type, name, nameType) { return mapType( type, (t) => { - var _a; - if (isGenericMappedType(t) && getMappedTypeNameTypeKind(t) !== 2 /* Remapping */) { - const constraint = getConstraintTypeFromMappedType(t); - const constraintOfConstraint = getBaseConstraintOfType(constraint) || constraint; - const propertyNameType = nameType || getStringLiteralType(unescapeLeadingUnderscores(name)); - if (isTypeAssignableTo(propertyNameType, constraintOfConstraint)) { - return substituteIndexedMappedType(t, propertyNameType); - } - } else if (t.flags & 3670016 /* StructuredType */) { - const prop = getPropertyOfType(t, name); - if (prop) { - return isCircularMappedProperty(prop) ? void 0 : removeMissingType(getTypeOfSymbol(prop), !!(prop.flags & 16777216 /* Optional */)); + if (t.flags & 2097152 /* Intersection */) { + let types; + let indexInfoCandidates; + let ignoreIndexInfos = false; + for (const constituentType of t.types) { + if (!(constituentType.flags & 524288 /* Object */)) { + continue; + } + if (isGenericMappedType(constituentType) && getMappedTypeNameTypeKind(constituentType) !== 2 /* Remapping */) { + const substitutedType = getIndexedMappedTypeSubstitutedTypeOfContextualType(constituentType, name, nameType); + types = appendContextualPropertyTypeConstituent(types, substitutedType); + continue; + } + const propertyType = getTypeOfConcretePropertyOfContextualType(constituentType, name); + if (!propertyType) { + if (!ignoreIndexInfos) { + indexInfoCandidates = append(indexInfoCandidates, constituentType); + } + continue; + } + ignoreIndexInfos = true; + indexInfoCandidates = void 0; + types = appendContextualPropertyTypeConstituent(types, propertyType); } - if (isTupleType(t) && isNumericLiteralName(name) && +name >= 0) { - const restType = getElementTypeOfSliceOfTupleType( - t, - t.target.fixedLength, - /*endSkipCount*/ - 0, - /*writing*/ - false, - /*noReductions*/ - true - ); - if (restType) { - return restType; + if (indexInfoCandidates) { + for (const candidate of indexInfoCandidates) { + const indexInfoType = getTypeFromIndexInfosOfContextualType(candidate, name, nameType); + types = appendContextualPropertyTypeConstituent(types, indexInfoType); } } - return (_a = findApplicableIndexInfo(getIndexInfosOfStructuredType(t), nameType || getStringLiteralType(unescapeLeadingUnderscores(name)))) == null ? void 0 : _a.type; + if (!types) { + return; + } + if (types.length === 1) { + return types[0]; + } + return getIntersectionType(types); } - return void 0; + if (!(t.flags & 524288 /* Object */)) { + return; + } + return isGenericMappedType(t) && getMappedTypeNameTypeKind(t) !== 2 /* Remapping */ ? getIndexedMappedTypeSubstitutedTypeOfContextualType(t, name, nameType) : getTypeOfConcretePropertyOfContextualType(t, name) ?? getTypeFromIndexInfosOfContextualType(t, name, nameType); }, /*noReductions*/ true ); } + function appendContextualPropertyTypeConstituent(types, type) { + return type ? append(types, type.flags & 1 /* Any */ ? unknownType : type) : types; + } + function getIndexedMappedTypeSubstitutedTypeOfContextualType(type, name, nameType) { + const propertyNameType = nameType || getStringLiteralType(unescapeLeadingUnderscores(name)); + const constraint = getConstraintTypeFromMappedType(type); + if (type.nameType && isExcludedMappedPropertyName(type.nameType, propertyNameType) || isExcludedMappedPropertyName(constraint, propertyNameType)) { + return; + } + const constraintOfConstraint = getBaseConstraintOfType(constraint) || constraint; + if (!isTypeAssignableTo(propertyNameType, constraintOfConstraint)) { + return; + } + return substituteIndexedMappedType(type, propertyNameType); + } + function getTypeOfConcretePropertyOfContextualType(type, name) { + const prop = getPropertyOfType(type, name); + if (!prop || isCircularMappedProperty(prop)) { + return; + } + return removeMissingType(getTypeOfSymbol(prop), !!(prop.flags & 16777216 /* Optional */)); + } + function getTypeFromIndexInfosOfContextualType(type, name, nameType) { + var _a; + if (isTupleType(type) && isNumericLiteralName(name) && +name >= 0) { + const restType = getElementTypeOfSliceOfTupleType( + type, + type.target.fixedLength, + /*endSkipCount*/ + 0, + /*writing*/ + false, + /*noReductions*/ + true + ); + if (restType) { + return restType; + } + } + return (_a = findApplicableIndexInfo(getIndexInfosOfStructuredType(type), nameType || getStringLiteralType(unescapeLeadingUnderscores(name)))) == null ? void 0 : _a.type; + } function getContextualTypeForObjectLiteralMethod(node, contextFlags) { Debug.assert(isObjectLiteralMethod(node)); if (node.flags & 67108864 /* InWithStatement */) { @@ -76442,7 +76877,7 @@ function createTypeChecker(host) { return getContextualTypeForArgumentAtIndex(node, 0); } function getEffectiveFirstArgumentForJsxSignature(signature, node) { - return getJsxReferenceKind(node) !== 0 /* Component */ ? getJsxPropsTypeFromCallSignature(signature, node) : getJsxPropsTypeFromClassType(signature, node); + return isJsxOpeningFragment(node) || getJsxReferenceKind(node) !== 0 /* Component */ ? getJsxPropsTypeFromCallSignature(signature, node) : getJsxPropsTypeFromClassType(signature, node); } function getJsxPropsTypeFromCallSignature(sig, context) { let propsType = getTypeOfFirstParameterOfSignatureWithFallback(sig, unknownType); @@ -76473,6 +76908,7 @@ function createTypeChecker(host) { return isTypeAny(instanceType) ? instanceType : getTypeOfPropertyOfType(instanceType, forcedLookupLocation); } function getStaticTypeOfReferencedJsxConstructor(context) { + if (isJsxOpeningFragment(context)) return getJSXFragmentType(context); if (isJsxIntrinsicTagName(context.tagName)) { const result = getIntrinsicAttributesTypeFromJsxOpeningLikeElement(context); const fakeSignature = createSignatureForJSXIntrinsic(context, result); @@ -76572,13 +77008,14 @@ function createTypeChecker(host) { const paramName = leftName === rightName ? leftName : !leftName ? rightName : !rightName ? leftName : void 0; const paramSymbol = createSymbol( 1 /* FunctionScopedVariable */ | (isOptional && !isRestParam ? 16777216 /* Optional */ : 0), - paramName || `arg${i}` + paramName || `arg${i}`, + isRestParam ? 32768 /* RestParameter */ : isOptional ? 16384 /* OptionalParameter */ : 0 ); paramSymbol.links.type = isRestParam ? createArrayType(unionParamType) : unionParamType; params[i] = paramSymbol; } if (needsExtraRestElement) { - const restParamSymbol = createSymbol(1 /* FunctionScopedVariable */, "args"); + const restParamSymbol = createSymbol(1 /* FunctionScopedVariable */, "args", 32768 /* RestParameter */); restParamSymbol.links.type = createArrayType(getTypeAtPosition(shorter, longestCount)); if (shorter === right) { restParamSymbol.links.type = instantiateType(restParamSymbol.links.type, mapper); @@ -76593,8 +77030,13 @@ function createTypeChecker(host) { if (left.typeParameters && right.typeParameters) { paramMapper = createTypeMapper(right.typeParameters, left.typeParameters); } + let flags = (left.flags | right.flags) & (167 /* PropagatingFlags */ & ~1 /* HasRestParameter */); const declaration = left.declaration; const params = combineIntersectionParameters(left, right, paramMapper); + const lastParam = lastOrUndefined(params); + if (lastParam && getCheckFlags(lastParam) & 32768 /* RestParameter */) { + flags |= 1 /* HasRestParameter */; + } const thisParam = combineIntersectionThisParam(left.thisParameter, right.thisParameter, paramMapper); const minArgCount = Math.max(left.minArgumentCount, right.minArgumentCount); const result = createSignature( @@ -76607,7 +77049,7 @@ function createTypeChecker(host) { /*resolvedTypePredicate*/ void 0, minArgCount, - (left.flags | right.flags) & 167 /* PropagatingFlags */ + flags ); result.compositeKind = 2097152 /* Intersection */; result.compositeSignatures = concatenate(left.compositeKind === 2097152 /* Intersection */ && left.compositeSignatures || [left], [right]); @@ -76726,7 +77168,7 @@ function createTypeChecker(host) { return globalRegExpType; } function checkSpreadExpression(node, checkMode) { - if (languageVersion < 2 /* SpreadElements */) { + if (languageVersion < LanguageFeatureMinimumTarget.SpreadElements) { checkExternalEmitHelpers(node, compilerOptions.downlevelIteration ? 1536 /* SpreadIncludes */ : 1024 /* SpreadArray */); } const arrayOrIterableType = checkExpression(node.expression, checkMode); @@ -76760,7 +77202,7 @@ function createTypeChecker(host) { for (let i = 0; i < elementCount; i++) { const e = elements[i]; if (e.kind === 230 /* SpreadElement */) { - if (languageVersion < 2 /* SpreadElements */) { + if (languageVersion < LanguageFeatureMinimumTarget.SpreadElements) { checkExternalEmitHelpers(e, compilerOptions.downlevelIteration ? 1536 /* SpreadIncludes */ : 1024 /* SpreadArray */); } const spreadType = checkExpression(e.expression, checkMode, forceTuple); @@ -76879,7 +77321,7 @@ function createTypeChecker(host) { const firstDecl = (_a = symbol.declarations) == null ? void 0 : _a[0]; return isKnownSymbol(symbol) || firstDecl && isNamedDeclaration(firstDecl) && isComputedPropertyName(firstDecl.name) && isTypeAssignableToKind(checkComputedPropertyName(firstDecl.name), 4096 /* ESSymbol */); } - function getObjectLiteralIndexInfo(node, offset, properties, keyType) { + function getObjectLiteralIndexInfo(isReadonly, offset, properties, keyType) { const propTypes = []; for (let i = offset; i < properties.length; i++) { const prop = properties[i]; @@ -76888,7 +77330,7 @@ function createTypeChecker(host) { } } const unionType = propTypes.length ? getUnionType(propTypes, 2 /* Subtype */) : undefinedType; - return createIndexInfo(keyType, unionType, isConstContext(node)); + return createIndexInfo(keyType, unionType, isReadonly); } function getImmediateAliasedSymbol(symbol) { Debug.assert((symbol.flags & 2097152 /* Alias */) !== 0, "Should only get Alias here."); @@ -76985,7 +77427,7 @@ function createTypeChecker(host) { addIntraExpressionInferenceSite(inferenceContext, inferenceNode, type); } } else if (memberDecl.kind === 305 /* SpreadAssignment */) { - if (languageVersion < 2 /* ObjectAssign */) { + if (languageVersion < LanguageFeatureMinimumTarget.ObjectAssign) { checkExternalEmitHelpers(memberDecl, 2 /* Assign */); } if (propertiesArray.length > 0) { @@ -77051,9 +77493,10 @@ function createTypeChecker(host) { return createObjectLiteralType(); function createObjectLiteralType() { const indexInfos = []; - if (hasComputedStringProperty) indexInfos.push(getObjectLiteralIndexInfo(node, offset, propertiesArray, stringType)); - if (hasComputedNumberProperty) indexInfos.push(getObjectLiteralIndexInfo(node, offset, propertiesArray, numberType)); - if (hasComputedSymbolProperty) indexInfos.push(getObjectLiteralIndexInfo(node, offset, propertiesArray, esSymbolType)); + const isReadonly = isConstContext(node); + if (hasComputedStringProperty) indexInfos.push(getObjectLiteralIndexInfo(isReadonly, offset, propertiesArray, stringType)); + if (hasComputedNumberProperty) indexInfos.push(getObjectLiteralIndexInfo(isReadonly, offset, propertiesArray, numberType)); + if (hasComputedSymbolProperty) indexInfos.push(getObjectLiteralIndexInfo(isReadonly, offset, propertiesArray, esSymbolType)); const result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, indexInfos); result.objectFlags |= objectFlags | 128 /* ObjectLiteral */ | 131072 /* ContainsObjectOrArrayLiteral */; if (isJSObjectLiteral) { @@ -77102,7 +77545,8 @@ function createTypeChecker(host) { ); } checkJsxChildren(node); - return getJsxElementTypeAt(node) || anyType; + const jsxElementType = getJsxElementTypeAt(node); + return isErrorType(jsxElementType) ? anyType : jsxElementType; } function isHyphenatedJsxName(name) { return name.includes("-"); @@ -77114,8 +77558,6 @@ function createTypeChecker(host) { return node.initializer ? checkExpressionForMutableLocation(node.initializer, checkMode) : trueType; } function createJsxAttributesTypeFromAttributesProperty(openingLikeElement, checkMode = 0 /* Normal */) { - const attributes = openingLikeElement.attributes; - const contextualType = getContextualType2(attributes, 0 /* None */); const allAttributesTable = strictNullChecks ? createSymbolTable() : void 0; let attributesTable = createSymbolTable(); let spread = emptyJsxObjectType; @@ -77124,96 +77566,105 @@ function createTypeChecker(host) { let explicitlySpecifyChildrenAttribute = false; let objectFlags = 2048 /* JsxAttributes */; const jsxChildrenPropertyName = getJsxElementChildrenPropertyName(getJsxNamespaceAt(openingLikeElement)); - for (const attributeDecl of attributes.properties) { - const member = attributeDecl.symbol; - if (isJsxAttribute(attributeDecl)) { - const exprType = checkJsxAttribute(attributeDecl, checkMode); - objectFlags |= getObjectFlags(exprType) & 458752 /* PropagatingFlags */; - const attributeSymbol = createSymbol(4 /* Property */ | member.flags, member.escapedName); - attributeSymbol.declarations = member.declarations; - attributeSymbol.parent = member.parent; - if (member.valueDeclaration) { - attributeSymbol.valueDeclaration = member.valueDeclaration; - } - attributeSymbol.links.type = exprType; - attributeSymbol.links.target = member; - attributesTable.set(attributeSymbol.escapedName, attributeSymbol); - allAttributesTable == null ? void 0 : allAttributesTable.set(attributeSymbol.escapedName, attributeSymbol); - if (getEscapedTextOfJsxAttributeName(attributeDecl.name) === jsxChildrenPropertyName) { - explicitlySpecifyChildrenAttribute = true; - } - if (contextualType) { - const prop = getPropertyOfType(contextualType, member.escapedName); - if (prop && prop.declarations && isDeprecatedSymbol(prop) && isIdentifier(attributeDecl.name)) { - addDeprecatedSuggestion(attributeDecl.name, prop.declarations, attributeDecl.name.escapedText); + const isJsxOpenFragment = isJsxOpeningFragment(openingLikeElement); + let attributesSymbol; + let attributeParent = openingLikeElement; + if (!isJsxOpenFragment) { + const attributes = openingLikeElement.attributes; + attributesSymbol = attributes.symbol; + attributeParent = attributes; + const contextualType = getContextualType2(attributes, 0 /* None */); + for (const attributeDecl of attributes.properties) { + const member = attributeDecl.symbol; + if (isJsxAttribute(attributeDecl)) { + const exprType = checkJsxAttribute(attributeDecl, checkMode); + objectFlags |= getObjectFlags(exprType) & 458752 /* PropagatingFlags */; + const attributeSymbol = createSymbol(4 /* Property */ | member.flags, member.escapedName); + attributeSymbol.declarations = member.declarations; + attributeSymbol.parent = member.parent; + if (member.valueDeclaration) { + attributeSymbol.valueDeclaration = member.valueDeclaration; + } + attributeSymbol.links.type = exprType; + attributeSymbol.links.target = member; + attributesTable.set(attributeSymbol.escapedName, attributeSymbol); + allAttributesTable == null ? void 0 : allAttributesTable.set(attributeSymbol.escapedName, attributeSymbol); + if (getEscapedTextOfJsxAttributeName(attributeDecl.name) === jsxChildrenPropertyName) { + explicitlySpecifyChildrenAttribute = true; + } + if (contextualType) { + const prop = getPropertyOfType(contextualType, member.escapedName); + if (prop && prop.declarations && isDeprecatedSymbol(prop) && isIdentifier(attributeDecl.name)) { + addDeprecatedSuggestion(attributeDecl.name, prop.declarations, attributeDecl.name.escapedText); + } + } + if (contextualType && checkMode & 2 /* Inferential */ && !(checkMode & 4 /* SkipContextSensitive */) && isContextSensitive(attributeDecl)) { + const inferenceContext = getInferenceContext(attributes); + Debug.assert(inferenceContext); + const inferenceNode = attributeDecl.initializer.expression; + addIntraExpressionInferenceSite(inferenceContext, inferenceNode, exprType); + } + } else { + Debug.assert(attributeDecl.kind === 293 /* JsxSpreadAttribute */); + if (attributesTable.size > 0) { + spread = getSpreadType( + spread, + createJsxAttributesTypeHelper(), + attributes.symbol, + objectFlags, + /*readonly*/ + false + ); + attributesTable = createSymbolTable(); + } + const exprType = getReducedType(checkExpression(attributeDecl.expression, checkMode & 2 /* Inferential */)); + if (isTypeAny(exprType)) { + hasSpreadAnyType = true; + } + if (isValidSpreadType(exprType)) { + spread = getSpreadType( + spread, + exprType, + attributes.symbol, + objectFlags, + /*readonly*/ + false + ); + if (allAttributesTable) { + checkSpreadPropOverrides(exprType, allAttributesTable, attributeDecl); + } + } else { + error2(attributeDecl.expression, Diagnostics.Spread_types_may_only_be_created_from_object_types); + typeToIntersect = typeToIntersect ? getIntersectionType([typeToIntersect, exprType]) : exprType; } } - if (contextualType && checkMode & 2 /* Inferential */ && !(checkMode & 4 /* SkipContextSensitive */) && isContextSensitive(attributeDecl)) { - const inferenceContext = getInferenceContext(attributes); - Debug.assert(inferenceContext); - const inferenceNode = attributeDecl.initializer.expression; - addIntraExpressionInferenceSite(inferenceContext, inferenceNode, exprType); - } - } else { - Debug.assert(attributeDecl.kind === 293 /* JsxSpreadAttribute */); + } + if (!hasSpreadAnyType) { if (attributesTable.size > 0) { spread = getSpreadType( spread, - createJsxAttributesType(), - attributes.symbol, - objectFlags, - /*readonly*/ - false - ); - attributesTable = createSymbolTable(); - } - const exprType = getReducedType(checkExpression(attributeDecl.expression, checkMode & 2 /* Inferential */)); - if (isTypeAny(exprType)) { - hasSpreadAnyType = true; - } - if (isValidSpreadType(exprType)) { - spread = getSpreadType( - spread, - exprType, + createJsxAttributesTypeHelper(), attributes.symbol, objectFlags, /*readonly*/ false ); - if (allAttributesTable) { - checkSpreadPropOverrides(exprType, allAttributesTable, attributeDecl); - } - } else { - error2(attributeDecl.expression, Diagnostics.Spread_types_may_only_be_created_from_object_types); - typeToIntersect = typeToIntersect ? getIntersectionType([typeToIntersect, exprType]) : exprType; } } } - if (!hasSpreadAnyType) { - if (attributesTable.size > 0) { - spread = getSpreadType( - spread, - createJsxAttributesType(), - attributes.symbol, - objectFlags, - /*readonly*/ - false - ); - } - } - const parent2 = openingLikeElement.parent.kind === 284 /* JsxElement */ ? openingLikeElement.parent : void 0; - if (parent2 && parent2.openingElement === openingLikeElement && getSemanticJsxChildren(parent2.children).length > 0) { + const parent2 = openingLikeElement.parent; + if ((isJsxElement(parent2) && parent2.openingElement === openingLikeElement || isJsxFragment(parent2) && parent2.openingFragment === openingLikeElement) && getSemanticJsxChildren(parent2.children).length > 0) { const childrenTypes = checkJsxChildren(parent2, checkMode); if (!hasSpreadAnyType && jsxChildrenPropertyName && jsxChildrenPropertyName !== "") { if (explicitlySpecifyChildrenAttribute) { - error2(attributes, Diagnostics._0_are_specified_twice_The_attribute_named_0_will_be_overwritten, unescapeLeadingUnderscores(jsxChildrenPropertyName)); + error2(attributeParent, Diagnostics._0_are_specified_twice_The_attribute_named_0_will_be_overwritten, unescapeLeadingUnderscores(jsxChildrenPropertyName)); } - const contextualType2 = getApparentTypeOfContextualType( + const contextualType = isJsxOpeningElement(openingLikeElement) ? getApparentTypeOfContextualType( openingLikeElement.attributes, /*contextFlags*/ void 0 - ); - const childrenContextualType = contextualType2 && getTypeOfPropertyOfContextualType(contextualType2, jsxChildrenPropertyName); + ) : void 0; + const childrenContextualType = contextualType && getTypeOfPropertyOfContextualType(contextualType, jsxChildrenPropertyName); const childrenPropSymbol = createSymbol(4 /* Property */, jsxChildrenPropertyName); childrenPropSymbol.links.type = childrenTypes.length === 1 ? childrenTypes[0] : childrenContextualType && someType(childrenContextualType, isTupleLikeType) ? createTupleType(childrenTypes) : createArrayType(getUnionType(childrenTypes)); childrenPropSymbol.valueDeclaration = factory.createPropertySignature( @@ -77225,14 +77676,14 @@ function createTypeChecker(host) { /*type*/ void 0 ); - setParent(childrenPropSymbol.valueDeclaration, attributes); + setParent(childrenPropSymbol.valueDeclaration, attributeParent); childrenPropSymbol.valueDeclaration.symbol = childrenPropSymbol; const childPropMap = createSymbolTable(); childPropMap.set(jsxChildrenPropertyName, childrenPropSymbol); spread = getSpreadType( spread, - createAnonymousType(attributes.symbol, childPropMap, emptyArray, emptyArray, emptyArray), - attributes.symbol, + createAnonymousType(attributesSymbol, childPropMap, emptyArray, emptyArray, emptyArray), + attributesSymbol, objectFlags, /*readonly*/ false @@ -77245,14 +77696,17 @@ function createTypeChecker(host) { if (typeToIntersect && spread !== emptyJsxObjectType) { return getIntersectionType([typeToIntersect, spread]); } - return typeToIntersect || (spread === emptyJsxObjectType ? createJsxAttributesType() : spread); - function createJsxAttributesType() { + return typeToIntersect || (spread === emptyJsxObjectType ? createJsxAttributesTypeHelper() : spread); + function createJsxAttributesTypeHelper() { objectFlags |= 8192 /* FreshLiteral */; - const result = createAnonymousType(attributes.symbol, attributesTable, emptyArray, emptyArray, emptyArray); - result.objectFlags |= objectFlags | 128 /* ObjectLiteral */ | 131072 /* ContainsObjectOrArrayLiteral */; - return result; + return createJsxAttributesType(objectFlags, attributesSymbol, attributesTable); } } + function createJsxAttributesType(objectFlags, attributesSymbol, attributesTable) { + const result = createAnonymousType(attributesSymbol, attributesTable, emptyArray, emptyArray, emptyArray); + result.objectFlags |= objectFlags | 8192 /* FreshLiteral */ | 128 /* ObjectLiteral */ | 131072 /* ContainsObjectOrArrayLiteral */; + return result; + } function checkJsxChildren(node, checkMode) { const childrenTypes = []; for (const child of node.children) { @@ -77334,7 +77788,7 @@ function createTypeChecker(host) { return void 0; } const isClassic = getEmitModuleResolutionKind(compilerOptions) === 1 /* Classic */; - const errorMessage = isClassic ? Diagnostics.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_to_the_paths_option : Diagnostics.Cannot_find_module_0_or_its_corresponding_type_declarations; + const errorMessage = isClassic ? Diagnostics.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_to_the_paths_option : Diagnostics.This_JSX_tag_requires_the_module_path_0_to_exist_but_none_could_be_found_Make_sure_you_have_types_for_the_appropriate_package_installed; const specifier = getJSXRuntimeImportSpecifier(file, runtimeImportSpecifier); const mod = resolveExternalModule(specifier || location, runtimeImportSpecifier, errorMessage, location); const result = mod && mod !== unknownSymbol ? getMergedSymbol(resolveSymbol(mod)) : void 0; @@ -77558,10 +78012,10 @@ function createTypeChecker(host) { } checkJsxPreconditions(node); markJsxAliasReferenced(node); + const sig = getResolvedSignature(node); + checkDeprecatedSignature(sig, node); if (isNodeOpeningLikeElement) { const jsxOpeningLikeNode = node; - const sig = getResolvedSignature(jsxOpeningLikeNode); - checkDeprecatedSignature(sig, node); const elementTypeConstraint = getJsxElementTypeTypeAt(jsxOpeningLikeNode); if (elementTypeConstraint !== void 0) { const tagName = jsxOpeningLikeNode.tagName; @@ -77962,7 +78416,7 @@ function createTypeChecker(host) { const isAnyLike = isTypeAny(apparentType) || apparentType === silentNeverType; let prop; if (isPrivateIdentifier(right)) { - if (languageVersion < 9 /* PrivateNamesAndClassStaticBlocks */ || languageVersion < 99 /* ClassAndClassElementDecorators */ || !useDefineForClassFields) { + if (languageVersion < LanguageFeatureMinimumTarget.PrivateNamesAndClassStaticBlocks || languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators || !useDefineForClassFields) { if (assignmentKind !== 0 /* None */) { checkExternalEmitHelpers(node, 1048576 /* ClassPrivateFieldSet */); } @@ -78585,6 +79039,7 @@ function createTypeChecker(host) { return !!(t.flags & (16384 /* Void */ | 32768 /* Undefined */ | 2 /* Unknown */ | 1 /* Any */)); } function hasCorrectArity(node, args, signature, signatureHelpTrailingComma = false) { + if (isJsxOpeningFragment(node)) return true; let argCount; let callIsIncomplete = false; let effectiveParameterCount = getParameterCount(signature); @@ -78858,9 +79313,9 @@ function createTypeChecker(host) { } return 2 /* Mixed */; } - function checkApplicableSignatureForJsxOpeningLikeElement(node, signature, relation, checkMode, reportErrors2, containingMessageChain, errorOutputContainer) { + function checkApplicableSignatureForJsxCallLikeElement(node, signature, relation, checkMode, reportErrors2, containingMessageChain, errorOutputContainer) { const paramType = getEffectiveFirstArgumentForJsxSignature(signature, node); - const attributesType = checkExpressionWithContextualType( + const attributesType = isJsxOpeningFragment(node) ? createJsxAttributesTypeFromAttributesProperty(node) : checkExpressionWithContextualType( node.attributes, paramType, /*inferenceContext*/ @@ -78872,8 +79327,8 @@ function createTypeChecker(host) { checkAttributesType, paramType, relation, - reportErrors2 ? node.tagName : void 0, - node.attributes, + reportErrors2 ? isJsxOpeningFragment(node) ? node : node.tagName : void 0, + isJsxOpeningFragment(node) ? void 0 : node.attributes, /*headMessage*/ void 0, containingMessageChain, @@ -78944,10 +79399,11 @@ function createTypeChecker(host) { return true; } if (reportErrors2) { - const diag2 = createDiagnosticForNode(node.tagName, Diagnostics.Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3, entityNameToString(node.tagName), absoluteMinArgCount, entityNameToString(factory2), maxParamCount); - const tagNameDeclaration = (_a = getSymbolAtLocation(node.tagName)) == null ? void 0 : _a.valueDeclaration; + const tagName = node.tagName; + const diag2 = createDiagnosticForNode(tagName, Diagnostics.Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3, entityNameToString(tagName), absoluteMinArgCount, entityNameToString(factory2), maxParamCount); + const tagNameDeclaration = (_a = getSymbolAtLocation(tagName)) == null ? void 0 : _a.valueDeclaration; if (tagNameDeclaration) { - addRelatedInfo(diag2, createDiagnosticForNode(tagNameDeclaration, Diagnostics._0_is_declared_here, entityNameToString(node.tagName))); + addRelatedInfo(diag2, createDiagnosticForNode(tagNameDeclaration, Diagnostics._0_is_declared_here, entityNameToString(tagName))); } if (errorOutputContainer && errorOutputContainer.skipLogging) { (errorOutputContainer.errors || (errorOutputContainer.errors = [])).push(diag2); @@ -78965,8 +79421,8 @@ function createTypeChecker(host) { } function getSignatureApplicabilityError(node, args, signature, relation, checkMode, reportErrors2, containingMessageChain, inferenceContext) { const errorOutputContainer = { errors: void 0, skipLogging: true }; - if (isJsxOpeningLikeElement(node)) { - if (!checkApplicableSignatureForJsxOpeningLikeElement(node, signature, relation, checkMode, reportErrors2, containingMessageChain, errorOutputContainer)) { + if (isJsxCallLike(node)) { + if (!checkApplicableSignatureForJsxCallLikeElement(node, signature, relation, checkMode, reportErrors2, containingMessageChain, errorOutputContainer)) { Debug.assert(!reportErrors2 || !!errorOutputContainer.errors, "jsx should have errors when reporting errors"); return errorOutputContainer.errors || emptyArray; } @@ -79066,6 +79522,9 @@ function createTypeChecker(host) { return result; } function getEffectiveCallArguments(node) { + if (isJsxOpeningFragment(node)) { + return [createSyntheticExpression(node, emptyFreshJsxObjectType)]; + } if (node.kind === 215 /* TaggedTemplateExpression */) { const template = node.template; const args2 = [createSyntheticExpression(template, getGlobalTemplateStringsArrayType())]; @@ -79350,25 +79809,32 @@ function createTypeChecker(host) { const isTaggedTemplate = node.kind === 215 /* TaggedTemplateExpression */; const isDecorator2 = node.kind === 170 /* Decorator */; const isJsxOpeningOrSelfClosingElement = isJsxOpeningLikeElement(node); + const isJsxOpenFragment = isJsxOpeningFragment(node); const isInstanceof = node.kind === 226 /* BinaryExpression */; const reportErrors2 = !isInferencePartiallyBlocked && !candidatesOutArray; + let candidatesForArgumentError; + let candidateForArgumentArityError; + let candidateForTypeArgumentError; + let result; + let argCheckMode = 0 /* Normal */; + let candidates = []; let typeArguments; - if (!isDecorator2 && !isInstanceof && !isSuperCall(node)) { + if (!isDecorator2 && !isInstanceof && !isSuperCall(node) && !isJsxOpenFragment) { typeArguments = node.typeArguments; if (isTaggedTemplate || isJsxOpeningOrSelfClosingElement || node.expression.kind !== 108 /* SuperKeyword */) { forEach(typeArguments, checkSourceElement); } } - const candidates = candidatesOutArray || []; + candidates = candidatesOutArray || []; reorderCandidates(signatures, candidates, callChainFlags); - Debug.assert(candidates.length, "Revert #54442 and add a testcase with whatever triggered this"); + if (!isJsxOpenFragment) { + Debug.assert(candidates.length, "Revert #54442 and add a testcase with whatever triggered this"); + } const args = getEffectiveCallArguments(node); const isSingleNonGenericCandidate = candidates.length === 1 && !candidates[0].typeParameters; - let argCheckMode = !isDecorator2 && !isSingleNonGenericCandidate && some(args, isContextSensitive) ? 4 /* SkipContextSensitive */ : 0 /* Normal */; - let candidatesForArgumentError; - let candidateForArgumentArityError; - let candidateForTypeArgumentError; - let result; + if (!isDecorator2 && !isSingleNonGenericCandidate && some(args, isContextSensitive)) { + argCheckMode = 4 /* SkipContextSensitive */; + } const signatureHelpTrailingComma = !!(checkMode & 16 /* IsForSignatureHelp */) && node.kind === 213 /* CallExpression */ && node.arguments.hasTrailingComma; if (candidates.length > 1) { result = chooseOverload(candidates, subtypeRelation, isSingleNonGenericCandidate, signatureHelpTrailingComma); @@ -79488,7 +79954,7 @@ function createTypeChecker(host) { true, headMessage ); - } else { + } else if (!isJsxOpenFragment) { const signaturesWithCorrectTypeArgumentArity = filter(signatures, (s) => hasCorrectTypeArgumentArity(s, typeArguments)); if (signaturesWithCorrectTypeArgumentArity.length === 0) { diagnostics.add(getTypeArgumentArityError(node, signatures, typeArguments, headMessage)); @@ -79498,12 +79964,12 @@ function createTypeChecker(host) { } } return result; - function addImplementationSuccessElaboration(failed, diagnostic) { + function addImplementationSuccessElaboration(failed2, diagnostic) { var _a, _b; const oldCandidatesForArgumentError = candidatesForArgumentError; const oldCandidateForArgumentArityError = candidateForArgumentArityError; const oldCandidateForTypeArgumentError = candidateForTypeArgumentError; - const failedSignatureDeclarations = ((_b = (_a = failed.declaration) == null ? void 0 : _a.symbol) == null ? void 0 : _b.declarations) || emptyArray; + const failedSignatureDeclarations = ((_b = (_a = failed2.declaration) == null ? void 0 : _a.symbol) == null ? void 0 : _b.declarations) || emptyArray; const isOverload2 = failedSignatureDeclarations.length > 1; const implDecl = isOverload2 ? find(failedSignatureDeclarations, (d) => isFunctionLikeDeclaration(d) && nodeIsPresent(d.body)) : void 0; if (implDecl) { @@ -80136,24 +80602,53 @@ function createTypeChecker(host) { 0 /* None */ ); } + function getJSXFragmentType(node) { + const sourceFileLinks = getNodeLinks(getSourceFileOfNode(node)); + if (sourceFileLinks.jsxFragmentType !== void 0) return sourceFileLinks.jsxFragmentType; + const jsxFragmentFactoryName = getJsxNamespace(node); + if (jsxFragmentFactoryName === "null") return sourceFileLinks.jsxFragmentType = anyType; + const jsxFactoryRefErr = diagnostics ? Diagnostics.Using_JSX_fragments_requires_fragment_factory_0_to_be_in_scope_but_it_could_not_be_found : void 0; + const jsxFactorySymbol = getJsxNamespaceContainerForImplicitImport(node) ?? resolveName( + node, + jsxFragmentFactoryName, + compilerOptions.jsx === 1 /* Preserve */ ? 111551 /* Value */ & ~384 /* Enum */ : 111551 /* Value */, + /*nameNotFoundMessage*/ + jsxFactoryRefErr, + /*isUse*/ + true + ); + if (jsxFactorySymbol === void 0) return sourceFileLinks.jsxFragmentType = errorType; + if (jsxFactorySymbol.escapedName === ReactNames.Fragment) return sourceFileLinks.jsxFragmentType = getTypeOfSymbol(jsxFactorySymbol); + const resolvedAlias = (jsxFactorySymbol.flags & 2097152 /* Alias */) === 0 ? jsxFactorySymbol : resolveAlias(jsxFactorySymbol); + const reactExports = jsxFactorySymbol && getExportsOfSymbol(resolvedAlias); + const typeSymbol = reactExports && getSymbol2(reactExports, ReactNames.Fragment, 2 /* BlockScopedVariable */); + const type = typeSymbol && getTypeOfSymbol(typeSymbol); + return sourceFileLinks.jsxFragmentType = type === void 0 ? errorType : type; + } function resolveJsxOpeningLikeElement(node, candidatesOutArray, checkMode) { - if (isJsxIntrinsicTagName(node.tagName)) { - const result = getIntrinsicAttributesTypeFromJsxOpeningLikeElement(node); - const fakeSignature = createSignatureForJSXIntrinsic(node, result); - checkTypeAssignableToAndOptionallyElaborate(checkExpressionWithContextualType( - node.attributes, - getEffectiveFirstArgumentForJsxSignature(fakeSignature, node), - /*inferenceContext*/ - void 0, - 0 /* Normal */ - ), result, node.tagName, node.attributes); - if (length(node.typeArguments)) { - forEach(node.typeArguments, checkSourceElement); - diagnostics.add(createDiagnosticForNodeArray(getSourceFileOfNode(node), node.typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, 0, length(node.typeArguments))); + const isJsxOpenFragment = isJsxOpeningFragment(node); + let exprTypes; + if (!isJsxOpenFragment) { + if (isJsxIntrinsicTagName(node.tagName)) { + const result = getIntrinsicAttributesTypeFromJsxOpeningLikeElement(node); + const fakeSignature = createSignatureForJSXIntrinsic(node, result); + checkTypeAssignableToAndOptionallyElaborate(checkExpressionWithContextualType( + node.attributes, + getEffectiveFirstArgumentForJsxSignature(fakeSignature, node), + /*inferenceContext*/ + void 0, + 0 /* Normal */ + ), result, node.tagName, node.attributes); + if (length(node.typeArguments)) { + forEach(node.typeArguments, checkSourceElement); + diagnostics.add(createDiagnosticForNodeArray(getSourceFileOfNode(node), node.typeArguments, Diagnostics.Expected_0_type_arguments_but_got_1, 0, length(node.typeArguments))); + } + return fakeSignature; } - return fakeSignature; + exprTypes = checkExpression(node.tagName); + } else { + exprTypes = getJSXFragmentType(node); } - const exprTypes = checkExpression(node.tagName); const apparentType = getApparentType(exprTypes); if (isErrorType(apparentType)) { return resolveErrorCall(node); @@ -80169,7 +80664,11 @@ function createTypeChecker(host) { return resolveUntypedCall(node); } if (signatures.length === 0) { - error2(node.tagName, Diagnostics.JSX_element_type_0_does_not_have_any_construct_or_call_signatures, getTextOfNode(node.tagName)); + if (isJsxOpenFragment) { + error2(node, Diagnostics.JSX_element_type_0_does_not_have_any_construct_or_call_signatures, getTextOfNode(node)); + } else { + error2(node.tagName, Diagnostics.JSX_element_type_0_does_not_have_any_construct_or_call_signatures, getTextOfNode(node.tagName)); + } return resolveErrorCall(node); } return resolveCall(node, signatures, candidatesOutArray, checkMode, 0 /* None */); @@ -80211,6 +80710,7 @@ function createTypeChecker(host) { return resolveTaggedTemplateExpression(node, candidatesOutArray, checkMode); case 170 /* Decorator */: return resolveDecorator(node, candidatesOutArray, checkMode); + case 289 /* JsxOpeningFragment */: case 286 /* JsxOpeningElement */: case 285 /* JsxSelfClosingElement */: return resolveJsxOpeningLikeElement(node, candidatesOutArray, checkMode); @@ -80579,7 +81079,7 @@ function createTypeChecker(host) { } function checkTaggedTemplateExpression(node) { if (!checkGrammarTaggedTemplateChain(node)) checkGrammarTypeArguments(node, node.typeArguments); - if (languageVersion < 2 /* TaggedTemplates */) { + if (languageVersion < LanguageFeatureMinimumTarget.TaggedTemplates) { checkExternalEmitHelpers(node, 262144 /* MakeTemplateObject */); } const signature = getResolvedSignature(node); @@ -80698,9 +81198,17 @@ function createTypeChecker(host) { if (exprType === silentNeverType || isErrorType(exprType) || !some(typeArguments)) { return exprType; } + const links = getNodeLinks(node); + if (!links.instantiationExpressionTypes) { + links.instantiationExpressionTypes = /* @__PURE__ */ new Map(); + } + if (links.instantiationExpressionTypes.has(exprType.id)) { + return links.instantiationExpressionTypes.get(exprType.id); + } let hasSomeApplicableSignature = false; let nonApplicableType; const result = getInstantiatedType(exprType); + links.instantiationExpressionTypes.set(exprType.id, result); const errorType2 = hasSomeApplicableSignature ? nonApplicableType : exprType; if (errorType2) { diagnostics.add(createDiagnosticForNodeArray(getSourceFileOfNode(node), typeArguments, Diagnostics.Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable, typeToString(errorType2))); @@ -81755,7 +82263,7 @@ function createTypeChecker(host) { }); } function checkIfExpressionRefinesParameter(func, expr, param, initType) { - const antecedent = expr.flowNode || expr.parent.kind === 253 /* ReturnStatement */ && expr.parent.flowNode || createFlowNode( + const antecedent = canHaveFlowNode(expr) && expr.flowNode || expr.parent.kind === 253 /* ReturnStatement */ && expr.parent.flowNode || createFlowNode( 2 /* Start */, /*node*/ void 0, @@ -82074,6 +82582,7 @@ function createTypeChecker(host) { hasError = true; break; } + // fallthrough case 7 /* ES2022 */: case 99 /* ESNext */: case 200 /* Preserve */: @@ -82081,6 +82590,7 @@ function createTypeChecker(host) { if (languageVersion >= 4 /* ES2017 */) { break; } + // fallthrough default: span ?? (span = getSpanOfTokenAtPosition(sourceFile, node.pos)); const message = isAwaitExpression(node) ? Diagnostics.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_nodenext_or_preserve_and_the_target_option_is_set_to_es2017_or_higher : Diagnostics.Top_level_await_using_statements_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_nodenext_or_preserve_and_the_target_option_is_set_to_es2017_or_higher; @@ -82289,7 +82799,7 @@ function createTypeChecker(host) { return silentNeverType; } if (isPrivateIdentifier(left)) { - if (languageVersion < 9 /* PrivateNamesAndClassStaticBlocks */ || languageVersion < 99 /* ClassAndClassElementDecorators */ || !useDefineForClassFields) { + if (languageVersion < LanguageFeatureMinimumTarget.PrivateNamesAndClassStaticBlocks || languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators || !useDefineForClassFields) { checkExternalEmitHelpers(left, 2097152 /* ClassPrivateFieldIn */); } if (!getNodeLinks(left).resolvedSymbol && getContainingClass(left)) { @@ -82350,7 +82860,7 @@ function createTypeChecker(host) { if (propertyIndex < properties.length - 1) { error2(property, Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern); } else { - if (languageVersion < 5 /* ObjectSpreadRest */) { + if (languageVersion < LanguageFeatureMinimumTarget.ObjectSpreadRest) { checkExternalEmitHelpers(property, 4 /* Rest */); } const nonRestNames = []; @@ -82371,7 +82881,7 @@ function createTypeChecker(host) { } function checkArrayLiteralAssignment(node, sourceType, checkMode) { const elements = node.elements; - if (languageVersion < 2 /* DestructuringAssignment */ && compilerOptions.downlevelIteration) { + if (languageVersion < LanguageFeatureMinimumTarget.DestructuringAssignment && compilerOptions.downlevelIteration) { checkExternalEmitHelpers(node, 512 /* Read */); } const possiblyOutOfBoundsType = checkIteratedTypeOrElementType(65 /* Destructuring */ | 128 /* PossiblyOutOfBounds */, sourceType, undefinedType, node) || errorType; @@ -82498,9 +83008,13 @@ function createTypeChecker(host) { return true; } return false; + // Some forms listed here for clarity case 222 /* VoidExpression */: + // Explicit opt-out case 216 /* TypeAssertionExpression */: + // Not SEF, but can produce useful type warnings case 234 /* AsExpression */: + // Not SEF, but can produce useful type warnings default: return false; } @@ -83141,10 +83655,10 @@ function createTypeChecker(host) { } const isAsync = (functionFlags & 2 /* Async */) !== 0; if (node.asteriskToken) { - if (isAsync && languageVersion < 5 /* AsyncGenerators */) { + if (isAsync && languageVersion < LanguageFeatureMinimumTarget.AsyncGenerators) { checkExternalEmitHelpers(node, 26624 /* AsyncDelegatorIncludes */); } - if (!isAsync && languageVersion < 2 /* Generators */ && compilerOptions.downlevelIteration) { + if (!isAsync && languageVersion < LanguageFeatureMinimumTarget.Generators && compilerOptions.downlevelIteration) { checkExternalEmitHelpers(node, 256 /* Values */); } } @@ -83375,7 +83889,7 @@ function createTypeChecker(host) { return createTupleType(elementTypes, elementFlags, type.target.readonly); } function widenTypeInferredFromInitializer(declaration, type) { - const widened = getCombinedNodeFlagsCached(declaration) & 6 /* Constant */ || isDeclarationReadonly(declaration) ? type : getWidenedLiteralType(type); + const widened = getWidenedLiteralTypeForInitializer(declaration, type); if (isInJSFile(declaration)) { if (isEmptyLiteralType(widened)) { reportImplicitAny(declaration, anyType); @@ -83387,6 +83901,9 @@ function createTypeChecker(host) { } return widened; } + function getWidenedLiteralTypeForInitializer(declaration, type) { + return getCombinedNodeFlagsCached(declaration) & 6 /* Constant */ || isDeclarationReadonly(declaration) ? type : getWidenedLiteralType(type); + } function isLiteralOfContextualType(candidateType, contextualType) { if (contextualType) { if (contextualType.flags & 3145728 /* UnionOrIntersection */) { @@ -83746,6 +84263,7 @@ function createTypeChecker(host) { if (node.expression.kind === 102 /* ImportKeyword */) { return checkImportCallExpression(node); } + // falls through case 214 /* NewExpression */: return checkCallExpression(node, checkMode); case 215 /* TaggedTemplateExpression */: @@ -83834,7 +84352,7 @@ function createTypeChecker(host) { const modifiers = getTypeParameterModifiers(typeParameter) & (8192 /* In */ | 16384 /* Out */); if (modifiers) { const symbol = getSymbolOfDeclaration(node.parent); - if (isTypeAliasDeclaration(node.parent) && !(getObjectFlags(getDeclaredTypeOfSymbol(symbol)) & (4 /* Reference */ | 16 /* Anonymous */ | 32 /* Mapped */))) { + if (isTypeAliasDeclaration(node.parent) && !(getObjectFlags(getDeclaredTypeOfSymbol(symbol)) & (16 /* Anonymous */ | 32 /* Mapped */))) { error2(node, Diagnostics.Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_types); } else if (modifiers === 8192 /* In */ || modifiers === 16384 /* Out */) { (_a = tracing) == null ? void 0 : _a.push(tracing.Phase.CheckTypes, "checkTypeParameterDeferred", { parent: getTypeId(getDeclaredTypeOfSymbol(symbol)), id: getTypeId(typeParameter) }); @@ -83973,13 +84491,13 @@ function createTypeChecker(host) { } const functionFlags = getFunctionFlags(node); if (!(functionFlags & 4 /* Invalid */)) { - if ((functionFlags & 3 /* AsyncGenerator */) === 3 /* AsyncGenerator */ && languageVersion < 5 /* AsyncGenerators */) { + if ((functionFlags & 3 /* AsyncGenerator */) === 3 /* AsyncGenerator */ && languageVersion < LanguageFeatureMinimumTarget.AsyncGenerators) { checkExternalEmitHelpers(node, 6144 /* AsyncGeneratorIncludes */); } - if ((functionFlags & 3 /* AsyncGenerator */) === 2 /* Async */ && languageVersion < 4 /* AsyncFunctions */) { + if ((functionFlags & 3 /* AsyncGenerator */) === 2 /* Async */ && languageVersion < LanguageFeatureMinimumTarget.AsyncFunctions) { checkExternalEmitHelpers(node, 64 /* Awaiter */); } - if ((functionFlags & 3 /* AsyncGenerator */) !== 0 /* Normal */ && languageVersion < 2 /* Generators */) { + if ((functionFlags & 3 /* AsyncGenerator */) !== 0 /* Normal */ && languageVersion < LanguageFeatureMinimumTarget.Generators) { checkExternalEmitHelpers(node, 128 /* Generator */); } } @@ -84115,6 +84633,7 @@ function createTypeChecker(host) { if (useDefineForClassFields) { break; } + // fall through case "prototype": const message = Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1; const className = getNameOfSymbolAsWritten(getSymbolOfDeclaration(node)); @@ -84161,15 +84680,17 @@ function createTypeChecker(host) { if (indexSymbol == null ? void 0 : indexSymbol.declarations) { const indexSignatureMap = /* @__PURE__ */ new Map(); for (const declaration of indexSymbol.declarations) { - if (declaration.parameters.length === 1 && declaration.parameters[0].type) { - forEachType(getTypeFromTypeNode(declaration.parameters[0].type), (type) => { - const entry = indexSignatureMap.get(getTypeId(type)); - if (entry) { - entry.declarations.push(declaration); - } else { - indexSignatureMap.set(getTypeId(type), { type, declarations: [declaration] }); - } - }); + if (isIndexSignatureDeclaration(declaration)) { + if (declaration.parameters.length === 1 && declaration.parameters[0].type) { + forEachType(getTypeFromTypeNode(declaration.parameters[0].type), (type) => { + const entry = indexSignatureMap.get(getTypeId(type)); + if (entry) { + entry.declarations.push(declaration); + } else { + indexSignatureMap.set(getTypeId(type), { type, declarations: [declaration] }); + } + }); + } } } indexSignatureMap.forEach((entry) => { @@ -84211,7 +84732,7 @@ function createTypeChecker(host) { } function setNodeLinksForPrivateIdentifierScope(node) { if (isPrivateIdentifier(node.name)) { - if (languageVersion < 9 /* PrivateNamesAndClassStaticBlocks */ || languageVersion < 99 /* ClassAndClassElementDecorators */ || !useDefineForClassFields) { + if (languageVersion < LanguageFeatureMinimumTarget.PrivateNamesAndClassStaticBlocks || languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators || !useDefineForClassFields) { for (let lexicalScope = getEnclosingBlockScopeContainer(node); !!lexicalScope; lexicalScope = getEnclosingBlockScopeContainer(lexicalScope)) { getNodeLinks(lexicalScope).flags |= 1048576 /* ContainsClassWithPrivateIdentifiers */; } @@ -84858,6 +85379,8 @@ function createTypeChecker(host) { switch (d.kind) { case 264 /* InterfaceDeclaration */: case 265 /* TypeAliasDeclaration */: + // A jsdoc typedef and callback are, by definition, type aliases. + // falls through case 346 /* JSDocTypedefTag */: case 338 /* JSDocCallbackTag */: case 340 /* JSDocEnumTag */: @@ -84878,6 +85401,8 @@ function createTypeChecker(host) { return 1 /* ExportValue */; } d = expression; + // The below options all declare an Alias, which is allowed to merge with other values within the importing module. + // falls through case 271 /* ImportEqualsDeclaration */: case 274 /* NamespaceImport */: case 273 /* ImportClause */: @@ -84891,6 +85416,7 @@ function createTypeChecker(host) { case 208 /* BindingElement */: case 262 /* FunctionDeclaration */: case 276 /* ImportSpecifier */: + // https://github.com/Microsoft/TypeScript/pull/7591 case 80 /* Identifier */: return 1 /* ExportValue */; case 173 /* MethodSignature */: @@ -85239,6 +85765,7 @@ function createTypeChecker(host) { headMessage = Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1; break; } + // falls through case 169 /* Parameter */: headMessage = Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any; break; @@ -85345,7 +85872,7 @@ function createTypeChecker(host) { if (node.kind === 169 /* Parameter */) { checkExternalEmitHelpers(firstDecorator, 32 /* Param */); } - } else if (languageVersion < 99 /* ClassAndClassElementDecorators */) { + } else if (languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators) { checkExternalEmitHelpers(firstDecorator, 8 /* ESDecorateAndRunInitializers */); if (isClassDeclaration(node)) { if (!node.name) { @@ -86011,7 +86538,7 @@ function createTypeChecker(host) { potentialUnusedRenamedBindingElementsInTypes.push(node); return; } - if (isObjectBindingPattern(node.parent) && node.dotDotDotToken && languageVersion < 5 /* ObjectSpreadRest */) { + if (isObjectBindingPattern(node.parent) && node.dotDotDotToken && languageVersion < LanguageFeatureMinimumTarget.ObjectSpreadRest) { checkExternalEmitHelpers(node, 4 /* Rest */); } if (node.propertyName && node.propertyName.kind === 167 /* ComputedPropertyName */) { @@ -86047,7 +86574,7 @@ function createTypeChecker(host) { } } if (isBindingPattern(node.name)) { - if (node.name.kind === 207 /* ArrayBindingPattern */ && languageVersion < 2 /* BindingPatterns */ && compilerOptions.downlevelIteration) { + if (node.name.kind === 207 /* ArrayBindingPattern */ && languageVersion < LanguageFeatureMinimumTarget.BindingPatterns && compilerOptions.downlevelIteration) { checkExternalEmitHelpers(node, 512 /* Read */); } forEach(node.name.elements, checkSourceElement); @@ -86201,7 +86728,7 @@ function createTypeChecker(host) { } function checkVariableDeclarationList(node) { const blockScopeKind = getCombinedNodeFlags(node) & 7 /* BlockScoped */; - if ((blockScopeKind === 4 /* Using */ || blockScopeKind === 6 /* AwaitUsing */) && languageVersion < 99 /* UsingAndAwaitUsing */) { + if ((blockScopeKind === 4 /* Using */ || blockScopeKind === 6 /* AwaitUsing */) && languageVersion < LanguageFeatureMinimumTarget.UsingAndAwaitUsing) { checkExternalEmitHelpers(node, 16777216 /* AddDisposableResourceAndDisposeResources */); } forEach(node.declarations, checkSourceElement); @@ -86415,11 +86942,11 @@ function createTypeChecker(host) { grammarErrorOnNode(node.awaitModifier, Diagnostics.for_await_loops_cannot_be_used_inside_a_class_static_block); } else { const functionFlags = getFunctionFlags(container); - if ((functionFlags & (4 /* Invalid */ | 2 /* Async */)) === 2 /* Async */ && languageVersion < 5 /* ForAwaitOf */) { + if ((functionFlags & (4 /* Invalid */ | 2 /* Async */)) === 2 /* Async */ && languageVersion < LanguageFeatureMinimumTarget.ForAwaitOf) { checkExternalEmitHelpers(node, 16384 /* ForAwaitOfIncludes */); } } - } else if (compilerOptions.downlevelIteration && languageVersion < 2 /* ForOf */) { + } else if (compilerOptions.downlevelIteration && languageVersion < LanguageFeatureMinimumTarget.ForOf) { checkExternalEmitHelpers(node, 256 /* ForOfIncludes */); } if (node.initializer.kind === 261 /* VariableDeclarationList */) { @@ -86652,7 +87179,7 @@ function createTypeChecker(host) { return anyIterationTypes; } if (!(type.flags & 1048576 /* Union */)) { - const errorOutputContainer = errorNode ? { errors: void 0 } : void 0; + const errorOutputContainer = errorNode ? { errors: void 0, skipLogging: true } : void 0; const iterationTypes2 = getIterationTypesOfIterableWorker(type, use, errorNode, errorOutputContainer); if (iterationTypes2 === noIterationTypes) { if (errorNode) { @@ -86820,11 +87347,27 @@ function createTypeChecker(host) { if (isTypeAny(methodType)) { return noCache ? anyIterationTypes : setCachedIterationTypes(type, resolver.iterableCacheKey, anyIterationTypes); } - const signatures = methodType ? getSignaturesOfType(methodType, 0 /* Call */) : void 0; - if (!some(signatures)) { + const allSignatures = methodType ? getSignaturesOfType(methodType, 0 /* Call */) : void 0; + const validSignatures = filter(allSignatures, (sig) => getMinArgumentCount(sig) === 0); + if (!some(validSignatures)) { + if (errorNode && some(allSignatures)) { + checkTypeAssignableTo( + type, + resolver.getGlobalIterableType( + /*reportErrors*/ + true + ), + errorNode, + /*headMessage*/ + void 0, + /*containingMessageChain*/ + void 0, + errorOutputContainer + ); + } return noCache ? noIterationTypes : setCachedIterationTypes(type, resolver.iterableCacheKey, noIterationTypes); } - const iteratorType = getIntersectionType(map(signatures, getReturnTypeOfSignature)); + const iteratorType = getIntersectionType(map(validSignatures, getReturnTypeOfSignature)); const iterationTypes = getIterationTypesOfIteratorWorker(iteratorType, resolver, errorNode, errorOutputContainer, noCache) ?? noIterationTypes; return noCache ? iterationTypes : setCachedIterationTypes(type, resolver.iterableCacheKey, iterationTypes); } @@ -87460,12 +88003,12 @@ function createTypeChecker(host) { return true; } function getFirstTransformableStaticClassElement(node) { - const willTransformStaticElementsOfDecoratedClass = !legacyDecorators && languageVersion < 99 /* ClassAndClassElementDecorators */ && classOrConstructorParameterIsDecorated( + const willTransformStaticElementsOfDecoratedClass = !legacyDecorators && languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators && classOrConstructorParameterIsDecorated( /*useLegacyDecorators*/ false, node ); - const willTransformPrivateElementsOrClassStaticBlocks = languageVersion < 9 /* PrivateNamesAndClassStaticBlocks */ || languageVersion < 99 /* ClassAndClassElementDecorators */; + const willTransformPrivateElementsOrClassStaticBlocks = languageVersion < LanguageFeatureMinimumTarget.PrivateNamesAndClassStaticBlocks || languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators; const willTransformInitializers = !emitStandardClassFields; if (willTransformStaticElementsOfDecoratedClass || willTransformPrivateElementsOrClassStaticBlocks) { for (const member of node.members) { @@ -87492,7 +88035,7 @@ function createTypeChecker(host) { if (node.name) return; const parent2 = walkUpOuterExpressions(node); if (!isNamedEvaluationSource(parent2)) return; - const willTransformESDecorators = !legacyDecorators && languageVersion < 99 /* ClassAndClassElementDecorators */; + const willTransformESDecorators = !legacyDecorators && languageVersion < LanguageFeatureMinimumTarget.ClassAndClassElementDecorators; let location; if (willTransformESDecorators && classOrConstructorParameterIsDecorated( /*useLegacyDecorators*/ @@ -87552,7 +88095,7 @@ function createTypeChecker(host) { const baseTypeNode = getEffectiveBaseTypeNode(node); if (baseTypeNode) { forEach(baseTypeNode.typeArguments, checkSourceElement); - if (languageVersion < 2 /* Classes */) { + if (languageVersion < LanguageFeatureMinimumTarget.Classes) { checkExternalEmitHelpers(baseTypeNode.parent, 1 /* Extends */); } const extendsNode = getClassExtendsHeritageElement(node); @@ -88058,6 +88601,9 @@ function createTypeChecker(host) { } function checkInterfaceDeclaration(node) { if (!checkGrammarModifiers(node)) checkGrammarInterfaceDeclaration(node); + if (!allowBlockDeclarations(node.parent)) { + grammarErrorOnNode(node, Diagnostics._0_declarations_can_only_be_declared_inside_a_block, "interface"); + } checkTypeParameters(node.typeParameters); addLazyDiagnostic(() => { checkTypeNameIsReserved(node.name, Diagnostics.Interface_name_cannot_be_0); @@ -88092,6 +88638,9 @@ function createTypeChecker(host) { function checkTypeAliasDeclaration(node) { checkGrammarModifiers(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); + if (!allowBlockDeclarations(node.parent)) { + grammarErrorOnNode(node, Diagnostics._0_declarations_can_only_be_declared_inside_a_block, "type"); + } checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); if (node.type.kind === 141 /* IntrinsicKeyword */) { @@ -88460,6 +89009,7 @@ function createTypeChecker(host) { break; case 271 /* ImportEqualsDeclaration */: if (isInternalModuleImportEqualsDeclaration(node)) break; + // falls through case 272 /* ImportDeclaration */: grammarErrorOnFirstToken(node, Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module); break; @@ -88472,6 +89022,7 @@ function createTypeChecker(host) { } break; } + // falls through case 263 /* ClassDeclaration */: case 266 /* EnumDeclaration */: case 262 /* FunctionDeclaration */: @@ -88735,6 +89286,7 @@ function createTypeChecker(host) { grammarErrorOnFirstToken(node, Diagnostics.An_import_declaration_cannot_have_modifiers); } if (checkExternalImportOrExportDeclaration(node)) { + let resolvedModule; const importClause = node.importClause; if (importClause && !checkGrammarImportClause(importClause)) { if (importClause.name) { @@ -88747,18 +89299,27 @@ function createTypeChecker(host) { checkExternalEmitHelpers(node, 65536 /* ImportStar */); } } else { - const moduleExisted = resolveExternalModuleName(node, node.moduleSpecifier); - if (moduleExisted) { + resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); + if (resolvedModule) { forEach(importClause.namedBindings.elements, checkImportBinding); } } } + if (isOnlyImportableAsDefault(node.moduleSpecifier, resolvedModule) && !hasTypeJsonImportAttribute(node)) { + error2(node.moduleSpecifier, Diagnostics.Importing_a_JSON_file_into_an_ECMAScript_module_requires_a_type_Colon_json_import_attribute_when_module_is_set_to_0, ModuleKind[moduleKind]); + } } else if (noUncheckedSideEffectImports && !importClause) { void resolveExternalModuleName(node, node.moduleSpecifier); } } checkImportAttributes(node); } + function hasTypeJsonImportAttribute(node) { + return !!node.attributes && node.attributes.elements.some((attr) => { + var _a; + return getTextOfIdentifierOrLiteral(attr.name) === "type" && ((_a = tryCast(attr.value, isStringLiteralLike)) == null ? void 0 : _a.text) === "json"; + }); + } function checkImportEqualsDeclaration(node) { if (checkGrammarModuleElementContext(node, isInJSFile(node) ? Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module : Diagnostics.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)) { return; @@ -89148,6 +89709,7 @@ function createTypeChecker(host) { return checkJSDocPropertyTag(node); case 317 /* JSDocFunctionType */: checkJSDocFunctionType(node); + // falls through case 315 /* JSDocNonNullableType */: case 314 /* JSDocNullableType */: case 312 /* JSDocAllType */: @@ -89571,6 +90133,7 @@ function createTypeChecker(host) { switch (location.kind) { case 307 /* SourceFile */: if (!isExternalModule(location)) break; + // falls through case 267 /* ModuleDeclaration */: copyLocallyVisibleExportSymbols(getSymbolOfDeclaration(location).exports, meaning & 2623475 /* ModuleMember */); break; @@ -89582,6 +90145,9 @@ function createTypeChecker(host) { if (className) { copySymbol(location.symbol, meaning); } + // this fall-through is necessary because we would like to handle + // type parameter inside class expression similar to how we handle it in classDeclaration and interface Declaration. + // falls through case 263 /* ClassDeclaration */: case 264 /* InterfaceDeclaration */: if (!isStaticSymbol) { @@ -89690,6 +90256,7 @@ function createTypeChecker(host) { if (isPropertyAccessExpression(entityName.parent) && getLeftmostAccessExpression(entityName.parent) === entityName) { return void 0; } + // falls through case 4 /* ThisProperty */: case 2 /* ModuleExports */: return getSymbolOfDeclaration(entityName.parent.parent); @@ -89869,7 +90436,7 @@ function createTypeChecker(host) { } else if (isJSDocMemberName(name)) { return resolveJSDocMemberName(name); } - } else if (isTypeReferenceIdentifier(name)) { + } else if (isEntityName(name) && isTypeReferenceIdentifier(name)) { const meaning = name.parent.kind === 183 /* TypeReference */ ? 788968 /* Type */ : 1920 /* Namespace */; const symbol = resolveEntityName( name, @@ -89983,6 +90550,7 @@ function createTypeChecker(host) { if (!isThisInTypeQuery(node)) { return getSymbolOfNameOrPropertyAccessExpression(node); } + // falls through case 110 /* ThisKeyword */: const container = getThisContainer( node, @@ -90000,6 +90568,7 @@ function createTypeChecker(host) { if (isInExpressionContext(node)) { return checkExpression(node).symbol; } + // falls through case 197 /* ThisType */: return getTypeFromThisTypeNode(node).symbol; case 108 /* SuperKeyword */: @@ -90022,6 +90591,7 @@ function createTypeChecker(host) { if (isCallExpression(parent2) && isBindableObjectDefinePropertyCall(parent2) && parent2.arguments[1] === node) { return getSymbolOfDeclaration(parent2); } + // falls through case 9 /* NumericLiteral */: const objectType = isElementAccessExpression(parent2) ? parent2.argumentExpression === node ? getTypeOfExpression(parent2.expression) : void 0 : isLiteralTypeNode(parent2) && isIndexedAccessTypeNode(grandParent) ? getTypeFromTypeNode(grandParent.objectType) : void 0; return objectType && getPropertyOfType(objectType, escapeLeadingUnderscores(node.text)); @@ -90051,6 +90621,7 @@ function createTypeChecker(host) { const symbol = getIntrinsicTagSymbol(node.parent); return symbol === unknownSymbol ? void 0 : symbol; } + // falls through default: return void 0; } @@ -90456,7 +91027,7 @@ function createTypeChecker(host) { const typeNode = getNonlocalEffectiveTypeAnnotationNode(parameter); if (!typeNode) return false; const type = getTypeFromTypeNode(typeNode); - return containsUndefinedType(type); + return isErrorType(type) || containsUndefinedType(type); } function requiresAddingImplicitUndefined(parameter, enclosingDeclaration) { return (isRequiredInitializedParameter(parameter, enclosingDeclaration) || isOptionalUninitializedParameterProperty(parameter)) && !declaredParameterTypeContainsUndefined(parameter); @@ -90743,16 +91314,12 @@ function createTypeChecker(host) { } } function createTypeOfDeclaration(declarationIn, enclosingDeclaration, flags, internalFlags, tracker) { - const declaration = getParseTreeNode(declarationIn, isVariableLikeOrAccessor); + const declaration = getParseTreeNode(declarationIn, hasInferredType); if (!declaration) { return factory.createToken(133 /* AnyKeyword */); } const symbol = getSymbolOfDeclaration(declaration); - const type = symbol && !(symbol.flags & (2048 /* TypeLiteral */ | 131072 /* Signature */)) ? getWidenedLiteralType(getTypeOfSymbol(symbol)) : errorType; - return nodeBuilder.serializeTypeForDeclaration(declaration, type, symbol, enclosingDeclaration, flags | 1024 /* MultilineObjectLiterals */, internalFlags, tracker); - } - function isDeclarationWithPossibleInnerTypeNodeReuse(declaration) { - return isFunctionLike(declaration) || isExportAssignment(declaration) || isVariableLike(declaration); + return nodeBuilder.serializeTypeForDeclaration(declaration, symbol, enclosingDeclaration, flags | 1024 /* MultilineObjectLiterals */, internalFlags, tracker); } function getAllAccessorDeclarationsForDeclaration(accessor) { accessor = getParseTreeNode(accessor, isGetOrSetAccessorDeclaration); @@ -90769,52 +91336,19 @@ function createTypeChecker(host) { getAccessor }; } - function getPossibleTypeNodeReuseExpression(declaration) { - return isFunctionLike(declaration) && !isSetAccessor(declaration) ? getSingleReturnExpression(declaration) : isExportAssignment(declaration) ? declaration.expression : !!declaration.initializer ? declaration.initializer : isParameter(declaration) && isSetAccessor(declaration.parent) ? getSingleReturnExpression(getAllAccessorDeclarationsForDeclaration(declaration.parent).getAccessor) : void 0; - } - function getSingleReturnExpression(declaration) { - let candidateExpr; - if (declaration && !nodeIsMissing(declaration.body)) { - if (getFunctionFlags(declaration) & 3 /* AsyncGenerator */) return void 0; - const body = declaration.body; - if (body && isBlock(body)) { - forEachReturnStatement(body, (s) => { - if (!candidateExpr) { - candidateExpr = s.expression; - } else { - candidateExpr = void 0; - return true; - } - }); - } else { - candidateExpr = body; - } - } - return candidateExpr; - } function createReturnTypeOfSignatureDeclaration(signatureDeclarationIn, enclosingDeclaration, flags, internalFlags, tracker) { const signatureDeclaration = getParseTreeNode(signatureDeclarationIn, isFunctionLike); if (!signatureDeclaration) { return factory.createToken(133 /* AnyKeyword */); } - return nodeBuilder.serializeReturnTypeForSignature(getSignatureFromDeclaration(signatureDeclaration), enclosingDeclaration, flags | 1024 /* MultilineObjectLiterals */, internalFlags, tracker); + return nodeBuilder.serializeReturnTypeForSignature(signatureDeclaration, enclosingDeclaration, flags | 1024 /* MultilineObjectLiterals */, internalFlags, tracker); } function createTypeOfExpression(exprIn, enclosingDeclaration, flags, internalFlags, tracker) { const expr = getParseTreeNode(exprIn, isExpression); if (!expr) { return factory.createToken(133 /* AnyKeyword */); } - const type = getWidenedType(getRegularTypeOfExpression(expr)); - return nodeBuilder.expressionOrTypeToTypeNode( - expr, - type, - /*addUndefined*/ - void 0, - enclosingDeclaration, - flags | 1024 /* MultilineObjectLiterals */, - internalFlags, - tracker - ); + return nodeBuilder.serializeTypeForExpression(expr, enclosingDeclaration, flags | 1024 /* MultilineObjectLiterals */, internalFlags, tracker); } function hasGlobalName(name) { return globals.has(escapeLeadingUnderscores(name)); @@ -90965,22 +91499,6 @@ function createTypeChecker(host) { } return void 0; } - function getNonlocalEffectiveReturnTypeAnnotationNode(node) { - const direct = getEffectiveReturnTypeNode(node); - if (direct) { - return direct; - } - if (node.kind === 177 /* GetAccessor */) { - const other = getAllAccessorDeclarationsForDeclaration(node).setAccessor; - if (other) { - const param = getSetAccessorValueParameter(other); - if (param) { - return getEffectiveTypeAnnotationNode(param); - } - } - } - return void 0; - } function createResolver() { return { getReferencedExportContainer, @@ -91059,7 +91577,29 @@ function createTypeChecker(host) { return !sym.exports ? [] : nodeBuilder.symbolTableToDeclarationStatements(sym.exports, node, flags, internalFlags, tracker); }, isImportRequiredByAugmentation, - isDefinitelyReferenceToGlobalSymbolObject + isDefinitelyReferenceToGlobalSymbolObject, + createLateBoundIndexSignatures: (cls, enclosing, flags, internalFlags, tracker) => { + const sym = cls.symbol; + const staticInfos = getIndexInfosOfType(getTypeOfSymbol(sym)); + const instanceIndexSymbol = getIndexSymbol(sym); + const instanceInfos = instanceIndexSymbol && getIndexInfosOfIndexSymbol(instanceIndexSymbol, arrayFrom(getMembersOfSymbol(sym).values())); + let result; + for (const infoList of [staticInfos, instanceInfos]) { + if (!length(infoList)) continue; + result || (result = []); + for (const info of infoList) { + if (info.declaration) continue; + const node = nodeBuilder.indexInfoToIndexSignatureDeclaration(info, enclosing, flags, internalFlags, tracker); + if (node && infoList === staticInfos) { + (node.modifiers || (node.modifiers = factory.createNodeArray())).unshift(factory.createModifier(126 /* StaticKeyword */)); + } + if (node) { + result.push(node); + } + } + } + return result; + } }; function isImportRequiredByAugmentation(node) { const file = getSourceFileOfNode(node); @@ -91362,6 +91902,8 @@ function createTypeChecker(host) { return ["__propKey"]; case 16777216 /* AddDisposableResourceAndDisposeResources */: return ["__addDisposableResource", "__disposeResources"]; + case 33554432 /* RewriteRelativeImportExtension */: + return ["__rewriteRelativeImportExtension"]; default: return Debug.fail("Unrecognized helper"); } @@ -92145,6 +92687,7 @@ function createTypeChecker(host) { ); break; } + // fallthrough case 7 /* ES2022 */: case 99 /* ESNext */: case 200 /* Preserve */: @@ -92152,6 +92695,7 @@ function createTypeChecker(host) { if (languageVersion >= 4 /* ES2017 */) { break; } + // fallthrough default: diagnostics.add( createDiagnosticForNode(forInOrOfStatement.awaitModifier, Diagnostics.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_nodenext_or_preserve_and_the_target_option_is_set_to_es2017_or_higher) @@ -92509,7 +93053,7 @@ function createTypeChecker(host) { } return false; } - function allowLetAndConstDeclarations(parent2) { + function allowBlockDeclarations(parent2) { switch (parent2.kind) { case 245 /* IfStatement */: case 246 /* DoStatement */: @@ -92520,12 +93064,12 @@ function createTypeChecker(host) { case 250 /* ForOfStatement */: return false; case 256 /* LabeledStatement */: - return allowLetAndConstDeclarations(parent2.parent); + return allowBlockDeclarations(parent2.parent); } return true; } function checkGrammarForDisallowedBlockScopedVariableStatement(node) { - if (!allowLetAndConstDeclarations(node.parent)) { + if (!allowBlockDeclarations(node.parent)) { const blockScopeKind = getCombinedNodeFlagsCached(node.declarationList) & 7 /* BlockScoped */; if (blockScopeKind) { const keyword = blockScopeKind === 1 /* Let */ ? "let" : blockScopeKind === 2 /* Const */ ? "const" : blockScopeKind === 4 /* Using */ ? "using" : blockScopeKind === 6 /* AwaitUsing */ ? "await using" : Debug.fail("Unknown BlockScope flag"); @@ -92924,6 +93468,10 @@ var JsxNames; JsxNames2.IntrinsicClassAttributes = "IntrinsicClassAttributes"; JsxNames2.LibraryManagedAttributes = "LibraryManagedAttributes"; })(JsxNames || (JsxNames = {})); +var ReactNames; +((ReactNames2) => { + ReactNames2.Fragment = "Fragment"; +})(ReactNames || (ReactNames = {})); function getIterationTypesKeyFromIterationTypeKind(typeKind) { switch (typeKind) { case 0 /* Yield */: @@ -92949,7 +93497,7 @@ function createBasicNodeBuilderModuleSpecifierResolutionHost(host) { var _a; return (_a = host.getPackageJsonInfoCache) == null ? void 0 : _a.call(host); }, - useCaseSensitiveFileNames: maybeBind(host, host.useCaseSensitiveFileNames), + useCaseSensitiveFileNames: () => host.useCaseSensitiveFileNames(), redirectTargetsMap: host.redirectTargetsMap, getProjectReferenceRedirect: (fileName) => host.getProjectReferenceRedirect(fileName), isSourceOfProjectReferenceRedirect: (fileName) => host.isSourceOfProjectReferenceRedirect(fileName), @@ -92957,7 +93505,8 @@ function createBasicNodeBuilderModuleSpecifierResolutionHost(host) { getFileIncludeReasons: () => host.getFileIncludeReasons(), readFile: host.readFile ? (fileName) => host.readFile(fileName) : void 0, getDefaultResolutionModeForFile: (file) => host.getDefaultResolutionModeForFile(file), - getModeForResolutionAtIndex: (file, index) => host.getModeForResolutionAtIndex(file, index) + getModeForResolutionAtIndex: (file, index) => host.getModeForResolutionAtIndex(file, index), + getGlobalTypingsCacheLocation: maybeBind(host, host.getGlobalTypingsCacheLocation) }; } var SymbolTrackerImpl = class _SymbolTrackerImpl { @@ -93046,10 +93595,19 @@ var SymbolTrackerImpl = class _SymbolTrackerImpl { } reportInferenceFallback(node) { var _a; - if ((_a = this.inner) == null ? void 0 : _a.reportInferenceFallback) { + if (((_a = this.inner) == null ? void 0 : _a.reportInferenceFallback) && !this.context.suppressReportInferenceFallback) { + this.onDiagnosticReported(); this.inner.reportInferenceFallback(node); } } + pushErrorFallbackNode(node) { + var _a, _b; + return (_b = (_a = this.inner) == null ? void 0 : _a.pushErrorFallbackNode) == null ? void 0 : _b.call(_a, node); + } + popErrorFallbackNode() { + var _a, _b; + return (_b = (_a = this.inner) == null ? void 0 : _a.popErrorFallbackNode) == null ? void 0 : _b.call(_a); + } }; // src/compiler/visitorPublic.ts @@ -94328,13 +94886,13 @@ var visitEachChildTable = { ); }, // Transformation nodes - [354 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { + [355 /* PartiallyEmittedExpression */]: function visitEachChildOfPartiallyEmittedExpression(node, visitor, context, _nodesVisitor, nodeVisitor, _tokenVisitor) { return context.factory.updatePartiallyEmittedExpression( node, Debug.checkDefined(nodeVisitor(node.expression, visitor, isExpression)) ); }, - [355 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { + [356 /* CommaListExpression */]: function visitEachChildOfCommaListExpression(node, visitor, context, nodesVisitor, _nodeVisitor, _tokenVisitor) { return context.factory.updateCommaListExpression( node, nodesVisitor(node.elements, visitor, isExpression) @@ -95289,9 +95847,9 @@ function getDecoratorsOfParameters(node) { } return decorators; } -function getAllDecoratorsOfClass(node) { +function getAllDecoratorsOfClass(node, useLegacyDecorators) { const decorators = getDecorators(node); - const parameters = getDecoratorsOfParameters(getFirstConstructorWithBody(node)); + const parameters = useLegacyDecorators ? getDecoratorsOfParameters(getFirstConstructorWithBody(node)) : void 0; if (!some(decorators) && !some(parameters)) { return void 0; } @@ -95305,18 +95863,27 @@ function getAllDecoratorsOfClassElement(member, parent2, useLegacyDecorators) { case 177 /* GetAccessor */: case 178 /* SetAccessor */: if (!useLegacyDecorators) { - return getAllDecoratorsOfMethod(member); + return getAllDecoratorsOfMethod( + member, + /*useLegacyDecorators*/ + false + ); } - return getAllDecoratorsOfAccessors(member, parent2); + return getAllDecoratorsOfAccessors( + member, + parent2, + /*useLegacyDecorators*/ + true + ); case 174 /* MethodDeclaration */: - return getAllDecoratorsOfMethod(member); + return getAllDecoratorsOfMethod(member, useLegacyDecorators); case 172 /* PropertyDeclaration */: return getAllDecoratorsOfProperty(member); default: return void 0; } } -function getAllDecoratorsOfAccessors(accessor, parent2) { +function getAllDecoratorsOfAccessors(accessor, parent2, useLegacyDecorators) { if (!accessor.body) { return void 0; } @@ -95326,7 +95893,7 @@ function getAllDecoratorsOfAccessors(accessor, parent2) { return void 0; } const decorators = getDecorators(firstAccessorWithDecorators); - const parameters = getDecoratorsOfParameters(setAccessor); + const parameters = useLegacyDecorators ? getDecoratorsOfParameters(setAccessor) : void 0; if (!some(decorators) && !some(parameters)) { return void 0; } @@ -95337,12 +95904,12 @@ function getAllDecoratorsOfAccessors(accessor, parent2) { setDecorators: setAccessor && getDecorators(setAccessor) }; } -function getAllDecoratorsOfMethod(method) { +function getAllDecoratorsOfMethod(method, useLegacyDecorators) { if (!method.body) { return void 0; } const decorators = getDecorators(method); - const parameters = getDecoratorsOfParameters(method); + const parameters = useLegacyDecorators ? getDecoratorsOfParameters(method) : void 0; if (!some(decorators) && !some(parameters)) { return void 0; } @@ -95387,6 +95954,13 @@ function isSimpleParameter(node) { function isSimpleParameterList(nodes) { return every(nodes, isSimpleParameter); } +function rewriteModuleSpecifier(node, compilerOptions) { + if (!node || !isStringLiteral(node) || !shouldRewriteModuleSpecifier(node.text, compilerOptions)) { + return node; + } + const updatedText = changeExtension(node.text, getOutputExtension(node.text, compilerOptions)); + return updatedText !== node.text ? setOriginalNode(setTextRange(factory.createStringLiteral(updatedText, node.singleQuote), node), node) : node; +} // src/compiler/transformers/destructuring.ts var FlattenLevel = /* @__PURE__ */ ((FlattenLevel2) => { @@ -96210,7 +96784,7 @@ function transformTypeScript(context) { let currentNamespaceContainerName; let currentLexicalScope; let currentScopeFirstDeclarationsOfName; - let enabledSubstitutions; + let enabledSubstitutions = 0 /* None */; let applicableSubstitutions; return transformSourceFileOrBundle; function transformSourceFileOrBundle(node) { @@ -96440,6 +97014,8 @@ function transformTypeScript(context) { case 148 /* ReadonlyKeyword */: case 103 /* InKeyword */: case 147 /* OutKeyword */: + // TypeScript accessibility and readonly modifiers are elided + // falls through case 188 /* ArrayType */: case 189 /* TupleType */: case 190 /* OptionalType */: @@ -96468,6 +97044,8 @@ function transformTypeScript(context) { case 199 /* IndexedAccessType */: case 200 /* MappedType */: case 201 /* LiteralType */: + // TypeScript type nodes are elided. + // falls through case 181 /* IndexSignature */: return void 0; case 265 /* TypeAliasDeclaration */: @@ -97711,7 +98289,14 @@ function transformTypeScript(context) { return void 0; } if (!node.exportClause || isNamespaceExport(node.exportClause)) { - return node; + return factory2.updateExportDeclaration( + node, + node.modifiers, + node.isTypeOnly, + node.exportClause, + node.moduleSpecifier, + node.attributes + ); } const allowEmpty = !!compilerOptions.verbatimModuleSyntax; const exportClause = visitNode( @@ -97750,8 +98335,10 @@ function transformTypeScript(context) { return void 0; } if (isExternalModuleImportEqualsDeclaration(node)) { - const isReferenced = shouldEmitAliasDeclaration(node); - return isReferenced ? visitEachChild(node, visitor, context) : void 0; + if (!shouldEmitAliasDeclaration(node)) { + return void 0; + } + return visitEachChild(node, visitor, context); } if (!shouldEmitImportEqualsDeclaration(node)) { return void 0; @@ -98018,7 +98605,7 @@ function transformClassFields(context) { const previousOnEmitNode = context.onEmitNode; context.onEmitNode = onEmitNode; let shouldTransformPrivateStaticElementsInFile = false; - let enabledSubstitutions; + let enabledSubstitutions = 0 /* None */; let classAliases; let pendingExpressions; let pendingStatements; @@ -98150,7 +98737,7 @@ function transformClassFields(context) { /*discarded*/ true ); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return visitCommaListExpression( node, /*discarded*/ @@ -100090,6 +100677,7 @@ function transformClassFields(context) { if (isArrowFunction(original) || getEmitFlags(node) & 524288 /* AsyncFunctionBody */) { break; } + // falls through case 262 /* FunctionDeclaration */: case 176 /* Constructor */: case 177 /* GetAccessor */: @@ -100365,6 +100953,7 @@ function createRuntimeTypeSerializer(context) { case 197 /* ThisType */: case 205 /* ImportType */: break; + // handle JSDoc types from an invalid parse case 312 /* JSDocAllType */: case 313 /* JSDocUnknownType */: case 317 /* JSDocFunctionType */: @@ -100964,7 +101553,11 @@ function transformLegacyDecorators(context) { } } function generateConstructorDecorationExpression(node) { - const allDecorators = getAllDecoratorsOfClass(node); + const allDecorators = getAllDecoratorsOfClass( + node, + /*useLegacyDecorators*/ + true + ); const decoratorExpressions = transformAllDecoratorsOfDeclaration(allDecorators); if (!decoratorExpressions) { return void 0; @@ -101210,6 +101803,7 @@ function transformESDecorators(context) { return Debug.fail("Not supported outside of a class. Use 'classElementVisitor' instead."); case 169 /* Parameter */: return visitParameterDeclaration(node); + // Support NamedEvaluation to ensure the correct class name for class expressions. case 226 /* BinaryExpression */: return visitBinaryExpression( node, @@ -101230,7 +101824,7 @@ function transformESDecorators(context) { return visitForStatement(node); case 244 /* ExpressionStatement */: return visitExpressionStatement(node); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return visitCommaListExpression( node, /*discarded*/ @@ -101242,7 +101836,7 @@ function transformESDecorators(context) { /*discarded*/ false ); - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression( node, /*discarded*/ @@ -101266,6 +101860,7 @@ function transformESDecorators(context) { case 167 /* ComputedPropertyName */: return visitComputedPropertyName(node); case 174 /* MethodDeclaration */: + // object literal methods and accessors case 178 /* SetAccessor */: case 177 /* GetAccessor */: case 218 /* FunctionExpression */: @@ -101328,7 +101923,7 @@ function transformESDecorators(context) { /*discarded*/ true ); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return visitCommaListExpression( node, /*discarded*/ @@ -101474,7 +102069,11 @@ function transformESDecorators(context) { let syntheticConstructor; let heritageClauses; let shouldTransformPrivateStaticElementsInClass = false; - const classDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClass(node)); + const classDecorators = transformAllDecoratorsOfDeclaration(getAllDecoratorsOfClass( + node, + /*useLegacyDecorators*/ + false + )); if (classDecorators) { classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */ | 32 /* FileLevel */); classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */ | 32 /* FileLevel */); @@ -102947,7 +103546,7 @@ function transformES2017(context) { const resolver = context.getEmitResolver(); const compilerOptions = context.getCompilerOptions(); const languageVersion = getEmitScriptTarget(compilerOptions); - let enabledSubstitutions; + let enabledSubstitutions = 0 /* None */; let enclosingSuperContainerFlags = 0; let enclosingFunctionParameterNames; let capturedSuperProperties; @@ -103822,7 +104421,7 @@ function transformES2018(context) { const previousOnSubstituteNode = context.onSubstituteNode; context.onSubstituteNode = onSubstituteNode; let exportedVariableStatement = false; - let enabledSubstitutions; + let enabledSubstitutions = 0 /* None */; let enclosingFunctionFlags; let parametersWithPrecedingObjectRestOrSpread; let enclosingSuperContainerFlags = 0; @@ -103910,7 +104509,7 @@ function transformES2018(context) { return visitObjectLiteralExpression(node); case 226 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 299 /* CatchClause */: return visitCatchClause(node); @@ -106957,7 +107556,7 @@ function transformES2015(context) { ); } let convertedLoopState; - let enabledSubstitutions; + let enabledSubstitutions = 0 /* None */; return chainBundle(context, transformSourceFile); function transformSourceFile(node) { if (node.isDeclarationFile) { @@ -107050,6 +107649,7 @@ function transformES2015(context) { switch (node.kind) { case 126 /* StaticKeyword */: return void 0; + // elide static keyword case 263 /* ClassDeclaration */: return visitClassDeclaration(node); case 231 /* ClassExpression */: @@ -107128,7 +107728,7 @@ function transformES2015(context) { return visitParenthesizedExpression(node, expressionResultIsUnused2); case 226 /* BinaryExpression */: return visitBinaryExpression(node, expressionResultIsUnused2); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return visitCommaListExpression(node, expressionResultIsUnused2); case 15 /* NoSubstitutionTemplateLiteral */: case 16 /* TemplateHead */: @@ -107512,12 +108112,14 @@ function transformES2015(context) { return false; } switch (node.kind) { + // stop at function boundaries case 219 /* ArrowFunction */: case 218 /* FunctionExpression */: case 262 /* FunctionDeclaration */: case 176 /* Constructor */: case 175 /* ClassStaticBlockDeclaration */: return false; + // only step into computed property names for class and object literal elements case 177 /* GetAccessor */: case 178 /* SetAccessor */: case 174 /* MethodDeclaration */: @@ -107726,12 +108328,14 @@ function transformES2015(context) { return factory2.createPartiallyEmittedExpression(node.right, node); } switch (node.kind) { + // stop at function boundaries case 219 /* ArrowFunction */: case 218 /* FunctionExpression */: case 262 /* FunctionDeclaration */: case 176 /* Constructor */: case 175 /* ClassStaticBlockDeclaration */: return node; + // only step into computed property names for class and object literal elements case 177 /* GetAccessor */: case 178 /* SetAccessor */: case 174 /* MethodDeclaration */: @@ -107777,12 +108381,14 @@ function transformES2015(context) { ); } switch (node.kind) { + // stop at function boundaries case 219 /* ArrowFunction */: case 218 /* FunctionExpression */: case 262 /* FunctionDeclaration */: case 176 /* Constructor */: case 175 /* ClassStaticBlockDeclaration */: return node; + // only step into computed property names for class and object literal elements case 177 /* GetAccessor */: case 178 /* SetAccessor */: case 174 /* MethodDeclaration */: @@ -110414,7 +111020,7 @@ function transformGenerators(context) { switch (node.kind) { case 226 /* BinaryExpression */: return visitBinaryExpression(node); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return visitCommaListExpression(node); case 227 /* ConditionalExpression */: return visitConditionalExpression(node); @@ -112310,6 +112916,7 @@ function transformModule(context) { const moduleInfoMap = []; let currentSourceFile; let currentModuleInfo; + let importsAndRequiresToRewriteOrShim; const noSubstitution = []; let needUMDDynamicImportHelper; return chainBundle(context, transformSourceFile); @@ -112320,6 +112927,20 @@ function transformModule(context) { currentSourceFile = node; currentModuleInfo = collectExternalModuleInfo(context, node); moduleInfoMap[getOriginalNodeId(node)] = currentModuleInfo; + if (compilerOptions.rewriteRelativeImportExtensions) { + forEachDynamicImportOrRequireCall( + node, + /*includeTypeSpaceImports*/ + false, + /*requireStringLiteralLikeArgument*/ + false, + (node2) => { + if (!isStringLiteralLike(node2.arguments[0]) || shouldRewriteModuleSpecifier(node2.arguments[0].text, compilerOptions)) { + importsAndRequiresToRewriteOrShim = append(importsAndRequiresToRewriteOrShim, node2); + } + } + ); + } const transformModule2 = getTransformModuleDelegate(moduleKind); const updated = transformModule2(node); currentSourceFile = void 0; @@ -112791,7 +113412,7 @@ function transformModule(context) { } } function visitorWorker(node, valueIsDiscarded) { - if (!(node.transformFlags & (8388608 /* ContainsDynamicImport */ | 4096 /* ContainsDestructuringAssignment */ | 268435456 /* ContainsUpdateExpressionForIdentifier */))) { + if (!(node.transformFlags & (8388608 /* ContainsDynamicImport */ | 4096 /* ContainsDestructuringAssignment */ | 268435456 /* ContainsUpdateExpressionForIdentifier */)) && !(importsAndRequiresToRewriteOrShim == null ? void 0 : importsAndRequiresToRewriteOrShim.length)) { return node; } switch (node.kind) { @@ -112805,11 +113426,17 @@ function transformModule(context) { return visitExpressionStatement(node); case 217 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 213 /* CallExpression */: + const needsRewrite = node === firstOrUndefined(importsAndRequiresToRewriteOrShim); + if (needsRewrite) { + importsAndRequiresToRewriteOrShim.shift(); + } if (isImportCall(node) && host.shouldTransformImportCall(currentSourceFile)) { - return visitImportCallExpression(node); + return visitImportCallExpression(node, needsRewrite); + } else if (needsRewrite) { + return shimOrRewriteImportOrRequireCall(node); } break; case 226 /* BinaryExpression */: @@ -113101,13 +113728,27 @@ function transformModule(context) { } return visitEachChild(node, visitor, context); } - function visitImportCallExpression(node) { + function shimOrRewriteImportOrRequireCall(node) { + return factory2.updateCallExpression( + node, + node.expression, + /*typeArguments*/ + void 0, + visitNodes2(node.arguments, (arg) => { + if (arg === node.arguments[0]) { + return isStringLiteralLike(arg) ? rewriteModuleSpecifier(arg, compilerOptions) : emitHelpers().createRewriteRelativeImportExtensionsHelper(arg); + } + return visitor(arg); + }, isExpression) + ); + } + function visitImportCallExpression(node, rewriteOrShim) { if (moduleKind === 0 /* None */ && languageVersion >= 7 /* ES2020 */) { return visitEachChild(node, visitor, context); } const externalModuleName = getExternalModuleNameLiteral(factory2, node, currentSourceFile, host, resolver, compilerOptions); const firstArgument = visitNode(firstOrUndefined(node.arguments), visitor, isExpression); - const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument; + const argument = externalModuleName && (!firstArgument || !isStringLiteral(firstArgument) || firstArgument.text !== externalModuleName.text) ? externalModuleName : firstArgument && rewriteOrShim ? isStringLiteral(firstArgument) ? rewriteModuleSpecifier(firstArgument, compilerOptions) : emitHelpers().createRewriteRelativeImportExtensionsHelper(firstArgument) : firstArgument; const containsLexicalThis = !!(node.transformFlags & 16384 /* ContainsLexicalThis */); switch (compilerOptions.module) { case 2 /* AMD */: @@ -113438,7 +114079,7 @@ function transformModule(context) { const moduleName = getExternalModuleNameLiteral(factory2, importNode, currentSourceFile, host, resolver, compilerOptions); const args = []; if (moduleName) { - args.push(moduleName); + args.push(rewriteModuleSpecifier(moduleName, compilerOptions)); } return factory2.createCallExpression( factory2.createIdentifier("require"), @@ -114565,6 +115206,7 @@ function transformSystemModule(context) { if (!entry.importClause) { break; } + // falls through case 271 /* ImportEqualsDeclaration */: Debug.assert(importVariableName !== void 0); statements.push( @@ -115199,7 +115841,7 @@ function transformSystemModule(context) { return visitExpressionStatement(node); case 217 /* ParenthesizedExpression */: return visitParenthesizedExpression(node, valueIsDiscarded); - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: return visitPartiallyEmittedExpression(node, valueIsDiscarded); case 226 /* BinaryExpression */: if (isDestructuringAssignment(node)) { @@ -115532,6 +116174,8 @@ function transformECMAScriptModule(context) { context.onSubstituteNode = onSubstituteNode; context.enableEmitNotification(307 /* SourceFile */); context.enableSubstitution(80 /* Identifier */); + const noSubstitution = /* @__PURE__ */ new Set(); + let importsAndRequiresToRewriteOrShim; let helperNameSubstitutions; let currentSourceFile; let importRequireStatements; @@ -115543,7 +116187,22 @@ function transformECMAScriptModule(context) { if (isExternalModule(node) || getIsolatedModules(compilerOptions)) { currentSourceFile = node; importRequireStatements = void 0; + if (compilerOptions.rewriteRelativeImportExtensions && (currentSourceFile.flags & 4194304 /* PossiblyContainsDynamicImport */ || isInJSFile(node))) { + forEachDynamicImportOrRequireCall( + node, + /*includeTypeSpaceImports*/ + false, + /*requireStringLiteralLikeArgument*/ + false, + (node2) => { + if (!isStringLiteralLike(node2.arguments[0]) || shouldRewriteModuleSpecifier(node2.arguments[0].text, compilerOptions)) { + importsAndRequiresToRewriteOrShim = append(importsAndRequiresToRewriteOrShim, node2); + } + } + ); + } let result = updateExternalModule(node); + addEmitHelpers(result, context.readEmitHelpers()); currentSourceFile = void 0; if (importRequireStatements) { result = factory2.updateSourceFile( @@ -115566,7 +116225,7 @@ function transformECMAScriptModule(context) { if (externalHelpersImportDeclaration) { const statements = []; const statementOffset = factory2.copyPrologue(node.statements, statements); - append(statements, externalHelpersImportDeclaration); + addRange(statements, visitArray([externalHelpersImportDeclaration], visitor, isStatement)); addRange(statements, visitNodes2(node.statements, visitor, isStatement, statementOffset)); return factory2.updateSourceFile( node, @@ -115585,14 +116244,52 @@ function transformECMAScriptModule(context) { case 278 /* ExportDeclaration */: const exportDecl = node; return visitExportDeclaration(exportDecl); + case 272 /* ImportDeclaration */: + return visitImportDeclaration(node); + case 213 /* CallExpression */: + if (node === (importsAndRequiresToRewriteOrShim == null ? void 0 : importsAndRequiresToRewriteOrShim[0])) { + return visitImportOrRequireCall(importsAndRequiresToRewriteOrShim.shift()); + } + break; + default: + if ((importsAndRequiresToRewriteOrShim == null ? void 0 : importsAndRequiresToRewriteOrShim.length) && rangeContainsRange(node, importsAndRequiresToRewriteOrShim[0])) { + return visitEachChild(node, visitor, context); + } } return node; } + function visitImportDeclaration(node) { + if (!compilerOptions.rewriteRelativeImportExtensions) { + return node; + } + const updatedModuleSpecifier = rewriteModuleSpecifier(node.moduleSpecifier, compilerOptions); + if (updatedModuleSpecifier === node.moduleSpecifier) { + return node; + } + return factory2.updateImportDeclaration( + node, + node.modifiers, + node.importClause, + updatedModuleSpecifier, + node.attributes + ); + } + function visitImportOrRequireCall(node) { + return factory2.updateCallExpression( + node, + node.expression, + node.typeArguments, + [ + isStringLiteralLike(node.arguments[0]) ? rewriteModuleSpecifier(node.arguments[0], compilerOptions) : emitHelpers().createRewriteRelativeImportExtensionsHelper(node.arguments[0]), + ...node.arguments.slice(1) + ] + ); + } function createRequireCall2(importNode) { const moduleName = getExternalModuleNameLiteral(factory2, importNode, Debug.checkDefined(currentSourceFile), host, resolver, compilerOptions); const args = []; if (moduleName) { - args.push(moduleName); + args.push(rewriteModuleSpecifier(moduleName, compilerOptions)); } if (getEmitModuleKind(compilerOptions) === 200 /* Preserve */) { return factory2.createCallExpression( @@ -115737,11 +116434,16 @@ function transformECMAScriptModule(context) { return node; } function visitExportDeclaration(node) { - if (compilerOptions.module !== void 0 && compilerOptions.module > 5 /* ES2015 */) { - return node; - } - if (!node.exportClause || !isNamespaceExport(node.exportClause) || !node.moduleSpecifier) { - return node; + const updatedModuleSpecifier = rewriteModuleSpecifier(node.moduleSpecifier, compilerOptions); + if (compilerOptions.module !== void 0 && compilerOptions.module > 5 /* ES2015 */ || !node.exportClause || !isNamespaceExport(node.exportClause) || !node.moduleSpecifier) { + return !node.moduleSpecifier || updatedModuleSpecifier === node.moduleSpecifier ? node : factory2.updateExportDeclaration( + node, + node.modifiers, + node.isTypeOnly, + node.exportClause, + updatedModuleSpecifier, + node.attributes + ); } const oldIdentifier = node.exportClause.name; const synthName = factory2.getGeneratedNameForNode(oldIdentifier); @@ -115757,7 +116459,7 @@ function transformECMAScriptModule(context) { synthName ) ), - node.moduleSpecifier, + updatedModuleSpecifier, node.attributes ); setOriginalNode(importDecl, node.exportClause); @@ -115781,7 +116483,9 @@ function transformECMAScriptModule(context) { if ((isExternalModule(node) || getIsolatedModules(compilerOptions)) && compilerOptions.importHelpers) { helperNameSubstitutions = /* @__PURE__ */ new Map(); } + currentSourceFile = node; previousOnEmitNode(hint, node, emitCallback); + currentSourceFile = void 0; helperNameSubstitutions = void 0; } else { previousOnEmitNode(hint, node, emitCallback); @@ -115789,18 +116493,29 @@ function transformECMAScriptModule(context) { } function onSubstituteNode(hint, node) { node = previousOnSubstituteNode(hint, node); - if (helperNameSubstitutions && isIdentifier(node) && getEmitFlags(node) & 8192 /* HelperName */) { + if (node.id && noSubstitution.has(node.id)) { + return node; + } + if (isIdentifier(node) && getEmitFlags(node) & 8192 /* HelperName */) { return substituteHelperName(node); } return node; } function substituteHelperName(node) { - const name = idText(node); - let substitution = helperNameSubstitutions.get(name); - if (!substitution) { - helperNameSubstitutions.set(name, substitution = factory2.createUniqueName(name, 16 /* Optimistic */ | 32 /* FileLevel */)); + const externalHelpersModuleName = currentSourceFile && getExternalHelpersModuleName(currentSourceFile); + if (externalHelpersModuleName) { + noSubstitution.add(getNodeId(node)); + return factory2.createPropertyAccessExpression(externalHelpersModuleName, node); } - return substitution; + if (helperNameSubstitutions) { + const name = idText(node); + let substitution = helperNameSubstitutions.get(name); + if (!substitution) { + helperNameSubstitutions.set(name, substitution = factory2.createUniqueName(name, 16 /* Optimistic */ | 32 /* FileLevel */)); + } + return substitution; + } + return node; } } @@ -116150,8 +116865,8 @@ function createGetIsolatedDeclarationErrors(resolver) { [219 /* ArrowFunction */]: Diagnostics.Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations, [174 /* MethodDeclaration */]: Diagnostics.Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations, [180 /* ConstructSignature */]: Diagnostics.Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations, - [177 /* GetAccessor */]: Diagnostics.At_least_one_accessor_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations, - [178 /* SetAccessor */]: Diagnostics.At_least_one_accessor_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations, + [177 /* GetAccessor */]: Diagnostics.At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations, + [178 /* SetAccessor */]: Diagnostics.At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations, [169 /* Parameter */]: Diagnostics.Parameter_must_have_an_explicit_type_annotation_with_isolatedDeclarations, [260 /* VariableDeclaration */]: Diagnostics.Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations, [172 /* PropertyDeclaration */]: Diagnostics.Property_must_have_an_explicit_type_annotation_with_isolatedDeclarations, @@ -116280,7 +116995,7 @@ function createGetIsolatedDeclarationErrors(resolver) { if (!addUndefined && node.initializer) { return createExpressionError(node.initializer); } - const message = addUndefined ? Diagnostics.Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_it_s_type_This_is_not_supported_with_isolatedDeclarations : errorByDeclarationKind[node.kind]; + const message = addUndefined ? Diagnostics.Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_its_type_This_is_not_supported_with_isolatedDeclarations : errorByDeclarationKind[node.kind]; const diag2 = createDiagnosticForNode(node, message); const targetStr = getTextOfNode( node.name, @@ -116358,6 +117073,7 @@ function transformDeclarations(context) { let suppressNewDiagnosticContexts; const { factory: factory2 } = context; const host = context.getEmitHost(); + let restoreFallbackNode = () => void 0; const symbolTracker = { trackSymbol, reportInaccessibleThisError, @@ -116369,7 +117085,19 @@ function transformDeclarations(context) { moduleResolverHost: host, reportNonlocalAugmentation, reportNonSerializableProperty, - reportInferenceFallback + reportInferenceFallback, + pushErrorFallbackNode(node) { + const currentFallback = errorFallbackNode; + const currentRestore = restoreFallbackNode; + restoreFallbackNode = () => { + restoreFallbackNode = currentRestore; + errorFallbackNode = currentFallback; + }; + errorFallbackNode = node; + }, + popErrorFallbackNode() { + restoreFallbackNode(); + } }; let errorNameNode; let errorFallbackNode; @@ -116706,7 +117434,7 @@ function transformDeclarations(context) { ); } } - function ensureParameter(p, modifierMask, type) { + function ensureParameter(p, modifierMask) { let oldDiag; if (!suppressNewDiagnosticContexts) { oldDiag = getSymbolAccessibilityDiagnostic; @@ -116720,7 +117448,6 @@ function transformDeclarations(context) { resolver.isOptionalParameter(p) ? p.questionToken || factory2.createToken(58 /* QuestionToken */) : void 0, ensureType( p, - type || p.type, /*ignorePrivate*/ true ), @@ -116745,44 +117472,34 @@ function transformDeclarations(context) { } return void 0; } - function ensureType(node, type, ignorePrivate) { + function ensureType(node, ignorePrivate) { if (!ignorePrivate && hasEffectiveModifier(node, 2 /* Private */)) { return; } if (shouldPrintWithInitializer(node)) { return; } - const shouldAddImplicitUndefined = node.kind === 169 /* Parameter */ && resolver.requiresAddingImplicitUndefined(node, enclosingDeclaration); - if (type && !shouldAddImplicitUndefined) { - return visitNode(type, visitDeclarationSubtree, isTypeNode); + if (!isExportAssignment(node) && !isBindingElement(node) && node.type && (!isParameter(node) || !resolver.requiresAddingImplicitUndefined(node, enclosingDeclaration))) { + return visitNode(node.type, visitDeclarationSubtree, isTypeNode); } + const oldErrorNameNode = errorNameNode; errorNameNode = node.name; let oldDiag; if (!suppressNewDiagnosticContexts) { oldDiag = getSymbolAccessibilityDiagnostic; - getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(node); + if (canProduceDiagnostics(node)) { + getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(node); + } } let typeNode; - switch (node.kind) { - case 169 /* Parameter */: - case 171 /* PropertySignature */: - case 172 /* PropertyDeclaration */: - case 208 /* BindingElement */: - case 260 /* VariableDeclaration */: - typeNode = resolver.createTypeOfDeclaration(node, enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, symbolTracker); - break; - case 262 /* FunctionDeclaration */: - case 180 /* ConstructSignature */: - case 173 /* MethodSignature */: - case 174 /* MethodDeclaration */: - case 177 /* GetAccessor */: - case 179 /* CallSignature */: - typeNode = resolver.createReturnTypeOfSignatureDeclaration(node, enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, symbolTracker); - break; - default: - Debug.assertNever(node); + if (hasInferredType(node)) { + typeNode = resolver.createTypeOfDeclaration(node, enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, symbolTracker); + } else if (isFunctionLike(node)) { + typeNode = resolver.createReturnTypeOfSignatureDeclaration(node, enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, symbolTracker); + } else { + Debug.assertNever(node); } - errorNameNode = void 0; + errorNameNode = oldErrorNameNode; if (!suppressNewDiagnosticContexts) { getSymbolAccessibilityDiagnostic = oldDiag; } @@ -116798,6 +117515,7 @@ function transformDeclarations(context) { case 265 /* TypeAliasDeclaration */: case 266 /* EnumDeclaration */: return !resolver.isDeclarationVisible(node); + // The following should be doing their own visibility checks based on filtering their members case 260 /* VariableDeclaration */: return !getBindingNameVisible(node); case 271 /* ImportEqualsDeclaration */: @@ -116851,13 +117569,7 @@ function transformDeclarations(context) { if (!isPrivate) { const valueParameter = getSetAccessorValueParameter(input); if (valueParameter) { - const accessorType = getTypeAnnotationFromAllAccessorDeclarations(input, getAllAccessorDeclarations(isObjectLiteralExpression(input.parent) ? input.parent.properties : input.parent.members, input)); - newValueParameter = ensureParameter( - valueParameter, - /*modifierMask*/ - void 0, - accessorType - ); + newValueParameter = ensureParameter(valueParameter); } } if (!newValueParameter) { @@ -116889,7 +117601,7 @@ function transformDeclarations(context) { } return setCommentRange(updated, getCommentRange(original)); } - function rewriteModuleSpecifier(parent2, input) { + function rewriteModuleSpecifier2(parent2, input) { if (!input) return void 0; resultHasExternalModuleIndicator = resultHasExternalModuleIndicator || parent2.kind !== 267 /* ModuleDeclaration */ && parent2.kind !== 205 /* ImportType */; if (isStringLiteralLike(input)) { @@ -116911,7 +117623,7 @@ function transformDeclarations(context) { decl.modifiers, decl.isTypeOnly, decl.name, - factory2.updateExternalModuleReference(decl.moduleReference, rewriteModuleSpecifier(decl, specifier)) + factory2.updateExternalModuleReference(decl.moduleReference, rewriteModuleSpecifier2(decl, specifier)) ); } else { const oldDiag = getSymbolAccessibilityDiagnostic; @@ -116927,7 +117639,7 @@ function transformDeclarations(context) { decl, decl.modifiers, decl.importClause, - rewriteModuleSpecifier(decl, decl.moduleSpecifier), + rewriteModuleSpecifier2(decl, decl.moduleSpecifier), tryGetResolutionModeOverride(decl.attributes) ); } @@ -116943,7 +117655,7 @@ function transformDeclarations(context) { /*namedBindings*/ void 0 ), - rewriteModuleSpecifier(decl, decl.moduleSpecifier), + rewriteModuleSpecifier2(decl, decl.moduleSpecifier), tryGetResolutionModeOverride(decl.attributes) ); } @@ -116961,7 +117673,7 @@ function transformDeclarations(context) { visibleDefaultBinding, namedBindings ), - rewriteModuleSpecifier(decl, decl.moduleSpecifier), + rewriteModuleSpecifier2(decl, decl.moduleSpecifier), tryGetResolutionModeOverride(decl.attributes) ) : void 0; } @@ -116976,7 +117688,7 @@ function transformDeclarations(context) { visibleDefaultBinding, bindingList && bindingList.length ? factory2.updateNamedImports(decl.importClause.namedBindings, bindingList) : void 0 ), - rewriteModuleSpecifier(decl, decl.moduleSpecifier), + rewriteModuleSpecifier2(decl, decl.moduleSpecifier), tryGetResolutionModeOverride(decl.attributes) ); } @@ -116989,7 +117701,7 @@ function transformDeclarations(context) { decl.modifiers, /*importClause*/ void 0, - rewriteModuleSpecifier(decl, decl.moduleSpecifier), + rewriteModuleSpecifier2(decl, decl.moduleSpecifier), tryGetResolutionModeOverride(decl.attributes) ); } @@ -117108,7 +117820,7 @@ function transformDeclarations(context) { input, ensureTypeParams(input, input.typeParameters), updateParamsList(input, input.parameters), - ensureType(input, input.type) + ensureType(input) )); case 176 /* Constructor */: { const ctor = factory2.createConstructorDeclaration( @@ -117135,7 +117847,7 @@ function transformDeclarations(context) { input.questionToken, ensureTypeParams(input, input.typeParameters), updateParamsList(input, input.parameters), - ensureType(input, input.type), + ensureType(input), /*body*/ void 0 ); @@ -117148,13 +117860,12 @@ function transformDeclarations(context) { void 0 ); } - const accessorType = getTypeAnnotationFromAllAccessorDeclarations(input, getAllAccessorDeclarations(isObjectLiteralExpression(input.parent) ? input.parent.properties : input.parent.members, input)); return cleanup(factory2.updateGetAccessorDeclaration( input, ensureModifiers(input), input.name, updateAccessorParamsList(input, hasEffectiveModifier(input, 2 /* Private */)), - ensureType(input, accessorType), + ensureType(input), /*body*/ void 0 )); @@ -117187,7 +117898,7 @@ function transformDeclarations(context) { ensureModifiers(input), input.name, input.questionToken, - ensureType(input, input.type), + ensureType(input), ensureNoInitializer(input) )); case 171 /* PropertySignature */: @@ -117202,7 +117913,7 @@ function transformDeclarations(context) { ensureModifiers(input), input.name, input.questionToken, - ensureType(input, input.type) + ensureType(input) )); case 173 /* MethodSignature */: { if (isPrivateIdentifier(input.name)) { @@ -117218,7 +117929,7 @@ function transformDeclarations(context) { input.questionToken, ensureTypeParams(input, input.typeParameters), updateParamsList(input, input.parameters), - ensureType(input, input.type) + ensureType(input) )); } case 179 /* CallSignature */: { @@ -117227,7 +117938,7 @@ function transformDeclarations(context) { input, ensureTypeParams(input, input.typeParameters), updateParamsList(input, input.parameters), - ensureType(input, input.type) + ensureType(input) ) ); } @@ -117250,7 +117961,7 @@ function transformDeclarations(context) { input.name, /*exclamationToken*/ void 0, - ensureType(input, input.type), + ensureType(input), ensureNoInitializer(input) )); } @@ -117303,7 +118014,7 @@ function transformDeclarations(context) { if (!isLiteralImportTypeNode(input)) return cleanup(input); return cleanup(factory2.updateImportTypeNode( input, - factory2.updateLiteralTypeNode(input.argument, rewriteModuleSpecifier(input, input.argument.literal)), + factory2.updateLiteralTypeNode(input.argument, rewriteModuleSpecifier2(input, input.argument.literal)), input.attributes, input.qualifier, visitNodes2(input.typeArguments, visitDeclarationSubtree, isTypeNode), @@ -117356,7 +118067,7 @@ function transformDeclarations(context) { input.modifiers, input.isTypeOnly, input.exportClause, - rewriteModuleSpecifier(input, input.moduleSpecifier), + rewriteModuleSpecifier2(input, input.moduleSpecifier), tryGetResolutionModeOverride(input.attributes) ); } @@ -117374,11 +118085,12 @@ function transformDeclarations(context) { errorNode: input }); errorFallbackNode = input; + const type = ensureType(input); const varDecl = factory2.createVariableDeclaration( newId, /*exclamationToken*/ void 0, - resolver.createTypeOfExpression(input.expression, input, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, symbolTracker), + type, /*initializer*/ void 0 ); @@ -117475,7 +118187,7 @@ function transformDeclarations(context) { input.name, ensureTypeParams(input, input.typeParameters), updateParamsList(input, input.parameters), - ensureType(input, input.type), + ensureType(input), /*body*/ void 0 )); @@ -117606,7 +118318,7 @@ function transformDeclarations(context) { return cleanup(updateModuleDeclarationAndKeyword( input, mods, - isExternalModuleAugmentation(input) ? rewriteModuleSpecifier(input, input.name) : input.name, + isExternalModuleAugmentation(input) ? rewriteModuleSpecifier2(input, input.name) : input.name, body )); } else { @@ -117643,7 +118355,7 @@ function transformDeclarations(context) { ensureModifiers(param), param.name, param.questionToken, - ensureType(param, param.type), + ensureType(param), ensureNoInitializer(param) ), param @@ -117664,11 +118376,7 @@ function transformDeclarations(context) { elem.name, /*questionOrExclamationToken*/ void 0, - ensureType( - elem, - /*type*/ - void 0 - ), + ensureType(elem), /*initializer*/ void 0 )); @@ -117692,7 +118400,8 @@ function transformDeclarations(context) { void 0 ) ] : void 0; - const memberNodes = concatenate(concatenate(privateIdentifier, parameterProperties), visitNodes2(input.members, visitDeclarationSubtree, isClassElement)); + const lateIndexes = resolver.createLateBoundIndexSignatures(input, enclosingDeclaration, declarationEmitNodeBuilderFlags, declarationEmitInternalNodeBuilderFlags, symbolTracker); + const memberNodes = concatenate(concatenate(concatenate(privateIdentifier, lateIndexes), parameterProperties), visitNodes2(input.members, visitDeclarationSubtree, isClassElement)); const members = factory2.createNodeArray(memberNodes); const extendsClause = getEffectiveBaseTypeNode(input); if (extendsClause && !isEntityNameExpression(extendsClause.expression) && extendsClause.expression.kind !== 106 /* NullKeyword */) { @@ -117818,11 +118527,7 @@ function transformDeclarations(context) { e.name, /*exclamationToken*/ void 0, - ensureType( - e, - /*type*/ - void 0 - ), + ensureType(e), /*initializer*/ void 0 ); @@ -117872,18 +118577,6 @@ function transformDeclarations(context) { } return maskModifierFlags(node, mask2, additions); } - function getTypeAnnotationFromAllAccessorDeclarations(node, accessors) { - let accessorType = getTypeAnnotationFromAccessor(node); - if (!accessorType && node !== accessors.firstAccessor) { - accessorType = getTypeAnnotationFromAccessor(accessors.firstAccessor); - getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(accessors.firstAccessor); - } - if (!accessorType && accessors.secondAccessor && node !== accessors.secondAccessor) { - accessorType = getTypeAnnotationFromAccessor(accessors.secondAccessor); - getSymbolAccessibilityDiagnostic = createGetSymbolAccessibilityDiagnosticForNode(accessors.secondAccessor); - } - return accessorType; - } function transformHeritageClauses(nodes) { return factory2.createNodeArray(filter( map(nodes, (clause) => factory2.updateHeritageClause( @@ -117919,11 +118612,6 @@ function maskModifierFlags(node, modifierMask = 131071 /* All */ ^ 1 /* Public * } return flags; } -function getTypeAnnotationFromAccessor(accessor) { - if (accessor) { - return accessor.kind === 177 /* GetAccessor */ ? accessor.type : accessor.parameters.length > 0 ? accessor.parameters[0].type : void 0; - } -} function canHaveLiteralInitializer(node) { switch (node.kind) { case 172 /* PropertyDeclaration */: @@ -118079,7 +118767,7 @@ function noEmitNotification(hint, node, callback) { } function transformNodes(resolver, host, factory2, options, nodes, transformers, allowDtsFiles) { var _a, _b; - const enabledSyntaxKindFeatures = new Array(357 /* Count */); + const enabledSyntaxKindFeatures = new Array(358 /* Count */); let lexicalEnvironmentVariableDeclarations; let lexicalEnvironmentFunctionDeclarations; let lexicalEnvironmentStatements; @@ -119008,7 +119696,8 @@ var notImplementedResolver = { isBindingCapturedByNode: notImplemented, getDeclarationStatementsForSourceFile: notImplemented, isImportRequiredByAugmentation: notImplemented, - isDefinitelyReferenceToGlobalSymbolObject: notImplemented + isDefinitelyReferenceToGlobalSymbolObject: notImplemented, + createLateBoundIndexSignatures: notImplemented }; var createPrinterWithDefaults = /* @__PURE__ */ memoize(() => createPrinter({})); var createPrinterWithRemoveComments = /* @__PURE__ */ memoize(() => createPrinter({ removeComments: true })); @@ -119293,6 +119982,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { if (onEmitNode !== noEmitNotification && (!isEmitNotificationEnabled || isEmitNotificationEnabled(node))) { return pipelineEmitWithNotification; } + // falls through case 1 /* Substitution */: if (substituteNode !== noEmitSubstitution && (lastSubstitution = substituteNode(emitHint, node) || node) !== node) { if (currentParenthesizerRule) { @@ -119300,14 +119990,17 @@ function createPrinter(printerOptions = {}, handlers = {}) { } return pipelineEmitWithSubstitution; } + // falls through case 2 /* Comments */: if (shouldEmitComments(node)) { return pipelineEmitWithComments; } + // falls through case 3 /* SourceMaps */: if (shouldEmitSourceMaps(node)) { return pipelineEmitWithSourceMaps; } + // falls through case 4 /* Emit */: return pipelineEmitWithHint; default: @@ -119359,6 +120052,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } if (hint === 4 /* Unspecified */) { switch (node.kind) { + // Pseudo-literals case 16 /* TemplateHead */: case 17 /* TemplateMiddle */: case 18 /* TemplateTail */: @@ -119367,20 +120061,26 @@ function createPrinter(printerOptions = {}, handlers = {}) { /*jsxAttributeEscape*/ false ); + // Identifiers case 80 /* Identifier */: return emitIdentifier(node); + // PrivateIdentifiers case 81 /* PrivateIdentifier */: return emitPrivateIdentifier(node); + // Parse tree nodes + // Names case 166 /* QualifiedName */: return emitQualifiedName(node); case 167 /* ComputedPropertyName */: return emitComputedPropertyName(node); + // Signature elements case 168 /* TypeParameter */: return emitTypeParameter(node); case 169 /* Parameter */: return emitParameter(node); case 170 /* Decorator */: return emitDecorator(node); + // Type members case 171 /* PropertySignature */: return emitPropertySignature(node); case 172 /* PropertyDeclaration */: @@ -119402,6 +120102,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitConstructSignature(node); case 181 /* IndexSignature */: return emitIndexSignature(node); + // Types case 182 /* TypePredicate */: return emitTypePredicate(node); case 183 /* TypeReference */: @@ -119420,6 +120121,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitTupleType(node); case 190 /* OptionalType */: return emitOptionalType(node); + // SyntaxKind.RestType is handled below case 192 /* UnionType */: return emitUnionType(node); case 193 /* IntersectionType */: @@ -119450,16 +120152,19 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitTemplateTypeSpan(node); case 205 /* ImportType */: return emitImportTypeNode(node); + // Binding patterns case 206 /* ObjectBindingPattern */: return emitObjectBindingPattern(node); case 207 /* ArrayBindingPattern */: return emitArrayBindingPattern(node); case 208 /* BindingElement */: return emitBindingElement(node); + // Misc case 239 /* TemplateSpan */: return emitTemplateSpan(node); case 240 /* SemicolonClassElement */: return emitSemicolonClassElement(); + // Statements case 241 /* Block */: return emitBlock(node); case 243 /* VariableStatement */: @@ -119501,6 +120206,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitTryStatement(node); case 259 /* DebuggerStatement */: return emitDebuggerStatement(node); + // Declarations case 260 /* VariableDeclaration */: return emitVariableDeclaration(node); case 261 /* VariableDeclarationList */: @@ -119551,8 +120257,10 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitImportAttribute(node); case 282 /* MissingDeclaration */: return; + // Module references case 283 /* ExternalModuleReference */: return emitExternalModuleReference(node); + // JSX (non-expression) case 12 /* JsxText */: return emitJsxText(node); case 286 /* JsxOpeningElement */: @@ -119571,6 +120279,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitJsxExpression(node); case 295 /* JsxNamespacedName */: return emitJsxNamespacedName(node); + // Clauses case 296 /* CaseClause */: return emitCaseClause(node); case 297 /* DefaultClause */: @@ -119579,18 +120288,22 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitHeritageClause(node); case 299 /* CatchClause */: return emitCatchClause(node); + // Property assignments case 303 /* PropertyAssignment */: return emitPropertyAssignment(node); case 304 /* ShorthandPropertyAssignment */: return emitShorthandPropertyAssignment(node); case 305 /* SpreadAssignment */: return emitSpreadAssignment(node); + // Enum case 306 /* EnumMember */: return emitEnumMember(node); + // Top-level nodes case 307 /* SourceFile */: return emitSourceFile(node); case 308 /* Bundle */: return Debug.fail("Bundles should be printed using printBundle"); + // JSDoc nodes (only used in codefixes currently) case 309 /* JSDocTypeExpression */: return emitJSDocTypeExpression(node); case 310 /* JSDocNameReference */: @@ -119628,6 +120341,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { case 330 /* JSDocAuthorTag */: case 331 /* JSDocDeprecatedTag */: return; + // SyntaxKind.JSDocClassTag (see JSDocTag, above) case 333 /* JSDocPublicTag */: case 334 /* JSDocPrivateTag */: case 335 /* JSDocProtectedTag */: @@ -119637,6 +120351,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitJSDocCallbackTag(node); case 339 /* JSDocOverloadTag */: return emitJSDocOverloadTag(node); + // SyntaxKind.JSDocEnumTag (see below) case 341 /* JSDocParameterTag */: case 348 /* JSDocPropertyTag */: return emitJSDocPropertyLikeTag(node); @@ -119655,7 +120370,10 @@ function createPrinter(printerOptions = {}, handlers = {}) { return emitJSDocSeeTag(node); case 351 /* JSDocImportTag */: return emitJSDocImportTag(node); + // SyntaxKind.JSDocPropertyTag (see JSDocParameterTag, above) + // Transformation nodes case 353 /* NotEmittedStatement */: + case 354 /* NotEmittedTypeElement */: return; } if (isExpression(node)) { @@ -119673,6 +120391,7 @@ function createPrinter(printerOptions = {}, handlers = {}) { } if (hint === 1 /* Expression */) { switch (node.kind) { + // Literals case 9 /* NumericLiteral */: case 10 /* BigIntLiteral */: return emitNumericOrBigIntLiteral(node); @@ -119684,10 +120403,12 @@ function createPrinter(printerOptions = {}, handlers = {}) { /*jsxAttributeEscape*/ false ); + // Identifiers case 80 /* Identifier */: return emitIdentifier(node); case 81 /* PrivateIdentifier */: return emitPrivateIdentifier(node); + // Expressions case 209 /* ArrayLiteralExpression */: return emitArrayLiteralExpression(node); case 210 /* ObjectLiteralExpression */: @@ -119750,21 +120471,24 @@ function createPrinter(printerOptions = {}, handlers = {}) { return Debug.fail("SyntheticExpression should never be printed."); case 282 /* MissingDeclaration */: return; + // JSX case 284 /* JsxElement */: return emitJsxElement(node); case 285 /* JsxSelfClosingElement */: return emitJsxSelfClosingElement(node); case 288 /* JsxFragment */: return emitJsxFragment(node); + // Synthesized list case 352 /* SyntaxList */: return Debug.fail("SyntaxList should not be printed"); + // Transformation nodes case 353 /* NotEmittedStatement */: return; - case 354 /* PartiallyEmittedExpression */: + case 355 /* PartiallyEmittedExpression */: return emitPartiallyEmittedExpression(node); - case 355 /* CommaListExpression */: + case 356 /* CommaListExpression */: return emitCommaList(node); - case 356 /* SyntheticReferenceExpression */: + case 357 /* SyntheticReferenceExpression */: return Debug.fail("SyntheticReferenceExpression should not be printed"); } } @@ -120855,15 +121579,88 @@ function createPrinter(printerOptions = {}, handlers = {}) { return false; } function parenthesizeExpressionForNoAsi(node) { - if (!commentsDisabled && isPartiallyEmittedExpression(node) && willEmitLeadingNewLine(node)) { - const parseNode = getParseTreeNode(node); - if (parseNode && isParenthesizedExpression(parseNode)) { - const parens = factory.createParenthesizedExpression(node.expression); - setOriginalNode(parens, node); - setTextRange(parens, parseNode); - return parens; + if (!commentsDisabled) { + switch (node.kind) { + case 355 /* PartiallyEmittedExpression */: + if (willEmitLeadingNewLine(node)) { + const parseNode = getParseTreeNode(node); + if (parseNode && isParenthesizedExpression(parseNode)) { + const parens = factory.createParenthesizedExpression(node.expression); + setOriginalNode(parens, node); + setTextRange(parens, parseNode); + return parens; + } + return factory.createParenthesizedExpression(node); + } + return factory.updatePartiallyEmittedExpression( + node, + parenthesizeExpressionForNoAsi(node.expression) + ); + case 211 /* PropertyAccessExpression */: + return factory.updatePropertyAccessExpression( + node, + parenthesizeExpressionForNoAsi(node.expression), + node.name + ); + case 212 /* ElementAccessExpression */: + return factory.updateElementAccessExpression( + node, + parenthesizeExpressionForNoAsi(node.expression), + node.argumentExpression + ); + case 213 /* CallExpression */: + return factory.updateCallExpression( + node, + parenthesizeExpressionForNoAsi(node.expression), + node.typeArguments, + node.arguments + ); + case 215 /* TaggedTemplateExpression */: + return factory.updateTaggedTemplateExpression( + node, + parenthesizeExpressionForNoAsi(node.tag), + node.typeArguments, + node.template + ); + case 225 /* PostfixUnaryExpression */: + return factory.updatePostfixUnaryExpression( + node, + parenthesizeExpressionForNoAsi(node.operand) + ); + case 226 /* BinaryExpression */: + return factory.updateBinaryExpression( + node, + parenthesizeExpressionForNoAsi(node.left), + node.operatorToken, + node.right + ); + case 227 /* ConditionalExpression */: + return factory.updateConditionalExpression( + node, + parenthesizeExpressionForNoAsi(node.condition), + node.questionToken, + node.whenTrue, + node.colonToken, + node.whenFalse + ); + case 234 /* AsExpression */: + return factory.updateAsExpression( + node, + parenthesizeExpressionForNoAsi(node.expression), + node.type + ); + case 238 /* SatisfiesExpression */: + return factory.updateSatisfiesExpression( + node, + parenthesizeExpressionForNoAsi(node.expression), + node.type + ); + case 235 /* NonNullExpression */: + return factory.updateNonNullExpression( + node, + parenthesizeExpressionForNoAsi(node.expression) + ); } - return factory.createParenthesizedExpression(node); } return node; } @@ -123921,7 +124718,7 @@ function resolveTripleslashReference(moduleName, containingFile) { } function computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, getCanonicalFileName) { let commonPathComponents; - const failed = forEach(fileNames, (sourceFile) => { + const failed2 = forEach(fileNames, (sourceFile) => { const sourcePathComponents = getNormalizedPathComponents(sourceFile, currentDirectory); sourcePathComponents.pop(); if (!commonPathComponents) { @@ -123942,7 +124739,7 @@ function computeCommonSourceDirectoryOfFilenames(fileNames, currentDirectory, ge commonPathComponents.length = sourcePathComponents.length; } }); - if (failed) { + if (failed2) { return ""; } if (!commonPathComponents) { @@ -124458,15 +125255,22 @@ function forEachProjectReference(projectReferences, resolvedProjectReferences, c const result = cbRef(projectReferences2, parent2); if (result) return result; } - return forEach(resolvedProjectReferences2, (resolvedRef, index) => { - if (resolvedRef && (seenResolvedRefs == null ? void 0 : seenResolvedRefs.has(resolvedRef.sourceFile.path))) { - return void 0; + let skipChildren; + return forEach( + resolvedProjectReferences2, + (resolvedRef, index) => { + if (resolvedRef && (seenResolvedRefs == null ? void 0 : seenResolvedRefs.has(resolvedRef.sourceFile.path))) { + (skipChildren ?? (skipChildren = /* @__PURE__ */ new Set())).add(resolvedRef); + return void 0; + } + const result = cbResolvedRef(resolvedRef, parent2, index); + if (result || !resolvedRef) return result; + (seenResolvedRefs || (seenResolvedRefs = /* @__PURE__ */ new Set())).add(resolvedRef.sourceFile.path); } - const result = cbResolvedRef(resolvedRef, parent2, index); - if (result || !resolvedRef) return result; - (seenResolvedRefs || (seenResolvedRefs = /* @__PURE__ */ new Set())).add(resolvedRef.sourceFile.path); - return worker(resolvedRef.commandLine.projectReferences, resolvedRef.references, resolvedRef); - }); + ) || forEach( + resolvedProjectReferences2, + (resolvedRef) => resolvedRef && !(skipChildren == null ? void 0 : skipChildren.has(resolvedRef)) ? worker(resolvedRef.commandLine.projectReferences, resolvedRef.references, resolvedRef) : void 0 + ); } } var inferredTypesContainingFile = "__inferred type names__.ts"; @@ -124564,7 +125368,13 @@ function isProgramUptoDate(program, rootFileNames, newOptions, getSourceVersion, if (oldResolvedRef.commandLine.options.configFile !== newParsedCommandLine.options.configFile) return false; if (!arrayIsEqualTo(oldResolvedRef.commandLine.fileNames, newParsedCommandLine.fileNames)) return false; (seenResolvedRefs || (seenResolvedRefs = [])).push(oldResolvedRef); - return !forEach(oldResolvedRef.references, (childResolvedRef, index) => !resolvedProjectReferenceUptoDate(childResolvedRef, oldResolvedRef.commandLine.projectReferences[index])); + return !forEach( + oldResolvedRef.references, + (childResolvedRef, index) => !resolvedProjectReferenceUptoDate( + childResolvedRef, + oldResolvedRef.commandLine.projectReferences[index] + ) + ); } const refPath = resolveProjectReferencePath(oldRef); return !getParsedCommandLine(refPath); @@ -124839,7 +125649,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config const packageIdToSourceFile = /* @__PURE__ */ new Map(); let sourceFileToPackageName = /* @__PURE__ */ new Map(); let redirectTargetsMap = createMultiMap(); - let usesUriStyleNodeCoreModules = false; + let usesUriStyleNodeCoreModules; const filesByName = /* @__PURE__ */ new Map(); let missingFileNames = /* @__PURE__ */ new Map(); const filesByNameIgnoreCase = host.useCaseSensitiveFileNames() ? /* @__PURE__ */ new Map() : void 0; @@ -125084,7 +125894,8 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config getCanonicalFileName, getFileIncludeReasons: () => fileReasons, structureIsReused, - writeFile: writeFile2 + writeFile: writeFile2, + getGlobalTypingsCacheLocation: maybeBind(host, host.getGlobalTypingsCacheLocation) }; onProgramCreateComplete(); verifyCompilerOptions(); @@ -125159,7 +125970,11 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config return (_a2 = resolvedTypeReferenceDirectiveNames == null ? void 0 : resolvedTypeReferenceDirectiveNames.get(file.path)) == null ? void 0 : _a2.get(typeDirectiveName, mode); } function getResolvedTypeReferenceDirectiveFromTypeReferenceDirective(typeRef, sourceFile) { - return getResolvedTypeReferenceDirective(sourceFile, typeRef.fileName, typeRef.resolutionMode || sourceFile.impliedNodeFormat); + return getResolvedTypeReferenceDirective( + sourceFile, + typeRef.fileName, + getModeForTypeReferenceDirectiveInFile(typeRef, sourceFile) + ); } function forEachResolvedModule(callback, file) { forEachResolution(resolvedModules, callback, file); @@ -125546,10 +126361,11 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config const moduleNames = getModuleNames(newSourceFile); const resolutions = resolveModuleNamesReusingOldState(moduleNames, newSourceFile); (resolvedModulesProcessing ?? (resolvedModulesProcessing = /* @__PURE__ */ new Map())).set(newSourceFile.path, resolutions); + const optionsForFile = getCompilerOptionsForFile(newSourceFile); const resolutionsChanged = hasChangesInResolutions( moduleNames, resolutions, - (name) => oldProgram.getResolvedModule(newSourceFile, name.text, getModeForUsageLocation2(newSourceFile, name)), + (name) => oldProgram.getResolvedModule(newSourceFile, name.text, getModeForUsageLocationWorker(newSourceFile, name, optionsForFile)), moduleResolutionIsEqualTo ); if (resolutionsChanged) structureIsReused = 1 /* SafeModules */; @@ -125559,7 +126375,11 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config const typeReferenceResolutionsChanged = hasChangesInResolutions( typesReferenceDirectives, typeReferenceResolutions, - (name) => oldProgram.getResolvedTypeReferenceDirective(newSourceFile, getTypeReferenceResolutionName(name), getModeForFileReference(name, newSourceFile.impliedNodeFormat)), + (name) => oldProgram.getResolvedTypeReferenceDirective( + newSourceFile, + getTypeReferenceResolutionName(name), + getModeForTypeReferenceDirectiveInFile(name, newSourceFile) + ), typeDirectiveIsEqualTo ); if (typeReferenceResolutionsChanged) structureIsReused = 1 /* SafeModules */; @@ -125650,7 +126470,8 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config getFileIncludeReasons: program.getFileIncludeReasons, createHash: maybeBind(host, host.createHash), getModuleResolutionCache: () => program.getModuleResolutionCache(), - trace: maybeBind(host, host.trace) + trace: maybeBind(host, host.trace), + getGlobalTypingsCacheLocation: program.getGlobalTypingsCacheLocation }; } function writeFile2(fileName, text, writeByteOrderMark, onError, sourceFiles, data) { @@ -125947,6 +126768,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config diagnostics.push(createDiagnosticForNode2(node, Diagnostics.The_0_modifier_can_only_be_used_in_TypeScript_files, "?")); return "skip"; } + // falls through case 173 /* MethodSignature */: case 176 /* Constructor */: case 177 /* GetAccessor */: @@ -126078,6 +126900,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config diagnostics.push(createDiagnosticForNodeArray2(nodes, Diagnostics.Type_parameter_declarations_can_only_be_used_in_TypeScript_files)); return "skip"; } + // falls through case 243 /* VariableStatement */: if (nodes === parent2.modifiers) { checkModifiers(parent2.modifiers, parent2.kind === 243 /* VariableStatement */); @@ -126120,6 +126943,8 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config if (isConstValid) { continue; } + // to report error, + // falls through case 125 /* PublicKeyword */: case 123 /* PrivateKeyword */: case 124 /* ProtectedKeyword */: @@ -126131,6 +126956,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config case 147 /* OutKeyword */: diagnostics.push(createDiagnosticForNode2(modifier, Diagnostics.The_0_modifier_can_only_be_used_in_TypeScript_files, tokenToString(modifier.kind))); break; + // These are all legal modifiers. case 126 /* StaticKeyword */: case 95 /* ExportKeyword */: case 90 /* DefaultKeyword */: @@ -126244,7 +127070,21 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config ); } if (file.flags & 4194304 /* PossiblyContainsDynamicImport */ || isJavaScriptFile) { - collectDynamicImportOrRequireOrJsDocImportCalls(file); + forEachDynamicImportOrRequireCall( + file, + /*includeTypeSpaceImports*/ + true, + /*requireStringLiteralLikeArgument*/ + true, + (node, moduleSpecifier) => { + setParentRecursive( + node, + /*incremental*/ + false + ); + imports = append(imports, moduleSpecifier); + } + ); } file.imports = imports || emptyArray; file.moduleAugmentations = moduleAugmentations || emptyArray; @@ -126261,7 +127101,11 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config ); imports = append(imports, moduleNameExpr); if (!usesUriStyleNodeCoreModules && currentNodeModulesDepth === 0 && !file.isDeclarationFile) { - usesUriStyleNodeCoreModules = startsWith(moduleNameExpr.text, "node:"); + if (startsWith(moduleNameExpr.text, "node:") && !exclusivelyPrefixedNodeCoreModules.has(moduleNameExpr.text)) { + usesUriStyleNodeCoreModules = true; + } else if (usesUriStyleNodeCoreModules === void 0 && unprefixedNodeCoreModules.has(moduleNameExpr.text)) { + usesUriStyleNodeCoreModules = false; + } } } } else if (isModuleDeclaration(node)) { @@ -126288,63 +127132,6 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } } - function collectDynamicImportOrRequireOrJsDocImportCalls(file2) { - const r = /import|require/g; - while (r.exec(file2.text) !== null) { - const node = getNodeAtPosition(file2, r.lastIndex); - if (isJavaScriptFile && isRequireCall( - node, - /*requireStringLiteralLikeArgument*/ - true - )) { - setParentRecursive( - node, - /*incremental*/ - false - ); - imports = append(imports, node.arguments[0]); - } else if (isImportCall(node) && node.arguments.length >= 1 && isStringLiteralLike(node.arguments[0])) { - setParentRecursive( - node, - /*incremental*/ - false - ); - imports = append(imports, node.arguments[0]); - } else if (isLiteralImportTypeNode(node)) { - setParentRecursive( - node, - /*incremental*/ - false - ); - imports = append(imports, node.argument.literal); - } else if (isJavaScriptFile && isJSDocImportTag(node)) { - const moduleNameExpr = getExternalModuleName(node); - if (moduleNameExpr && isStringLiteral(moduleNameExpr) && moduleNameExpr.text) { - setParentRecursive( - node, - /*incremental*/ - false - ); - imports = append(imports, moduleNameExpr); - } - } - } - } - function getNodeAtPosition(sourceFile, position) { - let current = sourceFile; - const getContainingChild = (child) => { - if (child.pos <= position && (position < child.end || position === child.end && child.kind === 1 /* EndOfFileToken */)) { - return child; - } - }; - while (true) { - const child = isJavaScriptFile && hasJSDocNodes(current) && forEach(current.jsDoc, getContainingChild) || forEachChild(current, getContainingChild); - if (!child) { - return current; - } - current = child; - } - } } function getLibFileFromReference(ref) { var _a2; @@ -126710,8 +127497,8 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config const ref = file.typeReferenceDirectives[index]; const resolvedTypeReferenceDirective = resolutions[index]; const fileName = ref.fileName; - resolutionsInFile.set(fileName, getModeForFileReference(ref, file.impliedNodeFormat), resolvedTypeReferenceDirective); - const mode = ref.resolutionMode || getDefaultResolutionModeForFile2(file); + const mode = getModeForTypeReferenceDirectiveInFile(ref, file); + resolutionsInFile.set(fileName, mode, resolvedTypeReferenceDirective); processTypeReferenceDirective(fileName, mode, resolvedTypeReferenceDirective, { kind: 5 /* TypeReferenceDirective */, file: file.path, index }); } } @@ -126988,11 +127775,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } } const outputFile = options.outFile; - if (options.tsBuildInfoFile) { - if (!canEmitTsBuildInfo(options)) { - createDiagnosticForOptionName(Diagnostics.Option_tsBuildInfoFile_cannot_be_specified_without_specifying_option_incremental_or_composite_or_if_not_running_tsc_b, "tsBuildInfoFile"); - } - } else if (options.incremental && !outputFile && !options.configFilePath) { + if (!options.tsBuildInfoFile && options.incremental && !outputFile && !options.configFilePath) { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified)); } verifyDeprecatedCompilerOptions(); @@ -127173,7 +127956,7 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config createDiagnosticForOptionName(Diagnostics.Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System, "verbatimModuleSyntax"); } } - if (options.allowImportingTsExtensions && !(options.noEmit || options.emitDeclarationOnly)) { + if (options.allowImportingTsExtensions && !(options.noEmit || options.emitDeclarationOnly || options.rewriteRelativeImportExtensions)) { createOptionValueDiagnostic("allowImportingTsExtensions", Diagnostics.Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set); } const moduleResolution = getEmitModuleResolutionKind(options); @@ -127500,7 +128283,11 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config case 1 /* SourceFromProjectReference */: case 2 /* OutputFromProjectReference */: const referencedResolvedRef = Debug.checkDefined(resolvedProjectReferences == null ? void 0 : resolvedProjectReferences[reason.index]); - const referenceInfo = forEachProjectReference(projectReferences, resolvedProjectReferences, (resolvedRef, parent2, index2) => resolvedRef === referencedResolvedRef ? { sourceFile: (parent2 == null ? void 0 : parent2.sourceFile) || options.configFile, index: index2 } : void 0); + const referenceInfo = forEachProjectReference( + projectReferences, + resolvedProjectReferences, + (resolvedRef, parent2, index2) => resolvedRef === referencedResolvedRef ? { sourceFile: (parent2 == null ? void 0 : parent2.sourceFile) || options.configFile, index: index2 } : void 0 + ); if (!referenceInfo) return void 0; const { sourceFile, index } = referenceInfo; const referencesSyntax = forEachTsConfigPropArray(sourceFile, "references", (property) => isArrayLiteralExpression(property.initializer) ? property.initializer : void 0); @@ -127535,27 +128322,31 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config } function verifyProjectReferences() { const buildInfoPath = !options.suppressOutputPathCheck ? getTsBuildInfoEmitOutputFilePath(options) : void 0; - forEachProjectReference(projectReferences, resolvedProjectReferences, (resolvedRef, parent2, index) => { - const ref = (parent2 ? parent2.commandLine.projectReferences : projectReferences)[index]; - const parentFile = parent2 && parent2.sourceFile; - verifyDeprecatedProjectReference(ref, parentFile, index); - if (!resolvedRef) { - createDiagnosticForReference(parentFile, index, Diagnostics.File_0_not_found, ref.path); - return; - } - const options2 = resolvedRef.commandLine.options; - if (!options2.composite || options2.noEmit) { - const inputs = parent2 ? parent2.commandLine.fileNames : rootNames; - if (inputs.length) { - if (!options2.composite) createDiagnosticForReference(parentFile, index, Diagnostics.Referenced_project_0_must_have_setting_composite_Colon_true, ref.path); - if (options2.noEmit) createDiagnosticForReference(parentFile, index, Diagnostics.Referenced_project_0_may_not_disable_emit, ref.path); + forEachProjectReference( + projectReferences, + resolvedProjectReferences, + (resolvedRef, parent2, index) => { + const ref = (parent2 ? parent2.commandLine.projectReferences : projectReferences)[index]; + const parentFile = parent2 && parent2.sourceFile; + verifyDeprecatedProjectReference(ref, parentFile, index); + if (!resolvedRef) { + createDiagnosticForReference(parentFile, index, Diagnostics.File_0_not_found, ref.path); + return; + } + const options2 = resolvedRef.commandLine.options; + if (!options2.composite || options2.noEmit) { + const inputs = parent2 ? parent2.commandLine.fileNames : rootNames; + if (inputs.length) { + if (!options2.composite) createDiagnosticForReference(parentFile, index, Diagnostics.Referenced_project_0_must_have_setting_composite_Colon_true, ref.path); + if (options2.noEmit) createDiagnosticForReference(parentFile, index, Diagnostics.Referenced_project_0_may_not_disable_emit, ref.path); + } + } + if (!parent2 && buildInfoPath && buildInfoPath === getTsBuildInfoEmitOutputFilePath(options2)) { + createDiagnosticForReference(parentFile, index, Diagnostics.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1, buildInfoPath, ref.path); + hasEmitBlockingDiagnostics.set(toPath3(buildInfoPath), true); } } - if (!parent2 && buildInfoPath && buildInfoPath === getTsBuildInfoEmitOutputFilePath(options2)) { - createDiagnosticForReference(parentFile, index, Diagnostics.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1, buildInfoPath, ref.path); - hasEmitBlockingDiagnostics.set(toPath3(buildInfoPath), true); - } - }); + ); } function createDiagnosticForOptionPathKeyValue(key, valueIndex, message, ...args) { let needCompilerDiagnostic = true; @@ -127751,6 +128542,9 @@ function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _config function shouldTransformImportCall(sourceFile) { return shouldTransformImportCallWorker(sourceFile, getCompilerOptionsForFile(sourceFile)); } + function getModeForTypeReferenceDirectiveInFile(ref, sourceFile) { + return ref.resolutionMode || getDefaultResolutionModeForFile2(sourceFile); + } } function shouldTransformImportCallWorker(sourceFile, options) { const moduleKind = getEmitModuleKind(options); @@ -130008,6 +130802,9 @@ function canWatchDirectoryOrFile(pathComponents2, length2) { const perceivedOsRootLength = perceivedOsRootLengthForWatching(pathComponents2, length2); return length2 > perceivedOsRootLength + 1; } +function canWatchDirectoryOrFilePath(path) { + return canWatchDirectoryOrFile(getPathComponents(path)); +} function canWatchAtTypes(atTypes) { return canWatchAffectedPackageJsonOrNodeModulesOfAtTypes(getDirectoryPath(atTypes)); } @@ -130019,12 +130816,12 @@ function isInDirectoryPath(dirComponents, fileOrDirComponents) { return true; } function canWatchAffectedPackageJsonOrNodeModulesOfAtTypes(fileOrDirPath) { - return canWatchDirectoryOrFile(getPathComponents(fileOrDirPath)); + return canWatchDirectoryOrFilePath(fileOrDirPath); } function canWatchAffectingLocation(filePath) { return canWatchAffectedPackageJsonOrNodeModulesOfAtTypes(filePath); } -function getDirectoryToWatchFailedLookupLocation(failedLookupLocation, failedLookupLocationPath, rootDir, rootPath, rootPathComponents, getCurrentDirectory, preferNonRecursiveWatch) { +function getDirectoryToWatchFailedLookupLocation(failedLookupLocation, failedLookupLocationPath, rootDir, rootPath, rootPathComponents, isRootWatchable, getCurrentDirectory, preferNonRecursiveWatch) { const failedLookupPathComponents = getPathComponents(failedLookupLocationPath); failedLookupLocation = isRootedDiskPath(failedLookupLocation) ? normalizePath(failedLookupLocation) : getNormalizedAbsolutePath(failedLookupLocation, getCurrentDirectory()); const failedLookupComponents = getPathComponents(failedLookupLocation); @@ -130033,7 +130830,7 @@ function getDirectoryToWatchFailedLookupLocation(failedLookupLocation, failedLoo const nodeModulesIndex = failedLookupPathComponents.indexOf("node_modules"); if (nodeModulesIndex !== -1 && nodeModulesIndex + 1 <= perceivedOsRootLength + 1) return void 0; const lastNodeModulesIndex = failedLookupPathComponents.lastIndexOf("node_modules"); - if (isInDirectoryPath(rootPathComponents, failedLookupPathComponents)) { + if (isRootWatchable && isInDirectoryPath(rootPathComponents, failedLookupPathComponents)) { if (failedLookupPathComponents.length > rootPathComponents.length + 1) { return getDirectoryOfFailedLookupWatch( failedLookupComponents, @@ -130105,9 +130902,9 @@ function getDirectoryOfFailedLookupWatch(dirComponents, dirPathComponents, lengt packageDirPath: packageDirLength !== void 0 ? getPathFromPathComponents(dirPathComponents, packageDirLength) : void 0 }; } -function getDirectoryToWatchFailedLookupLocationFromTypeRoot(typeRoot, typeRootPath, rootPath, rootPathComponents, getCurrentDirectory, preferNonRecursiveWatch, filterCustomPath) { +function getDirectoryToWatchFailedLookupLocationFromTypeRoot(typeRoot, typeRootPath, rootPath, rootPathComponents, isRootWatchable, getCurrentDirectory, preferNonRecursiveWatch, filterCustomPath) { const typeRootPathComponents = getPathComponents(typeRootPath); - if (isInDirectoryPath(rootPathComponents, typeRootPathComponents)) { + if (isRootWatchable && isInDirectoryPath(rootPathComponents, typeRootPathComponents)) { return rootPath; } typeRoot = isRootedDiskPath(typeRoot) ? normalizePath(typeRoot) : getNormalizedAbsolutePath(typeRoot, getCurrentDirectory()); @@ -130148,10 +130945,10 @@ function createModuleResolutionLoaderUsingGlobalCache(containingFile, redirected function resolveModuleNameUsingGlobalCache(resolutionHost, moduleResolutionCache, moduleName, containingFile, compilerOptions, redirectedReference, mode) { const host = getModuleResolutionHost(resolutionHost); const primaryResult = resolveModuleName(moduleName, containingFile, compilerOptions, host, moduleResolutionCache, redirectedReference, mode); - if (!resolutionHost.getGlobalCache) { + if (!resolutionHost.getGlobalTypingsCacheLocation) { return primaryResult; } - const globalCache = resolutionHost.getGlobalCache(); + const globalCache = resolutionHost.getGlobalTypingsCacheLocation(); if (globalCache !== void 0 && !isExternalModuleNameRelative(moduleName) && !(primaryResult.resolvedModule && extensionIsTS(primaryResult.resolvedModule.extension))) { const { resolvedModule, failedLookupLocations, affectingLocations, resolutionDiagnostics } = loadModuleFromGlobalCache( Debug.checkDefined(resolutionHost.globalCacheResolutionModuleName)(moduleName), @@ -130215,6 +131012,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW const rootDir = getRootDirectoryOfResolutionCache(rootDirForResolution, getCurrentDirectory); const rootPath = resolutionHost.toPath(rootDir); const rootPathComponents = getPathComponents(rootPath); + const isRootWatchable = canWatchDirectoryOrFile(rootPathComponents); const isSymlinkCache = /* @__PURE__ */ new Map(); const packageDirWatchers = /* @__PURE__ */ new Map(); const dirPathToSymlinkPackageRefCount = /* @__PURE__ */ new Map(); @@ -130626,6 +131424,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW rootDir, rootPath, rootPathComponents, + isRootWatchable, getCurrentDirectory, resolutionHost.preferNonRecursiveWatch ); @@ -130814,6 +131613,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW rootDir, rootPath, rootPathComponents, + isRootWatchable, getCurrentDirectory, resolutionHost.preferNonRecursiveWatch ); @@ -130957,6 +131757,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW return false; } (failedLookupChecks || (failedLookupChecks = /* @__PURE__ */ new Set())).add(fileOrDirectoryPath); + (startsWithPathChecks || (startsWithPathChecks = /* @__PURE__ */ new Set())).add(fileOrDirectoryPath); const packagePath = parseNodeModuleFromPath( fileOrDirectoryPath, /*isFolder*/ @@ -131038,6 +131839,7 @@ function createResolutionCache(resolutionHost, rootDirForResolution, logChangesW resolutionHost.toPath(typeRoot), rootPath, rootPathComponents, + isRootWatchable, getCurrentDirectory, resolutionHost.preferNonRecursiveWatch, (dirPath2) => directoryWatchesOfFailedLookups.has(dirPath2) || dirPathToSymlinkPackageRefCount.has(dirPath2) @@ -131593,6 +132395,7 @@ function getSourceFileVersionAsHashFromText(host, text) { if (pos && text.charCodeAt(pos - 1) === 13 /* carriageReturn */) { pos--; } + // falls through case 13 /* carriageReturn */: break; default: @@ -131794,6 +132597,7 @@ function createWatchProgram(host) { let updateLevel; let missingFilesMap; let watchedWildcardDirectories; + let staleWatches = /* @__PURE__ */ new Map([[void 0, void 0]]); let timerToUpdateProgram; let timerToInvalidateFailedLookupResolutions; let parsedConfigs; @@ -131882,8 +132686,6 @@ function createWatchProgram(host) { const customHasInvalidLibResolutions = host.resolveLibrary ? maybeBind(host, host.hasInvalidatedLibResolutions) || returnTrue : returnFalse; builderProgram = readBuilderProgram(compilerOptions, compilerHost); synchronizeProgram(); - watchConfigFileWildCardDirectories(); - if (configFileName) updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); return configFileName ? { getCurrentProgram: getCurrentBuilderProgram, getProgram: updateProgram, close, getResolutionCache } : { getCurrentProgram: getCurrentBuilderProgram, getProgram: updateProgram, updateRootFileNames, close, getResolutionCache }; function close() { clearInvalidateResolutionsOfFailedLookupLocations(); @@ -131986,6 +132788,16 @@ function createWatchProgram(host) { compilerHost.directoryExists = originalDirectoryExists; compilerHost.createDirectory = originalCreateDirectory; compilerHost.writeFile = originalWriteFile; + staleWatches == null ? void 0 : staleWatches.forEach((configFile, configPath) => { + if (!configPath) { + watchConfigFileWildCardDirectories(); + if (configFileName) updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); + } else { + const config = parsedConfigs == null ? void 0 : parsedConfigs.get(configPath); + if (config) watchReferencedProject(configFile, configPath, config); + } + }); + staleWatches = void 0; return builderProgram; } function createNewProgram(hasInvalidatedResolutions, hasInvalidatedLibResolutions) { @@ -132178,7 +132990,13 @@ function createWatchProgram(host) { Debug.assert(configFileName); updateLevel = 0 /* Update */; rootFileNames = getFileNamesFromConfigSpecs(compilerOptions.configFile.configFileSpecs, getNormalizedAbsolutePath(getDirectoryPath(configFileName), currentDirectory), compilerOptions, parseConfigFileHost, extraFileExtensions); - if (updateErrorForNoInputFiles(rootFileNames, getNormalizedAbsolutePath(configFileName, currentDirectory), compilerOptions.configFile.configFileSpecs, configFileParsingDiagnostics, canConfigFileJsonReportNoInputFiles)) { + if (updateErrorForNoInputFiles( + rootFileNames, + getNormalizedAbsolutePath(configFileName, currentDirectory), + compilerOptions.configFile.configFileSpecs, + configFileParsingDiagnostics, + canConfigFileJsonReportNoInputFiles + )) { hasChangedConfigFileParsingErrors = true; } synchronizeProgram(); @@ -132192,9 +133010,8 @@ function createWatchProgram(host) { } parseConfigFile2(); hasChangedCompilerOptions = true; + (staleWatches ?? (staleWatches = /* @__PURE__ */ new Map())).set(void 0, void 0); synchronizeProgram(); - watchConfigFileWildCardDirectories(); - updateExtendedConfigFilesWatches(toPath3(configFileName), compilerOptions, watchOptions, WatchType.ExtendedConfigFile); } function parseConfigFile2() { Debug.assert(configFileName); @@ -132246,7 +133063,7 @@ function createWatchProgram(host) { } else { (parsedConfigs || (parsedConfigs = /* @__PURE__ */ new Map())).set(configPath, config = { parsedCommandLine }); } - watchReferencedProject(configFileName2, configPath, config); + (staleWatches ?? (staleWatches = /* @__PURE__ */ new Map())).set(configPath, configFileName2); return parsedCommandLine; } function getParsedCommandLineFromConfigFileHost(configFileName2) { @@ -133130,6 +133947,7 @@ function createBuildOrUpdateInvalidedProject(state, project, projectPath, projec queueReferencingProjects(state, project, projectPath, projectIndex, config, buildOrder, Debug.checkDefined(buildResult)); step++; break; + // Should never be done case 3 /* Done */: default: assertType(step); @@ -133165,7 +133983,13 @@ function getNextInvalidatedProjectCreateInfo(state, buildOrder, reportQueue) { watchPackageJsonFiles(state, project, projectPath, config); } else if (updateLevel === 1 /* RootNamesAndUpdate */) { config.fileNames = getFileNamesFromConfigSpecs(config.options.configFile.configFileSpecs, getDirectoryPath(project), config.options, state.parseConfigFileHost); - updateErrorForNoInputFiles(config.fileNames, project, config.options.configFile.configFileSpecs, config.errors, canJsonReportNoInputFiles(config.raw)); + updateErrorForNoInputFiles( + config.fileNames, + project, + config.options.configFile.configFileSpecs, + config.errors, + canJsonReportNoInputFiles(config.raw) + ); watchInputFiles(state, project, projectPath, config); watchPackageJsonFiles(state, project, projectPath, config); } @@ -133346,11 +134170,7 @@ function checkConfigFileUpToDateStatus(state, configFile, oldestOutputFileTime, } function getUpToDateStatusWorker(state, project, resolvedPath) { var _a, _b, _c, _d, _e; - if (!project.fileNames.length && !canJsonReportNoInputFiles(project.raw)) { - return { - type: 16 /* ContainerOnly */ - }; - } + if (isSolutionConfig(project)) return { type: 16 /* ContainerOnly */ }; let referenceStatuses; const force = !!state.options.force; if (project.projectReferences) { @@ -133670,6 +134490,7 @@ function queueReferencingProjects(state, project, projectPath, projectIndex, con status.type = 2 /* UpToDateWithUpstreamTypes */; break; } + // falls through case 15 /* UpToDateWithInputFileText */: case 2 /* UpToDateWithUpstreamTypes */: if (!(buildResult & 2 /* DeclarationOutputUnchanged */)) { @@ -134187,6 +135008,8 @@ function reportUpToDateStatus(state, configFileName, status) { relName(state, configFileName) ); case 16 /* ContainerOnly */: + // Don't report status on "solution" projects + // falls through case 13 /* ComputingUpstream */: break; default: @@ -134259,7 +135082,7 @@ function shouldBePretty(sys2, options) { return options.pretty; } function getOptionsForHelp(commandLine) { - return !!commandLine.options.all ? toSorted(optionDeclarations, (a, b) => compareStringsCaseInsensitive(a.name, b.name)) : filter(optionDeclarations.slice(), (v) => !!v.showInSimplifiedHelpView); + return !!commandLine.options.all ? toSorted(optionDeclarations.concat(tscBuildOption), (a, b) => compareStringsCaseInsensitive(a.name, b.name)) : filter(optionDeclarations.concat(tscBuildOption), (v) => !!v.showInSimplifiedHelpView); } function printVersion(sys2) { sys2.write(getDiagnosticText(Diagnostics.Version_0, version) + sys2.newLine); @@ -134583,7 +135406,7 @@ function printAllHelp(sys2, compilerOptions, buildOptions, watchOptions) { output = [...output, ...generateSectionOptionsOutput( sys2, getDiagnosticText(Diagnostics.BUILD_OPTIONS), - buildOptions, + filter(buildOptions, (option) => option !== tscBuildOption), /*subCategory*/ false, formatMessage(Diagnostics.Using_build_b_will_make_tsc_behave_more_like_a_build_orchestrator_than_a_compiler_This_is_used_to_trigger_building_composite_projects_which_you_can_learn_more_about_at_0, "https://aka.ms/tsc-composite-builds") @@ -134597,7 +135420,7 @@ function printBuildHelp(sys2, buildOptions) { output = [...output, ...generateSectionOptionsOutput( sys2, getDiagnosticText(Diagnostics.BUILD_OPTIONS), - buildOptions, + filter(buildOptions, (option) => option !== tscBuildOption), /*subCategory*/ false, formatMessage(Diagnostics.Using_build_b_will_make_tsc_behave_more_like_a_build_orchestrator_than_a_compiler_This_is_used_to_trigger_building_composite_projects_which_you_can_learn_more_about_at_0, "https://aka.ms/tsc-composite-builds") @@ -134634,10 +135457,6 @@ function printHelp(sys2, commandLine) { } function executeCommandLineWorker(sys2, cb, commandLine) { let reportDiagnostic = createDiagnosticReporter(sys2); - if (commandLine.options.build) { - reportDiagnostic(createCompilerDiagnostic(Diagnostics.Option_build_must_be_the_first_command_line_argument)); - return sys2.exit(1 /* DiagnosticsPresent_OutputsSkipped */); - } let configFileName; if (commandLine.options.locale) { validateLocaleAndSetLanguage(commandLine.options.locale, sys2, commandLine.errors); @@ -134783,16 +135602,16 @@ function executeCommandLineWorker(sys2, cb, commandLine) { } } } -function isBuild(commandLineArgs) { +function isBuildCommand(commandLineArgs) { if (commandLineArgs.length > 0 && commandLineArgs[0].charCodeAt(0) === 45 /* minus */) { const firstOption = commandLineArgs[0].slice(commandLineArgs[0].charCodeAt(1) === 45 /* minus */ ? 2 : 1).toLowerCase(); - return firstOption === "build" || firstOption === "b"; + return firstOption === tscBuildOption.name || firstOption === tscBuildOption.shortName; } return false; } function executeCommandLine(system, cb, commandLineArgs) { - if (isBuild(commandLineArgs)) { - const { buildOptions, watchOptions, projects, errors } = parseBuildCommand(commandLineArgs.slice(1)); + if (isBuildCommand(commandLineArgs)) { + const { buildOptions, watchOptions, projects, errors } = parseBuildCommand(commandLineArgs); if (buildOptions.generateCpuProfile && system.enableCPUProfiler) { system.enableCPUProfiler(buildOptions.generateCpuProfile, () => performBuild( system, @@ -135304,39 +136123,518 @@ function writeConfigFile(sys2, reportDiagnostic, options, fileNames) { } // src/compiler/expressionToTypeNode.ts +function syntacticResult(type, reportFallback = true) { + return { type, reportFallback }; +} +var notImplemented2 = syntacticResult( + /*type*/ + void 0, + /*reportFallback*/ + false +); +var alreadyReported = syntacticResult( + /*type*/ + void 0, + /*reportFallback*/ + false +); +var failed = syntacticResult( + /*type*/ + void 0, + /*reportFallback*/ + true +); function createSyntacticTypeNodeBuilder(options, resolver) { const strictNullChecks = getStrictOptionValue(options, "strictNullChecks"); return { - typeFromExpression, serializeTypeOfDeclaration, serializeReturnTypeForSignature, - serializeTypeOfExpression + serializeTypeOfExpression, + serializeTypeOfAccessor, + tryReuseExistingTypeNode(context, existing) { + if (!resolver.canReuseTypeNode(context, existing)) { + return void 0; + } + return tryReuseExistingTypeNode(context, existing); + } }; - function serializeExistingTypeAnnotation(type, addUndefined) { - return type !== void 0 && (!addUndefined || type && canAddUndefined(type)) ? true : void 0; + function reuseNode(context, node, range = node) { + return node === void 0 ? void 0 : resolver.markNodeReuse(context, node.flags & 16 /* Synthesized */ ? node : factory.cloneNode(node), range ?? node); + } + function tryReuseExistingTypeNode(context, existing) { + const { finalizeBoundary, startRecoveryScope, hadError, markError } = resolver.createRecoveryBoundary(context); + const transformed = visitNode(existing, visitExistingNodeTreeSymbols, isTypeNode); + if (!finalizeBoundary()) { + return void 0; + } + context.approximateLength += existing.end - existing.pos; + return transformed; + function visitExistingNodeTreeSymbols(node) { + if (hadError()) return node; + const recover = startRecoveryScope(); + const onExitNewScope = isNewScopeNode(node) ? resolver.enterNewScope(context, node) : void 0; + const result = visitExistingNodeTreeSymbolsWorker(node); + onExitNewScope == null ? void 0 : onExitNewScope(); + if (hadError()) { + if (isTypeNode(node) && !isTypePredicateNode(node)) { + recover(); + return resolver.serializeExistingTypeNode(context, node); + } + return node; + } + return result ? resolver.markNodeReuse(context, result, node) : void 0; + } + function tryVisitSimpleTypeNode(node) { + const innerNode = skipTypeParentheses(node); + switch (innerNode.kind) { + case 183 /* TypeReference */: + return tryVisitTypeReference(innerNode); + case 186 /* TypeQuery */: + return tryVisitTypeQuery(innerNode); + case 199 /* IndexedAccessType */: + return tryVisitIndexedAccess(innerNode); + case 198 /* TypeOperator */: + const typeOperatorNode = innerNode; + if (typeOperatorNode.operator === 143 /* KeyOfKeyword */) { + return tryVisitKeyOf(typeOperatorNode); + } + } + return visitNode(node, visitExistingNodeTreeSymbols, isTypeNode); + } + function tryVisitIndexedAccess(node) { + const resultObjectType = tryVisitSimpleTypeNode(node.objectType); + if (resultObjectType === void 0) { + return void 0; + } + return factory.updateIndexedAccessTypeNode(node, resultObjectType, visitNode(node.indexType, visitExistingNodeTreeSymbols, isTypeNode)); + } + function tryVisitKeyOf(node) { + Debug.assertEqual(node.operator, 143 /* KeyOfKeyword */); + const type = tryVisitSimpleTypeNode(node.type); + if (type === void 0) { + return void 0; + } + return factory.updateTypeOperatorNode(node, type); + } + function tryVisitTypeQuery(node) { + const { introducesError, node: exprName } = resolver.trackExistingEntityName(context, node.exprName); + if (!introducesError) { + return factory.updateTypeQueryNode( + node, + exprName, + visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode) + ); + } + const serializedName = resolver.serializeTypeName( + context, + node.exprName, + /*isTypeOf*/ + true + ); + if (serializedName) { + return resolver.markNodeReuse(context, serializedName, node.exprName); + } + } + function tryVisitTypeReference(node) { + if (resolver.canReuseTypeNode(context, node)) { + const { introducesError, node: newName } = resolver.trackExistingEntityName(context, node.typeName); + const typeArguments = visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode); + if (!introducesError) { + const updated = factory.updateTypeReferenceNode( + node, + newName, + typeArguments + ); + return resolver.markNodeReuse(context, updated, node); + } else { + const serializedName = resolver.serializeTypeName( + context, + node.typeName, + /*isTypeOf*/ + false, + typeArguments + ); + if (serializedName) { + return resolver.markNodeReuse(context, serializedName, node.typeName); + } + } + } + } + function visitExistingNodeTreeSymbolsWorker(node) { + var _a; + if (isJSDocTypeExpression(node)) { + return visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode); + } + if (isJSDocAllType(node) || node.kind === 319 /* JSDocNamepathType */) { + return factory.createKeywordTypeNode(133 /* AnyKeyword */); + } + if (isJSDocUnknownType(node)) { + return factory.createKeywordTypeNode(159 /* UnknownKeyword */); + } + if (isJSDocNullableType(node)) { + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createLiteralTypeNode(factory.createNull())]); + } + if (isJSDocOptionalType(node)) { + return factory.createUnionTypeNode([visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode), factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); + } + if (isJSDocNonNullableType(node)) { + return visitNode(node.type, visitExistingNodeTreeSymbols); + } + if (isJSDocVariadicType(node)) { + return factory.createArrayTypeNode(visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); + } + if (isJSDocTypeLiteral(node)) { + return factory.createTypeLiteralNode(map(node.jsDocPropertyTags, (t) => { + const name = visitNode(isIdentifier(t.name) ? t.name : t.name.right, visitExistingNodeTreeSymbols, isIdentifier); + const overrideTypeNode = resolver.getJsDocPropertyOverride(context, node, t); + return factory.createPropertySignature( + /*modifiers*/ + void 0, + name, + t.isBracketed || t.typeExpression && isJSDocOptionalType(t.typeExpression.type) ? factory.createToken(58 /* QuestionToken */) : void 0, + overrideTypeNode || t.typeExpression && visitNode(t.typeExpression.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(133 /* AnyKeyword */) + ); + })); + } + if (isTypeReferenceNode(node) && isIdentifier(node.typeName) && node.typeName.escapedText === "") { + return setOriginalNode(factory.createKeywordTypeNode(133 /* AnyKeyword */), node); + } + if ((isExpressionWithTypeArguments(node) || isTypeReferenceNode(node)) && isJSDocIndexSignature(node)) { + return factory.createTypeLiteralNode([factory.createIndexSignature( + /*modifiers*/ + void 0, + [factory.createParameterDeclaration( + /*modifiers*/ + void 0, + /*dotDotDotToken*/ + void 0, + "x", + /*questionToken*/ + void 0, + visitNode(node.typeArguments[0], visitExistingNodeTreeSymbols, isTypeNode) + )], + visitNode(node.typeArguments[1], visitExistingNodeTreeSymbols, isTypeNode) + )]); + } + if (isJSDocFunctionType(node)) { + if (isJSDocConstructSignature(node)) { + let newTypeNode; + return factory.createConstructorTypeNode( + /*modifiers*/ + void 0, + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), + mapDefined(node.parameters, (p, i) => p.name && isIdentifier(p.name) && p.name.escapedText === "new" ? (newTypeNode = p.type, void 0) : factory.createParameterDeclaration( + /*modifiers*/ + void 0, + getEffectiveDotDotDotForParameter(p), + resolver.markNodeReuse(context, factory.createIdentifier(getNameForJSDocFunctionParameter(p, i)), p), + factory.cloneNode(p.questionToken), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), + /*initializer*/ + void 0 + )), + visitNode(newTypeNode || node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(133 /* AnyKeyword */) + ); + } else { + return factory.createFunctionTypeNode( + visitNodes2(node.typeParameters, visitExistingNodeTreeSymbols, isTypeParameterDeclaration), + map(node.parameters, (p, i) => factory.createParameterDeclaration( + /*modifiers*/ + void 0, + getEffectiveDotDotDotForParameter(p), + resolver.markNodeReuse(context, factory.createIdentifier(getNameForJSDocFunctionParameter(p, i)), p), + factory.cloneNode(p.questionToken), + visitNode(p.type, visitExistingNodeTreeSymbols, isTypeNode), + /*initializer*/ + void 0 + )), + visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode) || factory.createKeywordTypeNode(133 /* AnyKeyword */) + ); + } + } + if (isThisTypeNode(node)) { + if (resolver.canReuseTypeNode(context, node)) { + return node; + } + markError(); + return node; + } + if (isTypeParameterDeclaration(node)) { + const { node: newName } = resolver.trackExistingEntityName(context, node.name); + return factory.updateTypeParameterDeclaration( + node, + visitNodes2(node.modifiers, visitExistingNodeTreeSymbols, isModifier), + // resolver.markNodeReuse(context, typeParameterToName(getDeclaredTypeOfSymbol(getSymbolOfDeclaration(node)), context), node), + newName, + visitNode(node.constraint, visitExistingNodeTreeSymbols, isTypeNode), + visitNode(node.default, visitExistingNodeTreeSymbols, isTypeNode) + ); + } + if (isIndexedAccessTypeNode(node)) { + const result = tryVisitIndexedAccess(node); + if (!result) { + markError(); + return node; + } + return result; + } + if (isTypeReferenceNode(node)) { + const result = tryVisitTypeReference(node); + if (result) { + return result; + } + markError(); + return node; + } + if (isLiteralImportTypeNode(node)) { + if (((_a = node.attributes) == null ? void 0 : _a.token) === 132 /* AssertKeyword */) { + markError(); + return node; + } + if (!resolver.canReuseTypeNode(context, node)) { + return resolver.serializeExistingTypeNode(context, node); + } + return factory.updateImportTypeNode( + node, + factory.updateLiteralTypeNode(node.argument, rewriteModuleSpecifier2(node, node.argument.literal)), + visitNode(node.attributes, visitExistingNodeTreeSymbols, isImportAttributes), + visitNode(node.qualifier, visitExistingNodeTreeSymbols, isEntityName), + visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode), + node.isTypeOf + ); + } + if (isNamedDeclaration(node) && node.name.kind === 167 /* ComputedPropertyName */ && !resolver.hasLateBindableName(node)) { + if (!hasDynamicName(node)) { + return visitEachChild2(node, visitExistingNodeTreeSymbols); + } + if (resolver.shouldRemoveDeclaration(context, node)) { + return void 0; + } + } + if (isFunctionLike(node) && !node.type || isPropertyDeclaration(node) && !node.type && !node.initializer || isPropertySignature(node) && !node.type && !node.initializer || isParameter(node) && !node.type && !node.initializer) { + let visited = visitEachChild2(node, visitExistingNodeTreeSymbols); + if (visited === node) { + visited = resolver.markNodeReuse(context, factory.cloneNode(node), node); + } + visited.type = factory.createKeywordTypeNode(133 /* AnyKeyword */); + if (isParameter(node)) { + visited.modifiers = void 0; + } + return visited; + } + if (isTypeQueryNode(node)) { + const result = tryVisitTypeQuery(node); + if (!result) { + markError(); + return node; + } + return result; + } + if (isComputedPropertyName(node) && isEntityNameExpression(node.expression)) { + const { node: result, introducesError } = resolver.trackExistingEntityName(context, node.expression); + if (!introducesError) { + return factory.updateComputedPropertyName(node, result); + } else { + const computedPropertyNameType = resolver.serializeTypeOfExpression(context, node.expression); + let literal; + if (isLiteralTypeNode(computedPropertyNameType)) { + literal = computedPropertyNameType.literal; + } else { + const evaluated = resolver.evaluateEntityNameExpression(node.expression); + const literalNode = typeof evaluated.value === "string" ? factory.createStringLiteral( + evaluated.value, + /*isSingleQuote*/ + void 0 + ) : typeof evaluated.value === "number" ? factory.createNumericLiteral( + evaluated.value, + /*numericLiteralFlags*/ + 0 + ) : void 0; + if (!literalNode) { + if (isImportTypeNode(computedPropertyNameType)) { + resolver.trackComputedName(context, node.expression); + } + return node; + } + literal = literalNode; + } + if (literal.kind === 11 /* StringLiteral */ && isIdentifierText(literal.text, getEmitScriptTarget(options))) { + return factory.createIdentifier(literal.text); + } + if (literal.kind === 9 /* NumericLiteral */ && !literal.text.startsWith("-")) { + return literal; + } + return factory.updateComputedPropertyName(node, literal); + } + } + if (isTypePredicateNode(node)) { + let parameterName; + if (isIdentifier(node.parameterName)) { + const { node: result, introducesError } = resolver.trackExistingEntityName(context, node.parameterName); + if (introducesError) markError(); + parameterName = result; + } else { + parameterName = factory.cloneNode(node.parameterName); + } + return factory.updateTypePredicateNode(node, factory.cloneNode(node.assertsModifier), parameterName, visitNode(node.type, visitExistingNodeTreeSymbols, isTypeNode)); + } + if (isTupleTypeNode(node) || isTypeLiteralNode(node) || isMappedTypeNode(node)) { + const visited = visitEachChild2(node, visitExistingNodeTreeSymbols); + const clone2 = resolver.markNodeReuse(context, visited === node ? factory.cloneNode(node) : visited, node); + const flags = getEmitFlags(clone2); + setEmitFlags(clone2, flags | (context.flags & 1024 /* MultilineObjectLiterals */ && isTypeLiteralNode(node) ? 0 : 1 /* SingleLine */)); + return clone2; + } + if (isStringLiteral(node) && !!(context.flags & 268435456 /* UseSingleQuotesForStringLiteralType */) && !node.singleQuote) { + const clone2 = factory.cloneNode(node); + clone2.singleQuote = true; + return clone2; + } + if (isConditionalTypeNode(node)) { + const checkType = visitNode(node.checkType, visitExistingNodeTreeSymbols, isTypeNode); + const disposeScope = resolver.enterNewScope(context, node); + const extendType = visitNode(node.extendsType, visitExistingNodeTreeSymbols, isTypeNode); + const trueType = visitNode(node.trueType, visitExistingNodeTreeSymbols, isTypeNode); + disposeScope(); + const falseType = visitNode(node.falseType, visitExistingNodeTreeSymbols, isTypeNode); + return factory.updateConditionalTypeNode( + node, + checkType, + extendType, + trueType, + falseType + ); + } + if (isTypeOperatorNode(node)) { + if (node.operator === 158 /* UniqueKeyword */ && node.type.kind === 155 /* SymbolKeyword */) { + if (!resolver.canReuseTypeNode(context, node)) { + markError(); + return node; + } + } else if (node.operator === 143 /* KeyOfKeyword */) { + const result = tryVisitKeyOf(node); + if (!result) { + markError(); + return node; + } + return result; + } + } + return visitEachChild2(node, visitExistingNodeTreeSymbols); + function visitEachChild2(node2, visitor) { + const nonlocalNode = !context.enclosingFile || context.enclosingFile !== getSourceFileOfNode(node2); + return visitEachChild( + node2, + visitor, + /*context*/ + void 0, + nonlocalNode ? visitNodesWithoutCopyingPositions : void 0 + ); + } + function visitNodesWithoutCopyingPositions(nodes, visitor, test, start, count) { + let result = visitNodes2(nodes, visitor, test, start, count); + if (result) { + if (result.pos !== -1 || result.end !== -1) { + if (result === nodes) { + result = factory.createNodeArray(nodes.slice(), nodes.hasTrailingComma); + } + setTextRangePosEnd(result, -1, -1); + } + } + return result; + } + function getEffectiveDotDotDotForParameter(p) { + return p.dotDotDotToken || (p.type && isJSDocVariadicType(p.type) ? factory.createToken(26 /* DotDotDotToken */) : void 0); + } + function getNameForJSDocFunctionParameter(p, index) { + return p.name && isIdentifier(p.name) && p.name.escapedText === "this" ? "this" : getEffectiveDotDotDotForParameter(p) ? `args` : `arg${index}`; + } + function rewriteModuleSpecifier2(parent2, lit) { + const newName = resolver.getModuleSpecifierOverride(context, parent2, lit); + if (newName) { + return setOriginalNode(factory.createStringLiteral(newName), lit); + } + return visitNode(lit, visitExistingNodeTreeSymbols, isStringLiteral); + } + } + } + function serializeExistingTypeNode(typeNode, context, addUndefined) { + if (!typeNode) return void 0; + let result; + if ((!addUndefined || canAddUndefined(typeNode)) && resolver.canReuseTypeNode(context, typeNode)) { + result = tryReuseExistingTypeNode(context, typeNode); + if (result !== void 0) { + result = addUndefinedIfNeeded( + result, + addUndefined, + /*owner*/ + void 0, + context + ); + } + } + return result; + } + function serializeTypeAnnotationOfDeclaration(declaredType, context, node, symbol, requiresAddingUndefined, useFallback = requiresAddingUndefined !== void 0) { + if (!declaredType) return void 0; + if (!resolver.canReuseTypeNodeAnnotation(context, node, declaredType, symbol, requiresAddingUndefined)) { + if (!requiresAddingUndefined || !resolver.canReuseTypeNodeAnnotation( + context, + node, + declaredType, + symbol, + /*requiresAddingUndefined*/ + false + )) { + return void 0; + } + } + let result; + if (!requiresAddingUndefined || canAddUndefined(declaredType)) { + result = serializeExistingTypeNode(declaredType, context, requiresAddingUndefined); + } + if (result !== void 0 || !useFallback) { + return result; + } + context.tracker.reportInferenceFallback(node); + return resolver.serializeExistingTypeNode(context, declaredType, requiresAddingUndefined) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */); + } + function serializeExistingTypeNodeWithFallback(typeNode, context, addUndefined, targetNode) { + if (!typeNode) return void 0; + const result = serializeExistingTypeNode(typeNode, context, addUndefined); + if (result !== void 0) { + return result; + } + context.tracker.reportInferenceFallback(targetNode ?? typeNode); + return resolver.serializeExistingTypeNode(context, typeNode, addUndefined) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */); + } + function serializeTypeOfAccessor(accessor, symbol, context) { + return typeFromAccessor(accessor, symbol, context) ?? inferAccessorType(accessor, resolver.getAllAccessorDeclarations(accessor), context, symbol); } function serializeTypeOfExpression(expr, context, addUndefined, preserveLiterals) { - return typeFromExpression( + const result = typeFromExpression( expr, context, /*isConstContext*/ false, addUndefined, preserveLiterals - ) ?? inferExpressionType(expr, context); + ); + return result.type !== void 0 ? result.type : inferExpressionType(expr, context, result.reportFallback); } - function serializeTypeOfDeclaration(node, context) { + function serializeTypeOfDeclaration(node, symbol, context) { switch (node.kind) { - case 171 /* PropertySignature */: - return serializeExistingTypeAnnotation(getEffectiveTypeAnnotationNode(node)); case 169 /* Parameter */: - return typeFromParameter(node, context); + case 341 /* JSDocParameterTag */: + return typeFromParameter(node, symbol, context); case 260 /* VariableDeclaration */: - return typeFromVariable(node, context); + return typeFromVariable(node, symbol, context); + case 171 /* PropertySignature */: + case 348 /* JSDocPropertyTag */: case 172 /* PropertyDeclaration */: - return typeFromProperty(node, context); + return typeFromProperty(node, symbol, context); case 208 /* BindingElement */: - return inferTypeOfDeclaration(node, context); + return inferTypeOfDeclaration(node, symbol, context); case 277 /* ExportAssignment */: return serializeTypeOfExpression( node.expression, @@ -135349,17 +136647,39 @@ function createSyntacticTypeNodeBuilder(options, resolver) { case 211 /* PropertyAccessExpression */: case 212 /* ElementAccessExpression */: case 226 /* BinaryExpression */: - return serializeExistingTypeAnnotation(getEffectiveTypeAnnotationNode(node)) || inferTypeOfDeclaration(node, context); + return typeFromExpandoProperty(node, symbol, context); case 303 /* PropertyAssignment */: - return typeFromExpression(node.initializer, context) || inferTypeOfDeclaration(node, context); + case 304 /* ShorthandPropertyAssignment */: + return typeFromPropertyAssignment(node, symbol, context); default: Debug.assertNever(node, `Node needs to be an inferrable node, found ${Debug.formatSyntaxKind(node.kind)}`); } } - function serializeReturnTypeForSignature(node, context) { + function typeFromPropertyAssignment(node, symbol, context) { + const typeAnnotation = getEffectiveTypeAnnotationNode(node); + let result; + if (typeAnnotation && resolver.canReuseTypeNodeAnnotation(context, node, typeAnnotation, symbol)) { + result = serializeExistingTypeNode(typeAnnotation, context); + } + if (!result && node.kind === 303 /* PropertyAssignment */) { + const initializer = node.initializer; + const type = isJSDocTypeAssertion(initializer) ? getJSDocTypeAssertionType(initializer) : initializer.kind === 234 /* AsExpression */ || initializer.kind === 216 /* TypeAssertionExpression */ ? initializer.type : void 0; + if (type && !isConstTypeReference(type)) { + result = serializeExistingTypeNode(type, context); + } + } + return result ?? inferTypeOfDeclaration( + node, + symbol, + context, + /*reportFallback*/ + false + ); + } + function serializeReturnTypeForSignature(node, symbol, context) { switch (node.kind) { case 177 /* GetAccessor */: - return typeFromAccessor(node, context); + return serializeTypeOfAccessor(node, symbol, context); case 174 /* MethodDeclaration */: case 262 /* FunctionDeclaration */: case 180 /* ConstructSignature */: @@ -135374,45 +136694,50 @@ function createSyntacticTypeNodeBuilder(options, resolver) { case 219 /* ArrowFunction */: case 317 /* JSDocFunctionType */: case 323 /* JSDocSignature */: - return createReturnFromSignature(node, context); + return createReturnFromSignature(node, symbol, context); default: Debug.assertNever(node, `Node needs to be an inferrable node, found ${Debug.formatSyntaxKind(node.kind)}`); } } - function getTypeAnnotationFromAccessor2(accessor) { + function getTypeAnnotationFromAccessor(accessor) { if (accessor) { - return accessor.kind === 177 /* GetAccessor */ ? getEffectiveReturnTypeNode(accessor) : accessor.parameters.length > 0 ? getEffectiveTypeAnnotationNode(accessor.parameters[0]) : void 0; + return accessor.kind === 177 /* GetAccessor */ ? isInJSFile(accessor) && getJSDocType(accessor) || getEffectiveReturnTypeNode(accessor) : getEffectiveSetAccessorTypeAnnotationNode(accessor); } } function getTypeAnnotationFromAllAccessorDeclarations(node, accessors) { - let accessorType = getTypeAnnotationFromAccessor2(node); + let accessorType = getTypeAnnotationFromAccessor(node); if (!accessorType && node !== accessors.firstAccessor) { - accessorType = getTypeAnnotationFromAccessor2(accessors.firstAccessor); + accessorType = getTypeAnnotationFromAccessor(accessors.firstAccessor); } if (!accessorType && accessors.secondAccessor && node !== accessors.secondAccessor) { - accessorType = getTypeAnnotationFromAccessor2(accessors.secondAccessor); + accessorType = getTypeAnnotationFromAccessor(accessors.secondAccessor); } return accessorType; } - function typeFromAccessor(node, context) { + function typeFromAccessor(node, symbol, context) { const accessorDeclarations = resolver.getAllAccessorDeclarations(node); const accessorType = getTypeAnnotationFromAllAccessorDeclarations(node, accessorDeclarations); - if (accessorType) { - return serializeExistingTypeAnnotation(accessorType); + if (accessorType && !isTypePredicateNode(accessorType)) { + return withNewScope(context, node, () => serializeTypeAnnotationOfDeclaration(accessorType, context, node, symbol) ?? inferTypeOfDeclaration(node, symbol, context)); } if (accessorDeclarations.getAccessor) { - return createReturnFromSignature(accessorDeclarations.getAccessor, context); + return withNewScope(context, accessorDeclarations.getAccessor, () => createReturnFromSignature( + accessorDeclarations.getAccessor, + /*symbol*/ + void 0, + context + )); } - return false; + return void 0; } - function typeFromVariable(node, context) { + function typeFromVariable(node, symbol, context) { + var _a; const declaredType = getEffectiveTypeAnnotationNode(node); + let resultType = failed; if (declaredType) { - return serializeExistingTypeAnnotation(declaredType); - } - let resultType; - if (node.initializer) { - if (!resolver.isExpandoFunctionDeclaration(node)) { + resultType = syntacticResult(serializeTypeAnnotationOfDeclaration(declaredType, context, node, symbol)); + } else if (node.initializer && (((_a = symbol.declarations) == null ? void 0 : _a.length) === 1 || countWhere(symbol.declarations, isVariableDeclaration) === 1)) { + if (!resolver.isExpandoFunctionDeclaration(node) && !isContextuallyTyped(node)) { resultType = typeFromExpression( node.initializer, context, @@ -135424,71 +136749,119 @@ function createSyntacticTypeNodeBuilder(options, resolver) { ); } } - return resultType ?? inferTypeOfDeclaration(node, context); + return resultType.type !== void 0 ? resultType.type : inferTypeOfDeclaration(node, symbol, context, resultType.reportFallback); } - function typeFromParameter(node, context) { + function typeFromParameter(node, symbol, context) { const parent2 = node.parent; if (parent2.kind === 178 /* SetAccessor */) { - return typeFromAccessor(parent2, context); + return serializeTypeOfAccessor( + parent2, + /*symbol*/ + void 0, + context + ); } const declaredType = getEffectiveTypeAnnotationNode(node); - const addUndefined = resolver.requiresAddingImplicitUndefined(node, context.enclosingDeclaration); - let resultType; + const addUndefined = resolver.requiresAddingImplicitUndefined(node, symbol, context.enclosingDeclaration); + let resultType = failed; if (declaredType) { - resultType = serializeExistingTypeAnnotation(declaredType, addUndefined); + resultType = syntacticResult(serializeTypeAnnotationOfDeclaration(declaredType, context, node, symbol, addUndefined)); + } else if (isParameter(node) && node.initializer && isIdentifier(node.name) && !isContextuallyTyped(node)) { + resultType = typeFromExpression( + node.initializer, + context, + /*isConstContext*/ + void 0, + addUndefined + ); + } + return resultType.type !== void 0 ? resultType.type : inferTypeOfDeclaration(node, symbol, context, resultType.reportFallback); + } + function typeFromExpandoProperty(node, symbol, context) { + const declaredType = getEffectiveTypeAnnotationNode(node); + let result; + if (declaredType) { + result = serializeTypeAnnotationOfDeclaration(declaredType, context, node, symbol); + } + const oldSuppressReportInferenceFallback = context.suppressReportInferenceFallback; + context.suppressReportInferenceFallback = true; + const resultType = result ?? inferTypeOfDeclaration( + node, + symbol, + context, + /*reportFallback*/ + false + ); + context.suppressReportInferenceFallback = oldSuppressReportInferenceFallback; + return resultType; + } + function typeFromProperty(node, symbol, context) { + const declaredType = getEffectiveTypeAnnotationNode(node); + const requiresAddingUndefined = resolver.requiresAddingImplicitUndefined(node, symbol, context.enclosingDeclaration); + let resultType = failed; + if (declaredType) { + resultType = syntacticResult(serializeTypeAnnotationOfDeclaration(declaredType, context, node, symbol, requiresAddingUndefined)); } else { - if (node.initializer && isIdentifier(node.name)) { + const initializer = isPropertyDeclaration(node) ? node.initializer : void 0; + if (initializer && !isContextuallyTyped(node)) { + const isReadonly = isDeclarationReadonly(node); resultType = typeFromExpression( - node.initializer, + initializer, context, /*isConstContext*/ void 0, - addUndefined + requiresAddingUndefined, + isReadonly ); } } - return resultType ?? inferTypeOfDeclaration(node, context); + return resultType.type !== void 0 ? resultType.type : inferTypeOfDeclaration(node, symbol, context, resultType.reportFallback); } - function typeFromProperty(node, context) { - const declaredType = getEffectiveTypeAnnotationNode(node); - if (declaredType) { - return serializeExistingTypeAnnotation(declaredType); + function inferTypeOfDeclaration(node, symbol, context, reportFallback = true) { + if (reportFallback) { + context.tracker.reportInferenceFallback(node); } - let resultType; - if (node.initializer) { - const isReadonly = isDeclarationReadonly(node); - resultType = typeFromExpression( - node.initializer, - context, - /*isConstContext*/ - void 0, - /*requiresAddingUndefined*/ - void 0, - isReadonly - ); + if (context.noInferenceFallback === true) { + return factory.createKeywordTypeNode(133 /* AnyKeyword */); } - return resultType ?? inferTypeOfDeclaration(node, context); + return resolver.serializeTypeOfDeclaration(context, node, symbol); } - function inferTypeOfDeclaration(node, context) { - context.tracker.reportInferenceFallback(node); - return false; - } - function inferExpressionType(node, context) { - context.tracker.reportInferenceFallback(node); - return false; + function inferExpressionType(node, context, reportFallback = true, requiresAddingUndefined) { + Debug.assert(!requiresAddingUndefined); + if (reportFallback) { + context.tracker.reportInferenceFallback(node); + } + if (context.noInferenceFallback === true) { + return factory.createKeywordTypeNode(133 /* AnyKeyword */); + } + return resolver.serializeTypeOfExpression(context, node) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */); } - function inferReturnTypeOfSignatureSignature(node, context) { - context.tracker.reportInferenceFallback(node); - return false; + function inferReturnTypeOfSignatureSignature(node, context, reportFallback) { + if (reportFallback) { + context.tracker.reportInferenceFallback(node); + } + if (context.noInferenceFallback === true) { + return factory.createKeywordTypeNode(133 /* AnyKeyword */); + } + return resolver.serializeReturnTypeForSignature(context, node) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */); } - function inferAccessorType(node, allAccessors, context) { + function inferAccessorType(node, allAccessors, context, symbol, reportFallback = true) { if (node.kind === 177 /* GetAccessor */) { - return createReturnFromSignature(node, context); + return createReturnFromSignature(node, symbol, context, reportFallback); } else { - context.tracker.reportInferenceFallback(node); - return false; + if (reportFallback) { + context.tracker.reportInferenceFallback(node); + } + const result = allAccessors.getAccessor && createReturnFromSignature(allAccessors.getAccessor, symbol, context, reportFallback); + return result ?? resolver.serializeTypeOfDeclaration(context, node, symbol) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */); } } + function withNewScope(context, node, fn) { + const cleanup = resolver.enterNewScope(context, node); + const result = fn(); + cleanup(); + return result; + } function typeFromTypeAssertion(expression, type, context, requiresAddingUndefined) { if (isConstTypeReference(type)) { return typeFromExpression( @@ -135499,10 +136872,7 @@ function createSyntacticTypeNodeBuilder(options, resolver) { requiresAddingUndefined ); } - if (requiresAddingUndefined && !canAddUndefined(type)) { - context.tracker.reportInferenceFallback(type); - } - return serializeExistingTypeAnnotation(type); + return syntacticResult(serializeExistingTypeNodeWithFallback(type, context, requiresAddingUndefined)); } function typeFromExpression(node, context, isConstContext = false, requiresAddingUndefined = false, preserveLiterals = false) { switch (node.kind) { @@ -135513,14 +136883,19 @@ function createSyntacticTypeNodeBuilder(options, resolver) { return typeFromExpression(node.expression, context, isConstContext, requiresAddingUndefined); case 80 /* Identifier */: if (resolver.isUndefinedIdentifierExpression(node)) { - return true; + return syntacticResult(createUndefinedTypeNode()); } break; case 106 /* NullKeyword */: - return true; + if (strictNullChecks) { + return syntacticResult(addUndefinedIfNeeded(factory.createLiteralTypeNode(factory.createNull()), requiresAddingUndefined, node, context)); + } else { + return syntacticResult(factory.createKeywordTypeNode(133 /* AnyKeyword */)); + } case 219 /* ArrowFunction */: case 218 /* FunctionExpression */: - return typeFromFunctionLikeExpression(node, context); + Debug.type(node); + return withNewScope(context, node, () => typeFromFunctionLikeExpression(node, context)); case 216 /* TypeAssertionExpression */: case 234 /* AsExpression */: const asExpression = node; @@ -135528,43 +136903,73 @@ function createSyntacticTypeNodeBuilder(options, resolver) { case 224 /* PrefixUnaryExpression */: const unaryExpression = node; if (isPrimitiveLiteralValue(unaryExpression)) { - if (unaryExpression.operand.kind === 10 /* BigIntLiteral */) { - return typeFromPrimitiveLiteral(); - } - if (unaryExpression.operand.kind === 9 /* NumericLiteral */) { - return typeFromPrimitiveLiteral(); - } + return typeFromPrimitiveLiteral( + unaryExpression.operator === 40 /* PlusToken */ ? unaryExpression.operand : unaryExpression, + unaryExpression.operand.kind === 10 /* BigIntLiteral */ ? 163 /* BigIntKeyword */ : 150 /* NumberKeyword */, + context, + isConstContext || preserveLiterals, + requiresAddingUndefined + ); } break; - case 9 /* NumericLiteral */: - return typeFromPrimitiveLiteral(); + case 209 /* ArrayLiteralExpression */: + return typeFromArrayLiteral(node, context, isConstContext, requiresAddingUndefined); + case 210 /* ObjectLiteralExpression */: + return typeFromObjectLiteral(node, context, isConstContext, requiresAddingUndefined); + case 231 /* ClassExpression */: + return syntacticResult(inferExpressionType( + node, + context, + /*reportFallback*/ + true, + requiresAddingUndefined + )); case 228 /* TemplateExpression */: if (!isConstContext && !preserveLiterals) { - return true; + return syntacticResult(factory.createKeywordTypeNode(154 /* StringKeyword */)); } break; - case 15 /* NoSubstitutionTemplateLiteral */: - case 11 /* StringLiteral */: - return typeFromPrimitiveLiteral(); - case 10 /* BigIntLiteral */: - return typeFromPrimitiveLiteral(); - case 112 /* TrueKeyword */: - case 97 /* FalseKeyword */: - return typeFromPrimitiveLiteral(); - case 209 /* ArrayLiteralExpression */: - return typeFromArrayLiteral(node, context, isConstContext); - case 210 /* ObjectLiteralExpression */: - return typeFromObjectLiteral(node, context, isConstContext); - case 231 /* ClassExpression */: - return inferExpressionType(node, context); + default: + let typeKind; + let primitiveNode = node; + switch (node.kind) { + case 9 /* NumericLiteral */: + typeKind = 150 /* NumberKeyword */; + break; + case 15 /* NoSubstitutionTemplateLiteral */: + primitiveNode = factory.createStringLiteral(node.text); + typeKind = 154 /* StringKeyword */; + break; + case 11 /* StringLiteral */: + typeKind = 154 /* StringKeyword */; + break; + case 10 /* BigIntLiteral */: + typeKind = 163 /* BigIntKeyword */; + break; + case 112 /* TrueKeyword */: + case 97 /* FalseKeyword */: + typeKind = 136 /* BooleanKeyword */; + break; + } + if (typeKind) { + return typeFromPrimitiveLiteral(primitiveNode, typeKind, context, isConstContext || preserveLiterals, requiresAddingUndefined); + } } - return void 0; + return failed; } function typeFromFunctionLikeExpression(fnNode, context) { - const returnType = serializeExistingTypeAnnotation(fnNode.type) ?? createReturnFromSignature(fnNode, context); - const typeParameters = reuseTypeParameters(fnNode.typeParameters); - const parameters = fnNode.parameters.every((p) => ensureParameter(p, context)); - return returnType && typeParameters && parameters; + const oldNoInferenceFallback = context.noInferenceFallback; + context.noInferenceFallback = true; + createReturnFromSignature( + fnNode, + /*symbol*/ + void 0, + context + ); + reuseTypeParameters(fnNode.typeParameters, context); + fnNode.parameters.map((p) => ensureParameter(p, context)); + context.noInferenceFallback = oldNoInferenceFallback; + return notImplemented2; } function canGetTypeFromArrayLiteral(arrayLiteral, context, isConstContext) { if (!isConstContext) { @@ -135579,18 +136984,38 @@ function createSyntacticTypeNodeBuilder(options, resolver) { } return true; } - function typeFromArrayLiteral(arrayLiteral, context, isConstContext) { + function typeFromArrayLiteral(arrayLiteral, context, isConstContext, requiresAddingUndefined) { if (!canGetTypeFromArrayLiteral(arrayLiteral, context, isConstContext)) { - return false; + if (requiresAddingUndefined || isDeclaration(walkUpParenthesizedExpressions(arrayLiteral).parent)) { + return alreadyReported; + } + return syntacticResult(inferExpressionType( + arrayLiteral, + context, + /*reportFallback*/ + false, + requiresAddingUndefined + )); } - let canInferArray = true; + const oldNoInferenceFallback = context.noInferenceFallback; + context.noInferenceFallback = true; + const elementTypesInfo = []; for (const element of arrayLiteral.elements) { Debug.assert(element.kind !== 230 /* SpreadElement */); - if (element.kind !== 232 /* OmittedExpression */) { - canInferArray = (typeFromExpression(element, context, isConstContext) ?? inferExpressionType(element, context)) && canInferArray; + if (element.kind === 232 /* OmittedExpression */) { + elementTypesInfo.push( + createUndefinedTypeNode() + ); + } else { + const expressionType = typeFromExpression(element, context, isConstContext); + const elementType = expressionType.type !== void 0 ? expressionType.type : inferExpressionType(element, context, expressionType.reportFallback); + elementTypesInfo.push(elementType); } } - return true; + const tupleType = factory.createTupleTypeNode(elementTypesInfo); + tupleType.emitNode = { flags: 1, autoGenerate: void 0, internalFlags: 0 }; + context.noInferenceFallback = oldNoInferenceFallback; + return notImplemented2; } function canGetTypeFromObjectLiteral(objectLiteral, context) { let result = true; @@ -135621,64 +137046,214 @@ function createSyntacticTypeNodeBuilder(options, resolver) { } return result; } - function typeFromObjectLiteral(objectLiteral, context, isConstContext) { - if (!canGetTypeFromObjectLiteral(objectLiteral, context)) return false; - let canInferObjectLiteral = true; + function typeFromObjectLiteral(objectLiteral, context, isConstContext, requiresAddingUndefined) { + if (!canGetTypeFromObjectLiteral(objectLiteral, context)) { + if (requiresAddingUndefined || isDeclaration(walkUpParenthesizedExpressions(objectLiteral).parent)) { + return alreadyReported; + } + return syntacticResult(inferExpressionType( + objectLiteral, + context, + /*reportFallback*/ + false, + requiresAddingUndefined + )); + } + const oldNoInferenceFallback = context.noInferenceFallback; + context.noInferenceFallback = true; + const properties = []; + const oldFlags = context.flags; + context.flags |= 4194304 /* InObjectTypeLiteral */; for (const prop of objectLiteral.properties) { Debug.assert(!isShorthandPropertyAssignment(prop) && !isSpreadAssignment(prop)); const name = prop.name; + let newProp; switch (prop.kind) { case 174 /* MethodDeclaration */: - canInferObjectLiteral = !!typeFromObjectLiteralMethod(prop, name, context) && canInferObjectLiteral; + newProp = withNewScope(context, prop, () => typeFromObjectLiteralMethod(prop, name, context, isConstContext)); break; case 303 /* PropertyAssignment */: - canInferObjectLiteral = !!typeFromObjectLiteralPropertyAssignment(prop, name, context, isConstContext) && canInferObjectLiteral; + newProp = typeFromObjectLiteralPropertyAssignment(prop, name, context, isConstContext); break; case 178 /* SetAccessor */: case 177 /* GetAccessor */: - canInferObjectLiteral = !!typeFromObjectLiteralAccessor(prop, name, context) && canInferObjectLiteral; + newProp = typeFromObjectLiteralAccessor(prop, name, context); break; } + if (newProp) { + setCommentRange(newProp, prop); + properties.push(newProp); + } } - return canInferObjectLiteral; + context.flags = oldFlags; + const typeNode = factory.createTypeLiteralNode(properties); + if (!(context.flags & 1024 /* MultilineObjectLiterals */)) { + setEmitFlags(typeNode, 1 /* SingleLine */); + } + context.noInferenceFallback = oldNoInferenceFallback; + return notImplemented2; } function typeFromObjectLiteralPropertyAssignment(prop, name, context, isConstContext) { - return typeFromExpression(prop.initializer, context, isConstContext) ?? inferTypeOfDeclaration(prop, context); + const modifiers = isConstContext ? [factory.createModifier(148 /* ReadonlyKeyword */)] : []; + const expressionResult = typeFromExpression(prop.initializer, context, isConstContext); + const typeNode = expressionResult.type !== void 0 ? expressionResult.type : inferTypeOfDeclaration( + prop, + /*symbol*/ + void 0, + context, + expressionResult.reportFallback + ); + return factory.createPropertySignature( + modifiers, + reuseNode(context, name), + /*questionToken*/ + void 0, + typeNode + ); } function ensureParameter(p, context) { - return typeFromParameter(p, context); + return factory.updateParameterDeclaration( + p, + [], + reuseNode(context, p.dotDotDotToken), + resolver.serializeNameOfParameter(context, p), + resolver.isOptionalParameter(p) ? factory.createToken(58 /* QuestionToken */) : void 0, + typeFromParameter( + p, + /*symbol*/ + void 0, + context + ), + // Ignore private param props, since this type is going straight back into a param + /*initializer*/ + void 0 + ); } - function reuseTypeParameters(typeParameters) { - return (typeParameters == null ? void 0 : typeParameters.every( - (tp) => serializeExistingTypeAnnotation(tp.constraint) && serializeExistingTypeAnnotation(tp.default) - )) ?? true; + function reuseTypeParameters(typeParameters, context) { + return typeParameters == null ? void 0 : typeParameters.map( + (tp) => { + var _a; + return factory.updateTypeParameterDeclaration( + tp, + (_a = tp.modifiers) == null ? void 0 : _a.map((m) => reuseNode(context, m)), + reuseNode(context, tp.name), + serializeExistingTypeNodeWithFallback(tp.constraint, context), + serializeExistingTypeNodeWithFallback(tp.default, context) + ); + } + ); } - function typeFromObjectLiteralMethod(method, name, context) { - const returnType = createReturnFromSignature(method, context); - const typeParameters = reuseTypeParameters(method.typeParameters); - const parameters = method.parameters.every((p) => ensureParameter(p, context)); - return returnType && typeParameters && parameters; + function typeFromObjectLiteralMethod(method, name, context, isConstContext) { + const returnType = createReturnFromSignature( + method, + /*symbol*/ + void 0, + context + ); + const typeParameters = reuseTypeParameters(method.typeParameters, context); + const parameters = method.parameters.map((p) => ensureParameter(p, context)); + if (isConstContext) { + return factory.createPropertySignature( + [factory.createModifier(148 /* ReadonlyKeyword */)], + reuseNode(context, name), + reuseNode(context, method.questionToken), + factory.createFunctionTypeNode( + typeParameters, + parameters, + returnType + ) + ); + } else { + if (isIdentifier(name) && name.escapedText === "new") { + name = factory.createStringLiteral("new"); + } + return factory.createMethodSignature( + [], + reuseNode(context, name), + reuseNode(context, method.questionToken), + typeParameters, + parameters, + returnType + ); + } } function typeFromObjectLiteralAccessor(accessor, name, context) { const allAccessors = resolver.getAllAccessorDeclarations(accessor); - const getAccessorType = allAccessors.getAccessor && getTypeAnnotationFromAccessor2(allAccessors.getAccessor); - const setAccessorType = allAccessors.setAccessor && getTypeAnnotationFromAccessor2(allAccessors.setAccessor); + const getAccessorType = allAccessors.getAccessor && getTypeAnnotationFromAccessor(allAccessors.getAccessor); + const setAccessorType = allAccessors.setAccessor && getTypeAnnotationFromAccessor(allAccessors.setAccessor); if (getAccessorType !== void 0 && setAccessorType !== void 0) { - const parameters = accessor.parameters.every((p) => ensureParameter(p, context)); - if (isGetAccessor(accessor)) { - return parameters && serializeExistingTypeAnnotation(getAccessorType); - } else { - return parameters; - } + return withNewScope(context, accessor, () => { + const parameters = accessor.parameters.map((p) => ensureParameter(p, context)); + if (isGetAccessor(accessor)) { + return factory.updateGetAccessorDeclaration( + accessor, + [], + reuseNode(context, name), + parameters, + serializeExistingTypeNodeWithFallback(getAccessorType, context), + /*body*/ + void 0 + ); + } else { + return factory.updateSetAccessorDeclaration( + accessor, + [], + reuseNode(context, name), + parameters, + /*body*/ + void 0 + ); + } + }); } else if (allAccessors.firstAccessor === accessor) { - const foundType = getAccessorType ?? setAccessorType; - const propertyType = foundType ? serializeExistingTypeAnnotation(foundType) : inferAccessorType(accessor, allAccessors, context); - return propertyType; + const foundType = getAccessorType ? withNewScope(context, allAccessors.getAccessor, () => serializeExistingTypeNodeWithFallback(getAccessorType, context)) : setAccessorType ? withNewScope(context, allAccessors.setAccessor, () => serializeExistingTypeNodeWithFallback(setAccessorType, context)) : void 0; + const propertyType = foundType ?? inferAccessorType( + accessor, + allAccessors, + context, + /*symbol*/ + void 0 + ); + const propertySignature = factory.createPropertySignature( + allAccessors.setAccessor === void 0 ? [factory.createModifier(148 /* ReadonlyKeyword */)] : [], + reuseNode(context, name), + /*questionToken*/ + void 0, + propertyType + ); + return propertySignature; } - return false; } - function typeFromPrimitiveLiteral() { - return true; + function createUndefinedTypeNode() { + if (strictNullChecks) { + return factory.createKeywordTypeNode(157 /* UndefinedKeyword */); + } else { + return factory.createKeywordTypeNode(133 /* AnyKeyword */); + } + } + function typeFromPrimitiveLiteral(node, baseType, context, preserveLiterals, requiresAddingUndefined) { + let result; + if (preserveLiterals) { + if (node.kind === 224 /* PrefixUnaryExpression */ && node.operator === 40 /* PlusToken */) { + result = factory.createLiteralTypeNode(reuseNode(context, node.operand)); + } + result = factory.createLiteralTypeNode(reuseNode(context, node)); + } else { + result = factory.createKeywordTypeNode(baseType); + } + return syntacticResult(addUndefinedIfNeeded(result, requiresAddingUndefined, node, context)); + } + function addUndefinedIfNeeded(node, addUndefined, owner, context) { + const parentDeclaration = owner && walkUpParenthesizedExpressions(owner).parent; + const optionalDeclaration = parentDeclaration && isDeclaration(parentDeclaration) && isOptionalDeclaration(parentDeclaration); + if (!strictNullChecks || !(addUndefined || optionalDeclaration)) return node; + if (!canAddUndefined(node)) { + context.tracker.reportInferenceFallback(node); + } + if (isUnionTypeNode(node)) { + return factory.createUnionTypeNode([...node.types, factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); + } + return factory.createUnionTypeNode([node, factory.createKeywordTypeNode(157 /* UndefinedKeyword */)]); } function canAddUndefined(node) { if (!strictNullChecks) return true; @@ -135693,24 +137268,28 @@ function createSyntacticTypeNodeBuilder(options, resolver) { } return false; } - function createReturnFromSignature(fn, context) { - let returnType; - const returnTypeNode = getEffectiveReturnTypeNode(fn); + function createReturnFromSignature(fn, symbol, context, reportFallback = true) { + let returnType = failed; + const returnTypeNode = isJSDocConstructSignature(fn) ? getEffectiveTypeAnnotationNode(fn.parameters[0]) : getEffectiveReturnTypeNode(fn); if (returnTypeNode) { - returnType = serializeExistingTypeAnnotation(returnTypeNode); - } - if (!returnType && isValueSignatureDeclaration(fn)) { + returnType = syntacticResult(serializeTypeAnnotationOfDeclaration(returnTypeNode, context, fn, symbol)); + } else if (isValueSignatureDeclaration(fn)) { returnType = typeFromSingleReturnExpression(fn, context); } - return returnType ?? inferReturnTypeOfSignatureSignature(fn, context); + return returnType.type !== void 0 ? returnType.type : inferReturnTypeOfSignatureSignature(fn, context, reportFallback && returnType.reportFallback && !returnTypeNode); } function typeFromSingleReturnExpression(declaration, context) { let candidateExpr; if (declaration && !nodeIsMissing(declaration.body)) { - if (getFunctionFlags(declaration) & 3 /* AsyncGenerator */) return void 0; + const flags = getFunctionFlags(declaration); + if (flags & 3 /* AsyncGenerator */) return failed; const body = declaration.body; if (body && isBlock(body)) { forEachReturnStatement(body, (s) => { + if (s.parent !== body) { + candidateExpr = void 0; + return true; + } if (!candidateExpr) { candidateExpr = s.expression; } else { @@ -135723,9 +137302,21 @@ function createSyntacticTypeNodeBuilder(options, resolver) { } } if (candidateExpr) { - return typeFromExpression(candidateExpr, context); + if (isContextuallyTyped(candidateExpr)) { + const type = isJSDocTypeAssertion(candidateExpr) ? getJSDocTypeAssertionType(candidateExpr) : isAsExpression(candidateExpr) || isTypeAssertionExpression(candidateExpr) ? candidateExpr.type : void 0; + if (type && !isConstTypeReference(type)) { + return syntacticResult(serializeExistingTypeNode(type, context)); + } + } else { + return typeFromExpression(candidateExpr, context); + } } - return void 0; + return failed; + } + function isContextuallyTyped(node) { + return findAncestor(node.parent, (n) => { + return isCallExpression(n) || !isFunctionLikeDeclaration(n) && !!getEffectiveTypeAnnotationNode(n) || isJsxElement(n) || isJsxExpression(n); + }); } } @@ -135737,8 +137328,6 @@ __export(ts_JsTyping_exports, { isTypingUpToDate: () => isTypingUpToDate, loadSafeList: () => loadSafeList, loadTypesMap: () => loadTypesMap, - nodeCoreModuleList: () => nodeCoreModuleList, - nodeCoreModules: () => nodeCoreModules, nonRelativeModuleNameForTypingCache: () => nonRelativeModuleNameForTypingCache, renderPackageNameValidationFailure: () => renderPackageNameValidationFailure, validatePackageName: () => validatePackageName @@ -135787,58 +137376,6 @@ function isTypingUpToDate(cachedTyping, availableTypingVersions) { const availableVersion = new Version(getProperty(availableTypingVersions, `ts${versionMajorMinor}`) || getProperty(availableTypingVersions, "latest")); return availableVersion.compareTo(cachedTyping.version) <= 0; } -var unprefixedNodeCoreModuleList = [ - "assert", - "assert/strict", - "async_hooks", - "buffer", - "child_process", - "cluster", - "console", - "constants", - "crypto", - "dgram", - "diagnostics_channel", - "dns", - "dns/promises", - "domain", - "events", - "fs", - "fs/promises", - "http", - "https", - "http2", - "inspector", - "module", - "net", - "os", - "path", - "perf_hooks", - "process", - "punycode", - "querystring", - "readline", - "repl", - "stream", - "stream/promises", - "string_decoder", - "timers", - "timers/promises", - "tls", - "trace_events", - "tty", - "url", - "util", - "util/types", - "v8", - "vm", - "wasi", - "worker_threads", - "zlib" -]; -var prefixedNodeCoreModuleList = unprefixedNodeCoreModuleList.map((name) => `node:${name}`); -var nodeCoreModuleList = [...unprefixedNodeCoreModuleList, ...prefixedNodeCoreModuleList]; -var nodeCoreModules = new Set(nodeCoreModuleList); function nonRelativeModuleNameForTypingCache(moduleName) { return nodeCoreModules.has(moduleName) ? "node" : moduleName; } @@ -136073,6 +137610,7 @@ function renderPackageNameValidationFailureWorker(typing, result, name, isScopeN return `'${typing}':: ${kind} name '${name}' contains non URI safe characters`; case 0 /* Ok */: return Debug.fail(); + // Shouldn't have called this. default: Debug.assertNever(result); } @@ -136449,6 +137987,7 @@ function getMeaningFromDeclaration(node) { case 277 /* ExportAssignment */: case 278 /* ExportDeclaration */: return 7 /* All */; + // An external module can be a Value case 307 /* SourceFile */: return 4 /* Namespace */ | 1 /* Value */; } @@ -136757,6 +138296,7 @@ function getNodeKind(node) { return isFunctionExpression(right) ? "method" /* memberFunctionElement */ : "property" /* memberVariableElement */; case 4 /* ThisProperty */: return "property" /* memberVariableElement */; + // property case 5 /* Property */: return isFunctionExpression(right) ? "method" /* memberFunctionElement */ : "property" /* memberVariableElement */; case 6 /* Prototype */: @@ -136794,9 +138334,6 @@ function getLineStartPositionForPosition(position, sourceFile) { const line = sourceFile.getLineAndCharacterOfPosition(position).line; return lineStarts[line]; } -function rangeContainsRange(r1, r2) { - return startEndContainsRange(r1.pos, r1.end, r2); -} function rangeContainsRangeExclusive(r1, r2) { return rangeContainsPositionExclusive(r1, r2.pos) && rangeContainsPositionExclusive(r1, r2.end); } @@ -136806,9 +138343,6 @@ function rangeContainsPosition(r, pos) { function rangeContainsPositionExclusive(r, pos) { return r.pos < pos && pos < r.end; } -function startEndContainsRange(start, end, range) { - return start <= range.pos && end >= range.end; -} function rangeContainsStartEnd(range, start, end) { return range.pos <= start && range.end >= end; } @@ -136850,6 +138384,7 @@ function isCompletedNode(n, sourceFile) { if (!n.arguments) { return true; } + // falls through case 213 /* CallExpression */: case 217 /* ParenthesizedExpression */: case 196 /* ParenthesizedType */: @@ -137578,16 +139113,19 @@ function getPossibleTypeArgumentsInfo(tokenIn, sourceFile) { token = findPrecedingMatchingToken(token, 23 /* OpenBracketToken */, sourceFile); if (!token) return void 0; break; + // Valid tokens in a type name. Skip. case 28 /* CommaToken */: nTypeArguments++; break; case 39 /* EqualsGreaterThanToken */: + // falls through case 80 /* Identifier */: case 11 /* StringLiteral */: case 9 /* NumericLiteral */: case 10 /* BigIntLiteral */: case 112 /* TrueKeyword */: case 97 /* FalseKeyword */: + // falls through case 114 /* TypeOfKeyword */: case 96 /* ExtendsKeyword */: case 143 /* KeyOfKeyword */: @@ -137824,7 +139362,7 @@ function createModuleSpecifierResolutionHost(program, host) { fileExists: (fileName) => program.fileExists(fileName), getCurrentDirectory: () => host.getCurrentDirectory(), readFile: maybeBind(host, host.readFile), - useCaseSensitiveFileNames: maybeBind(host, host.useCaseSensitiveFileNames), + useCaseSensitiveFileNames: maybeBind(host, host.useCaseSensitiveFileNames) || program.useCaseSensitiveFileNames, getSymlinkCache: maybeBind(host, host.getSymlinkCache) || program.getSymlinkCache, getModuleSpecifierCache: maybeBind(host, host.getModuleSpecifierCache), getPackageJsonInfoCache: () => { @@ -138676,28 +140214,33 @@ function tryAndIgnoreErrors(cb) { function tryIOAndConsumeErrors(host, toApply, ...args) { return tryAndIgnoreErrors(() => toApply && toApply.apply(host, args)); } -function findPackageJsons(startDirectory, host, stopDirectory) { +function findPackageJsons(startDirectory, host) { const paths = []; - forEachAncestorDirectory(startDirectory, (ancestor) => { - if (ancestor === stopDirectory) { - return true; - } - const currentConfigPath = combinePaths(ancestor, "package.json"); - if (tryFileExists(host, currentConfigPath)) { - paths.push(currentConfigPath); + forEachAncestorDirectoryStoppingAtGlobalCache( + host, + startDirectory, + (ancestor) => { + const currentConfigPath = combinePaths(ancestor, "package.json"); + if (tryFileExists(host, currentConfigPath)) { + paths.push(currentConfigPath); + } } - }); + ); return paths; } function findPackageJson(directory, host) { let packageJson; - forEachAncestorDirectory(directory, (ancestor) => { - if (ancestor === "node_modules") return true; - packageJson = findConfigFile(ancestor, (f) => tryFileExists(host, f), "package.json"); - if (packageJson) { - return true; + forEachAncestorDirectoryStoppingAtGlobalCache( + host, + directory, + (ancestor) => { + if (ancestor === "node_modules") return true; + packageJson = findConfigFile(ancestor, (f) => tryFileExists(host, f), "package.json"); + if (packageJson) { + return true; + } } - }); + ); return packageJson; } function getPackageJsonsVisibleToFile(fileName, host) { @@ -138705,15 +140248,19 @@ function getPackageJsonsVisibleToFile(fileName, host) { return []; } const packageJsons = []; - forEachAncestorDirectory(getDirectoryPath(fileName), (ancestor) => { - const packageJsonFileName = combinePaths(ancestor, "package.json"); - if (host.fileExists(packageJsonFileName)) { - const info = createPackageJsonInfo(packageJsonFileName, host); - if (info) { - packageJsons.push(info); + forEachAncestorDirectoryStoppingAtGlobalCache( + host, + getDirectoryPath(fileName), + (ancestor) => { + const packageJsonFileName = combinePaths(ancestor, "package.json"); + if (host.fileExists(packageJsonFileName)) { + const info = createPackageJsonInfo(packageJsonFileName, host); + if (info) { + packageJsons.push(info); + } } } - }); + ); return packageJsons; } function createPackageJsonInfo(fileName, host) { @@ -138842,7 +140389,7 @@ function createPackageJsonImportFilter(fromFile, preferences, host) { return moduleSpecifierIsCoveredByPackageJson(moduleSpecifier); } function isAllowedCoreNodeModulesImport(moduleSpecifier) { - if (isFullSourceFile(fromFile) && isSourceFileJS(fromFile) && ts_JsTyping_exports.nodeCoreModules.has(moduleSpecifier)) { + if (isFullSourceFile(fromFile) && isSourceFileJS(fromFile) && nodeCoreModules.has(moduleSpecifier)) { if (usesNodeCoreModules === void 0) { usesNodeCoreModules = consumesNodeCoreModules(fromFile); } @@ -138879,7 +140426,7 @@ function createPackageJsonImportFilter(fromFile, preferences, host) { } } function consumesNodeCoreModules(sourceFile) { - return some(sourceFile.imports, ({ text }) => ts_JsTyping_exports.nodeCoreModules.has(text)); + return some(sourceFile.imports, ({ text }) => nodeCoreModules.has(text)); } function isInsideNodeModules(fileOrDirectory) { return contains(getPathComponents(fileOrDirectory), "node_modules"); @@ -138953,7 +140500,13 @@ function getDefaultLikeExportNameFromDeclaration(symbol) { if (isExportSpecifier(d) && d.symbol.flags === 2097152 /* Alias */) { return (_b = tryCast(d.propertyName, isIdentifier)) == null ? void 0 : _b.text; } - return (_c = tryCast(getNameOfDeclaration(d), isIdentifier)) == null ? void 0 : _c.text; + const name = (_c = tryCast(getNameOfDeclaration(d), isIdentifier)) == null ? void 0 : _c.text; + if (name) { + return name; + } + if (symbol.parent && !isExternalModuleSymbol(symbol.parent)) { + return symbol.parent.getName(); + } }); } function getSymbolParentOrFail(symbol) { @@ -139015,11 +140568,16 @@ function isDeprecatedDeclaration(decl) { return !!(getCombinedNodeFlagsAlwaysIncludeJSDoc(decl) & 65536 /* Deprecated */); } function shouldUseUriStyleNodeCoreModules(file, program) { - const decisionFromFile = firstDefined(file.imports, (node) => { - if (ts_JsTyping_exports.nodeCoreModules.has(node.text)) { - return startsWith(node.text, "node:"); + let decisionFromFile; + for (const node of file.imports) { + if (nodeCoreModules.has(node.text) && !exclusivelyPrefixedNodeCoreModules.has(node.text)) { + if (startsWith(node.text, "node:")) { + return true; + } else { + decisionFromFile = false; + } } - }); + } return decisionFromFile ?? program.usesUriStyleNodeCoreModules; } function getNewLineKind(newLineCharacter) { @@ -139179,6 +140737,7 @@ var ExportKind = /* @__PURE__ */ ((ExportKind3) => { ExportKind3[ExportKind3["Default"] = 1] = "Default"; ExportKind3[ExportKind3["ExportEquals"] = 2] = "ExportEquals"; ExportKind3[ExportKind3["UMD"] = 3] = "UMD"; + ExportKind3[ExportKind3["Module"] = 4] = "Module"; return ExportKind3; })(ExportKind || {}); function createCacheableExportInfoMap(host) { @@ -139369,38 +140928,57 @@ function createCacheableExportInfoMap(host) { return !packageDeepestNodeModulesPath || startsWith(info.moduleFileName, packageDeepestNodeModulesPath); } } -function isImportableFile(program, from, to, preferences, packageJsonFilter, moduleSpecifierResolutionHost, moduleSpecifierCache) { +function isImportable(program, fromFile, toFile, toModule, preferences, packageJsonFilter, moduleSpecifierResolutionHost, moduleSpecifierCache) { var _a; - if (from === to) return false; - const cachedResult = moduleSpecifierCache == null ? void 0 : moduleSpecifierCache.get(from.path, to.path, preferences, {}); + if (!toFile) { + let useNodePrefix; + const moduleName = stripQuotes(toModule.name); + if (nodeCoreModules.has(moduleName) && (useNodePrefix = shouldUseUriStyleNodeCoreModules(fromFile, program)) !== void 0) { + return useNodePrefix === startsWith(moduleName, "node:"); + } + return !packageJsonFilter || packageJsonFilter.allowsImportingAmbientModule(toModule, moduleSpecifierResolutionHost) || fileContainsPackageImport(fromFile, moduleName); + } + Debug.assertIsDefined(toFile); + if (fromFile === toFile) return false; + const cachedResult = moduleSpecifierCache == null ? void 0 : moduleSpecifierCache.get(fromFile.path, toFile.path, preferences, {}); if ((cachedResult == null ? void 0 : cachedResult.isBlockedByPackageJsonDependencies) !== void 0) { - return !cachedResult.isBlockedByPackageJsonDependencies || !!cachedResult.packageName && fileContainsPackageImport(from, cachedResult.packageName); + return !cachedResult.isBlockedByPackageJsonDependencies || !!cachedResult.packageName && fileContainsPackageImport(fromFile, cachedResult.packageName); } const getCanonicalFileName = hostGetCanonicalFileName(moduleSpecifierResolutionHost); const globalTypingsCache = (_a = moduleSpecifierResolutionHost.getGlobalTypingsCacheLocation) == null ? void 0 : _a.call(moduleSpecifierResolutionHost); const hasImportablePath = !!ts_moduleSpecifiers_exports.forEachFileNameOfModule( - from.fileName, - to.fileName, + fromFile.fileName, + toFile.fileName, moduleSpecifierResolutionHost, /*preferSymlinks*/ false, (toPath3) => { - const toFile = program.getSourceFile(toPath3); - return (toFile === to || !toFile) && isImportablePath(from.fileName, toPath3, getCanonicalFileName, globalTypingsCache); + const file = program.getSourceFile(toPath3); + return (file === toFile || !file) && isImportablePath( + fromFile.fileName, + toPath3, + getCanonicalFileName, + globalTypingsCache, + moduleSpecifierResolutionHost + ); } ); if (packageJsonFilter) { - const importInfo = hasImportablePath ? packageJsonFilter.getSourceFileInfo(to, moduleSpecifierResolutionHost) : void 0; - moduleSpecifierCache == null ? void 0 : moduleSpecifierCache.setBlockedByPackageJsonDependencies(from.path, to.path, preferences, {}, importInfo == null ? void 0 : importInfo.packageName, !(importInfo == null ? void 0 : importInfo.importable)); - return !!(importInfo == null ? void 0 : importInfo.importable) || !!(importInfo == null ? void 0 : importInfo.packageName) && fileContainsPackageImport(from, importInfo.packageName); + const importInfo = hasImportablePath ? packageJsonFilter.getSourceFileInfo(toFile, moduleSpecifierResolutionHost) : void 0; + moduleSpecifierCache == null ? void 0 : moduleSpecifierCache.setBlockedByPackageJsonDependencies(fromFile.path, toFile.path, preferences, {}, importInfo == null ? void 0 : importInfo.packageName, !(importInfo == null ? void 0 : importInfo.importable)); + return !!(importInfo == null ? void 0 : importInfo.importable) || hasImportablePath && !!(importInfo == null ? void 0 : importInfo.packageName) && fileContainsPackageImport(fromFile, importInfo.packageName); } return hasImportablePath; } function fileContainsPackageImport(sourceFile, packageName) { return sourceFile.imports && sourceFile.imports.some((i) => i.text === packageName || i.text.startsWith(packageName + "/")); } -function isImportablePath(fromPath, toPath3, getCanonicalFileName, globalCachePath) { - const toNodeModules = forEachAncestorDirectory(toPath3, (ancestor) => getBaseFileName(ancestor) === "node_modules" ? ancestor : void 0); +function isImportablePath(fromPath, toPath3, getCanonicalFileName, globalCachePath, host) { + const toNodeModules = forEachAncestorDirectoryStoppingAtGlobalCache( + host, + toPath3, + (ancestor) => getBaseFileName(ancestor) === "node_modules" ? ancestor : void 0 + ); const toNodeModulesParent = toNodeModules && getDirectoryPath(getCanonicalFileName(toNodeModules)); return toNodeModulesParent === void 0 || startsWith(getCanonicalFileName(fromPath), toNodeModulesParent) || !!globalCachePath && startsWith(getCanonicalFileName(globalCachePath), toNodeModulesParent); } @@ -139471,13 +141049,17 @@ function getIsExcluded(excludePatterns, host) { if (excludePatterns.some((p) => p.test(fileName))) return true; if ((realpathsWithSymlinks == null ? void 0 : realpathsWithSymlinks.size) && pathContainsNodeModules(fileName)) { let dir = getDirectoryPath(fileName); - return forEachAncestorDirectory(getDirectoryPath(path), (dirPath) => { - const symlinks = realpathsWithSymlinks.get(ensureTrailingDirectorySeparator(dirPath)); - if (symlinks) { - return symlinks.some((s) => excludePatterns.some((p) => p.test(fileName.replace(dir, s)))); + return forEachAncestorDirectoryStoppingAtGlobalCache( + host, + getDirectoryPath(path), + (dirPath) => { + const symlinks = realpathsWithSymlinks.get(ensureTrailingDirectorySeparator(dirPath)); + if (symlinks) { + return symlinks.some((s) => excludePatterns.some((p) => p.test(fileName.replace(dir, s)))); + } + dir = getDirectoryPath(dir); } - dir = getDirectoryPath(dir); - }) ?? false; + ) ?? false; } return false; }; @@ -139516,7 +141098,7 @@ function getExportInfoMap(importingFile, host, program, preferences, cancellatio true, (moduleSymbol, moduleFile, program2, isFromPackageJson) => { if (++moduleCount % 100 === 0) cancellationToken == null ? void 0 : cancellationToken.throwIfCancellationRequested(); - const seenExports = /* @__PURE__ */ new Map(); + const seenExports = /* @__PURE__ */ new Set(); const checker = program2.getTypeChecker(); const defaultInfo = getDefaultLikeExportInfo(moduleSymbol, checker); if (defaultInfo && isImportableSymbol(defaultInfo.symbol, checker)) { @@ -139556,7 +141138,11 @@ function getExportInfoMap(importingFile, host, program, preferences, cancellatio } function getDefaultLikeExportInfo(moduleSymbol, checker) { const exportEquals = checker.resolveExternalModuleSymbol(moduleSymbol); - if (exportEquals !== moduleSymbol) return { symbol: exportEquals, exportKind: 2 /* ExportEquals */ }; + if (exportEquals !== moduleSymbol) { + const defaultExport2 = checker.tryGetMemberInModuleExports("default" /* Default */, exportEquals); + if (defaultExport2) return { symbol: defaultExport2, exportKind: 1 /* Default */ }; + return { symbol: exportEquals, exportKind: 2 /* ExportEquals */ }; + } const defaultExport = checker.tryGetMemberInModuleExports("default" /* Default */, moduleSymbol); if (defaultExport) return { symbol: defaultExport, exportKind: 1 /* Default */ }; } @@ -139574,7 +141160,7 @@ function getNamesForExportedSymbol(defaultExport, checker, scriptTarget) { function forEachNameOfDefaultExport(defaultExport, checker, scriptTarget, cb) { let chain; let current = defaultExport; - const seen = /* @__PURE__ */ new Map(); + const seen = /* @__PURE__ */ new Set(); while (current) { const fromDeclaration = getDefaultLikeExportNameFromDeclaration(current); if (fromDeclaration) { @@ -139847,6 +141433,7 @@ function canFollow(keyword1, keyword2) { case 126 /* StaticKeyword */: case 129 /* AccessorKeyword */: return true; + // Allow things like "public get", "public constructor" and "public static". default: return false; } @@ -140657,6 +142244,7 @@ var DocumentHighlights; if (statement.kind === 251 /* ContinueStatement */) { return false; } + // falls through case 248 /* ForStatement */: case 249 /* ForInStatement */: case 250 /* ForOfStatement */: @@ -140702,6 +142290,7 @@ var DocumentHighlights; return [...nodes, container]; } return nodes; + // Syntactically invalid positions that the parser might produce anyway default: return void 0; } @@ -142281,8 +143870,10 @@ function isFixablePromiseArgument(arg, checker) { if (functionFlags & 1 /* Generator */) { return false; } + // falls through case 219 /* ArrowFunction */: visitedNestedConvertibleFunctions.set(getKeyFromNode(arg), true); + // falls through case 106 /* NullKeyword */: return true; case 80 /* Identifier */: @@ -142955,6 +144546,7 @@ function addChildrenRecursively(node) { Debug.assertNever(special); } } + // falls through default: if (hasJSDocNodes(node)) { forEach(node.jsDoc, (jsDoc) => { @@ -143117,6 +144709,7 @@ function isSynthesized(node) { return !!(node.flags & 16 /* Synthesized */); } function isOwnChild(n, parent2) { + if (n.parent === void 0) return false; const par = isModuleBlock(n.parent) ? n.parent.parent : n.parent; return par === parent2.node || contains(parent2.additionalNodes, par); } @@ -143401,6 +144994,7 @@ __export(ts_refactor_exports, { getStatementsToMove: () => getStatementsToMove, getUsageInfo: () => getUsageInfo, inferFunctionReturnType: () => ts_refactor_inferFunctionReturnType_exports, + isInImport: () => isInImport, isRefactorErrorInfo: () => isRefactorErrorInfo, refactorKindBeginsWith: () => refactorKindBeginsWith, registerRefactor: () => registerRefactor @@ -143547,6 +145141,7 @@ function changeExport(exportingSourceFile, { wasDefault, exportNode, exportName changes.replaceNode(exportingSourceFile, exportNode, factory.createExportDefault(Debug.checkDefined(decl.initializer, "Initializer was previously known to be present"))); break; } + // falls through case 266 /* EnumDeclaration */: case 265 /* TypeAliasDeclaration */: case 267 /* ModuleDeclaration */: @@ -144031,7 +145626,7 @@ function flattenTypeLiteralNodeReference(checker, selection) { } if (isIntersectionTypeNode(selection)) { const result = []; - const seen = /* @__PURE__ */ new Map(); + const seen = /* @__PURE__ */ new Set(); for (const type of selection.types) { const flattenedTypeMembers = flattenTypeLiteralNodeReference(checker, type); if (!flattenedTypeMembers || !flattenedTypeMembers.every((type2) => type2.name && addToSeen(seen, getNameFromPropertyName(type2.name)))) { @@ -144653,6 +146248,7 @@ function getNamesToExportInCommonJS(decl) { case 262 /* FunctionDeclaration */: case 263 /* ClassDeclaration */: return [decl.name.text]; + // TODO: GH#18217 case 243 /* VariableStatement */: return mapDefined(decl.declarationList.declarations, (d) => isIdentifier(d.name) ? d.name.text : void 0); case 267 /* ModuleDeclaration */: @@ -144834,23 +146430,22 @@ function getUsageInfo(oldFile, toMove, checker, existingTargetLocals = /* @__PUR const unusedImportsFromOldFile = /* @__PURE__ */ new Set(); for (const statement of toMove) { forEachReference(statement, checker, enclosingRange, (symbol, isValidTypeOnlyUseSite) => { - if (!symbol.declarations || isGlobalType(checker, symbol)) { + if (!symbol.declarations) { return; } if (existingTargetLocals.has(skipAlias(symbol, checker))) { unusedImportsFromOldFile.add(symbol); return; } - for (const decl of symbol.declarations) { - if (isInImport(decl)) { - const prevIsTypeOnly = oldImportsNeededByTargetFile.get(symbol); - oldImportsNeededByTargetFile.set(symbol, [ - prevIsTypeOnly === void 0 ? isValidTypeOnlyUseSite : prevIsTypeOnly && isValidTypeOnlyUseSite, - tryCast(decl, (d) => isImportSpecifier(d) || isImportClause(d) || isNamespaceImport(d) || isImportEqualsDeclaration(d) || isBindingElement(d) || isVariableDeclaration(d)) - ]); - } else if (isTopLevelDeclaration(decl) && sourceFileOfTopLevelDeclaration(decl) === oldFile && !movedSymbols.has(symbol)) { - targetFileImportsFromOldFile.set(symbol, isValidTypeOnlyUseSite); - } + const importedDeclaration = find(symbol.declarations, isInImport); + if (importedDeclaration) { + const prevIsTypeOnly = oldImportsNeededByTargetFile.get(symbol); + oldImportsNeededByTargetFile.set(symbol, [ + prevIsTypeOnly === void 0 ? isValidTypeOnlyUseSite : prevIsTypeOnly && isValidTypeOnlyUseSite, + tryCast(importedDeclaration, (d) => isImportSpecifier(d) || isImportClause(d) || isNamespaceImport(d) || isImportEqualsDeclaration(d) || isBindingElement(d) || isVariableDeclaration(d)) + ]); + } else if (!movedSymbols.has(symbol) && every(symbol.declarations, (decl) => isTopLevelDeclaration(decl) && sourceFileOfTopLevelDeclaration(decl) === oldFile)) { + targetFileImportsFromOldFile.set(symbol, isValidTypeOnlyUseSite); } }); } @@ -144884,16 +146479,6 @@ function getUsageInfo(oldFile, toMove, checker, existingTargetLocals = /* @__PUR return !!jsxNamespaceSymbol2 && some(jsxNamespaceSymbol2.declarations, isInImport) ? jsxNamespaceSymbol2 : void 0; } } -function isGlobalType(checker, symbol) { - return !!checker.resolveName( - symbol.name, - /*location*/ - void 0, - 788968 /* Type */, - /*excludeGlobals*/ - false - ); -} function makeUniqueFilename(proposedFilename, extension, inDirectory, host) { let newFilename = proposedFilename; for (let i = 1; ; i++) { @@ -145112,6 +146697,9 @@ function addTargetFileImports(oldFile, importsToCopy, targetFileImportsFromOldFi const targetSymbol = skipAlias(symbol, checker); if (checker.isUnknownSymbol(targetSymbol)) { importAdder.addVerbatimImport(Debug.checkDefined(declaration ?? findAncestor((_a = symbol.declarations) == null ? void 0 : _a[0], isAnyImportOrRequireStatement))); + } else if (targetSymbol.parent === void 0) { + Debug.assert(declaration !== void 0, "expected module symbol to have a declaration"); + importAdder.addImportForModuleSymbol(symbol, isValidTypeOnlyUseSite, declaration); } else { importAdder.addImportFromExportedSymbol(targetSymbol, isValidTypeOnlyUseSite, declaration); } @@ -146115,6 +147703,7 @@ function entryToFunctionCall(entry) { const functionReference = entry.node; const parent2 = functionReference.parent; switch (parent2.kind) { + // foo(...) or super(...) or new Foo(...) case 213 /* CallExpression */: case 214 /* NewExpression */: const callOrNewExpression = tryCast(parent2, isCallOrNewExpression); @@ -146122,6 +147711,7 @@ function entryToFunctionCall(entry) { return callOrNewExpression; } break; + // x.foo(...) case 211 /* PropertyAccessExpression */: const propertyAccessExpression = tryCast(parent2, isPropertyAccessExpression); if (propertyAccessExpression && propertyAccessExpression.parent && propertyAccessExpression.name === functionReference) { @@ -146131,6 +147721,7 @@ function entryToFunctionCall(entry) { } } break; + // x["foo"](...) case 212 /* ElementAccessExpression */: const elementAccessExpression = tryCast(parent2, isElementAccessExpression); if (elementAccessExpression && elementAccessExpression.parent && elementAccessExpression.argumentExpression === functionReference) { @@ -146149,12 +147740,14 @@ function entryToAccessExpression(entry) { const reference = entry.node; const parent2 = reference.parent; switch (parent2.kind) { + // `C.foo` case 211 /* PropertyAccessExpression */: const propertyAccessExpression = tryCast(parent2, isPropertyAccessExpression); if (propertyAccessExpression && propertyAccessExpression.expression === reference) { return propertyAccessExpression; } break; + // `C["foo"]` case 212 /* ElementAccessExpression */: const elementAccessExpression = tryCast(parent2, isElementAccessExpression); if (elementAccessExpression && elementAccessExpression.expression === reference) { @@ -147247,11 +148840,13 @@ function getRangeToExtract2(sourceFile, span, invoked = true) { forEachChild(n, check); } }); + // falls through case 263 /* ClassDeclaration */: case 262 /* FunctionDeclaration */: if (isSourceFile(node2.parent) && node2.parent.externalModuleIndicator === void 0) { (errors2 || (errors2 = [])).push(createDiagnosticForNode(node2, Messages.functionWillNotBeVisibleInTheNewScope)); } + // falls through case 231 /* ClassExpression */: case 218 /* FunctionExpression */: case 174 /* MethodDeclaration */: @@ -149078,6 +150673,7 @@ var SymbolObject = class { if (context) { if (isGetAccessor(context)) { if (!this.contextualGetAccessorDocumentationComment) { + this.contextualGetAccessorDocumentationComment = emptyArray; this.contextualGetAccessorDocumentationComment = getDocumentationComment(filter(this.declarations, isGetAccessor), checker); } if (length(this.contextualGetAccessorDocumentationComment)) { @@ -149086,6 +150682,7 @@ var SymbolObject = class { } if (isSetAccessor(context)) { if (!this.contextualSetAccessorDocumentationComment) { + this.contextualSetAccessorDocumentationComment = emptyArray; this.contextualSetAccessorDocumentationComment = getDocumentationComment(filter(this.declarations, isSetAccessor), checker); } if (length(this.contextualSetAccessorDocumentationComment)) { @@ -149106,6 +150703,7 @@ var SymbolObject = class { if (context) { if (isGetAccessor(context)) { if (!this.contextualGetAccessorTags) { + this.contextualGetAccessorTags = emptyArray; this.contextualGetAccessorTags = getJsDocTagsOfDeclarations(filter(this.declarations, isGetAccessor), checker); } if (length(this.contextualGetAccessorTags)) { @@ -149114,6 +150712,7 @@ var SymbolObject = class { } if (isSetAccessor(context)) { if (!this.contextualSetAccessorTags) { + this.contextualSetAccessorTags = emptyArray; this.contextualSetAccessorTags = getJsDocTagsOfDeclarations(filter(this.declarations, isSetAccessor), checker); } if (length(this.contextualSetAccessorTags)) { @@ -149426,6 +151025,7 @@ var SourceFileObject = class extends NodeObject { if (!hasSyntacticModifier(node, 31 /* ParameterPropertyModifier */)) { break; } + // falls through case 260 /* VariableDeclaration */: case 208 /* BindingElement */: { const decl = node; @@ -149437,6 +151037,7 @@ var SourceFileObject = class extends NodeObject { visit(decl.initializer); } } + // falls through case 306 /* EnumMember */: case 172 /* PropertyDeclaration */: case 171 /* PropertySignature */: @@ -149471,6 +151072,7 @@ var SourceFileObject = class extends NodeObject { if (getAssignmentDeclarationKind(node) !== 0 /* None */) { addDeclaration(node); } + // falls through default: forEachChild(node, visit); } @@ -149718,7 +151320,8 @@ var invalidOperationsInSyntacticMode = [ "getNavigateToItems", "getRenameInfo", "findRenameLocations", - "getApplicableRefactors" + "getApplicableRefactors", + "preparePasteEditsForFile" ]; function createLanguageService(host, documentRegistry = createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames(), host.getCurrentDirectory(), host.jsDocParsingMode), syntaxOnlyOrLanguageServiceMode) { var _a; @@ -149834,7 +151437,8 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h resolveLibrary: maybeBind(host, host.resolveLibrary), useSourceOfProjectReferenceRedirect: maybeBind(host, host.useSourceOfProjectReferenceRedirect), getParsedCommandLine, - jsDocParsingMode: host.jsDocParsingMode + jsDocParsingMode: host.jsDocParsingMode, + getGlobalTypingsCacheLocation: maybeBind(host, host.getGlobalTypingsCacheLocation) }; const originalGetSourceFile = compilerHost.getSourceFile; const { getSourceFileWithCache } = changeCompilerHostLikeToUseCache( @@ -150210,6 +151814,14 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h tags }; } + function preparePasteEditsForFile(fileName, copiedTextRange) { + synchronizeHostData(); + return ts_preparePasteEdits_exports.preparePasteEdits( + getValidSourceFile(fileName), + copiedTextRange, + program.getTypeChecker() + ); + } function getPasteEdits(args, formatOptions) { synchronizeHostData(); return ts_PasteEdits_exports.pasteEditsProvider( @@ -150358,6 +151970,7 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h case 197 /* ThisType */: case 80 /* Identifier */: break; + // Cant create the text span default: return void 0; } @@ -150463,22 +152076,22 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h } return []; } - function getCodeFixesAtPosition(fileName, start, end, errorCodes67, formatOptions, preferences = emptyOptions) { + function getCodeFixesAtPosition(fileName, start, end, errorCodes68, formatOptions, preferences = emptyOptions) { synchronizeHostData(); const sourceFile = getValidSourceFile(fileName); const span = createTextSpanFromBounds(start, end); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return flatMap(deduplicate(errorCodes67, equateValues, compareValues), (errorCode) => { + return flatMap(deduplicate(errorCodes68, equateValues, compareValues), (errorCode) => { cancellationToken.throwIfCancellationRequested(); return ts_codefix_exports.getFixes({ errorCode, sourceFile, span, program, host, cancellationToken, formatContext, preferences }); }); } - function getCombinedCodeFix(scope, fixId55, formatOptions, preferences = emptyOptions) { + function getCombinedCodeFix(scope, fixId56, formatOptions, preferences = emptyOptions) { synchronizeHostData(); Debug.assert(scope.type === "file"); const sourceFile = getValidSourceFile(scope.fileName); const formatContext = ts_formatting_exports.getFormatContext(formatOptions, host); - return ts_codefix_exports.getAllFixes({ fixId: fixId55, sourceFile, program, host, cancellationToken, formatContext, preferences }); + return ts_codefix_exports.getAllFixes({ fixId: fixId56, sourceFile, program, host, cancellationToken, formatContext, preferences }); } function organizeImports2(args, formatOptions, preferences = emptyOptions) { synchronizeHostData(); @@ -151011,6 +152624,7 @@ function createLanguageService(host, documentRegistry = createDocumentRegistry(h uncommentSelection, provideInlayHints: provideInlayHints2, getSupportedCodeFixes, + preparePasteEditsForFile, getPasteEdits, mapCode: mapCode2 }; @@ -151075,6 +152689,7 @@ function getContainingObjectLiteralElementWorker(node) { if (node.parent.kind === 167 /* ComputedPropertyName */) { return isObjectLiteralElement(node.parent.parent) ? node.parent.parent : void 0; } + // falls through case 80 /* Identifier */: return isObjectLiteralElement(node.parent) && (node.parent.parent.kind === 210 /* ObjectLiteralExpression */ || node.parent.parent.kind === 292 /* JsxAttributes */) && node.parent.name === node ? node.parent : void 0; } @@ -151229,6 +152844,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { if (isFunctionBlock(node)) { return spanInFunctionBlock(node); } + // falls through case 268 /* ModuleBlock */: return spanInBlock(node); case 299 /* CatchClause */: @@ -151277,6 +152893,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { if (getModuleInstanceState(node) !== 1 /* Instantiated */) { return void 0; } + // falls through case 263 /* ClassDeclaration */: case 266 /* EnumDeclaration */: case 306 /* EnumMember */: @@ -151289,9 +152906,11 @@ function spanInSourceFileAtLocation(sourceFile, position) { case 206 /* ObjectBindingPattern */: case 207 /* ArrayBindingPattern */: return spanInBindingPattern(node); + // No breakpoint in interface, type alias case 264 /* InterfaceDeclaration */: case 265 /* TypeAliasDeclaration */: return void 0; + // Tokens: case 27 /* SemicolonToken */: case 1 /* EndOfFileToken */: return spanInNodeIfStartsOnSameLine(findPrecedingToken(node.pos, sourceFile)); @@ -151312,6 +152931,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { case 32 /* GreaterThanToken */: case 30 /* LessThanToken */: return spanInGreaterThanOrLessThanToken(node); + // Keywords: case 117 /* WhileKeyword */: return spanInWhileKeyword(node); case 93 /* ElseKeyword */: @@ -151462,10 +153082,13 @@ function spanInSourceFileAtLocation(sourceFile, position) { if (getModuleInstanceState(block.parent) !== 1 /* Instantiated */) { return void 0; } + // Set on parent if on same line otherwise on first statement + // falls through case 247 /* WhileStatement */: case 245 /* IfStatement */: case 249 /* ForInStatement */: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); + // Set span on previous token if it starts on same line otherwise on the first statement of the block case 248 /* ForStatement */: case 250 /* ForOfStatement */: return spanInNodeIfStartsOnSameLine(findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); @@ -151531,6 +153154,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { if (getModuleInstanceState(node2.parent.parent) !== 1 /* Instantiated */) { return void 0; } + // falls through case 266 /* EnumDeclaration */: case 263 /* ClassDeclaration */: return textSpan(node2); @@ -151538,6 +153162,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { if (isFunctionBlock(node2.parent)) { return textSpan(node2); } + // falls through case 299 /* CatchClause */: return spanInNode(lastOrUndefined(node2.parent.statements)); case 269 /* CaseBlock */: @@ -151550,6 +153175,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { case 206 /* ObjectBindingPattern */: const bindingPattern = node2.parent; return spanInNode(lastOrUndefined(bindingPattern.elements) || bindingPattern); + // Default to parent node default: if (isArrayLiteralOrObjectLiteralDestructuringPattern(node2.parent)) { const objectLiteral = node2.parent; @@ -151599,6 +153225,7 @@ function spanInSourceFileAtLocation(sourceFile, position) { case 214 /* NewExpression */: case 217 /* ParenthesizedExpression */: return spanInPreviousNode(node2); + // Default to parent node default: return spanInNode(node2.parent); } @@ -152132,8 +153759,10 @@ __export(ts_codefix_exports, { setJsonCompilerOptionValue: () => setJsonCompilerOptionValue, setJsonCompilerOptionValues: () => setJsonCompilerOptionValues, tryGetAutoImportableReferenceFromTypeNode: () => tryGetAutoImportableReferenceFromTypeNode, + typeNodeToAutoImportableTypeNode: () => typeNodeToAutoImportableTypeNode, typePredicateToAutoImportableTypeNode: () => typePredicateToAutoImportableTypeNode, - typeToAutoImportableTypeNode: () => typeToAutoImportableTypeNode + typeToAutoImportableTypeNode: () => typeToAutoImportableTypeNode, + typeToMinimizedReferenceType: () => typeToMinimizedReferenceType }); // src/services/codeFixProvider.ts @@ -152150,14 +153779,14 @@ function createCodeFixActionWithoutFixAll(fixName8, changes, description3) { void 0 ); } -function createCodeFixAction(fixName8, changes, description3, fixId55, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description3), changes, fixId55, diagnosticToString(fixAllDescription), command); +function createCodeFixAction(fixName8, changes, description3, fixId56, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description3), changes, fixId56, diagnosticToString(fixAllDescription), command); } -function createCodeFixActionMaybeFixAll(fixName8, changes, description3, fixId55, fixAllDescription, command) { - return createCodeFixActionWorker(fixName8, diagnosticToString(description3), changes, fixId55, fixAllDescription && diagnosticToString(fixAllDescription), command); +function createCodeFixActionMaybeFixAll(fixName8, changes, description3, fixId56, fixAllDescription, command) { + return createCodeFixActionWorker(fixName8, diagnosticToString(description3), changes, fixId56, fixAllDescription && diagnosticToString(fixAllDescription), command); } -function createCodeFixActionWorker(fixName8, description3, changes, fixId55, fixAllDescription, command) { - return { fixName: fixName8, description: description3, changes, fixId: fixId55, fixAllDescription, commands: command ? [command] : void 0 }; +function createCodeFixActionWorker(fixName8, description3, changes, fixId56, fixAllDescription, command) { + return { fixName: fixName8, description: description3, changes, fixId: fixId56, fixAllDescription, commands: command ? [command] : void 0 }; } function registerCodeFix(reg) { for (const error2 of reg.errorCodes) { @@ -152165,9 +153794,9 @@ function registerCodeFix(reg) { errorCodeToFixes.add(String(error2), reg); } if (reg.fixIds) { - for (const fixId55 of reg.fixIds) { - Debug.assert(!fixIdToRegistration.has(fixId55)); - fixIdToRegistration.set(fixId55, reg); + for (const fixId56 of reg.fixIds) { + Debug.assert(!fixIdToRegistration.has(fixId56)); + fixIdToRegistration.set(fixId56, reg); } } } @@ -152176,15 +153805,15 @@ function getSupportedErrorCodes() { return errorCodeToFixesArray ?? (errorCodeToFixesArray = arrayFrom(errorCodeToFixes.keys())); } function removeFixIdIfFixAllUnavailable(registration, diagnostics) { - const { errorCodes: errorCodes67 } = registration; + const { errorCodes: errorCodes68 } = registration; let maybeFixableDiagnostics = 0; for (const diag2 of diagnostics) { - if (contains(errorCodes67, diag2.code)) maybeFixableDiagnostics++; + if (contains(errorCodes68, diag2.code)) maybeFixableDiagnostics++; if (maybeFixableDiagnostics > 1) break; } const fixAllUnavailable = maybeFixableDiagnostics < 2; - return ({ fixId: fixId55, fixAllDescription, ...action }) => { - return fixAllUnavailable ? action : { ...action, fixId: fixId55, fixAllDescription }; + return ({ fixId: fixId56, fixAllDescription, ...action }) => { + return fixAllUnavailable ? action : { ...action, fixId: fixId56, fixAllDescription }; }; } function getFixes(context) { @@ -152201,14 +153830,14 @@ function createCombinedCodeActions(changes, commands) { function createFileTextChanges(fileName, textChanges2) { return { fileName, textChanges: textChanges2 }; } -function codeFixAll(context, errorCodes67, use) { +function codeFixAll(context, errorCodes68, use) { const commands = []; - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes67, (diag2) => use(t, diag2, commands))); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => eachDiagnostic(context, errorCodes68, (diag2) => use(t, diag2, commands))); return createCombinedCodeActions(changes, commands.length === 0 ? void 0 : commands); } -function eachDiagnostic(context, errorCodes67, cb) { +function eachDiagnostic(context, errorCodes68, cb) { for (const diag2 of getDiagnostics(context)) { - if (contains(errorCodes67, diag2.code)) { + if (contains(errorCodes68, diag2.code)) { cb(diag2); } } @@ -152722,19 +154351,99 @@ function makeChange6(changeTracker, sourceFile, pos) { changeTracker.replaceNode(sourceFile, decorator.expression, replacement); } -// src/services/codefixes/addNameToNamelessParameter.ts -var fixId7 = "addNameToNamelessParameter"; -var errorCodes7 = [Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1.code]; +// src/services/codefixes/addMissingResolutionModeImportAttribute.ts +var fixId7 = "addMissingResolutionModeImportAttribute"; +var errorCodes7 = [ + Diagnostics.Type_only_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute.code, + Diagnostics.Type_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute.code +]; registerCodeFix({ errorCodes: errorCodes7, - getCodeActions: function getCodeActionsToAddNameToNamelessParameter(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange7(t, context.sourceFile, context.span.start)); - return [createCodeFixAction(fixId7, changes, Diagnostics.Add_parameter_name, fixId7, Diagnostics.Add_names_to_all_parameters_without_names)]; + getCodeActions: function getCodeActionsToAddMissingResolutionModeImportAttribute(context) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange7(t, context.sourceFile, context.span.start, context.program, context.host, context.preferences)); + return [createCodeFixAction(fixId7, changes, Diagnostics.Add_resolution_mode_import_attribute, fixId7, Diagnostics.Add_resolution_mode_import_attribute_to_all_type_only_imports_that_need_it)]; }, fixIds: [fixId7], - getAllCodeActions: (context) => codeFixAll(context, errorCodes7, (changes, diag2) => makeChange7(changes, diag2.file, diag2.start)) + getAllCodeActions: (context) => codeFixAll(context, errorCodes7, (changes, diag2) => makeChange7(changes, diag2.file, diag2.start, context.program, context.host, context.preferences)) +}); +function makeChange7(changeTracker, sourceFile, pos, program, host, preferences) { + var _a, _b, _c; + const token = getTokenAtPosition(sourceFile, pos); + const importNode = findAncestor(token, or(isImportDeclaration, isImportTypeNode)); + Debug.assert(!!importNode, "Expected position to be owned by an ImportDeclaration or ImportType."); + const useSingleQuotes = getQuotePreference(sourceFile, preferences) === 0 /* Single */; + const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importNode); + const canUseImportMode = !moduleSpecifier || ((_a = resolveModuleName( + moduleSpecifier.text, + sourceFile.fileName, + program.getCompilerOptions(), + host, + program.getModuleResolutionCache(), + /*redirectedReference*/ + void 0, + 99 /* ESNext */ + ).resolvedModule) == null ? void 0 : _a.resolvedFileName) === ((_c = (_b = program.getResolvedModuleFromModuleSpecifier( + moduleSpecifier, + sourceFile + )) == null ? void 0 : _b.resolvedModule) == null ? void 0 : _c.resolvedFileName); + const attributes = importNode.attributes ? factory.updateImportAttributes( + importNode.attributes, + factory.createNodeArray([ + ...importNode.attributes.elements, + factory.createImportAttribute( + factory.createStringLiteral("resolution-mode", useSingleQuotes), + factory.createStringLiteral(canUseImportMode ? "import" : "require", useSingleQuotes) + ) + ], importNode.attributes.elements.hasTrailingComma), + importNode.attributes.multiLine + ) : factory.createImportAttributes( + factory.createNodeArray([ + factory.createImportAttribute( + factory.createStringLiteral("resolution-mode", useSingleQuotes), + factory.createStringLiteral(canUseImportMode ? "import" : "require", useSingleQuotes) + ) + ]) + ); + if (importNode.kind === 272 /* ImportDeclaration */) { + changeTracker.replaceNode( + sourceFile, + importNode, + factory.updateImportDeclaration( + importNode, + importNode.modifiers, + importNode.importClause, + importNode.moduleSpecifier, + attributes + ) + ); + } else { + changeTracker.replaceNode( + sourceFile, + importNode, + factory.updateImportTypeNode( + importNode, + importNode.argument, + attributes, + importNode.qualifier, + importNode.typeArguments + ) + ); + } +} + +// src/services/codefixes/addNameToNamelessParameter.ts +var fixId8 = "addNameToNamelessParameter"; +var errorCodes8 = [Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1.code]; +registerCodeFix({ + errorCodes: errorCodes8, + getCodeActions: function getCodeActionsToAddNameToNamelessParameter(context) { + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, context.sourceFile, context.span.start)); + return [createCodeFixAction(fixId8, changes, Diagnostics.Add_parameter_name, fixId8, Diagnostics.Add_names_to_all_parameters_without_names)]; + }, + fixIds: [fixId8], + getAllCodeActions: (context) => codeFixAll(context, errorCodes8, (changes, diag2) => makeChange8(changes, diag2.file, diag2.start)) }); -function makeChange7(changeTracker, sourceFile, start) { +function makeChange8(changeTracker, sourceFile, start) { const token = getTokenAtPosition(sourceFile, start); const param = token.parent; if (!isParameter(param)) { @@ -152775,13 +154484,13 @@ function tryGetNextParam(sourceFile, param) { // src/services/codefixes/addOptionalPropertyUndefined.ts var addOptionalPropertyUndefined = "addOptionalPropertyUndefined"; -var errorCodes8 = [ +var errorCodes9 = [ Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target.code, Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code, Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code ]; registerCodeFix({ - errorCodes: errorCodes8, + errorCodes: errorCodes9, getCodeActions(context) { const typeChecker = context.program.getTypeChecker(); const toAdd = getPropertiesToAdd(context.sourceFile, context.span, typeChecker); @@ -152852,18 +154561,18 @@ function addUndefinedToOptionalProperty(changes, toAdd) { } // src/services/codefixes/annotateWithTypeFromJSDoc.ts -var fixId8 = "annotateWithTypeFromJSDoc"; -var errorCodes9 = [Diagnostics.JSDoc_types_may_be_moved_to_TypeScript_types.code]; +var fixId9 = "annotateWithTypeFromJSDoc"; +var errorCodes10 = [Diagnostics.JSDoc_types_may_be_moved_to_TypeScript_types.code]; registerCodeFix({ - errorCodes: errorCodes9, + errorCodes: errorCodes10, getCodeActions(context) { const decl = getDeclaration(context.sourceFile, context.span.start); if (!decl) return; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange8(t, context.sourceFile, decl)); - return [createCodeFixAction(fixId8, changes, Diagnostics.Annotate_with_type_from_JSDoc, fixId8, Diagnostics.Annotate_everything_with_types_from_JSDoc)]; + return [createCodeFixAction(fixId9, changes, Diagnostics.Annotate_with_type_from_JSDoc, fixId9, Diagnostics.Annotate_everything_with_types_from_JSDoc)]; }, - fixIds: [fixId8], - getAllCodeActions: (context) => codeFixAll(context, errorCodes9, (changes, diag2) => { + fixIds: [fixId9], + getAllCodeActions: (context) => codeFixAll(context, errorCodes10, (changes, diag2) => { const decl = getDeclaration(diag2.file, diag2.start); if (decl) doChange8(changes, diag2.file, decl); }) @@ -153020,16 +154729,16 @@ function transformJSDocIndexSignature(node) { } // src/services/codefixes/convertFunctionToEs6Class.ts -var fixId9 = "convertFunctionToEs6Class"; -var errorCodes10 = [Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration.code]; +var fixId10 = "convertFunctionToEs6Class"; +var errorCodes11 = [Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration.code]; registerCodeFix({ - errorCodes: errorCodes10, + errorCodes: errorCodes11, getCodeActions(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange9(t, context.sourceFile, context.span.start, context.program.getTypeChecker(), context.preferences, context.program.getCompilerOptions())); - return [createCodeFixAction(fixId9, changes, Diagnostics.Convert_function_to_an_ES2015_class, fixId9, Diagnostics.Convert_all_constructor_functions_to_classes)]; + return [createCodeFixAction(fixId10, changes, Diagnostics.Convert_function_to_an_ES2015_class, fixId10, Diagnostics.Convert_all_constructor_functions_to_classes)]; }, - fixIds: [fixId9], - getAllCodeActions: (context) => codeFixAll(context, errorCodes10, (changes, err) => doChange9(changes, err.file, err.start, context.program.getTypeChecker(), context.preferences, context.program.getCompilerOptions())) + fixIds: [fixId10], + getAllCodeActions: (context) => codeFixAll(context, errorCodes11, (changes, err) => doChange9(changes, err.file, err.start, context.program.getTypeChecker(), context.preferences, context.program.getCompilerOptions())) }); function doChange9(changes, sourceFile, position, checker, preferences, compilerOptions) { const ctorSymbol = checker.getSymbolAtLocation(getTokenAtPosition(sourceFile, position)); @@ -153301,18 +155010,18 @@ function tryGetPropertyName(node, compilerOptions, quotePreference) { } // src/services/codefixes/convertToAsyncFunction.ts -var fixId10 = "convertToAsyncFunction"; -var errorCodes11 = [Diagnostics.This_may_be_converted_to_an_async_function.code]; +var fixId11 = "convertToAsyncFunction"; +var errorCodes12 = [Diagnostics.This_may_be_converted_to_an_async_function.code]; var codeActionSucceeded = true; registerCodeFix({ - errorCodes: errorCodes11, + errorCodes: errorCodes12, getCodeActions(context) { codeActionSucceeded = true; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => convertToAsyncFunction(t, context.sourceFile, context.span.start, context.program.getTypeChecker())); - return codeActionSucceeded ? [createCodeFixAction(fixId10, changes, Diagnostics.Convert_to_async_function, fixId10, Diagnostics.Convert_all_to_async_functions)] : []; + return codeActionSucceeded ? [createCodeFixAction(fixId11, changes, Diagnostics.Convert_to_async_function, fixId11, Diagnostics.Convert_all_to_async_functions)] : []; }, - fixIds: [fixId10], - getAllCodeActions: (context) => codeFixAll(context, errorCodes11, (changes, err) => convertToAsyncFunction(changes, err.file, err.start, context.program.getTypeChecker())) + fixIds: [fixId11], + getAllCodeActions: (context) => codeFixAll(context, errorCodes12, (changes, err) => convertToAsyncFunction(changes, err.file, err.start, context.program.getTypeChecker())) }); function convertToAsyncFunction(changes, sourceFile, position, checker) { const tokenAtPosition = getTokenAtPosition(sourceFile, position); @@ -154111,6 +155820,7 @@ function convertStatement(sourceFile, statement, checker, changes, identifiers, } } } + // falls through default: return false; } @@ -154210,6 +155920,8 @@ function tryChangeModuleExportsObject(object, useSitesToUnqualify) { switch (prop.kind) { case 177 /* GetAccessor */: case 178 /* SetAccessor */: + // TODO: Maybe we should handle this? See fourslash test `refactorConvertToEs6Module_export_object_shorthand.ts`. + // falls through case 304 /* ShorthandPropertyAssignment */: case 305 /* SpreadAssignment */: return void 0; @@ -154291,6 +156003,7 @@ function convertExportsDotXEquals_replaceNode(name, exported, useSitesToUnqualif return exportConst(); } } + // falls through case 219 /* ArrowFunction */: return functionExpressionToDeclaration(name, modifiers, exported, useSitesToUnqualify); case 231 /* ClassExpression */: @@ -154339,6 +156052,7 @@ function convertSingleImport(name, moduleSpecifier, checker, identifiers, target )]); } } + // falls through -- object destructuring has an interesting pattern and must be a variable declaration case 207 /* ArrayBindingPattern */: { const tmp = makeUniqueName(moduleSpecifierToValidIdentifier(moduleSpecifier.text, target), identifiers); return convertedImports([ @@ -154512,19 +156226,19 @@ function convertedImports(newImports, useSitesToUnqualify) { } // src/services/codefixes/correctQualifiedNameToIndexedAccessType.ts -var fixId11 = "correctQualifiedNameToIndexedAccessType"; -var errorCodes12 = [Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1.code]; +var fixId12 = "correctQualifiedNameToIndexedAccessType"; +var errorCodes13 = [Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1.code]; registerCodeFix({ - errorCodes: errorCodes12, + errorCodes: errorCodes13, getCodeActions(context) { const qualifiedName = getQualifiedName(context.sourceFile, context.span.start); if (!qualifiedName) return void 0; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange10(t, context.sourceFile, qualifiedName)); const newText = `${qualifiedName.left.text}["${qualifiedName.right.text}"]`; - return [createCodeFixAction(fixId11, changes, [Diagnostics.Rewrite_as_the_indexed_access_type_0, newText], fixId11, Diagnostics.Rewrite_all_as_indexed_access_types)]; + return [createCodeFixAction(fixId12, changes, [Diagnostics.Rewrite_as_the_indexed_access_type_0, newText], fixId12, Diagnostics.Rewrite_all_as_indexed_access_types)]; }, - fixIds: [fixId11], - getAllCodeActions: (context) => codeFixAll(context, errorCodes12, (changes, diag2) => { + fixIds: [fixId12], + getAllCodeActions: (context) => codeFixAll(context, errorCodes13, (changes, diag2) => { const q = getQualifiedName(diag2.file, diag2.start); if (q) { doChange10(changes, diag2.file, q); @@ -154550,20 +156264,20 @@ function doChange10(changeTracker, sourceFile, qualifiedName) { } // src/services/codefixes/convertToTypeOnlyExport.ts -var errorCodes13 = [Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type.code]; -var fixId12 = "convertToTypeOnlyExport"; +var errorCodes14 = [Diagnostics.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type.code]; +var fixId13 = "convertToTypeOnlyExport"; registerCodeFix({ - errorCodes: errorCodes13, + errorCodes: errorCodes14, getCodeActions: function getCodeActionsToConvertToTypeOnlyExport(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => fixSingleExportDeclaration(t, getExportSpecifierForDiagnosticSpan(context.span, context.sourceFile), context)); if (changes.length) { - return [createCodeFixAction(fixId12, changes, Diagnostics.Convert_to_type_only_export, fixId12, Diagnostics.Convert_all_re_exported_types_to_type_only_exports)]; + return [createCodeFixAction(fixId13, changes, Diagnostics.Convert_to_type_only_export, fixId13, Diagnostics.Convert_all_re_exported_types_to_type_only_exports)]; } }, - fixIds: [fixId12], + fixIds: [fixId13], getAllCodeActions: function getAllCodeActionsToConvertToTypeOnlyExport(context) { - const fixedExportDeclarations = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes13, (changes, diag2) => { + const fixedExportDeclarations = /* @__PURE__ */ new Set(); + return codeFixAll(context, errorCodes14, (changes, diag2) => { const exportSpecifier = getExportSpecifierForDiagnosticSpan(diag2, context.sourceFile); if (exportSpecifier && addToSeen(fixedExportDeclarations, getNodeId(exportSpecifier.parent.parent))) { fixSingleExportDeclaration(changes, exportSpecifier, context); @@ -154622,18 +156336,18 @@ function getTypeExportSpecifiers(originExportSpecifier, context) { ); return filter(exportClause.elements, (element) => { var _a; - return element === originExportSpecifier || ((_a = findDiagnosticForNode(element, diagnostics)) == null ? void 0 : _a.code) === errorCodes13[0]; + return element === originExportSpecifier || ((_a = findDiagnosticForNode(element, diagnostics)) == null ? void 0 : _a.code) === errorCodes14[0]; }); } // src/services/codefixes/convertToTypeOnlyImport.ts -var errorCodes14 = [ +var errorCodes15 = [ Diagnostics._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled.code, Diagnostics._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled.code ]; -var fixId13 = "convertToTypeOnlyImport"; +var fixId14 = "convertToTypeOnlyImport"; registerCodeFix({ - errorCodes: errorCodes14, + errorCodes: errorCodes15, getCodeActions: function getCodeActionsToConvertToTypeOnlyImport(context) { var _a; const declaration = getDeclaration2(context.sourceFile, context.span.start); @@ -154641,15 +156355,15 @@ registerCodeFix({ const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange11(t, context.sourceFile, declaration)); const importDeclarationChanges = declaration.kind === 276 /* ImportSpecifier */ && isImportDeclaration(declaration.parent.parent.parent) && canConvertImportDeclarationForSpecifier(declaration, context.sourceFile, context.program) ? ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange11(t, context.sourceFile, declaration.parent.parent.parent)) : void 0; const mainAction = createCodeFixAction( - fixId13, + fixId14, changes, declaration.kind === 276 /* ImportSpecifier */ ? [Diagnostics.Use_type_0, ((_a = declaration.propertyName) == null ? void 0 : _a.text) ?? declaration.name.text] : Diagnostics.Use_import_type, - fixId13, + fixId14, Diagnostics.Fix_all_with_type_only_imports ); if (some(importDeclarationChanges)) { return [ - createCodeFixActionWithoutFixAll(fixId13, importDeclarationChanges, Diagnostics.Use_import_type), + createCodeFixActionWithoutFixAll(fixId14, importDeclarationChanges, Diagnostics.Use_import_type), mainAction ]; } @@ -154657,10 +156371,10 @@ registerCodeFix({ } return void 0; }, - fixIds: [fixId13], + fixIds: [fixId14], getAllCodeActions: function getAllCodeActionsToConvertToTypeOnlyImport(context) { const fixedImportDeclarations = /* @__PURE__ */ new Set(); - return codeFixAll(context, errorCodes14, (changes, diag2) => { + return codeFixAll(context, errorCodes15, (changes, diag2) => { const errorDeclaration = getDeclaration2(diag2.file, diag2.start); if ((errorDeclaration == null ? void 0 : errorDeclaration.kind) === 272 /* ImportDeclaration */ && !fixedImportDeclarations.has(errorDeclaration)) { doChange11(changes, diag2.file, errorDeclaration); @@ -154793,11 +156507,11 @@ function doChange11(changes, sourceFile, declaration) { } // src/services/codefixes/convertTypedefToType.ts -var fixId14 = "convertTypedefToType"; -var errorCodes15 = [Diagnostics.JSDoc_typedef_may_be_converted_to_TypeScript_type.code]; +var fixId15 = "convertTypedefToType"; +var errorCodes16 = [Diagnostics.JSDoc_typedef_may_be_converted_to_TypeScript_type.code]; registerCodeFix({ - fixIds: [fixId14], - errorCodes: errorCodes15, + fixIds: [fixId15], + errorCodes: errorCodes16, getCodeActions(context) { const newLineCharacter = getNewLineOrDefaultFromHost(context.host, context.formatContext.options); const node = getTokenAtPosition( @@ -154809,10 +156523,10 @@ registerCodeFix({ if (changes.length > 0) { return [ createCodeFixAction( - fixId14, + fixId15, changes, Diagnostics.Convert_typedef_to_TypeScript_type, - fixId14, + fixId15, Diagnostics.Convert_all_typedef_to_TypeScript_types ) ]; @@ -154820,7 +156534,7 @@ registerCodeFix({ }, getAllCodeActions: (context) => codeFixAll( context, - errorCodes15, + errorCodes16, (changes, diag2) => { const newLineCharacter = getNewLineOrDefaultFromHost(context.host, context.formatContext.options); const node = getTokenAtPosition(diag2.file, diag2.start); @@ -154963,10 +156677,10 @@ function getJSDocTypedefNodes(node) { } // src/services/codefixes/convertLiteralTypeToMappedType.ts -var fixId15 = "convertLiteralTypeToMappedType"; -var errorCodes16 = [Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0.code]; +var fixId16 = "convertLiteralTypeToMappedType"; +var errorCodes17 = [Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0.code]; registerCodeFix({ - errorCodes: errorCodes16, + errorCodes: errorCodes17, getCodeActions: function getCodeActionsToConvertLiteralTypeToMappedType(context) { const { sourceFile, span } = context; const info = getInfo5(sourceFile, span.start); @@ -154975,10 +156689,10 @@ registerCodeFix({ } const { name, constraint } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange13(t, sourceFile, info)); - return [createCodeFixAction(fixId15, changes, [Diagnostics.Convert_0_to_1_in_0, constraint, name], fixId15, Diagnostics.Convert_all_type_literals_to_mapped_type)]; + return [createCodeFixAction(fixId16, changes, [Diagnostics.Convert_0_to_1_in_0, constraint, name], fixId16, Diagnostics.Convert_all_type_literals_to_mapped_type)]; }, - fixIds: [fixId15], - getAllCodeActions: (context) => codeFixAll(context, errorCodes16, (changes, diag2) => { + fixIds: [fixId16], + getAllCodeActions: (context) => codeFixAll(context, errorCodes17, (changes, diag2) => { const info = getInfo5(diag2.file, diag2.start); if (info) { doChange13(changes, diag2.file, info); @@ -155024,25 +156738,25 @@ function doChange13(changes, sourceFile, { container, typeNode, constraint, name } // src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts -var errorCodes17 = [ +var errorCodes18 = [ Diagnostics.Class_0_incorrectly_implements_interface_1.code, Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code ]; -var fixId16 = "fixClassIncorrectlyImplementsInterface"; +var fixId17 = "fixClassIncorrectlyImplementsInterface"; registerCodeFix({ - errorCodes: errorCodes17, + errorCodes: errorCodes18, getCodeActions(context) { const { sourceFile, span } = context; const classDeclaration = getClass(sourceFile, span.start); return mapDefined(getEffectiveImplementsTypeNodes(classDeclaration), (implementedTypeNode) => { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => addMissingDeclarations(context, implementedTypeNode, sourceFile, classDeclaration, t, context.preferences)); - return changes.length === 0 ? void 0 : createCodeFixAction(fixId16, changes, [Diagnostics.Implement_interface_0, implementedTypeNode.getText(sourceFile)], fixId16, Diagnostics.Implement_all_unimplemented_interfaces); + return changes.length === 0 ? void 0 : createCodeFixAction(fixId17, changes, [Diagnostics.Implement_interface_0, implementedTypeNode.getText(sourceFile)], fixId17, Diagnostics.Implement_all_unimplemented_interfaces); }); }, - fixIds: [fixId16], + fixIds: [fixId17], getAllCodeActions(context) { - const seenClassDeclarations = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes17, (changes, diag2) => { + const seenClassDeclarations = /* @__PURE__ */ new Set(); + return codeFixAll(context, errorCodes18, (changes, diag2) => { const classDeclaration = getClass(diag2.file, diag2.start); if (addToSeen(seenClassDeclarations, getNodeId(classDeclaration))) { for (const implementedTypeNode of getEffectiveImplementsTypeNodes(classDeclaration)) { @@ -155108,7 +156822,7 @@ function getHeritageClauseSymbolTable(classDeclaration, checker) { // src/services/codefixes/importFixes.ts var importFixName = "import"; var importFixId = "fixMissingImport"; -var errorCodes18 = [ +var errorCodes19 = [ Diagnostics.Cannot_find_name_0.code, Diagnostics.Cannot_find_name_0_Did_you_mean_1.code, Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, @@ -155127,10 +156841,11 @@ var errorCodes18 = [ Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha.code, Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode.code, Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig.code, - Diagnostics.Cannot_find_namespace_0_Did_you_mean_1.code + Diagnostics.Cannot_find_namespace_0_Did_you_mean_1.code, + Diagnostics.This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found.code ]; registerCodeFix({ - errorCodes: errorCodes18, + errorCodes: errorCodes19, getCodeActions(context) { const { errorCode, preferences, sourceFile, span, program } = context; const info = getFixInfos( @@ -155166,7 +156881,7 @@ registerCodeFix({ host, cancellationToken ); - eachDiagnostic(context, errorCodes18, (diag2) => importAdder.addImportFromDiagnostic(diag2, context)); + eachDiagnostic(context, errorCodes19, (diag2) => importAdder.addImportFromDiagnostic(diag2, context)); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, importAdder.writeFixes)); } }); @@ -155189,7 +156904,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre const removeExisting = /* @__PURE__ */ new Set(); const verbatimImports = /* @__PURE__ */ new Set(); const newImports = /* @__PURE__ */ new Map(); - return { addImportFromDiagnostic, addImportFromExportedSymbol, writeFixes, hasFixes, addImportForUnresolvedIdentifier, addImportForNonExistentExport, removeExistingImport, addVerbatimImport }; + return { addImportFromDiagnostic, addImportFromExportedSymbol, addImportForModuleSymbol, writeFixes, hasFixes, addImportForUnresolvedIdentifier, addImportForNonExistentExport, removeExistingImport, addVerbatimImport }; function addVerbatimImport(declaration) { verbatimImports.add(declaration); } @@ -155205,7 +156920,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre } function addImportFromExportedSymbol(exportedSymbol, isValidTypeOnlyUseSite, referenceImport) { var _a, _b; - const moduleSymbol = Debug.checkDefined(exportedSymbol.parent); + const moduleSymbol = Debug.checkDefined(exportedSymbol.parent, "Expected exported symbol to have module symbol as parent"); const symbolName2 = getNameForExportedSymbol(exportedSymbol, getEmitScriptTarget(compilerOptions)); const checker = program.getTypeChecker(); const symbol = checker.getMergedSymbol(skipAlias(exportedSymbol, checker)); @@ -155239,12 +156954,91 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre ); if (fix) { const localName = ((_b = tryCast(referenceImport == null ? void 0 : referenceImport.name, isIdentifier)) == null ? void 0 : _b.text) ?? symbolName2; + let addAsTypeOnly; + let propertyName; if (referenceImport && isTypeOnlyImportDeclaration(referenceImport) && (fix.kind === 3 /* AddNew */ || fix.kind === 2 /* AddToExisting */) && fix.addAsTypeOnly === 1 /* Allowed */) { - fix = { ...fix, addAsTypeOnly: 2 /* Required */ }; + addAsTypeOnly = 2 /* Required */; } + if (exportedSymbol.name !== localName) { + propertyName = exportedSymbol.name; + } + fix = { + ...fix, + ...addAsTypeOnly === void 0 ? {} : { addAsTypeOnly }, + ...propertyName === void 0 ? {} : { propertyName } + }; addImport({ fix, symbolName: localName ?? symbolName2, errorIdentifierText: void 0 }); } } + function addImportForModuleSymbol(symbolAlias, isValidTypeOnlyUseSite, referenceImport) { + var _a, _b, _c; + const checker = program.getTypeChecker(); + const moduleSymbol = checker.getAliasedSymbol(symbolAlias); + Debug.assert(moduleSymbol.flags & 1536 /* Module */, "Expected symbol to be a module"); + const moduleSpecifierResolutionHost = createModuleSpecifierResolutionHost(program, host); + const moduleSpecifierResult = ts_moduleSpecifiers_exports.getModuleSpecifiersWithCacheInfo( + moduleSymbol, + checker, + compilerOptions, + sourceFile, + moduleSpecifierResolutionHost, + preferences, + /*options*/ + void 0, + /*forAutoImport*/ + true + ); + const useRequire = shouldUseRequire(sourceFile, program); + let addAsTypeOnly = getAddAsTypeOnly( + isValidTypeOnlyUseSite, + /*isForNewImportDeclaration*/ + true, + /*symbol*/ + void 0, + symbolAlias.flags, + program.getTypeChecker(), + compilerOptions + ); + addAsTypeOnly = addAsTypeOnly === 1 /* Allowed */ && isTypeOnlyImportDeclaration(referenceImport) ? 2 /* Required */ : 1 /* Allowed */; + const importKind = isImportDeclaration(referenceImport) ? isDefaultImport(referenceImport) ? 1 /* Default */ : 2 /* Namespace */ : isImportSpecifier(referenceImport) ? 0 /* Named */ : isImportClause(referenceImport) && !!referenceImport.name ? 1 /* Default */ : 2 /* Namespace */; + const exportInfo = [{ + symbol: symbolAlias, + moduleSymbol, + moduleFileName: (_c = (_b = (_a = moduleSymbol.declarations) == null ? void 0 : _a[0]) == null ? void 0 : _b.getSourceFile()) == null ? void 0 : _c.fileName, + exportKind: 4 /* Module */, + targetFlags: symbolAlias.flags, + isFromPackageJson: false + }]; + const existingFix = getImportFixForSymbol( + sourceFile, + exportInfo, + program, + /*position*/ + void 0, + !!isValidTypeOnlyUseSite, + useRequire, + host, + preferences + ); + let fix; + if (existingFix && importKind !== 2 /* Namespace */) { + fix = { + ...existingFix, + addAsTypeOnly, + importKind + }; + } else { + fix = { + kind: 3 /* AddNew */, + moduleSpecifierKind: existingFix !== void 0 ? existingFix.moduleSpecifierKind : moduleSpecifierResult.kind, + moduleSpecifier: existingFix !== void 0 ? existingFix.moduleSpecifier : first(moduleSpecifierResult.moduleSpecifiers), + importKind, + addAsTypeOnly, + useRequire + }; + } + addImport({ fix, symbolName: symbolAlias.name, errorIdentifierText: void 0 }); + } function addImportForNonExistentExport(exportName, exportingFileName, exportKind, exportedMeanings, isImportUsageValidAsTypeOnly) { const exportingSourceFile = program.getSourceFile(exportingFileName); const useRequire = shouldUseRequire(sourceFile, program); @@ -155307,7 +157101,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre removeExisting.add(declaration); } function addImport(info) { - var _a, _b; + var _a, _b, _c; const { fix, symbolName: symbolName2 } = info; switch (fix.kind) { case 0 /* UseNamespace */: @@ -155317,40 +157111,40 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre importType.push(fix); break; case 2 /* AddToExisting */: { - const { importClauseOrBindingPattern, importKind, addAsTypeOnly } = fix; + const { importClauseOrBindingPattern, importKind, addAsTypeOnly, propertyName } = fix; let entry = addToExisting.get(importClauseOrBindingPattern); if (!entry) { addToExisting.set(importClauseOrBindingPattern, entry = { importClauseOrBindingPattern, defaultImport: void 0, namedImports: /* @__PURE__ */ new Map() }); } if (importKind === 0 /* Named */) { - const prevValue = entry == null ? void 0 : entry.namedImports.get(symbolName2); - entry.namedImports.set(symbolName2, reduceAddAsTypeOnlyValues(prevValue, addAsTypeOnly)); + const prevTypeOnly = (_a = entry == null ? void 0 : entry.namedImports.get(symbolName2)) == null ? void 0 : _a.addAsTypeOnly; + entry.namedImports.set(symbolName2, { addAsTypeOnly: reduceAddAsTypeOnlyValues(prevTypeOnly, addAsTypeOnly), propertyName }); } else { Debug.assert(entry.defaultImport === void 0 || entry.defaultImport.name === symbolName2, "(Add to Existing) Default import should be missing or match symbolName"); entry.defaultImport = { name: symbolName2, - addAsTypeOnly: reduceAddAsTypeOnlyValues((_a = entry.defaultImport) == null ? void 0 : _a.addAsTypeOnly, addAsTypeOnly) + addAsTypeOnly: reduceAddAsTypeOnlyValues((_b = entry.defaultImport) == null ? void 0 : _b.addAsTypeOnly, addAsTypeOnly) }; } break; } case 3 /* AddNew */: { - const { moduleSpecifier, importKind, useRequire, addAsTypeOnly } = fix; + const { moduleSpecifier, importKind, useRequire, addAsTypeOnly, propertyName } = fix; const entry = getNewImportEntry(moduleSpecifier, importKind, useRequire, addAsTypeOnly); Debug.assert(entry.useRequire === useRequire, "(Add new) Tried to add an `import` and a `require` for the same module"); switch (importKind) { case 1 /* Default */: Debug.assert(entry.defaultImport === void 0 || entry.defaultImport.name === symbolName2, "(Add new) Default import should be missing or match symbolName"); - entry.defaultImport = { name: symbolName2, addAsTypeOnly: reduceAddAsTypeOnlyValues((_b = entry.defaultImport) == null ? void 0 : _b.addAsTypeOnly, addAsTypeOnly) }; + entry.defaultImport = { name: symbolName2, addAsTypeOnly: reduceAddAsTypeOnlyValues((_c = entry.defaultImport) == null ? void 0 : _c.addAsTypeOnly, addAsTypeOnly) }; break; case 0 /* Named */: const prevValue = (entry.namedImports || (entry.namedImports = /* @__PURE__ */ new Map())).get(symbolName2); - entry.namedImports.set(symbolName2, reduceAddAsTypeOnlyValues(prevValue, addAsTypeOnly)); + entry.namedImports.set(symbolName2, [reduceAddAsTypeOnlyValues(prevValue, addAsTypeOnly), propertyName]); break; case 3 /* CommonJS */: if (compilerOptions.verbatimModuleSyntax) { const prevValue2 = (entry.namedImports || (entry.namedImports = /* @__PURE__ */ new Map())).get(symbolName2); - entry.namedImports.set(symbolName2, reduceAddAsTypeOnlyValues(prevValue2, addAsTypeOnly)); + entry.namedImports.set(symbolName2, [reduceAddAsTypeOnlyValues(prevValue2, addAsTypeOnly), propertyName]); } else { Debug.assert(entry.namespaceLikeImport === void 0 || entry.namespaceLikeImport.name === symbolName2, "Namespacelike import shoudl be missing or match symbolName"); entry.namespaceLikeImport = { importKind, name: symbolName2, addAsTypeOnly }; @@ -155411,7 +157205,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre function writeFixes(changeTracker, oldFileQuotePreference) { var _a, _b; let quotePreference; - if (isFullSourceFile(sourceFile) && sourceFile.imports.length === 0 && oldFileQuotePreference !== void 0) { + if (sourceFile.imports !== void 0 && sourceFile.imports.length === 0 && oldFileQuotePreference !== void 0) { quotePreference = oldFileQuotePreference; } else { quotePreference = getQuotePreference(sourceFile, preferences); @@ -155504,7 +157298,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre sourceFile, importClauseOrBindingPattern, defaultImport, - arrayFrom(namedImports.entries(), ([name, addAsTypeOnly]) => ({ addAsTypeOnly, name })), + arrayFrom(namedImports.entries(), ([name, { addAsTypeOnly, propertyName }]) => ({ addAsTypeOnly, propertyName, name })), importSpecifiersToRemoveWhileAdding, preferences ); @@ -155517,7 +157311,7 @@ function createImportAdderWorker(sourceFile, program, useAutoImportProvider, pre moduleSpecifier, quotePreference, defaultImport, - namedImports && arrayFrom(namedImports.entries(), ([name, addAsTypeOnly]) => ({ addAsTypeOnly, name })), + namedImports && arrayFrom(namedImports.entries(), ([name, [addAsTypeOnly, propertyName]]) => ({ addAsTypeOnly, propertyName, name })), namespaceLikeImport, compilerOptions, preferences @@ -155693,7 +157487,8 @@ function getAllExportInfoForSymbol(importingFile, symbol, symbolName2, moduleSym const moduleSourceFile = isFileExcluded && mergedModuleSymbol.declarations && getDeclarationOfKind(mergedModuleSymbol, 307 /* SourceFile */); const moduleSymbolExcluded = moduleSourceFile && isFileExcluded(moduleSourceFile); return getExportInfoMap(importingFile, host, program, preferences, cancellationToken).search(importingFile.path, preferCapitalized, (name) => name === symbolName2, (info) => { - if (getChecker(info[0].isFromPackageJson).getMergedSymbol(skipAlias(info[0].symbol, getChecker(info[0].isFromPackageJson))) === symbol && (moduleSymbolExcluded || info.some((i) => i.moduleSymbol === moduleSymbol || i.symbol.parent === moduleSymbol))) { + const checker = getChecker(info[0].isFromPackageJson); + if (checker.getMergedSymbol(skipAlias(info[0].symbol, checker)) === symbol && (moduleSymbolExcluded || info.some((i) => checker.getMergedSymbol(i.moduleSymbol) === moduleSymbol || i.symbol.parent === moduleSymbol))) { return info; } }); @@ -156122,6 +157917,8 @@ function getImportKind(importingFile, exportKind, program, forceImportKeyword) { return getExportEqualsImportKind(importingFile, program.getCompilerOptions(), !!forceImportKeyword); case 3 /* UMD */: return getUmdImportKind(importingFile, program, !!forceImportKeyword); + case 4 /* Module */: + return 2 /* Namespace */; default: return Debug.assertNever(exportKind); } @@ -156222,7 +158019,7 @@ function getExportInfos(symbolName2, isJsxTagName, currentTokenMeaning, cancella }); function addSymbol(moduleSymbol, toFile, exportedSymbol, exportKind, program2, isFromPackageJson) { const moduleSpecifierResolutionHost = getModuleSpecifierResolutionHost(isFromPackageJson); - if (toFile && isImportableFile(program2, fromFile, toFile, preferences, packageJsonFilter, moduleSpecifierResolutionHost, moduleSpecifierCache) || (!toFile && packageJsonFilter.allowsImportingAmbientModule(moduleSymbol, moduleSpecifierResolutionHost) || fileContainsPackageImport(fromFile, stripQuotes(moduleSymbol.name)))) { + if (isImportable(program2, fromFile, toFile, moduleSymbol, preferences, packageJsonFilter, moduleSpecifierResolutionHost, moduleSpecifierCache)) { const checker = program2.getTypeChecker(); originalSymbolToExportInfos.add(getUniqueSymbolId(exportedSymbol, checker).toString(), { symbol: exportedSymbol, moduleSymbol, moduleFileName: toFile == null ? void 0 : toFile.fileName, exportKind, targetFlags: skipAlias(exportedSymbol, checker).flags, isFromPackageJson }); } @@ -156417,8 +158214,7 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor ...namedImports.map((i) => factory.createBindingElement( /*dotDotDotToken*/ void 0, - /*propertyName*/ - void 0, + i.propertyName, i.name )) ]) @@ -156429,12 +158225,7 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor addElementToBindingPattern(clause, defaultImport.name, "default"); } for (const specifier of namedImports) { - addElementToBindingPattern( - clause, - specifier.name, - /*propertyName*/ - void 0 - ); + addElementToBindingPattern(clause, specifier.name, specifier.propertyName); } return; } @@ -156450,8 +158241,7 @@ function doAddExistingFix(changes, sourceFile, clause, defaultImport, namedImpor namedImports.map( (namedImport) => factory.createImportSpecifier( (!clause.isTypeOnly || promoteFromTypeOnly2) && shouldUseTypeOnly(namedImport, preferences), - /*propertyName*/ - void 0, + namedImport.propertyName === void 0 ? void 0 : factory.createIdentifier(namedImport.propertyName), factory.createIdentifier(namedImport.name) ) ), @@ -156546,8 +158336,7 @@ function getNewImports(moduleSpecifier, quotePreference, defaultImport, namedImp namedImports == null ? void 0 : namedImports.map( (namedImport) => factory.createImportSpecifier( !topLevelTypeOnly && shouldUseTypeOnly(namedImport, preferences), - /*propertyName*/ - void 0, + namedImport.propertyName === void 0 ? void 0 : factory.createIdentifier(namedImport.propertyName), factory.createIdentifier(namedImport.name) ) ), @@ -156585,11 +158374,10 @@ function getNewRequires(moduleSpecifier, quotePreference, defaultImport, namedIm const quotedModuleSpecifier = makeStringLiteral(moduleSpecifier, quotePreference); let statements; if (defaultImport || (namedImports == null ? void 0 : namedImports.length)) { - const bindingElements = (namedImports == null ? void 0 : namedImports.map(({ name }) => factory.createBindingElement( + const bindingElements = (namedImports == null ? void 0 : namedImports.map(({ name, propertyName }) => factory.createBindingElement( /*dotDotDotToken*/ void 0, - /*propertyName*/ - void 0, + propertyName, name ))) || []; if (defaultImport) { @@ -156641,8 +158429,8 @@ function getEmitModuleFormatOfFile(file, program) { } // src/services/codefixes/fixAddMissingConstraint.ts -var fixId17 = "addMissingConstraint"; -var errorCodes19 = [ +var fixId18 = "addMissingConstraint"; +var errorCodes20 = [ // We want errors this could be attached to: // Diagnostics.This_type_parameter_probably_needs_an_extends_0_constraint Diagnostics.Type_0_is_not_comparable_to_type_1.code, @@ -156655,20 +158443,20 @@ var errorCodes19 = [ Diagnostics.Type_0_does_not_satisfy_the_constraint_1.code ]; registerCodeFix({ - errorCodes: errorCodes19, + errorCodes: errorCodes20, getCodeActions(context) { const { sourceFile, span, program, preferences, host } = context; const info = getInfo6(program, sourceFile, span); if (info === void 0) return; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => addMissingConstraint(t, program, preferences, host, sourceFile, info)); - return [createCodeFixAction(fixId17, changes, Diagnostics.Add_extends_constraint, fixId17, Diagnostics.Add_extends_constraint_to_all_type_parameters)]; + return [createCodeFixAction(fixId18, changes, Diagnostics.Add_extends_constraint, fixId18, Diagnostics.Add_extends_constraint_to_all_type_parameters)]; }, - fixIds: [fixId17], + fixIds: [fixId18], getAllCodeActions: (context) => { const { program, preferences, host } = context; - const seen = /* @__PURE__ */ new Map(); + const seen = /* @__PURE__ */ new Set(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes19, (diag2) => { + eachDiagnostic(context, errorCodes20, (diag2) => { const info = getInfo6(program, diag2.file, createTextSpan(diag2.start, diag2.length)); if (info) { if (addToSeen(seen, getNodeId(info.declaration))) { @@ -156750,7 +158538,7 @@ function tryGetConstraintType(checker, node) { var fixName = "fixOverrideModifier"; var fixAddOverrideId = "fixAddOverrideModifier"; var fixRemoveOverrideId = "fixRemoveOverrideModifier"; -var errorCodes20 = [ +var errorCodes21 = [ Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code, Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code, Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code, @@ -156814,19 +158602,19 @@ var errorCodeFixIdMap = { } }; registerCodeFix({ - errorCodes: errorCodes20, + errorCodes: errorCodes21, getCodeActions: function getCodeActionsToFixOverrideModifierIssues(context) { const { errorCode, span } = context; const info = errorCodeFixIdMap[errorCode]; if (!info) return emptyArray; - const { descriptions, fixId: fixId55, fixAllDescriptions } = info; + const { descriptions, fixId: fixId56, fixAllDescriptions } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (changes2) => dispatchChanges(changes2, context, errorCode, span.start)); return [ - createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId55, fixAllDescriptions) + createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId56, fixAllDescriptions) ]; }, fixIds: [fixName, fixAddOverrideId, fixRemoveOverrideId], - getAllCodeActions: (context) => codeFixAll(context, errorCodes20, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes21, (changes, diag2) => { const { code, start } = diag2; const info = errorCodeFixIdMap[code]; if (!info || info.fixId !== context.fixId) { @@ -156902,20 +158690,20 @@ function findContainerClassElementLike(sourceFile, pos) { } // src/services/codefixes/fixNoPropertyAccessFromIndexSignature.ts -var fixId18 = "fixNoPropertyAccessFromIndexSignature"; -var errorCodes21 = [ +var fixId19 = "fixNoPropertyAccessFromIndexSignature"; +var errorCodes22 = [ Diagnostics.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0.code ]; registerCodeFix({ - errorCodes: errorCodes21, - fixIds: [fixId18], + errorCodes: errorCodes22, + fixIds: [fixId19], getCodeActions(context) { const { sourceFile, span, preferences } = context; const property = getPropertyAccessExpression(sourceFile, span.start); const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange14(t, context.sourceFile, property, preferences)); - return [createCodeFixAction(fixId18, changes, [Diagnostics.Use_element_access_for_0, property.name.text], fixId18, Diagnostics.Use_element_access_for_all_undeclared_properties)]; + return [createCodeFixAction(fixId19, changes, [Diagnostics.Use_element_access_for_0, property.name.text], fixId19, Diagnostics.Use_element_access_for_all_undeclared_properties)]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes21, (changes, diag2) => doChange14(changes, diag2.file, getPropertyAccessExpression(diag2.file, diag2.start), context.preferences)) + getAllCodeActions: (context) => codeFixAll(context, errorCodes22, (changes, diag2) => doChange14(changes, diag2.file, getPropertyAccessExpression(diag2.file, diag2.start), context.preferences)) }); function doChange14(changes, sourceFile, node, preferences) { const quotePreference = getQuotePreference(sourceFile, preferences); @@ -156931,20 +158719,20 @@ function getPropertyAccessExpression(sourceFile, pos) { } // src/services/codefixes/fixImplicitThis.ts -var fixId19 = "fixImplicitThis"; -var errorCodes22 = [Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code]; +var fixId20 = "fixImplicitThis"; +var errorCodes23 = [Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code]; registerCodeFix({ - errorCodes: errorCodes22, + errorCodes: errorCodes23, getCodeActions: function getCodeActionsToFixImplicitThis(context) { const { sourceFile, program, span } = context; let diagnostic; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { diagnostic = doChange15(t, sourceFile, span.start, program.getTypeChecker()); }); - return diagnostic ? [createCodeFixAction(fixId19, changes, diagnostic, fixId19, Diagnostics.Fix_all_implicit_this_errors)] : emptyArray; + return diagnostic ? [createCodeFixAction(fixId20, changes, diagnostic, fixId20, Diagnostics.Fix_all_implicit_this_errors)] : emptyArray; }, - fixIds: [fixId19], - getAllCodeActions: (context) => codeFixAll(context, errorCodes22, (changes, diag2) => { + fixIds: [fixId20], + getAllCodeActions: (context) => codeFixAll(context, errorCodes23, (changes, diag2) => { doChange15(changes, diag2.file, diag2.start, context.program.getTypeChecker()); }) }); @@ -156989,25 +158777,25 @@ function doChange15(changes, sourceFile, pos, checker) { } // src/services/codefixes/fixImportNonExportedMember.ts -var fixId20 = "fixImportNonExportedMember"; -var errorCodes23 = [ +var fixId21 = "fixImportNonExportedMember"; +var errorCodes24 = [ Diagnostics.Module_0_declares_1_locally_but_it_is_not_exported.code ]; registerCodeFix({ - errorCodes: errorCodes23, - fixIds: [fixId20], + errorCodes: errorCodes24, + fixIds: [fixId21], getCodeActions(context) { const { sourceFile, span, program } = context; const info = getInfo7(sourceFile, span.start, program); if (info === void 0) return void 0; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange16(t, program, info)); - return [createCodeFixAction(fixId20, changes, [Diagnostics.Export_0_from_module_1, info.exportName.node.text, info.moduleSpecifier], fixId20, Diagnostics.Export_all_referenced_locals)]; + return [createCodeFixAction(fixId21, changes, [Diagnostics.Export_0_from_module_1, info.exportName.node.text, info.moduleSpecifier], fixId21, Diagnostics.Export_all_referenced_locals)]; }, getAllCodeActions(context) { const { program } = context; return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { const exports2 = /* @__PURE__ */ new Map(); - eachDiagnostic(context, errorCodes23, (diag2) => { + eachDiagnostic(context, errorCodes24, (diag2) => { const info = getInfo7(diag2.file, diag2.start, program); if (info === void 0) return void 0; const { exportName, node, moduleSourceFile } = info; @@ -157147,20 +158935,20 @@ function getNodeOfSymbol(symbol) { } // src/services/codefixes/fixIncorrectNamedTupleSyntax.ts -var fixId21 = "fixIncorrectNamedTupleSyntax"; -var errorCodes24 = [ +var fixId22 = "fixIncorrectNamedTupleSyntax"; +var errorCodes25 = [ Diagnostics.A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type.code, Diagnostics.A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type.code ]; registerCodeFix({ - errorCodes: errorCodes24, + errorCodes: errorCodes25, getCodeActions: function getCodeActionsToFixIncorrectNamedTupleSyntax(context) { const { sourceFile, span } = context; const namedTupleMember = getNamedTupleMember(sourceFile, span.start); const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange17(t, sourceFile, namedTupleMember)); - return [createCodeFixAction(fixId21, changes, Diagnostics.Move_labeled_tuple_element_modifiers_to_labels, fixId21, Diagnostics.Move_labeled_tuple_element_modifiers_to_labels)]; + return [createCodeFixAction(fixId22, changes, Diagnostics.Move_labeled_tuple_element_modifiers_to_labels, fixId22, Diagnostics.Move_labeled_tuple_element_modifiers_to_labels)]; }, - fixIds: [fixId21] + fixIds: [fixId22] }); function getNamedTupleMember(sourceFile, pos) { const token = getTokenAtPosition(sourceFile, pos); @@ -157195,8 +158983,8 @@ function doChange17(changes, sourceFile, namedTupleMember) { } // src/services/codefixes/fixSpelling.ts -var fixId22 = "fixSpelling"; -var errorCodes25 = [ +var fixId23 = "fixSpelling"; +var errorCodes26 = [ Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code, Diagnostics.Property_0_may_not_exist_on_type_1_Did_you_mean_2.code, Diagnostics.Cannot_find_name_0_Did_you_mean_1.code, @@ -157213,7 +159001,7 @@ var errorCodes25 = [ Diagnostics.Type_0_is_not_assignable_to_type_1.code ]; registerCodeFix({ - errorCodes: errorCodes25, + errorCodes: errorCodes26, getCodeActions(context) { const { sourceFile, errorCode } = context; const info = getInfo8(sourceFile, context.span.start, context, errorCode); @@ -157221,10 +159009,10 @@ registerCodeFix({ const { node, suggestedSymbol } = info; const target = getEmitScriptTarget(context.host.getCompilationSettings()); const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange18(t, sourceFile, node, suggestedSymbol, target)); - return [createCodeFixAction("spelling", changes, [Diagnostics.Change_spelling_to_0, symbolName(suggestedSymbol)], fixId22, Diagnostics.Fix_all_detected_spelling_errors)]; + return [createCodeFixAction("spelling", changes, [Diagnostics.Change_spelling_to_0, symbolName(suggestedSymbol)], fixId23, Diagnostics.Fix_all_detected_spelling_errors)]; }, - fixIds: [fixId22], - getAllCodeActions: (context) => codeFixAll(context, errorCodes25, (changes, diag2) => { + fixIds: [fixId23], + getAllCodeActions: (context) => codeFixAll(context, errorCodes26, (changes, diag2) => { const info = getInfo8(diag2.file, diag2.start, context, diag2.code); const target = getEmitScriptTarget(context.host.getCompilationSettings()); if (info) doChange18(changes, context.sourceFile, info.node, info.suggestedSymbol, target); @@ -157313,17 +159101,17 @@ function getResolvedSourceFileFromImportDeclaration(context, importDeclaration, } // src/services/codefixes/returnValueCorrect.ts -var fixId23 = "returnValueCorrect"; +var fixId24 = "returnValueCorrect"; var fixIdAddReturnStatement = "fixAddReturnStatement"; var fixRemoveBracesFromArrowFunctionBody = "fixRemoveBracesFromArrowFunctionBody"; var fixIdWrapTheBlockWithParen = "fixWrapTheBlockWithParen"; -var errorCodes26 = [ +var errorCodes27 = [ Diagnostics.A_function_whose_declared_type_is_neither_undefined_void_nor_any_must_return_a_value.code, Diagnostics.Type_0_is_not_assignable_to_type_1.code, Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code ]; registerCodeFix({ - errorCodes: errorCodes26, + errorCodes: errorCodes27, fixIds: [fixIdAddReturnStatement, fixRemoveBracesFromArrowFunctionBody, fixIdWrapTheBlockWithParen], getCodeActions: function getCodeActionsToCorrectReturnValue(context) { const { program, sourceFile, span: { start }, errorCode } = context; @@ -157338,7 +159126,7 @@ registerCodeFix({ return [getActionForfixWrapTheBlockWithParen(context, info.declaration, info.expression)]; } }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes26, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes27, (changes, diag2) => { const info = getInfo9(context.program.getTypeChecker(), diag2.file, diag2.start, diag2.code); if (!info) return void 0; switch (context.fixId) { @@ -157537,7 +159325,7 @@ function wrapBlockWithParen(changes, sourceFile, declaration, expression) { } function getActionForfixAddReturnStatement(context, expression, statement) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => addReturnStatement(t, context.sourceFile, expression, statement)); - return createCodeFixAction(fixId23, changes, Diagnostics.Add_a_return_statement, fixIdAddReturnStatement, Diagnostics.Add_all_missing_return_statement); + return createCodeFixAction(fixId24, changes, Diagnostics.Add_a_return_statement, fixIdAddReturnStatement, Diagnostics.Add_all_missing_return_statement); } function getActionForFixRemoveBracesFromArrowFunctionBody(context, declaration, expression, commentSource) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => removeBlockBodyBrace( @@ -157549,11 +159337,11 @@ function getActionForFixRemoveBracesFromArrowFunctionBody(context, declaration, /*withParen*/ false )); - return createCodeFixAction(fixId23, changes, Diagnostics.Remove_braces_from_arrow_function_body, fixRemoveBracesFromArrowFunctionBody, Diagnostics.Remove_braces_from_all_arrow_function_bodies_with_relevant_issues); + return createCodeFixAction(fixId24, changes, Diagnostics.Remove_braces_from_arrow_function_body, fixRemoveBracesFromArrowFunctionBody, Diagnostics.Remove_braces_from_all_arrow_function_bodies_with_relevant_issues); } function getActionForfixWrapTheBlockWithParen(context, declaration, expression) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => wrapBlockWithParen(t, context.sourceFile, declaration, expression)); - return createCodeFixAction(fixId23, changes, Diagnostics.Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal, fixIdWrapTheBlockWithParen, Diagnostics.Wrap_all_object_literal_with_parentheses); + return createCodeFixAction(fixId24, changes, Diagnostics.Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal, fixIdWrapTheBlockWithParen, Diagnostics.Wrap_all_object_literal_with_parentheses); } // src/services/codefixes/fixAddMissingMember.ts @@ -157561,7 +159349,7 @@ var fixMissingMember = "fixMissingMember"; var fixMissingProperties = "fixMissingProperties"; var fixMissingAttributes = "fixMissingAttributes"; var fixMissingFunctionDeclaration = "fixMissingFunctionDeclaration"; -var errorCodes27 = [ +var errorCodes28 = [ Diagnostics.Property_0_does_not_exist_on_type_1.code, Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code, Diagnostics.Property_0_is_missing_in_type_1_but_required_in_type_2.code, @@ -157571,7 +159359,7 @@ var errorCodes27 = [ Diagnostics.Cannot_find_name_0.code ]; registerCodeFix({ - errorCodes: errorCodes27, + errorCodes: errorCodes28, getCodeActions(context) { const typeChecker = context.program.getTypeChecker(); const info = getInfo10(context.sourceFile, context.span.start, context.errorCode, typeChecker, context.program); @@ -157598,21 +159386,21 @@ registerCodeFix({ }, fixIds: [fixMissingMember, fixMissingFunctionDeclaration, fixMissingProperties, fixMissingAttributes], getAllCodeActions: (context) => { - const { program, fixId: fixId55 } = context; + const { program, fixId: fixId56 } = context; const checker = program.getTypeChecker(); - const seen = /* @__PURE__ */ new Map(); + const seen = /* @__PURE__ */ new Set(); const typeDeclToMembers = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes27, (diag2) => { + eachDiagnostic(context, errorCodes28, (diag2) => { const info = getInfo10(diag2.file, diag2.start, diag2.code, checker, context.program); if (!info || !addToSeen(seen, getNodeId(info.parentDeclaration) + "#" + (info.kind === 3 /* ObjectLiteral */ ? info.identifier : info.token.text))) { return; } - if (fixId55 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { + if (fixId56 === fixMissingFunctionDeclaration && (info.kind === 2 /* Function */ || info.kind === 5 /* Signature */)) { addFunctionDeclaration(changes, context, info); - } else if (fixId55 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { + } else if (fixId56 === fixMissingProperties && info.kind === 3 /* ObjectLiteral */) { addObjectLiteralProperties(changes, context, info); - } else if (fixId55 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { + } else if (fixId56 === fixMissingAttributes && info.kind === 4 /* JsxAttributes */) { addJsxAttributes(changes, context, info); } else { if (info.kind === 1 /* Enum */) { @@ -157651,7 +159439,7 @@ registerCodeFix({ } }); function getInfo10(sourceFile, tokenPos, errorCode, checker, program) { - var _a; + var _a, _b, _c; const token = getTokenAtPosition(sourceFile, tokenPos); const parent2 = token.parent; if (errorCode === Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code) { @@ -157664,7 +159452,7 @@ function getInfo10(sourceFile, tokenPos, errorCode, checker, program) { if (!(param && isParameter(param) && isIdentifier(param.name))) return void 0; const properties = arrayFrom(checker.getUnmatchedProperties( checker.getTypeAtLocation(parent2), - checker.getParameterType(signature, argIndex), + checker.getParameterType(signature, argIndex).getNonNullableType(), /*requireOptionalProperties*/ false, /*matchDiscriminantProperties*/ @@ -157674,7 +159462,7 @@ function getInfo10(sourceFile, tokenPos, errorCode, checker, program) { return { kind: 3 /* ObjectLiteral */, token: param.name, identifier: param.name.text, properties, parentDeclaration: parent2 }; } if (token.kind === 19 /* OpenBraceToken */ && isObjectLiteralExpression(parent2)) { - const targetType = checker.getContextualType(parent2) || checker.getTypeAtLocation(parent2); + const targetType = (_a = checker.getContextualType(parent2) || checker.getTypeAtLocation(parent2)) == null ? void 0 : _a.getNonNullableType(); const properties = arrayFrom(checker.getUnmatchedProperties( checker.getTypeAtLocation(parent2), targetType, @@ -157689,7 +159477,7 @@ function getInfo10(sourceFile, tokenPos, errorCode, checker, program) { } if (!isMemberName(token)) return void 0; if (isIdentifier(token) && hasInitializer(parent2) && parent2.initializer && isObjectLiteralExpression(parent2.initializer)) { - const targetType = checker.getContextualType(token) || checker.getTypeAtLocation(token); + const targetType = (_b = checker.getContextualType(token) || checker.getTypeAtLocation(token)) == null ? void 0 : _b.getNonNullableType(); const properties = arrayFrom(checker.getUnmatchedProperties( checker.getTypeAtLocation(parent2.initializer), targetType, @@ -157708,7 +159496,7 @@ function getInfo10(sourceFile, tokenPos, errorCode, checker, program) { return { kind: 4 /* JsxAttributes */, token, attributes, parentDeclaration: token.parent }; } if (isIdentifier(token)) { - const type = (_a = checker.getContextualType(token)) == null ? void 0 : _a.getNonNullableType(); + const type = (_c = checker.getContextualType(token)) == null ? void 0 : _c.getNonNullableType(); if (type && getObjectFlags(type) & 16 /* Anonymous */) { const signature = firstOrUndefined(checker.getSignaturesOfType(type, 0 /* Call */)); if (signature === void 0) return void 0; @@ -158029,8 +159817,9 @@ function tryGetValueFromType(context, checker, importAdder, quotePreference, typ } if (type.flags & 1056 /* EnumLike */) { const enumMember = type.symbol.exports ? firstOrUndefinedIterator(type.symbol.exports.values()) : type.symbol; + const symbol = type.symbol.parent && type.symbol.parent.flags & 256 /* RegularEnum */ ? type.symbol.parent : type.symbol; const name = checker.symbolToExpression( - type.symbol.parent ? type.symbol.parent : type.symbol, + symbol, 111551 /* Value */, /*enclosingDeclaration*/ void 0, @@ -158181,17 +159970,17 @@ function findScope(node) { } // src/services/codefixes/fixAddMissingNewOperator.ts -var fixId24 = "addMissingNewOperator"; -var errorCodes28 = [Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new.code]; +var fixId25 = "addMissingNewOperator"; +var errorCodes29 = [Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new.code]; registerCodeFix({ - errorCodes: errorCodes28, + errorCodes: errorCodes29, getCodeActions(context) { const { sourceFile, span } = context; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => addMissingNewOperator(t, sourceFile, span)); - return [createCodeFixAction(fixId24, changes, Diagnostics.Add_missing_new_operator_to_call, fixId24, Diagnostics.Add_missing_new_operator_to_all_calls)]; + return [createCodeFixAction(fixId25, changes, Diagnostics.Add_missing_new_operator_to_call, fixId25, Diagnostics.Add_missing_new_operator_to_all_calls)]; }, - fixIds: [fixId24], - getAllCodeActions: (context) => codeFixAll(context, errorCodes28, (changes, diag2) => addMissingNewOperator(changes, context.sourceFile, diag2)) + fixIds: [fixId25], + getAllCodeActions: (context) => codeFixAll(context, errorCodes29, (changes, diag2) => addMissingNewOperator(changes, context.sourceFile, diag2)) }); function addMissingNewOperator(changes, sourceFile, span) { const call = cast(findAncestorMatchingSpan2(sourceFile, span), isCallExpression); @@ -158210,9 +159999,9 @@ function findAncestorMatchingSpan2(sourceFile, span) { // src/services/codefixes/fixAddMissingParam.ts var addMissingParamFixId = "addMissingParam"; var addOptionalParamFixId = "addOptionalParam"; -var errorCodes29 = [Diagnostics.Expected_0_arguments_but_got_1.code]; +var errorCodes30 = [Diagnostics.Expected_0_arguments_but_got_1.code]; registerCodeFix({ - errorCodes: errorCodes29, + errorCodes: errorCodes30, fixIds: [addMissingParamFixId, addOptionalParamFixId], getCodeActions(context) { const info = getInfo11(context.sourceFile, context.program, context.span.start); @@ -158245,7 +160034,7 @@ registerCodeFix({ } return actions2; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes29, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes30, (changes, diag2) => { const info = getInfo11(context.sourceFile, context.program, diag2.start); if (info) { const { declarations, newParameters, newOptionalParameters } = info; @@ -158448,17 +160237,19 @@ function getParameterType(importAdder, typeNode, scriptTarget) { var fixName2 = "fixCannotFindModule"; var fixIdInstallTypesPackage = "installTypesPackage"; var errorCodeCannotFindModule = Diagnostics.Cannot_find_module_0_or_its_corresponding_type_declarations.code; -var errorCodes30 = [ +var errorCannotFindImplicitJsxImport = Diagnostics.This_JSX_tag_requires_the_module_path_0_to_exist_but_none_could_be_found_Make_sure_you_have_types_for_the_appropriate_package_installed.code; +var errorCodes31 = [ errorCodeCannotFindModule, - Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type.code + Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type.code, + errorCannotFindImplicitJsxImport ]; registerCodeFix({ - errorCodes: errorCodes30, + errorCodes: errorCodes31, getCodeActions: function getCodeActionsToFixNotFoundModule(context) { - const { host, sourceFile, span: { start } } = context; - const packageName = tryGetImportedPackageName(sourceFile, start); + const { host, sourceFile, span: { start }, errorCode } = context; + const packageName = errorCode === errorCannotFindImplicitJsxImport ? getJSXImplicitImportBase(context.program.getCompilerOptions(), sourceFile) : tryGetImportedPackageName(sourceFile, start); if (packageName === void 0) return void 0; - const typesPackageName = getTypesPackageNameToInstall(packageName, host, context.errorCode); + const typesPackageName = getTypesPackageNameToInstall(packageName, host, errorCode); return typesPackageName === void 0 ? [] : [createCodeFixAction( fixName2, /*changes*/ @@ -158471,7 +160262,7 @@ registerCodeFix({ }, fixIds: [fixIdInstallTypesPackage], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes30, (_changes, diag2, commands) => { + return codeFixAll(context, errorCodes31, (_changes, diag2, commands) => { const packageName = tryGetImportedPackageName(diag2.file, diag2.start); if (packageName === void 0) return void 0; switch (context.fixId) { @@ -158500,11 +160291,11 @@ function tryGetImportedPackageName(sourceFile, pos) { } function getTypesPackageNameToInstall(packageName, host, diagCode) { var _a; - return diagCode === errorCodeCannotFindModule ? ts_JsTyping_exports.nodeCoreModules.has(packageName) ? "@types/node" : void 0 : ((_a = host.isKnownTypesPackageName) == null ? void 0 : _a.call(host, packageName)) ? getTypesPackageName(packageName) : void 0; + return diagCode === errorCodeCannotFindModule ? nodeCoreModules.has(packageName) ? "@types/node" : void 0 : ((_a = host.isKnownTypesPackageName) == null ? void 0 : _a.call(host, packageName)) ? getTypesPackageName(packageName) : void 0; } // src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts -var errorCodes31 = [ +var errorCodes32 = [ Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2.code, Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2.code, Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_and_3_more.code, @@ -158512,18 +160303,18 @@ var errorCodes31 = [ Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1.code, Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_and_2_more.code ]; -var fixId25 = "fixClassDoesntImplementInheritedAbstractMember"; +var fixId26 = "fixClassDoesntImplementInheritedAbstractMember"; registerCodeFix({ - errorCodes: errorCodes31, + errorCodes: errorCodes32, getCodeActions: function getCodeActionsToFixClassNotImplementingInheritedMembers(context) { const { sourceFile, span } = context; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => addMissingMembers(getClass2(sourceFile, span.start), sourceFile, context, t, context.preferences)); - return changes.length === 0 ? void 0 : [createCodeFixAction(fixId25, changes, Diagnostics.Implement_inherited_abstract_class, fixId25, Diagnostics.Implement_all_inherited_abstract_classes)]; + return changes.length === 0 ? void 0 : [createCodeFixAction(fixId26, changes, Diagnostics.Implement_inherited_abstract_class, fixId26, Diagnostics.Implement_all_inherited_abstract_classes)]; }, - fixIds: [fixId25], + fixIds: [fixId26], getAllCodeActions: function getAllCodeActionsToFixClassDoesntImplementInheritedAbstractMember(context) { - const seenClassDeclarations = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes31, (changes, diag2) => { + const seenClassDeclarations = /* @__PURE__ */ new Set(); + return codeFixAll(context, errorCodes32, (changes, diag2) => { const classDeclaration = getClass2(diag2.file, diag2.start); if (addToSeen(seenClassDeclarations, getNodeId(classDeclaration))) { addMissingMembers(classDeclaration, context.sourceFile, context, changes, context.preferences); @@ -158550,23 +160341,23 @@ function symbolPointsToNonPrivateAndAbstractMember(symbol) { } // src/services/codefixes/fixClassSuperMustPrecedeThisAccess.ts -var fixId26 = "classSuperMustPrecedeThisAccess"; -var errorCodes32 = [Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class.code]; +var fixId27 = "classSuperMustPrecedeThisAccess"; +var errorCodes33 = [Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class.code]; registerCodeFix({ - errorCodes: errorCodes32, + errorCodes: errorCodes33, getCodeActions(context) { const { sourceFile, span } = context; const nodes = getNodes(sourceFile, span.start); if (!nodes) return void 0; const { constructor, superCall } = nodes; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange20(t, sourceFile, constructor, superCall)); - return [createCodeFixAction(fixId26, changes, Diagnostics.Make_super_call_the_first_statement_in_the_constructor, fixId26, Diagnostics.Make_all_super_calls_the_first_statement_in_their_constructor)]; + return [createCodeFixAction(fixId27, changes, Diagnostics.Make_super_call_the_first_statement_in_the_constructor, fixId27, Diagnostics.Make_all_super_calls_the_first_statement_in_their_constructor)]; }, - fixIds: [fixId26], + fixIds: [fixId27], getAllCodeActions(context) { const { sourceFile } = context; - const seenClasses = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes32, (changes, diag2) => { + const seenClasses = /* @__PURE__ */ new Set(); + return codeFixAll(context, errorCodes33, (changes, diag2) => { const nodes = getNodes(diag2.file, diag2.start); if (!nodes) return; const { constructor, superCall } = nodes; @@ -158592,18 +160383,18 @@ function findSuperCall(n) { } // src/services/codefixes/fixConstructorForDerivedNeedSuperCall.ts -var fixId27 = "constructorForDerivedNeedSuperCall"; -var errorCodes33 = [Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call.code]; +var fixId28 = "constructorForDerivedNeedSuperCall"; +var errorCodes34 = [Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call.code]; registerCodeFix({ - errorCodes: errorCodes33, + errorCodes: errorCodes34, getCodeActions(context) { const { sourceFile, span } = context; const ctr = getNode(sourceFile, span.start); const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange21(t, sourceFile, ctr)); - return [createCodeFixAction(fixId27, changes, Diagnostics.Add_missing_super_call, fixId27, Diagnostics.Add_all_missing_super_calls)]; + return [createCodeFixAction(fixId28, changes, Diagnostics.Add_missing_super_call, fixId28, Diagnostics.Add_all_missing_super_calls)]; }, - fixIds: [fixId27], - getAllCodeActions: (context) => codeFixAll(context, errorCodes33, (changes, diag2) => doChange21(changes, context.sourceFile, getNode(diag2.file, diag2.start))) + fixIds: [fixId28], + getAllCodeActions: (context) => codeFixAll(context, errorCodes34, (changes, diag2) => doChange21(changes, context.sourceFile, getNode(diag2.file, diag2.start))) }); function getNode(sourceFile, pos) { const token = getTokenAtPosition(sourceFile, pos); @@ -158623,9 +160414,9 @@ function doChange21(changes, sourceFile, ctr) { // src/services/codefixes/fixEnableJsxFlag.ts var fixID = "fixEnableJsxFlag"; -var errorCodes34 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; +var errorCodes35 = [Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code]; registerCodeFix({ - errorCodes: errorCodes34, + errorCodes: errorCodes35, getCodeActions: function getCodeActionsToFixEnableJsxFlag(context) { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { @@ -158637,7 +160428,7 @@ registerCodeFix({ ]; }, fixIds: [fixID], - getAllCodeActions: (context) => codeFixAll(context, errorCodes34, (changes) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes35, (changes) => { const { configFile } = context.program.getCompilerOptions(); if (configFile === void 0) { return void 0; @@ -158650,23 +160441,23 @@ function doChange22(changeTracker, configFile) { } // src/services/codefixes/fixNaNEquality.ts -var fixId28 = "fixNaNEquality"; -var errorCodes35 = [ +var fixId29 = "fixNaNEquality"; +var errorCodes36 = [ Diagnostics.This_condition_will_always_return_0.code ]; registerCodeFix({ - errorCodes: errorCodes35, + errorCodes: errorCodes36, getCodeActions(context) { const { sourceFile, span, program } = context; const info = getInfo12(program, sourceFile, span); if (info === void 0) return; const { suggestion, expression, arg } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange23(t, sourceFile, arg, expression)); - return [createCodeFixAction(fixId28, changes, [Diagnostics.Use_0, suggestion], fixId28, Diagnostics.Use_Number_isNaN_in_all_conditions)]; + return [createCodeFixAction(fixId29, changes, [Diagnostics.Use_0, suggestion], fixId29, Diagnostics.Use_Number_isNaN_in_all_conditions)]; }, - fixIds: [fixId28], + fixIds: [fixId29], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes35, (changes, diag2) => { + return codeFixAll(context, errorCodes36, (changes, diag2) => { const info = getInfo12(context.program, diag2.file, createTextSpan(diag2.start, diag2.length)); if (info) { doChange23(changes, diag2.file, info.arg, info.expression); @@ -158746,20 +160537,20 @@ registerCodeFix({ }); // src/services/codefixes/fixPropertyAssignment.ts -var fixId29 = "fixPropertyAssignment"; -var errorCodes36 = [ +var fixId30 = "fixPropertyAssignment"; +var errorCodes37 = [ Diagnostics.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code ]; registerCodeFix({ - errorCodes: errorCodes36, - fixIds: [fixId29], + errorCodes: errorCodes37, + fixIds: [fixId30], getCodeActions(context) { const { sourceFile, span } = context; const property = getProperty2(sourceFile, span.start); const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange24(t, context.sourceFile, property)); - return [createCodeFixAction(fixId29, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId29, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; + return [createCodeFixAction(fixId30, changes, [Diagnostics.Change_0_to_1, "=", ":"], fixId30, [Diagnostics.Switch_each_misused_0_to_1, "=", ":"])]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes36, (changes, diag2) => doChange24(changes, diag2.file, getProperty2(diag2.file, diag2.start))) + getAllCodeActions: (context) => codeFixAll(context, errorCodes37, (changes, diag2) => doChange24(changes, diag2.file, getProperty2(diag2.file, diag2.start))) }); function doChange24(changes, sourceFile, node) { changes.replaceNode(sourceFile, node, factory.createPropertyAssignment(node.name, node.objectAssignmentInitializer)); @@ -158769,20 +160560,20 @@ function getProperty2(sourceFile, pos) { } // src/services/codefixes/fixExtendsInterfaceBecomesImplements.ts -var fixId30 = "extendsInterfaceBecomesImplements"; -var errorCodes37 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; +var fixId31 = "extendsInterfaceBecomesImplements"; +var errorCodes38 = [Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code]; registerCodeFix({ - errorCodes: errorCodes37, + errorCodes: errorCodes38, getCodeActions(context) { const { sourceFile } = context; const nodes = getNodes2(sourceFile, context.span.start); if (!nodes) return void 0; const { extendsToken, heritageClauses } = nodes; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChanges2(t, sourceFile, extendsToken, heritageClauses)); - return [createCodeFixAction(fixId30, changes, Diagnostics.Change_extends_to_implements, fixId30, Diagnostics.Change_all_extended_interfaces_to_implements)]; + return [createCodeFixAction(fixId31, changes, Diagnostics.Change_extends_to_implements, fixId31, Diagnostics.Change_all_extended_interfaces_to_implements)]; }, - fixIds: [fixId30], - getAllCodeActions: (context) => codeFixAll(context, errorCodes37, (changes, diag2) => { + fixIds: [fixId31], + getAllCodeActions: (context) => codeFixAll(context, errorCodes38, (changes, diag2) => { const nodes = getNodes2(diag2.file, diag2.start); if (nodes) doChanges2(changes, diag2.file, nodes.extendsToken, nodes.heritageClauses); }) @@ -158809,15 +160600,15 @@ function doChanges2(changes, sourceFile, extendsToken, heritageClauses) { } // src/services/codefixes/fixForgottenThisPropertyAccess.ts -var fixId31 = "forgottenThisPropertyAccess"; +var fixId32 = "forgottenThisPropertyAccess"; var didYouMeanStaticMemberCode = Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code; -var errorCodes38 = [ +var errorCodes39 = [ Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code, Diagnostics.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code, didYouMeanStaticMemberCode ]; registerCodeFix({ - errorCodes: errorCodes38, + errorCodes: errorCodes39, getCodeActions(context) { const { sourceFile } = context; const info = getInfo13(sourceFile, context.span.start, context.errorCode); @@ -158825,10 +160616,10 @@ registerCodeFix({ return void 0; } const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange25(t, sourceFile, info)); - return [createCodeFixAction(fixId31, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId31, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; + return [createCodeFixAction(fixId32, changes, [Diagnostics.Add_0_to_unresolved_variable, info.className || "this"], fixId32, Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]; }, - fixIds: [fixId31], - getAllCodeActions: (context) => codeFixAll(context, errorCodes38, (changes, diag2) => { + fixIds: [fixId32], + getAllCodeActions: (context) => codeFixAll(context, errorCodes39, (changes, diag2) => { const info = getInfo13(diag2.file, diag2.start, diag2.code); if (info) doChange25(changes, context.sourceFile, info); }) @@ -158847,12 +160638,12 @@ function doChange25(changes, sourceFile, { node, className }) { // src/services/codefixes/fixInvalidJsxCharacters.ts var fixIdExpression = "fixInvalidJsxCharacters_expression"; var fixIdHtmlEntity = "fixInvalidJsxCharacters_htmlEntity"; -var errorCodes39 = [ +var errorCodes40 = [ Diagnostics.Unexpected_token_Did_you_mean_or_gt.code, Diagnostics.Unexpected_token_Did_you_mean_or_rbrace.code ]; registerCodeFix({ - errorCodes: errorCodes39, + errorCodes: errorCodes40, fixIds: [fixIdExpression, fixIdHtmlEntity], getCodeActions(context) { const { sourceFile, preferences, span } = context; @@ -158878,7 +160669,7 @@ registerCodeFix({ ]; }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes39, (changes, diagnostic) => doChange26(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); + return codeFixAll(context, errorCodes40, (changes, diagnostic) => doChange26(changes, context.preferences, diagnostic.file, diagnostic.start, context.fixId === fixIdHtmlEntity)); } }); var htmlEntity = { @@ -158900,12 +160691,12 @@ function doChange26(changes, preferences, sourceFile, start, useHtmlEntity) { // src/services/codefixes/fixUnmatchedParameter.ts var deleteUnmatchedParameter = "deleteUnmatchedParameter"; var renameUnmatchedParameter = "renameUnmatchedParameter"; -var errorCodes40 = [ +var errorCodes41 = [ Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name.code ]; registerCodeFix({ fixIds: [deleteUnmatchedParameter, renameUnmatchedParameter], - errorCodes: errorCodes40, + errorCodes: errorCodes41, getCodeActions: function getCodeActionsToFixUnmatchedParameter(context) { const { sourceFile, span } = context; const actions2 = []; @@ -158920,7 +160711,7 @@ registerCodeFix({ getAllCodeActions: function getAllCodeActionsToFixUnmatchedParameter(context) { const tagsToSignature = /* @__PURE__ */ new Map(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes40, ({ file, start }) => { + eachDiagnostic(context, errorCodes41, ({ file, start }) => { const info = getInfo14(file, start); if (info) { tagsToSignature.set(info.signature, append(tagsToSignature.get(info.signature), info.jsDocParameterTag)); @@ -158983,10 +160774,10 @@ function getInfo14(sourceFile, pos) { } // src/services/codefixes/fixUnreferenceableDecoratorMetadata.ts -var fixId32 = "fixUnreferenceableDecoratorMetadata"; -var errorCodes41 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; +var fixId33 = "fixUnreferenceableDecoratorMetadata"; +var errorCodes42 = [Diagnostics.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code]; registerCodeFix({ - errorCodes: errorCodes41, + errorCodes: errorCodes42, getCodeActions: (context) => { const importDeclaration = getImportDeclaration(context.sourceFile, context.program, context.span.start); if (!importDeclaration) return; @@ -158994,14 +160785,14 @@ registerCodeFix({ const typeOnlyChanges = ts_textChanges_exports.ChangeTracker.with(context, (t) => doTypeOnlyImportChange(t, context.sourceFile, importDeclaration, context.program)); let actions2; if (namespaceChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId33, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import)); } if (typeOnlyChanges.length) { - actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, typeOnlyChanges, Diagnostics.Use_import_type)); + actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId33, typeOnlyChanges, Diagnostics.Use_import_type)); } return actions2; }, - fixIds: [fixId32] + fixIds: [fixId33] }); function getImportDeclaration(sourceFile, program, start) { const identifier = tryCast(getTokenAtPosition(sourceFile, start), isIdentifier); @@ -159038,7 +160829,7 @@ var fixIdPrefix = "unusedIdentifier_prefix"; var fixIdDelete = "unusedIdentifier_delete"; var fixIdDeleteImports = "unusedIdentifier_deleteImports"; var fixIdInfer = "unusedIdentifier_infer"; -var errorCodes42 = [ +var errorCodes43 = [ Diagnostics._0_is_declared_but_its_value_is_never_read.code, Diagnostics._0_is_declared_but_never_used.code, Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code, @@ -159048,7 +160839,7 @@ var errorCodes42 = [ Diagnostics.All_type_parameters_are_unused.code ]; registerCodeFix({ - errorCodes: errorCodes42, + errorCodes: errorCodes43, getCodeActions(context) { const { errorCode, sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); @@ -159137,7 +160928,7 @@ registerCodeFix({ const { sourceFile, program, cancellationToken } = context; const checker = program.getTypeChecker(); const sourceFiles = program.getSourceFiles(); - return codeFixAll(context, errorCodes42, (changes, diag2) => { + return codeFixAll(context, errorCodes43, (changes, diag2) => { const token = getTokenAtPosition(sourceFile, diag2.start); switch (context.fixId) { case fixIdPrefix: @@ -159377,18 +161168,18 @@ function deleteFunctionLikeDeclaration(changes, sourceFile, node) { } // src/services/codefixes/fixUnreachableCode.ts -var fixId33 = "fixUnreachableCode"; -var errorCodes43 = [Diagnostics.Unreachable_code_detected.code]; +var fixId34 = "fixUnreachableCode"; +var errorCodes44 = [Diagnostics.Unreachable_code_detected.code]; registerCodeFix({ - errorCodes: errorCodes43, + errorCodes: errorCodes44, getCodeActions(context) { const syntacticDiagnostics = context.program.getSyntacticDiagnostics(context.sourceFile, context.cancellationToken); if (syntacticDiagnostics.length) return; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange27(t, context.sourceFile, context.span.start, context.span.length, context.errorCode)); - return [createCodeFixAction(fixId33, changes, Diagnostics.Remove_unreachable_code, fixId33, Diagnostics.Remove_all_unreachable_code)]; + return [createCodeFixAction(fixId34, changes, Diagnostics.Remove_unreachable_code, fixId34, Diagnostics.Remove_all_unreachable_code)]; }, - fixIds: [fixId33], - getAllCodeActions: (context) => codeFixAll(context, errorCodes43, (changes, diag2) => doChange27(changes, diag2.file, diag2.start, diag2.length, diag2.code)) + fixIds: [fixId34], + getAllCodeActions: (context) => codeFixAll(context, errorCodes44, (changes, diag2) => doChange27(changes, diag2.file, diag2.start, diag2.length, diag2.code)) }); function doChange27(changes, sourceFile, start, length2, errorCode) { const token = getTokenAtPosition(sourceFile, start); @@ -159415,6 +161206,7 @@ function doChange27(changes, sourceFile, start, length2, errorCode) { } return; } + // falls through case 247 /* WhileStatement */: case 248 /* ForStatement */: changes.delete(sourceFile, container); @@ -159439,16 +161231,16 @@ function lastWhere(a, pred) { } // src/services/codefixes/fixUnusedLabel.ts -var fixId34 = "fixUnusedLabel"; -var errorCodes44 = [Diagnostics.Unused_label.code]; +var fixId35 = "fixUnusedLabel"; +var errorCodes45 = [Diagnostics.Unused_label.code]; registerCodeFix({ - errorCodes: errorCodes44, + errorCodes: errorCodes45, getCodeActions(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange28(t, context.sourceFile, context.span.start)); - return [createCodeFixAction(fixId34, changes, Diagnostics.Remove_unused_label, fixId34, Diagnostics.Remove_all_unused_labels)]; + return [createCodeFixAction(fixId35, changes, Diagnostics.Remove_unused_label, fixId35, Diagnostics.Remove_all_unused_labels)]; }, - fixIds: [fixId34], - getAllCodeActions: (context) => codeFixAll(context, errorCodes44, (changes, diag2) => doChange28(changes, diag2.file, diag2.start)) + fixIds: [fixId35], + getAllCodeActions: (context) => codeFixAll(context, errorCodes45, (changes, diag2) => doChange28(changes, diag2.file, diag2.start)) }); function doChange28(changes, sourceFile, start) { const token = getTokenAtPosition(sourceFile, start); @@ -159467,13 +161259,13 @@ function doChange28(changes, sourceFile, start) { // src/services/codefixes/fixJSDocTypes.ts var fixIdPlain = "fixJSDocTypes_plain"; var fixIdNullable = "fixJSDocTypes_nullable"; -var errorCodes45 = [ +var errorCodes46 = [ Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments.code, Diagnostics._0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code, Diagnostics._0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code ]; registerCodeFix({ - errorCodes: errorCodes45, + errorCodes: errorCodes46, getCodeActions(context) { const { sourceFile } = context; const checker = context.program.getTypeChecker(); @@ -159486,20 +161278,20 @@ registerCodeFix({ actions2.push(fix(type, fixIdNullable, Diagnostics.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)); } return actions2; - function fix(type2, fixId55, fixAllDescription) { + function fix(type2, fixId56, fixAllDescription) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange29(t, sourceFile, typeNode, type2, checker)); - return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId55, fixAllDescription); + return createCodeFixAction("jdocTypes", changes, [Diagnostics.Change_0_to_1, original, checker.typeToString(type2)], fixId56, fixAllDescription); } }, fixIds: [fixIdPlain, fixIdNullable], getAllCodeActions(context) { - const { fixId: fixId55, program, sourceFile } = context; + const { fixId: fixId56, program, sourceFile } = context; const checker = program.getTypeChecker(); - return codeFixAll(context, errorCodes45, (changes, err) => { + return codeFixAll(context, errorCodes46, (changes, err) => { const info = getInfo15(err.file, err.start, checker); if (!info) return; const { typeNode, type } = info; - const fixedType = typeNode.kind === 314 /* JSDocNullableType */ && fixId55 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; + const fixedType = typeNode.kind === 314 /* JSDocNullableType */ && fixId56 === fixIdNullable ? checker.getNullableType(type, 32768 /* Undefined */) : type; doChange29(changes, sourceFile, typeNode, fixedType, checker); }); } @@ -159555,21 +161347,21 @@ function getType(checker, node) { } // src/services/codefixes/fixMissingCallParentheses.ts -var fixId35 = "fixMissingCallParentheses"; -var errorCodes46 = [ +var fixId36 = "fixMissingCallParentheses"; +var errorCodes47 = [ Diagnostics.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead.code ]; registerCodeFix({ - errorCodes: errorCodes46, - fixIds: [fixId35], + errorCodes: errorCodes47, + fixIds: [fixId36], getCodeActions(context) { const { sourceFile, span } = context; const callName = getCallName(sourceFile, span.start); if (!callName) return; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange30(t, context.sourceFile, callName)); - return [createCodeFixAction(fixId35, changes, Diagnostics.Add_missing_call_parentheses, fixId35, Diagnostics.Add_all_missing_call_parentheses)]; + return [createCodeFixAction(fixId36, changes, Diagnostics.Add_missing_call_parentheses, fixId36, Diagnostics.Add_all_missing_call_parentheses)]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes46, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes47, (changes, diag2) => { const callName = getCallName(diag2.file, diag2.start); if (callName) doChange30(changes, diag2.file, callName); }) @@ -159593,14 +161385,14 @@ function getCallName(sourceFile, start) { } // src/services/codefixes/fixMissingTypeAnnotationOnExports.ts -var fixId36 = "fixMissingTypeAnnotationOnExports"; +var fixId37 = "fixMissingTypeAnnotationOnExports"; var addAnnotationFix = "add-annotation"; var addInlineTypeAssertion = "add-type-assertion"; var extractExpression = "extract-expression"; -var errorCodes47 = [ +var errorCodes48 = [ Diagnostics.Function_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations.code, Diagnostics.Method_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations.code, - Diagnostics.At_least_one_accessor_must_have_an_explicit_return_type_annotation_with_isolatedDeclarations.code, + Diagnostics.At_least_one_accessor_must_have_an_explicit_type_annotation_with_isolatedDeclarations.code, Diagnostics.Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations.code, Diagnostics.Parameter_must_have_an_explicit_type_annotation_with_isolatedDeclarations.code, Diagnostics.Property_must_have_an_explicit_type_annotation_with_isolatedDeclarations.code, @@ -159616,7 +161408,7 @@ var errorCodes47 = [ Diagnostics.Default_exports_can_t_be_inferred_with_isolatedDeclarations.code, Diagnostics.Only_const_arrays_can_be_inferred_with_isolatedDeclarations.code, Diagnostics.Assigning_properties_to_functions_without_declaring_them_is_not_supported_with_isolatedDeclarations_Add_an_explicit_declaration_for_the_properties_assigned_to_this_function.code, - Diagnostics.Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_it_s_type_This_is_not_supported_with_isolatedDeclarations.code, + Diagnostics.Declaration_emit_for_this_parameter_requires_implicitly_adding_undefined_to_its_type_This_is_not_supported_with_isolatedDeclarations.code, Diagnostics.Type_containing_private_name_0_can_t_be_used_with_isolatedDeclarations.code, Diagnostics.Add_satisfies_and_a_type_assertion_to_this_expression_satisfies_T_as_T_to_make_the_type_explicit.code ]; @@ -159637,8 +161429,8 @@ var canHaveTypeAnnotation = /* @__PURE__ */ new Set([ var declarationEmitNodeBuilderFlags2 = 1024 /* MultilineObjectLiterals */ | 2048 /* WriteClassExpressionAsTypeLiteral */ | 4096 /* UseTypeOfFunction */ | 8 /* UseStructuralFallback */ | 524288 /* AllowEmptyTuple */ | 4 /* GenerateNamesForShadowedTypeParams */ | 1 /* NoTruncation */; var declarationEmitInternalNodeBuilderFlags2 = 1 /* WriteComputedProps */; registerCodeFix({ - errorCodes: errorCodes47, - fixIds: [fixId36], + errorCodes: errorCodes48, + fixIds: [fixId37], getCodeActions(context) { const fixes = []; addCodeAction(addAnnotationFix, fixes, context, 0 /* Full */, (f) => f.addTypeAnnotation(context.span)); @@ -159652,7 +161444,7 @@ registerCodeFix({ }, getAllCodeActions: (context) => { const changes = withContext(context, 0 /* Full */, (f) => { - eachDiagnostic(context, errorCodes47, (diag2) => { + eachDiagnostic(context, errorCodes48, (diag2) => { f.addTypeAnnotation(diag2); }); }); @@ -159666,7 +161458,7 @@ function addCodeAction(fixName8, fixes, context, typePrintMode, cb) { fixName8, changes.textChanges, changes.result, - fixId36, + fixId37, Diagnostics.Add_all_missing_type_annotations )); } @@ -160422,7 +162214,7 @@ function withContext(context, typePrintMode, cb) { } function typeToTypeNode2(type, enclosingDeclaration, flags = 0 /* None */) { let isTruncated = false; - const result2 = typeToAutoImportableTypeNode(typeChecker, importAdder, type, enclosingDeclaration, scriptTarget, declarationEmitNodeBuilderFlags2 | flags, declarationEmitInternalNodeBuilderFlags2, { + const minimizedTypeNode = typeToMinimizedReferenceType(typeChecker, type, enclosingDeclaration, declarationEmitNodeBuilderFlags2 | flags, declarationEmitInternalNodeBuilderFlags2, { moduleResolverHost: program, trackSymbol() { return true; @@ -160431,6 +162223,10 @@ function withContext(context, typePrintMode, cb) { isTruncated = true; } }); + if (!minimizedTypeNode) { + return void 0; + } + const result2 = typeNodeToAutoImportableTypeNode(minimizedTypeNode, importAdder, scriptTarget); return isTruncated ? factory.createKeywordTypeNode(133 /* AnyKeyword */) : result2; } function typePredicateToTypeNode(typePredicate, enclosingDeclaration, flags = 0 /* None */) { @@ -160486,26 +162282,26 @@ function withContext(context, typePrintMode, cb) { } // src/services/codefixes/fixAwaitInSyncFunction.ts -var fixId37 = "fixAwaitInSyncFunction"; -var errorCodes48 = [ +var fixId38 = "fixAwaitInSyncFunction"; +var errorCodes49 = [ Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.await_using_statements_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, Diagnostics.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function.code ]; registerCodeFix({ - errorCodes: errorCodes48, + errorCodes: errorCodes49, getCodeActions(context) { const { sourceFile, span } = context; const nodes = getNodes3(sourceFile, span.start); if (!nodes) return void 0; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange31(t, sourceFile, nodes)); - return [createCodeFixAction(fixId37, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId37, Diagnostics.Add_all_missing_async_modifiers)]; + return [createCodeFixAction(fixId38, changes, Diagnostics.Add_async_modifier_to_containing_function, fixId38, Diagnostics.Add_all_missing_async_modifiers)]; }, - fixIds: [fixId37], + fixIds: [fixId38], getAllCodeActions: function getAllCodeActionsToFixAwaitInSyncFunction(context) { - const seen = /* @__PURE__ */ new Map(); - return codeFixAll(context, errorCodes48, (changes, diag2) => { + const seen = /* @__PURE__ */ new Set(); + return codeFixAll(context, errorCodes49, (changes, diag2) => { const nodes = getNodes3(diag2.file, diag2.start); if (!nodes || !addToSeen(seen, getNodeId(nodes.insertBefore))) return; doChange31(changes, context.sourceFile, nodes); @@ -160558,21 +162354,21 @@ function doChange31(changes, sourceFile, { insertBefore, returnType }) { } // src/services/codefixes/fixPropertyOverrideAccessor.ts -var errorCodes49 = [ +var errorCodes50 = [ Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code, Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code ]; -var fixId38 = "fixPropertyOverrideAccessor"; +var fixId39 = "fixPropertyOverrideAccessor"; registerCodeFix({ - errorCodes: errorCodes49, + errorCodes: errorCodes50, getCodeActions(context) { const edits = doChange32(context.sourceFile, context.span.start, context.span.length, context.errorCode, context); if (edits) { - return [createCodeFixAction(fixId38, edits, Diagnostics.Generate_get_and_set_accessors, fixId38, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; + return [createCodeFixAction(fixId39, edits, Diagnostics.Generate_get_and_set_accessors, fixId39, Diagnostics.Generate_get_and_set_accessors_for_all_overriding_properties)]; } }, - fixIds: [fixId38], - getAllCodeActions: (context) => codeFixAll(context, errorCodes49, (changes, diag2) => { + fixIds: [fixId39], + getAllCodeActions: (context) => codeFixAll(context, errorCodes50, (changes, diag2) => { const edits = doChange32(diag2.file, diag2.start, diag2.length, diag2.code, context); if (edits) { for (const edit of edits) { @@ -160608,8 +162404,8 @@ function doChange32(file, start, length2, code, context) { } // src/services/codefixes/inferFromUsage.ts -var fixId39 = "inferFromUsage"; -var errorCodes50 = [ +var fixId40 = "inferFromUsage"; +var errorCodes51 = [ // Variable declarations Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code, // Variable uses @@ -160643,7 +162439,7 @@ var errorCodes50 = [ Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code ]; registerCodeFix({ - errorCodes: errorCodes50, + errorCodes: errorCodes51, getCodeActions(context) { const { sourceFile, program, span: { start }, errorCode, cancellationToken, host, preferences } = context; const token = getTokenAtPosition(sourceFile, start); @@ -160663,13 +162459,13 @@ registerCodeFix({ ); }); const name = declaration && getNameOfDeclaration(declaration); - return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId39, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId39, Diagnostics.Infer_all_types_from_usage)]; + return !name || changes.length === 0 ? void 0 : [createCodeFixAction(fixId40, changes, [getDiagnostic(errorCode, token), getTextOfNode(name)], fixId40, Diagnostics.Infer_all_types_from_usage)]; }, - fixIds: [fixId39], + fixIds: [fixId40], getAllCodeActions(context) { const { sourceFile, program, cancellationToken, host, preferences } = context; const markSeen = nodeSeenTracker(); - return codeFixAll(context, errorCodes50, (changes, err) => { + return codeFixAll(context, errorCodes51, (changes, err) => { doChange33(changes, sourceFile, getTokenAtPosition(err.file, err.start), err.code, program, cancellationToken, markSeen, host, preferences); }); } @@ -160679,6 +162475,7 @@ function getDiagnostic(errorCode, token) { case Diagnostics.Parameter_0_implicitly_has_an_1_type.code: case Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code: return isSetAccessorDeclaration(getContainingFunction(token)) ? Diagnostics.Infer_type_of_0_from_usage : Diagnostics.Infer_parameter_types_from_usage; + // TODO: GH#18217 case Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code: case Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code: return Diagnostics.Infer_parameter_types_from_usage; @@ -160717,6 +162514,7 @@ function doChange33(changes, sourceFile, token, errorCode, program, cancellation const importAdder = createImportAdder(sourceFile, program, preferences, host); errorCode = mapSuggestionDiagnostic(errorCode); switch (errorCode) { + // Variable and Property declarations case Diagnostics.Member_0_implicitly_has_an_1_type.code: case Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code: if (isVariableDeclaration(parent2) && markSeen(parent2) || isPropertyDeclaration(parent2) || isPropertySignature(parent2)) { @@ -160757,12 +162555,14 @@ function doChange33(changes, sourceFile, token, errorCode, program, cancellation } let declaration; switch (errorCode) { + // Parameter declarations case Diagnostics.Parameter_0_implicitly_has_an_1_type.code: if (isSetAccessorDeclaration(containingFunction)) { annotateSetAccessor(changes, importAdder, sourceFile, containingFunction, program, host, cancellationToken); declaration = containingFunction; break; } + // falls through case Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code: if (markSeen(containingFunction)) { const param = cast(parent2, isParameter); @@ -160770,6 +162570,7 @@ function doChange33(changes, sourceFile, token, errorCode, program, cancellation declaration = param; } break; + // Get Accessor declarations case Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code: case Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code: if (isGetAccessorDeclaration(containingFunction) && isIdentifier(containingFunction.name)) { @@ -160777,12 +162578,14 @@ function doChange33(changes, sourceFile, token, errorCode, program, cancellation declaration = containingFunction; } break; + // Set Accessor declarations case Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code: if (isSetAccessorDeclaration(containingFunction)) { annotateSetAccessor(changes, importAdder, sourceFile, containingFunction, program, host, cancellationToken); declaration = containingFunction; } break; + // Function 'this' case Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code: if (ts_textChanges_exports.isThisTypeAnnotatable(containingFunction) && markSeen(containingFunction)) { annotateThis(changes, sourceFile, containingFunction, program, host, cancellationToken); @@ -161164,6 +162967,7 @@ function inferTypeFromReferences(program, references, cancellationToken) { break; } } + // falls through default: return inferTypeFromContextualType(node, usage); } @@ -161191,16 +162995,25 @@ function inferTypeFromReferences(program, references, cancellationToken) { } function inferTypeFromBinaryExpression(node, parent2, usage) { switch (parent2.operatorToken.kind) { + // ExponentiationOperator case 43 /* AsteriskAsteriskToken */: + // MultiplicativeOperator + // falls through case 42 /* AsteriskToken */: case 44 /* SlashToken */: case 45 /* PercentToken */: + // ShiftOperator + // falls through case 48 /* LessThanLessThanToken */: case 49 /* GreaterThanGreaterThanToken */: case 50 /* GreaterThanGreaterThanGreaterThanToken */: + // BitwiseOperator + // falls through case 51 /* AmpersandToken */: case 52 /* BarToken */: case 53 /* CaretToken */: + // CompoundAssignmentOperator + // falls through case 66 /* MinusEqualsToken */: case 68 /* AsteriskAsteriskEqualsToken */: case 67 /* AsteriskEqualsToken */: @@ -161212,7 +163025,11 @@ function inferTypeFromReferences(program, references, cancellationToken) { case 71 /* LessThanLessThanEqualsToken */: case 73 /* GreaterThanGreaterThanGreaterThanEqualsToken */: case 72 /* GreaterThanGreaterThanEqualsToken */: + // AdditiveOperator + // falls through case 41 /* MinusToken */: + // RelationalOperator + // falls through case 30 /* LessThanToken */: case 33 /* LessThanEqualsToken */: case 32 /* GreaterThanToken */: @@ -161238,6 +163055,7 @@ function inferTypeFromReferences(program, references, cancellationToken) { usage.isNumberOrString = true; } break; + // AssignmentOperators case 64 /* EqualsToken */: case 35 /* EqualsEqualsToken */: case 37 /* EqualsEqualsEqualsToken */: @@ -161253,6 +163071,7 @@ function inferTypeFromReferences(program, references, cancellationToken) { usage.isString = true; } break; + // LogicalOperator Or NullishCoalescing case 57 /* BarBarToken */: case 61 /* QuestionQuestionToken */: if (node === parent2.left && (node.parent.parent.kind === 260 /* VariableDeclaration */ || isAssignmentExpression( @@ -161600,13 +163419,13 @@ function inferTypeFromReferences(program, references, cancellationToken) { } // src/services/codefixes/fixReturnTypeInAsyncFunction.ts -var fixId40 = "fixReturnTypeInAsyncFunction"; -var errorCodes51 = [ +var fixId41 = "fixReturnTypeInAsyncFunction"; +var errorCodes52 = [ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0.code ]; registerCodeFix({ - errorCodes: errorCodes51, - fixIds: [fixId40], + errorCodes: errorCodes52, + fixIds: [fixId41], getCodeActions: function getCodeActionsToFixReturnTypeInAsyncFunction(context) { const { sourceFile, program, span } = context; const checker = program.getTypeChecker(); @@ -161617,14 +163436,14 @@ registerCodeFix({ const { returnTypeNode, returnType, promisedTypeNode, promisedType } = info; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange34(t, sourceFile, returnTypeNode, promisedTypeNode)); return [createCodeFixAction( - fixId40, + fixId41, changes, [Diagnostics.Replace_0_with_Promise_1, checker.typeToString(returnType), checker.typeToString(promisedType)], - fixId40, + fixId41, Diagnostics.Fix_all_incorrect_return_type_of_an_async_functions )]; }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes51, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes52, (changes, diag2) => { const info = getInfo16(diag2.file, context.program.getTypeChecker(), diag2.start); if (info) { doChange34(changes, diag2.file, info.returnTypeNode, info.promisedTypeNode); @@ -161660,13 +163479,13 @@ function doChange34(changes, sourceFile, returnTypeNode, promisedTypeNode) { // src/services/codefixes/disableJsDiagnostics.ts var fixName4 = "disableJsDiagnostics"; -var fixId41 = "disableJsDiagnostics"; -var errorCodes52 = mapDefined(Object.keys(Diagnostics), (key) => { +var fixId42 = "disableJsDiagnostics"; +var errorCodes53 = mapDefined(Object.keys(Diagnostics), (key) => { const diag2 = Diagnostics[key]; return diag2.category === 1 /* Error */ ? diag2.code : void 0; }); registerCodeFix({ - errorCodes: errorCodes52, + errorCodes: errorCodes53, getCodeActions: function getCodeActionsToDisableJsDiagnostics(context) { const { sourceFile, program, span, host, formatContext } = context; if (!isInJSFile(sourceFile) || !isCheckJsEnabledForFile(sourceFile, program.getCompilerOptions())) { @@ -161687,21 +163506,21 @@ registerCodeFix({ ) ]; if (ts_textChanges_exports.isValidLocationToAddComment(sourceFile, span.start)) { - fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange8(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId41, Diagnostics.Add_ts_ignore_to_all_error_messages)); + fixes.unshift(createCodeFixAction(fixName4, ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange9(t, sourceFile, span.start)), Diagnostics.Ignore_this_error_message, fixId42, Diagnostics.Add_ts_ignore_to_all_error_messages)); } return fixes; }, - fixIds: [fixId41], + fixIds: [fixId42], getAllCodeActions: (context) => { const seenLines = /* @__PURE__ */ new Set(); - return codeFixAll(context, errorCodes52, (changes, diag2) => { + return codeFixAll(context, errorCodes53, (changes, diag2) => { if (ts_textChanges_exports.isValidLocationToAddComment(diag2.file, diag2.start)) { - makeChange8(changes, diag2.file, diag2.start, seenLines); + makeChange9(changes, diag2.file, diag2.start, seenLines); } }); } }); -function makeChange8(changes, sourceFile, position, seenLines) { +function makeChange9(changes, sourceFile, position, seenLines) { const { line: lineNumber } = getLineAndCharacterOfPosition(sourceFile, position); if (!seenLines || tryAddToSet(seenLines, lineNumber)) { changes.insertCommentBeforeLine(sourceFile, lineNumber, position, " @ts-ignore"); @@ -161757,11 +163576,10 @@ function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, con const optional = !!(symbol.flags & 16777216 /* Optional */); const ambient = !!(enclosingDeclaration.flags & 33554432 /* Ambient */) || isAmbient; const quotePreference = getQuotePreference(sourceFile, preferences); + const flags = 1 /* NoTruncation */ | (quotePreference === 0 /* Single */ ? 268435456 /* UseSingleQuotesForStringLiteralType */ : 0 /* None */); switch (kind) { case 171 /* PropertySignature */: case 172 /* PropertyDeclaration */: - let flags = 1 /* NoTruncation */; - flags |= quotePreference === 0 /* Single */ ? 268435456 /* UseSingleQuotesForStringLiteralType */ : 0; let typeNode = checker.typeToTypeNode(type, enclosingDeclaration, flags, 8 /* AllowUnresolvedNames */, getNoopSymbolTrackerWithResolver(context)); if (importAdder) { const importableReference = tryGetAutoImportableReferenceFromTypeNode(typeNode, scriptTarget); @@ -161785,8 +163603,7 @@ function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, con let typeNode2 = checker.typeToTypeNode( type, enclosingDeclaration, - /*flags*/ - void 0, + flags, /*internalFlags*/ void 0, getNoopSymbolTrackerWithResolver(context) @@ -162113,7 +163930,13 @@ function createTypeParameterName(index) { return 84 /* T */ + index <= 90 /* Z */ ? String.fromCharCode(84 /* T */ + index) : `T${index}`; } function typeToAutoImportableTypeNode(checker, importAdder, type, contextNode, scriptTarget, flags, internalFlags, tracker) { - let typeNode = checker.typeToTypeNode(type, contextNode, flags, internalFlags, tracker); + const typeNode = checker.typeToTypeNode(type, contextNode, flags, internalFlags, tracker); + if (!typeNode) { + return void 0; + } + return typeNodeToAutoImportableTypeNode(typeNode, importAdder, scriptTarget); +} +function typeNodeToAutoImportableTypeNode(typeNode, importAdder, scriptTarget) { if (typeNode && isImportTypeNode(typeNode)) { const importableReference = tryGetAutoImportableReferenceFromTypeNode(typeNode, scriptTarget); if (importableReference) { @@ -162123,6 +163946,42 @@ function typeToAutoImportableTypeNode(checker, importAdder, type, contextNode, s } return getSynthesizedDeepClone(typeNode); } +function endOfRequiredTypeParameters(checker, type) { + Debug.assert(type.typeArguments); + const fullTypeArguments = type.typeArguments; + const target = type.target; + for (let cutoff = 0; cutoff < fullTypeArguments.length; cutoff++) { + const typeArguments = fullTypeArguments.slice(0, cutoff); + const filledIn = checker.fillMissingTypeArguments( + typeArguments, + target.typeParameters, + cutoff, + /*isJavaScriptImplicitAny*/ + false + ); + if (filledIn.every((fill, i) => fill === fullTypeArguments[i])) { + return cutoff; + } + } + return fullTypeArguments.length; +} +function typeToMinimizedReferenceType(checker, type, contextNode, flags, internalFlags, tracker) { + let typeNode = checker.typeToTypeNode(type, contextNode, flags, internalFlags, tracker); + if (!typeNode) { + return void 0; + } + if (isTypeReferenceNode(typeNode)) { + const genericType = type; + if (genericType.typeArguments && typeNode.typeArguments) { + const cutoff = endOfRequiredTypeParameters(checker, genericType); + if (cutoff < typeNode.typeArguments.length) { + const newTypeArguments = factory.createNodeArray(typeNode.typeArguments.slice(0, cutoff)); + typeNode = factory.updateTypeReferenceNode(typeNode, typeNode.typeName, newTypeArguments); + } + } + } + return typeNode; +} function typePredicateToAutoImportableTypeNode(checker, importAdder, typePredicate, contextNode, scriptTarget, flags, internalFlags, tracker) { let typePredicateNode = checker.typePredicateToTypePredicateNode(typePredicate, contextNode, flags, internalFlags, tracker); if ((typePredicateNode == null ? void 0 : typePredicateNode.type) && isImportTypeNode(typePredicateNode.type)) { @@ -162714,9 +164573,9 @@ var fixName6 = "strictClassInitialization"; var fixIdAddDefiniteAssignmentAssertions = "addMissingPropertyDefiniteAssignmentAssertions"; var fixIdAddUndefinedType = "addMissingPropertyUndefinedType"; var fixIdAddInitializer = "addMissingPropertyInitializer"; -var errorCodes53 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; +var errorCodes54 = [Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code]; registerCodeFix({ - errorCodes: errorCodes53, + errorCodes: errorCodes54, getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) { const info = getInfo17(context.sourceFile, context.span.start); if (!info) return; @@ -162728,7 +164587,7 @@ registerCodeFix({ }, fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes53, (changes, diag2) => { + return codeFixAll(context, errorCodes54, (changes, diag2) => { const info = getInfo17(diag2.file, diag2.start); if (!info) return; switch (context.fixId) { @@ -162851,20 +164710,20 @@ function getDefaultValueFromType(checker, type) { } // src/services/codefixes/requireInTs.ts -var fixId42 = "requireInTs"; -var errorCodes54 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; +var fixId43 = "requireInTs"; +var errorCodes55 = [Diagnostics.require_call_may_be_converted_to_an_import.code]; registerCodeFix({ - errorCodes: errorCodes54, + errorCodes: errorCodes55, getCodeActions(context) { const info = getInfo18(context.sourceFile, context.program, context.span.start, context.preferences); if (!info) { return void 0; } const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange35(t, context.sourceFile, info)); - return [createCodeFixAction(fixId42, changes, Diagnostics.Convert_require_to_import, fixId42, Diagnostics.Convert_all_require_to_import)]; + return [createCodeFixAction(fixId43, changes, Diagnostics.Convert_require_to_import, fixId43, Diagnostics.Convert_all_require_to_import)]; }, - fixIds: [fixId42], - getAllCodeActions: (context) => codeFixAll(context, errorCodes54, (changes, diag2) => { + fixIds: [fixId43], + getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => { const info = getInfo18(diag2.file, context.program, diag2.start, context.preferences); if (info) { doChange35(changes, context.sourceFile, info); @@ -162941,19 +164800,19 @@ function tryCreateNamedImportsFromObjectBindingPattern(node) { } // src/services/codefixes/useDefaultImport.ts -var fixId43 = "useDefaultImport"; -var errorCodes55 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; +var fixId44 = "useDefaultImport"; +var errorCodes56 = [Diagnostics.Import_may_be_converted_to_a_default_import.code]; registerCodeFix({ - errorCodes: errorCodes55, + errorCodes: errorCodes56, getCodeActions(context) { const { sourceFile, span: { start } } = context; const info = getInfo19(sourceFile, start); if (!info) return void 0; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange36(t, sourceFile, info, context.preferences)); - return [createCodeFixAction(fixId43, changes, Diagnostics.Convert_to_default_import, fixId43, Diagnostics.Convert_all_to_default_imports)]; + return [createCodeFixAction(fixId44, changes, Diagnostics.Convert_to_default_import, fixId44, Diagnostics.Convert_all_to_default_imports)]; }, - fixIds: [fixId43], - getAllCodeActions: (context) => codeFixAll(context, errorCodes55, (changes, diag2) => { + fixIds: [fixId44], + getAllCodeActions: (context) => codeFixAll(context, errorCodes56, (changes, diag2) => { const info = getInfo19(diag2.file, diag2.start); if (info) doChange36(changes, diag2.file, info, context.preferences); }) @@ -162980,24 +164839,24 @@ function doChange36(changes, sourceFile, info, preferences) { } // src/services/codefixes/useBigintLiteral.ts -var fixId44 = "useBigintLiteral"; -var errorCodes56 = [ +var fixId45 = "useBigintLiteral"; +var errorCodes57 = [ Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code ]; registerCodeFix({ - errorCodes: errorCodes56, + errorCodes: errorCodes57, getCodeActions: function getCodeActionsToUseBigintLiteral(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange9(t, context.sourceFile, context.span)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange10(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId44, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId44, Diagnostics.Convert_all_to_bigint_numeric_literals)]; + return [createCodeFixAction(fixId45, changes, Diagnostics.Convert_to_a_bigint_numeric_literal, fixId45, Diagnostics.Convert_all_to_bigint_numeric_literals)]; } }, - fixIds: [fixId44], + fixIds: [fixId45], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes56, (changes, diag2) => makeChange9(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes57, (changes, diag2) => makeChange10(changes, diag2.file, diag2)); } }); -function makeChange9(changeTracker, sourceFile, span) { +function makeChange10(changeTracker, sourceFile, span) { const numericLiteral = tryCast(getTokenAtPosition(sourceFile, span.start), isNumericLiteral); if (!numericLiteral) { return; @@ -163008,18 +164867,18 @@ function makeChange9(changeTracker, sourceFile, span) { // src/services/codefixes/fixAddModuleReferTypeMissingTypeof.ts var fixIdAddMissingTypeof = "fixAddModuleReferTypeMissingTypeof"; -var fixId45 = fixIdAddMissingTypeof; -var errorCodes57 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; +var fixId46 = fixIdAddMissingTypeof; +var errorCodes58 = [Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code]; registerCodeFix({ - errorCodes: errorCodes57, + errorCodes: errorCodes58, getCodeActions: function getCodeActionsToAddMissingTypeof(context) { const { sourceFile, span } = context; const importType = getImportTypeNode(sourceFile, span.start); const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange37(t, sourceFile, importType)); - return [createCodeFixAction(fixId45, changes, Diagnostics.Add_missing_typeof, fixId45, Diagnostics.Add_missing_typeof)]; + return [createCodeFixAction(fixId46, changes, Diagnostics.Add_missing_typeof, fixId46, Diagnostics.Add_missing_typeof)]; }, - fixIds: [fixId45], - getAllCodeActions: (context) => codeFixAll(context, errorCodes57, (changes, diag2) => doChange37(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) + fixIds: [fixId46], + getAllCodeActions: (context) => codeFixAll(context, errorCodes58, (changes, diag2) => doChange37(changes, context.sourceFile, getImportTypeNode(diag2.file, diag2.start))) }); function getImportTypeNode(sourceFile, pos) { const token = getTokenAtPosition(sourceFile, pos); @@ -163042,9 +164901,9 @@ function doChange37(changes, sourceFile, importType) { // src/services/codefixes/wrapJsxInFragment.ts var fixID2 = "wrapJsxInFragment"; -var errorCodes58 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; +var errorCodes59 = [Diagnostics.JSX_expressions_must_have_one_parent_element.code]; registerCodeFix({ - errorCodes: errorCodes58, + errorCodes: errorCodes59, getCodeActions: function getCodeActionsToWrapJsxInFragment(context) { const { sourceFile, span } = context; const node = findNodeToFix(sourceFile, span.start); @@ -163053,7 +164912,7 @@ registerCodeFix({ return [createCodeFixAction(fixID2, changes, Diagnostics.Wrap_in_JSX_fragment, fixID2, Diagnostics.Wrap_all_unparented_JSX_in_JSX_fragment)]; }, fixIds: [fixID2], - getAllCodeActions: (context) => codeFixAll(context, errorCodes58, (changes, diag2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes59, (changes, diag2) => { const node = findNodeToFix(context.sourceFile, diag2.start); if (!node) return void 0; doChange38(changes, context.sourceFile, node); @@ -163092,18 +164951,18 @@ function flattenInvalidBinaryExpr(node) { } // src/services/codefixes/wrapDecoratorInParentheses.ts -var fixId46 = "wrapDecoratorInParentheses"; -var errorCodes59 = [Diagnostics.Expression_must_be_enclosed_in_parentheses_to_be_used_as_a_decorator.code]; +var fixId47 = "wrapDecoratorInParentheses"; +var errorCodes60 = [Diagnostics.Expression_must_be_enclosed_in_parentheses_to_be_used_as_a_decorator.code]; registerCodeFix({ - errorCodes: errorCodes59, + errorCodes: errorCodes60, getCodeActions: function getCodeActionsToWrapDecoratorExpressionInParentheses(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange10(t, context.sourceFile, context.span.start)); - return [createCodeFixAction(fixId46, changes, Diagnostics.Wrap_in_parentheses, fixId46, Diagnostics.Wrap_all_invalid_decorator_expressions_in_parentheses)]; + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange11(t, context.sourceFile, context.span.start)); + return [createCodeFixAction(fixId47, changes, Diagnostics.Wrap_in_parentheses, fixId47, Diagnostics.Wrap_all_invalid_decorator_expressions_in_parentheses)]; }, - fixIds: [fixId46], - getAllCodeActions: (context) => codeFixAll(context, errorCodes59, (changes, diag2) => makeChange10(changes, diag2.file, diag2.start)) + fixIds: [fixId47], + getAllCodeActions: (context) => codeFixAll(context, errorCodes60, (changes, diag2) => makeChange11(changes, diag2.file, diag2.start)) }); -function makeChange10(changeTracker, sourceFile, pos) { +function makeChange11(changeTracker, sourceFile, pos) { const token = getTokenAtPosition(sourceFile, pos); const decorator = findAncestor(token, isDecorator); Debug.assert(!!decorator, "Expected position to be owned by a decorator."); @@ -163112,20 +164971,20 @@ function makeChange10(changeTracker, sourceFile, pos) { } // src/services/codefixes/convertToMappedObjectType.ts -var fixId47 = "fixConvertToMappedObjectType"; -var errorCodes60 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; +var fixId48 = "fixConvertToMappedObjectType"; +var errorCodes61 = [Diagnostics.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code]; registerCodeFix({ - errorCodes: errorCodes60, + errorCodes: errorCodes61, getCodeActions: function getCodeActionsToConvertToMappedTypeObject(context) { const { sourceFile, span } = context; const info = getInfo20(sourceFile, span.start); if (!info) return void 0; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange39(t, sourceFile, info)); const name = idText(info.container.name); - return [createCodeFixAction(fixId47, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId47, [Diagnostics.Convert_0_to_mapped_object_type, name])]; + return [createCodeFixAction(fixId48, changes, [Diagnostics.Convert_0_to_mapped_object_type, name], fixId48, [Diagnostics.Convert_0_to_mapped_object_type, name])]; }, - fixIds: [fixId47], - getAllCodeActions: (context) => codeFixAll(context, errorCodes60, (changes, diag2) => { + fixIds: [fixId48], + getAllCodeActions: (context) => codeFixAll(context, errorCodes61, (changes, diag2) => { const info = getInfo20(diag2.file, diag2.start); if (info) doChange39(changes, diag2.file, info); }) @@ -163170,12 +165029,12 @@ function doChange39(changes, sourceFile, { indexSignature, container }) { } // src/services/codefixes/removeAccidentalCallParentheses.ts -var fixId48 = "removeAccidentalCallParentheses"; -var errorCodes61 = [ +var fixId49 = "removeAccidentalCallParentheses"; +var errorCodes62 = [ Diagnostics.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without.code ]; registerCodeFix({ - errorCodes: errorCodes61, + errorCodes: errorCodes62, getCodeActions(context) { const callExpression = findAncestor(getTokenAtPosition(context.sourceFile, context.span.start), isCallExpression); if (!callExpression) { @@ -163184,30 +165043,30 @@ registerCodeFix({ const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { t.deleteRange(context.sourceFile, { pos: callExpression.expression.end, end: callExpression.end }); }); - return [createCodeFixActionWithoutFixAll(fixId48, changes, Diagnostics.Remove_parentheses)]; + return [createCodeFixActionWithoutFixAll(fixId49, changes, Diagnostics.Remove_parentheses)]; }, - fixIds: [fixId48] + fixIds: [fixId49] }); // src/services/codefixes/removeUnnecessaryAwait.ts -var fixId49 = "removeUnnecessaryAwait"; -var errorCodes62 = [ +var fixId50 = "removeUnnecessaryAwait"; +var errorCodes63 = [ Diagnostics.await_has_no_effect_on_the_type_of_this_expression.code ]; registerCodeFix({ - errorCodes: errorCodes62, + errorCodes: errorCodes63, getCodeActions: function getCodeActionsToRemoveUnnecessaryAwait(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange11(t, context.sourceFile, context.span)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange12(t, context.sourceFile, context.span)); if (changes.length > 0) { - return [createCodeFixAction(fixId49, changes, Diagnostics.Remove_unnecessary_await, fixId49, Diagnostics.Remove_all_unnecessary_uses_of_await)]; + return [createCodeFixAction(fixId50, changes, Diagnostics.Remove_unnecessary_await, fixId50, Diagnostics.Remove_all_unnecessary_uses_of_await)]; } }, - fixIds: [fixId49], + fixIds: [fixId50], getAllCodeActions: (context) => { - return codeFixAll(context, errorCodes62, (changes, diag2) => makeChange11(changes, diag2.file, diag2)); + return codeFixAll(context, errorCodes63, (changes, diag2) => makeChange12(changes, diag2.file, diag2)); } }); -function makeChange11(changeTracker, sourceFile, span) { +function makeChange12(changeTracker, sourceFile, span) { const awaitKeyword = tryCast(getTokenAtPosition(sourceFile, span.start), (node) => node.kind === 135 /* AwaitKeyword */); const awaitExpression = awaitKeyword && tryCast(awaitKeyword.parent, isAwaitExpression); if (!awaitExpression) { @@ -163232,20 +165091,20 @@ function makeChange11(changeTracker, sourceFile, span) { } // src/services/codefixes/splitTypeOnlyImport.ts -var errorCodes63 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; -var fixId50 = "splitTypeOnlyImport"; +var errorCodes64 = [Diagnostics.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code]; +var fixId51 = "splitTypeOnlyImport"; registerCodeFix({ - errorCodes: errorCodes63, - fixIds: [fixId50], + errorCodes: errorCodes64, + fixIds: [fixId51], getCodeActions: function getCodeActionsToSplitTypeOnlyImport(context) { const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => { return splitTypeOnlyImport(t, getImportDeclaration2(context.sourceFile, context.span), context); }); if (changes.length) { - return [createCodeFixAction(fixId50, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId50, Diagnostics.Split_all_invalid_type_only_imports)]; + return [createCodeFixAction(fixId51, changes, Diagnostics.Split_into_two_separate_import_declarations, fixId51, Diagnostics.Split_all_invalid_type_only_imports)]; } }, - getAllCodeActions: (context) => codeFixAll(context, errorCodes63, (changes, error2) => { + getAllCodeActions: (context) => codeFixAll(context, errorCodes64, (changes, error2) => { splitTypeOnlyImport(changes, getImportDeclaration2(context.sourceFile, error2), context); }) }); @@ -163294,22 +165153,22 @@ function splitTypeOnlyImport(changes, importDeclaration, context) { } // src/services/codefixes/convertConstToLet.ts -var fixId51 = "fixConvertConstToLet"; -var errorCodes64 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; +var fixId52 = "fixConvertConstToLet"; +var errorCodes65 = [Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code]; registerCodeFix({ - errorCodes: errorCodes64, + errorCodes: errorCodes65, getCodeActions: function getCodeActionsToConvertConstToLet(context) { const { sourceFile, span, program } = context; const info = getInfo21(sourceFile, span.start, program); if (info === void 0) return; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange40(t, sourceFile, info.token)); - return [createCodeFixActionMaybeFixAll(fixId51, changes, Diagnostics.Convert_const_to_let, fixId51, Diagnostics.Convert_all_const_to_let)]; + return [createCodeFixActionMaybeFixAll(fixId52, changes, Diagnostics.Convert_const_to_let, fixId52, Diagnostics.Convert_all_const_to_let)]; }, getAllCodeActions: (context) => { const { program } = context; - const seen = /* @__PURE__ */ new Map(); + const seen = /* @__PURE__ */ new Set(); return createCombinedCodeActions(ts_textChanges_exports.ChangeTracker.with(context, (changes) => { - eachDiagnostic(context, errorCodes64, (diag2) => { + eachDiagnostic(context, errorCodes65, (diag2) => { const info = getInfo21(diag2.file, diag2.start, program); if (info) { if (addToSeen(seen, getSymbolId(info.symbol))) { @@ -163320,7 +165179,7 @@ registerCodeFix({ }); })); }, - fixIds: [fixId51] + fixIds: [fixId52] }); function getInfo21(sourceFile, pos, program) { var _a; @@ -163338,26 +165197,26 @@ function doChange40(changes, sourceFile, token) { } // src/services/codefixes/fixExpectedComma.ts -var fixId52 = "fixExpectedComma"; +var fixId53 = "fixExpectedComma"; var expectedErrorCode = Diagnostics._0_expected.code; -var errorCodes65 = [expectedErrorCode]; +var errorCodes66 = [expectedErrorCode]; registerCodeFix({ - errorCodes: errorCodes65, + errorCodes: errorCodes66, getCodeActions(context) { const { sourceFile } = context; const info = getInfo22(sourceFile, context.span.start, context.errorCode); if (!info) return void 0; const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange41(t, sourceFile, info)); return [createCodeFixAction( - fixId52, + fixId53, changes, [Diagnostics.Change_0_to_1, ";", ","], - fixId52, + fixId53, [Diagnostics.Change_0_to_1, ";", ","] )]; }, - fixIds: [fixId52], - getAllCodeActions: (context) => codeFixAll(context, errorCodes65, (changes, diag2) => { + fixIds: [fixId53], + getAllCodeActions: (context) => codeFixAll(context, errorCodes66, (changes, diag2) => { const info = getInfo22(diag2.file, diag2.start, diag2.code); if (info) doChange41(changes, context.sourceFile, info); }) @@ -163373,25 +165232,25 @@ function doChange41(changes, sourceFile, { node }) { // src/services/codefixes/fixAddVoidToPromise.ts var fixName7 = "addVoidToPromise"; -var fixId53 = "addVoidToPromise"; -var errorCodes66 = [ +var fixId54 = "addVoidToPromise"; +var errorCodes67 = [ Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments.code, Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code ]; registerCodeFix({ - errorCodes: errorCodes66, - fixIds: [fixId53], + errorCodes: errorCodes67, + fixIds: [fixId54], getCodeActions(context) { - const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange12(t, context.sourceFile, context.span, context.program)); + const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => makeChange13(t, context.sourceFile, context.span, context.program)); if (changes.length > 0) { - return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId53, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; + return [createCodeFixAction(fixName7, changes, Diagnostics.Add_void_to_Promise_resolved_without_a_value, fixId54, Diagnostics.Add_void_to_all_Promises_resolved_without_a_value)]; } }, getAllCodeActions(context) { - return codeFixAll(context, errorCodes66, (changes, diag2) => makeChange12(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); + return codeFixAll(context, errorCodes67, (changes, diag2) => makeChange13(changes, diag2.file, diag2, context.program, /* @__PURE__ */ new Set())); } }); -function makeChange12(changes, sourceFile, span, program, seen) { +function makeChange13(changes, sourceFile, span, program, seen) { const node = getTokenAtPosition(sourceFile, span.start); if (!isIdentifier(node) || !isCallExpression(node.parent) || node.parent.expression !== node || node.parent.arguments.length !== 0) return; const checker = program.getTypeChecker(); @@ -163483,6 +165342,8 @@ var SortText = { return sortText + "1"; } }; +var allCommitCharacters = [".", ",", ";"]; +var noCommaCommitCharacters = [".", ";"]; var CompletionSource = /* @__PURE__ */ ((CompletionSource2) => { CompletionSource2["ThisProperty"] = "ThisProperty/"; CompletionSource2["ClassMemberSnippet"] = "ClassMemberSnippet/"; @@ -163589,7 +165450,7 @@ function getDefaultCommitCharacters(isNewIdentifierLocation) { if (isNewIdentifierLocation) { return []; } - return [".", ",", ";"]; + return allCommitCharacters; } function getCompletionsAtPosition(host, program, log, sourceFile, position, preferences, triggerCharacter, completionKind, cancellationToken, formatContext, includeSymbol = false) { var _a; @@ -164087,7 +165948,8 @@ function completionInfoFromData(sourceFile, host, program, compilerOptions, log, importStatementCompletion, insideJsDocTagTypeExpression, symbolToSortTextMap, - hasUnresolvedAutoImports + hasUnresolvedAutoImports, + defaultCommitCharacters } = completionData; let literals = completionData.literals; const checker = program.getTypeChecker(); @@ -164205,7 +166067,7 @@ function completionInfoFromData(sourceFile, host, program, compilerOptions, log, isNewIdentifierLocation, optionalReplacementSpan: getOptionalReplacementSpan(location), entries, - defaultCommitCharacters: getDefaultCommitCharacters(isNewIdentifierLocation) + defaultCommitCharacters: defaultCommitCharacters ?? getDefaultCommitCharacters(isNewIdentifierLocation) }; } function isCheckedFile(sourceFile, compilerOptions) { @@ -164540,9 +166402,13 @@ function createCompletionEntry(symbol, sortText, replacementToken, contextToken, if (parentNamedImportOrExport) { const languageVersion = getEmitScriptTarget(host.getCompilationSettings()); if (!isIdentifierText(name, languageVersion)) { - insertText = JSON.stringify(name); + insertText = quotePropertyName(sourceFile, preferences, name); if (parentNamedImportOrExport.kind === 275 /* NamedImports */) { - insertText += " as " + generateIdentifierForArbitraryString(name, languageVersion); + scanner.setText(sourceFile.text); + scanner.resetTokenState(position); + if (!(scanner.scan() === 130 /* AsKeyword */ && scanner.scan() === 80 /* Identifier */)) { + insertText += " as " + generateIdentifierForArbitraryString(name, languageVersion); + } } } else if (parentNamedImportOrExport.kind === 275 /* NamedImports */) { const possibleToken = stringToToken(name); @@ -165104,7 +166970,7 @@ function getSourceFromOrigin(origin) { } function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, position, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importStatementCompletion, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextMap, isJsxIdentifierExpected, isRightOfOpenTag, includeSymbol = false) { const start = timestamp(); - const variableOrParameterDeclaration = getVariableOrParameterDeclaration(contextToken, location); + const closestSymbolDeclaration = getClosestSymbolDeclaration(contextToken, location); const useSemicolons = probablyUsesSemicolons(sourceFile); const typeChecker = program.getTypeChecker(); const uniques = /* @__PURE__ */ new Map(); @@ -165174,15 +167040,26 @@ function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, con if (isExportAssignment(location.parent)) { return true; } - if (tryCast(variableOrParameterDeclaration, isVariableDeclaration) && symbol.valueDeclaration === variableOrParameterDeclaration) { + if (tryCast(closestSymbolDeclaration, isVariableDeclaration) && symbol.valueDeclaration === closestSymbolDeclaration) { return false; } const symbolDeclaration = symbol.valueDeclaration ?? ((_a = symbol.declarations) == null ? void 0 : _a[0]); - if (variableOrParameterDeclaration && symbolDeclaration && (isTypeParameterDeclaration(variableOrParameterDeclaration) && isTypeParameterDeclaration(symbolDeclaration) || isParameter(variableOrParameterDeclaration) && isParameter(symbolDeclaration))) { - const symbolDeclarationPos = symbolDeclaration.pos; - const parameters = isParameter(variableOrParameterDeclaration) ? variableOrParameterDeclaration.parent.parameters : isInferTypeNode(variableOrParameterDeclaration.parent) ? void 0 : variableOrParameterDeclaration.parent.typeParameters; - if (symbolDeclarationPos >= variableOrParameterDeclaration.pos && parameters && symbolDeclarationPos < parameters.end) { - return false; + if (closestSymbolDeclaration && symbolDeclaration) { + if (isParameter(closestSymbolDeclaration) && isParameter(symbolDeclaration)) { + const parameters = closestSymbolDeclaration.parent.parameters; + if (symbolDeclaration.pos >= closestSymbolDeclaration.pos && symbolDeclaration.pos < parameters.end) { + return false; + } + } else if (isTypeParameterDeclaration(closestSymbolDeclaration) && isTypeParameterDeclaration(symbolDeclaration)) { + if (closestSymbolDeclaration === symbolDeclaration && (contextToken == null ? void 0 : contextToken.kind) === 96 /* ExtendsKeyword */) { + return false; + } + if (isInTypeParameterDefault(contextToken) && !isInferTypeNode(closestSymbolDeclaration.parent)) { + const typeParameters = closestSymbolDeclaration.parent.typeParameters; + if (typeParameters && symbolDeclaration.pos >= closestSymbolDeclaration.pos && symbolDeclaration.pos < typeParameters.end) { + return false; + } + } } } const symbolOrigin = skipAlias(symbol, typeChecker); @@ -165499,6 +167376,7 @@ function getContextualType(previousToken, position, sourceFile, checker) { switch (parent2.kind) { case 260 /* VariableDeclaration */: return checker.getContextualType(parent2.initializer); + // TODO: GH#18217 case 226 /* BinaryExpression */: return checker.getTypeAtLocation(parent2.left); case 291 /* JsxAttribute */: @@ -165604,6 +167482,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, let keywordFilters = 0 /* None */; let isNewIdentifierLocation = false; let flags = 0 /* None */; + let defaultCommitCharacters; if (contextToken) { const importStatementCompletionInfo = getImportStatementCompletionInfo(contextToken, sourceFile); if (importStatementCompletionInfo.keywordCompletion) { @@ -165623,7 +167502,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, } if (!importStatementCompletionInfo.replacementSpan && isCompletionListBlocker(contextToken)) { log("Returning an empty list because completion was requested in an invalid position."); - return keywordFilters ? keywordCompletionData(keywordFilters, isJsOnlyLocation, isNewIdentifierDefinitionLocation()) : void 0; + return keywordFilters ? keywordCompletionData(keywordFilters, isJsOnlyLocation, computeCommitCharactersAndIsNewIdentifier().isNewIdentifierLocation) : void 0; } let parent2 = contextToken.parent; if (contextToken.kind === 25 /* DotToken */ || contextToken.kind === 29 /* QuestionDotToken */) { @@ -165684,6 +167563,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, if (!binaryExpressionMayBeOpenTag(parent2)) { break; } + // falls through case 285 /* JsxSelfClosingElement */: case 284 /* JsxElement */: case 286 /* JsxOpeningElement */: @@ -165725,7 +167605,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, let importSpecifierResolver; const symbolToOriginInfoMap = []; const symbolToSortTextMap = []; - const seenPropertySymbols = /* @__PURE__ */ new Map(); + const seenPropertySymbols = /* @__PURE__ */ new Set(); const isTypeOnlyLocation = isTypeOnlyCompletion(); const getModuleSpecifierResolutionHost = memoizeOne((isFromPackageJson) => { return createModuleSpecifierResolutionHost(isFromPackageJson ? host.getPackageJsonAutoImportProvider() : program, host); @@ -165782,7 +167662,8 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, isRightOfDotOrQuestionDot: isRightOfDot || isRightOfQuestionDot, importStatementCompletion, hasUnresolvedAutoImports, - flags + flags, + defaultCommitCharacters }; function isTagWithTypeExpression(tag) { switch (tag.kind) { @@ -165817,7 +167698,10 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, const isRhsOfImportDeclaration = isInRightSideOfInternalImportEqualsDeclaration(node); if (isEntityName(node) || isImportType || isPropertyAccessExpression(node)) { const isNamespaceName = isModuleDeclaration(node.parent); - if (isNamespaceName) isNewIdentifierLocation = true; + if (isNamespaceName) { + isNewIdentifierLocation = true; + defaultCommitCharacters = []; + } let symbol = typeChecker.getSymbolAtLocation(node); if (symbol) { symbol = skipAlias(symbol, typeChecker); @@ -165887,9 +167771,13 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, } } function addTypeProperties(type, insertAwait, insertQuestionDot) { - isNewIdentifierLocation = !!type.getStringIndexType(); + if (type.getStringIndexType()) { + isNewIdentifierLocation = true; + defaultCommitCharacters = []; + } if (isRightOfQuestionDot && some(type.getCallSignatures())) { isNewIdentifierLocation = true; + defaultCommitCharacters ?? (defaultCommitCharacters = allCommitCharacters); } const propertyAccess = node.kind === 205 /* ImportType */ ? node : node.parent; if (inCheckedFile) { @@ -166028,7 +167916,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, function getGlobalCompletions() { keywordFilters = tryGetFunctionLikeBodyCompletionContainer(contextToken) ? 5 /* FunctionLikeBodyKeywords */ : 1 /* All */; completionKind = 1 /* Global */; - isNewIdentifierLocation = isNewIdentifierDefinitionLocation(); + ({ isNewIdentifierLocation, defaultCommitCharacters } = computeCommitCharactersAndIsNewIdentifier()); if (previousToken !== contextToken) { Debug.assert(!!previousToken, "Expected 'contextToken' to be defined when different from 'previousToken'."); } @@ -166190,18 +168078,11 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, } ); function isImportableExportInfo(info) { - const moduleFile = tryCast(info.moduleSymbol.valueDeclaration, isSourceFile); - if (!moduleFile) { - const moduleName = stripQuotes(info.moduleSymbol.name); - if (ts_JsTyping_exports.nodeCoreModules.has(moduleName) && startsWith(moduleName, "node:") !== shouldUseUriStyleNodeCoreModules(sourceFile, program)) { - return false; - } - return ((packageJsonFilter == null ? void 0 : packageJsonFilter.allowsImportingAmbientModule(info.moduleSymbol, getModuleSpecifierResolutionHost(info.isFromPackageJson))) ?? true) || fileContainsPackageImport(sourceFile, moduleName); - } - return isImportableFile( + return isImportable( info.isFromPackageJson ? packageJsonAutoImportProvider : program, sourceFile, - moduleFile, + tryCast(info.moduleSymbol.valueDeclaration, isSourceFile), + info.moduleSymbol, preferences, packageJsonFilter, getModuleSpecifierResolutionHost(info.isFromPackageJson), @@ -166294,41 +168175,121 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, } return false; } - function isNewIdentifierDefinitionLocation() { + function computeCommitCharactersAndIsNewIdentifier() { if (contextToken) { const containingNodeKind = contextToken.parent.kind; const tokenKind = keywordForNode(contextToken); switch (tokenKind) { case 28 /* CommaToken */: - return containingNodeKind === 213 /* CallExpression */ || containingNodeKind === 176 /* Constructor */ || containingNodeKind === 214 /* NewExpression */ || containingNodeKind === 209 /* ArrayLiteralExpression */ || containingNodeKind === 226 /* BinaryExpression */ || containingNodeKind === 184 /* FunctionType */ || containingNodeKind === 210 /* ObjectLiteralExpression */; + switch (containingNodeKind) { + case 213 /* CallExpression */: + // func( a, | + case 214 /* NewExpression */: { + const expression = contextToken.parent.expression; + if (getLineAndCharacterOfPosition(sourceFile, expression.end).line !== getLineAndCharacterOfPosition(sourceFile, position).line) { + return { defaultCommitCharacters: noCommaCommitCharacters, isNewIdentifierLocation: true }; + } + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: true }; + } + case 226 /* BinaryExpression */: + return { defaultCommitCharacters: noCommaCommitCharacters, isNewIdentifierLocation: true }; + case 176 /* Constructor */: + // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ + case 184 /* FunctionType */: + // var x: (s: string, list| + case 210 /* ObjectLiteralExpression */: + return { defaultCommitCharacters: [], isNewIdentifierLocation: true }; + case 209 /* ArrayLiteralExpression */: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: true }; + default: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; + } case 21 /* OpenParenToken */: - return containingNodeKind === 213 /* CallExpression */ || containingNodeKind === 176 /* Constructor */ || containingNodeKind === 214 /* NewExpression */ || containingNodeKind === 217 /* ParenthesizedExpression */ || containingNodeKind === 196 /* ParenthesizedType */; + switch (containingNodeKind) { + case 213 /* CallExpression */: + // func( | + case 214 /* NewExpression */: { + const expression = contextToken.parent.expression; + if (getLineAndCharacterOfPosition(sourceFile, expression.end).line !== getLineAndCharacterOfPosition(sourceFile, position).line) { + return { defaultCommitCharacters: noCommaCommitCharacters, isNewIdentifierLocation: true }; + } + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: true }; + } + case 217 /* ParenthesizedExpression */: + return { defaultCommitCharacters: noCommaCommitCharacters, isNewIdentifierLocation: true }; + case 176 /* Constructor */: + // constructor( | + case 196 /* ParenthesizedType */: + return { defaultCommitCharacters: [], isNewIdentifierLocation: true }; + default: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; + } case 23 /* OpenBracketToken */: - return containingNodeKind === 209 /* ArrayLiteralExpression */ || containingNodeKind === 181 /* IndexSignature */ || containingNodeKind === 167 /* ComputedPropertyName */; + switch (containingNodeKind) { + case 209 /* ArrayLiteralExpression */: + // [ | + case 181 /* IndexSignature */: + // [ | : string ] + case 189 /* TupleType */: + // [ | : string ] + case 167 /* ComputedPropertyName */: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: true }; + default: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; + } case 144 /* ModuleKeyword */: + // module | case 145 /* NamespaceKeyword */: + // namespace | case 102 /* ImportKeyword */: - return true; + return { defaultCommitCharacters: [], isNewIdentifierLocation: true }; case 25 /* DotToken */: - return containingNodeKind === 267 /* ModuleDeclaration */; + switch (containingNodeKind) { + case 267 /* ModuleDeclaration */: + return { defaultCommitCharacters: [], isNewIdentifierLocation: true }; + default: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; + } case 19 /* OpenBraceToken */: - return containingNodeKind === 263 /* ClassDeclaration */ || containingNodeKind === 210 /* ObjectLiteralExpression */; + switch (containingNodeKind) { + case 263 /* ClassDeclaration */: + // class A { | + case 210 /* ObjectLiteralExpression */: + return { defaultCommitCharacters: [], isNewIdentifierLocation: true }; + default: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; + } case 64 /* EqualsToken */: - return containingNodeKind === 260 /* VariableDeclaration */ || containingNodeKind === 226 /* BinaryExpression */; + switch (containingNodeKind) { + case 260 /* VariableDeclaration */: + // const x = a| + case 226 /* BinaryExpression */: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: true }; + default: + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; + } case 16 /* TemplateHead */: - return containingNodeKind === 228 /* TemplateExpression */; + return { + defaultCommitCharacters: allCommitCharacters, + isNewIdentifierLocation: containingNodeKind === 228 /* TemplateExpression */ + // `aa ${| + }; case 17 /* TemplateMiddle */: - return containingNodeKind === 239 /* TemplateSpan */; + return { + defaultCommitCharacters: allCommitCharacters, + isNewIdentifierLocation: containingNodeKind === 239 /* TemplateSpan */ + // `aa ${10} dd ${| + }; case 134 /* AsyncKeyword */: - return containingNodeKind === 174 /* MethodDeclaration */ || containingNodeKind === 304 /* ShorthandPropertyAssignment */; + return containingNodeKind === 174 /* MethodDeclaration */ || containingNodeKind === 304 /* ShorthandPropertyAssignment */ ? { defaultCommitCharacters: [], isNewIdentifierLocation: true } : { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; case 42 /* AsteriskToken */: - return containingNodeKind === 174 /* MethodDeclaration */; + return containingNodeKind === 174 /* MethodDeclaration */ ? { defaultCommitCharacters: [], isNewIdentifierLocation: true } : { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; } if (isClassMemberCompletionKeyword(tokenKind)) { - return true; + return { defaultCommitCharacters: [], isNewIdentifierLocation: true }; } } - return false; + return { defaultCommitCharacters: allCommitCharacters, isNewIdentifierLocation: false }; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken2) { return (isRegularExpressionLiteral(contextToken2) || isStringTextContainingNode(contextToken2)) && (rangeContainsPositionExclusive(contextToken2, position) || position === contextToken2.end && (!!contextToken2.isUnterminated || isRegularExpressionLiteral(contextToken2))); @@ -166556,6 +168517,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, const parent2 = contextToken2.parent; switch (contextToken2.kind) { case 32 /* GreaterThanToken */: + // End of a type argument list case 31 /* LessThanSlashToken */: case 44 /* SlashToken */: case 80 /* Identifier */: @@ -166578,6 +168540,9 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, return parent2.parent.parent; } break; + // The context token is the closing } or " of an attribute, which means + // its parent is a JsxExpression, whose parent is a JsxAttribute, + // whose parent is a JsxOpeningLikeElement case 11 /* StringLiteral */: if (parent2 && (parent2.kind === 291 /* JsxAttribute */ || parent2.kind === 293 /* JsxSpreadAttribute */)) { return parent2.parent.parent; @@ -166612,14 +168577,18 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, isClassLike(parent2) && !!parent2.typeParameters && parent2.typeParameters.end >= contextToken2.pos; case 25 /* DotToken */: return containingNodeKind === 207 /* ArrayBindingPattern */; + // var [.| case 59 /* ColonToken */: return containingNodeKind === 208 /* BindingElement */; + // var {x :html| case 23 /* OpenBracketToken */: return containingNodeKind === 207 /* ArrayBindingPattern */; + // var [x| case 21 /* OpenParenToken */: return containingNodeKind === 299 /* CatchClause */ || isFunctionLikeButNotConstructor(containingNodeKind); case 19 /* OpenBraceToken */: return containingNodeKind === 266 /* EnumDeclaration */; + // enum a { | case 30 /* LessThanToken */: return containingNodeKind === 263 /* ClassDeclaration */ || // class A< | containingNodeKind === 231 /* ClassExpression */ || // var C = class D< | @@ -166630,6 +168599,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, return containingNodeKind === 172 /* PropertyDeclaration */ && !isClassLike(parent2.parent); case 26 /* DotDotDotToken */: return containingNodeKind === 169 /* Parameter */ || !!parent2.parent && parent2.parent.kind === 207 /* ArrayBindingPattern */; + // var [...z| case 125 /* PublicKeyword */: case 123 /* PrivateKeyword */: case 124 /* ProtectedKeyword */: @@ -166640,7 +168610,7 @@ function getCompletionData(program, log, sourceFile, compilerOptions, position, case 153 /* SetKeyword */: return !isFromObjectTypeDeclaration(contextToken2); case 80 /* Identifier */: { - if (containingNodeKind === 276 /* ImportSpecifier */ && contextToken2 === parent2.name && contextToken2.text === "type") { + if ((containingNodeKind === 276 /* ImportSpecifier */ || containingNodeKind === 281 /* ExportSpecifier */) && contextToken2 === parent2.name && contextToken2.text === "type") { return false; } const ancestorVariableDeclaration = findAncestor( @@ -166856,6 +168826,7 @@ function tryGetObjectLikeCompletionContainer(contextToken, position, sourceFile) const { parent: parent2 } = contextToken; switch (contextToken.kind) { case 19 /* OpenBraceToken */: + // const x = { | case 28 /* CommaToken */: if (isObjectLiteralExpression(parent2) || isObjectBindingPattern(parent2)) { return parent2; @@ -167133,9 +169104,11 @@ function tryGetObjectTypeDeclarationCompletionContainer(sourceFile, contextToken case 64 /* EqualsToken */: return void 0; case 27 /* SemicolonToken */: + // class c {getValue(): number; | } case 20 /* CloseBraceToken */: return isFromObjectTypeDeclaration(location) && location.parent.name === location ? location.parent.parent : tryCast(location, isObjectTypeDeclaration); case 19 /* OpenBraceToken */: + // class c { | case 28 /* CommaToken */: return tryCast(contextToken.parent, isObjectTypeDeclaration); default: @@ -167369,20 +169342,37 @@ function isModuleSpecifierMissingOrEmpty(specifier) { if (nodeIsMissing(specifier)) return true; return !((_a = tryCast(isExternalModuleReference(specifier) ? specifier.expression : specifier, isStringLiteralLike)) == null ? void 0 : _a.text); } -function getVariableOrParameterDeclaration(contextToken, location) { +function getClosestSymbolDeclaration(contextToken, location) { if (!contextToken) return; - const possiblyParameterDeclaration = findAncestor(contextToken, (node) => isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node) ? "quit" : (isParameter(node) || isTypeParameterDeclaration(node)) && !isIndexSignatureDeclaration(node.parent)); - const possiblyVariableDeclaration = findAncestor(location, (node) => isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node) ? "quit" : isVariableDeclaration(node)); - return possiblyParameterDeclaration || possiblyVariableDeclaration; + let closestDeclaration = findAncestor(contextToken, (node) => isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node) ? "quit" : (isParameter(node) || isTypeParameterDeclaration(node)) && !isIndexSignatureDeclaration(node.parent)); + if (!closestDeclaration) { + closestDeclaration = findAncestor(location, (node) => isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node) ? "quit" : isVariableDeclaration(node)); + } + return closestDeclaration; +} +function isInTypeParameterDefault(contextToken) { + if (!contextToken) { + return false; + } + let node = contextToken; + let parent2 = contextToken.parent; + while (parent2) { + if (isTypeParameterDeclaration(parent2)) { + return parent2.default === node || node.kind === 64 /* EqualsToken */; + } + node = parent2; + parent2 = parent2.parent; + } + return false; } function isArrowFunctionBody(node) { return node.parent && isArrowFunction(node.parent) && (node.parent.body === node || // const a = () => /**/; node.kind === 39 /* EqualsGreaterThanToken */); } -function symbolCanBeReferencedAtTypeLocation(symbol, checker, seenModules = /* @__PURE__ */ new Map()) { +function symbolCanBeReferencedAtTypeLocation(symbol, checker, seenModules = /* @__PURE__ */ new Set()) { return nonAliasCanBeReferencedAtTypeLocation(symbol) || nonAliasCanBeReferencedAtTypeLocation(skipAlias(symbol.exportSymbol || symbol, checker)); function nonAliasCanBeReferencedAtTypeLocation(symbol2) { - return !!(symbol2.flags & 788968 /* Type */) || checker.isUnknownSymbol(symbol2) || !!(symbol2.flags & 1536 /* Module */) && addToSeen(seenModules, getSymbolId(symbol2)) && checker.getExportsOfModule(symbol2).some((e) => symbolCanBeReferencedAtTypeLocation(e, checker, seenModules)); + return !!(symbol2.flags & 788968 /* Type */) || checker.isUnknownSymbol(symbol2) || !!(symbol2.flags & 1536 /* Module */) && addToSeen(seenModules, symbol2) && checker.getExportsOfModule(symbol2).some((e) => symbolCanBeReferencedAtTypeLocation(e, checker, seenModules)); } } function isDeprecated(symbol, checker) { @@ -167454,7 +169444,7 @@ function createNameAndKindSet() { } function getStringLiteralCompletions(sourceFile, position, contextToken, options, host, program, log, preferences, includeSymbol) { if (isInReferenceComment(sourceFile, position)) { - const entries = getTripleSlashReferenceCompletion(sourceFile, position, program, host); + const entries = getTripleSlashReferenceCompletion(sourceFile, position, program, host, createModuleSpecifierResolutionHost(program, host)); return entries && convertPathCompletions(entries); } if (isInString(sourceFile, position, contextToken)) { @@ -167641,6 +169631,7 @@ function getStringLiteralCompletionEntries(sourceFile, node, position, program, const argumentInfo = ts_SignatureHelp_exports.getArgumentInfoForCompletions(parent2.kind === 291 /* JsxAttribute */ ? parent2.parent : node, position, sourceFile, typeChecker); return argumentInfo && getStringLiteralCompletionsFromSignature(argumentInfo.invocation, node, argumentInfo, typeChecker) || fromContextualType(0 /* None */); } + // falls through (is `require("")` or `require(""` or `import("")`) case 272 /* ImportDeclaration */: case 278 /* ExportDeclaration */: case 283 /* ExternalModuleReference */: @@ -167726,7 +169717,7 @@ function getAlreadyUsedTypesInStringLiteralUnion(union, current) { } function getStringLiteralCompletionsFromSignature(call, arg, argumentInfo, checker) { let isNewIdentifier = false; - const uniques = /* @__PURE__ */ new Map(); + const uniques = /* @__PURE__ */ new Set(); const editingArgument = isJsxOpeningLikeElement(call) ? Debug.checkDefined(findAncestor(arg.parent, isJsxAttribute)) : arg; const candidates = checker.getCandidateSignaturesForStringLiteralCompletions(call, editingArgument); const types = flatMap(candidates, (candidate) => { @@ -167766,7 +169757,7 @@ function stringLiteralCompletionsForObjectLiteral(checker, objectLiteralExpressi hasIndexSignature: hasIndexSignature(contextualType) }; } -function getStringLiteralTypes(type, uniques = /* @__PURE__ */ new Map()) { +function getStringLiteralTypes(type, uniques = /* @__PURE__ */ new Set()) { if (!type) return emptyArray; type = skipConstraint(type); return type.isUnion() ? flatMap(type.types, (t) => getStringLiteralTypes(t, uniques)) : type.isStringLiteral() && !(type.flags & 1024 /* EnumLiteral */) && addToSeen(uniques, type.value) ? [type] : emptyArray; @@ -167797,8 +169788,9 @@ function getStringLiteralCompletionsFromModuleNamesWorker(sourceFile, node, prog const scriptDirectory = getDirectoryPath(scriptPath); const compilerOptions = program.getCompilerOptions(); const typeChecker = program.getTypeChecker(); + const moduleSpecifierResolutionHost = createModuleSpecifierResolutionHost(program, host); const extensionOptions = getExtensionOptions(compilerOptions, 1 /* ModuleSpecifier */, sourceFile, typeChecker, preferences, mode); - return isPathRelativeToScript(literalValue) || !compilerOptions.baseUrl && !compilerOptions.paths && (isRootedDiskPath(literalValue) || isUrl(literalValue)) ? getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, program, host, scriptPath, extensionOptions) : getCompletionEntriesForNonRelativeModules(literalValue, scriptDirectory, mode, program, host, extensionOptions); + return isPathRelativeToScript(literalValue) || !compilerOptions.baseUrl && !compilerOptions.paths && (isRootedDiskPath(literalValue) || isUrl(literalValue)) ? getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, program, host, moduleSpecifierResolutionHost, scriptPath, extensionOptions) : getCompletionEntriesForNonRelativeModules(literalValue, scriptDirectory, mode, program, host, moduleSpecifierResolutionHost, extensionOptions); } function getExtensionOptions(compilerOptions, referenceKind, importingSourceFile, typeChecker, preferences, resolutionMode) { return { @@ -167809,7 +169801,7 @@ function getExtensionOptions(compilerOptions, referenceKind, importingSourceFile resolutionMode }; } -function getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, program, host, scriptPath, extensionOptions) { +function getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, program, host, moduleSpecifierResolutionHost, scriptPath, extensionOptions) { const compilerOptions = program.getCompilerOptions(); if (compilerOptions.rootDirs) { return getCompletionEntriesForDirectoryFragmentWithRootDirs( @@ -167819,6 +169811,7 @@ function getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, p extensionOptions, program, host, + moduleSpecifierResolutionHost, scriptPath ); } else { @@ -167828,6 +169821,7 @@ function getCompletionEntriesForRelativeModules(literalValue, scriptDirectory, p extensionOptions, program, host, + moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ true, scriptPath @@ -167853,7 +169847,7 @@ function getBaseDirectoriesFromRootDirs(rootDirs, basePath, scriptDirectory, ign compareStringsCaseSensitive ); } -function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs, fragment, scriptDirectory, extensionOptions, program, host, exclude) { +function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs, fragment, scriptDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, exclude) { const compilerOptions = program.getCompilerOptions(); const basePath = compilerOptions.project || host.getCurrentDirectory(); const ignoreCase = !(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames()); @@ -167865,6 +169859,7 @@ function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs, fragment extensionOptions, program, host, + moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ true, exclude @@ -167872,7 +169867,7 @@ function getCompletionEntriesForDirectoryFragmentWithRootDirs(rootDirs, fragment (itemA, itemB) => itemA.name === itemB.name && itemA.kind === itemB.kind && itemA.extension === itemB.extension ); } -function getCompletionEntriesForDirectoryFragment(fragment, scriptDirectory, extensionOptions, program, host, moduleSpecifierIsRelative, exclude, result = createNameAndKindSet()) { +function getCompletionEntriesForDirectoryFragment(fragment, scriptDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, moduleSpecifierIsRelative, exclude, result = createNameAndKindSet()) { var _a; if (fragment === void 0) { fragment = ""; @@ -167897,7 +169892,7 @@ function getCompletionEntriesForDirectoryFragment(fragment, scriptDirectory, ext if (versionPaths) { const packageDirectory = getDirectoryPath(packageJsonPath); const pathInPackage = absolutePath.slice(ensureTrailingDirectorySeparator(packageDirectory).length); - if (addCompletionEntriesFromPaths(result, pathInPackage, packageDirectory, extensionOptions, program, host, versionPaths)) { + if (addCompletionEntriesFromPaths(result, pathInPackage, packageDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, versionPaths)) { return result; } } @@ -167925,7 +169920,7 @@ function getCompletionEntriesForDirectoryFragment(fragment, scriptDirectory, ext getBaseFileName(filePath), program, extensionOptions, - /*isExportsWildcard*/ + /*isExportsOrImportsWildcard*/ false ); result.add(nameAndKind(name, "script" /* scriptElement */, extension)); @@ -167942,7 +169937,7 @@ function getCompletionEntriesForDirectoryFragment(fragment, scriptDirectory, ext } return result; } -function getFilenameWithExtensionOption(name, program, extensionOptions, isExportsWildcard) { +function getFilenameWithExtensionOption(name, program, extensionOptions, isExportsOrImportsWildcard) { const nonJsResult = ts_moduleSpecifiers_exports.tryGetRealFileNameForNonJsDeclarationFileName(name); if (nonJsResult) { return { name: nonJsResult, extension: tryGetExtensionFromPath2(nonJsResult) }; @@ -167956,7 +169951,7 @@ function getFilenameWithExtensionOption(name, program, extensionOptions, isExpor program.getCompilerOptions(), extensionOptions.importingSourceFile ).getAllowedEndingsInPreferredOrder(extensionOptions.resolutionMode); - if (isExportsWildcard) { + if (isExportsOrImportsWildcard) { allowedEndings = allowedEndings.filter((e) => e !== 0 /* Minimal */ && e !== 1 /* Index */); } if (allowedEndings[0] === 3 /* TsExtension */) { @@ -167966,13 +169961,13 @@ function getFilenameWithExtensionOption(name, program, extensionOptions, isExpor const outputExtension2 = ts_moduleSpecifiers_exports.tryGetJSExtensionForFile(name, program.getCompilerOptions()); return outputExtension2 ? { name: changeExtension(name, outputExtension2), extension: outputExtension2 } : { name, extension: tryGetExtensionFromPath2(name) }; } - if (!isExportsWildcard && (allowedEndings[0] === 0 /* Minimal */ || allowedEndings[0] === 1 /* Index */) && fileExtensionIsOneOf(name, [".js" /* Js */, ".jsx" /* Jsx */, ".ts" /* Ts */, ".tsx" /* Tsx */, ".d.ts" /* Dts */])) { + if (!isExportsOrImportsWildcard && (allowedEndings[0] === 0 /* Minimal */ || allowedEndings[0] === 1 /* Index */) && fileExtensionIsOneOf(name, [".js" /* Js */, ".jsx" /* Jsx */, ".ts" /* Ts */, ".tsx" /* Tsx */, ".d.ts" /* Dts */])) { return { name: removeFileExtension(name), extension: tryGetExtensionFromPath2(name) }; } const outputExtension = ts_moduleSpecifiers_exports.tryGetJSExtensionForFile(name, program.getCompilerOptions()); return outputExtension ? { name: changeExtension(name, outputExtension), extension: outputExtension } : { name, extension: tryGetExtensionFromPath2(name) }; } -function addCompletionEntriesFromPaths(result, fragment, baseDirectory, extensionOptions, program, host, paths) { +function addCompletionEntriesFromPaths(result, fragment, baseDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, paths) { const getPatternsForKey = (key) => paths[key]; const comparePaths2 = (a, b) => { const patternA = tryParsePattern(a); @@ -167981,40 +169976,43 @@ function addCompletionEntriesFromPaths(result, fragment, baseDirectory, extensio const lengthB = typeof patternB === "object" ? patternB.prefix.length : b.length; return compareValues(lengthB, lengthA); }; - return addCompletionEntriesFromPathsOrExports( + return addCompletionEntriesFromPathsOrExportsOrImports( result, /*isExports*/ false, + /*isImports*/ + false, fragment, baseDirectory, extensionOptions, program, host, + moduleSpecifierResolutionHost, getOwnKeys(paths), getPatternsForKey, comparePaths2 ); } -function addCompletionEntriesFromPathsOrExports(result, isExports, fragment, baseDirectory, extensionOptions, program, host, keys, getPatternsForKey, comparePaths2) { +function addCompletionEntriesFromPathsOrExportsOrImports(result, isExports, isImports, fragment, baseDirectory, extensionOptions, program, host, moduleSpecifierResolutionHost, keys, getPatternsForKey, comparePaths2) { let pathResults = []; let matchedPath; for (const key of keys) { if (key === ".") continue; - const keyWithoutLeadingDotSlash = key.replace(/^\.\//, ""); + const keyWithoutLeadingDotSlash = key.replace(/^\.\//, "") + ((isExports || isImports) && endsWith(key, "/") ? "*" : ""); const patterns = getPatternsForKey(key); if (patterns) { const pathPattern = tryParsePattern(keyWithoutLeadingDotSlash); if (!pathPattern) continue; const isMatch = typeof pathPattern === "object" && isPatternMatch(pathPattern, fragment); - const isLongestMatch = isMatch && (matchedPath === void 0 || comparePaths2(key, matchedPath) === -1 /* LessThan */); + const isLongestMatch = isMatch && (matchedPath === void 0 || comparePaths2(keyWithoutLeadingDotSlash, matchedPath) === -1 /* LessThan */); if (isLongestMatch) { - matchedPath = key; + matchedPath = keyWithoutLeadingDotSlash; pathResults = pathResults.filter((r) => !r.matchedPattern); } - if (typeof pathPattern === "string" || matchedPath === void 0 || comparePaths2(key, matchedPath) !== 1 /* GreaterThan */) { + if (typeof pathPattern === "string" || matchedPath === void 0 || comparePaths2(keyWithoutLeadingDotSlash, matchedPath) !== 1 /* GreaterThan */) { pathResults.push({ matchedPattern: isMatch, - results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, isExports && isMatch, program, host).map(({ name, kind, extension }) => nameAndKind(name, kind, extension)) + results: getCompletionsForPathMapping(keyWithoutLeadingDotSlash, patterns, fragment, baseDirectory, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost).map(({ name, kind, extension }) => nameAndKind(name, kind, extension)) }); } } @@ -168022,7 +170020,7 @@ function addCompletionEntriesFromPathsOrExports(result, isExports, fragment, bas pathResults.forEach((pathResult) => pathResult.results.forEach((r) => result.add(r))); return matchedPath !== void 0; } -function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, program, host, extensionOptions) { +function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, program, host, moduleSpecifierResolutionHost, extensionOptions) { const typeChecker = program.getTypeChecker(); const compilerOptions = program.getCompilerOptions(); const { baseUrl, paths } = compilerOptions; @@ -168036,6 +170034,7 @@ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, p extensionOptions, program, host, + moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ @@ -168045,7 +170044,7 @@ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, p } if (paths) { const absolute = getPathsBasePath(compilerOptions, host); - addCompletionEntriesFromPaths(result, fragment, absolute, extensionOptions, program, host, paths); + addCompletionEntriesFromPaths(result, fragment, absolute, extensionOptions, program, host, moduleSpecifierResolutionHost, paths); } const fragmentDirectory = getFragmentDirectory(fragment); for (const ambientName of getAmbientModuleCompletions(fragment, fragmentDirectory, typeChecker)) { @@ -168056,7 +170055,7 @@ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, p void 0 )); } - getCompletionEntriesFromTypings(host, program, scriptPath, fragmentDirectory, extensionOptions, result); + getCompletionEntriesFromTypings(program, host, moduleSpecifierResolutionHost, scriptPath, fragmentDirectory, extensionOptions, result); if (moduleResolutionUsesNodeModules(moduleResolution)) { let foundGlobal = false; if (fragmentDirectory === void 0) { @@ -168074,6 +170073,26 @@ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, p } } if (!foundGlobal) { + const resolvePackageJsonExports = getResolvePackageJsonExports(compilerOptions); + const resolvePackageJsonImports = getResolvePackageJsonImports(compilerOptions); + let seenPackageScope = false; + const importsLookup = (directory) => { + if (resolvePackageJsonImports && !seenPackageScope) { + const packageFile = combinePaths(directory, "package.json"); + if (seenPackageScope = tryFileExists(host, packageFile)) { + const packageJson = readJson(packageFile, host); + exportsOrImportsLookup( + packageJson.imports, + fragment, + directory, + /*isExports*/ + false, + /*isImports*/ + true + ); + } + } + }; let ancestorLookup = (ancestor) => { const nodeModules = combinePaths(ancestor, "node_modules"); if (tryDirectoryExists(host, nodeModules)) { @@ -168083,6 +170102,7 @@ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, p extensionOptions, program, host, + moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ @@ -168090,58 +170110,77 @@ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, mode, p result ); } + importsLookup(ancestor); }; - if (fragmentDirectory && getResolvePackageJsonExports(compilerOptions)) { - const nodeModulesDirectoryLookup = ancestorLookup; + if (fragmentDirectory && resolvePackageJsonExports) { + const nodeModulesDirectoryOrImportsLookup = ancestorLookup; ancestorLookup = (ancestor) => { const components = getPathComponents(fragment); components.shift(); let packagePath = components.shift(); if (!packagePath) { - return nodeModulesDirectoryLookup(ancestor); + return nodeModulesDirectoryOrImportsLookup(ancestor); } if (startsWith(packagePath, "@")) { const subName = components.shift(); if (!subName) { - return nodeModulesDirectoryLookup(ancestor); + return nodeModulesDirectoryOrImportsLookup(ancestor); } packagePath = combinePaths(packagePath, subName); } + if (resolvePackageJsonImports && startsWith(packagePath, "#")) { + return importsLookup(ancestor); + } const packageDirectory = combinePaths(ancestor, "node_modules", packagePath); const packageFile = combinePaths(packageDirectory, "package.json"); if (tryFileExists(host, packageFile)) { const packageJson = readJson(packageFile, host); - const exports2 = packageJson.exports; - if (exports2) { - if (typeof exports2 !== "object" || exports2 === null) { - return; - } - const keys = getOwnKeys(exports2); - const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); - const conditions = getConditions(compilerOptions, mode); - addCompletionEntriesFromPathsOrExports( - result, - /*isExports*/ - true, - fragmentSubpath, - packageDirectory, - extensionOptions, - program, - host, - keys, - (key) => singleElementArray(getPatternFromFirstMatchingCondition(exports2[key], conditions)), - comparePatternKeys - ); - return; - } + const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : ""); + exportsOrImportsLookup( + packageJson.exports, + fragmentSubpath, + packageDirectory, + /*isExports*/ + true, + /*isImports*/ + false + ); + return; } - return nodeModulesDirectoryLookup(ancestor); + return nodeModulesDirectoryOrImportsLookup(ancestor); }; } - forEachAncestorDirectory(scriptPath, ancestorLookup); + forEachAncestorDirectoryStoppingAtGlobalCache(host, scriptPath, ancestorLookup); } } return arrayFrom(result.values()); + function exportsOrImportsLookup(lookupTable, fragment2, baseDirectory, isExports, isImports) { + if (typeof lookupTable !== "object" || lookupTable === null) { + return; + } + const keys = getOwnKeys(lookupTable); + const conditions = getConditions(compilerOptions, mode); + addCompletionEntriesFromPathsOrExportsOrImports( + result, + isExports, + isImports, + fragment2, + baseDirectory, + extensionOptions, + program, + host, + moduleSpecifierResolutionHost, + keys, + (key) => { + const pattern = getPatternFromFirstMatchingCondition(lookupTable[key], conditions); + if (pattern === void 0) { + return void 0; + } + return singleElementArray(endsWith(key, "/") && endsWith(pattern, "/") ? pattern + "*" : pattern); + }, + comparePatternKeys + ); + } } function getPatternFromFirstMatchingCondition(target, conditions) { if (typeof target === "string") { @@ -168159,25 +170198,28 @@ function getPatternFromFirstMatchingCondition(target, conditions) { function getFragmentDirectory(fragment) { return containsSlash(fragment) ? hasTrailingDirectorySeparator(fragment) ? fragment : getDirectoryPath(fragment) : void 0; } -function getCompletionsForPathMapping(path, patterns, fragment, packageDirectory, extensionOptions, isExportsWildcard, program, host) { - if (!endsWith(path, "*")) { - return !path.includes("*") ? justPathMappingName(path, "script" /* scriptElement */) : emptyArray; +function getCompletionsForPathMapping(path, patterns, fragment, packageDirectory, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost) { + const parsedPath = tryParsePattern(path); + if (!parsedPath) { + return emptyArray; + } + if (typeof parsedPath === "string") { + return justPathMappingName(path, "script" /* scriptElement */); } - const pathPrefix = path.slice(0, path.length - 1); - const remainingFragment = tryRemovePrefix(fragment, pathPrefix); + const remainingFragment = tryRemovePrefix(fragment, parsedPath.prefix); if (remainingFragment === void 0) { - const starIsFullPathComponent = path[path.length - 2] === "/"; - return starIsFullPathComponent ? justPathMappingName(pathPrefix, "directory" /* directory */) : flatMap(patterns, (pattern) => { + const starIsFullPathComponent = endsWith(path, "/*"); + return starIsFullPathComponent ? justPathMappingName(parsedPath.prefix, "directory" /* directory */) : flatMap(patterns, (pattern) => { var _a; - return (_a = getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExportsWildcard, program, host)) == null ? void 0 : _a.map(({ name, ...rest }) => ({ name: pathPrefix + name, ...rest })); + return (_a = getModulesForPathsPattern("", packageDirectory, pattern, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost)) == null ? void 0 : _a.map(({ name, ...rest }) => ({ name: parsedPath.prefix + name + parsedPath.suffix, ...rest })); }); } - return flatMap(patterns, (pattern) => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExportsWildcard, program, host)); + return flatMap(patterns, (pattern) => getModulesForPathsPattern(remainingFragment, packageDirectory, pattern, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost)); function justPathMappingName(name, kind) { return startsWith(name, fragment) ? [{ name: removeTrailingDirectorySeparator(name), kind, extension: void 0 }] : emptyArray; } } -function getModulesForPathsPattern(fragment, packageDirectory, pattern, extensionOptions, isExportsWildcard, program, host) { +function getModulesForPathsPattern(fragment, packageDirectory, pattern, extensionOptions, isExports, isImports, program, host, moduleSpecifierResolutionHost) { if (!host.readDirectory) { return void 0; } @@ -168190,35 +170232,67 @@ function getModulesForPathsPattern(fragment, packageDirectory, pattern, extensio const normalizedPrefixBase = hasTrailingDirectorySeparator(parsed.prefix) ? "" : getBaseFileName(normalizedPrefix); const fragmentHasPath = containsSlash(fragment); const fragmentDirectory = fragmentHasPath ? hasTrailingDirectorySeparator(fragment) ? fragment : getDirectoryPath(fragment) : void 0; + const getCommonSourceDirectory2 = () => moduleSpecifierResolutionHost.getCommonSourceDirectory(); + const ignoreCase = !hostUsesCaseSensitiveFileNames(moduleSpecifierResolutionHost); + const outDir = program.getCompilerOptions().outDir; + const declarationDir = program.getCompilerOptions().declarationDir; const expandedPrefixDirectory = fragmentHasPath ? combinePaths(normalizedPrefixDirectory, normalizedPrefixBase + fragmentDirectory) : normalizedPrefixDirectory; + const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); + const possibleInputBaseDirectoryForOutDir = isImports && outDir && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, ignoreCase, outDir, getCommonSourceDirectory2); + const possibleInputBaseDirectoryForDeclarationDir = isImports && declarationDir && getPossibleOriginalInputPathWithoutChangingExt(baseDirectory, ignoreCase, declarationDir, getCommonSourceDirectory2); const normalizedSuffix = normalizePath(parsed.suffix); const declarationExtension = normalizedSuffix && getDeclarationEmitExtensionForPath("_" + normalizedSuffix); - const matchingSuffixes = declarationExtension ? [changeExtension(normalizedSuffix, declarationExtension), normalizedSuffix] : [normalizedSuffix]; - const baseDirectory = normalizePath(combinePaths(packageDirectory, expandedPrefixDirectory)); - const completePrefix = fragmentHasPath ? baseDirectory : ensureTrailingDirectorySeparator(baseDirectory) + normalizedPrefixBase; + const inputExtension = normalizedSuffix ? getPossibleOriginalInputExtensionForExtension("_" + normalizedSuffix) : void 0; + const matchingSuffixes = [ + declarationExtension && changeExtension(normalizedSuffix, declarationExtension), + ...inputExtension ? inputExtension.map((ext) => changeExtension(normalizedSuffix, ext)) : [], + normalizedSuffix + ].filter(isString); const includeGlobs = normalizedSuffix ? matchingSuffixes.map((suffix) => "**/*" + suffix) : ["./*"]; - const matches = mapDefined(tryReadDirectory( - host, - baseDirectory, - extensionOptions.extensionsToSearch, - /*exclude*/ - void 0, - includeGlobs - ), (match) => { - const trimmedWithPattern = trimPrefixAndSuffix(match); - if (trimmedWithPattern) { - if (containsSlash(trimmedWithPattern)) { - return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); - } - const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsWildcard); - return nameAndKind(name, "script" /* scriptElement */, extension); + const isExportsOrImportsWildcard = (isExports || isImports) && endsWith(pattern, "/*"); + let matches = getMatchesWithPrefix(baseDirectory); + if (possibleInputBaseDirectoryForOutDir) { + matches = concatenate(matches, getMatchesWithPrefix(possibleInputBaseDirectoryForOutDir)); + } + if (possibleInputBaseDirectoryForDeclarationDir) { + matches = concatenate(matches, getMatchesWithPrefix(possibleInputBaseDirectoryForDeclarationDir)); + } + if (!normalizedSuffix) { + matches = concatenate(matches, getDirectoryMatches(baseDirectory)); + if (possibleInputBaseDirectoryForOutDir) { + matches = concatenate(matches, getDirectoryMatches(possibleInputBaseDirectoryForOutDir)); } - }); - const directories = normalizedSuffix ? emptyArray : mapDefined(tryGetDirectories(host, baseDirectory), (dir) => dir === "node_modules" ? void 0 : directoryResult(dir)); - return [...matches, ...directories]; - function trimPrefixAndSuffix(path) { + if (possibleInputBaseDirectoryForDeclarationDir) { + matches = concatenate(matches, getDirectoryMatches(possibleInputBaseDirectoryForDeclarationDir)); + } + } + return matches; + function getMatchesWithPrefix(directory) { + const completePrefix = fragmentHasPath ? directory : ensureTrailingDirectorySeparator(directory) + normalizedPrefixBase; + return mapDefined(tryReadDirectory( + host, + directory, + extensionOptions.extensionsToSearch, + /*exclude*/ + void 0, + includeGlobs + ), (match) => { + const trimmedWithPattern = trimPrefixAndSuffix(match, completePrefix); + if (trimmedWithPattern) { + if (containsSlash(trimmedWithPattern)) { + return directoryResult(getPathComponents(removeLeadingDirectorySeparator(trimmedWithPattern))[1]); + } + const { name, extension } = getFilenameWithExtensionOption(trimmedWithPattern, program, extensionOptions, isExportsOrImportsWildcard); + return nameAndKind(name, "script" /* scriptElement */, extension); + } + }); + } + function getDirectoryMatches(directoryName) { + return mapDefined(tryGetDirectories(host, directoryName), (dir) => dir === "node_modules" ? void 0 : directoryResult(dir)); + } + function trimPrefixAndSuffix(path, prefix) { return firstDefined(matchingSuffixes, (suffix) => { - const inner = withoutStartAndEnd(normalizePath(path), completePrefix, suffix); + const inner = withoutStartAndEnd(normalizePath(path), prefix, suffix); return inner === void 0 ? void 0 : removeLeadingDirectorySeparator(inner); }); } @@ -168238,7 +170312,7 @@ function getAmbientModuleCompletions(fragment, fragmentDirectory, checker) { } return nonRelativeModuleNames; } -function getTripleSlashReferenceCompletion(sourceFile, position, program, host) { +function getTripleSlashReferenceCompletion(sourceFile, position, program, host, moduleSpecifierResolutionHost) { const compilerOptions = program.getCompilerOptions(); const token = getTokenAtPosition(sourceFile, position); const commentRanges = getLeadingCommentRanges(sourceFile.text, token.pos); @@ -168259,13 +170333,14 @@ function getTripleSlashReferenceCompletion(sourceFile, position, program, host) getExtensionOptions(compilerOptions, 0 /* Filename */, sourceFile), program, host, + moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ true, sourceFile.path - ) : kind === "types" ? getCompletionEntriesFromTypings(host, program, scriptPath, getFragmentDirectory(toComplete), getExtensionOptions(compilerOptions, 1 /* ModuleSpecifier */, sourceFile)) : Debug.fail(); + ) : kind === "types" ? getCompletionEntriesFromTypings(program, host, moduleSpecifierResolutionHost, scriptPath, getFragmentDirectory(toComplete), getExtensionOptions(compilerOptions, 1 /* ModuleSpecifier */, sourceFile)) : Debug.fail(); return addReplacementSpans(toComplete, range.pos + prefix.length, arrayFrom(names.values())); } -function getCompletionEntriesFromTypings(host, program, scriptPath, fragmentDirectory, extensionOptions, result = createNameAndKindSet()) { +function getCompletionEntriesFromTypings(program, host, moduleSpecifierResolutionHost, scriptPath, fragmentDirectory, extensionOptions, result = createNameAndKindSet()) { const options = program.getCompilerOptions(); const seen = /* @__PURE__ */ new Map(); const typeRoots = tryAndIgnoreErrors(() => getEffectiveTypeRoots(options, host)) || emptyArray; @@ -168302,6 +170377,7 @@ function getCompletionEntriesFromTypings(host, program, scriptPath, fragmentDire extensionOptions, program, host, + moduleSpecifierResolutionHost, /*moduleSpecifierIsRelative*/ false, /*exclude*/ @@ -168447,6 +170523,7 @@ function getImportersForExport(sourceFiles, sourceFilesSet, allDirectImports, { break; case 80 /* Identifier */: break; + // TODO: GH#23879 case 271 /* ImportEqualsDeclaration */: handleNamespaceImport( direct, @@ -169053,7 +171130,7 @@ function getImplementationsAtPosition(program, cancellationToken, sourceFiles, s referenceEntries = entries && [...entries]; } else if (entries) { const queue = createQueue(entries); - const seenNodes = /* @__PURE__ */ new Map(); + const seenNodes = /* @__PURE__ */ new Set(); while (!queue.isEmpty()) { const entry = queue.dequeue(); if (!addToSeen(seenNodes, getNodeId(entry.node))) { @@ -169341,6 +171418,7 @@ function declarationIsWriteAccess(decl) { case 306 /* EnumMember */: case 281 /* ExportSpecifier */: case 273 /* ImportClause */: + // default import case 271 /* ImportEqualsDeclaration */: case 276 /* ImportSpecifier */: case 264 /* InterfaceDeclaration */: @@ -169727,6 +171805,7 @@ var Core; Debug.assert(node.parent.name === node); return 2 /* Class */; } + // falls through default: return 0 /* None */; } @@ -170058,6 +172137,7 @@ var Core; if (isJSDocMemberName(node.parent)) { return true; } + // falls through I guess case 80 /* Identifier */: return node.text.length === searchSymbolName.length; case 15 /* NoSubstitutionTemplateLiteral */: @@ -170483,6 +172563,7 @@ var Core; searchSpaceNode = searchSpaceNode.parent; break; } + // falls through case 172 /* PropertyDeclaration */: case 171 /* PropertySignature */: case 176 /* Constructor */: @@ -170495,9 +172576,12 @@ var Core; if (isExternalModule(searchSpaceNode) || isParameterName(thisOrSuperKeyword)) { return void 0; } + // falls through case 262 /* FunctionDeclaration */: case 218 /* FunctionExpression */: break; + // Computed properties in classes are not handled here because references to this are illegal, + // so there is no point finding references to them. default: return void 0; } @@ -170698,10 +172782,10 @@ var Core; } } function getPropertySymbolsFromBaseTypes(symbol, propertyName, checker, cb) { - const seen = /* @__PURE__ */ new Map(); + const seen = /* @__PURE__ */ new Set(); return recur(symbol); function recur(symbol2) { - if (!(symbol2.flags & (32 /* Class */ | 64 /* Interface */)) || !addToSeen(seen, getSymbolId(symbol2))) return; + if (!(symbol2.flags & (32 /* Class */ | 64 /* Interface */)) || !addToSeen(seen, symbol2)) return; return firstDefined(symbol2.declarations, (declaration) => firstDefined(getAllSuperTypeNodes(declaration), (typeReference) => { const type = checker.getTypeAtLocation(typeReference); const propertySymbol = type && type.symbol && checker.getPropertyOfType(type, propertyName); @@ -170837,6 +172921,7 @@ function getDefinitionAtPosition(program, sourceFile, position, searchOtherFiles if (!isDefaultClause(node.parent)) { break; } + // falls through case 84 /* CaseKeyword */: const switchStatement = findAncestor(node.parent, isSwitchStatement); if (switchStatement) { @@ -171281,6 +173366,8 @@ function isDefinitionVisible(checker, declaration) { case 178 /* SetAccessor */: case 174 /* MethodDeclaration */: if (hasEffectiveModifier(declaration, 2 /* Private */)) return false; + // Public properties/methods are visible if its parents are visible, so: + // falls through case 176 /* Constructor */: case 303 /* PropertyAssignment */: case 304 /* ShorthandPropertyAssignment */: @@ -171484,11 +173571,8 @@ function provideInlayHints(context) { if (!args || !args.length) { return; } - const candidates = []; - const signature = checker.getResolvedSignatureForSignatureHelp(expr, candidates); - if (!signature || !candidates.length) { - return; - } + const signature = checker.getResolvedSignature(expr); + if (signature === void 0) return; let signatureParamPos = 0; for (const originalArg of args) { const arg = skipParentheses(originalArg); @@ -172257,6 +174341,7 @@ function getCommentHavingNodes(declaration) { if (isJSDocOverloadTag(declaration.parent)) { return [declaration.parent.parent]; } + // falls through default: return getJSDocCommentsAndTags(declaration); } @@ -173594,6 +175679,7 @@ function getOutliningSpanForNode(n, sourceFile) { const node = findChildOfKind(tryStatement, 98 /* FinallyKeyword */, sourceFile); if (node) return spanForNode(node); } + // falls through default: return createOutliningSpan(createTextSpanFromNode(n, sourceFile), "code" /* Code */); } @@ -175344,6 +177430,7 @@ __export(ts_textChanges_exports, { assignPositionsToNode: () => assignPositionsToNode, createWriter: () => createWriter, deleteNode: () => deleteNode, + getAdjustedEndPosition: () => getAdjustedEndPosition, isThisTypeAnnotatable: () => isThisTypeAnnotatable, isValidLocationToAddComment: () => isValidLocationToAddComment }); @@ -175843,7 +177930,10 @@ var ChangeTracker = class _ChangeTracker { getInsertNodeAtStartInsertOptions(sourceFile, node, indentation) { const members = getMembersOrProperties(node); const isEmpty = members.length === 0; - const isFirstInsertion = addToSeen(this.classesWithNodesInsertedAtStart, getNodeId(node), { node, sourceFile }); + const isFirstInsertion = !this.classesWithNodesInsertedAtStart.has(getNodeId(node)); + if (isFirstInsertion) { + this.classesWithNodesInsertedAtStart.set(getNodeId(node), { node, sourceFile }); + } const insertTrailingComma = isObjectLiteralExpression(node) && (!isJsonSourceFile(sourceFile) || !isEmpty); const insertLeadingComma = isObjectLiteralExpression(node) && isJsonSourceFile(sourceFile) && isEmpty && !isFirstInsertion; return { @@ -177419,19 +179509,34 @@ function isBinaryOpContext(context) { case 193 /* IntersectionType */: case 238 /* SatisfiesExpression */: return true; + // equals in binding elements: function foo([[x, y] = [1, 2]]) case 208 /* BindingElement */: + // equals in type X = ... + // falls through case 265 /* TypeAliasDeclaration */: + // equal in import a = module('a'); + // falls through case 271 /* ImportEqualsDeclaration */: + // equal in export = 1 + // falls through case 277 /* ExportAssignment */: + // equal in let a = 0 + // falls through case 260 /* VariableDeclaration */: + // equal in p = 0 + // falls through case 169 /* Parameter */: case 306 /* EnumMember */: case 172 /* PropertyDeclaration */: case 171 /* PropertySignature */: return context.currentTokenSpan.kind === 64 /* EqualsToken */ || context.nextTokenSpan.kind === 64 /* EqualsToken */; + // "in" keyword in for (let x in []) { } case 249 /* ForInStatement */: + // "in" keyword in [P in keyof T]: T[P] + // falls through case 168 /* TypeParameter */: return context.currentTokenSpan.kind === 103 /* InKeyword */ || context.nextTokenSpan.kind === 103 /* InKeyword */ || context.currentTokenSpan.kind === 64 /* EqualsToken */ || context.nextTokenSpan.kind === 64 /* EqualsToken */; + // Technically, "of" is not a binary operator, but format it the same way as "in" case 250 /* ForOfStatement */: return context.currentTokenSpan.kind === 165 /* OfKeyword */ || context.nextTokenSpan.kind === 165 /* OfKeyword */; } @@ -177495,12 +179600,20 @@ function isFunctionDeclContext(context) { case 262 /* FunctionDeclaration */: case 174 /* MethodDeclaration */: case 173 /* MethodSignature */: + // case SyntaxKind.MemberFunctionDeclaration: + // falls through case 177 /* GetAccessor */: case 178 /* SetAccessor */: + // case SyntaxKind.MethodSignature: + // falls through case 179 /* CallSignature */: case 218 /* FunctionExpression */: case 176 /* Constructor */: case 219 /* ArrowFunction */: + // case SyntaxKind.ConstructorDeclaration: + // case SyntaxKind.SimpleArrowFunctionExpression: + // case SyntaxKind.ParenthesizedArrowFunctionExpression: + // falls through case 264 /* InterfaceDeclaration */: return true; } @@ -177560,6 +179673,9 @@ function isControlDeclContext(context) { case 258 /* TryStatement */: case 246 /* DoStatement */: case 254 /* WithStatement */: + // TODO + // case SyntaxKind.ElseClause: + // falls through case 299 /* CatchClause */: return true; default: @@ -177727,6 +179843,9 @@ function isSemicolonDeletionContext(context) { if (startLine === endLine) { return nextTokenKind === 20 /* CloseBraceToken */ || nextTokenKind === 1 /* EndOfFileToken */; } + if (nextTokenKind === 27 /* SemicolonToken */ && context.currentTokenSpan.kind === 27 /* SemicolonToken */) { + return true; + } if (nextTokenKind === 240 /* SemicolonClassElement */ || nextTokenKind === 27 /* SemicolonToken */) { return false; } @@ -178188,6 +180307,7 @@ function formatSpanWorker(originalRange, enclosingNode, initialIndentation, delt if (node.asteriskToken) { return 42 /* AsteriskToken */; } + // falls through case 172 /* PropertyDeclaration */: case 169 /* Parameter */: const name = getNameOfDeclaration(node); @@ -178200,6 +180320,10 @@ function formatSpanWorker(originalRange, enclosingNode, initialIndentation, delt return { getIndentationForComment: (kind, tokenIndentation, container) => { switch (kind) { + // preceding comment to the token that closes the indentation scope inherits the indentation from the scope + // .. { + // // comment + // } case 20 /* CloseBraceToken */: case 24 /* CloseBracketToken */: case 22 /* CloseParenToken */: @@ -178229,6 +180353,7 @@ function formatSpanWorker(originalRange, enclosingNode, initialIndentation, delt }; function shouldAddDelta(line, kind, container) { switch (kind) { + // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent case 19 /* OpenBraceToken */: case 20 /* CloseBraceToken */: case 22 /* CloseParenToken */: @@ -179386,6 +181511,48 @@ var SmartIndenter; } })(SmartIndenter || (SmartIndenter = {})); +// src/services/_namespaces/ts.preparePasteEdits.ts +var ts_preparePasteEdits_exports = {}; +__export(ts_preparePasteEdits_exports, { + preparePasteEdits: () => preparePasteEdits +}); + +// src/services/preparePasteEdits.ts +function preparePasteEdits(sourceFile, copiedFromRange, checker) { + let shouldProvidePasteEdits = false; + copiedFromRange.forEach((range) => { + const enclosingNode = findAncestor( + getTokenAtPosition(sourceFile, range.pos), + (ancestorNode) => rangeContainsRange(ancestorNode, range) + ); + if (!enclosingNode) return; + forEachChild(enclosingNode, function checkNameResolution(node) { + var _a; + if (shouldProvidePasteEdits) return; + if (isIdentifier(node) && rangeContainsPosition(range, node.getStart(sourceFile))) { + const resolvedSymbol = checker.resolveName( + node.text, + node, + -1 /* All */, + /*excludeGlobals*/ + false + ); + if (resolvedSymbol && resolvedSymbol.declarations) { + for (const decl of resolvedSymbol.declarations) { + if (isInImport(decl) || !!(node.text && sourceFile.symbol && ((_a = sourceFile.symbol.exports) == null ? void 0 : _a.has(node.escapedText)))) { + shouldProvidePasteEdits = true; + return; + } + } + } + } + node.forEachChild(checkNameResolution); + }); + if (shouldProvidePasteEdits) return; + }); + return shouldProvidePasteEdits; +} + // src/services/_namespaces/ts.PasteEdits.ts var ts_PasteEdits_exports = {}; __export(ts_PasteEdits_exports, { @@ -179393,10 +181560,10 @@ __export(ts_PasteEdits_exports, { }); // src/services/pasteEdits.ts -var fixId54 = "providePostPasteEdits"; +var fixId55 = "providePostPasteEdits"; function pasteEditsProvider(targetFile, pastedText, pasteLocations, copiedFrom, host, preferences, formatContext, cancellationToken) { const changes = ts_textChanges_exports.ChangeTracker.with({ host, formatContext, preferences }, (changeTracker) => pasteEdits(targetFile, pastedText, pasteLocations, copiedFrom, host, preferences, formatContext, cancellationToken, changeTracker)); - return { edits: changes, fixId: fixId54 }; + return { edits: changes, fixId: fixId55 }; } function pasteEdits(targetFile, pastedText, pasteLocations, copiedFrom, host, preferences, formatContext, cancellationToken, changes) { let actualPastedText; @@ -179424,11 +181591,13 @@ function pasteEdits(targetFile, pastedText, pasteLocations, copiedFrom, host, pr } statements.push(...statementsInSourceFile.slice(startNodeIndex, endNodeIndex === -1 ? statementsInSourceFile.length : endNodeIndex + 1)); }); - const usage = getUsageInfo(copiedFrom.file, statements, originalProgram.getTypeChecker(), getExistingLocals(updatedFile, statements, originalProgram.getTypeChecker()), { pos: copiedFrom.range[0].pos, end: copiedFrom.range[copiedFrom.range.length - 1].end }); - Debug.assertIsDefined(originalProgram); + Debug.assertIsDefined(originalProgram, "no original program found"); + const originalProgramTypeChecker = originalProgram.getTypeChecker(); + const usageInfoRange = getUsageInfoRangeForPasteEdits(copiedFrom); + const usage = getUsageInfo(copiedFrom.file, statements, originalProgramTypeChecker, getExistingLocals(updatedFile, statements, originalProgramTypeChecker), usageInfoRange); const useEsModuleSyntax = !fileShouldUseJavaScriptRequire(targetFile.fileName, originalProgram, host, !!copiedFrom.file.commonJsModuleIndicator); addExportsInOldFile(copiedFrom.file, usage.targetFileImportsFromOldFile, changes, useEsModuleSyntax); - addTargetFileImports(copiedFrom.file, usage.oldImportsNeededByTargetFile, usage.targetFileImportsFromOldFile, originalProgram.getTypeChecker(), updatedProgram, importAdder); + addTargetFileImports(copiedFrom.file, usage.oldImportsNeededByTargetFile, usage.targetFileImportsFromOldFile, originalProgramTypeChecker, updatedProgram, importAdder); } else { const context = { sourceFile: updatedFile, @@ -179484,6 +181653,16 @@ function pasteEdits(targetFile, pastedText, pasteLocations, copiedFrom, host, pr ); }); } +function getUsageInfoRangeForPasteEdits({ file: sourceFile, range }) { + const pos = range[0].pos; + const end = range[range.length - 1].end; + const startToken = getTokenAtPosition(sourceFile, pos); + const endToken = findTokenOnLeftOfPosition(sourceFile, pos) ?? getTokenAtPosition(sourceFile, end); + return { + pos: isIdentifier(startToken) && pos <= startToken.getStart(sourceFile) ? startToken.getFullStart() : pos, + end: isIdentifier(endToken) && end === endToken.getEnd() ? ts_textChanges_exports.getAdjustedEndPosition(sourceFile, endToken, {}) : end + }; +} // src/server/_namespaces/ts.ts var ts_exports2 = {}; @@ -179596,6 +181775,7 @@ __export(ts_exports2, { PollingWatchKind: () => PollingWatchKind, PragmaKindFlags: () => PragmaKindFlags, PredicateSemantics: () => PredicateSemantics, + PreparePasteEdits: () => ts_preparePasteEdits_exports, PrivateIdentifierKind: () => PrivateIdentifierKind, ProcessLevel: () => ProcessLevel, ProgramUpdateLevel: () => ProgramUpdateLevel, @@ -179691,7 +181871,6 @@ __export(ts_exports2, { buildOverload: () => buildOverload, bundlerModuleNameResolver: () => bundlerModuleNameResolver, canBeConvertedToAsync: () => canBeConvertedToAsync, - canEmitTsBuildInfo: () => canEmitTsBuildInfo, canHaveDecorators: () => canHaveDecorators, canHaveExportModifier: () => canHaveExportModifier, canHaveFlowNode: () => canHaveFlowNode, @@ -179711,6 +181890,7 @@ __export(ts_exports2, { canWatchAffectingLocation: () => canWatchAffectingLocation, canWatchAtTypes: () => canWatchAtTypes, canWatchDirectoryOrFile: () => canWatchDirectoryOrFile, + canWatchDirectoryOrFilePath: () => canWatchDirectoryOrFilePath, cartesianProduct: () => cartesianProduct, cast: () => cast, chainBundle: () => chainBundle, @@ -179981,6 +182161,7 @@ __export(ts_exports2, { escapeTemplateSubstitution: () => escapeTemplateSubstitution, evaluatorResult: () => evaluatorResult, every: () => every, + exclusivelyPrefixedNodeCoreModules: () => exclusivelyPrefixedNodeCoreModules, executeCommandLine: () => executeCommandLine, expandPreOrPostfixIncrementOrDecrementExpression: () => expandPreOrPostfixIncrementOrDecrementExpression, explainFiles: () => explainFiles, @@ -179993,7 +182174,6 @@ __export(ts_exports2, { extensionsNotSupportingExtensionlessResolution: () => extensionsNotSupportingExtensionlessResolution, externalHelpersModuleNameText: () => externalHelpersModuleNameText, factory: () => factory, - fileContainsPackageImport: () => fileContainsPackageImport, fileExtensionIs: () => fileExtensionIs, fileExtensionIsOneOf: () => fileExtensionIsOneOf, fileIncludeReasonToDiagnostics: () => fileIncludeReasonToDiagnostics, @@ -180043,8 +182223,10 @@ __export(ts_exports2, { forEach: () => forEach, forEachAncestor: () => forEachAncestor, forEachAncestorDirectory: () => forEachAncestorDirectory, + forEachAncestorDirectoryStoppingAtGlobalCache: () => forEachAncestorDirectoryStoppingAtGlobalCache, forEachChild: () => forEachChild, forEachChildRecursively: () => forEachChildRecursively, + forEachDynamicImportOrRequireCall: () => forEachDynamicImportOrRequireCall, forEachEmittedFile: () => forEachEmittedFile, forEachEnclosingBlockScopeContainer: () => forEachEnclosingBlockScopeContainer, forEachEntry: () => forEachEntry, @@ -180085,6 +182267,7 @@ __export(ts_exports2, { getAllKeys: () => getAllKeys, getAllProjectOutputs: () => getAllProjectOutputs, getAllSuperTypeNodes: () => getAllSuperTypeNodes, + getAllowImportingTsExtensions: () => getAllowImportingTsExtensions, getAllowJSCompilerOption: () => getAllowJSCompilerOption, getAllowSyntheticDefaultImports: () => getAllowSyntheticDefaultImports, getAncestor: () => getAncestor, @@ -180393,6 +182576,7 @@ __export(ts_exports2, { getPositionOfLineAndCharacter: () => getPositionOfLineAndCharacter, getPossibleGenericSignatures: () => getPossibleGenericSignatures, getPossibleOriginalInputExtensionForExtension: () => getPossibleOriginalInputExtensionForExtension, + getPossibleOriginalInputPathWithoutChangingExt: () => getPossibleOriginalInputPathWithoutChangingExt, getPossibleTypeArgumentsInfo: () => getPossibleTypeArgumentsInfo, getPreEmitDiagnostics: () => getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition: () => getPrecedingNonSpaceCharacterPosition, @@ -180656,7 +182840,7 @@ __export(ts_exports2, { isBooleanLiteral: () => isBooleanLiteral, isBreakOrContinueStatement: () => isBreakOrContinueStatement, isBreakStatement: () => isBreakStatement, - isBuild: () => isBuild, + isBuildCommand: () => isBuildCommand, isBuildInfoFile: () => isBuildInfoFile, isBuilderProgram: () => isBuilderProgram, isBundle: () => isBundle, @@ -180843,7 +183027,7 @@ __export(ts_exports2, { isImportSpecifier: () => isImportSpecifier, isImportTypeAssertionContainer: () => isImportTypeAssertionContainer, isImportTypeNode: () => isImportTypeNode, - isImportableFile: () => isImportableFile, + isImportable: () => isImportable, isInComment: () => isInComment, isInCompoundLikeAssignment: () => isInCompoundLikeAssignment, isInExpressionContext: () => isInExpressionContext, @@ -180942,6 +183126,7 @@ __export(ts_exports2, { isJsxAttributeLike: () => isJsxAttributeLike, isJsxAttributeName: () => isJsxAttributeName, isJsxAttributes: () => isJsxAttributes, + isJsxCallLike: () => isJsxCallLike, isJsxChild: () => isJsxChild, isJsxClosingElement: () => isJsxClosingElement, isJsxClosingFragment: () => isJsxClosingFragment, @@ -181024,6 +183209,7 @@ __export(ts_exports2, { isNamespaceReexportDeclaration: () => isNamespaceReexportDeclaration, isNewExpression: () => isNewExpression, isNewExpressionTarget: () => isNewExpressionTarget, + isNewScopeNode: () => isNewScopeNode, isNoSubstitutionTemplateLiteral: () => isNoSubstitutionTemplateLiteral, isNodeArray: () => isNodeArray, isNodeArrayMultiLine: () => isNodeArrayMultiLine, @@ -181072,6 +183258,7 @@ __export(ts_exports2, { isParseTreeNode: () => isParseTreeNode, isPartOfParameterDeclaration: () => isPartOfParameterDeclaration, isPartOfTypeNode: () => isPartOfTypeNode, + isPartOfTypeOnlyImportOrExportDeclaration: () => isPartOfTypeOnlyImportOrExportDeclaration, isPartOfTypeQuery: () => isPartOfTypeQuery, isPartiallyEmittedExpression: () => isPartiallyEmittedExpression, isPatternMatch: () => isPatternMatch, @@ -181140,6 +183327,7 @@ __export(ts_exports2, { isSimpleInlineableExpression: () => isSimpleInlineableExpression, isSimpleParameterList: () => isSimpleParameterList, isSingleOrDoubleQuote: () => isSingleOrDoubleQuote, + isSolutionConfig: () => isSolutionConfig, isSourceElement: () => isSourceElement, isSourceFile: () => isSourceFile, isSourceFileFromLibrary: () => isSourceFileFromLibrary, @@ -181248,7 +183436,6 @@ __export(ts_exports2, { isVariableDeclarationInitializedToRequire: () => isVariableDeclarationInitializedToRequire, isVariableDeclarationList: () => isVariableDeclarationList, isVariableLike: () => isVariableLike, - isVariableLikeOrAccessor: () => isVariableLikeOrAccessor, isVariableStatement: () => isVariableStatement, isVoidExpression: () => isVoidExpression, isWatchSet: () => isWatchSet, @@ -181285,6 +183472,7 @@ __export(ts_exports2, { matchPatternOrExact: () => matchPatternOrExact, matchedText: () => matchedText, matchesExclude: () => matchesExclude, + matchesExcludeWorker: () => matchesExcludeWorker, maxBy: () => maxBy, maybeBind: () => maybeBind, maybeSetLocalizedDiagnosticMessages: () => maybeSetLocalizedDiagnosticMessages, @@ -181324,6 +183512,7 @@ __export(ts_exports2, { noTransformers: () => noTransformers, noTruncationMaximumTruncationLength: () => noTruncationMaximumTruncationLength, nodeCanBeDecorated: () => nodeCanBeDecorated, + nodeCoreModules: () => nodeCoreModules, nodeHasName: () => nodeHasName, nodeIsDecorated: () => nodeIsDecorated, nodeIsMissing: () => nodeIsMissing, @@ -181468,6 +183657,7 @@ __export(ts_exports2, { returnTrue: () => returnTrue, returnUndefined: () => returnUndefined, returnsPromise: () => returnsPromise, + rewriteModuleSpecifier: () => rewriteModuleSpecifier, sameFlatMap: () => sameFlatMap, sameMap: () => sameMap, sameMapping: () => sameMapping, @@ -181513,6 +183703,7 @@ __export(ts_exports2, { setValueDeclaration: () => setValueDeclaration, shouldAllowImportingTsExtension: () => shouldAllowImportingTsExtension, shouldPreserveConstEnums: () => shouldPreserveConstEnums, + shouldRewriteModuleSpecifier: () => shouldRewriteModuleSpecifier, shouldUseUriStyleNodeCoreModules: () => shouldUseUriStyleNodeCoreModules, showModuleSpecifier: () => showModuleSpecifier, signatureHasRestParameter: () => signatureHasRestParameter, @@ -181570,6 +183761,7 @@ __export(ts_exports2, { tagNamesAreEquivalent: () => tagNamesAreEquivalent, takeWhile: () => takeWhile, targetOptionDeclaration: () => targetOptionDeclaration, + targetToLibMap: () => targetToLibMap, testFormatSettings: () => testFormatSettings, textChangeRangeIsUnchanged: () => textChangeRangeIsUnchanged, textChangeRangeNewSpan: () => textChangeRangeNewSpan, @@ -181663,6 +183855,7 @@ __export(ts_exports2, { tryRemoveExtension: () => tryRemoveExtension, tryRemovePrefix: () => tryRemovePrefix, tryRemoveSuffix: () => tryRemoveSuffix, + tscBuildOption: () => tscBuildOption, typeAcquisitionDeclarations: () => typeAcquisitionDeclarations, typeAliasNamePart: () => typeAliasNamePart, typeDirectiveIsEqualTo: () => typeDirectiveIsEqualTo, @@ -181674,6 +183867,7 @@ __export(ts_exports2, { unescapeLeadingUnderscores: () => unescapeLeadingUnderscores, unmangleScopedPackageName: () => unmangleScopedPackageName, unorderedRemoveItem: () => unorderedRemoveItem, + unprefixedNodeCoreModules: () => unprefixedNodeCoreModules, unreachableCodeIsError: () => unreachableCodeIsError, unsetNodeChildren: () => unsetNodeChildren, unusedLabelIsError: () => unusedLabelIsError, @@ -181887,6 +184081,7 @@ __export(ts_server_exports3, { formatDiagnosticToProtocol: () => formatDiagnosticToProtocol, formatMessage: () => formatMessage2, getBaseConfigFileName: () => getBaseConfigFileName, + getDetailWatchInfo: () => getDetailWatchInfo, getLocationInNewDocument: () => getLocationInNewDocument, hasArgument: () => hasArgument, hasNoTypeScriptSource: () => hasNoTypeScriptSource, @@ -181909,6 +184104,8 @@ __export(ts_server_exports3, { nullCancellationToken: () => nullCancellationToken, nullTypingsInstaller: () => nullTypingsInstaller, protocol: () => ts_server_protocol_exports, + scriptInfoIsContainedByBackgroundProject: () => scriptInfoIsContainedByBackgroundProject, + scriptInfoIsContainedByDeferredClosedProject: () => scriptInfoIsContainedByDeferredClosedProject, stringifyIndented: () => stringifyIndented, toEvent: () => toEvent, toNormalizedPath: () => toNormalizedPath, @@ -182594,6 +184791,7 @@ var CommandTypes = /* @__PURE__ */ ((CommandTypes2) => { CommandTypes2["GetApplicableRefactors"] = "getApplicableRefactors"; CommandTypes2["GetEditsForRefactor"] = "getEditsForRefactor"; CommandTypes2["GetMoveToRefactoringFileSuggestions"] = "getMoveToRefactoringFileSuggestions"; + CommandTypes2["PreparePasteEdits"] = "preparePasteEdits"; CommandTypes2["GetPasteEdits"] = "getPasteEdits"; CommandTypes2["GetEditsForRefactorFull"] = "getEditsForRefactor-full"; CommandTypes2["OrganizeImports"] = "organizeImports"; @@ -182617,6 +184815,7 @@ var CommandTypes = /* @__PURE__ */ ((CommandTypes2) => { CommandTypes2["ProvideInlayHints"] = "provideInlayHints"; CommandTypes2["WatchChange"] = "watchChange"; CommandTypes2["MapCode"] = "mapCode"; + CommandTypes2["CopilotRelated"] = "copilotRelated"; return CommandTypes2; })(CommandTypes || {}); var WatchFileKind2 = /* @__PURE__ */ ((WatchFileKind3) => { @@ -182701,6 +184900,7 @@ var ScriptTarget11 = /* @__PURE__ */ ((ScriptTarget12) => { ScriptTarget12["ES2021"] = "es2021"; ScriptTarget12["ES2022"] = "es2022"; ScriptTarget12["ES2023"] = "es2023"; + ScriptTarget12["ES2024"] = "es2024"; ScriptTarget12["ESNext"] = "esnext"; ScriptTarget12["JSON"] = "json"; ScriptTarget12["Latest"] = "esnext" /* ESNext */; @@ -183145,13 +185345,6 @@ var ScriptInfo = class { isOrphan() { return this.deferredDelete || !forEach(this.containingProjects, (p) => !p.isOrphan()); } - /** @internal */ - isContainedByBackgroundProject() { - return some( - this.containingProjects, - isBackgroundProject - ); - } /** * @param line 1 based index */ @@ -183189,6 +185382,18 @@ function failIfInvalidLocation(location) { Debug.assert(location.line > 0, `Expected line to be non-${location.line === 0 ? "zero" : "negative"}`); Debug.assert(location.offset > 0, `Expected offset to be non-${location.offset === 0 ? "zero" : "negative"}`); } +function scriptInfoIsContainedByBackgroundProject(info) { + return some( + info.containingProjects, + isBackgroundProject + ); +} +function scriptInfoIsContainedByDeferredClosedProject(info) { + return some( + info.containingProjects, + isProjectDeferredClose + ); +} // src/server/project.ts var ProjectKind = /* @__PURE__ */ ((ProjectKind2) => { @@ -183305,10 +185510,9 @@ function unresolvedImportsChanged(imports1, imports2) { } var Project2 = class _Project { /** @internal */ - constructor(projectName, projectKind, projectService, documentRegistry, hasExplicitListOfFiles, lastFileExceededProgramSize, compilerOptions, compileOnSaveEnabled, watchOptions, directoryStructureHost, currentDirectory) { + constructor(projectName, projectKind, projectService, hasExplicitListOfFiles, lastFileExceededProgramSize, compilerOptions, compileOnSaveEnabled, watchOptions, directoryStructureHost, currentDirectory) { this.projectKind = projectKind; this.projectService = projectService; - this.documentRegistry = documentRegistry; this.compilerOptions = compilerOptions; this.compileOnSaveEnabled = compileOnSaveEnabled; this.watchOptions = watchOptions; @@ -183343,7 +185547,8 @@ var Project2 = class _Project { * @internal */ this.projectStateVersion = 0; - this.isInitialLoadPending = returnFalse; + /** @internal */ + this.initialLoadPending = false; /** @internal */ this.dirty = false; /** @internal */ @@ -183355,6 +185560,7 @@ var Project2 = class _Project { this.globalCacheResolutionModuleName = ts_JsTyping_exports.nonRelativeModuleNameForTypingCache; /** @internal */ this.updateFromProjectInProgress = false; + projectService.logger.info(`Creating ${ProjectKind[projectKind]}Project: ${projectName}, currentDirectory: ${currentDirectory}`); this.projectName = projectName; this.directoryStructureHost = directoryStructureHost; this.currentDirectory = this.projectService.getNormalizedAbsolutePath(currentDirectory); @@ -183400,7 +185606,11 @@ var Project2 = class _Project { /*logChangesWhenResolvingModule*/ true ); - this.languageService = createLanguageService(this, this.documentRegistry, this.projectService.serverMode); + this.languageService = createLanguageService( + this, + this.projectService.documentRegistry, + this.projectService.serverMode + ); if (lastFileExceededProgramSize) { this.disableLanguageService(lastFileExceededProgramSize); } @@ -183474,7 +185684,7 @@ var Project2 = class _Project { } /** @internal */ getGlobalTypingsCacheLocation() { - return this.getGlobalCache(); + return this.getTypeAcquisition().enable ? this.projectService.typingsInstaller.globalTypingsCacheLocation : void 0; } /** @internal */ getSymlinkCache() { @@ -183689,10 +185899,6 @@ var Project2 = class _Project { this.projectService.delayUpdateProjectGraphAndEnsureProjectStructureForOpenFiles(this); } /** @internal */ - getGlobalCache() { - return this.getTypeAcquisition().enable ? this.projectService.typingsInstaller.globalTypingsCacheLocation : void 0; - } - /** @internal */ fileIsOpen(filePath) { return this.projectService.openFiles.has(filePath); } @@ -184095,19 +186301,12 @@ var Project2 = class _Project { } /** @internal */ onAutoImportProviderSettingsChanged() { - var _a; - if (this.autoImportProviderHost === false) { - this.autoImportProviderHost = void 0; - } else { - (_a = this.autoImportProviderHost) == null ? void 0 : _a.markAsDirty(); - } + this.markAutoImportProviderAsDirty(); } /** @internal */ onPackageJsonChange() { this.moduleSpecifierCache.clear(); - if (this.autoImportProviderHost) { - this.autoImportProviderHost.markAsDirty(); - } + this.markAutoImportProviderAsDirty(); } /** @internal */ onFileAddedOrRemoved(isSymlink) { @@ -184229,14 +186428,15 @@ var Project2 = class _Project { const canonicalPath = this.toPath(path); toRemove.delete(canonicalPath); if (!this.typingWatchers.has(canonicalPath)) { + const watchType = typingsWatcherType === "FileWatcher" /* FileWatcher */ ? WatchType.TypingInstallerLocationFile : WatchType.TypingInstallerLocationDirectory; this.typingWatchers.set( canonicalPath, - typingsWatcherType === "FileWatcher" /* FileWatcher */ ? this.projectService.watchFactory.watchFile( + canWatchDirectoryOrFilePath(canonicalPath) ? typingsWatcherType === "FileWatcher" /* FileWatcher */ ? this.projectService.watchFactory.watchFile( path, () => !this.typingWatchers.isInvoked ? this.onTypingInstallerWatchInvoke() : this.writeLog(`TypingWatchers already invoked`), 2e3 /* High */, this.projectService.getWatchOptions(this), - WatchType.TypingInstallerLocationFile, + watchType, this ) : this.projectService.watchFactory.watchDirectory( path, @@ -184248,9 +186448,9 @@ var Project2 = class _Project { }, 1 /* Recursive */, this.projectService.getWatchOptions(this), - WatchType.TypingInstallerLocationDirectory, + watchType, this - ) + ) : (this.writeLog(`Skipping watcher creation at ${path}:: ${getDetailWatchInfo(watchType, this)}`), noopFileWatcher) ); } }; @@ -184286,7 +186486,7 @@ var Project2 = class _Project { } removeExistingTypings(include) { if (!include.length) return include; - const existing = getAutomaticTypeDirectiveNames(this.getCompilerOptions(), this.directoryStructureHost); + const existing = getAutomaticTypeDirectiveNames(this.getCompilerOptions(), this); return filter(include, (i) => !existing.includes(i)); } updateGraphWorker() { @@ -184541,7 +186741,7 @@ var Project2 = class _Project { ); } filesToStringWorker(writeProjectFileNames, writeFileExplaination, writeFileVersionAndText) { - if (this.isInitialLoadPending()) return " Files (0) InitialLoadPending\n"; + if (this.initialLoadPending) return " Files (0) InitialLoadPending\n"; if (!this.program) return " Files (0) NoProgram\n"; const sourceFiles = this.program.getSourceFiles(); let strBuilder = ` Files (${sourceFiles.length}) @@ -184628,7 +186828,7 @@ var Project2 = class _Project { fileName, isSourceOfProjectReferenceRedirect })) : (files) => arrayFrom(files.keys()); - if (!this.isInitialLoadPending()) { + if (!this.initialLoadPending) { updateProjectIfDirty(this); } const info = { @@ -184792,7 +186992,7 @@ var Project2 = class _Project { } /** @internal */ getNearestAncestorDirectoryWithPackageJson(fileName) { - return this.projectService.getNearestAncestorDirectoryWithPackageJson(fileName); + return this.projectService.getNearestAncestorDirectoryWithPackageJson(fileName, this); } /** @internal */ getPackageJsonsForAutoImport(rootDir) { @@ -184863,7 +187063,11 @@ var Project2 = class _Project { if (dependencySelection) { (_a = tracing) == null ? void 0 : _a.push(tracing.Phase.Session, "getPackageJsonAutoImportProvider"); const start = timestamp(); - this.autoImportProviderHost = AutoImportProviderProject.create(dependencySelection, this, this.getHostForAutoImportProvider(), this.documentRegistry); + this.autoImportProviderHost = AutoImportProviderProject.create( + dependencySelection, + this, + this.getHostForAutoImportProvider() + ) ?? false; if (this.autoImportProviderHost) { updateProjectIfDirty(this.autoImportProviderHost); this.sendPerformanceEvent("CreatePackageJsonAutoImportProvider", timestamp() - start); @@ -184890,11 +187094,12 @@ var Project2 = class _Project { /** @internal */ getNoDtsResolutionProject(rootFile) { Debug.assert(this.projectService.serverMode === 0 /* Semantic */); - if (!this.noDtsResolutionProject) { - this.noDtsResolutionProject = new AuxiliaryProject(this.projectService, this.documentRegistry, this.getCompilerOptionsForNoDtsResolutionProject(), this.currentDirectory); - } + this.noDtsResolutionProject ?? (this.noDtsResolutionProject = new AuxiliaryProject(this)); if (this.noDtsResolutionProject.rootFile !== rootFile) { - this.projectService.setFileNamesOfAutpImportProviderOrAuxillaryProject(this.noDtsResolutionProject, [rootFile]); + this.projectService.setFileNamesOfAutoImportProviderOrAuxillaryProject( + this.noDtsResolutionProject, + [rootFile] + ); this.noDtsResolutionProject.rootFile = rootFile; } return this.noDtsResolutionProject; @@ -184913,6 +187118,7 @@ var Project2 = class _Project { (_d = this.getScriptInfo(rootFile)) == null ? void 0 : _d.editContent(0, updatedText.length, originalText); } } + /** @internal */ getCompilerOptionsForNoDtsResolutionProject() { return { ...this.getCompilerOptions(), @@ -184955,15 +187161,13 @@ function extractUnresolvedImportsFromSourceFile(program, file, ambientModules, c } var InferredProject2 = class extends Project2 { /** @internal */ - constructor(projectService, documentRegistry, compilerOptions, watchOptions, projectRootPath, currentDirectory, typeAcquisition) { + constructor(projectService, compilerOptions, watchOptions, projectRootPath, currentDirectory, typeAcquisition) { super( projectService.newInferredProjectName(), 0 /* Inferred */, projectService, - documentRegistry, - // TODO: GH#18217 - /*files*/ - void 0, + /*hasExplicitListOfFiles*/ + false, /*lastFileExceededProgramSize*/ void 0, compilerOptions, @@ -185048,23 +187252,22 @@ var InferredProject2 = class extends Project2 { } }; var AuxiliaryProject = class extends Project2 { - constructor(projectService, documentRegistry, compilerOptions, currentDirectory) { + constructor(hostProject) { super( - projectService.newAuxiliaryProjectName(), + hostProject.projectService.newAuxiliaryProjectName(), 4 /* Auxiliary */, - projectService, - documentRegistry, + hostProject.projectService, /*hasExplicitListOfFiles*/ false, /*lastFileExceededProgramSize*/ void 0, - compilerOptions, + hostProject.getCompilerOptionsForNoDtsResolutionProject(), /*compileOnSaveEnabled*/ false, /*watchOptions*/ void 0, - projectService.host, - currentDirectory + hostProject.projectService.host, + hostProject.currentDirectory ); } isOrphan() { @@ -185076,12 +187279,11 @@ var AuxiliaryProject = class extends Project2 { }; var _AutoImportProviderProject = class _AutoImportProviderProject extends Project2 { /** @internal */ - constructor(hostProject, initialRootNames, documentRegistry, compilerOptions) { + constructor(hostProject, initialRootNames, compilerOptions) { super( hostProject.projectService.newAutoImportProviderProjectName(), 3 /* AutoImportProvider */, hostProject.projectService, - documentRegistry, /*hasExplicitListOfFiles*/ false, /*lastFileExceededProgramSize*/ @@ -185121,7 +187323,7 @@ var _AutoImportProviderProject = class _AutoImportProviderProject extends Projec if (dependencyNames) { const symlinkCache = hostProject.getSymlinkCache(); for (const name of arrayFrom(dependencyNames.keys())) { - if (dependencySelection === 2 /* Auto */ && dependenciesAdded > this.maxDependencies) { + if (dependencySelection === 2 /* Auto */ && dependenciesAdded >= this.maxDependencies) { hostProject.log(`AutoImportProviderProject: attempted to add more than ${this.maxDependencies} dependencies. Aborting.`); return emptyArray; } @@ -185242,7 +187444,7 @@ var _AutoImportProviderProject = class _AutoImportProviderProject extends Projec } } /** @internal */ - static create(dependencySelection, hostProject, host, documentRegistry) { + static create(dependencySelection, hostProject, host) { if (dependencySelection === 0 /* Off */) { return void 0; } @@ -185254,7 +187456,7 @@ var _AutoImportProviderProject = class _AutoImportProviderProject extends Projec if (!rootNames.length) { return void 0; } - return new _AutoImportProviderProject(hostProject, rootNames, documentRegistry, compilerOptions); + return new _AutoImportProviderProject(hostProject, rootNames, compilerOptions); } /** @internal */ isEmpty() { @@ -185274,7 +187476,7 @@ var _AutoImportProviderProject = class _AutoImportProviderProject extends Projec this.getCompilationSettings() ); } - this.projectService.setFileNamesOfAutpImportProviderOrAuxillaryProject(this, rootFileNames); + this.projectService.setFileNamesOfAutoImportProviderOrAuxillaryProject(this, rootFileNames); this.rootFileNames = rootFileNames; const oldProgram = this.getCurrentProgram(); const hasSameSetOfFiles = super.updateGraph(); @@ -185343,12 +187545,11 @@ _AutoImportProviderProject.compilerOptionsOverrides = { var AutoImportProviderProject = _AutoImportProviderProject; var ConfiguredProject2 = class extends Project2 { /** @internal */ - constructor(configFileName, canonicalConfigFilePath, projectService, documentRegistry, cachedDirectoryStructureHost, pendingUpdateReason) { + constructor(configFileName, canonicalConfigFilePath, projectService, cachedDirectoryStructureHost, pendingUpdateReason) { super( configFileName, 1 /* Configured */, projectService, - documentRegistry, /*hasExplicitListOfFiles*/ false, /*lastFileExceededProgramSize*/ @@ -185366,9 +187567,7 @@ var ConfiguredProject2 = class extends Project2 { /** @internal */ this.openFileWatchTriggered = /* @__PURE__ */ new Map(); /** @internal */ - this.canConfigFileJsonReportNoInputFiles = false; - /** @internal */ - this.isInitialLoadPending = returnTrue; + this.initialLoadPending = true; /** @internal */ this.sendLoadingProjectFinish = false; this.pendingUpdateLevel = 2 /* Full */; @@ -185388,7 +187587,7 @@ var ConfiguredProject2 = class extends Project2 { } /** @internal */ getParsedCommandLine(fileName) { - const configFileName = asNormalizedPath(normalizePath(fileName)); + const configFileName = toNormalizedPath(fileName); const canonicalConfigFilePath = asNormalizedPath(this.projectService.toCanonicalFileName(configFileName)); let configFileExistenceInfo = this.projectService.configFileExistenceInfoCache.get(canonicalConfigFilePath); if (!configFileExistenceInfo) { @@ -185402,7 +187601,7 @@ var ConfiguredProject2 = class extends Project2 { } /** @internal */ onReleaseParsedCommandLine(fileName) { - this.releaseParsedConfig(asNormalizedPath(this.projectService.toCanonicalFileName(asNormalizedPath(normalizePath(fileName))))); + this.releaseParsedConfig(asNormalizedPath(this.projectService.toCanonicalFileName(toNormalizedPath(fileName)))); } releaseParsedConfig(canonicalConfigFilePath) { this.projectService.stopWatchingWildCards(canonicalConfigFilePath, this); @@ -185415,7 +187614,7 @@ var ConfiguredProject2 = class extends Project2 { updateGraph() { if (this.deferredClose) return false; const isDirty = this.dirty; - this.isInitialLoadPending = returnFalse; + this.initialLoadPending = false; const updateLevel = this.pendingUpdateLevel; this.pendingUpdateLevel = 0 /* Update */; let result; @@ -185467,7 +187666,7 @@ var ConfiguredProject2 = class extends Project2 { } /** @internal */ setPotentialProjectReference(canonicalConfigPath) { - Debug.assert(this.isInitialLoadPending()); + Debug.assert(this.initialLoadPending); (this.potentialProjectReferences || (this.potentialProjectReferences = /* @__PURE__ */ new Set())).add(canonicalConfigPath); } /** @internal */ @@ -185531,10 +187730,6 @@ var ConfiguredProject2 = class extends Project2 { super.markAsDirty(); } /** @internal */ - isSolution() { - return this.getRootFilesMap().size === 0 && !this.canConfigFileJsonReportNoInputFiles; - } - /** @internal */ isOrphan() { return !!this.deferredClose; } @@ -185542,18 +187737,24 @@ var ConfiguredProject2 = class extends Project2 { return getEffectiveTypeRoots(this.getCompilationSettings(), this) || []; } /** @internal */ - updateErrorOnNoInputFiles(fileNames) { - updateErrorForNoInputFiles(fileNames, this.getConfigFilePath(), this.getCompilerOptions().configFile.configFileSpecs, this.projectErrors, this.canConfigFileJsonReportNoInputFiles); + updateErrorOnNoInputFiles(parsedCommandLine) { + this.parsedCommandLine = parsedCommandLine; + updateErrorForNoInputFiles( + parsedCommandLine.fileNames, + this.getConfigFilePath(), + this.getCompilerOptions().configFile.configFileSpecs, + this.projectErrors, + canJsonReportNoInputFiles(parsedCommandLine.raw) + ); } }; var ExternalProject = class extends Project2 { /** @internal */ - constructor(externalProjectName, projectService, documentRegistry, compilerOptions, lastFileExceededProgramSize, compileOnSaveEnabled, projectFilePath, watchOptions) { + constructor(externalProjectName, projectService, compilerOptions, lastFileExceededProgramSize, compileOnSaveEnabled, projectFilePath, watchOptions) { super( externalProjectName, 2 /* External */, projectService, - documentRegistry, /*hasExplicitListOfFiles*/ true, lastFileExceededProgramSize, @@ -185765,8 +187966,23 @@ var nullTypingsInstaller = { }; var noopConfigFileWatcher = { close: noop }; function getConfigFileNameFromCache(info, cache) { - if (!cache || isAncestorConfigFileInfo(info)) return void 0; - return cache.get(info.path); + if (!cache) return void 0; + const configFileForOpenFile = cache.get(info.path); + if (configFileForOpenFile === void 0) return void 0; + if (!isAncestorConfigFileInfo(info)) { + return isString(configFileForOpenFile) || !configFileForOpenFile ? configFileForOpenFile : ( + // direct result + configFileForOpenFile.get( + /*key*/ + false + ) + ); + } else { + return configFileForOpenFile && !isString(configFileForOpenFile) ? ( + // Map with fileName as key + configFileForOpenFile.get(info.fileName) + ) : void 0; + } } function isOpenScriptInfo(infoOrFileNameOrConfig) { return !!infoOrFileNameOrConfig.containingProjects; @@ -185775,125 +187991,159 @@ function isAncestorConfigFileInfo(infoOrFileNameOrConfig) { return !!infoOrFileNameOrConfig.configFileInfo; } var ConfiguredProjectLoadKind = /* @__PURE__ */ ((ConfiguredProjectLoadKind2) => { - ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["Find"] = 0] = "Find"; - ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["Create"] = 1] = "Create"; - ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["Reload"] = 2] = "Reload"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["FindOptimized"] = 0] = "FindOptimized"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["Find"] = 1] = "Find"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["CreateReplayOptimized"] = 2] = "CreateReplayOptimized"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["CreateReplay"] = 3] = "CreateReplay"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["CreateOptimized"] = 4] = "CreateOptimized"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["Create"] = 5] = "Create"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["ReloadOptimized"] = 6] = "ReloadOptimized"; + ConfiguredProjectLoadKind2[ConfiguredProjectLoadKind2["Reload"] = 7] = "Reload"; return ConfiguredProjectLoadKind2; })(ConfiguredProjectLoadKind || {}); -function forEachAncestorProject(info, project, cb, kind, reason, allowDeferredClosed, reloadedProjects, delayReloadedConfiguredProjects) { +function toConfiguredProjectLoadOptimized(kind) { + return kind - 1; +} +function forEachAncestorProjectLoad(info, project, cb, kind, reason, allowDeferredClosed, reloadedProjects, searchOnlyPotentialSolution, delayReloadedConfiguredProjects) { + var _a; while (true) { - if (!project.isInitialLoadPending() && (!project.getCompilerOptions().composite || project.getCompilerOptions().disableSolutionSearching)) return; - const configFileName = project.projectService.getConfigFileNameForFile({ - fileName: project.getConfigFilePath(), - path: info.path, - configFileInfo: true - }, kind === 0 /* Find */); + if (project.parsedCommandLine && (searchOnlyPotentialSolution && !project.parsedCommandLine.options.composite || // Currently disableSolutionSearching is shared for finding solution/project when + // - loading solution for find all references + // - trying to find default project + project.parsedCommandLine.options.disableSolutionSearching)) return; + const configFileName = project.projectService.getConfigFileNameForFile( + { + fileName: project.getConfigFilePath(), + path: info.path, + configFileInfo: true, + isForDefaultProject: !searchOnlyPotentialSolution + }, + kind <= 3 /* CreateReplay */ + ); if (!configFileName) return; const ancestor = project.projectService.findCreateOrReloadConfiguredProject( configFileName, kind, reason, allowDeferredClosed, - /*triggerFile*/ - void 0, + !searchOnlyPotentialSolution ? info.fileName : void 0, + // Config Diag event for project if its for default project reloadedProjects, - /*delayLoad*/ - true, + searchOnlyPotentialSolution, + // Delay load if we are searching for solution delayReloadedConfiguredProjects ); if (!ancestor) return; - if (ancestor.project.isInitialLoadPending() && project.getCompilerOptions().composite) { + if (!ancestor.project.parsedCommandLine && ((_a = project.parsedCommandLine) == null ? void 0 : _a.options.composite)) { ancestor.project.setPotentialProjectReference(project.canonicalConfigFilePath); } - const result = cb(ancestor.project); + const result = cb(ancestor); if (result) return result; project = ancestor.project; } } -function forEachResolvedProjectReferenceProject(project, fileName, cb, kind, reason, allowDeferredClosed, triggerFile, reloadedProjects) { - var _a; - const resolvedRefs = (_a = project.getCurrentProgram()) == null ? void 0 : _a.getResolvedProjectReferences(); - if (!resolvedRefs) return void 0; - const possibleDefaultRef = fileName ? project.getResolvedProjectReferenceToRedirect(fileName) : void 0; - if (possibleDefaultRef) { - const configFileName = toNormalizedPath(possibleDefaultRef.sourceFile.fileName); - const child = project.projectService.findConfiguredProjectByProjectName( - configFileName, - allowDeferredClosed - ); - if (child) { - const result = callbackWithProjectFoundUsingFind(child); - if (result) return result; - } else if (kind !== 0 /* Find */) { - const result = forEachResolvedProjectReferenceProjectWorker( - resolvedRefs, - project.getCompilerOptions(), - (ref, loadKind) => possibleDefaultRef === ref ? callback(ref, loadKind) : void 0, - kind, - project.projectService - ); - if (result) return result; +function forEachResolvedProjectReferenceProjectLoad(project, parentConfig, cb, kind, reason, allowDeferredClosed, reloadedProjects, seenResolvedRefs) { + const loadKind = parentConfig.options.disableReferencedProjectLoad ? 0 /* FindOptimized */ : kind; + let children; + return forEach( + parentConfig.projectReferences, + (ref) => { + var _a; + const childConfigName = toNormalizedPath(resolveProjectReferencePath(ref)); + const childCanonicalConfigPath = asNormalizedPath(project.projectService.toCanonicalFileName(childConfigName)); + const seenValue = seenResolvedRefs == null ? void 0 : seenResolvedRefs.get(childCanonicalConfigPath); + if (seenValue !== void 0 && seenValue >= loadKind) return void 0; + const configFileExistenceInfo = project.projectService.configFileExistenceInfoCache.get(childCanonicalConfigPath); + let childConfig = loadKind === 0 /* FindOptimized */ ? (configFileExistenceInfo == null ? void 0 : configFileExistenceInfo.exists) || ((_a = project.resolvedChildConfigs) == null ? void 0 : _a.has(childCanonicalConfigPath)) ? configFileExistenceInfo.config.parsedCommandLine : void 0 : project.getParsedCommandLine(childConfigName); + if (childConfig && loadKind !== kind && loadKind > 2 /* CreateReplayOptimized */) { + childConfig = project.getParsedCommandLine(childConfigName); + } + if (!childConfig) return void 0; + const childProject = project.projectService.findConfiguredProjectByProjectName(childConfigName, allowDeferredClosed); + if (loadKind === 2 /* CreateReplayOptimized */ && !configFileExistenceInfo && !childProject) return void 0; + switch (loadKind) { + case 6 /* ReloadOptimized */: + if (childProject) childProject.projectService.reloadConfiguredProjectOptimized(childProject, reason, reloadedProjects); + // falls through + case 4 /* CreateOptimized */: + (project.resolvedChildConfigs ?? (project.resolvedChildConfigs = /* @__PURE__ */ new Set())).add(childCanonicalConfigPath); + // falls through + case 2 /* CreateReplayOptimized */: + case 0 /* FindOptimized */: + if (childProject || loadKind !== 0 /* FindOptimized */) { + const result = cb( + configFileExistenceInfo ?? project.projectService.configFileExistenceInfoCache.get(childCanonicalConfigPath), + childProject, + childConfigName, + reason, + project, + childCanonicalConfigPath + ); + if (result) return result; + } + break; + default: + Debug.assertNever(loadKind); + } + (seenResolvedRefs ?? (seenResolvedRefs = /* @__PURE__ */ new Map())).set(childCanonicalConfigPath, loadKind); + (children ?? (children = [])).push(childConfig); } - } - return forEachResolvedProjectReferenceProjectWorker( - resolvedRefs, - project.getCompilerOptions(), - (ref, loadKind) => possibleDefaultRef !== ref ? callback(ref, loadKind) : void 0, - kind, - project.projectService - ); - function callback(ref, loadKind) { - const result = project.projectService.findCreateOrReloadConfiguredProject( - toNormalizedPath(ref.sourceFile.fileName), + ) || forEach( + children, + (childConfig) => childConfig.projectReferences && forEachResolvedProjectReferenceProjectLoad( + project, + childConfig, + cb, loadKind, reason, allowDeferredClosed, - triggerFile, - reloadedProjects - ); - return result && (loadKind === kind ? cb(result.project, result.sentConfigFileDiag) : callbackWithProjectFoundUsingFind(result.project)); - } - function callbackWithProjectFoundUsingFind(child) { - let sentConfigFileDiag = false; - switch (kind) { - case 1 /* Create */: - sentConfigFileDiag = updateConfiguredProject(child, triggerFile); - break; - case 2 /* Reload */: - sentConfigFileDiag = child.projectService.reloadConfiguredProjectClearingSemanticCache(child, reason, reloadedProjects); - break; - case 0 /* Find */: - break; - default: - Debug.assertNever(kind); - } - const result = cb(child, sentConfigFileDiag); - if (result) return result; - } + reloadedProjects, + seenResolvedRefs + ) + ); } -function forEachResolvedProjectReferenceProjectWorker(resolvedProjectReferences, parentOptions, cb, kind, projectService, seenResolvedRefs) { - const loadKind = parentOptions.disableReferencedProjectLoad ? 0 /* Find */ : kind; - return forEach(resolvedProjectReferences, (ref) => { - if (!ref) return void 0; - const configFileName = toNormalizedPath(ref.sourceFile.fileName); - const canonicalPath = projectService.toCanonicalFileName(configFileName); - const seenValue = seenResolvedRefs == null ? void 0 : seenResolvedRefs.get(canonicalPath); - if (seenValue !== void 0 && seenValue >= loadKind) { - return void 0; - } - const result = cb(ref, loadKind); - if (result) { - return result; - } - (seenResolvedRefs || (seenResolvedRefs = /* @__PURE__ */ new Map())).set(canonicalPath, loadKind); - return ref.references && forEachResolvedProjectReferenceProjectWorker(ref.references, ref.commandLine.options, cb, loadKind, projectService, seenResolvedRefs); - }); +function updateProjectFoundUsingFind(project, kind, triggerFile, reason, reloadedProjects) { + let sentConfigFileDiag = false; + let configFileExistenceInfo; + switch (kind) { + case 2 /* CreateReplayOptimized */: + case 3 /* CreateReplay */: + if (useConfigFileExistenceInfoForOptimizedLoading(project)) { + configFileExistenceInfo = project.projectService.configFileExistenceInfoCache.get(project.canonicalConfigFilePath); + } + break; + case 4 /* CreateOptimized */: + configFileExistenceInfo = configFileExistenceInfoForOptimizedLoading(project); + if (configFileExistenceInfo) break; + // falls through + case 5 /* Create */: + sentConfigFileDiag = updateConfiguredProject(project, triggerFile); + break; + case 6 /* ReloadOptimized */: + project.projectService.reloadConfiguredProjectOptimized(project, reason, reloadedProjects); + configFileExistenceInfo = configFileExistenceInfoForOptimizedLoading(project); + if (configFileExistenceInfo) break; + // falls through + case 7 /* Reload */: + sentConfigFileDiag = project.projectService.reloadConfiguredProjectClearingSemanticCache( + project, + reason, + reloadedProjects + ); + break; + case 0 /* FindOptimized */: + case 1 /* Find */: + break; + default: + Debug.assertNever(kind); + } + return { project, sentConfigFileDiag, configFileExistenceInfo, reason }; } function forEachPotentialProjectReference(project, cb) { - return project.potentialProjectReferences && forEachKey(project.potentialProjectReferences, cb); + return project.initialLoadPending ? (project.potentialProjectReferences && forEachKey(project.potentialProjectReferences, cb)) ?? (project.resolvedChildConfigs && forEachKey(project.resolvedChildConfigs, cb)) : void 0; } function forEachAnyProjectReferenceKind(project, cb, cbProjectRef, cbPotentialProjectRef) { - return project.getCurrentProgram() ? project.forEachResolvedProjectReference(cb) : project.isInitialLoadPending() ? forEachPotentialProjectReference(project, cbPotentialProjectRef) : forEach(project.getProjectReferences(), cbProjectRef); + return project.getCurrentProgram() ? project.forEachResolvedProjectReference(cb) : project.initialLoadPending ? forEachPotentialProjectReference(project, cbPotentialProjectRef) : forEach(project.getProjectReferences(), cbProjectRef); } function callbackRefProject(project, cb, refPath) { const refProject = refPath && project.projectService.configuredProjects.get(refPath); @@ -185943,6 +188193,27 @@ function updateConfiguredProject(project, triggerFile) { } return false; } +function configFileExistenceInfoForOptimizedLoading(project) { + const configFileName = toNormalizedPath(project.getConfigFilePath()); + const configFileExistenceInfo = project.projectService.ensureParsedConfigUptoDate( + configFileName, + project.canonicalConfigFilePath, + project.projectService.configFileExistenceInfoCache.get(project.canonicalConfigFilePath), + project + ); + const parsedCommandLine = configFileExistenceInfo.config.parsedCommandLine; + project.parsedCommandLine = parsedCommandLine; + project.resolvedChildConfigs = void 0; + project.updateReferences(parsedCommandLine.projectReferences); + if (useConfigFileExistenceInfoForOptimizedLoading(project)) return configFileExistenceInfo; +} +function useConfigFileExistenceInfoForOptimizedLoading(project) { + return !!project.parsedCommandLine && (!!project.parsedCommandLine.options.composite || // If solution, no need to load it to determine if file belongs to it + !!isSolutionConfig(project.parsedCommandLine)); +} +function configFileExistenceInfoForOptimizedReplay(project) { + return useConfigFileExistenceInfoForOptimizedLoading(project) ? project.projectService.configFileExistenceInfoCache.get(project.canonicalConfigFilePath) : void 0; +} function fileOpenReason(info) { return `Creating possible configured project for ${info.fileName} to open`; } @@ -186064,7 +188335,7 @@ var _ProjectService = class _ProjectService { */ this.filenameToScriptInfoVersion = /* @__PURE__ */ new Map(); // Set of all '.js' files ever opened. - this.allJsFilesForOpenFileTelemetry = /* @__PURE__ */ new Map(); + this.allJsFilesForOpenFileTelemetry = /* @__PURE__ */ new Set(); /** * maps external project file name to list of config files that were the part of this project */ @@ -186161,6 +188432,9 @@ var _ProjectService = class _ProjectService { this.toCanonicalFileName = createGetCanonicalFileName(this.host.useCaseSensitiveFileNames); this.globalCacheLocationDirectoryPath = this.typingsInstaller.globalTypingsCacheLocation ? ensureTrailingDirectorySeparator(this.toPath(this.typingsInstaller.globalTypingsCacheLocation)) : void 0; this.throttledOperations = new ThrottledOperations(this.host, this.logger); + this.logger.info(`currentDirectory:: ${this.host.getCurrentDirectory()} useCaseSensitiveFileNames:: ${this.host.useCaseSensitiveFileNames}`); + this.logger.info(`libs Location:: ${getDirectoryPath(this.host.getExecutingFilePath())}`); + this.logger.info(`globalTypingsCacheLocation:: ${this.typingsInstaller.globalTypingsCacheLocation}`); if (this.typesMapLocation) { this.loadTypesMap(); } else { @@ -186173,7 +188447,12 @@ var _ProjectService = class _ProjectService { hostInfo: "Unknown host", extraFileExtensions: [] }; - this.documentRegistry = createDocumentRegistryInternal(this.host.useCaseSensitiveFileNames, this.currentDirectory, this.jsDocParsingMode, this); + this.documentRegistry = createDocumentRegistryInternal( + this.host.useCaseSensitiveFileNames, + this.currentDirectory, + this.jsDocParsingMode, + this + ); const watchLogLevel = this.logger.hasLevel(3 /* verbose */) ? 2 /* Verbose */ : this.logger.loggingEnabled() ? 1 /* TriggerOnly */ : 0 /* None */; const log = watchLogLevel !== 0 /* None */ ? (s) => this.logger.info(s) : noop; this.packageJsonCache = createPackageJsonCache(this); @@ -186460,7 +188739,7 @@ var _ProjectService = class _ProjectService { if ((_a = this.pendingOpenFileProjectUpdates) == null ? void 0 : _a.delete(scriptInfo.path)) { this.tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo( scriptInfo, - 1 /* Create */ + 5 /* Create */ ); if (scriptInfo.isOrphan()) { this.assignOrphanScriptInfoToInferredProject(scriptInfo, this.openFiles.get(scriptInfo.path)); @@ -186675,22 +188954,35 @@ var _ProjectService = class _ProjectService { if (!(configFileExistenceInfo == null ? void 0 : configFileExistenceInfo.config)) return false; let scheduledAnyProjectUpdate = false; configFileExistenceInfo.config.updateLevel = 2 /* Full */; + configFileExistenceInfo.config.cachedDirectoryStructureHost.clearCache(); configFileExistenceInfo.config.projects.forEach((_watchWildcardDirectories, projectCanonicalPath) => { - var _a; + var _a, _b, _c; const project = this.getConfiguredProjectByCanonicalConfigFilePath(projectCanonicalPath); if (!project) return; scheduledAnyProjectUpdate = true; if (projectCanonicalPath === canonicalConfigFilePath) { - if (project.isInitialLoadPending()) return; + if (project.initialLoadPending) return; project.pendingUpdateLevel = 2 /* Full */; project.pendingUpdateReason = loadReason; this.delayUpdateProjectGraph(project); project.markAutoImportProviderAsDirty(); } else { + if (project.initialLoadPending) { + (_b = (_a = this.configFileExistenceInfoCache.get(projectCanonicalPath)) == null ? void 0 : _a.openFilesImpactedByConfigFile) == null ? void 0 : _b.forEach((path2) => { + var _a2; + if (!((_a2 = this.pendingOpenFileProjectUpdates) == null ? void 0 : _a2.has(path2))) { + (this.pendingOpenFileProjectUpdates ?? (this.pendingOpenFileProjectUpdates = /* @__PURE__ */ new Map())).set( + path2, + this.configFileForOpenFiles.get(path2) + ); + } + }); + return; + } const path = this.toPath(canonicalConfigFilePath); project.resolutionCache.removeResolutionsFromProjectReferenceRedirects(path); this.delayUpdateProjectGraph(project); - if (this.getHostPreferences().includeCompletionsForModuleExports && find((_a = project.getCurrentProgram()) == null ? void 0 : _a.getResolvedProjectReferences(), (ref) => (ref == null ? void 0 : ref.sourceFile.path) === path)) { + if (this.getHostPreferences().includeCompletionsForModuleExports && find((_c = project.getCurrentProgram()) == null ? void 0 : _c.getResolvedProjectReferences(), (ref) => (ref == null ? void 0 : ref.sourceFile.path) === path)) { project.markAutoImportProviderAsDirty(); } } @@ -186715,7 +189007,6 @@ var _ProjectService = class _ProjectService { canonicalConfigFilePath, "Change in config file detected" ); - const updatedProjects = new Set(project ? [project] : void 0); this.openFiles.forEach((_projectRootPath, path) => { var _a, _b; const configFileForOpenFile = this.configFileForOpenFiles.get(path); @@ -186728,16 +189019,9 @@ var _ProjectService = class _ProjectService { false ); if (!newConfigFileNameForInfo) return; - const projectForInfo = this.findConfiguredProjectByProjectName(newConfigFileNameForInfo) ?? this.createConfiguredProject( - newConfigFileNameForInfo, - `Change in config file ${configFileName} detected, ${fileOpenReason(info)}` - ); if (!((_b = this.pendingOpenFileProjectUpdates) == null ? void 0 : _b.has(path))) { (this.pendingOpenFileProjectUpdates ?? (this.pendingOpenFileProjectUpdates = /* @__PURE__ */ new Map())).set(path, configFileForOpenFile); } - if (tryAddToSet(updatedProjects, projectForInfo) && projectForInfo.isInitialLoadPending()) { - this.delayUpdateProjectGraph(projectForInfo); - } }); this.delayEnsureProjectForOpenFiles(); } @@ -186909,7 +189193,7 @@ var _ProjectService = class _ProjectService { configFileExists(configFileName, canonicalConfigFilePath, info) { const configFileExistenceInfo = this.configFileExistenceInfoCache.get(canonicalConfigFilePath); let openFilesImpactedByConfigFile; - if (this.openFiles.has(info.path) && !isAncestorConfigFileInfo(info)) { + if (this.openFiles.has(info.path) && (!isAncestorConfigFileInfo(info) || info.isForDefaultProject)) { if (configFileExistenceInfo) (configFileExistenceInfo.openFilesImpactedByConfigFile ?? (configFileExistenceInfo.openFilesImpactedByConfigFile = /* @__PURE__ */ new Set())).add(info.path); else (openFilesImpactedByConfigFile = /* @__PURE__ */ new Set()).add(info.path); } @@ -186931,6 +189215,9 @@ var _ProjectService = class _ProjectService { forProject ); } + this.ensureConfigFileWatcherForProject(configFileExistenceInfo, forProject); + } + ensureConfigFileWatcherForProject(configFileExistenceInfo, forProject) { const projects = configFileExistenceInfo.config.projects; projects.set(forProject.canonicalConfigFilePath, projects.get(forProject.canonicalConfigFilePath) || false); } @@ -186945,7 +189232,7 @@ var _ProjectService = class _ProjectService { Debug.checkDefined(configFileExistenceInfo.watcher); if ((_c = configFileExistenceInfo.openFilesImpactedByConfigFile) == null ? void 0 : _c.size) { if (configFileExistenceInfo.inferredProjectRoots) { - if (!canWatchDirectoryOrFile(getPathComponents(getDirectoryPath(canonicalConfigFilePath)))) { + if (!canWatchDirectoryOrFilePath(getDirectoryPath(canonicalConfigFilePath))) { configFileExistenceInfo.watcher.close(); configFileExistenceInfo.watcher = noopConfigFileWatcher; } @@ -187008,7 +189295,7 @@ var _ProjectService = class _ProjectService { configFileExistenceInfo.inferredProjectRoots = (configFileExistenceInfo.inferredProjectRoots ?? 0) + 1; } (configFileExistenceInfo.openFilesImpactedByConfigFile ?? (configFileExistenceInfo.openFilesImpactedByConfigFile = /* @__PURE__ */ new Set())).add(info.path); - configFileExistenceInfo.watcher || (configFileExistenceInfo.watcher = canWatchDirectoryOrFile(getPathComponents(getDirectoryPath(canonicalConfigFilePath))) ? this.watchFactory.watchFile( + configFileExistenceInfo.watcher || (configFileExistenceInfo.watcher = canWatchDirectoryOrFilePath(getDirectoryPath(canonicalConfigFilePath)) ? this.watchFactory.watchFile( configFileName, (_filename, eventKind) => this.onConfigFileChanged(configFileName, canonicalConfigFilePath, eventKind), 2e3 /* High */, @@ -187036,34 +189323,48 @@ var _ProjectService = class _ProjectService { let searchPath = asNormalizedPath(getDirectoryPath(info.fileName)); const isSearchPathInProjectRoot = () => containsPath(projectRootPath, searchPath, this.currentDirectory, !this.host.useCaseSensitiveFileNames); const anySearchPathOk = !projectRootPath || !isSearchPathInProjectRoot(); - let searchInDirectory = !isAncestorConfigFileInfo(info); + let searchTsconfig = true; + let searchJsconfig = true; + if (isAncestorConfigFileInfo(info)) { + if (endsWith(info.fileName, "tsconfig.json")) searchTsconfig = false; + else searchTsconfig = searchJsconfig = false; + } do { - if (searchInDirectory) { - const canonicalSearchPath = normalizedPathToPath(searchPath, this.currentDirectory, this.toCanonicalFileName); + const canonicalSearchPath = normalizedPathToPath(searchPath, this.currentDirectory, this.toCanonicalFileName); + if (searchTsconfig) { const tsconfigFileName = asNormalizedPath(combinePaths(searchPath, "tsconfig.json")); - let result = action(combinePaths(canonicalSearchPath, "tsconfig.json"), tsconfigFileName); + const result = action(combinePaths(canonicalSearchPath, "tsconfig.json"), tsconfigFileName); if (result) return tsconfigFileName; + } + if (searchJsconfig) { const jsconfigFileName = asNormalizedPath(combinePaths(searchPath, "jsconfig.json")); - result = action(combinePaths(canonicalSearchPath, "jsconfig.json"), jsconfigFileName); + const result = action(combinePaths(canonicalSearchPath, "jsconfig.json"), jsconfigFileName); if (result) return jsconfigFileName; - if (isNodeModulesDirectory(canonicalSearchPath)) { - break; - } + } + if (isNodeModulesDirectory(canonicalSearchPath)) { + break; } const parentPath = asNormalizedPath(getDirectoryPath(searchPath)); if (parentPath === searchPath) break; searchPath = parentPath; - searchInDirectory = true; + searchTsconfig = searchJsconfig = true; } while (anySearchPathOk || isSearchPathInProjectRoot()); return void 0; } /** @internal */ findDefaultConfiguredProject(info) { var _a; - return info.isScriptOpen() ? (_a = this.tryFindDefaultConfiguredProjectForOpenScriptInfo( + return (_a = this.findDefaultConfiguredProjectWorker( info, - 0 /* Find */ - )) == null ? void 0 : _a.defaultProject : void 0; + 1 /* Find */ + )) == null ? void 0 : _a.defaultProject; + } + /** @internal */ + findDefaultConfiguredProjectWorker(info, kind) { + return info.isScriptOpen() ? this.tryFindDefaultConfiguredProjectForOpenScriptInfo( + info, + kind + ) : void 0; } /** Get cached configFileName for scriptInfo or ancestor of open script info */ getConfigFileNameForFileFromCache(info, lookInPendingFilesForValue) { @@ -187076,8 +189377,19 @@ var _ProjectService = class _ProjectService { /** Caches the configFilename for script info or ancestor of open script info */ setConfigFileNameForFileInCache(info, configFileName) { if (!this.openFiles.has(info.path)) return; - if (isAncestorConfigFileInfo(info)) return; - this.configFileForOpenFiles.set(info.path, configFileName || false); + const config = configFileName || false; + if (!isAncestorConfigFileInfo(info)) { + this.configFileForOpenFiles.set(info.path, config); + } else { + let configFileForOpenFile = this.configFileForOpenFiles.get(info.path); + if (!configFileForOpenFile || isString(configFileForOpenFile)) { + this.configFileForOpenFiles.set( + info.path, + configFileForOpenFile = (/* @__PURE__ */ new Map()).set(false, configFileForOpenFile) + ); + } + configFileForOpenFile.set(info.fileName, config); + } } /** * This function tries to search for a tsconfig.json for the given file. @@ -187157,7 +189469,6 @@ var _ProjectService = class _ProjectService { const project = new ExternalProject( projectFileName, this, - this.documentRegistry, compilerOptions, /*lastFileExceededProgramSize*/ this.getFilenameForExceededTotalSizeLimitForNonTsFiles(projectFileName, compilerOptions, files, externalFilePropertyReader), @@ -187228,7 +189539,6 @@ var _ProjectService = class _ProjectService { createConfiguredProject(configFileName, reason) { var _a; (_a = tracing) == null ? void 0 : _a.instant(tracing.Phase.Session, "createConfiguredProject", { configFilePath: configFileName }); - this.logger.info(`Creating configuration project ${configFileName}`); const canonicalConfigFilePath = asNormalizedPath(this.toCanonicalFileName(configFileName)); let configFileExistenceInfo = this.configFileExistenceInfoCache.get(canonicalConfigFilePath); if (!configFileExistenceInfo) { @@ -187247,7 +189557,6 @@ var _ProjectService = class _ProjectService { configFileName, canonicalConfigFilePath, this, - this.documentRegistry, configFileExistenceInfo.config.cachedDirectoryStructureHost, reason ); @@ -187263,7 +189572,7 @@ var _ProjectService = class _ProjectService { var _a, _b; (_a = tracing) == null ? void 0 : _a.push(tracing.Phase.Session, "loadConfiguredProject", { configFilePath: project.canonicalConfigFilePath }); this.sendProjectLoadingStartEvent(project, reason); - const configFilename = asNormalizedPath(normalizePath(project.getConfigFilePath())); + const configFilename = toNormalizedPath(project.getConfigFilePath()); const configFileExistenceInfo = this.ensureParsedConfigUptoDate( configFilename, project.canonicalConfigFilePath, @@ -187281,7 +189590,7 @@ var _ProjectService = class _ProjectService { configHasExcludeProperty: parsedCommandLine.raw.exclude !== void 0 }; } - project.canConfigFileJsonReportNoInputFiles = canJsonReportNoInputFiles(parsedCommandLine.raw); + project.parsedCommandLine = parsedCommandLine; project.setProjectErrors(parsedCommandLine.options.configFile.parseDiagnostics); project.updateReferences(parsedCommandLine.projectReferences); const lastFileExceededProgramSize = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(project.canonicalConfigFilePath, compilerOptions, parsedCommandLine.fileNames, fileNamePropertyReader); @@ -187303,12 +189612,19 @@ var _ProjectService = class _ProjectService { ensureParsedConfigUptoDate(configFilename, canonicalConfigFilePath, configFileExistenceInfo, forProject) { var _a, _b, _c; if (configFileExistenceInfo.config) { - if (!configFileExistenceInfo.config.updateLevel) return configFileExistenceInfo; if (configFileExistenceInfo.config.updateLevel === 1 /* RootNamesAndUpdate */) { this.reloadFileNamesOfParsedConfig(configFilename, configFileExistenceInfo.config); + } + if (!configFileExistenceInfo.config.updateLevel) { + this.ensureConfigFileWatcherForProject(configFileExistenceInfo, forProject); return configFileExistenceInfo; } } + if (!configFileExistenceInfo.exists && configFileExistenceInfo.config) { + configFileExistenceInfo.config.updateLevel = void 0; + this.ensureConfigFileWatcherForProject(configFileExistenceInfo, forProject); + return configFileExistenceInfo; + } const cachedDirectoryStructureHost = ((_a = configFileExistenceInfo.config) == null ? void 0 : _a.cachedDirectoryStructureHost) || createCachedDirectoryStructureHost(this.host, this.host.getCurrentDirectory(), this.host.useCaseSensitiveFileNames); const configFileContent = tryReadFile(configFilename, (fileName) => this.host.readFile(fileName)); const configFile = parseJsonText(configFilename, isString(configFileContent) ? configFileContent : ""); @@ -187503,14 +189819,18 @@ var _ProjectService = class _ProjectService { * @internal */ reloadFileNamesOfConfiguredProject(project) { - const fileNames = this.reloadFileNamesOfParsedConfig(project.getConfigFilePath(), this.configFileExistenceInfoCache.get(project.canonicalConfigFilePath).config); - project.updateErrorOnNoInputFiles(fileNames); - this.updateNonInferredProjectFiles(project, fileNames.concat(project.getExternalFiles(1 /* RootNamesAndUpdate */)), fileNamePropertyReader); + const config = this.reloadFileNamesOfParsedConfig(project.getConfigFilePath(), this.configFileExistenceInfoCache.get(project.canonicalConfigFilePath).config); + project.updateErrorOnNoInputFiles(config); + this.updateNonInferredProjectFiles( + project, + config.fileNames.concat(project.getExternalFiles(1 /* RootNamesAndUpdate */)), + fileNamePropertyReader + ); project.markAsDirty(); return project.updateGraph(); } reloadFileNamesOfParsedConfig(configFileName, config) { - if (config.updateLevel === void 0) return config.parsedCommandLine.fileNames; + if (config.updateLevel === void 0) return config.parsedCommandLine; Debug.assert(config.updateLevel === 1 /* RootNamesAndUpdate */); const configFileSpecs = config.parsedCommandLine.options.configFile.configFileSpecs; const fileNames = getFileNamesFromConfigSpecs( @@ -187521,30 +189841,42 @@ var _ProjectService = class _ProjectService { this.hostConfiguration.extraFileExtensions ); config.parsedCommandLine = { ...config.parsedCommandLine, fileNames }; - return fileNames; + config.updateLevel = void 0; + return config.parsedCommandLine; } /** @internal */ - setFileNamesOfAutpImportProviderOrAuxillaryProject(project, fileNames) { + setFileNamesOfAutoImportProviderOrAuxillaryProject(project, fileNames) { this.updateNonInferredProjectFiles(project, fileNames, fileNamePropertyReader); } /** @internal */ + reloadConfiguredProjectOptimized(project, reason, reloadedProjects) { + if (reloadedProjects.has(project)) return; + reloadedProjects.set(project, 6 /* ReloadOptimized */); + if (!project.initialLoadPending) { + this.setProjectForReload(project, 2 /* Full */, reason); + } + } + /** @internal */ reloadConfiguredProjectClearingSemanticCache(project, reason, reloadedProjects) { - if (!tryAddToSet(reloadedProjects, project)) return false; + if (reloadedProjects.get(project) === 7 /* Reload */) return false; + reloadedProjects.set(project, 7 /* Reload */); this.clearSemanticCache(project); this.reloadConfiguredProject(project, reloadReason(reason)); return true; } + setProjectForReload(project, updateLevel, reason) { + if (updateLevel === 2 /* Full */) this.clearSemanticCache(project); + project.pendingUpdateReason = reason && reloadReason(reason); + project.pendingUpdateLevel = updateLevel; + } /** * Read the config file of the project again by clearing the cache and update the project graph * * @internal */ reloadConfiguredProject(project, reason) { - project.isInitialLoadPending = returnFalse; - project.pendingUpdateReason = void 0; - project.pendingUpdateLevel = 0 /* Update */; - const host = project.getCachedDirectoryStructureHost(); - host.clearCache(); + project.initialLoadPending = false; + this.setProjectForReload(project, 0 /* Update */); this.loadConfiguredProject(project, reason); updateWithTriggerFile( project, @@ -187614,9 +189946,11 @@ var _ProjectService = class _ProjectService { return this.inferredProjects[0]; } return this.createInferredProject( - "", + this.currentDirectory, /*isSingleInferredProject*/ - true + true, + /*projectRootPath*/ + void 0 ); } getOrCreateSingleInferredWithoutProjectRoot(currentDirectory) { @@ -187627,7 +189961,13 @@ var _ProjectService = class _ProjectService { return inferredProject; } } - return this.createInferredProject(currentDirectory); + return this.createInferredProject( + currentDirectory, + /*isSingleInferredProject*/ + false, + /*projectRootPath*/ + void 0 + ); } createInferredProject(currentDirectory, isSingleInferredProject, projectRootPath) { const compilerOptions = projectRootPath && this.compilerOptionsForInferredProjectsPerProjectRoot.get(projectRootPath) || this.compilerOptionsForInferredProjects; @@ -187644,7 +189984,14 @@ var _ProjectService = class _ProjectService { typeAcquisition = this.typeAcquisitionForInferredProjects; } watchOptionsAndErrors = watchOptionsAndErrors || void 0; - const project = new InferredProject2(this, this.documentRegistry, compilerOptions, watchOptionsAndErrors == null ? void 0 : watchOptionsAndErrors.watchOptions, projectRootPath, currentDirectory, typeAcquisition); + const project = new InferredProject2( + this, + compilerOptions, + watchOptionsAndErrors == null ? void 0 : watchOptionsAndErrors.watchOptions, + projectRootPath, + currentDirectory, + typeAcquisition + ); project.setProjectErrors(watchOptionsAndErrors == null ? void 0 : watchOptionsAndErrors.errors); if (isSingleInferredProject) { this.inferredProjects.unshift(project); @@ -188175,25 +190522,23 @@ Dynamic files must always be opened with service's current directory or service this.pendingOpenFileProjectUpdates = void 0; this.pendingEnsureProjectForOpenFiles = false; this.configFileExistenceInfoCache.forEach((info) => { - if (info.config) info.config.updateLevel = 2 /* Full */; + if (info.config) { + info.config.updateLevel = 2 /* Full */; + info.config.cachedDirectoryStructureHost.clearCache(); + } }); this.configFileForOpenFiles.clear(); this.externalProjects.forEach((project) => { this.clearSemanticCache(project); project.updateGraph(); }); - const reloadedConfiguredProjects = /* @__PURE__ */ new Set(); + const reloadedConfiguredProjects = /* @__PURE__ */ new Map(); const delayReloadedConfiguredProjects = /* @__PURE__ */ new Set(); this.externalProjectToConfiguredProjectMap.forEach((projects, externalProjectName) => { const reason = `Reloading configured project in external project: ${externalProjectName}`; projects.forEach((project) => { if (this.getHostPreferences().lazyConfiguredProjectsFromExternalProject) { - if (!project.isInitialLoadPending()) { - this.clearSemanticCache(project); - project.pendingUpdateLevel = 2 /* Full */; - project.pendingUpdateReason = reloadReason(reason); - } - delayReloadedConfiguredProjects.add(project); + this.reloadConfiguredProjectOptimized(project, reason, reloadedConfiguredProjects); } else { this.reloadConfiguredProjectClearingSemanticCache( project, @@ -188208,12 +190553,12 @@ Dynamic files must always be opened with service's current directory or service if (find(info.containingProjects, isExternalProject)) return; this.tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo( info, - 2 /* Reload */, + 7 /* Reload */, reloadedConfiguredProjects, delayReloadedConfiguredProjects ); }); - delayReloadedConfiguredProjects.forEach((p) => reloadedConfiguredProjects.add(p)); + delayReloadedConfiguredProjects.forEach((p) => reloadedConfiguredProjects.set(p, 7 /* Reload */)); this.inferredProjects.forEach((project) => this.clearSemanticCache(project)); this.ensureProjectForOpenFiles(); this.cleanupProjectsAndScriptInfos( @@ -188255,7 +190600,7 @@ Dynamic files must always be opened with service's current directory or service pendingOpenFileProjectUpdates == null ? void 0 : pendingOpenFileProjectUpdates.forEach( (_config, path) => this.tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo( this.getScriptInfoForPath(path), - 1 /* Create */ + 5 /* Create */ ) ); this.openFiles.forEach((projectRootPath, path) => { @@ -188311,23 +190656,18 @@ Dynamic files must always be opened with service's current directory or service } configuredProject = this.createConfiguredProject(configFileName, `Creating project for original file: ${originalFileInfo.fileName}${location !== originalLocation ? " for location: " + location.fileName : ""}`); } - updateProjectIfDirty(configuredProject); - const projectContainsOriginalInfo = (project2) => { - const info = this.getScriptInfo(fileName); - return info && project2.containsScriptInfo(info) && !project2.isSourceOfProjectReferenceRedirect(info.path); - }; - if (configuredProject.isSolution() || !projectContainsOriginalInfo(configuredProject)) { - configuredProject = forEachResolvedProjectReferenceProject( + const result = this.tryFindDefaultConfiguredProjectForOpenScriptInfoOrClosedFileInfo( + originalFileInfo, + 5 /* Create */, + updateProjectFoundUsingFind( configuredProject, - fileName, - (child) => projectContainsOriginalInfo(child) ? child : void 0, - 1 /* Create */, - `Creating project referenced in solution ${configuredProject.projectName} to find possible configured project for original file: ${originalFileInfo.fileName}${location !== originalLocation ? " for location: " + location.fileName : ""}` - ); - if (!configuredProject) return void 0; - if (configuredProject === project) return originalLocation; - } - addOriginalConfiguredProject(configuredProject); + 4 /* CreateOptimized */ + ), + (project2) => `Creating project referenced in solution ${project2.projectName} to find possible configured project for original file: ${originalFileInfo.fileName}${location !== originalLocation ? " for location: " + location.fileName : ""}` + ); + if (!result.defaultProject) return void 0; + if (result.defaultProject === project) return originalLocation; + addOriginalConfiguredProject(result.defaultProject); const originalScriptInfo = this.getScriptInfo(fileName); if (!originalScriptInfo || !originalScriptInfo.containingProjects.length) return void 0; originalScriptInfo.containingProjects.forEach((project2) => { @@ -188376,7 +190716,7 @@ Dynamic files must always be opened with service's current directory or service if (!project && this.serverMode === 0 /* Semantic */) { const result = this.tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo( info, - 1 /* Create */ + 5 /* Create */ ); if (result) { retainProjects = result.seenProjects; @@ -188389,8 +190729,8 @@ Dynamic files must always be opened with service's current directory or service } info.containingProjects.forEach(updateProjectIfDirty); if (info.isOrphan()) { - retainProjects == null ? void 0 : retainProjects.forEach((project2) => { - if (!sentConfigDiag.has(project2)) this.sendConfigFileDiagEvent( + retainProjects == null ? void 0 : retainProjects.forEach((kind, project2) => { + if (kind !== 4 /* CreateOptimized */ && !sentConfigDiag.has(project2)) this.sendConfigFileDiagEvent( project2, info.fileName, /*force*/ @@ -188410,30 +190750,49 @@ Dynamic files must always be opened with service's current directory or service * - Reload - if the project doesnt exist, it creates one. If not delayLoad, the project is reloaded clearing semantic cache * @internal */ - findCreateOrReloadConfiguredProject(configFileName, kind, reason, allowDeferredClosed, triggerFile, reloadedProjects, delayLoad, delayReloadedConfiguredProjects) { - let project = this.findConfiguredProjectByProjectName(configFileName, allowDeferredClosed); + findCreateOrReloadConfiguredProject(configFileName, kind, reason, allowDeferredClosed, triggerFile, reloadedProjects, delayLoad, delayReloadedConfiguredProjects, projectForConfigFile) { + let project = projectForConfigFile ?? this.findConfiguredProjectByProjectName(configFileName, allowDeferredClosed); let sentConfigFileDiag = false; + let configFileExistenceInfo; switch (kind) { - case 0 /* Find */: + case 0 /* FindOptimized */: + case 1 /* Find */: + case 3 /* CreateReplay */: if (!project) return; break; - case 1 /* Create */: + case 2 /* CreateReplayOptimized */: + if (!project) return; + configFileExistenceInfo = configFileExistenceInfoForOptimizedReplay(project); + break; + case 4 /* CreateOptimized */: + case 5 /* Create */: project ?? (project = this.createConfiguredProject(configFileName, reason)); - sentConfigFileDiag = !delayLoad && updateConfiguredProject(project, triggerFile); + if (!delayLoad) { + ({ sentConfigFileDiag, configFileExistenceInfo } = updateProjectFoundUsingFind( + project, + kind, + triggerFile + )); + } break; - case 2 /* Reload */: + case 6 /* ReloadOptimized */: + project ?? (project = this.createConfiguredProject(configFileName, reloadReason(reason))); + project.projectService.reloadConfiguredProjectOptimized(project, reason, reloadedProjects); + configFileExistenceInfo = configFileExistenceInfoForOptimizedLoading(project); + if (configFileExistenceInfo) break; + // falls through + case 7 /* Reload */: project ?? (project = this.createConfiguredProject(configFileName, reloadReason(reason))); sentConfigFileDiag = !delayReloadedConfiguredProjects && this.reloadConfiguredProjectClearingSemanticCache(project, reason, reloadedProjects); if (delayReloadedConfiguredProjects && !delayReloadedConfiguredProjects.has(project) && !reloadedProjects.has(project)) { - project.pendingUpdateLevel = 2 /* Full */; - project.pendingUpdateReason = reloadReason(reason); + this.setProjectForReload(project, 2 /* Full */, reason); delayReloadedConfiguredProjects.add(project); } break; default: Debug.assertNever(kind); } - return { project, sentConfigFileDiag }; + return { project, sentConfigFileDiag, configFileExistenceInfo, reason }; } /** * Finds the default configured project for given info @@ -188441,54 +190800,167 @@ Dynamic files must always be opened with service's current directory or service * The search happens for all tsconfigs till projectRootPath */ tryFindDefaultConfiguredProjectForOpenScriptInfo(info, kind, allowDeferredClosed, reloadedProjects) { - const configFileName = this.getConfigFileNameForFile(info, kind === 0 /* Find */); + const configFileName = this.getConfigFileNameForFile(info, kind <= 3 /* CreateReplay */); if (!configFileName) return; + const optimizedKind = toConfiguredProjectLoadOptimized(kind); const result = this.findCreateOrReloadConfiguredProject( configFileName, - kind, + optimizedKind, fileOpenReason(info), allowDeferredClosed, info.fileName, reloadedProjects ); - if (!result) return; - const seenProjects = /* @__PURE__ */ new Set(); - const sentConfigDiag = new Set(result.sentConfigFileDiag ? [result.project] : void 0); + return result && this.tryFindDefaultConfiguredProjectForOpenScriptInfoOrClosedFileInfo( + info, + kind, + result, + (project) => `Creating project referenced in solution ${project.projectName} to find possible configured project for ${info.fileName} to open`, + allowDeferredClosed, + reloadedProjects + ); + } + isMatchedByConfig(configFileName, config, info) { + if (config.fileNames.some((rootName) => this.toPath(rootName) === info.path)) return true; + if (isSupportedSourceFileName( + info.fileName, + config.options, + this.hostConfiguration.extraFileExtensions + )) return false; + const { validatedFilesSpec, validatedIncludeSpecs, validatedExcludeSpecs } = config.options.configFile.configFileSpecs; + const basePath = toNormalizedPath(getNormalizedAbsolutePath(getDirectoryPath(configFileName), this.currentDirectory)); + if (validatedFilesSpec == null ? void 0 : validatedFilesSpec.some((fileSpec) => this.toPath(getNormalizedAbsolutePath(fileSpec, basePath)) === info.path)) return true; + if (!(validatedIncludeSpecs == null ? void 0 : validatedIncludeSpecs.length)) return false; + if (matchesExcludeWorker( + info.fileName, + validatedExcludeSpecs, + this.host.useCaseSensitiveFileNames, + this.currentDirectory, + basePath + )) return false; + return validatedIncludeSpecs == null ? void 0 : validatedIncludeSpecs.some((includeSpec) => { + const pattern = getPatternFromSpec(includeSpec, basePath, "files"); + return !!pattern && getRegexFromPattern(`(${pattern})$`, this.host.useCaseSensitiveFileNames).test(info.fileName); + }); + } + tryFindDefaultConfiguredProjectForOpenScriptInfoOrClosedFileInfo(info, kind, initialConfigResult, referencedProjectReason, allowDeferredClosed, reloadedProjects) { + const infoIsOpenScriptInfo = isOpenScriptInfo(info); + const optimizedKind = toConfiguredProjectLoadOptimized(kind); + const seenProjects = /* @__PURE__ */ new Map(); + let seenConfigs; + const sentConfigDiag = /* @__PURE__ */ new Set(); let defaultProject; let possiblyDefault; - tryFindDefaultConfiguredProject(result.project); + let tsconfigOfDefault; + let tsconfigOfPossiblyDefault; + tryFindDefaultConfiguredProject(initialConfigResult); return { defaultProject: defaultProject ?? possiblyDefault, + tsconfigProject: tsconfigOfDefault ?? tsconfigOfPossiblyDefault, sentConfigDiag, - seenProjects + seenProjects, + seenConfigs }; - function tryFindDefaultConfiguredProject(project) { - return isDefaultProject(project) ? defaultProject : tryFindDefaultConfiguredProjectFromReferences(project); - } - function isDefaultProject(project) { - if (!tryAddToSet(seenProjects, project)) return; - const projectWithInfo = project.containsScriptInfo(info); - if (projectWithInfo && !project.isSourceOfProjectReferenceRedirect(info.path)) return defaultProject = project; - possiblyDefault ?? (possiblyDefault = projectWithInfo ? project : void 0); + function tryFindDefaultConfiguredProject(result) { + return isDefaultProjectOptimized(result, result.project) ?? tryFindDefaultConfiguredProjectFromReferences(result.project) ?? tryFindDefaultConfiguredProjectFromAncestor(result.project); } - function tryFindDefaultConfiguredProjectFromReferences(project) { - return forEachResolvedProjectReferenceProject( + function isDefaultConfigFileExistenceInfo(configFileExistenceInfo, project, childConfigName, reason, tsconfigProject, canonicalConfigFilePath) { + if (project) { + if (seenProjects.has(project)) return; + seenProjects.set(project, optimizedKind); + } else { + if (seenConfigs == null ? void 0 : seenConfigs.has(canonicalConfigFilePath)) return; + (seenConfigs ?? (seenConfigs = /* @__PURE__ */ new Set())).add(canonicalConfigFilePath); + } + if (!tsconfigProject.projectService.isMatchedByConfig( + childConfigName, + configFileExistenceInfo.config.parsedCommandLine, + info + )) { + if (tsconfigProject.languageServiceEnabled) { + tsconfigProject.projectService.watchWildcards( + childConfigName, + configFileExistenceInfo, + tsconfigProject + ); + } + return; + } + const result = project ? updateProjectFoundUsingFind( project, - info.path, - (child, sentConfigFileDiag) => { - if (sentConfigFileDiag) sentConfigDiag.add(child); - return isDefaultProject(child); - }, kind, - `Creating project referenced in solution ${project.projectName} to find possible configured project for ${info.fileName} to open`, + info.fileName, + reason, + reloadedProjects + ) : tsconfigProject.projectService.findCreateOrReloadConfiguredProject( + childConfigName, + kind, + reason, allowDeferredClosed, info.fileName, reloadedProjects ); + if (!result) { + Debug.assert(kind === 3 /* CreateReplay */); + return void 0; + } + seenProjects.set(result.project, optimizedKind); + if (result.sentConfigFileDiag) sentConfigDiag.add(result.project); + return isDefaultProject(result.project, tsconfigProject); + } + function isDefaultProject(project, tsconfigProject) { + if (seenProjects.get(project) === kind) return; + seenProjects.set(project, kind); + const scriptInfo = infoIsOpenScriptInfo ? info : project.projectService.getScriptInfo(info.fileName); + const projectWithInfo = scriptInfo && project.containsScriptInfo(scriptInfo); + if (projectWithInfo && !project.isSourceOfProjectReferenceRedirect(scriptInfo.path)) { + tsconfigOfDefault = tsconfigProject; + return defaultProject = project; + } + if (!possiblyDefault && infoIsOpenScriptInfo && projectWithInfo) { + tsconfigOfPossiblyDefault = tsconfigProject; + possiblyDefault = project; + } + } + function isDefaultProjectOptimized(result, tsconfigProject) { + if (result.sentConfigFileDiag) sentConfigDiag.add(result.project); + return result.configFileExistenceInfo ? isDefaultConfigFileExistenceInfo( + result.configFileExistenceInfo, + result.project, + toNormalizedPath(result.project.getConfigFilePath()), + result.reason, + result.project, + result.project.canonicalConfigFilePath + ) : isDefaultProject(result.project, tsconfigProject); + } + function tryFindDefaultConfiguredProjectFromReferences(project) { + return project.parsedCommandLine && forEachResolvedProjectReferenceProjectLoad( + project, + project.parsedCommandLine, + isDefaultConfigFileExistenceInfo, + optimizedKind, + referencedProjectReason(project), + allowDeferredClosed, + reloadedProjects + ); + } + function tryFindDefaultConfiguredProjectFromAncestor(project) { + return infoIsOpenScriptInfo ? forEachAncestorProjectLoad( + // If not in referenced projects, try ancestors and its references + info, + project, + tryFindDefaultConfiguredProject, + optimizedKind, + `Creating possible configured project for ${info.fileName} to open`, + allowDeferredClosed, + reloadedProjects, + /*searchOnlyPotentialSolution*/ + false + ) : void 0; } } tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo(info, kind, reloadedProjects, delayReloadedConfiguredProjects) { - const allowDeferredClosed = kind === 0 /* Find */; + const allowDeferredClosed = kind === 1 /* Find */; const result = this.tryFindDefaultConfiguredProjectForOpenScriptInfo( info, kind, @@ -188496,18 +190968,20 @@ Dynamic files must always be opened with service's current directory or service reloadedProjects ); if (!result) return; - const { defaultProject, seenProjects } = result; + const { defaultProject, tsconfigProject, seenProjects } = result; if (defaultProject) { - forEachAncestorProject( + forEachAncestorProjectLoad( info, - defaultProject, + tsconfigProject, (ancestor) => { - seenProjects.add(ancestor); + seenProjects.set(ancestor.project, kind); }, kind, `Creating project possibly referencing default composite project ${defaultProject.getProjectName()} of open file ${info.fileName}`, allowDeferredClosed, reloadedProjects, + /*searchOnlyPotentialSolution*/ + true, delayReloadedConfiguredProjects ); } @@ -188516,7 +190990,7 @@ Dynamic files must always be opened with service's current directory or service /** @internal */ loadAncestorProjectTree(forProjects) { forProjects ?? (forProjects = new Set( - mapDefinedIterator(this.configuredProjects.entries(), ([key, project]) => !project.isInitialLoadPending() ? key : void 0) + mapDefinedIterator(this.configuredProjects.entries(), ([key, project]) => !project.initialLoadPending ? key : void 0) )); const seenProjects = /* @__PURE__ */ new Set(); const currentConfiguredProjects = arrayFrom(this.configuredProjects.values()); @@ -188622,7 +191096,8 @@ Dynamic files must always be opened with service's current directory or service ); } }; - toRetainConfiguredProjects == null ? void 0 : toRetainConfiguredProjects.forEach(retainConfiguredProject); + toRetainConfiguredProjects == null ? void 0 : toRetainConfiguredProjects.forEach((_, project) => retainConfiguredProject(project)); + if (!toRemoveConfiguredProjects.size) return toRemoveConfiguredProjects; this.inferredProjects.forEach(markOriginalProjectsAsUsed); this.externalProjects.forEach(markOriginalProjectsAsUsed); this.externalProjectToConfiguredProjectMap.forEach((projects, externalProjectName) => { @@ -188630,22 +191105,26 @@ Dynamic files must always be opened with service's current directory or service projects.forEach(retainConfiguredProject); } }); - this.openFiles.forEach((_projectRootPath, path) => { + if (!toRemoveConfiguredProjects.size) return toRemoveConfiguredProjects; + forEachEntry(this.openFiles, (_projectRootPath, path) => { if (openFilesWithRetainedConfiguredProject == null ? void 0 : openFilesWithRetainedConfiguredProject.has(path)) return; const info = this.getScriptInfoForPath(path); if (find(info.containingProjects, isExternalProject)) return; const result = this.tryFindDefaultConfiguredProjectAndLoadAncestorsForOpenScriptInfo( info, - 0 /* Find */ + 1 /* Find */ ); if (result == null ? void 0 : result.defaultProject) { - result == null ? void 0 : result.seenProjects.forEach(retainConfiguredProject); + result == null ? void 0 : result.seenProjects.forEach((_, project) => retainConfiguredProject(project)); + if (!toRemoveConfiguredProjects.size) return toRemoveConfiguredProjects; } }); - this.configuredProjects.forEach((project) => { + if (!toRemoveConfiguredProjects.size) return toRemoveConfiguredProjects; + forEachEntry(this.configuredProjects, (project) => { if (toRemoveConfiguredProjects.has(project)) { if (isPendingUpdate(project) || forEachReferencedProject(project, isRetained)) { retainConfiguredProject(project); + if (!toRemoveConfiguredProjects.size) return toRemoveConfiguredProjects; } } }); @@ -188667,7 +191146,7 @@ Dynamic files must always be opened with service's current directory or service const toRemoveScriptInfos = new Map(this.filenameToScriptInfo); this.filenameToScriptInfo.forEach((info) => { if (info.deferredDelete) return; - if (!info.isScriptOpen() && info.isOrphan() && !info.isContainedByBackgroundProject()) { + if (!info.isScriptOpen() && info.isOrphan() && !scriptInfoIsContainedByDeferredClosedProject(info) && !scriptInfoIsContainedByBackgroundProject(info)) { if (!info.sourceMapFilePath) return; let sourceInfos; if (isString(info.sourceMapFilePath)) { @@ -188785,10 +191264,14 @@ Dynamic files must always be opened with service's current directory or service existingOpenScriptInfos, (existing, index) => !existing && openScriptInfos[index] && !openScriptInfos[index].isDynamic ? this.tryInvokeWildCardDirectories(openScriptInfos[index]) : void 0 ); - openScriptInfos == null ? void 0 : openScriptInfos.forEach((info) => { - var _a; - return (_a = this.assignProjectToOpenedScriptInfo(info).retainProjects) == null ? void 0 : _a.forEach((p) => (retainProjects ?? (retainProjects = /* @__PURE__ */ new Set())).add(p)); - }); + openScriptInfos == null ? void 0 : openScriptInfos.forEach( + (info) => { + var _a; + return (_a = this.assignProjectToOpenedScriptInfo(info).retainProjects) == null ? void 0 : _a.forEach( + (kind, p) => (retainProjects ?? (retainProjects = /* @__PURE__ */ new Map())).set(p, kind) + ); + } + ); if (assignOrphanScriptInfosToInferredProject) { this.assignOrphanScriptInfosToInferredProject(); } @@ -189004,7 +191487,7 @@ Dynamic files must always be opened with service's current directory or service if (cleanupAfter) { this.cleanupConfiguredProjects( configuredProjects, - new Set(proj.projectFileName) + /* @__PURE__ */ new Set([proj.projectFileName]) ); this.printProjects(); } @@ -189142,9 +191625,11 @@ Dynamic files must always be opened with service's current directory or service const result = []; const processDirectory = (directory) => { switch (packageJsonCache.directoryHasPackageJson(directory)) { + // Sync and check same directory again case 3 /* Maybe */: - packageJsonCache.searchDirectoryAndAncestors(directory); + packageJsonCache.searchDirectoryAndAncestors(directory, project); return processDirectory(directory); + // Check package.json case -1 /* True */: const packageJsonFileName = combinePaths(directory, "package.json"); this.watchPackageJsonFile(packageJsonFileName, this.toPath(packageJsonFileName), project); @@ -189155,21 +191640,29 @@ Dynamic files must always be opened with service's current directory or service return true; } }; - forEachAncestorDirectory(getDirectoryPath(fileName), processDirectory); + forEachAncestorDirectoryStoppingAtGlobalCache( + project, + getDirectoryPath(fileName), + processDirectory + ); return result; } /** @internal */ - getNearestAncestorDirectoryWithPackageJson(fileName) { - return forEachAncestorDirectory(fileName, (directory) => { - switch (this.packageJsonCache.directoryHasPackageJson(directory)) { - case -1 /* True */: - return directory; - case 0 /* False */: - return void 0; - case 3 /* Maybe */: - return this.host.fileExists(combinePaths(directory, "package.json")) ? directory : void 0; + getNearestAncestorDirectoryWithPackageJson(fileName, project) { + return forEachAncestorDirectoryStoppingAtGlobalCache( + project, + fileName, + (directory) => { + switch (this.packageJsonCache.directoryHasPackageJson(directory)) { + case -1 /* True */: + return directory; + case 0 /* False */: + return void 0; + case 3 /* Maybe */: + return this.host.fileExists(combinePaths(directory, "package.json")) ? directory : void 0; + } } - }); + ); } watchPackageJsonFile(file, path, project) { Debug.assert(project !== void 0); @@ -189382,19 +191875,23 @@ function createPackageJsonCache(host) { return packageJsons.get(host.toPath(combinePaths(directory, "package.json"))) || void 0; }, directoryHasPackageJson: (directory) => directoryHasPackageJson(host.toPath(directory)), - searchDirectoryAndAncestors: (directory) => { - forEachAncestorDirectory(directory, (ancestor) => { - const ancestorPath = host.toPath(ancestor); - if (directoryHasPackageJson(ancestorPath) !== 3 /* Maybe */) { - return true; - } - const packageJsonFileName = combinePaths(ancestor, "package.json"); - if (tryFileExists(host, packageJsonFileName)) { - addOrUpdate(packageJsonFileName, combinePaths(ancestorPath, "package.json")); - } else { - directoriesWithoutPackageJson.set(ancestorPath, true); + searchDirectoryAndAncestors: (directory, project) => { + forEachAncestorDirectoryStoppingAtGlobalCache( + project, + directory, + (ancestor) => { + const ancestorPath = host.toPath(ancestor); + if (directoryHasPackageJson(ancestorPath) !== 3 /* Maybe */) { + return true; + } + const packageJsonFileName = combinePaths(ancestor, "package.json"); + if (tryFileExists(host, packageJsonFileName)) { + addOrUpdate(packageJsonFileName, combinePaths(ancestorPath, "package.json")); + } else { + directoriesWithoutPackageJson.set(ancestorPath, true); + } } - }); + ); } }; function addOrUpdate(fileName, path) { @@ -189615,8 +192112,13 @@ function getRenameLocationsWorker(projects, defaultProject, initialLocation, fin projects, defaultProject, initialLocation, - /*isForRename*/ - true, + getDefinitionLocation( + defaultProject, + initialLocation, + /*isForRename*/ + true + ), + mapDefinitionInProject, (project, position) => project.getLanguageService().findRenameLocations(position.fileName, position.pos, findInStrings, findInComments, preferences), (renameLocation, cb) => cb(documentSpanLocation(renameLocation)) ); @@ -189653,8 +192155,13 @@ function getReferencesWorker(projects, defaultProject, initialLocation, useCaseS projects, defaultProject, initialLocation, - /*isForRename*/ - false, + getDefinitionLocation( + defaultProject, + initialLocation, + /*isForRename*/ + false + ), + mapDefinitionInProject, (project, position) => { logger.info(`Finding references to ${position.fileName} position ${position.pos} in project ${project.getProjectName()}`); return project.getLanguageService().findReferences(position.fileName, position.pos); @@ -189749,7 +192256,7 @@ function forEachProjectInProjects(projects, path, cb) { }); } } -function getPerProjectReferences(projects, defaultProject, initialLocation, isForRename, getResultsForPosition, forPositionInResult) { +function getPerProjectReferences(projects, defaultProject, initialLocation, defaultDefinition, mapDefinitionInProject2, getResultsForPosition, forPositionInResult) { const resultsMap = /* @__PURE__ */ new Map(); const queue = createQueue(); queue.enqueue({ project: defaultProject, location: initialLocation }); @@ -189759,7 +192266,6 @@ function getPerProjectReferences(projects, defaultProject, initialLocation, isFo }); const projectService = defaultProject.projectService; const cancellationToken = defaultProject.getCancellationToken(); - const defaultDefinition = getDefinitionLocation(defaultProject, initialLocation, isForRename); const getGeneratedDefinition = memoize( () => defaultProject.isSourceOfProjectReferenceRedirect(defaultDefinition.fileName) ? defaultDefinition : defaultProject.getLanguageService().getSourceMapper().tryGetGeneratedPosition(defaultDefinition) ); @@ -189787,7 +192293,7 @@ function getPerProjectReferences(projects, defaultProject, initialLocation, isFo projectService.forEachEnabledProject((project) => { if (cancellationToken.isCancellationRequested()) return; if (resultsMap.has(project)) return; - const location = mapDefinitionInProject(defaultDefinition, project, getGeneratedDefinition, getSourceDefinition); + const location = mapDefinitionInProject2(defaultDefinition, project, getGeneratedDefinition, getSourceDefinition); if (location) { queue.enqueue({ project, location }); } @@ -189800,7 +192306,7 @@ function getPerProjectReferences(projects, defaultProject, initialLocation, isFo return resultsMap; function searchPosition(project, location) { const projectResults = getResultsForPosition(project, location); - if (!projectResults) return void 0; + if (!projectResults || !forPositionInResult) return projectResults; for (const result of projectResults) { forPositionInResult(result, (position) => { const originalLocation = projectService.getOriginalLocationEnsuringConfiguredProject(project, position); @@ -189826,10 +192332,14 @@ function getPerProjectReferences(projects, defaultProject, initialLocation, isFo return projectResults; } } -function mapDefinitionInProject(definition, project, getGeneratedDefinition, getSourceDefinition) { +function mapDefinitionInProjectIfFileInProject(definition, project) { if (project.containsFile(toNormalizedPath(definition.fileName)) && !isLocationProjectReferenceRedirect(project, definition)) { return definition; } +} +function mapDefinitionInProject(definition, project, getGeneratedDefinition, getSourceDefinition) { + const result = mapDefinitionInProjectIfFileInProject(definition, project); + if (result) return result; const generatedDefinition = getGeneratedDefinition(); if (generatedDefinition && project.containsFile(toNormalizedPath(generatedDefinition.fileName))) return generatedDefinition; const sourceDefinition = getSourceDefinition(); @@ -189889,7 +192399,8 @@ var invalidPartialSemanticModeCommands = [ "prepareCallHierarchy" /* PrepareCallHierarchy */, "provideCallHierarchyIncomingCalls" /* ProvideCallHierarchyIncomingCalls */, "provideCallHierarchyOutgoingCalls" /* ProvideCallHierarchyOutgoingCalls */, - "getPasteEdits" /* GetPasteEdits */ + "getPasteEdits" /* GetPasteEdits */, + "copilotRelated" /* CopilotRelated */ ]; var invalidSyntacticModeCommands = [ ...invalidPartialSemanticModeCommands, @@ -189917,7 +192428,8 @@ var invalidSyntacticModeCommands = [ "navto" /* Navto */, "navto-full" /* NavtoFull */, "documentHighlights" /* DocumentHighlights */, - "documentHighlights-full" /* DocumentHighlightsFull */ + "documentHighlights-full" /* DocumentHighlightsFull */, + "preparePasteEdits" /* PreparePasteEdits */ ]; var Session3 = class _Session { constructor(opts) { @@ -190441,6 +192953,9 @@ var Session3 = class _Session { ["getMoveToRefactoringFileSuggestions" /* GetMoveToRefactoringFileSuggestions */]: (request) => { return this.requiredResponse(this.getMoveToRefactoringFileSuggestions(request.arguments)); }, + ["preparePasteEdits" /* PreparePasteEdits */]: (request) => { + return this.requiredResponse(this.preparePasteEdits(request.arguments)); + }, ["getPasteEdits" /* GetPasteEdits */]: (request) => { return this.requiredResponse(this.getPasteEdits(request.arguments)); }, @@ -190567,6 +193082,9 @@ var Session3 = class _Session { }, ["mapCode" /* MapCode */]: (request) => { return this.requiredResponse(this.mapCode(request.arguments)); + }, + ["copilotRelated" /* CopilotRelated */]: () => { + return this.requiredResponse(this.getCopilotRelatedInfo()); } })); this.host = opts.host; @@ -191514,6 +194032,11 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter const changes = languageService.mapCode(file, args.mapping.contents, focusLocations, formatOptions, preferences); return this.mapTextChangesToCodeEdits(changes); } + getCopilotRelatedInfo() { + return { + relatedFiles: [] + }; + } setCompilerOptionsForInferredProjects(args) { this.projectService.setCompilerOptionsForInferredProjects(args.options, args.projectRootPath); } @@ -191522,11 +194045,12 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter args.file, args.projectFileName, args.needFileNameList, + args.needDefaultConfiguredProjectInfo, /*excludeConfigFiles*/ false ); } - getProjectInfoWorker(uncheckedFileName, projectFileName, needFileNameList, excludeConfigFiles) { + getProjectInfoWorker(uncheckedFileName, projectFileName, needFileNameList, needDefaultConfiguredProjectInfo, excludeConfigFiles) { const { project } = this.getFileAndProjectWorker(uncheckedFileName, projectFileName); updateProjectIfDirty(project); const projectInfo = { @@ -191536,10 +194060,38 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter /*excludeFilesFromExternalLibraries*/ false, excludeConfigFiles - ) : void 0 + ) : void 0, + configuredProjectInfo: needDefaultConfiguredProjectInfo ? this.getDefaultConfiguredProjectInfo(uncheckedFileName) : void 0 }; return projectInfo; } + getDefaultConfiguredProjectInfo(uncheckedFileName) { + var _a; + const info = this.projectService.getScriptInfo(uncheckedFileName); + if (!info) return; + const result = this.projectService.findDefaultConfiguredProjectWorker( + info, + 3 /* CreateReplay */ + ); + if (!result) return void 0; + let notMatchedByConfig; + let notInProject; + result.seenProjects.forEach((kind, project) => { + if (project !== result.defaultProject) { + if (kind !== 3 /* CreateReplay */) { + (notMatchedByConfig ?? (notMatchedByConfig = [])).push(toNormalizedPath(project.getConfigFilePath())); + } else { + (notInProject ?? (notInProject = [])).push(toNormalizedPath(project.getConfigFilePath())); + } + } + }); + (_a = result.seenConfigs) == null ? void 0 : _a.forEach((config) => (notMatchedByConfig ?? (notMatchedByConfig = [])).push(config)); + return { + notMatchedByConfig, + notInProject, + defaultProject: result.defaultProject && toNormalizedPath(result.defaultProject.getConfigFilePath()) + }; + } getRenameInfo(args) { const { file, project } = this.getFileAndProject(args); const position = this.getPositionInFile(args, file); @@ -191656,27 +194208,35 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter } getFileReferences(args, simplifiedResult) { const projects = this.getProjects(args); - const fileName = args.file; - const preferences = this.getPreferences(toNormalizedPath(fileName)); - const references = []; - const seen = createDocumentSpanSet(this.host.useCaseSensitiveFileNames); - forEachProjectInProjects( + const fileName = toNormalizedPath(args.file); + const preferences = this.getPreferences(fileName); + const initialLocation = { fileName, pos: 0 }; + const perProjectResults = getPerProjectReferences( projects, - /*path*/ - void 0, + this.getDefaultProject(args), + initialLocation, + initialLocation, + mapDefinitionInProjectIfFileInProject, (project) => { - if (project.getCancellationToken().isCancellationRequested()) return; - const projectOutputs = project.getLanguageService().getFileReferences(fileName); - if (projectOutputs) { - for (const referenceEntry of projectOutputs) { - if (!seen.has(referenceEntry)) { - references.push(referenceEntry); - seen.add(referenceEntry); - } - } - } + this.logger.info(`Finding references to file ${fileName} in project ${project.getProjectName()}`); + return project.getLanguageService().getFileReferences(fileName); } ); + let references; + if (isArray(perProjectResults)) { + references = perProjectResults; + } else { + references = []; + const seen = createDocumentSpanSet(this.host.useCaseSensitiveFileNames); + perProjectResults.forEach((projectOutputs) => { + for (const referenceEntry of projectOutputs) { + if (!seen.has(referenceEntry)) { + references.push(referenceEntry); + seen.add(referenceEntry); + } + } + }); + } if (!simplifiedResult) return references; const refs = references.map((entry) => referenceEntryToReferencesResponseItem(this.projectService, entry, preferences)); return { @@ -192268,8 +194828,13 @@ Project '${project.projectName}' (${ProjectKind[project.projectKind]}) ${counter const scriptInfo = project.getScriptInfoForNormalizedPath(file); return project.getLanguageService().getMoveToRefactoringFileSuggestions(file, this.extractPositionOrRange(args, scriptInfo), this.getPreferences(file)); } + preparePasteEdits(args) { + const { file, project } = this.getFileAndProject(args); + return project.getLanguageService().preparePasteEditsForFile(file, args.copiedTextSpan.map((copies) => this.getRange({ file, startLine: copies.start.line, startOffset: copies.start.offset, endLine: copies.end.line, endOffset: copies.end.offset }, this.projectService.getScriptInfoForNormalizedPath(file)))); + } getPasteEdits(args) { const { file, project } = this.getFileAndProject(args); + if (isDynamicFileName(file)) return void 0; const copiedFrom = args.copiedFrom ? { file: args.copiedFrom.file, range: args.copiedFrom.spans.map((copies) => this.getRange({ file: args.copiedFrom.file, startLine: copies.start.line, startOffset: copies.start.offset, endLine: copies.end.line, endOffset: copies.end.offset }, project.getScriptInfoForNormalizedPath(toNormalizedPath(args.copiedFrom.file)))) } : void 0; const result = project.getLanguageService().getPasteEdits( { @@ -192349,10 +194914,10 @@ ${e.message}`; } return simplifiedResult ? codeActions.map((codeAction) => this.mapCodeFixAction(codeAction)) : codeActions; } - getCombinedCodeFix({ scope, fixId: fixId55 }, simplifiedResult) { + getCombinedCodeFix({ scope, fixId: fixId56 }, simplifiedResult) { Debug.assert(scope.type === "file"); const { file, project } = this.getFileAndProject(scope.args); - const res = project.getLanguageService().getCombinedCodeFix({ type: "file", fileName: file }, fixId55, this.getFormatOptions(file), this.getPreferences(file)); + const res = project.getLanguageService().getCombinedCodeFix({ type: "file", fileName: file }, fixId56, this.getFormatOptions(file), this.getPreferences(file)); if (simplifiedResult) { return { changes: this.mapTextChangesToCodeEdits(res.changes), commands: res.commands }; } else { @@ -192391,11 +194956,11 @@ ${e.message}`; mapCodeAction({ description: description3, changes, commands }) { return { description: description3, changes: this.mapTextChangesToCodeEdits(changes), commands }; } - mapCodeFixAction({ fixName: fixName8, description: description3, changes, commands, fixId: fixId55, fixAllDescription }) { - return { fixName: fixName8, description: description3, changes: this.mapTextChangesToCodeEdits(changes), commands, fixId: fixId55, fixAllDescription }; + mapCodeFixAction({ fixName: fixName8, description: description3, changes, commands, fixId: fixId56, fixAllDescription }) { + return { fixName: fixName8, description: description3, changes: this.mapTextChangesToCodeEdits(changes), commands, fixId: fixId56, fixAllDescription }; } - mapPasteEditsAction({ edits, fixId: fixId55 }) { - return { edits: this.mapTextChangesToCodeEdits(edits), fixId: fixId55 }; + mapPasteEditsAction({ edits, fixId: fixId56 }) { + return { edits: this.mapTextChangesToCodeEdits(edits), fixId: fixId56 }; } mapTextChangesToCodeEdits(textChanges2) { return textChanges2.map((change) => this.mapTextChangeToCodeEdit(change)); @@ -192434,16 +194999,14 @@ ${e.message}`; void 0, /*needFileNameList*/ true, + /*needDefaultConfiguredProjectInfo*/ + void 0, /*excludeConfigFiles*/ true ); - if (languageServiceDisabled) { - return; - } + if (languageServiceDisabled) return; const fileNamesInProject = fileNames.filter((value) => !value.includes("lib.d.ts")); - if (fileNamesInProject.length === 0) { - return; - } + if (fileNamesInProject.length === 0) return; const highPriorityFiles = []; const mediumPriorityFiles = []; const lowPriorityFiles = []; @@ -193354,6 +195917,7 @@ var LineNode = class _LineNode { } } walk(rangeStart, rangeLength, walkFns) { + if (this.children.length === 0) return; let childIndex = 0; let childCharCount = this.children[childIndex].charCount(); let adjustedStart = rangeStart; @@ -193797,6 +196361,7 @@ __export(ts_server_exports4, { formatDiagnosticToProtocol: () => formatDiagnosticToProtocol, formatMessage: () => formatMessage2, getBaseConfigFileName: () => getBaseConfigFileName, + getDetailWatchInfo: () => getDetailWatchInfo, getLocationInNewDocument: () => getLocationInNewDocument, hasArgument: () => hasArgument, hasNoTypeScriptSource: () => hasNoTypeScriptSource, @@ -193819,6 +196384,8 @@ __export(ts_server_exports4, { nullCancellationToken: () => nullCancellationToken, nullTypingsInstaller: () => nullTypingsInstaller, protocol: () => ts_server_protocol_exports, + scriptInfoIsContainedByBackgroundProject: () => scriptInfoIsContainedByBackgroundProject, + scriptInfoIsContainedByDeferredClosedProject: () => scriptInfoIsContainedByDeferredClosedProject, stringifyIndented: () => stringifyIndented, toEvent: () => toEvent, toNormalizedPath: () => toNormalizedPath, @@ -193954,6 +196521,7 @@ if (typeof console !== "undefined") { PollingWatchKind, PragmaKindFlags, PredicateSemantics, + PreparePasteEdits, PrivateIdentifierKind, ProcessLevel, ProgramUpdateLevel, @@ -194049,7 +196617,6 @@ if (typeof console !== "undefined") { buildOverload, bundlerModuleNameResolver, canBeConvertedToAsync, - canEmitTsBuildInfo, canHaveDecorators, canHaveExportModifier, canHaveFlowNode, @@ -194069,6 +196636,7 @@ if (typeof console !== "undefined") { canWatchAffectingLocation, canWatchAtTypes, canWatchDirectoryOrFile, + canWatchDirectoryOrFilePath, cartesianProduct, cast, chainBundle, @@ -194339,6 +196907,7 @@ if (typeof console !== "undefined") { escapeTemplateSubstitution, evaluatorResult, every, + exclusivelyPrefixedNodeCoreModules, executeCommandLine, expandPreOrPostfixIncrementOrDecrementExpression, explainFiles, @@ -194351,7 +196920,6 @@ if (typeof console !== "undefined") { extensionsNotSupportingExtensionlessResolution, externalHelpersModuleNameText, factory, - fileContainsPackageImport, fileExtensionIs, fileExtensionIsOneOf, fileIncludeReasonToDiagnostics, @@ -194401,8 +196969,10 @@ if (typeof console !== "undefined") { forEach, forEachAncestor, forEachAncestorDirectory, + forEachAncestorDirectoryStoppingAtGlobalCache, forEachChild, forEachChildRecursively, + forEachDynamicImportOrRequireCall, forEachEmittedFile, forEachEnclosingBlockScopeContainer, forEachEntry, @@ -194443,6 +197013,7 @@ if (typeof console !== "undefined") { getAllKeys, getAllProjectOutputs, getAllSuperTypeNodes, + getAllowImportingTsExtensions, getAllowJSCompilerOption, getAllowSyntheticDefaultImports, getAncestor, @@ -194751,6 +197322,7 @@ if (typeof console !== "undefined") { getPositionOfLineAndCharacter, getPossibleGenericSignatures, getPossibleOriginalInputExtensionForExtension, + getPossibleOriginalInputPathWithoutChangingExt, getPossibleTypeArgumentsInfo, getPreEmitDiagnostics, getPrecedingNonSpaceCharacterPosition, @@ -195014,7 +197586,7 @@ if (typeof console !== "undefined") { isBooleanLiteral, isBreakOrContinueStatement, isBreakStatement, - isBuild, + isBuildCommand, isBuildInfoFile, isBuilderProgram, isBundle, @@ -195201,7 +197773,7 @@ if (typeof console !== "undefined") { isImportSpecifier, isImportTypeAssertionContainer, isImportTypeNode, - isImportableFile, + isImportable, isInComment, isInCompoundLikeAssignment, isInExpressionContext, @@ -195300,6 +197872,7 @@ if (typeof console !== "undefined") { isJsxAttributeLike, isJsxAttributeName, isJsxAttributes, + isJsxCallLike, isJsxChild, isJsxClosingElement, isJsxClosingFragment, @@ -195382,6 +197955,7 @@ if (typeof console !== "undefined") { isNamespaceReexportDeclaration, isNewExpression, isNewExpressionTarget, + isNewScopeNode, isNoSubstitutionTemplateLiteral, isNodeArray, isNodeArrayMultiLine, @@ -195430,6 +198004,7 @@ if (typeof console !== "undefined") { isParseTreeNode, isPartOfParameterDeclaration, isPartOfTypeNode, + isPartOfTypeOnlyImportOrExportDeclaration, isPartOfTypeQuery, isPartiallyEmittedExpression, isPatternMatch, @@ -195498,6 +198073,7 @@ if (typeof console !== "undefined") { isSimpleInlineableExpression, isSimpleParameterList, isSingleOrDoubleQuote, + isSolutionConfig, isSourceElement, isSourceFile, isSourceFileFromLibrary, @@ -195606,7 +198182,6 @@ if (typeof console !== "undefined") { isVariableDeclarationInitializedToRequire, isVariableDeclarationList, isVariableLike, - isVariableLikeOrAccessor, isVariableStatement, isVoidExpression, isWatchSet, @@ -195643,6 +198218,7 @@ if (typeof console !== "undefined") { matchPatternOrExact, matchedText, matchesExclude, + matchesExcludeWorker, maxBy, maybeBind, maybeSetLocalizedDiagnosticMessages, @@ -195682,6 +198258,7 @@ if (typeof console !== "undefined") { noTransformers, noTruncationMaximumTruncationLength, nodeCanBeDecorated, + nodeCoreModules, nodeHasName, nodeIsDecorated, nodeIsMissing, @@ -195826,6 +198403,7 @@ if (typeof console !== "undefined") { returnTrue, returnUndefined, returnsPromise, + rewriteModuleSpecifier, sameFlatMap, sameMap, sameMapping, @@ -195871,6 +198449,7 @@ if (typeof console !== "undefined") { setValueDeclaration, shouldAllowImportingTsExtension, shouldPreserveConstEnums, + shouldRewriteModuleSpecifier, shouldUseUriStyleNodeCoreModules, showModuleSpecifier, signatureHasRestParameter, @@ -195928,6 +198507,7 @@ if (typeof console !== "undefined") { tagNamesAreEquivalent, takeWhile, targetOptionDeclaration, + targetToLibMap, testFormatSettings, textChangeRangeIsUnchanged, textChangeRangeNewSpan, @@ -196021,6 +198601,7 @@ if (typeof console !== "undefined") { tryRemoveExtension, tryRemovePrefix, tryRemoveSuffix, + tscBuildOption, typeAcquisitionDeclarations, typeAliasNamePart, typeDirectiveIsEqualTo, @@ -196032,6 +198613,7 @@ if (typeof console !== "undefined") { unescapeLeadingUnderscores, unmangleScopedPackageName, unorderedRemoveItem, + unprefixedNodeCoreModules, unreachableCodeIsError, unsetNodeChildren, unusedLabelIsError, diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 19f71ed7985d..588cd237a53b 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -23,7 +23,7 @@ "rxjs": "~7.8.0", "tslib": "^2.3.0", "ts-node": "~10.9.0", - "typescript": "~5.6.2", + "typescript": "~5.7.2", "zone.js": "~0.15.0" } } diff --git a/tests/legacy-cli/e2e/assets/19-ssr-project-webpack/package.json b/tests/legacy-cli/e2e/assets/19-ssr-project-webpack/package.json index 30b1bba4e4f5..1de5ac2dda79 100644 --- a/tests/legacy-cli/e2e/assets/19-ssr-project-webpack/package.json +++ b/tests/legacy-cli/e2e/assets/19-ssr-project-webpack/package.json @@ -14,25 +14,25 @@ }, "private": true, "dependencies": { - "@angular/animations": "^19.0.0-next.0", - "@angular/common": "^19.0.0-next.0", - "@angular/compiler": "^19.0.0-next.0", - "@angular/core": "^19.0.0-next.0", - "@angular/forms": "^19.0.0-next.0", - "@angular/platform-browser": "^19.0.0-next.0", - "@angular/platform-browser-dynamic": "^19.0.0-next.0", - "@angular/platform-server": "^19.0.0-next.0", - "@angular/router": "^19.0.0-next.0", - "@angular/ssr": "^19.0.0-next.0", + "@angular/animations": "^19.1.0-next.0", + "@angular/common": "^19.1.0-next.0", + "@angular/compiler": "^19.1.0-next.0", + "@angular/core": "^19.1.0-next.0", + "@angular/forms": "^19.1.0-next.0", + "@angular/platform-browser": "^19.1.0-next.0", + "@angular/platform-browser-dynamic": "^19.1.0-next.0", + "@angular/platform-server": "^19.1.0-next.0", + "@angular/router": "^19.1.0-next.0", + "@angular/ssr": "^19.1.0-next.0", "express": "^4.18.2", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "^19.0.0-next.0", - "@angular/cli": "^19.0.0-next.0", - "@angular/compiler-cli": "^19.0.0-next.0", + "@angular-devkit/build-angular": "^19.1.0-next.0", + "@angular/cli": "^19.1.0-next.0", + "@angular/compiler-cli": "^19.1.0-next.0", "@types/express": "^4.17.17", "@types/jasmine": "~4.3.0", "@types/mime": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index faea553c74a1..d4af8e056baa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -777,7 +777,7 @@ __metadata: tree-kill: "npm:1.2.2" ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" - typescript: "npm:5.6.3" + typescript: "npm:5.7.2" undici: "npm:7.0.0" unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" @@ -3633,7 +3633,7 @@ __metadata: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" "@angular/compiler": "npm:19.1.0-next.0" "@angular/compiler-cli": "npm:19.1.0-next.0" - typescript: "npm:5.6.3" + typescript: "npm:5.7.2" webpack: "npm:5.96.1" peerDependencies: "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 @@ -18418,6 +18418,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:5.7.2": + version: 5.7.2 + resolution: "typescript@npm:5.7.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 + languageName: node + linkType: hard + "typescript@npm:~4.9.0": version: 4.9.5 resolution: "typescript@npm:4.9.5" @@ -18438,6 +18448,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@npm%3A5.7.2#optional!builtin": + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/c891ccf04008bc1305ba34053db951f8a4584b4a1bf2f68fd972c4a354df3dc5e62c8bfed4f6ac2d12e5b3b1c49af312c83a651048f818cd5b4949d17baacd79 + languageName: node + linkType: hard + "typescript@patch:typescript@npm%3A~4.9.0#optional!builtin": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" From ea2075ab1ab6c63febf82ad7296b2bfe16ec1070 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 2 Dec 2024 13:05:41 +0000 Subject: [PATCH 0055/2162] build: update dependency tar to v7 --- package.json | 3 +-- tests/legacy-cli/e2e/utils/BUILD.bazel | 1 - tests/legacy-cli/e2e/utils/tar.ts | 23 ++++++++++++----------- tests/legacy-cli/e2e_runner.ts | 11 +---------- yarn.lock | 24 +++--------------------- 5 files changed, 17 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index b8cfa26135cf..7b4f651f0e69 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,6 @@ "@types/resolve": "^1.17.1", "@types/semver": "^7.3.12", "@types/shelljs": "^0.8.11", - "@types/tar": "^6.1.2", "@types/watchpack": "^2.4.4", "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", @@ -197,7 +196,7 @@ "source-map-loader": "5.0.0", "source-map-support": "0.5.21", "symbol-observable": "4.0.0", - "tar": "^6.1.6", + "tar": "^7.0.0", "terser": "5.36.0", "tree-kill": "1.2.2", "ts-node": "^10.9.1", diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index d0bf18560217..a813bdcc2735 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -10,7 +10,6 @@ ts_library( visibility = ["//visibility:public"], deps = [ "@npm//@types/semver", - "@npm//@types/tar", "@npm//ansi-colors", "@npm//fast-glob", "@npm//npm", diff --git a/tests/legacy-cli/e2e/utils/tar.ts b/tests/legacy-cli/e2e/utils/tar.ts index 8bfe2aadbe79..77239c74eb0f 100644 --- a/tests/legacy-cli/e2e/utils/tar.ts +++ b/tests/legacy-cli/e2e/utils/tar.ts @@ -6,9 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import fs from 'fs'; -import { normalize } from 'path'; -import { Parse } from 'tar'; +import { createReadStream } from 'node:fs'; +import { normalize } from 'node:path'; +import { Parser } from 'tar'; /** * Extract and return the contents of a single file out of a tar file. @@ -17,20 +17,21 @@ import { Parse } from 'tar'; * @param filePath the path of the file to extract * @returns the Buffer of file or an error on fs/tar error or file not found */ -export async function extractFile(tarball: string, filePath: string): Promise { +export function extractFile(tarball: string, filePath: string): Promise { + const normalizedFilePath = normalize(filePath); + return new Promise((resolve, reject) => { - fs.createReadStream(tarball) + createReadStream(tarball) .pipe( - new Parse({ + new Parser({ strict: true, - filter: (p) => normalize(p) === normalize(filePath), - // TODO: @types/tar 'entry' does not have ReadEntry.on - onentry: (entry: any) => { + filter: (p) => normalize(p) === normalizedFilePath, + onReadEntry: (entry) => { const chunks: Buffer[] = []; - entry.on('data', (chunk: any) => chunks!.push(chunk)); + entry.on('data', (chunk) => chunks.push(chunk)); entry.on('error', reject); - entry.on('finish', () => resolve(Buffer.concat(chunks!))); + entry.on('finish', () => resolve(Buffer.concat(chunks))); }, }), ) diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index 507515219f6c..de9170f0878d 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -370,16 +370,7 @@ async function findPackageTars(): Promise<{ [pkg: string]: PkgInfo }> { ); const pkgJsons = await Promise.all( - pkgs - .map((pkg) => realpathSync(pkg)) - .map(async (pkg) => { - try { - return await extractFile(pkg, './package/package.json'); - } catch (e) { - // TODO(bazel): currently the bazel npm packaging does not contain the standard npm ./package directory - return await extractFile(pkg, './package.json'); - } - }), + pkgs.map((pkg) => realpathSync(pkg)).map((pkg) => extractFile(pkg, './package.json')), ); return pkgs.reduce( diff --git a/yarn.lock b/yarn.lock index d4af8e056baa..285877b5e98c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -686,7 +686,6 @@ __metadata: "@types/resolve": "npm:^1.17.1" "@types/semver": "npm:^7.3.12" "@types/shelljs": "npm:^0.8.11" - "@types/tar": "npm:^6.1.2" "@types/watchpack": "npm:^2.4.4" "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" @@ -772,7 +771,7 @@ __metadata: source-map-loader: "npm:5.0.0" source-map-support: "npm:0.5.21" symbol-observable: "npm:4.0.0" - tar: "npm:^6.1.6" + tar: "npm:^7.0.0" terser: "npm:5.36.0" tree-kill: "npm:1.2.2" ts-node: "npm:^10.9.1" @@ -5835,16 +5834,6 @@ __metadata: languageName: node linkType: hard -"@types/tar@npm:^6.1.2": - version: 6.1.13 - resolution: "@types/tar@npm:6.1.13" - dependencies: - "@types/node": "npm:*" - minipass: "npm:^4.0.0" - checksum: 10c0/98cc72d444fa622049e86e457a64d859c6effd7c7518d36e7b40b4ab1e7aa9e2412cc868cbef396650485dae07d50d98f662e8a53bb45f4a70eb6c61f80a63c7 - languageName: node - linkType: hard - "@types/tmp@npm:^0.2.1": version: 0.2.6 resolution: "@types/tmp@npm:0.2.6" @@ -13945,13 +13934,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^4.0.0": - version: 4.2.8 - resolution: "minipass@npm:4.2.8" - checksum: 10c0/4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce - languageName: node - linkType: hard - "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" @@ -17898,7 +17880,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.6, tar@npm:^6.2.1": +"tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -17912,7 +17894,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.4.3": +"tar@npm:^7.0.0, tar@npm:^7.4.3": version: 7.4.3 resolution: "tar@npm:7.4.3" dependencies: From e4448bb3d44ef310754cfc9360fc8710a4f7bb82 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 28 Nov 2024 13:50:02 +0000 Subject: [PATCH 0056/2162] fix(@angular/ssr): correctly handle serving of prerendered i18n pages Ensures proper handling of internationalized (i18n) pages during the serving of prerendered content. --- .../application/execute-post-bundle.ts | 3 + .../src/utils/server-rendering/manifest.ts | 6 +- .../src/utils/server-rendering/prerender.ts | 4 +- packages/angular/ssr/src/app.ts | 30 ++++++++- packages/angular/ssr/src/manifest.ts | 6 ++ packages/angular/ssr/test/app-engine_spec.ts | 63 +++++++++++++++---- packages/angular/ssr/test/assets_spec.ts | 1 + packages/angular/ssr/test/testing-utils.ts | 1 + ...outes-output-mode-server-i18n-base-href.ts | 19 +++--- 9 files changed, 107 insertions(+), 26 deletions(-) diff --git a/packages/angular/build/src/builders/application/execute-post-bundle.ts b/packages/angular/build/src/builders/application/execute-post-bundle.ts index 2f4f73c69b08..31b4a9d2e97c 100644 --- a/packages/angular/build/src/builders/application/execute-post-bundle.ts +++ b/packages/angular/build/src/builders/application/execute-post-bundle.ts @@ -63,6 +63,7 @@ export async function executePostBundleSteps( const { baseHref = '/', serviceWorker, + i18nOptions, indexHtmlOptions, optimizationOptions, sourcemapOptions, @@ -114,6 +115,7 @@ export async function executePostBundleSteps( optimizationOptions.styles.inlineCritical ?? false, undefined, locale, + baseHref, ); additionalOutputFiles.push( @@ -194,6 +196,7 @@ export async function executePostBundleSteps( optimizationOptions.styles.inlineCritical ?? false, serializableRouteTreeNodeForManifest, locale, + baseHref, ); for (const chunk of serverAssetsChunks) { diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index eb13be07e5d1..a757c79561f3 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -103,6 +103,8 @@ export default { * server-side rendering and routing. * @param locale - An optional string representing the locale or language code to be used for * the application, helping with localization and rendering content specific to the locale. + * @param baseHref - The base HREF for the application. This is used to set the base URL + * for all relative URLs in the application. * * @returns An object containing: * - `manifestContent`: A string of the SSR manifest content. @@ -114,6 +116,7 @@ export function generateAngularServerAppManifest( inlineCriticalCss: boolean, routes: readonly unknown[] | undefined, locale: string | undefined, + baseHref: string, ): { manifestContent: string; serverAssetsChunks: BuildOutputFile[]; @@ -142,9 +145,10 @@ export function generateAngularServerAppManifest( export default { bootstrap: () => import('./main.server.mjs').then(m => m.default), inlineCriticalCss: ${inlineCriticalCss}, + baseHref: '${baseHref}', + locale: ${locale !== undefined ? `'${locale}'` : undefined}, routes: ${JSON.stringify(routes, undefined, 2)}, assets: new Map([\n${serverAssetsContent.join(', \n')}\n]), - locale: ${locale !== undefined ? `'${locale}'` : undefined}, }; `; diff --git a/packages/angular/build/src/utils/server-rendering/prerender.ts b/packages/angular/build/src/utils/server-rendering/prerender.ts index 6bee2c6a43e9..2c539502382c 100644 --- a/packages/angular/build/src/utils/server-rendering/prerender.ts +++ b/packages/angular/build/src/utils/server-rendering/prerender.ts @@ -165,7 +165,6 @@ export async function prerenderPages( workspaceRoot, outputFilesForWorker, assetsReversed, - appShellOptions, outputMode, appShellRoute ?? appShellOptions?.route, ); @@ -188,7 +187,6 @@ async function renderPages( workspaceRoot: string, outputFilesForWorker: Record, assetFilesForWorker: Record, - appShellOptions: AppShellOptions | undefined, outputMode: OutputMode | undefined, appShellRoute: string | undefined, ): Promise<{ @@ -224,7 +222,7 @@ async function renderPages( for (const { route, redirectTo, renderMode } of serializableRouteTreeNode) { // Remove the base href from the file output path. const routeWithoutBaseHref = addTrailingSlash(route).startsWith(baseHrefWithLeadingSlash) - ? addLeadingSlash(route.slice(baseHrefWithLeadingSlash.length - 1)) + ? addLeadingSlash(route.slice(baseHrefWithLeadingSlash.length)) : route; const outPath = posix.join(removeLeadingSlash(routeWithoutBaseHref), 'index.html'); diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index cc8cbc0c7dba..e21392e9f8f0 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -214,8 +214,7 @@ export class AngularServerApp { return null; } - const { pathname } = stripIndexHtmlFromURL(new URL(request.url)); - const assetPath = stripLeadingSlash(joinUrlParts(pathname, 'index.html')); + const assetPath = this.buildServerAssetPathFromRequest(request); if (!this.assets.hasServerAsset(assetPath)) { return null; } @@ -355,6 +354,33 @@ export class AngularServerApp { return new Response(html, responseInit); } + + /** + * Constructs the asset path on the server based on the provided HTTP request. + * + * This method processes the incoming request URL to derive a path corresponding + * to the requested asset. It ensures the path points to the correct file (e.g., + * `index.html`) and removes any base href if it is not part of the asset path. + * + * @param request - The incoming HTTP request object. + * @returns The server-relative asset path derived from the request. + */ + private buildServerAssetPathFromRequest(request: Request): string { + let { pathname: assetPath } = new URL(request.url); + if (!assetPath.endsWith('/index.html')) { + // Append "index.html" to build the default asset path. + assetPath = joinUrlParts(assetPath, 'index.html'); + } + + const { baseHref } = this.manifest; + // Check if the asset path starts with the base href and the base href is not (`/` or ``). + if (baseHref.length > 1 && assetPath.startsWith(baseHref)) { + // Remove the base href from the start of the asset path to align with server-asset expectations. + assetPath = assetPath.slice(baseHref.length); + } + + return stripLeadingSlash(assetPath); + } } let angularServerApp: AngularServerApp | undefined; diff --git a/packages/angular/ssr/src/manifest.ts b/packages/angular/ssr/src/manifest.ts index 0331ac10b0bd..f18aa01af4ea 100644 --- a/packages/angular/ssr/src/manifest.ts +++ b/packages/angular/ssr/src/manifest.ts @@ -71,6 +71,12 @@ export interface AngularAppEngineManifest { * Manifest for a specific Angular server application, defining assets and bootstrap logic. */ export interface AngularAppManifest { + /** + * The base href for the application. + * This is used to determine the root path of the application. + */ + readonly baseHref: string; + /** * A map of assets required by the server application. * Each entry in the map consists of: diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index 33e9741f4c9c..fd37fb5b27ee 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -34,15 +34,44 @@ describe('AngularAppEngine', () => { async () => { @Component({ standalone: true, - selector: `app-home-${locale}`, - template: `Home works ${locale.toUpperCase()}`, + selector: `app-ssr-${locale}`, + template: `SSR works ${locale.toUpperCase()}`, }) - class HomeComponent {} + class SSRComponent {} + + @Component({ + standalone: true, + selector: `app-ssg-${locale}`, + template: `SSG works ${locale.toUpperCase()}`, + }) + class SSGComponent {} setAngularAppTestingManifest( - [{ path: 'home', component: HomeComponent }], - [{ path: '**', renderMode: RenderMode.Server }], + [ + { path: 'ssg', component: SSGComponent }, + { path: 'ssr', component: SSRComponent }, + ], + [ + { path: 'ssg', renderMode: RenderMode.Prerender }, + { path: '**', renderMode: RenderMode.Server }, + ], '/' + locale, + { + 'ssg/index.html': { + size: 25, + hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', + text: async () => ` + + SSG page + + + + SSG works ${locale.toUpperCase()} + + + `, + }, + }, ); return { @@ -58,7 +87,7 @@ describe('AngularAppEngine', () => { appEngine = new AngularAppEngine(); }); - describe('render', () => { + describe('handle', () => { it('should return null for requests to unknown pages', async () => { const request = new Request('https://example.com/unknown/page'); const response = await appEngine.handle(request); @@ -66,21 +95,33 @@ describe('AngularAppEngine', () => { }); it('should return null for requests with unknown locales', async () => { - const request = new Request('https://example.com/es/home'); + const request = new Request('https://example.com/es/ssr'); const response = await appEngine.handle(request); expect(response).toBeNull(); }); it('should return a rendered page with correct locale', async () => { - const request = new Request('https://example.com/it/home'); + const request = new Request('https://example.com/it/ssr'); const response = await appEngine.handle(request); - expect(await response?.text()).toContain('Home works IT'); + expect(await response?.text()).toContain('SSR works IT'); }); it('should correctly render the content when the URL ends with "index.html" with correct locale', async () => { - const request = new Request('https://example.com/it/home/index.html'); + const request = new Request('https://example.com/it/ssr/index.html'); + const response = await appEngine.handle(request); + expect(await response?.text()).toContain('SSR works IT'); + }); + + it('should return a serve prerendered page with correct locale', async () => { + const request = new Request('https://example.com/it/ssg'); + const response = await appEngine.handle(request); + expect(await response?.text()).toContain('SSG works IT'); + }); + + it('should correctly serve the prerendered content when the URL ends with "index.html" with correct locale', async () => { + const request = new Request('https://example.com/it/ssg/index.html'); const response = await appEngine.handle(request); - expect(await response?.text()).toContain('Home works IT'); + expect(await response?.text()).toContain('SSG works IT'); }); it('should return null for requests to unknown pages in a locale', async () => { diff --git a/packages/angular/ssr/test/assets_spec.ts b/packages/angular/ssr/test/assets_spec.ts index 211ac128098a..fa794f4d9317 100644 --- a/packages/angular/ssr/test/assets_spec.ts +++ b/packages/angular/ssr/test/assets_spec.ts @@ -13,6 +13,7 @@ describe('ServerAsset', () => { beforeAll(() => { assetManager = new ServerAssets({ + baseHref: '/', bootstrap: undefined as never, assets: new Map( Object.entries({ diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index 99971ab894ef..9c48479fe038 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -31,6 +31,7 @@ export function setAngularAppTestingManifest( ): void { setAngularAppManifest({ inlineCriticalCss: false, + baseHref, assets: new Map( Object.entries({ ...additionalServerAssets, 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 9e10b99b0747..c9bcc6ee5a09 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 @@ -87,17 +87,18 @@ export default async function () { // Tests responses const port = await spawnServer(); - const pathname = '/ssr'; - + const pathnamesToVerify = ['/ssr', '/ssg']; for (const { lang } of langTranslations) { - const res = await fetch(`http://localhost:${port}/base/${lang}${pathname}`); - const text = await res.text(); + for (const pathname of pathnamesToVerify) { + const res = await fetch(`http://localhost:${port}/base/${lang}${pathname}`); + const text = await res.text(); - assert.match( - text, - new RegExp(`

${lang}

`), - `Response for '${lang}${pathname}': '

${lang}

' was not matched in content.`, - ); + assert.match( + text, + new RegExp(`

${lang}

`), + `Response for '${lang}${pathname}': '

${lang}

' was not matched in content.`, + ); + } } } From 5bd937b86e96f715e19cdf3517691ba2dfd133c8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 2 Dec 2024 18:34:05 -0500 Subject: [PATCH 0057/2162] fix(@angular/build): apply define option to JavaScript from scripts option The `define` option will now apply to JavaScript that is included in the output via the `scripts` option. This allows the replacement of identifiers within any included scripts in addition to the already supported replacement within application code. --- .../application/tests/options/define_spec.ts | 17 +++++++++++++++++ .../build/src/tools/esbuild/global-scripts.ts | 2 ++ 2 files changed, 19 insertions(+) diff --git a/packages/angular/build/src/builders/application/tests/options/define_spec.ts b/packages/angular/build/src/builders/application/tests/options/define_spec.ts index d4e3319553f2..ec8ccf2e6f24 100644 --- a/packages/angular/build/src/builders/application/tests/options/define_spec.ts +++ b/packages/angular/build/src/builders/application/tests/options/define_spec.ts @@ -61,5 +61,22 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/main.js').content.not.toContain('A_BOOLEAN'); harness.expectFile('dist/browser/main.js').content.toContain('(true)'); }); + + it('should replace a value in script code', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + define: { + 'A_BOOLEAN': 'true', + }, + scripts: ['./src/script.js'], + }); + + await harness.writeFile('src/script.js', 'console.log(A_BOOLEAN);'); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBe(true); + harness.expectFile('dist/browser/scripts.js').content.not.toContain('A_BOOLEAN'); + harness.expectFile('dist/browser/scripts.js').content.toContain('(true)'); + }); }); }); diff --git a/packages/angular/build/src/tools/esbuild/global-scripts.ts b/packages/angular/build/src/tools/esbuild/global-scripts.ts index e69812d2fd30..1fb11a98a8eb 100644 --- a/packages/angular/build/src/tools/esbuild/global-scripts.ts +++ b/packages/angular/build/src/tools/esbuild/global-scripts.ts @@ -36,6 +36,7 @@ export function createGlobalScriptsBundleOptions( sourcemapOptions, jsonLogs, workspaceRoot, + define, } = options; const namespace = 'angular:script/global'; @@ -73,6 +74,7 @@ export function createGlobalScriptsBundleOptions( platform: 'neutral', target, preserveSymlinks, + define, plugins: [ createSourcemapIgnorelistPlugin(), createVirtualModulePlugin({ From d095498622f3b6126389a10d0055d96c86e6558e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 3 Dec 2024 07:11:14 +0000 Subject: [PATCH 0058/2162] build: update schematics dependencies to ~5.5.0 --- .../angular_devkit/schematics_cli/schematic/files/package.json | 2 +- .../schematics/angular/utility/latest-versions/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/schematic/files/package.json b/packages/angular_devkit/schematics_cli/schematic/files/package.json index f28d62cb0ff2..b3c486274bdf 100644 --- a/packages/angular_devkit/schematics_cli/schematic/files/package.json +++ b/packages/angular_devkit/schematics_cli/schematic/files/package.json @@ -20,6 +20,6 @@ "devDependencies": { "@types/node": "^18.18.0", "@types/jasmine": "~5.1.0", - "jasmine": "~5.4.0" + "jasmine": "~5.5.0" } } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 588cd237a53b..a75aa42c3d6c 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -9,7 +9,7 @@ "@types/node": "^18.18.0", "browser-sync": "^3.0.0", "express": "^4.18.2", - "jasmine-core": "~5.4.0", + "jasmine-core": "~5.5.0", "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", From c9a80490214e860b86a6f13b86e6723b8cbf15c0 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 2 Dec 2024 17:55:06 +0000 Subject: [PATCH 0059/2162] ci: run workflows for all releasable branches --- .github/workflows/perf.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 3b38ec2c9423..db395ebdfb31 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -4,6 +4,8 @@ on: push: branches: - main + # Run workflows for all releasable branches + - '[0-9]+.[0-9]+.x' permissions: contents: 'read' From d6759551148491c37c00a02ba89b140d8837e0bf Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 2 Dec 2024 18:18:03 +0000 Subject: [PATCH 0060/2162] ci: disable the `angular-build-integration` perf workflow test --- .ng-dev/dx-perf-workflows.yml | 1 + package.json | 2 +- yarn.lock | 10 +++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.ng-dev/dx-perf-workflows.yml b/.ng-dev/dx-perf-workflows.yml index 71a9e7498ca7..857a7b0526be 100644 --- a/.ng-dev/dx-perf-workflows.yml +++ b/.ng-dev/dx-perf-workflows.yml @@ -7,6 +7,7 @@ workflows: - bazel build //packages/angular/cli:npm_package angular-build-integration: name: Angular Build Integration + disabled: true prepare: - bazel clean workflow: diff --git a/package.json b/package.json index 7b4f651f0e69..7b18121d44fc 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "@angular/forms": "^19.1.0-next.0", "@angular/localize": "^19.1.0-next.0", "@angular/material": "19.0.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#dde9fb807550b7634613f88bb224702155f58e07", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127", "@angular/platform-browser": "^19.1.0-next.0", "@angular/platform-browser-dynamic": "^19.1.0-next.0", "@angular/platform-server": "^19.1.0-next.0", diff --git a/yarn.lock b/yarn.lock index 285877b5e98c..5ee9f47954de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -638,7 +638,7 @@ __metadata: "@angular/forms": "npm:^19.1.0-next.0" "@angular/localize": "npm:^19.1.0-next.0" "@angular/material": "npm:19.0.1" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#dde9fb807550b7634613f88bb224702155f58e07" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127" "@angular/platform-browser": "npm:^19.1.0-next.0" "@angular/platform-browser-dynamic": "npm:^19.1.0-next.0" "@angular/platform-server": "npm:^19.1.0-next.0" @@ -849,9 +849,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#dde9fb807550b7634613f88bb224702155f58e07": - version: 0.0.0-9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=dde9fb807550b7634613f88bb224702155f58e07" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127": + version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=579163373d32ec04ef9dab6c21e34bfc6d40b127" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -866,7 +866,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/cd492e9d57478f61f5dc8469f12f388da5b05a2b3233bb299766d3ece828df1ca035b9b8f428d859861035f8df40251a78fbc4351dd433e8bf81170db3ed6290 + checksum: 10c0/8da786b9bec7d495784ae668d68febec29762ea72d914a8041e530295c4cacfc08264a5a9813b169ced9726c35c45bf021acc3e215159494b7eca385b16ac0f3 languageName: node linkType: hard From d96b096704877918ac36df292a1a4a185f16ba27 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 3 Dec 2024 06:19:16 +0000 Subject: [PATCH 0061/2162] build: update all non-major dependencies --- package.json | 8 +- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- yarn.lock | 138 ++++++++++-------- 4 files changed, 87 insertions(+), 63 deletions(-) diff --git a/package.json b/package.json index 7b18121d44fc..8f4f9b76a521 100644 --- a/package.json +++ b/package.json @@ -115,8 +115,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.16.0", - "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/eslint-plugin": "8.17.0", + "@typescript-eslint/parser": "8.17.0", "@vitejs/plugin-basic-ssl": "1.2.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", @@ -148,7 +148,7 @@ "ini": "5.0.0", "istanbul-lib-instrument": "6.0.3", "jasmine": "^5.0.0", - "jasmine-core": "~5.4.0", + "jasmine-core": "~5.5.0", "jasmine-spec-reporter": "~7.0.0", "jsonc-parser": "3.3.1", "karma": "~6.4.0", @@ -188,7 +188,7 @@ "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", - "sass": "1.81.0", + "sass": "1.81.1", "sass-loader": "16.0.3", "semver": "7.6.3", "shelljs": "^0.8.5", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index c70c650ae9eb..df23b7c63527 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -39,7 +39,7 @@ "picomatch": "4.0.2", "piscina": "4.7.0", "rollup": "4.28.0", - "sass": "1.81.0", + "sass": "1.81.1", "semver": "7.6.3", "vite": "6.0.2", "watchpack": "2.4.2" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index dc1f47c4fbaf..9df89e205a38 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.1", - "sass": "1.81.0", + "sass": "1.81.1", "sass-loader": "16.0.3", "semver": "7.6.3", "source-map-loader": "5.0.0", diff --git a/yarn.lock b/yarn.lock index 5ee9f47954de..fc706b5a15c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,7 +102,7 @@ __metadata: postcss-loader: "npm:8.1.1" resolve-url-loader: "npm:5.0.0" rxjs: "npm:7.8.1" - sass: "npm:1.81.0" + sass: "npm:1.81.1" sass-loader: "npm:16.0.3" semver: "npm:7.6.3" source-map-loader: "npm:5.0.0" @@ -393,7 +393,7 @@ __metadata: picomatch: "npm:4.0.2" piscina: "npm:4.7.0" rollup: "npm:4.28.0" - sass: "npm:1.81.0" + sass: "npm:1.81.1" semver: "npm:7.6.3" vite: "npm:6.0.2" watchpack: "npm:2.4.2" @@ -690,8 +690,8 @@ __metadata: "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" "@types/yarnpkg__lockfile": "npm:^1.1.5" - "@typescript-eslint/eslint-plugin": "npm:8.16.0" - "@typescript-eslint/parser": "npm:8.16.0" + "@typescript-eslint/eslint-plugin": "npm:8.17.0" + "@typescript-eslint/parser": "npm:8.17.0" "@vitejs/plugin-basic-ssl": "npm:1.2.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" @@ -723,7 +723,7 @@ __metadata: ini: "npm:5.0.0" istanbul-lib-instrument: "npm:6.0.3" jasmine: "npm:^5.0.0" - jasmine-core: "npm:~5.4.0" + jasmine-core: "npm:~5.5.0" jasmine-spec-reporter: "npm:~7.0.0" jsonc-parser: "npm:3.3.1" karma: "npm:~6.4.0" @@ -763,7 +763,7 @@ __metadata: rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" - sass: "npm:1.81.0" + sass: "npm:1.81.1" sass-loader: "npm:16.0.3" semver: "npm:7.6.3" shelljs: "npm:^0.8.5" @@ -5942,15 +5942,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.16.0" +"@typescript-eslint/eslint-plugin@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.17.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.16.0" - "@typescript-eslint/type-utils": "npm:8.16.0" - "@typescript-eslint/utils": "npm:8.16.0" - "@typescript-eslint/visitor-keys": "npm:8.16.0" + "@typescript-eslint/scope-manager": "npm:8.17.0" + "@typescript-eslint/type-utils": "npm:8.17.0" + "@typescript-eslint/utils": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5961,25 +5961,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/b03612b726ee5aff631cd50e05ceeb06a522e64465e4efdc134e3a27a09406b959ef7a05ec4acef1956b3674dc4fedb6d3a62ce69382f9e30c227bd4093003e5 + checksum: 10c0/d78778173571a9a1370345bc2aa3e850235a489d16b8a8b5ba3086b988bbef7549bdae38e509d7a679ba3179c688cc5a408376b158be402770836e94ffc9602d languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/parser@npm:8.16.0" +"@typescript-eslint/parser@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/parser@npm:8.17.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.16.0" - "@typescript-eslint/types": "npm:8.16.0" - "@typescript-eslint/typescript-estree": "npm:8.16.0" - "@typescript-eslint/visitor-keys": "npm:8.16.0" + "@typescript-eslint/scope-manager": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/typescript-estree": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/e49c6640a7a863a16baecfbc5b99392a4731e9c7e9c9aaae4efbc354e305485fe0f39a28bf0acfae85bc01ce37fe0cc140fd315fdaca8b18f9b5e0addff8ceae + checksum: 10c0/2543deadf01302a92d3b6f58a4c14f98d8936c4d976e7da05e3bb65608f19d8de93b25282e343c304eca3e3f37f2ac23e97fa9c11c6edff36dd2d4f6b601a630 languageName: node linkType: hard @@ -5993,22 +5993,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/scope-manager@npm:8.16.0" +"@typescript-eslint/scope-manager@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/scope-manager@npm:8.17.0" dependencies: - "@typescript-eslint/types": "npm:8.16.0" - "@typescript-eslint/visitor-keys": "npm:8.16.0" - checksum: 10c0/23b7c738b83f381c6419a36e6ca951944187e3e00abb8e012bce8041880410fe498303e28bdeb0e619023a69b14cf32a5ec1f9427c5382807788cd8e52a46a6e + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" + checksum: 10c0/0c08d14240bad4b3f6874f08ba80b29db1a6657437089a6f109db458c544d835bcdc06ba9140bb4f835233ba4326d9a86e6cf6bdb5209960d2f7025aa3191f4f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/type-utils@npm:8.16.0" +"@typescript-eslint/type-utils@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/type-utils@npm:8.17.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.16.0" - "@typescript-eslint/utils": "npm:8.16.0" + "@typescript-eslint/typescript-estree": "npm:8.17.0" + "@typescript-eslint/utils": "npm:8.17.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: @@ -6016,7 +6016,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/24c0e815c8bdf99bf488c7528bd6a7c790e8b3b674cb7fb075663afc2ee26b48e6f4cf7c0d14bb21e2376ca62bd8525cbcb5688f36135b00b62b1d353d7235b9 + checksum: 10c0/6138ec71b5692d4b5e0bf3d7f66a6fa4e91ddea7031907b0ac45a7693df0a2f4cc5bca7218311e0639620d636ceb7efec83a137dfcd5938304d873b774fcc8bd languageName: node linkType: hard @@ -6027,10 +6027,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/types@npm:8.16.0" - checksum: 10c0/141e257ab4060a9c0e2e14334ca14ab6be713659bfa38acd13be70a699fb5f36932a2584376b063063ab3d723b24bc703dbfb1ce57d61d7cfd7ec5bd8a975129 +"@typescript-eslint/types@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/types@npm:8.17.0" + checksum: 10c0/26b1bf9dfc3ee783c85c6f354b84c28706d5689d777f3ff2de2cb496e45f9d0189c0d561c03ccbc8b24712438be17cf63dd0871ff3ca2083e7f48749770d1893 languageName: node linkType: hard @@ -6053,12 +6053,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.16.0" +"@typescript-eslint/typescript-estree@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.17.0" dependencies: - "@typescript-eslint/types": "npm:8.16.0" - "@typescript-eslint/visitor-keys": "npm:8.16.0" + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/visitor-keys": "npm:8.17.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -6068,24 +6068,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/f28fea5af4798a718b6735d1758b791a331af17386b83cb2856d89934a5d1693f7cb805e73c3b33f29140884ac8ead9931b1d7c3de10176fa18ca7a346fe10d0 + checksum: 10c0/523013f9b5cf2c58c566868e4c3b0b9ac1b4807223a6d64e2a7c58e01e53b6587ba61f1a8241eade361f3f426d6057657515473176141ef8aebb352bc0d223ce languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/utils@npm:8.16.0" +"@typescript-eslint/utils@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/utils@npm:8.17.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.16.0" - "@typescript-eslint/types": "npm:8.16.0" - "@typescript-eslint/typescript-estree": "npm:8.16.0" + "@typescript-eslint/scope-manager": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.17.0" + "@typescript-eslint/typescript-estree": "npm:8.17.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/1e61187eef3da1ab1486d2a977d8f3b1cb8ef7fa26338500a17eb875ca42a8942ef3f2241f509eef74cf7b5620c109483afc7d83d5b0ab79b1e15920f5a49818 + checksum: 10c0/a9785ae5f7e7b51d521dc3f48b15093948e4fcd03352c0b60f39bae366cbc935947d215f91e2ae3182d52fa6affb5ccbb50feff487bd1209011f3e0da02cdf07 languageName: node linkType: hard @@ -6116,13 +6116,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.16.0" +"@typescript-eslint/visitor-keys@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.17.0" dependencies: - "@typescript-eslint/types": "npm:8.16.0" + "@typescript-eslint/types": "npm:8.17.0" eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/537df37801831aa8d91082b2adbffafd40305ed4518f0e7d3cbb17cc466d8b9ac95ac91fa232e7fe585d7c522d1564489ec80052ebb2a6ab9bbf89ef9dd9b7bc + checksum: 10c0/9144c4e4a63034fb2031a0ee1fc77e80594f30cab3faafa9a1f7f83782695774dd32fac8986f260698b4e150b4dd52444f2611c07e4c101501f08353eb47c82c languageName: node linkType: hard @@ -12355,6 +12355,13 @@ __metadata: languageName: node linkType: hard +"jasmine-core@npm:~5.5.0": + version: 5.5.0 + resolution: "jasmine-core@npm:5.5.0" + checksum: 10c0/9914f45ce6bcc016d61ee591a8a71dd0d88902ddf5fa887b11966040ce0916379bc4d5f446c07c58226b16f8a0f9719fa201cd92a3f07b02e8c8aa4169448600 + languageName: node + linkType: hard + "jasmine-reporters@npm:~2.5.0": version: 2.5.2 resolution: "jasmine-reporters@npm:2.5.2" @@ -16751,7 +16758,24 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.81.0, sass@npm:^1.81.0": +"sass@npm:1.81.1": + version: 1.81.1 + resolution: "sass@npm:1.81.1" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + chokidar: "npm:^4.0.0" + immutable: "npm:^5.0.2" + source-map-js: "npm:>=0.6.2 <2.0.0" + dependenciesMeta: + "@parcel/watcher": + optional: true + bin: + sass: sass.js + checksum: 10c0/be30371b1706ae84ca39fc724368deae5fd9cf94f4737fb0120f166e81545d113d1aa9abd3d797cf66f1d48625ab20ec838509f157d23e3e1e57c6a7e5e78cda + languageName: node + linkType: hard + +"sass@npm:^1.81.0": version: 1.81.0 resolution: "sass@npm:1.81.0" dependencies: From ca757c930322a73ff01d2d1fc78313dbf37825e4 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 3 Dec 2024 07:11:02 +0000 Subject: [PATCH 0062/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++---- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 +++--- package.json | 2 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++--- yarn.lock | 115 ++++-------------- 9 files changed, 86 insertions(+), 159 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 4f7fb09e6ba8..9b83a26929c1 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + - uses: angular/dev-infra/github-actions/branch-manager@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0aa8f8058e88..15e4f2706f42 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - run: yarn 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 a8051fe5e800..ae9561304be8 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + - uses: angular/dev-infra/github-actions/post-approval-changes@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 9489e2b22dc5..9f46ab3a9ab4 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + - uses: angular/dev-infra/github-actions/feature-request@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index db395ebdfb31..c5a51a364189 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable # 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 991c053efa90..d4c7f054eeea 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/linting/licenses@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Check tooling setup run: yarn 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@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@9ad44d7add69b53cec32d6486e9e8a83e7ec6622 + uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 8f4f9b76a521..513ca8106244 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "^19.1.0-next.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a35ad7f4e30ae1fc531517867efcae89cce5afa2", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9", "@angular/cdk": "19.0.1", "@angular/common": "^19.1.0-next.0", "@angular/compiler": "^19.1.0-next.0", diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 31c9c5ad5bce..57320c32688c 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#40e9067e991471de6876410139f6f1e97241501f", - "@angular/cdk": "github:angular/cdk-builds#3692c15d68e768f4f06c52e38b55bdb86cfc7af8", - "@angular/common": "github:angular/common-builds#01e5335258021581c42b88c7d33ff460dd1d0de7", - "@angular/compiler": "github:angular/compiler-builds#d8694436fbc8767788c88ed2e048b13aded43fa0", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#a0c6ea901e3cdbb08dd50b04c122f21e31c6369f", - "@angular/core": "github:angular/core-builds#3f88d7dac38867ea9458c39b648b122e8756d7cc", - "@angular/forms": "github:angular/forms-builds#2f669469063ee2964f6bcb4c79be169a1711f923", - "@angular/language-service": "github:angular/language-service-builds#f5d47dd0b61033c58881622a6588e7837773c407", - "@angular/localize": "github:angular/localize-builds#f2e9ef2007127277e226e712984cf188551930df", - "@angular/material": "github:angular/material-builds#5db7aa2243e10ff74bce5710ea6d3560e9442eff", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#80c8de455145501d70f827c64cc8c490b6709db4", - "@angular/platform-browser": "github:angular/platform-browser-builds#d4d0cda4219322ba6510e2af96e3ea2bbd938bc6", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#83a577be77488b64a4ae89ac90da66a1ddb61678", - "@angular/platform-server": "github:angular/platform-server-builds#56c6522d398c5eb41600895a24b605d56c4c500d", - "@angular/router": "github:angular/router-builds#95b11226d3b016ff58130fdb63c4f4d352e514d9", - "@angular/service-worker": "github:angular/service-worker-builds#ad2cb47d501a07ff403715f11153443720112973" + "@angular/animations": "github:angular/animations-builds#4ccc9582147a0d39e08f5e503072c76802bac7a7", + "@angular/cdk": "github:angular/cdk-builds#48d925618e790c344f88a05ce8775e97ee469d2f", + "@angular/common": "github:angular/common-builds#16fd33c0d7a2cae384f3a228ea07a079fac60df0", + "@angular/compiler": "github:angular/compiler-builds#b6cb67f04248e269b84fa13083d9875fb22300b3", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#d2aa18c1f4f48f1b8ae65aa92c2a1e6625c29440", + "@angular/core": "github:angular/core-builds#de5613839155c3449a0f2cb9975dc3ade0ab9e76", + "@angular/forms": "github:angular/forms-builds#1ae0570cb56c512218f054e43423f7db78e565f0", + "@angular/language-service": "github:angular/language-service-builds#55169808a41d4a48dec7f9c151a7f7d4f4e2aec6", + "@angular/localize": "github:angular/localize-builds#66575c950b73cff6c5aad4700590b5679caeaa8b", + "@angular/material": "github:angular/material-builds#e5885cdb98a501a61e064a1e2af7d20e21b2eec5", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b396e3cb62d18e8a1216d8358e70ae618f0cdc74", + "@angular/platform-browser": "github:angular/platform-browser-builds#7a0ea9806f9737dd3f4bf7fc12e0a56f443980e2", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#1d60b6347ec007ccedf7c12bad0a4283cb76b217", + "@angular/platform-server": "github:angular/platform-server-builds#4c08d4888b8029e1b6aa90eae73d5082e9df8ec4", + "@angular/router": "github:angular/router-builds#3be2e9d85f23372bb34421d1155ed954db419f08", + "@angular/service-worker": "github:angular/service-worker-builds#1771a53f87a175831a8f433a6db575db96688e98" } } diff --git a/yarn.lock b/yarn.lock index fc706b5a15c4..af224c278441 100644 --- a/yarn.lock +++ b/yarn.lock @@ -324,9 +324,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#a35ad7f4e30ae1fc531517867efcae89cce5afa2": - version: 0.0.0-9ad44d7add69b53cec32d6486e9e8a83e7ec6622 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=a35ad7f4e30ae1fc531517867efcae89cce5afa2" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9": + version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=499c0a0303900d2d8fb6fcdeec7e72a80d202ac9" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.0.0" @@ -339,7 +339,7 @@ __metadata: "@bazel/runfiles": "npm:5.8.1" "@bazel/terser": "npm:5.8.1" "@bazel/typescript": "npm:5.8.1" - "@microsoft/api-extractor": "npm:7.47.11" + "@microsoft/api-extractor": "npm:7.48.0" "@types/browser-sync": "npm:^2.26.3" "@types/minimatch": "npm:^5.1.2" "@types/node": "npm:^18.19.21" @@ -349,7 +349,7 @@ __metadata: "@types/ws": "npm:8.5.13" "@types/yargs": "npm:^17.0.0" browser-sync: "npm:^3.0.0" - prettier: "npm:3.3.3" + prettier: "npm:3.4.1" protractor: "npm:^7.0.0" selenium-webdriver: "npm:^4.18.1" send: "npm:^1.0.0" @@ -357,13 +357,13 @@ __metadata: tmp: "npm:^0.2.1" true-case-path: "npm:^2.2.1" tslib: "npm:^2.5.2" - typescript: "npm:5.6.3" + typescript: "npm:5.7.2" uuid: "npm:^11.0.0" yargs: "npm:^17.0.0" dependenciesMeta: re2: built: false - checksum: 10c0/b9d7c4f8a9f6a99d51874944cff78e75fa5249c46b3e7e653146f65f6c9bf1b7af5b941bee70340da1b7769fee503b437cf2d0eb9a07b8a3498f373d2d71472f + checksum: 10c0/a12d2583f6bf856830c44735aff1388a70d3107d8bb1271c1d20647b7b08015088395c2174ca9f430bc858b4cf43b8ae96a5e6897424d147e7acd812b6d9207b languageName: node linkType: hard @@ -629,7 +629,7 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:^19.1.0-next.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a35ad7f4e30ae1fc531517867efcae89cce5afa2" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9" "@angular/cdk": "npm:19.0.1" "@angular/common": "npm:^19.1.0-next.0" "@angular/compiler": "npm:^19.1.0-next.0" @@ -3327,17 +3327,6 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor-model@npm:7.29.8": - version: 7.29.8 - resolution: "@microsoft/api-extractor-model@npm:7.29.8" - dependencies: - "@microsoft/tsdoc": "npm:~0.15.0" - "@microsoft/tsdoc-config": "npm:~0.17.0" - "@rushstack/node-core-library": "npm:5.9.0" - checksum: 10c0/ede1e2267e5b555cf4dd049a9c19d06bf3527f7c4b517afeb112af1a984a7e7bae8e7f5103a7228477f9399907229e2f51d7597df762aaeb71a02bb64cd091d7 - languageName: node - linkType: hard - "@microsoft/api-extractor-model@npm:7.30.0": version: 7.30.0 resolution: "@microsoft/api-extractor-model@npm:7.30.0" @@ -3349,30 +3338,7 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor@npm:7.47.11": - version: 7.47.11 - resolution: "@microsoft/api-extractor@npm:7.47.11" - dependencies: - "@microsoft/api-extractor-model": "npm:7.29.8" - "@microsoft/tsdoc": "npm:~0.15.0" - "@microsoft/tsdoc-config": "npm:~0.17.0" - "@rushstack/node-core-library": "npm:5.9.0" - "@rushstack/rig-package": "npm:0.5.3" - "@rushstack/terminal": "npm:0.14.2" - "@rushstack/ts-command-line": "npm:4.23.0" - lodash: "npm:~4.17.15" - minimatch: "npm:~3.0.3" - resolve: "npm:~1.22.1" - semver: "npm:~7.5.4" - source-map: "npm:~0.6.1" - typescript: "npm:5.4.2" - bin: - api-extractor: bin/api-extractor - checksum: 10c0/76aba3020a17b9324c540d584c6c699bf9a0a96efb0bfe50c858fe396dbe37e64360c0caecedd8e3328c80306cb0471ee12925af9ef0beac5f5195ed632a953c - languageName: node - linkType: hard - -"@microsoft/api-extractor@npm:^7.24.2": +"@microsoft/api-extractor@npm:7.48.0, @microsoft/api-extractor@npm:^7.24.2": version: 7.48.0 resolution: "@microsoft/api-extractor@npm:7.48.0" dependencies: @@ -3395,7 +3361,7 @@ __metadata: languageName: node linkType: hard -"@microsoft/tsdoc-config@npm:~0.17.0, @microsoft/tsdoc-config@npm:~0.17.1": +"@microsoft/tsdoc-config@npm:~0.17.1": version: 0.17.1 resolution: "@microsoft/tsdoc-config@npm:0.17.1" dependencies: @@ -3407,7 +3373,7 @@ __metadata: languageName: node linkType: hard -"@microsoft/tsdoc@npm:0.15.1, @microsoft/tsdoc@npm:~0.15.0, @microsoft/tsdoc@npm:~0.15.1": +"@microsoft/tsdoc@npm:0.15.1, @microsoft/tsdoc@npm:~0.15.1": version: 0.15.1 resolution: "@microsoft/tsdoc@npm:0.15.1" checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c @@ -4813,27 +4779,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/node-core-library@npm:5.9.0": - version: 5.9.0 - resolution: "@rushstack/node-core-library@npm:5.9.0" - dependencies: - ajv: "npm:~8.13.0" - ajv-draft-04: "npm:~1.0.0" - ajv-formats: "npm:~3.0.1" - fs-extra: "npm:~7.0.1" - import-lazy: "npm:~4.0.0" - jju: "npm:~1.4.0" - resolve: "npm:~1.22.1" - semver: "npm:~7.5.4" - peerDependencies: - "@types/node": "*" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 10c0/1322a05f504da2aaa869821aa53f5d2867e02f19ed2ef2692e6fc04507b6419b2c7b0a2f756bed09477b1a6b5edc8f8f86471b24d0c81ff51653da87ae1cb8af - languageName: node - linkType: hard - "@rushstack/rig-package@npm:0.5.3": version: 0.5.3 resolution: "@rushstack/rig-package@npm:0.5.3" @@ -4844,21 +4789,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/terminal@npm:0.14.2": - version: 0.14.2 - resolution: "@rushstack/terminal@npm:0.14.2" - dependencies: - "@rushstack/node-core-library": "npm:5.9.0" - supports-color: "npm:~8.1.1" - peerDependencies: - "@types/node": "*" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 10c0/3329c407e4a23ae6b1e0e35eeeaf27e9ea190454bca58473e745b9eb5c15d1ca43f99c42aa34f673ce5421bbec90052ebd037c0d080973b3e878688cf02d5b37 - languageName: node - linkType: hard - "@rushstack/terminal@npm:0.14.3": version: 0.14.3 resolution: "@rushstack/terminal@npm:0.14.3" @@ -4874,18 +4804,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/ts-command-line@npm:4.23.0": - version: 4.23.0 - resolution: "@rushstack/ts-command-line@npm:4.23.0" - dependencies: - "@rushstack/terminal": "npm:0.14.2" - "@types/argparse": "npm:1.0.38" - argparse: "npm:~1.0.9" - string-argv: "npm:~0.3.1" - checksum: 10c0/4bf5e384368024977d76024702c35f7204b030008dc6a2705aa85d58909eb7a29152793068a7388412945da20ebdc80ab487d428fe3e2329eb824c647175c80d - languageName: node - linkType: hard - "@rushstack/ts-command-line@npm:4.23.1": version: 4.23.1 resolution: "@rushstack/ts-command-line@npm:4.23.1" @@ -15520,7 +15438,16 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.3.3, prettier@npm:^3.0.0": +"prettier@npm:3.4.1": + version: 3.4.1 + resolution: "prettier@npm:3.4.1" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/2d6cc3101ad9de72b49c59339480b0983e6ff6742143da0c43f476bf3b5ef88ede42ebd9956d7a0a8fa59f7a5990e8ef03c9ad4c37f7e4c9e5db43ee0853156c + languageName: node + linkType: hard + +"prettier@npm:^3.0.0": version: 3.3.3 resolution: "prettier@npm:3.3.3" bin: From 686c51a32aaa0c3b0fde595be8e984616383f84c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 3 Dec 2024 08:11:48 +0000 Subject: [PATCH 0063/2162] build: lock file maintenance --- yarn.lock | 607 +++++++++++++----------------------------------------- 1 file changed, 140 insertions(+), 467 deletions(-) diff --git a/yarn.lock b/yarn.lock index af224c278441..8198aaa95e4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2838,12 +2838,12 @@ __metadata: linkType: hard "@grpc/grpc-js@npm:^1.10.9, @grpc/grpc-js@npm:^1.7.0": - version: 1.12.2 - resolution: "@grpc/grpc-js@npm:1.12.2" + version: 1.12.3 + resolution: "@grpc/grpc-js@npm:1.12.3" dependencies: "@grpc/proto-loader": "npm:^0.7.13" "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/0370bdec80a5d73f0929c4b7a882af3b0ca85ed1fda361ce3986b705eb2aa9be59bba39a18b99cc05080d5c0819b319a56796dfde248375971ba64efd55fc9d6 + checksum: 10c0/86fa7119a59622c4e0bdb71a02fc0735d13b4a8481db022becd0d704655a6849c3cc892c94bff0f022795fd22777c471080b2566a7d9a13a24382bafe07d5dc3 languageName: node linkType: hard @@ -3808,8 +3808,8 @@ __metadata: linkType: hard "@npmcli/package-json@npm:^6.0.0, @npmcli/package-json@npm:^6.0.1": - version: 6.0.1 - resolution: "@npmcli/package-json@npm:6.0.1" + version: 6.1.0 + resolution: "@npmcli/package-json@npm:6.1.0" dependencies: "@npmcli/git": "npm:^6.0.0" glob: "npm:^10.2.2" @@ -3818,7 +3818,7 @@ __metadata: normalize-package-data: "npm:^7.0.0" proc-log: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 10c0/46798b2e1378e85cfe50e330792940c44dc30dd8ca136e990682c04f7095a1fd3761fcc442324f59124167f9b824411fa8679a40a9ac853e4f846d1459f8d11b + checksum: 10c0/95cc97f2382084e71a33d2739f0b1e659e32a8449d134d4264ecc2b5ada548069122d95887fe692373e2703b7a296a17e7296a4ce955dfa80c6ce3e00b5fab53 languageName: node linkType: hard @@ -3912,13 +3912,13 @@ __metadata: linkType: hard "@octokit/plugin-paginate-rest@npm:^11.0.0": - version: 11.3.5 - resolution: "@octokit/plugin-paginate-rest@npm:11.3.5" + version: 11.3.6 + resolution: "@octokit/plugin-paginate-rest@npm:11.3.6" dependencies: - "@octokit/types": "npm:^13.6.0" + "@octokit/types": "npm:^13.6.2" peerDependencies: "@octokit/core": ">=6" - checksum: 10c0/c3a1f4a3ce95d9035e58aa9984ba51fd72aaed0505fef0656feb236c91a4de15b00752b9eabbdfced53826857a26c8e96d2db8d629ba0a476057935f2b318e50 + checksum: 10c0/b269193d1fd2c7a551e529359f5bcc9d0a29fddccc31008d18281db2874fb83a99e999f2c7486c41adf5cf97f54fd3b115ab0e46d2b785073b53353a213ed928 languageName: node linkType: hard @@ -3975,12 +3975,12 @@ __metadata: languageName: node linkType: hard -"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0, @octokit/types@npm:^13.6.0, @octokit/types@npm:^13.6.1": - version: 13.6.1 - resolution: "@octokit/types@npm:13.6.1" +"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0, @octokit/types@npm:^13.6.1, @octokit/types@npm:^13.6.2": + version: 13.6.2 + resolution: "@octokit/types@npm:13.6.2" dependencies: "@octokit/openapi-types": "npm:^22.2.0" - checksum: 10c0/891334b5786ba6aef953384cec05d53e05132dd577c0c22db124d55eaa69609362d1e3147853b46e91bf226e046ba24d615c55214c8f8f4e7c3a5c38429b38e9 + checksum: 10c0/ea51afb21b667b25dad9e5daae1701da1b362a4d6ed9609f6d3f9f219e5389bf50f7e53ae029ca190750e278be3ab963cac648a95ad248f245a5fda16a4f1ed1 languageName: node linkType: hard @@ -4365,13 +4365,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.0" @@ -4386,13 +4379,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm64@npm:4.27.4" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm64@npm:4.28.0" @@ -4407,13 +4393,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.0" @@ -4428,13 +4407,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-x64@npm:4.28.0" @@ -4449,13 +4421,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.0" @@ -4470,13 +4435,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.0" @@ -4491,13 +4449,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0" @@ -4512,13 +4463,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0" @@ -4533,13 +4477,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.0" @@ -4554,13 +4491,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.0" @@ -4575,13 +4505,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0" @@ -4596,13 +4519,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0" @@ -4617,13 +4533,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.0" @@ -4638,13 +4547,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.0" @@ -4659,13 +4561,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.0" @@ -4680,13 +4575,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.0" @@ -4701,13 +4589,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.0" @@ -4722,13 +4603,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.0" @@ -5339,9 +5213,9 @@ __metadata: linkType: hard "@types/jasmine@npm:~5.1.0": - version: 5.1.4 - resolution: "@types/jasmine@npm:5.1.4" - checksum: 10c0/4b8d27182e62f5003db1f1f174a810ace704e411cbfd0bc41edbaacf307246aec1f9bd20812846700198fc881268834ffde1d5301f819b1ba7caac9662534ceb + version: 5.1.5 + resolution: "@types/jasmine@npm:5.1.5" + checksum: 10c0/904a2a6bfe7478478ec73d502708dc4b4cc46fa554c459cee3e0be01efda96fba7d26ef8bec2f246d9163cc517407b135acabcf6f076c11aa514ed9b79bc67e5 languageName: node linkType: hard @@ -5474,11 +5348,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=13.7.0": - version: 22.9.3 - resolution: "@types/node@npm:22.9.3" + version: 22.10.1 + resolution: "@types/node@npm:22.10.1" dependencies: - undici-types: "npm:~6.19.8" - checksum: 10c0/954ec72bf29436ea62425a9563914a9c1e93f97b18194acd51d74d13998a701977547ed2985ed3a0e97211b785436d28377116e5f613bfcf3182d9bd81d784dc + undici-types: "npm:~6.20.0" + checksum: 10c0/0fbb6d29fa35d807f0223a4db709c598ac08d66820240a2cd6a8a69b8f0bc921d65b339d850a666b43b4e779f967e6ed6cf6f0fca3575e08241e6b900364c234 languageName: node linkType: hard @@ -5490,11 +5364,11 @@ __metadata: linkType: hard "@types/node@npm:^18.13.0, @types/node@npm:^18.19.21": - version: 18.19.65 - resolution: "@types/node@npm:18.19.65" + version: 18.19.67 + resolution: "@types/node@npm:18.19.67" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/9c093f13749dccd16a3e9cd17080db057d1e94cb5205a871d2818ad51ec19d7d392a7c12a11661c6a6f4404cbd85b19d09ab6c564a4763cab2ff5bb0e198617d + checksum: 10c0/72b06802ac291c2e710bcf527b040f5490e1f85f26fdedad417e13ce3ed3aeb67e1bf3eef0ba5f581986bf361dcdc5f2d1229a9e284bf3dbd85db5c595e67bc6 languageName: node linkType: hard @@ -5901,16 +5775,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/scope-manager@npm:8.15.0" - dependencies: - "@typescript-eslint/types": "npm:8.15.0" - "@typescript-eslint/visitor-keys": "npm:8.15.0" - checksum: 10c0/c27dfdcea4100cc2d6fa967f857067cbc93155b55e648f9f10887a1b9372bb76cf864f7c804f3fa48d7868d9461cdef10bcea3dab7637d5337e8aa8042dc08b9 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:8.17.0": version: 8.17.0 resolution: "@typescript-eslint/scope-manager@npm:8.17.0" @@ -5938,13 +5802,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/types@npm:8.15.0" - checksum: 10c0/84abc6fd954aff13822a76ac49efdcb90a55c0025c20eee5d8cebcfb68faff33b79bbc711ea524e0209cecd90c5ee3a5f92babc7083c081d3a383a0710264a41 - languageName: node - linkType: hard - "@typescript-eslint/types@npm:8.17.0": version: 8.17.0 resolution: "@typescript-eslint/types@npm:8.17.0" @@ -5952,25 +5809,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.15.0" - dependencies: - "@typescript-eslint/types": "npm:8.15.0" - "@typescript-eslint/visitor-keys": "npm:8.15.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/3af5c129532db3575349571bbf64d32aeccc4f4df924ac447f5d8f6af8b387148df51965eb2c9b99991951d3dadef4f2509d7ce69bf34a2885d013c040762412 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.17.0": version: 8.17.0 resolution: "@typescript-eslint/typescript-estree@npm:8.17.0" @@ -5990,7 +5828,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.17.0": +"@typescript-eslint/utils@npm:8.17.0, @typescript-eslint/utils@npm:^8.13.0": version: 8.17.0 resolution: "@typescript-eslint/utils@npm:8.17.0" dependencies: @@ -6007,33 +5845,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.13.0": - version: 8.15.0 - resolution: "@typescript-eslint/utils@npm:8.15.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.15.0" - "@typescript-eslint/types": "npm:8.15.0" - "@typescript-eslint/typescript-estree": "npm:8.15.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/65743f51845a1f6fd2d21f66ca56182ba33e966716bdca73d30b7a67c294e47889c322de7d7b90ab0818296cd33c628e5eeeb03cec7ef2f76c47de7a453eeda2 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.15.0": - version: 8.15.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.15.0" - dependencies: - "@typescript-eslint/types": "npm:8.15.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/02a954c3752c4328482a884eb1da06ca8fb72ae78ef28f1d854b18f3779406ed47263af22321cf3f65a637ec7584e5f483e34a263b5c8cec60ec85aebc263574 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:8.17.0": version: 8.17.0 resolution: "@typescript-eslint/visitor-keys@npm:8.17.0" @@ -7912,9 +7723,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001684 - resolution: "caniuse-lite@npm:1.0.30001684" - checksum: 10c0/446485ca3d9caf408a339a44636a86a2b119ec247492393ae661cd93dccd6668401dd2dfec1e149be4e44563cd1e23351b44453a52fa2c2f19e2bf3287c865f6 + version: 1.0.30001686 + resolution: "caniuse-lite@npm:1.0.30001686" + checksum: 10c0/41748e81c17c1a6a0fd6e515c93c8620004171fe6706027e45f837fde71e97173e85141b0dc11e07d53b4782f3741a6651cb0f7d395cc1c1860892355eabdfa2 languageName: node linkType: hard @@ -9194,9 +9005,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.64 - resolution: "electron-to-chromium@npm:1.5.64" - checksum: 10c0/331c2160cc37ef85317b44f2078af8ff16f068fc95d4af2210fe943b567f20b1445a7faa40c05d290bc229102ef1b662371464ba2725d10ff6c8543af6d40adf + version: 1.5.68 + resolution: "electron-to-chromium@npm:1.5.68" + checksum: 10c0/02cfa3043280e4f8e003724fadee30fa8cdb5f6df1be51627b1ad34f66a8d4fb51b3d3863647620075c02b21c8ff99bc2afe55142a2b4742b1f9d523c11b25a3 languageName: node linkType: hard @@ -9488,13 +9299,13 @@ __metadata: linkType: hard "es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b languageName: node linkType: hard @@ -10692,7 +10503,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -10924,12 +10735,12 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" +"gopd@npm:^1.0.1, gopd@npm:^1.1.0": + version: 1.1.0 + resolution: "gopd@npm:1.1.0" dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/acfa9914889700cf42eaf676e1dc2d5a277217580e36119a9a6f5b77197700fd8294b8994f257963845820e7b414c8f06e1b9f8dff6456b0f71f61d175fecf3c languageName: node linkType: hard @@ -11033,7 +10844,7 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b @@ -11057,16 +10868,18 @@ __metadata: linkType: hard "has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + version: 1.1.0 + resolution: "has-proto@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/d0aeb83ca76aa265a7629bf973d6338c310b8307cb7fa8b85f8f01a7d95fc3d6ede54eaedeb538a6c1ee4fc8961abfbe89ea88d9a78244fa03097fe5b506c10d languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 +"has-symbols@npm:^1.0.3": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e languageName: node linkType: hard @@ -11514,8 +11327,8 @@ __metadata: linkType: hard "init-package-json@npm:^7.0.1": - version: 7.0.1 - resolution: "init-package-json@npm:7.0.1" + version: 7.0.2 + resolution: "init-package-json@npm:7.0.2" dependencies: "@npmcli/package-json": "npm:^6.0.0" npm-package-arg: "npm:^12.0.0" @@ -11524,7 +11337,7 @@ __metadata: semver: "npm:^7.3.5" validate-npm-package-license: "npm:^3.0.4" validate-npm-package-name: "npm:^6.0.0" - checksum: 10c0/9df71818f5400defb1533440ae49c5ac9d6acf436ce3a27128b7ccf737e275688edbbea36d61a7fe71c07d5580ca66745eca98276089d49c78e8e4ef43dc1722 + checksum: 10c0/258860a3a41abd2dcb83727e234dd2f2f56d0b30191e6fa8dd424b83d5127a44330d6e97573cbe8df7582ab76d1b3da4090008b38f06003403988a5e5101fd6b languageName: node linkType: hard @@ -11631,12 +11444,12 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - has-bigints: "npm:^1.0.1" - checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 languageName: node linkType: hard @@ -11649,13 +11462,13 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-boolean-object@npm:^1.2.0": + version: 1.2.0 + resolution: "is-boolean-object@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + call-bind: "npm:^1.0.7" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/166319154c7c1fda06d164d3a25e969032d7929a1e3917ae56f6bd8870b831bbfdc608a3070fb5db94d5a2afc606683d484655777c9b62305383a8b87f1b5aa4 languageName: node linkType: hard @@ -11668,7 +11481,7 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f @@ -11702,7 +11515,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": +"is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -11871,12 +11684,13 @@ __metadata: languageName: node linkType: hard -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-number-object@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + call-bind: "npm:^1.0.7" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/29d575b5c54ff13f824858d8f7da4cf27131c59858744ec94e96be7b7d2de81038971c15a2636b38fa9eece3797c14bf8de898e1b30afc2f5c1df5cea9f06a8e languageName: node linkType: hard @@ -11959,12 +11773,14 @@ __metadata: linkType: hard "is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" + version: 1.2.0 + resolution: "is-regex@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + call-bind: "npm:^1.0.7" + gopd: "npm:^1.1.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/a407fefb871ceedebe718c35d2f4ba75dc3360c335e99ff2f8bc4488bdcc7b0b3bb78a208d1aa896cf2745630b97752ffd40b501c10bb7afc31d23c2e0092e8d languageName: node linkType: hard @@ -11998,21 +11814,24 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.0": + version: 1.1.0 + resolution: "is-string@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + call-bind: "npm:^1.0.7" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2781bce7bfdb00276d000a7aafccad8038a7b5cb06abbfc638417a705dd41bca259977af78731dc8a87f170783c94c9f684bc086fc4856b623c1fd942c509b6b languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.0": + version: 1.1.0 + resolution: "is-symbol@npm:1.1.0" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + call-bind: "npm:^1.0.7" + has-symbols: "npm:^1.0.3" + safe-regex-test: "npm:^1.0.3" + checksum: 10c0/57f63c22e00cc4990680e12035b91ed158de1030924175123b13b2188fb2d10c9a80da9a923dd6ff9e9b084afd3d2e8d7d3ad711fe971e7fb74a44644751cd52 languageName: node linkType: hard @@ -12266,13 +12085,6 @@ __metadata: languageName: node linkType: hard -"jasmine-core@npm:~5.4.0": - version: 5.4.0 - resolution: "jasmine-core@npm:5.4.0" - checksum: 10c0/d936de0df50a69bb269c734d5efc73d124c3051037d55609c30fcc146736ae281b1c2d658e7da583eee96a4eb2c240a3b672b70375e51d6c28c5626639eda292 - languageName: node - linkType: hard - "jasmine-core@npm:~5.5.0": version: 5.5.0 resolution: "jasmine-core@npm:5.5.0" @@ -12313,14 +12125,14 @@ __metadata: linkType: hard "jasmine@npm:^5.0.0": - version: 5.4.0 - resolution: "jasmine@npm:5.4.0" + version: 5.5.0 + resolution: "jasmine@npm:5.5.0" dependencies: glob: "npm:^10.2.2" - jasmine-core: "npm:~5.4.0" + jasmine-core: "npm:~5.5.0" bin: jasmine: bin/jasmine.js - checksum: 10c0/8169c6ee448e39769946e43cf04647826c17be0a999465441bed525063e0208ac51615d2ce4e185c35aece0224b51dd7cfa4530f13a83a7deeb1aa019d655b75 + checksum: 10c0/3b86e6f19987c9d49092dac783ac84a0429ba3786580573d57ffdca6bc21468476613ca94748cfc282f0adbcc2810c20420bee78ef8f37a897f34dd4cd83107e languageName: node linkType: hard @@ -12883,7 +12695,7 @@ __metadata: languageName: node linkType: hard -"less@npm:4.2.1": +"less@npm:4.2.1, less@npm:^4.2.0": version: 4.2.1 resolution: "less@npm:4.2.1" dependencies: @@ -12918,41 +12730,6 @@ __metadata: languageName: node linkType: hard -"less@npm:^4.2.0": - version: 4.2.0 - resolution: "less@npm:4.2.0" - dependencies: - copy-anything: "npm:^2.0.1" - errno: "npm:^0.1.1" - graceful-fs: "npm:^4.1.2" - image-size: "npm:~0.5.0" - make-dir: "npm:^2.1.0" - mime: "npm:^1.4.1" - needle: "npm:^3.1.0" - parse-node-version: "npm:^1.0.1" - source-map: "npm:~0.6.0" - tslib: "npm:^2.3.0" - dependenciesMeta: - errno: - optional: true - graceful-fs: - optional: true - image-size: - optional: true - make-dir: - optional: true - mime: - optional: true - needle: - optional: true - source-map: - optional: true - bin: - lessc: bin/lessc - checksum: 10c0/8593d547a3e7651555a2c51bac8b148b37ec14e75e6e28ee4ddf27eb49cbcb4b558e50cdefa97d6942a8120fc744ace0d61c43d4c246e098c8828269b14cf5fb - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -13502,7 +13279,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.14": +"magic-string@npm:0.30.14, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.14 resolution: "magic-string@npm:0.30.14" dependencies: @@ -13511,15 +13288,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": - version: 0.30.13 - resolution: "magic-string@npm:0.30.13" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/a275faeca1564c545019b4742c38a42ca80226c8c9e0805c32d1a1cc58b0e6ff7bbd914ed885fd10043858a7da0f732cb8f49c8975c3ecebde9cad4b57db5115 - languageName: node - linkType: hard - "make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -13609,14 +13377,14 @@ __metadata: linkType: hard "memfs@npm:^4.6.0": - version: 4.14.0 - resolution: "memfs@npm:4.14.0" + version: 4.14.1 + resolution: "memfs@npm:4.14.1" dependencies: "@jsonjoy.com/json-pack": "npm:^1.0.3" "@jsonjoy.com/util": "npm:^1.3.0" tree-dump: "npm:^1.0.1" tslib: "npm:^2.0.0" - checksum: 10c0/d1de2e4b3c269f5b5f27b63f60bb8ea9ae5800843776e0bed4548f2957dcd55237ac5eab3a5ffe0d561a6be53e42c055a7bc79efc1613563b14e14c287ef3b0a + checksum: 10c0/2cf3836aa753fd846a4f5b9d6d5e22d9f2523eb4203a12b34a2c4baa7d6d16b37e30d7bab580c52a6f94a3dfdd14309128fe3e1aa5dacb5493903ca60efc54be languageName: node linkType: hard @@ -14048,11 +13816,11 @@ __metadata: linkType: hard "nanoid@npm:^3.1.25, nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + checksum: 10c0/4b1bb29f6cfebf3be3bc4ad1f1296fb0a10a3043a79f34fbffe75d1621b4318319211cd420549459018ea3592f0d2f159247a6f874911d6d26eaaadda2478120 languageName: node linkType: hard @@ -14244,8 +14012,8 @@ __metadata: linkType: hard "node-gyp@npm:^10.0.0, node-gyp@npm:^10.2.0, node-gyp@npm:latest": - version: 10.2.0 - resolution: "node-gyp@npm:10.2.0" + version: 10.3.1 + resolution: "node-gyp@npm:10.3.1" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -14259,7 +14027,7 @@ __metadata: which: "npm:^4.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b + checksum: 10c0/87c3b50e1f6f5256b5d2879a8c064eefa53ed444bad2a20870be43bc189db7cbffe22c30af056046c6d904181d73881b1726fd391d2f6f79f89b991019f195ea languageName: node linkType: hard @@ -15438,7 +15206,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.4.1": +"prettier@npm:3.4.1, prettier@npm:^3.0.0": version: 3.4.1 resolution: "prettier@npm:3.4.1" bin: @@ -15447,15 +15215,6 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.0.0": - version: 3.3.3 - resolution: "prettier@npm:3.3.3" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/b85828b08e7505716324e4245549b9205c0cacb25342a030ba8885aba2039a115dbcf75a0b7ca3b37bc9d101ee61fab8113fc69ca3359f2a226f1ecc07ad2e26 - languageName: node - linkType: hard - "proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": version: 4.2.0 resolution: "proc-log@npm:4.2.0" @@ -15672,11 +15431,11 @@ __metadata: linkType: hard "psl@npm:^1.1.28, psl@npm:^1.1.33": - version: 1.13.0 - resolution: "psl@npm:1.13.0" + version: 1.15.0 + resolution: "psl@npm:1.15.0" dependencies: punycode: "npm:^2.3.1" - checksum: 10c0/d259dd6fdbc720267f78d26139e197f6a1a0f6505753ed28309515b108d9acd764a873af9045de75884f6816c3c854d90552984132a981fac2f032b443e32b4b + checksum: 10c0/d8d45a99e4ca62ca12ac3c373e63d80d2368d38892daa40cfddaa1eb908be98cd549ac059783ef3a56cfd96d57ae8e2fd9ae53d1378d90d42bc661ff924e102a languageName: node linkType: hard @@ -16421,7 +16180,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.0, rollup@npm:^4.24.0": +"rollup@npm:4.28.0, rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.28.0 resolution: "rollup@npm:4.28.0" dependencies: @@ -16490,75 +16249,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.4.0": - version: 4.27.4 - resolution: "rollup@npm:4.27.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.4" - "@rollup/rollup-android-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-x64": "npm:4.27.4" - "@rollup/rollup-freebsd-arm64": "npm:4.27.4" - "@rollup/rollup-freebsd-x64": "npm:4.27.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-musl": "npm:4.27.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 - languageName: node - linkType: hard - "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -16685,7 +16375,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.81.1": +"sass@npm:1.81.1, sass@npm:^1.81.0": version: 1.81.1 resolution: "sass@npm:1.81.1" dependencies: @@ -16702,23 +16392,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:^1.81.0": - version: 1.81.0 - resolution: "sass@npm:1.81.0" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" - source-map-js: "npm:>=0.6.2 <2.0.0" - dependenciesMeta: - "@parcel/watcher": - optional: true - bin: - sass: sass.js - checksum: 10c0/9c59b3c9b4231c18fcb4583cc232dbc4de501ddc11101b7a025e44833e3f3ce6031546dc1cd109ee9f04ebcfb1fe30ff870810af33b8feb9aa9e36dfba9ec1ef - languageName: node - linkType: hard - "saucelabs@npm:^1.5.0": version: 1.5.0 resolution: "saucelabs@npm:1.5.0" @@ -16778,14 +16451,14 @@ __metadata: linkType: hard "selenium-webdriver@npm:^4.18.1": - version: 4.26.0 - resolution: "selenium-webdriver@npm:4.26.0" + version: 4.27.0 + resolution: "selenium-webdriver@npm:4.27.0" dependencies: "@bazel/runfiles": "npm:^6.3.1" jszip: "npm:^3.10.1" tmp: "npm:^0.2.3" ws: "npm:^8.18.0" - checksum: 10c0/af34a108fe2f9e717aab0ee3130ad101bbfc84be988729bce7eb7cd101403cd0ac2bdc5fe134e3e2b6c21bd4f00d9e9790062317877ff43ad370c2274fa57b7b + checksum: 10c0/fe6aedae92e9d6675326b72ee00c9f9c3022f14746672cacbf7ca285816cc512ce3e0f23a77a2976995192099e6bfdf0011d2cc19efd974cd5683d9709f90d3e languageName: node linkType: hard @@ -17031,9 +16704,9 @@ __metadata: linkType: hard "shell-quote@npm:^1.8.1": - version: 1.8.1 - resolution: "shell-quote@npm:1.8.1" - checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + version: 1.8.2 + resolution: "shell-quote@npm:1.8.2" + checksum: 10c0/85fdd44f2ad76e723d34eb72c753f04d847ab64e9f1f10677e3f518d0e5b0752a176fd805297b30bb8c3a1556ebe6e77d2288dbd7b7b0110c7e941e9e9c20ce1 languageName: node linkType: hard @@ -18110,11 +17783,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.3.0": - version: 1.4.1 - resolution: "ts-api-utils@npm:1.4.1" + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3" peerDependencies: typescript: ">=4.2.0" - checksum: 10c0/11a2c4b280ead1026722bd2dd5cbfd8a88d06adcbf6ade8ce92914bd4828c08b384cf9f98cf652bd41d61320604186c5ed60f3077bc9cb8a8c44e9ceae29d0e8 + checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a languageName: node linkType: hard @@ -18471,10 +18144,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.8": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf languageName: node linkType: hard @@ -19255,15 +18928,15 @@ __metadata: linkType: hard "which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" + version: 1.1.0 + resolution: "which-boxed-primitive@npm:1.1.0" dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.0" + is-number-object: "npm:^1.1.0" + is-string: "npm:^1.1.0" + is-symbol: "npm:^1.1.0" + checksum: 10c0/ee4e4bcf0026aeeda1b28d005ddfcf1d8d6025d1cf04b2271f8dbbdd13df9357ba7da657ec2d886520bccf8d93d9535454e44f38f201c5461a2fe7c838b455de languageName: node linkType: hard @@ -19308,15 +18981,15 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" + version: 1.1.16 + resolution: "which-typed-array@npm:1.1.16" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 + checksum: 10c0/a9075293200db4fbce7c24d52731843542c5a19edfc66e31aa2cbefa788b5caa7ef05008f6e60d2c38d8198add6b92d0ddc2937918c5c308be398b1ebd8721af languageName: node linkType: hard From 97897b710a1792dbe20355e6a26cd29263ee3738 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 3 Dec 2024 09:41:19 +0000 Subject: [PATCH 0064/2162] fix(@angular/build): ensure correct handling of `index.output` for SSR Previously, the index file was not being renamed correctly when using server-side rendering (SSR). Closes: #29012 --- .../build/src/builders/application/options.ts | 30 +++-- .../tests/behavior/index-csr_spec.ts | 57 ++++++++ .../application/tests/options/index_spec.ts | 125 ++++++++---------- 3 files changed, 125 insertions(+), 87 deletions(-) create mode 100644 packages/angular/build/src/builders/application/tests/behavior/index-csr_spec.ts diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 9c488e327a98..4a1d781f6680 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -327,24 +327,26 @@ export async function normalizeOptions( let indexOutput: string; // The output file will be created within the configured output path if (typeof options.index === 'string') { - /** - * If SSR is activated, create a distinct entry file for the `index.html`. - * This is necessary because numerous server/cloud providers automatically serve the `index.html` as a static file - * if it exists (handling SSG). - * - * For instance, accessing `foo.com/` would lead to `foo.com/index.html` being served instead of hitting the server. - * - * This approach can also be applied to service workers, where the `index.csr.html` is served instead of the prerendered `index.html`. - */ - const indexBaseName = path.basename(options.index); - indexOutput = - (ssrOptions || prerenderOptions) && indexBaseName === 'index.html' - ? INDEX_HTML_CSR - : indexBaseName; + indexOutput = options.index; } else { indexOutput = options.index.output || 'index.html'; } + /** + * If SSR is activated, create a distinct entry file for the `index.html`. + * This is necessary because numerous server/cloud providers automatically serve the `index.html` as a static file + * if it exists (handling SSG). + * + * For instance, accessing `foo.com/` would lead to `foo.com/index.html` being served instead of hitting the server. + * + * This approach can also be applied to service workers, where the `index.csr.html` is served instead of the prerendered `index.html`. + */ + const indexBaseName = path.basename(indexOutput); + indexOutput = + (ssrOptions || prerenderOptions) && indexBaseName === 'index.html' + ? INDEX_HTML_CSR + : indexBaseName; + indexHtmlOptions = { input: path.join( workspaceRoot, diff --git a/packages/angular/build/src/builders/application/tests/behavior/index-csr_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/index-csr_spec.ts new file mode 100644 index 000000000000..0f87dd78a289 --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/behavior/index-csr_spec.ts @@ -0,0 +1,57 @@ +/** + * @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: "index.csr.html"', () => { + beforeEach(async () => { + await harness.modifyFile('src/tsconfig.app.json', (content) => { + const tsConfig = JSON.parse(content); + tsConfig.files ??= []; + tsConfig.files.push('main.server.ts'); + + return JSON.stringify(tsConfig); + }); + }); + + it(`should generate 'index.csr.html' instead of 'index.html' when ssr is enabled.`, async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + server: 'src/main.server.ts', + ssr: true, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + harness.expectDirectory('dist/server').toExist(); + harness.expectFile('dist/browser/index.csr.html').toExist(); + harness.expectFile('dist/browser/index.html').toNotExist(); + }); + + it(`should generate 'index.csr.html' instead of 'index.html' when 'output' is 'index.html' and ssr is enabled.`, async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + index: { + input: 'src/index.html', + output: 'index.html', + }, + server: 'src/main.server.ts', + ssr: true, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + harness.expectDirectory('dist/server').toExist(); + harness.expectFile('dist/browser/index.csr.html').toExist(); + harness.expectFile('dist/browser/index.html').toNotExist(); + }); + }); +}); 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 83e3cc132fe5..d3a5fe9e57d3 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 @@ -12,7 +12,6 @@ import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setu describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { describe('Option: "index"', () => { beforeEach(async () => { - // Application code is not needed for index tests await harness.writeFile('src/main.ts', 'console.log("TEST");'); }); @@ -140,92 +139,72 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { }); }); - it('should generate initial preload link elements when preloadInitial is true', async () => { - harness.useTarget('build', { - ...BASE_OPTIONS, - index: { - input: 'src/index.html', - preloadInitial: true, - }, - }); - - // Setup an initial chunk usage for JS - await harness.writeFile('src/a.ts', 'console.log("TEST");'); - await harness.writeFile('src/b.ts', 'import "./a";'); - await harness.writeFile('src/main.ts', 'import "./a";\n(() => import("./b"))();'); + describe('preload', () => { + it('should generate initial preload link elements when preloadInitial is true', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + index: { + input: 'src/index.html', + preloadInitial: true, + }, + }); - const { result } = await harness.executeOnce(); + // Setup an initial chunk usage for JS + await harness.writeFile('src/a.ts', 'console.log("TEST");'); + await harness.writeFile('src/b.ts', 'import "./a";'); + await harness.writeFile('src/main.ts', 'import "./a";\n(() => import("./b"))();'); - expect(result?.success).toBe(true); - harness.expectFile('dist/browser/main.js').content.toContain('chunk-'); - harness.expectFile('dist/browser/index.html').content.toContain('modulepreload'); - harness.expectFile('dist/browser/index.html').content.toContain('chunk-'); - }); + const { result } = await harness.executeOnce(); - it('should generate initial preload link elements when preloadInitial is undefined', async () => { - harness.useTarget('build', { - ...BASE_OPTIONS, - index: { - input: 'src/index.html', - preloadInitial: undefined, - }, + expect(result?.success).toBe(true); + harness.expectFile('dist/browser/main.js').content.toContain('chunk-'); + harness.expectFile('dist/browser/index.html').content.toContain('modulepreload'); + harness.expectFile('dist/browser/index.html').content.toContain('chunk-'); }); - // Setup an initial chunk usage for JS - await harness.writeFile('src/a.ts', 'console.log("TEST");'); - await harness.writeFile('src/b.ts', 'import "./a";'); - await harness.writeFile('src/main.ts', 'import "./a";\n(() => import("./b"))();'); + it('should generate initial preload link elements when preloadInitial is undefined', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + index: { + input: 'src/index.html', + preloadInitial: undefined, + }, + }); - const { result } = await harness.executeOnce(); + // Setup an initial chunk usage for JS + await harness.writeFile('src/a.ts', 'console.log("TEST");'); + await harness.writeFile('src/b.ts', 'import "./a";'); + await harness.writeFile('src/main.ts', 'import "./a";\n(() => import("./b"))();'); - expect(result?.success).toBe(true); - harness.expectFile('dist/browser/main.js').content.toContain('chunk-'); - harness.expectFile('dist/browser/index.html').content.toContain('modulepreload'); - harness.expectFile('dist/browser/index.html').content.toContain('chunk-'); - }); + const { result } = await harness.executeOnce(); - it('should not generate initial preload link elements when preloadInitial is false', async () => { - harness.useTarget('build', { - ...BASE_OPTIONS, - index: { - input: 'src/index.html', - preloadInitial: false, - }, + expect(result?.success).toBe(true); + harness.expectFile('dist/browser/main.js').content.toContain('chunk-'); + harness.expectFile('dist/browser/index.html').content.toContain('modulepreload'); + harness.expectFile('dist/browser/index.html').content.toContain('chunk-'); }); - // Setup an initial chunk usage for JS - await harness.writeFile('src/a.ts', 'console.log("TEST");'); - await harness.writeFile('src/b.ts', 'import "./a";'); - await harness.writeFile('src/main.ts', 'import "./a";\n(() => import("./b"))();'); - - const { result } = await harness.executeOnce(); - - expect(result?.success).toBe(true); - harness.expectFile('dist/browser/main.js').content.toContain('chunk-'); - harness.expectFile('dist/browser/index.html').content.not.toContain('modulepreload'); - harness.expectFile('dist/browser/index.html').content.not.toContain('chunk-'); - }); + it('should not generate initial preload link elements when preloadInitial is false', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + index: { + input: 'src/index.html', + preloadInitial: false, + }, + }); - it(`should generate 'index.csr.html' instead of 'index.html' by default when ssr is enabled.`, async () => { - await harness.modifyFile('src/tsconfig.app.json', (content) => { - const tsConfig = JSON.parse(content); - tsConfig.files ??= []; - tsConfig.files.push('main.server.ts'); + // Setup an initial chunk usage for JS + await harness.writeFile('src/a.ts', 'console.log("TEST");'); + await harness.writeFile('src/b.ts', 'import "./a";'); + await harness.writeFile('src/main.ts', 'import "./a";\n(() => import("./b"))();'); - return JSON.stringify(tsConfig); - }); + const { result } = await harness.executeOnce(); - harness.useTarget('build', { - ...BASE_OPTIONS, - server: 'src/main.server.ts', - ssr: true, + expect(result?.success).toBe(true); + harness.expectFile('dist/browser/main.js').content.toContain('chunk-'); + harness.expectFile('dist/browser/index.html').content.not.toContain('modulepreload'); + harness.expectFile('dist/browser/index.html').content.not.toContain('chunk-'); }); - - const { result } = await harness.executeOnce(); - expect(result?.success).toBeTrue(); - harness.expectDirectory('dist/server').toExist(); - harness.expectFile('dist/browser/index.csr.html').toExist(); - harness.expectFile('dist/browser/index.html').toNotExist(); }); }); }); From cd5e119ab7e1f6c71324edde2d62be2c65fcce71 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 2 Dec 2024 21:55:50 +0000 Subject: [PATCH 0065/2162] ci: add addtional perf workflows for tracking --- .ng-dev/dx-perf-workflows.yml | 39 +++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/.ng-dev/dx-perf-workflows.yml b/.ng-dev/dx-perf-workflows.yml index 857a7b0526be..21c8b95acff3 100644 --- a/.ng-dev/dx-perf-workflows.yml +++ b/.ng-dev/dx-perf-workflows.yml @@ -1,14 +1,49 @@ workflows: build-cli: - name: Build cli + name: '@angular/cli build' prepare: - bazel clean workflow: - bazel build //packages/angular/cli:npm_package + angular-build-integration: - name: Angular Build Integration + name: '@angular/build integration' disabled: true prepare: - bazel clean workflow: - bazel test //packages/angular/build:integration_tests + + modules-builder-tests: + name: '@ngtools/webpack test' + prepare: + - bazel clean + workflow: + - bazel test //packages/ngtools/webpack:webpack_test + + devkit-core-tests: + name: '@angular/devkit/core tests' + prepare: + - bazel clean + workflow: + - bazel test //packages/angular_devkit/core:core_test + + devkit-core-tests-rerun: + name: '@angular/devkit/core return test' + prepare: + - bazel clean + workflow: + - bazel test //packages/angular_devkit/core:core_test + # Add a single line to the beginning of a file to trigger a rebuild/retest + - sed -i '1i // comment' packages/angular_devkit/core/src/workspace/core_spec.ts + - bazel test //packages/angular_devkit/core:core_test + cleanup: + # Remove the single line added + - sed -i '1d' packages/angular_devkit/core/src/workspace/core_spec.ts + + build-unit-tests: + name: '@angular/build tests' + prepare: + - bazel clean + workflow: + - bazel test //packages/angular/build:unit_tests From a8ea9cf6ad3bef928435ffa0cf9fb89b3d5d01ac Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 3 Dec 2024 10:46:51 -0500 Subject: [PATCH 0066/2162] fix(@angular/build): avoid deploy URL usage on absolute preload links The `deployUrl` option was unintentionally being prepended to preload links with absolute URLs within the generated index HTML for an appplication. This has now been corrected and absolute URLs will not be altered when a deploy URL is configured. --- .../utils/index-file/augment-index-html.ts | 32 ++++++++------- .../index-file/augment-index-html_spec.ts | 40 +++++++++++++++++++ 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/packages/angular/build/src/utils/index-file/augment-index-html.ts b/packages/angular/build/src/utils/index-file/augment-index-html.ts index 30d5f30d2b6e..7a30770fa450 100644 --- a/packages/angular/build/src/utils/index-file/augment-index-html.ts +++ b/packages/angular/build/src/utils/index-file/augment-index-html.ts @@ -65,17 +65,8 @@ export interface FileInfo { export async function augmentIndexHtml( params: AugmentIndexHtmlOptions, ): Promise<{ content: string; warnings: string[]; errors: string[] }> { - const { - loadOutputFile, - files, - entrypoints, - sri, - deployUrl = '', - lang, - baseHref, - html, - imageDomains, - } = params; + const { loadOutputFile, files, entrypoints, sri, deployUrl, lang, baseHref, html, imageDomains } = + params; const warnings: string[] = []; const errors: string[] = []; @@ -117,7 +108,7 @@ export async function augmentIndexHtml( let scriptTags: string[] = []; for (const [src, isModule] of scripts) { - const attrs = [`src="${deployUrl}${src}"`]; + const attrs = [`src="${generateUrl(src, deployUrl)}"`]; // This is also need for non entry-points as they may contain problematic code. if (isModule) { @@ -141,7 +132,7 @@ export async function augmentIndexHtml( let headerLinkTags: string[] = []; let bodyLinkTags: string[] = []; for (const src of stylesheets) { - const attrs = [`rel="stylesheet"`, `href="${deployUrl}${src}"`]; + const attrs = [`rel="stylesheet"`, `href="${generateUrl(src, deployUrl)}"`]; if (crossOrigin !== 'none') { attrs.push(`crossorigin="${crossOrigin}"`); @@ -157,7 +148,7 @@ export async function augmentIndexHtml( if (params.hints?.length) { for (const hint of params.hints) { - const attrs = [`rel="${hint.mode}"`, `href="${deployUrl}${hint.url}"`]; + const attrs = [`rel="${hint.mode}"`, `href="${generateUrl(hint.url, deployUrl)}"`]; if (hint.mode !== 'modulepreload' && crossOrigin !== 'none') { // Value is considered anonymous by the browser when not present or empty @@ -303,6 +294,19 @@ function generateSriAttributes(content: string): string { return `integrity="${algo}-${hash}"`; } +function generateUrl(value: string, deployUrl: string | undefined): string { + if (!deployUrl) { + return value; + } + + // Skip if root-relative, absolute or protocol relative url + if (/^((?:\w+:)?\/\/|data:|chrome:|\/)/.test(value)) { + return value; + } + + return `${deployUrl}${value}`; +} + function updateAttribute( tag: { attrs: { name: string; value: string }[] }, name: string, diff --git a/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts b/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts index 61aaa0674ed8..7ea16ab6121b 100644 --- a/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts +++ b/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts @@ -398,6 +398,46 @@ describe('augment-index-html', () => { `); }); + it(`should not add deploy URL to hints with an absolute URL`, async () => { + const { content, warnings } = await augmentIndexHtml({ + ...indexGeneratorOptions, + deployUrl: 'https://localhost/', + hints: [{ mode: 'preload', url: 'http://example.com/y?b=2' }], + }); + + expect(warnings).toHaveSize(0); + expect(content).toEqual(oneLineHtml` + + + + + + + + + `); + }); + + it(`should not add deploy URL to hints with a root-relative URL`, async () => { + const { content, warnings } = await augmentIndexHtml({ + ...indexGeneratorOptions, + deployUrl: 'https://example.com/', + hints: [{ mode: 'preload', url: '/y?b=2' }], + }); + + expect(warnings).toHaveSize(0); + expect(content).toEqual(oneLineHtml` + + + + + + + + + `); + }); + it('should add `.mjs` script tags', async () => { const { content } = await augmentIndexHtml({ ...indexGeneratorOptions, From 378624d3f7761d30d41568e77cd1294abad50159 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 22 Nov 2024 20:32:44 -0500 Subject: [PATCH 0067/2162] refactor(@angular/build): add initial component HMR source file analysis When component template HMR support is enabled (`NG_HMR_TEMPLATES=1`), TypeScript file changes will now be analyzed to determine if Angular component metadata has changed and if the changes can support a hot replacement. Any other changes to a TypeScript file will cause a full page reload to avoid inconsistent state between the code and running application. The analysis currently has an upper limit of 32 modified files at one time to prevent a large of amount of analysis to be performed which may take longer than a full rebuild. This value may be adjusted based on feedback. Component template HMR is currently experimental and may not support all template modifications. Both inline and file-based templates are now supported. However, rebuild times have not yet been optimized. --- .../angular/compilation/aot-compilation.ts | 61 +--- .../angular/compilation/hmr-candidates.ts | 314 ++++++++++++++++++ 2 files changed, 329 insertions(+), 46 deletions(-) create mode 100644 packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts diff --git a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts index 787c82b4127e..19e43251e950 100644 --- a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts @@ -19,6 +19,14 @@ import { import { replaceBootstrap } from '../transformers/jit-bootstrap-transformer'; import { createWorkerTransformer } from '../transformers/web-worker-transformer'; import { AngularCompilation, DiagnosticModes, EmitFileResult } from './angular-compilation'; +import { collectHmrCandidates } from './hmr-candidates'; + +/** + * The modified files count limit for performing component HMR analysis. + * Performing content analysis for a large amount of files can result in longer rebuild times + * than a full rebuild would entail. + */ +const HMR_MODIFIED_FILE_LIMIT = 32; class AngularCompilationState { constructor( @@ -66,9 +74,14 @@ export class AotCompilation extends AngularCompilation { hostOptions.externalStylesheets ??= new Map(); } + const useHmr = + compilerOptions['_enableHmr'] && + hostOptions.modifiedFiles && + hostOptions.modifiedFiles.size <= HMR_MODIFIED_FILE_LIMIT; + // Collect stale source files for HMR analysis of inline component resources let staleSourceFiles; - if (compilerOptions['_enableHmr'] && hostOptions.modifiedFiles && this.#state) { + if (useHmr && hostOptions.modifiedFiles && this.#state) { for (const modifiedFile of hostOptions.modifiedFiles) { const sourceFile = this.#state.typeScriptProgram.getSourceFile(modifiedFile); if (sourceFile) { @@ -107,7 +120,7 @@ export class AotCompilation extends AngularCompilation { await profileAsync('NG_ANALYZE_PROGRAM', () => angularCompiler.analyzeAsync()); let templateUpdates; - if (compilerOptions['_enableHmr'] && hostOptions.modifiedFiles && this.#state) { + if (useHmr && hostOptions.modifiedFiles && this.#state) { const componentNodes = collectHmrCandidates( hostOptions.modifiedFiles, angularProgram, @@ -432,47 +445,3 @@ function findAffectedFiles( return affectedFiles; } - -function collectHmrCandidates( - modifiedFiles: Set, - { compiler }: ng.NgtscProgram, - staleSourceFiles: Map | undefined, -): Set { - const candidates = new Set(); - - for (const file of modifiedFiles) { - const templateFileNodes = compiler.getComponentsWithTemplateFile(file); - if (templateFileNodes.size) { - templateFileNodes.forEach((node) => candidates.add(node as ts.ClassDeclaration)); - continue; - } - - const styleFileNodes = compiler.getComponentsWithStyleFile(file); - if (styleFileNodes.size) { - styleFileNodes.forEach((node) => candidates.add(node as ts.ClassDeclaration)); - continue; - } - - const staleSource = staleSourceFiles?.get(file); - if (staleSource === undefined) { - // Unknown file requires a rebuild so clear out the candidates and stop collecting - candidates.clear(); - break; - } - - const updatedSource = compiler.getCurrentProgram().getSourceFile(file); - if (updatedSource === undefined) { - // No longer existing program file requires a rebuild so clear out the candidates and stop collecting - candidates.clear(); - break; - } - - // Compare the stale and updated file for changes - - // TODO: Implement -- for now assume a rebuild is needed - candidates.clear(); - break; - } - - return candidates; -} diff --git a/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts b/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts new file mode 100644 index 000000000000..bc271d160cad --- /dev/null +++ b/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts @@ -0,0 +1,314 @@ +/** + * @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 ng from '@angular/compiler-cli'; +import assert from 'node:assert'; +import ts from 'typescript'; + +/** + * Analyzes one or more modified files for changes to determine if any + * class declarations for Angular components are candidates for hot + * module replacement (HMR). If any source files are also modified but + * are not candidates then all candidates become invalid. This invalidation + * ensures that a full rebuild occurs and the running application stays + * synchronized with the code. + * @param modifiedFiles A set of modified files to analyze. + * @param param1 An Angular compiler instance + * @param staleSourceFiles A map of paths to previous source file instances. + * @returns A set of HMR candidate component class declarations. + */ +export function collectHmrCandidates( + modifiedFiles: Set, + { compiler }: ng.NgtscProgram, + staleSourceFiles: Map | undefined, +): Set { + const candidates = new Set(); + + for (const file of modifiedFiles) { + // If the file is a template for component(s), add component classes as candidates + const templateFileNodes = compiler.getComponentsWithTemplateFile(file); + if (templateFileNodes.size) { + templateFileNodes.forEach((node) => candidates.add(node as ts.ClassDeclaration)); + continue; + } + + // If the file is a style for component(s), add component classes as candidates + const styleFileNodes = compiler.getComponentsWithStyleFile(file); + if (styleFileNodes.size) { + styleFileNodes.forEach((node) => candidates.add(node as ts.ClassDeclaration)); + continue; + } + + const staleSource = staleSourceFiles?.get(file); + if (staleSource === undefined) { + // Unknown file requires a rebuild so clear out the candidates and stop collecting + candidates.clear(); + break; + } + + const updatedSource = compiler.getCurrentProgram().getSourceFile(file); + if (updatedSource === undefined) { + // No longer existing program file requires a rebuild so clear out the candidates and stop collecting + candidates.clear(); + break; + } + + // Analyze the stale and updated file for changes + const fileCandidates = analyzeFileUpdates(staleSource, updatedSource, compiler); + if (fileCandidates) { + fileCandidates.forEach((node) => candidates.add(node)); + } else { + // Unsupported HMR changes present + // Only template and style literal changes are allowed. + candidates.clear(); + break; + } + } + + return candidates; +} + +/** + * Analyzes the updates of a source file for potential HMR component class candidates. + * A source file can contain candidates if only the Angular component metadata of a class + * has been changed and the metadata changes are only of supported fields. + * @param stale The stale (previous) source file instance. + * @param updated The updated source file instance. + * @param compiler An Angular compiler instance. + * @returns An array of candidate class declarations; or `null` if unsupported changes are present. + */ +function analyzeFileUpdates( + stale: ts.SourceFile, + updated: ts.SourceFile, + compiler: ng.NgtscProgram['compiler'], +): ts.ClassDeclaration[] | null { + if (stale.statements.length !== updated.statements.length) { + return null; + } + + const candidates: ts.ClassDeclaration[] = []; + + for (let i = 0; i < updated.statements.length; ++i) { + const updatedNode = updated.statements[i]; + const staleNode = stale.statements[i]; + + if (ts.isClassDeclaration(updatedNode)) { + if (!ts.isClassDeclaration(staleNode)) { + return null; + } + + // Check class declaration differences (name/heritage/modifiers) + if (updatedNode.name?.text !== staleNode.name?.text) { + return null; + } + if (!equalRangeText(updatedNode.heritageClauses, updated, staleNode.heritageClauses, stale)) { + return null; + } + const updatedModifiers = ts.getModifiers(updatedNode); + const staleModifiers = ts.getModifiers(staleNode); + if ( + updatedModifiers?.length !== staleModifiers?.length || + !updatedModifiers?.every((updatedModifier) => + staleModifiers?.some((staleModifier) => updatedModifier.kind === staleModifier.kind), + ) + ) { + return null; + } + + // Check for component class nodes + const meta = compiler.getMeta(updatedNode); + if (meta?.decorator && (meta as { isComponent?: boolean }).isComponent === true) { + const updatedDecorators = ts.getDecorators(updatedNode); + const staleDecorators = ts.getDecorators(staleNode); + if (!staleDecorators || staleDecorators.length !== updatedDecorators?.length) { + return null; + } + + // TODO: Check other decorators instead of assuming all multi-decorator components are unsupported + if (staleDecorators.length > 1) { + return null; + } + + // Find index of component metadata decorator + const metaDecoratorIndex = updatedDecorators?.indexOf(meta.decorator); + assert( + metaDecoratorIndex !== undefined, + 'Component metadata decorator should always be present on component class.', + ); + const updatedDecoratorExpression = meta.decorator.expression; + assert( + ts.isCallExpression(updatedDecoratorExpression) && + updatedDecoratorExpression.arguments.length === 1, + 'Component metadata decorator should contain a call expression with a single argument.', + ); + + // Check the matching stale index for the component decorator + const staleDecoratorExpression = staleDecorators[metaDecoratorIndex]?.expression; + if ( + !staleDecoratorExpression || + !ts.isCallExpression(staleDecoratorExpression) || + staleDecoratorExpression.arguments.length !== 1 + ) { + return null; + } + + // Check decorator name/expression + // NOTE: This would typically be `Component` but can also be a property expression or some other alias. + // To avoid complex checks, this ensures the textual representation does not change. This has a low chance + // of a false positive if the expression is changed to still reference the `Component` type but has different + // text. However, it is rare for `Component` to not be used directly and additionally unlikely that it would + // be changed between edits. A false positive would also only lead to a difference of a full page reload versus + // an HMR update. + if ( + !equalRangeText( + updatedDecoratorExpression.expression, + updated, + staleDecoratorExpression.expression, + stale, + ) + ) { + return null; + } + + // Compare component meta decorator object literals + if ( + hasUnsupportedMetaUpdates( + staleDecoratorExpression, + stale, + updatedDecoratorExpression, + updated, + ) + ) { + return null; + } + + // Compare text of the member nodes to determine if any changes have occurred + if (!equalRangeText(updatedNode.members, updated, staleNode.members, stale)) { + // A change to a member outside a component's metadata is unsupported + return null; + } + + // If all previous class checks passed, this class is supported for HMR updates + candidates.push(updatedNode); + continue; + } + } + + // Compare text of the statement nodes to determine if any changes have occurred + // TODO: Consider expanding this to check semantic updates for each node kind + if (!equalRangeText(updatedNode, updated, staleNode, stale)) { + // A change to a statement outside a component's metadata is unsupported + return null; + } + } + + return candidates; +} + +/** + * The set of Angular component metadata fields that are supported by HMR updates. + */ +const SUPPORTED_FIELDS = new Set(['template', 'templateUrl', 'styles', 'styleUrl', 'stylesUrl']); + +/** + * Analyzes the metadata fields of a decorator call expression for unsupported HMR updates. + * Only updates to supported fields can be present for HMR to be viable. + * @param staleCall A call expression instance. + * @param staleSource The source file instance containing the stale call instance. + * @param updatedCall A call expression instance. + * @param updatedSource The source file instance containing the updated call instance. + * @returns true, if unsupported metadata updates are present; false, otherwise. + */ +function hasUnsupportedMetaUpdates( + staleCall: ts.CallExpression, + staleSource: ts.SourceFile, + updatedCall: ts.CallExpression, + updatedSource: ts.SourceFile, +): boolean { + const staleObject = staleCall.arguments[0]; + const updatedObject = updatedCall.arguments[0]; + + if (!ts.isObjectLiteralExpression(staleObject) || !ts.isObjectLiteralExpression(updatedObject)) { + return true; + } + + const unsupportedFields: ts.Node[] = []; + + for (const property of staleObject.properties) { + if (!ts.isPropertyAssignment(property) || ts.isComputedPropertyName(property.name)) { + // Unsupported object literal property + return true; + } + + const name = property.name.text; + if (SUPPORTED_FIELDS.has(name)) { + continue; + } + + unsupportedFields.push(property.initializer); + } + + let i = 0; + for (const property of updatedObject.properties) { + if (!ts.isPropertyAssignment(property) || ts.isComputedPropertyName(property.name)) { + // Unsupported object literal property + return true; + } + + const name = property.name.text; + if (SUPPORTED_FIELDS.has(name)) { + continue; + } + + // Compare in order + if (!equalRangeText(property.initializer, updatedSource, unsupportedFields[i++], staleSource)) { + return true; + } + } + + return i !== unsupportedFields.length; +} + +/** + * Compares the text from a provided range in a source file to the text of a range in a second source file. + * The comparison avoids making any intermediate string copies. + * @param firstRange A text range within the first source file. + * @param firstSource A source file instance. + * @param secondRange A text range within the second source file. + * @param secondSource A source file instance. + * @returns true, if the text from both ranges is equal; false, otherwise. + */ +function equalRangeText( + firstRange: ts.ReadonlyTextRange | undefined, + firstSource: ts.SourceFile, + secondRange: ts.ReadonlyTextRange | undefined, + secondSource: ts.SourceFile, +): boolean { + // Check matching undefined values + if (!firstRange || !secondRange) { + return firstRange === secondRange; + } + + // Ensure lengths are equal + const firstLength = firstRange.end - firstRange.pos; + const secondLength = secondRange.end - secondRange.pos; + if (firstLength !== secondLength) { + return false; + } + + // Check each character + for (let i = 0; i < firstLength; ++i) { + const firstChar = firstSource.text.charCodeAt(i + firstRange.pos); + const secondChar = secondSource.text.charCodeAt(i + secondRange.pos); + if (firstChar !== secondChar) { + return false; + } + } + + return true; +} From 480cba5fc5fa759001016645092e2cfdc37b9465 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 4 Dec 2024 06:13:29 +0000 Subject: [PATCH 0068/2162] build: update github/codeql-action action to v3.27.6 --- .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 d451a7f133c6..3a22e0501e6c 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@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 + uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6 with: sarif_file: results.sarif From 4db4dd4315fd8c31872bbf1e82e3414eea15ffef Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 08:49:37 +0000 Subject: [PATCH 0069/2162] refactor(@angular/ssr): replace `Map` with `Record` in SSR manifest Replaced `Map` with `Record` in SSR manifest to simplify structure and improve testing/setup. --- .../src/utils/server-rendering/manifest.ts | 29 ++-- packages/angular/ssr/src/app-engine.ts | 11 +- packages/angular/ssr/src/assets.ts | 4 +- packages/angular/ssr/src/manifest.ts | 16 +- packages/angular/ssr/test/app-engine_spec.ts | 151 +++++++++--------- packages/angular/ssr/test/assets_spec.ts | 26 ++- packages/angular/ssr/test/testing-utils.ts | 66 ++++---- 7 files changed, 155 insertions(+), 148 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index a757c79561f3..ba05db89aa65 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -55,7 +55,7 @@ export function generateAngularServerAppEngineManifest( i18nOptions: NormalizedApplicationBuildOptions['i18nOptions'], baseHref: string | undefined, ): string { - const entryPointsContent: string[] = []; + const entryPoints: Record = {}; if (i18nOptions.shouldInline) { for (const locale of i18nOptions.inlineLocales) { @@ -69,18 +69,22 @@ export function generateAngularServerAppEngineManifest( const end = localeWithBaseHref[localeWithBaseHref.length - 1] === '/' ? -1 : undefined; localeWithBaseHref = localeWithBaseHref.slice(start, end); - entryPointsContent.push(`['${localeWithBaseHref}', () => import('${importPath}')]`); + entryPoints[localeWithBaseHref] = `() => import('${importPath}')`; } } else { - entryPointsContent.push(`['', () => import('./${MAIN_SERVER_OUTPUT_FILENAME}')]`); + entryPoints[''] = `() => import('./${MAIN_SERVER_OUTPUT_FILENAME}')`; } const manifestContent = ` export default { basePath: '${baseHref ?? '/'}', - entryPoints: new Map([${entryPointsContent.join(', \n')}]), + entryPoints: { + ${Object.entries(entryPoints) + .map(([key, value]) => `'${key}': ${value}`) + .join(',\n ')} + }, }; - `; +`; return manifestContent; } @@ -122,7 +126,7 @@ export function generateAngularServerAppManifest( serverAssetsChunks: BuildOutputFile[]; } { const serverAssetsChunks: BuildOutputFile[] = []; - const serverAssetsContent: string[] = []; + const serverAssets: Record = {}; for (const file of [...additionalHtmlOutputFiles.values(), ...outputFiles]) { const extension = extname(file.path); if (extension === '.html' || (inlineCriticalCss && extension === '.css')) { @@ -135,9 +139,8 @@ export function generateAngularServerAppManifest( ), ); - serverAssetsContent.push( - `['${file.path}', {size: ${file.size}, hash: '${file.hash}', text: () => import('./${jsChunkFilePath}').then(m => m.default)}]`, - ); + serverAssets[file.path] = + `{size: ${file.size}, hash: '${file.hash}', text: () => import('./${jsChunkFilePath}').then(m => m.default)}`; } } @@ -146,9 +149,13 @@ export default { bootstrap: () => import('./main.server.mjs').then(m => m.default), inlineCriticalCss: ${inlineCriticalCss}, baseHref: '${baseHref}', - locale: ${locale !== undefined ? `'${locale}'` : undefined}, + locale: ${JSON.stringify(locale)}, routes: ${JSON.stringify(routes, undefined, 2)}, - assets: new Map([\n${serverAssetsContent.join(', \n')}\n]), + assets: { + ${Object.entries(serverAssets) + .map(([key, value]) => `'${key}': ${value}`) + .join(',\n ')} + }, }; `; diff --git a/packages/angular/ssr/src/app-engine.ts b/packages/angular/ssr/src/app-engine.ts index cda1754fcbdf..2b3b15ef7ea4 100644 --- a/packages/angular/ssr/src/app-engine.ts +++ b/packages/angular/ssr/src/app-engine.ts @@ -46,6 +46,11 @@ export class AngularAppEngine { */ private readonly manifest = getAngularAppEngineManifest(); + /** + * The number of entry points available in the server application's manifest. + */ + private readonly entryPointsCount = Object.keys(this.manifest.entryPoints).length; + /** * A cache that holds entry points, keyed by their potential locale string. */ @@ -113,7 +118,7 @@ export class AngularAppEngine { } const { entryPoints } = this.manifest; - const entryPoint = entryPoints.get(potentialLocale); + const entryPoint = entryPoints[potentialLocale]; if (!entryPoint) { return undefined; } @@ -136,8 +141,8 @@ export class AngularAppEngine { * @returns A promise that resolves to the entry point exports or `undefined` if not found. */ private getEntryPointExportsForUrl(url: URL): Promise | undefined { - const { entryPoints, basePath } = this.manifest; - if (entryPoints.size === 1) { + const { basePath } = this.manifest; + if (this.entryPointsCount === 1) { return this.getEntryPointExports(''); } diff --git a/packages/angular/ssr/src/assets.ts b/packages/angular/ssr/src/assets.ts index 5e72647b0bdc..934d0c7cd3ae 100644 --- a/packages/angular/ssr/src/assets.ts +++ b/packages/angular/ssr/src/assets.ts @@ -27,7 +27,7 @@ export class ServerAssets { * @throws Error - Throws an error if the asset does not exist. */ getServerAsset(path: string): ServerAsset { - const asset = this.manifest.assets.get(path); + const asset = this.manifest.assets[path]; if (!asset) { throw new Error(`Server asset '${path}' does not exist.`); } @@ -42,7 +42,7 @@ export class ServerAssets { * @returns A boolean indicating whether the asset exists. */ hasServerAsset(path: string): boolean { - return this.manifest.assets.has(path); + return !!this.manifest.assets[path]; } /** diff --git a/packages/angular/ssr/src/manifest.ts b/packages/angular/ssr/src/manifest.ts index f18aa01af4ea..2c0d642ec2ae 100644 --- a/packages/angular/ssr/src/manifest.ts +++ b/packages/angular/ssr/src/manifest.ts @@ -10,7 +10,7 @@ import type { SerializableRouteTreeNode } from './routes/route-tree'; import { AngularBootstrap } from './utils/ng'; /** - * Represents of a server asset stored in the manifest. + * Represents a server asset stored in the manifest. */ export interface ServerAsset { /** @@ -53,12 +53,12 @@ export interface EntryPointExports { */ export interface AngularAppEngineManifest { /** - * A map of entry points for the server application. - * Each entry in the map consists of: + * A readonly record of entry points for the server application. + * Each entry consists of: * - `key`: The base href for the entry point. * - `value`: A function that returns a promise resolving to an object of type `EntryPointExports`. */ - readonly entryPoints: ReadonlyMap Promise>; + readonly entryPoints: Readonly Promise) | undefined>>; /** * The base path for the server application. @@ -78,12 +78,12 @@ export interface AngularAppManifest { readonly baseHref: string; /** - * A map of assets required by the server application. - * Each entry in the map consists of: + * A readonly record of assets required by the server application. + * Each entry consists of: * - `key`: The path of the asset. - * - `value`: A function returning a promise that resolves to the file contents of the asset. + * - `value`: An object of type `ServerAsset`. */ - readonly assets: ReadonlyMap; + readonly assets: Readonly>; /** * The bootstrap mechanism for the server application. diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index fd37fb5b27ee..df405703a5bf 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -18,6 +18,57 @@ import { setAngularAppEngineManifest } from '../src/manifest'; import { RenderMode } from '../src/routes/route-config'; import { setAngularAppTestingManifest } from './testing-utils'; +function createEntryPoint(locale: string) { + return async () => { + @Component({ + standalone: true, + selector: `app-ssr-${locale}`, + template: `SSR works ${locale.toUpperCase()}`, + }) + class SSRComponent {} + + @Component({ + standalone: true, + selector: `app-ssg-${locale}`, + template: `SSG works ${locale.toUpperCase()}`, + }) + class SSGComponent {} + + setAngularAppTestingManifest( + [ + { path: 'ssg', component: SSGComponent }, + { path: 'ssr', component: SSRComponent }, + ], + [ + { path: 'ssg', renderMode: RenderMode.Prerender }, + { path: '**', renderMode: RenderMode.Server }, + ], + '/' + locale, + { + 'ssg/index.html': { + size: 25, + hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', + text: async () => ` + + SSG page + + + + SSG works ${locale.toUpperCase()} + + + `, + }, + }, + ); + + return { + ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp, + ɵdestroyAngularServerApp: destroyAngularServerApp, + }; + }; +} + describe('AngularAppEngine', () => { let appEngine: AngularAppEngine; @@ -28,59 +79,10 @@ describe('AngularAppEngine', () => { setAngularAppEngineManifest({ // Note: Although we are testing only one locale, we need to configure two or more // to ensure that we test a different code path. - entryPoints: new Map( - ['it', 'en'].map((locale) => [ - locale, - async () => { - @Component({ - standalone: true, - selector: `app-ssr-${locale}`, - template: `SSR works ${locale.toUpperCase()}`, - }) - class SSRComponent {} - - @Component({ - standalone: true, - selector: `app-ssg-${locale}`, - template: `SSG works ${locale.toUpperCase()}`, - }) - class SSGComponent {} - - setAngularAppTestingManifest( - [ - { path: 'ssg', component: SSGComponent }, - { path: 'ssr', component: SSRComponent }, - ], - [ - { path: 'ssg', renderMode: RenderMode.Prerender }, - { path: '**', renderMode: RenderMode.Server }, - ], - '/' + locale, - { - 'ssg/index.html': { - size: 25, - hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', - text: async () => ` - - SSG page - - - - SSG works ${locale.toUpperCase()} - - - `, - }, - }, - ); - - return { - ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp, - ɵdestroyAngularServerApp: destroyAngularServerApp, - }; - }, - ]), - ), + entryPoints: { + it: createEntryPoint('it'), + en: createEntryPoint('en'), + }, basePath: '', }); @@ -143,29 +145,26 @@ describe('AngularAppEngine', () => { destroyAngularServerApp(); setAngularAppEngineManifest({ - entryPoints: new Map([ - [ - '', - async () => { - @Component({ - standalone: true, - selector: 'app-home', - template: `Home works`, - }) - class HomeComponent {} - - setAngularAppTestingManifest( - [{ path: 'home', component: HomeComponent }], - [{ path: '**', renderMode: RenderMode.Server }], - ); - - return { - ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp, - ɵdestroyAngularServerApp: destroyAngularServerApp, - }; - }, - ], - ]), + entryPoints: { + '': async () => { + @Component({ + standalone: true, + selector: 'app-home', + template: `Home works`, + }) + class HomeComponent {} + + setAngularAppTestingManifest( + [{ path: 'home', component: HomeComponent }], + [{ path: '**', renderMode: RenderMode.Server }], + ); + + return { + ɵgetOrCreateAngularServerApp: getOrCreateAngularServerApp, + ɵdestroyAngularServerApp: destroyAngularServerApp, + }; + }, + }, basePath: '', }); diff --git a/packages/angular/ssr/test/assets_spec.ts b/packages/angular/ssr/test/assets_spec.ts index fa794f4d9317..b5633cbad52d 100644 --- a/packages/angular/ssr/test/assets_spec.ts +++ b/packages/angular/ssr/test/assets_spec.ts @@ -15,20 +15,18 @@ describe('ServerAsset', () => { assetManager = new ServerAssets({ baseHref: '/', bootstrap: undefined as never, - assets: new Map( - Object.entries({ - 'index.server.html': { - text: async () => 'Index', - size: 18, - hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', - }, - 'index.other.html': { - text: async () => 'Other', - size: 18, - hash: '4a455a99366921d396f5d51c7253c4678764f5e9487f2c27baaa0f33553c8ce3', - }, - }), - ), + assets: { + 'index.server.html': { + text: async () => 'Index', + size: 18, + hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', + }, + 'index.other.html': { + text: async () => 'Other', + size: 18, + hash: '4a455a99366921d396f5d51c7253c4678764f5e9487f2c27baaa0f33553c8ce3', + }, + }, }); }); diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index 9c48479fe038..ff6803df58a8 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -32,40 +32,38 @@ export function setAngularAppTestingManifest( setAngularAppManifest({ inlineCriticalCss: false, baseHref, - assets: new Map( - Object.entries({ - ...additionalServerAssets, - 'index.server.html': { - size: 25, - hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', - text: async () => ` - - SSR page - - - - - - - `, - }, - 'index.csr.html': { - size: 25, - hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', - text: async () => - ` - - CSR page - - - - - - - `, - }, - }), - ), + assets: { + ...additionalServerAssets, + 'index.server.html': { + size: 25, + hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', + text: async () => ` + + SSR page + + + + + + + `, + }, + 'index.csr.html': { + size: 25, + hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', + text: async () => + ` + + CSR page + + + + + + + `, + }, + }, bootstrap: async () => () => { @Component({ standalone: true, From f2571b3251285d42be0ce5381a6496e08fc345f9 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 13:47:44 +0000 Subject: [PATCH 0070/2162] build: update all non-major dependencies --- package.json | 12 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 12 +- .../browser/specs/lazy-module_spec.ts | 2 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- yarn.lock | 135 +++++++++++++----- 7 files changed, 116 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 513ca8106244..86e009d8dab7 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@angular/router": "^19.1.0-next.0", "@angular/service-worker": "^19.1.0-next.0", "@babel/core": "7.26.0", - "@babel/generator": "7.26.2", + "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-syntax-import-attributes": "7.26.0", @@ -176,7 +176,7 @@ "pacote": "20.0.0", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.7.0", + "piscina": "4.8.0", "postcss": "8.4.49", "postcss-loader": "8.1.1", "prettier": "^3.0.0", @@ -188,8 +188,8 @@ "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", - "sass": "1.81.1", - "sass-loader": "16.0.3", + "sass": "1.82.0", + "sass-loader": "16.0.4", "semver": "7.6.3", "shelljs": "^0.8.5", "source-map": "0.7.4", @@ -202,13 +202,13 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.7.2", - "undici": "7.0.0", + "undici": "7.1.0", "unenv": "^1.10.0", "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", "vite": "6.0.2", "watchpack": "2.4.2", - "webpack": "5.96.1", + "webpack": "5.97.0", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index df23b7c63527..9eb07e4c8e69 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,9 +37,9 @@ "mrmime": "2.0.0", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.7.0", + "piscina": "4.8.0", "rollup": "4.28.0", - "sass": "1.81.1", + "sass": "1.82.0", "semver": "7.6.3", "vite": "6.0.2", "watchpack": "2.4.2" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 9df89e205a38..e53d5a6784c0 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -12,7 +12,7 @@ "@angular-devkit/core": "0.0.0-PLACEHOLDER", "@angular/build": "0.0.0-PLACEHOLDER", "@babel/core": "7.26.0", - "@babel/generator": "7.26.2", + "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-transform-async-generator-functions": "7.25.9", @@ -43,20 +43,20 @@ "open": "10.1.0", "ora": "5.4.1", "picomatch": "4.0.2", - "piscina": "4.7.0", + "piscina": "4.8.0", "postcss": "8.4.49", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.81.1", - "sass-loader": "16.0.3", + "sass": "1.82.0", + "sass-loader": "16.0.4", "semver": "7.6.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", "terser": "5.36.0", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.96.1", + "webpack": "5.97.0", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1", @@ -66,7 +66,7 @@ "esbuild": "0.24.0" }, "devDependencies": { - "undici": "7.0.0" + "undici": "7.1.0" }, "peerDependencies": { "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0", 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 a4ba1b1b845a..d432339bcbf1 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 @@ -139,7 +139,7 @@ describe('Browser Builder lazy modules', () => { host.replaceInFile('src/tsconfig.app.json', '"main.ts"', `"main.ts","lazy-module.ts"`); const { files } = await browserBuild(architect, host, target); - expect(files['common.js']).toBeDefined(); + expect(files['src_lazy-module_ts.js']).toBeDefined(); }); it(`supports making a common bundle for shared lazy modules`, async () => { diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 6e61b3e22789..173b3d38df65 100644 --- a/packages/angular_devkit/build_webpack/package.json +++ b/packages/angular_devkit/build_webpack/package.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "webpack": "5.96.1" + "webpack": "5.97.0" }, "peerDependencies": { "webpack": "^5.30.0", diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 820b5e7c67d7..b1b27c7c4a3a 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "19.1.0-next.0", "@angular/compiler-cli": "19.1.0-next.0", "typescript": "5.7.2", - "webpack": "5.96.1" + "webpack": "5.97.0" } } diff --git a/yarn.lock b/yarn.lock index 8198aaa95e4a..af65bc7145d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,7 +65,7 @@ __metadata: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" "@angular/build": "npm:0.0.0-PLACEHOLDER" "@babel/core": "npm:7.26.0" - "@babel/generator": "npm:7.26.2" + "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-transform-async-generator-functions": "npm:7.25.9" @@ -97,21 +97,21 @@ __metadata: open: "npm:10.1.0" ora: "npm:5.4.1" picomatch: "npm:4.0.2" - piscina: "npm:4.7.0" + piscina: "npm:4.8.0" postcss: "npm:8.4.49" postcss-loader: "npm:8.1.1" resolve-url-loader: "npm:5.0.0" rxjs: "npm:7.8.1" - sass: "npm:1.81.1" - sass-loader: "npm:16.0.3" + sass: "npm:1.82.0" + sass-loader: "npm:16.0.4" semver: "npm:7.6.3" source-map-loader: "npm:5.0.0" source-map-support: "npm:0.5.21" terser: "npm:5.36.0" tree-kill: "npm:1.2.2" tslib: "npm:2.8.1" - undici: "npm:7.0.0" - webpack: "npm:5.96.1" + undici: "npm:7.1.0" + webpack: "npm:5.97.0" webpack-dev-middleware: "npm:7.4.2" webpack-dev-server: "npm:5.1.0" webpack-merge: "npm:6.0.1" @@ -169,7 +169,7 @@ __metadata: "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" rxjs: "npm:7.8.1" - webpack: "npm:5.96.1" + webpack: "npm:5.97.0" peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 @@ -391,9 +391,9 @@ __metadata: mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" - piscina: "npm:4.7.0" + piscina: "npm:4.8.0" rollup: "npm:4.28.0" - sass: "npm:1.81.1" + sass: "npm:1.82.0" semver: "npm:7.6.3" vite: "npm:6.0.2" watchpack: "npm:2.4.2" @@ -645,7 +645,7 @@ __metadata: "@angular/router": "npm:^19.1.0-next.0" "@angular/service-worker": "npm:^19.1.0-next.0" "@babel/core": "npm:7.26.0" - "@babel/generator": "npm:7.26.2" + "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-syntax-import-attributes": "npm:7.26.0" @@ -751,7 +751,7 @@ __metadata: pacote: "npm:20.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" - piscina: "npm:4.7.0" + piscina: "npm:4.8.0" postcss: "npm:8.4.49" postcss-loader: "npm:8.1.1" prettier: "npm:^3.0.0" @@ -763,8 +763,8 @@ __metadata: rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" - sass: "npm:1.81.1" - sass-loader: "npm:16.0.3" + sass: "npm:1.82.0" + sass-loader: "npm:16.0.4" semver: "npm:7.6.3" shelljs: "npm:^0.8.5" source-map: "npm:0.7.4" @@ -777,13 +777,13 @@ __metadata: ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" typescript: "npm:5.7.2" - undici: "npm:7.0.0" + undici: "npm:7.1.0" unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" vite: "npm:6.0.2" watchpack: "npm:2.4.2" - webpack: "npm:5.96.1" + webpack: "npm:5.97.0" webpack-dev-middleware: "npm:7.4.2" webpack-dev-server: "npm:5.1.0" webpack-merge: "npm:6.0.1" @@ -1023,7 +1023,20 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.26.2, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": +"@babel/generator@npm:7.26.3": + version: 7.26.3 + resolution: "@babel/generator@npm:7.26.3" + dependencies: + "@babel/parser": "npm:^7.26.3" + "@babel/types": "npm:^7.26.3" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/54f260558e3e4ec8942da3cde607c35349bb983c3a7c5121243f96893fba3e8cd62e1f1773b2051f936f8c8a10987b758d5c7d76dbf2784e95bb63ab4843fa00 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": version: 7.26.2 resolution: "@babel/generator@npm:7.26.2" dependencies: @@ -1279,6 +1292,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/parser@npm:7.26.3" + dependencies: + "@babel/types": "npm:^7.26.3" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" @@ -2148,6 +2172,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/types@npm:7.26.3" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b + languageName: node + linkType: hard + "@bazel/bazelisk@npm:1.24.1": version: 1.24.1 resolution: "@bazel/bazelisk@npm:1.24.1" @@ -3599,7 +3633,7 @@ __metadata: "@angular/compiler": "npm:19.1.0-next.0" "@angular/compiler-cli": "npm:19.1.0-next.0" typescript: "npm:5.7.2" - webpack: "npm:5.96.1" + webpack: "npm:5.97.0" peerDependencies: "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 typescript: ">=5.5 <5.8" @@ -6324,7 +6358,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.12.1": +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: @@ -6410,7 +6444,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.12.1": +"@webassemblyjs/wasm-edit@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" dependencies: @@ -6451,7 +6485,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.12.1": +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: @@ -15030,6 +15064,18 @@ __metadata: languageName: node linkType: hard +"piscina@npm:4.8.0": + version: 4.8.0 + resolution: "piscina@npm:4.8.0" + dependencies: + "@napi-rs/nice": "npm:^1.0.1" + dependenciesMeta: + "@napi-rs/nice": + optional: true + checksum: 10c0/963ee0dc0862e936c88357b21b0b4fa32407ab21e9600756504411f368dcfae7478c8a19e13d0dd8afed56a8252a8e5967ee4413aa33dd436751b7ee2804531e + languageName: node + linkType: hard + "pkg-dir@npm:^4.1.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" @@ -16332,9 +16378,9 @@ __metadata: languageName: node linkType: hard -"sass-loader@npm:16.0.3": - version: 16.0.3 - resolution: "sass-loader@npm:16.0.3" +"sass-loader@npm:16.0.4": + version: 16.0.4 + resolution: "sass-loader@npm:16.0.4" dependencies: neo-async: "npm:^2.6.2" peerDependencies: @@ -16354,7 +16400,7 @@ __metadata: optional: true webpack: optional: true - checksum: 10c0/2dc188dd0d5276ed0251eee7f245848ccf9df6ec121227462403f322c17a3dbe100fb60d47968f078e585e4aced452eb7fa1a8e55b415d5de3151fa1bbf2d561 + checksum: 10c0/d57c5fa35620e9022cfa3e5d49f3f9b3e54fb8b2fa9d021c10fe26c8c2f77103e038b6540eb20123a6f73aef23d2beb04033d3b7772588ca3f3c0ba2a4ee40ac languageName: node linkType: hard @@ -16375,7 +16421,24 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.81.1, sass@npm:^1.81.0": +"sass@npm:1.82.0": + version: 1.82.0 + resolution: "sass@npm:1.82.0" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + chokidar: "npm:^4.0.0" + immutable: "npm:^5.0.2" + source-map-js: "npm:>=0.6.2 <2.0.0" + dependenciesMeta: + "@parcel/watcher": + optional: true + bin: + sass: sass.js + checksum: 10c0/7f86fe6ade4f6018862c448ed69d5c52f485b0125c9dab24e63f679739a04cc7c56562d588e3cf16b5efb4d2c4d0530e62740e1cfd273e2e3707d04d11011736 + languageName: node + linkType: hard + +"sass@npm:^1.81.0": version: 1.81.1 resolution: "sass@npm:1.81.1" dependencies: @@ -18151,10 +18214,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:7.0.0": - version: 7.0.0 - resolution: "undici@npm:7.0.0" - checksum: 10c0/6d91d5ea5f858ac9ea8b8e28722167dcb4606dc8f3886b6768de94de96fb0817a7fec974ecbc51c1fec03131e2cc44df49a2ab966f5d2d191f32163776f36d91 +"undici@npm:7.1.0": + version: 7.1.0 + resolution: "undici@npm:7.1.0" + checksum: 10c0/6fd0a63ca5e585128d67324e29cc49c903bf1752fd3b6f318627bb3765326df6f80c02f9c6fb2636ce3934706920c0b7fe4fe8ae19afe0a698f9ffbd7ef57548 languageName: node linkType: hard @@ -18853,15 +18916,15 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5.96.1": - version: 5.96.1 - resolution: "webpack@npm:5.96.1" +"webpack@npm:5.97.0": + version: 5.97.0 + resolution: "webpack@npm:5.97.0" dependencies: "@types/eslint-scope": "npm:^3.7.7" "@types/estree": "npm:^1.0.6" - "@webassemblyjs/ast": "npm:^1.12.1" - "@webassemblyjs/wasm-edit": "npm:^1.12.1" - "@webassemblyjs/wasm-parser": "npm:^1.12.1" + "@webassemblyjs/ast": "npm:^1.14.1" + "@webassemblyjs/wasm-edit": "npm:^1.14.1" + "@webassemblyjs/wasm-parser": "npm:^1.14.1" acorn: "npm:^8.14.0" browserslist: "npm:^4.24.0" chrome-trace-event: "npm:^1.0.2" @@ -18885,7 +18948,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/ae6052fde9a546f79f14987b65823ba4024c6642a8489339ecfee7a351dff93325842aad453295bbdc6b65fb1690e4ef07529db63aa84ece55c7869e991a0039 + checksum: 10c0/a8714d42defbf52382b61c157f68e161a16d0edf228d8d9abaa7a165f3ee0ac7386a08d28d4dcf8d6740ea5bda0c4d4abfeeb838df029e636c1c28bb2454ac56 languageName: node linkType: hard From f897b7a7f1dbbcc2ef19ca0beabc998b9baf217a Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 09:09:33 +0000 Subject: [PATCH 0071/2162] fix(@angular/ssr): apply HTML transformation to CSR responses Before this commit, HTML transformations were not applied to CSR responses, leading to the omission of the Vite client code. Closes #29033 --- packages/angular/ssr/src/app.ts | 39 +++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index e21392e9f8f0..19ef87591db7 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -25,12 +25,7 @@ import { InlineCriticalCssProcessor } from './utils/inline-critical-css'; import { LRUCache } from './utils/lru-cache'; import { AngularBootstrap, renderAngular } from './utils/ng'; import { promiseWithAbort } from './utils/promise'; -import { - buildPathWithParams, - joinUrlParts, - stripIndexHtmlFromURL, - stripLeadingSlash, -} from './utils/url'; +import { buildPathWithParams, joinUrlParts, stripLeadingSlash } from './utils/url'; /** * Maximum number of critical CSS entries the cache can store. @@ -256,6 +251,7 @@ export class AngularServerApp { return null; } + const url = new URL(request.url); const platformProviders: StaticProvider[] = []; // Initialize the response with status and headers if available. @@ -285,7 +281,10 @@ export class AngularServerApp { ); } else if (renderMode === RenderMode.Client) { // Serve the client-side rendered version if the route is configured for CSR. - return new Response(await this.assets.getServerAsset('index.csr.html').text(), responseInit); + let html = await this.assets.getServerAsset('index.csr.html').text(); + html = await this.runTransformsOnHtml(html, url); + + return new Response(html, responseInit); } const { @@ -301,16 +300,9 @@ export class AngularServerApp { }); } - const url = new URL(request.url); - let html = await assets.getIndexServerHtml().text(); - - // Skip extra microtask if there are no pre hooks. - if (hooks.has('html:transform:pre')) { - html = await hooks.run('html:transform:pre', { html, url }); - } - this.boostrap ??= await bootstrap(); - + let html = await assets.getIndexServerHtml().text(); + html = await this.runTransformsOnHtml(html, url); html = await renderAngular( html, this.boostrap, @@ -381,6 +373,21 @@ export class AngularServerApp { return stripLeadingSlash(assetPath); } + + /** + * Runs the registered transform hooks on the given HTML content. + * + * @param html - The raw HTML content to be transformed. + * @param url - The URL associated with the HTML content, used for context during transformations. + * @returns A promise that resolves to the transformed HTML string. + */ + private async runTransformsOnHtml(html: string, url: URL): Promise { + if (this.hooks.has('html:transform:pre')) { + html = await this.hooks.run('html:transform:pre', { html, url }); + } + + return html; + } } let angularServerApp: AngularServerApp | undefined; From 443fd53ffe4b08a086c6a738ea7e398c2eeb9c07 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 14:56:16 +0000 Subject: [PATCH 0072/2162] docs: release notes for the v19.0.3 release --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5750c25a5c9f..f9c899285ddc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,39 @@ + + +# 19.0.3 (2024-12-04) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------- | +| [4e82ca180](https://github.com/angular/angular-cli/commit/4e82ca180b330199b3dffadd9d590c8245dc7785) | fix | correctly select package versions in descending order during `ng add` | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------------------------------------- | +| [28a51cc5e](https://github.com/angular/angular-cli/commit/28a51cc5e4a08f9e9627a1ec160ce462d18b88d2) | fix | add required type to `CanDeactivate` guard ([#29004](https://github.com/angular/angular-cli/pull/29004)) | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | +| [f26e1b462](https://github.com/angular/angular-cli/commit/f26e1b462ab012b0863f0889bcd60f5e07ca6fd2) | fix | add timeout to route extraction | +| [ab4e77c75](https://github.com/angular/angular-cli/commit/ab4e77c75524d42485ac124f4786ab54bc6c404a) | fix | allow .json file replacements with application builds | +| [06690d87e](https://github.com/angular/angular-cli/commit/06690d87eb590853eed6166857c9c1559d38d260) | fix | apply define option to JavaScript from scripts option | +| [775e6f780](https://github.com/angular/angular-cli/commit/775e6f7808e6edb89d29b72ee5bdc6d2b26cb30e) | fix | avoid deploy URL usage on absolute preload links | +| [21f21eda3](https://github.com/angular/angular-cli/commit/21f21eda39c62e284c6cbee0d0ebfe271f605239) | fix | ensure correct handling of `index.output` for SSR | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [75cf47e71](https://github.com/angular/angular-cli/commit/75cf47e71b0584e55750d5350932494f689a7e96) | fix | apply HTML transformation to CSR responses | +| [5880a0230](https://github.com/angular/angular-cli/commit/5880a02306d9f81f030fcdc91fc6aaeb1986e652) | fix | correctly handle serving of prerendered i18n pages | +| [277b8a378](https://github.com/angular/angular-cli/commit/277b8a3786d40cb8477287dcb3ef191ec8939447) | fix | ensure compatibility for `Http2ServerResponse` type | + + + # 19.0.2 (2024-11-25) From 643b93a8bc4eb9f6f3d580f914b1dc8b559b478f Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 13:03:58 +0000 Subject: [PATCH 0073/2162] test: Introduce delay for file write to minimize flakiness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With recent updates to Vite, rebuild times have become significantly faster. To ensure reliable testing, we’ve added a deliberate delay to slow down the process during file writes. --- .../e2e/tests/vite/ssr-new-dep-optimization.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 e237ad41de80..d330cbf8f75d 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 @@ -1,4 +1,5 @@ import assert from 'node:assert'; +import { setTimeout } from 'node:timers/promises'; import { ng, waitForAnyProcessOutputToMatch } from '../../utils/process'; import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; import { ngServe, useSha } from '../../utils/project'; @@ -24,18 +25,17 @@ export default async function () { const port = await ngServe(); await validateResponse('/', /Hello,/); + const appConfigContentsUpdated = ` + import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; + ${(await readFile('src/app/app.config.ts')).replace('provideRouter(routes),', 'provideAnimationsAsync(), provideRouter(routes),')} + `; + await Promise.all([ waitForAnyProcessOutputToMatch( /new dependencies optimized: @angular\/platform-browser\/animations\/async/, 6000, ), - writeFile( - 'src/app/app.config.ts', - ` - import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; - ${(await readFile('src/app/app.config.ts')).replace('provideRouter(routes),', 'provideAnimationsAsync(), provideRouter(routes),')} - `, - ), + setTimeout(200).then(() => writeFile('src/app/app.config.ts', appConfigContentsUpdated)), ]); // Verify the app still works. From c8955ff5ca831c9681d74412e8f2ed212d90dd63 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 15:04:00 +0000 Subject: [PATCH 0074/2162] release: cut the v19.1.0-next.0 release --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9c899285ddc..dfe1e92f9f2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ + + +# 19.1.0-next.0 (2024-12-04) + +Added support for TypeScript 5.7 + + + # 19.0.3 (2024-12-04) From da1df2dd8dfccf0f68c3d3a120150a1a20764d31 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 18:17:50 +0000 Subject: [PATCH 0075/2162] test: disable colors in vite tests This forcefully removes the colors. --- .../vite/reuse-dep-optimization-cache.ts | 3 +- .../tests/vite/ssr-new-dep-optimization.ts | 31 +++++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts b/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts index 9ffc9aa67c6a..26caf5a9afb3 100644 --- a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts +++ b/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts @@ -19,7 +19,7 @@ export default async function () { ['serve', '--port', `${port}`], /bundle generation complete/, // Use CI:0 to force caching - { DEBUG: 'vite:deps', CI: '0' }, + { DEBUG: 'vite:deps', CI: '0', NO_COLOR: 'true' }, ); // Wait for vite to write to FS and stablize. @@ -33,7 +33,6 @@ export default async function () { // Terminate the dev-server await killAllProcesses(); - // The Node.js specific module should not be found await execAndWaitForOutputToMatch( 'ng', ['serve', '--port=0'], 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 d330cbf8f75d..d2dfb8b554b9 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 @@ -1,10 +1,14 @@ import assert from 'node:assert'; -import { setTimeout } from 'node:timers/promises'; -import { ng, waitForAnyProcessOutputToMatch } from '../../utils/process'; +import { + execAndWaitForOutputToMatch, + ng, + waitForAnyProcessOutputToMatch, +} from '../../utils/process'; import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; -import { ngServe, useSha } from '../../utils/project'; +import { useSha } from '../../utils/project'; import { getGlobalVariable } from '../../utils/env'; import { readFile, writeFile } from '../../utils/fs'; +import { findFreePort } from '../../utils/network'; export default async function () { assert( @@ -22,20 +26,27 @@ export default async function () { await useSha(); await installWorkspacePackages(); - const port = await ngServe(); + const port = await findFreePort(); + await execAndWaitForOutputToMatch( + 'ng', + ['serve', '--port', port.toString()], + /Application bundle generation complete/, + { CI: '0', NO_COLOR: 'true' }, + ); await validateResponse('/', /Hello,/); - const appConfigContentsUpdated = ` - import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; - ${(await readFile('src/app/app.config.ts')).replace('provideRouter(routes),', 'provideAnimationsAsync(), provideRouter(routes),')} - `; - await Promise.all([ waitForAnyProcessOutputToMatch( /new dependencies optimized: @angular\/platform-browser\/animations\/async/, 6000, ), - setTimeout(200).then(() => writeFile('src/app/app.config.ts', appConfigContentsUpdated)), + writeFile( + 'src/app/app.config.ts', + ` + import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; + ${(await readFile('src/app/app.config.ts')).replace('provideRouter(routes),', 'provideAnimationsAsync(), provideRouter(routes),')} + `, + ), ]); // Verify the app still works. From 15a48a3ee69a3c45ed64494596220a35390eb386 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 4 Dec 2024 19:04:09 +0000 Subject: [PATCH 0076/2162] build: pin `@angular/` deps This would enable renovate to auto update when there is a new version. --- package.json | 28 +++++++++--------- yarn.lock | 84 ++++++++++++++++++++++++++-------------------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index 86e009d8dab7..03a521a953cb 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "^19.1.0-next.0", + "@angular/animations": "19.1.0-next.0", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9", - "@angular/cdk": "19.0.1", - "@angular/common": "^19.1.0-next.0", - "@angular/compiler": "^19.1.0-next.0", - "@angular/compiler-cli": "^19.1.0-next.0", - "@angular/core": "^19.1.0-next.0", - "@angular/forms": "^19.1.0-next.0", - "@angular/localize": "^19.1.0-next.0", - "@angular/material": "19.0.1", + "@angular/cdk": "19.1.0-next.0", + "@angular/common": "19.1.0-next.0", + "@angular/compiler": "19.1.0-next.0", + "@angular/compiler-cli": "19.1.0-next.0", + "@angular/core": "19.1.0-next.0", + "@angular/forms": "19.1.0-next.0", + "@angular/localize": "19.1.0-next.0", + "@angular/material": "19.1.0-next.0", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127", - "@angular/platform-browser": "^19.1.0-next.0", - "@angular/platform-browser-dynamic": "^19.1.0-next.0", - "@angular/platform-server": "^19.1.0-next.0", - "@angular/router": "^19.1.0-next.0", - "@angular/service-worker": "^19.1.0-next.0", + "@angular/platform-browser": "19.1.0-next.0", + "@angular/platform-browser-dynamic": "19.1.0-next.0", + "@angular/platform-server": "19.1.0-next.0", + "@angular/router": "19.1.0-next.0", + "@angular/service-worker": "19.1.0-next.0", "@babel/core": "7.26.0", "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/yarn.lock b/yarn.lock index af65bc7145d7..2865ed4878f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -245,7 +245,7 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:^19.1.0-next.0": +"@angular/animations@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/animations@npm:19.1.0-next.0" dependencies: @@ -496,20 +496,20 @@ __metadata: languageName: node linkType: hard -"@angular/cdk@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/cdk@npm:19.0.1" +"@angular/cdk@npm:19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/cdk@npm:19.1.0-next.0" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": ^19.0.0 || ^20.0.0 - "@angular/core": ^19.0.0 || ^20.0.0 + "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependenciesMeta: parse5: optional: true - checksum: 10c0/d021efced1022ba5e5a1df30f9a2c4f0dd9742bb85b5b6b37ca49963d584b6dd9f0bf142b7d895295ac5c400d2df062524af7e21dad740f33179552bd56f6ccb + checksum: 10c0/adb7cf5c1c523225d1415611629ea443bf0ae93eabf383077ddf1be7c5bd13aeb123c671585cd3123cadb6e672934977c8f288286d1a2a8650478e322f368e60 languageName: node linkType: hard @@ -539,7 +539,7 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.1.0-next.0, @angular/common@npm:^19.1.0-next.0": +"@angular/common@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/common@npm:19.1.0-next.0" dependencies: @@ -551,7 +551,7 @@ __metadata: languageName: node linkType: hard -"@angular/compiler-cli@npm:19.1.0-next.0, @angular/compiler-cli@npm:^19.1.0-next.0": +"@angular/compiler-cli@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/compiler-cli@npm:19.1.0-next.0" dependencies: @@ -574,7 +574,7 @@ __metadata: languageName: node linkType: hard -"@angular/compiler@npm:19.1.0-next.0, @angular/compiler@npm:^19.1.0-next.0": +"@angular/compiler@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/compiler@npm:19.1.0-next.0" dependencies: @@ -588,7 +588,7 @@ __metadata: languageName: node linkType: hard -"@angular/core@npm:19.1.0-next.0, @angular/core@npm:^19.1.0-next.0": +"@angular/core@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/core@npm:19.1.0-next.0" dependencies: @@ -627,23 +627,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:^19.1.0-next.0" + "@angular/animations": "npm:19.1.0-next.0" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9" - "@angular/cdk": "npm:19.0.1" - "@angular/common": "npm:^19.1.0-next.0" - "@angular/compiler": "npm:^19.1.0-next.0" - "@angular/compiler-cli": "npm:^19.1.0-next.0" - "@angular/core": "npm:^19.1.0-next.0" - "@angular/forms": "npm:^19.1.0-next.0" - "@angular/localize": "npm:^19.1.0-next.0" - "@angular/material": "npm:19.0.1" + "@angular/cdk": "npm:19.1.0-next.0" + "@angular/common": "npm:19.1.0-next.0" + "@angular/compiler": "npm:19.1.0-next.0" + "@angular/compiler-cli": "npm:19.1.0-next.0" + "@angular/core": "npm:19.1.0-next.0" + "@angular/forms": "npm:19.1.0-next.0" + "@angular/localize": "npm:19.1.0-next.0" + "@angular/material": "npm:19.1.0-next.0" "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127" - "@angular/platform-browser": "npm:^19.1.0-next.0" - "@angular/platform-browser-dynamic": "npm:^19.1.0-next.0" - "@angular/platform-server": "npm:^19.1.0-next.0" - "@angular/router": "npm:^19.1.0-next.0" - "@angular/service-worker": "npm:^19.1.0-next.0" + "@angular/platform-browser": "npm:19.1.0-next.0" + "@angular/platform-browser-dynamic": "npm:19.1.0-next.0" + "@angular/platform-server": "npm:19.1.0-next.0" + "@angular/router": "npm:19.1.0-next.0" + "@angular/service-worker": "npm:19.1.0-next.0" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -799,7 +799,7 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:^19.1.0-next.0": +"@angular/forms@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/forms@npm:19.1.0-next.0" dependencies: @@ -813,7 +813,7 @@ __metadata: languageName: node linkType: hard -"@angular/localize@npm:^19.1.0-next.0": +"@angular/localize@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/localize@npm:19.1.0-next.0" dependencies: @@ -832,20 +832,20 @@ __metadata: languageName: node linkType: hard -"@angular/material@npm:19.0.1": - version: 19.0.1 - resolution: "@angular/material@npm:19.0.1" +"@angular/material@npm:19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/material@npm:19.1.0-next.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": ^19.0.0 || ^20.0.0 - "@angular/cdk": 19.0.1 - "@angular/common": ^19.0.0 || ^20.0.0 - "@angular/core": ^19.0.0 || ^20.0.0 - "@angular/forms": ^19.0.0 || ^20.0.0 - "@angular/platform-browser": ^19.0.0 || ^20.0.0 + "@angular/animations": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/cdk": 19.1.0-next.0 + "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/forms": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + "@angular/platform-browser": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/29350dc7de231316d4fa1ac65a5fcbf86722dfdb95ae9e5d6f5bdcc0e8202d2699fa02b3c6f03d1899686af1a01fbf9b017a8a0fc0b4b085cba327d40c101196 + checksum: 10c0/9ef62e3ef1309c1d2899baf5227e46f6149900aadfcb0b56023d52a5433540cf7b451d5bdc07cc093538653e4dcfd90c13485b8bb4f61bf7593413a5f41bc531 languageName: node linkType: hard @@ -870,7 +870,7 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:^19.1.0-next.0": +"@angular/platform-browser-dynamic@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.0" dependencies: @@ -884,7 +884,7 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser@npm:19.1.0-next.0, @angular/platform-browser@npm:^19.1.0-next.0": +"@angular/platform-browser@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/platform-browser@npm:19.1.0-next.0" dependencies: @@ -900,7 +900,7 @@ __metadata: languageName: node linkType: hard -"@angular/platform-server@npm:19.1.0-next.0, @angular/platform-server@npm:^19.1.0-next.0": +"@angular/platform-server@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/platform-server@npm:19.1.0-next.0" dependencies: @@ -931,7 +931,7 @@ __metadata: languageName: unknown linkType: soft -"@angular/router@npm:19.1.0-next.0, @angular/router@npm:^19.1.0-next.0": +"@angular/router@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/router@npm:19.1.0-next.0" dependencies: @@ -945,7 +945,7 @@ __metadata: languageName: node linkType: hard -"@angular/service-worker@npm:^19.1.0-next.0": +"@angular/service-worker@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/service-worker@npm:19.1.0-next.0" dependencies: From 75998ebabb041f60aab40bf5a11979e8f3615537 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 4 Dec 2024 16:12:38 -0500 Subject: [PATCH 0077/2162] perf(@angular/build): reuse TS package.json cache when rebuilding TypeScript 5.6 and higher added functionality that will search for a `package.json` file for source files that are part of the program (e.g., `.d.ts`) and within a node modules directory. This can be an expensive tasks especially considering the large amount of `.d.ts` files within packages. TypeScript supports using a cache of known `package.json` files to improve the performance of this task. The Angular CLI will now provide and reuse this cache across rebuilds during watch mode. This includes the use of `ng serve`. The performance difference is most apparent for the Angular template diagnostic step of the build. Internally the Angular compiler creates a new template typechecking program which causes the `package.json` search process to occur. By leveraging the cache, this process becomes a series of cache hits. In the event that files are modified within the node modules directory, the cache is invalidated and the following rebuild may be longer as a result. --- .../build/src/tools/angular/angular-host.ts | 18 ++++++------ .../angular/compilation/aot-compilation.ts | 28 ++++++++++++++----- .../angular/compilation/jit-compilation.ts | 2 +- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/angular/build/src/tools/angular/angular-host.ts b/packages/angular/build/src/tools/angular/angular-host.ts index 1750002f1cdd..103b3e37ac68 100644 --- a/packages/angular/build/src/tools/angular/angular-host.ts +++ b/packages/angular/build/src/tools/angular/angular-host.ts @@ -164,6 +164,7 @@ export function createAngularCompilerHost( typescript: typeof ts, compilerOptions: AngularCompilerOptions, hostOptions: AngularHostOptions, + packageJsonCache: ts.PackageJsonInfoCache | undefined, ): AngularCompilerHost { // Create TypeScript compiler host const host: AngularCompilerHost = typescript.createIncrementalCompilerHost(compilerOptions); @@ -229,16 +230,17 @@ export function createAngularCompilerHost( return hostOptions.modifiedFiles; }; + // Provide a resolution cache to ensure package.json lookups are cached + const resolutionCache = typescript.createModuleResolutionCache( + host.getCurrentDirectory(), + host.getCanonicalFileName.bind(host), + compilerOptions, + packageJsonCache, + ); + host.getModuleResolutionCache = () => resolutionCache; + // Augment TypeScript Host for file replacements option if (hostOptions.fileReplacements) { - // Provide a resolution cache since overriding resolution prevents automatic creation - const resolutionCache = typescript.createModuleResolutionCache( - host.getCurrentDirectory(), - host.getCanonicalFileName.bind(host), - compilerOptions, - ); - host.getModuleResolutionCache = () => resolutionCache; - augmentHostWithReplacements(typescript, host, hostOptions.fileReplacements, resolutionCache); } diff --git a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts index 19e43251e950..f111224c36d8 100644 --- a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts @@ -74,25 +74,39 @@ export class AotCompilation extends AngularCompilation { hostOptions.externalStylesheets ??= new Map(); } + // Reuse the package.json cache from the previous compilation + const packageJsonCache = this.#state?.compilerHost + .getModuleResolutionCache?.() + ?.getPackageJsonInfoCache(); + const useHmr = compilerOptions['_enableHmr'] && hostOptions.modifiedFiles && hostOptions.modifiedFiles.size <= HMR_MODIFIED_FILE_LIMIT; - // Collect stale source files for HMR analysis of inline component resources let staleSourceFiles; - if (useHmr && hostOptions.modifiedFiles && this.#state) { + let clearPackageJsonCache = false; + if (hostOptions.modifiedFiles && this.#state) { for (const modifiedFile of hostOptions.modifiedFiles) { - const sourceFile = this.#state.typeScriptProgram.getSourceFile(modifiedFile); - if (sourceFile) { - staleSourceFiles ??= new Map(); - staleSourceFiles.set(modifiedFile, sourceFile); + // Clear package.json cache if a node modules file was modified + if (!clearPackageJsonCache && modifiedFile.includes('node_modules')) { + clearPackageJsonCache = true; + packageJsonCache?.clear(); + } + + // Collect stale source files for HMR analysis of inline component resources + if (useHmr) { + const sourceFile = this.#state.typeScriptProgram.getSourceFile(modifiedFile); + if (sourceFile) { + staleSourceFiles ??= new Map(); + staleSourceFiles.set(modifiedFile, sourceFile); + } } } } // Create Angular compiler host - const host = createAngularCompilerHost(ts, compilerOptions, hostOptions); + const host = createAngularCompilerHost(ts, compilerOptions, hostOptions, packageJsonCache); // Create the Angular specific program that contains the Angular compiler const angularProgram = profileSync( diff --git a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts index eab21a8608c5..db2de81b4ae7 100644 --- a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts @@ -53,7 +53,7 @@ export class JitCompilation extends AngularCompilation { compilerOptionsTransformer?.(originalCompilerOptions) ?? originalCompilerOptions; // Create Angular compiler host - const host = createAngularCompilerHost(ts, compilerOptions, hostOptions); + const host = createAngularCompilerHost(ts, compilerOptions, hostOptions, undefined); // Create the TypeScript Program const typeScriptProgram = profileSync('TS_CREATE_PROGRAM', () => From eb0f4f22ce52f1128d707516aaa62905c5071e8a Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 5 Dec 2024 14:56:23 +0000 Subject: [PATCH 0078/2162] ci: update to latest version of dev-infra actions --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 40 +++++++++--------- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 9b83a26929c1..3055c0110d81 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + - uses: angular/dev-infra/github-actions/branch-manager@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15e4f2706f42..06e036f588ab 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - run: yarn 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 ae9561304be8..6c3ae6858ebd 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + - uses: angular/dev-infra/github-actions/post-approval-changes@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 9f46ab3a9ab4..3852df5a0944 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + - uses: angular/dev-infra/github-actions/feature-request@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c5a51a364189..52ae205e0ce7 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable # 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 d4c7f054eeea..cf7f1a4623f8 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup ESLint Caching uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/linting/licenses@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Check tooling setup run: yarn 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@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} From 1ca260e807fde891b9729e89ecc34dce76b25f43 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 5 Dec 2024 12:09:03 +0000 Subject: [PATCH 0079/2162] docs(@angular/ssr): remove duplicate `@return` comment Remove duplicate `@return` tsdoc comment. --- packages/angular/ssr/src/routes/route-config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index c6e651aa43f4..a60a3ed3619a 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -203,8 +203,6 @@ export const SERVER_ROUTES_CONFIG = new InjectionToken('SERV * @param options - (Optional) An object containing additional configuration options for server routes. * @returns An `EnvironmentProviders` instance with the server routes configuration. * - * @returns An `EnvironmentProviders` object that contains the server routes configuration. - * * @see {@link ServerRoute} * @see {@link ServerRoutesConfigOptions} * @developerPreview From 9e2d3fbd1f5ce1eeca8a46d854aa45598e516d90 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Tue, 3 Dec 2024 16:21:09 -0800 Subject: [PATCH 0080/2162] fix(@angular-devkit/build-angular): handle windows spec collisions --- .../src/builders/karma/application_builder.ts | 25 +------ .../src/builders/karma/find-tests.ts | 43 ++++++++++++ .../src/builders/karma/find-tests_spec.ts | 67 +++++++++++++++++++ .../karma/tests/behavior/specs_spec.ts | 8 ++- 4 files changed, 118 insertions(+), 25 deletions(-) create mode 100644 packages/angular_devkit/build_angular/src/builders/karma/find-tests_spec.ts diff --git a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts index 4560d0cff952..ff4604c7c91e 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts @@ -26,7 +26,7 @@ import { Observable, Subscriber, catchError, defaultIfEmpty, from, of, switchMap import { Configuration } from 'webpack'; import { ExecutionTransformer } from '../../transforms'; import { OutputHashing } from '../browser-esbuild/schema'; -import { findTests } from './find-tests'; +import { findTests, getTestEntrypoints } from './find-tests'; import { Schema as KarmaBuilderOptions } from './schema'; interface BuildOptions extends ApplicationBuilderInternalOptions { @@ -268,28 +268,7 @@ async function collectEntrypoints( projectSourceRoot, ); - const seen = new Set(); - - return new Map( - Array.from(testFiles, (testFile) => { - const relativePath = path - .relative( - testFile.startsWith(projectSourceRoot) ? projectSourceRoot : context.workspaceRoot, - testFile, - ) - .replace(/^[./]+/, '_') - .replace(/\//g, '-'); - let uniqueName = `spec-${path.basename(relativePath, path.extname(relativePath))}`; - let suffix = 2; - while (seen.has(uniqueName)) { - uniqueName = `${relativePath}-${suffix}`; - ++suffix; - } - seen.add(uniqueName); - - return [uniqueName, testFile]; - }), - ); + return getTestEntrypoints(testFiles, { projectSourceRoot, workspaceRoot: context.workspaceRoot }); } async function initializeApplication( diff --git a/packages/angular_devkit/build_angular/src/builders/karma/find-tests.ts b/packages/angular_devkit/build_angular/src/builders/karma/find-tests.ts index 80571870e3b2..077a938e0df5 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/find-tests.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/find-tests.ts @@ -26,6 +26,39 @@ export async function findTests( return [...new Set(files.flat())]; } +interface TestEntrypointsOptions { + projectSourceRoot: string; + workspaceRoot: string; +} + +/** Generate unique bundle names for a set of test files. */ +export function getTestEntrypoints( + testFiles: string[], + { projectSourceRoot, workspaceRoot }: TestEntrypointsOptions, +): Map { + const seen = new Set(); + + return new Map( + Array.from(testFiles, (testFile) => { + const relativePath = removeRoots(testFile, [projectSourceRoot, workspaceRoot]) + // Strip leading dots and path separators. + .replace(/^[./\\]+/, '') + // Replace any path separators with dashes. + .replace(/[/\\]/g, '-'); + const baseName = `spec-${basename(relativePath, extname(relativePath))}`; + let uniqueName = baseName; + let suffix = 2; + while (seen.has(uniqueName)) { + uniqueName = `${baseName}-${suffix}`.replace(/([^\w](?:spec|test))-([\d]+)$/, '-$2$1'); + ++suffix; + } + seen.add(uniqueName); + + return [uniqueName, testFile]; + }), + ); +} + const normalizePath = (path: string): string => path.replace(/\\/g, '/'); const removeLeadingSlash = (pattern: string): string => { @@ -44,6 +77,16 @@ const removeRelativeRoot = (path: string, root: string): string => { return path; }; +function removeRoots(path: string, roots: string[]): string { + for (const root of roots) { + if (path.startsWith(root)) { + return path.substring(root.length); + } + } + + return basename(path); +} + async function findMatchingTests( pattern: string, ignore: string[], diff --git a/packages/angular_devkit/build_angular/src/builders/karma/find-tests_spec.ts b/packages/angular_devkit/build_angular/src/builders/karma/find-tests_spec.ts new file mode 100644 index 000000000000..8264539ae9dd --- /dev/null +++ b/packages/angular_devkit/build_angular/src/builders/karma/find-tests_spec.ts @@ -0,0 +1,67 @@ +/** + * @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 { getTestEntrypoints } from './find-tests'; + +const UNIX_ENTRYPOINTS_OPTIONS = { + pathSeparator: '/', + workspaceRoot: '/my/workspace/root', + projectSourceRoot: '/my/workspace/root/src-root', +}; + +const WINDOWS_ENTRYPOINTS_OPTIONS = { + pathSeparator: '\\', + workspaceRoot: 'C:\\my\\workspace\\root', + projectSourceRoot: 'C:\\my\\workspace\\root\\src-root', +}; + +describe('getTestEntrypoints', () => { + for (const options of [UNIX_ENTRYPOINTS_OPTIONS, WINDOWS_ENTRYPOINTS_OPTIONS]) { + describe(`with path separator "${options.pathSeparator}"`, () => { + function joinWithSeparator(base: string, rel: string) { + return `${base}${options.pathSeparator}${rel.replace(/\//g, options.pathSeparator)}`; + } + + function getEntrypoints(workspaceRelative: string[], sourceRootRelative: string[] = []) { + return getTestEntrypoints( + [ + ...workspaceRelative.map((p) => joinWithSeparator(options.workspaceRoot, p)), + ...sourceRootRelative.map((p) => joinWithSeparator(options.projectSourceRoot, p)), + ], + options, + ); + } + + it('returns an empty map without test files', () => { + expect(getEntrypoints([])).toEqual(new Map()); + }); + + it('strips workspace root and/or project source root', () => { + expect(getEntrypoints(['a/b.spec.js'], ['c/d.spec.js'])).toEqual( + new Map([ + ['spec-a-b.spec', joinWithSeparator(options.workspaceRoot, 'a/b.spec.js')], + ['spec-c-d.spec', joinWithSeparator(options.projectSourceRoot, 'c/d.spec.js')], + ]), + ); + }); + + it('adds unique prefixes to distinguish between similar names', () => { + expect(getEntrypoints(['a/b/c/d.spec.js', 'a-b/c/d.spec.js'], ['a/b-c/d.spec.js'])).toEqual( + new Map([ + ['spec-a-b-c-d.spec', joinWithSeparator(options.workspaceRoot, 'a/b/c/d.spec.js')], + ['spec-a-b-c-d-2.spec', joinWithSeparator(options.workspaceRoot, 'a-b/c/d.spec.js')], + [ + 'spec-a-b-c-d-3.spec', + joinWithSeparator(options.projectSourceRoot, 'a/b-c/d.spec.js'), + ], + ]), + ); + }); + }); + } +}); diff --git a/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/specs_spec.ts b/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/specs_spec.ts index 773f113bec83..5cb56abe9b9d 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/specs_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/specs_spec.ts @@ -24,7 +24,9 @@ describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget, isApp) // src/app/app.component.spec.ts conflicts with this one: await harness.writeFiles({ - [`src/app/a/${collidingBasename}`]: `/** Success! */`, + [`src/app/a/foo-bar/${collidingBasename}`]: `/** Success! */`, + [`src/app/a-foo/bar/${collidingBasename}`]: `/** Success! */`, + [`src/app/a-foo-bar/${collidingBasename}`]: `/** Success! */`, [`src/app/b/${collidingBasename}`]: `/** Success! */`, }); @@ -36,7 +38,9 @@ describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget, isApp) const bundleLog = logs.find((log) => log.message.includes('Application bundle generation complete.'), ); - expect(bundleLog?.message).toContain('spec-app-a-collision.spec.js'); + expect(bundleLog?.message).toContain('spec-app-a-foo-bar-collision.spec.js'); + expect(bundleLog?.message).toContain('spec-app-a-foo-bar-collision-2.spec.js'); + expect(bundleLog?.message).toContain('spec-app-a-foo-bar-collision-3.spec.js'); expect(bundleLog?.message).toContain('spec-app-b-collision.spec.js'); } }); From f717a540667708bf6defed27882c38c1a1c89853 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 5 Dec 2024 15:25:13 +0000 Subject: [PATCH 0081/2162] build: update angular --- package.json | 32 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 912 ++++-------------- 5 files changed, 205 insertions(+), 787 deletions(-) diff --git a/package.json b/package.json index 03a521a953cb..9f2cea6a5908 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.1.0-next.0", + "@angular/animations": "19.1.0-next.2", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9", - "@angular/cdk": "19.1.0-next.0", - "@angular/common": "19.1.0-next.0", - "@angular/compiler": "19.1.0-next.0", - "@angular/compiler-cli": "19.1.0-next.0", - "@angular/core": "19.1.0-next.0", - "@angular/forms": "19.1.0-next.0", - "@angular/localize": "19.1.0-next.0", - "@angular/material": "19.1.0-next.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127", - "@angular/platform-browser": "19.1.0-next.0", - "@angular/platform-browser-dynamic": "19.1.0-next.0", - "@angular/platform-server": "19.1.0-next.0", - "@angular/router": "19.1.0-next.0", - "@angular/service-worker": "19.1.0-next.0", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2f92e20a32f578b694c37cce6a540a2da165e652", + "@angular/cdk": "19.1.0-next.1", + "@angular/common": "19.1.0-next.2", + "@angular/compiler": "19.1.0-next.2", + "@angular/compiler-cli": "19.1.0-next.2", + "@angular/core": "19.1.0-next.2", + "@angular/forms": "19.1.0-next.2", + "@angular/localize": "19.1.0-next.2", + "@angular/material": "19.1.0-next.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ac2fa10c4ca08f0ca10d837aef343406e61f49ca", + "@angular/platform-browser": "19.1.0-next.2", + "@angular/platform-browser-dynamic": "19.1.0-next.2", + "@angular/platform-server": "19.1.0-next.2", + "@angular/router": "19.1.0-next.2", + "@angular/service-worker": "19.1.0-next.2", "@babel/core": "7.26.0", "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 92cb645374e2..046808c2f3fc 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -27,12 +27,12 @@ } }, "devDependencies": { - "@angular/common": "19.1.0-next.0", - "@angular/compiler": "19.1.0-next.0", - "@angular/core": "19.1.0-next.0", - "@angular/platform-browser": "19.1.0-next.0", - "@angular/platform-server": "19.1.0-next.0", - "@angular/router": "19.1.0-next.0", + "@angular/common": "19.1.0-next.2", + "@angular/compiler": "19.1.0-next.2", + "@angular/core": "19.1.0-next.2", + "@angular/platform-browser": "19.1.0-next.2", + "@angular/platform-server": "19.1.0-next.2", + "@angular/router": "19.1.0-next.2", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index b1b27c7c4a3a..075ea55a1b48 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.1.0-next.0", - "@angular/compiler-cli": "19.1.0-next.0", + "@angular/compiler": "19.1.0-next.2", + "@angular/compiler-cli": "19.1.0-next.2", "typescript": "5.7.2", "webpack": "5.97.0" } diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 57320c32688c..480130511d2e 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#4ccc9582147a0d39e08f5e503072c76802bac7a7", - "@angular/cdk": "github:angular/cdk-builds#48d925618e790c344f88a05ce8775e97ee469d2f", - "@angular/common": "github:angular/common-builds#16fd33c0d7a2cae384f3a228ea07a079fac60df0", - "@angular/compiler": "github:angular/compiler-builds#b6cb67f04248e269b84fa13083d9875fb22300b3", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#d2aa18c1f4f48f1b8ae65aa92c2a1e6625c29440", - "@angular/core": "github:angular/core-builds#de5613839155c3449a0f2cb9975dc3ade0ab9e76", - "@angular/forms": "github:angular/forms-builds#1ae0570cb56c512218f054e43423f7db78e565f0", - "@angular/language-service": "github:angular/language-service-builds#55169808a41d4a48dec7f9c151a7f7d4f4e2aec6", - "@angular/localize": "github:angular/localize-builds#66575c950b73cff6c5aad4700590b5679caeaa8b", - "@angular/material": "github:angular/material-builds#e5885cdb98a501a61e064a1e2af7d20e21b2eec5", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b396e3cb62d18e8a1216d8358e70ae618f0cdc74", - "@angular/platform-browser": "github:angular/platform-browser-builds#7a0ea9806f9737dd3f4bf7fc12e0a56f443980e2", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#1d60b6347ec007ccedf7c12bad0a4283cb76b217", - "@angular/platform-server": "github:angular/platform-server-builds#4c08d4888b8029e1b6aa90eae73d5082e9df8ec4", - "@angular/router": "github:angular/router-builds#3be2e9d85f23372bb34421d1155ed954db419f08", - "@angular/service-worker": "github:angular/service-worker-builds#1771a53f87a175831a8f433a6db575db96688e98" + "@angular/animations": "github:angular/animations-builds#0814af9f9aa3cc21dcae56fdd7bd8b3447214040", + "@angular/cdk": "github:angular/cdk-builds#92f078ffe9a36a0ff94b06212761b6dc5d2931ed", + "@angular/common": "github:angular/common-builds#177586106de8d649d52506a164fa4e112000d2a1", + "@angular/compiler": "github:angular/compiler-builds#d07917bd7758640ab78a208bb799b5bffc3911ca", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#ec5244f2b09b69711ceaaf7b5efbd6f5f5b6f123", + "@angular/core": "github:angular/core-builds#c0fc8896471f875ab525f043038702fa65cf317e", + "@angular/forms": "github:angular/forms-builds#db0436c4a81b656df418974b5e5486a67f8afe00", + "@angular/language-service": "github:angular/language-service-builds#383f66b198009b841ea2e0587bdb1fef3b546f17", + "@angular/localize": "github:angular/localize-builds#4f79d46aecf9fcd3ffcbc8e701f87c0ccf32bb0f", + "@angular/material": "github:angular/material-builds#8824a4d58d67aaa1f5f00671654931bad45d50b2", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#590855b9b30f7214b1a54cc2cfb0175e1fbd6735", + "@angular/platform-browser": "github:angular/platform-browser-builds#981b6a657b841bd2aa75f27a43c574244b4278bc", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a2a65fdf5559e69560dcb073e543fef88a68de39", + "@angular/platform-server": "github:angular/platform-server-builds#d94b352af1e92d3dfc6a758e09adbf7b2bc0f759", + "@angular/router": "github:angular/router-builds#ccf3d50346e0f7e234da71191b1b9ec3471e39f2", + "@angular/service-worker": "github:angular/service-worker-builds#75eda802eea44baf5b565d77ecbbf21d8a1f372f" } } diff --git a/yarn.lock b/yarn.lock index 2865ed4878f8..3cfc07bc2f35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,18 +40,18 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/architect@npm:0.1900.0": - version: 0.1900.0 - resolution: "@angular-devkit/architect@npm:0.1900.0" +"@angular-devkit/architect@npm:0.1901.0-next.0": + version: 0.1901.0-next.0 + resolution: "@angular-devkit/architect@npm:0.1901.0-next.0" dependencies: - "@angular-devkit/core": "npm:19.0.0" + "@angular-devkit/core": "npm:19.1.0-next.0" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/14e4ea2167c812cc66654f006b7d7248b9eb29bf8a41ea97739398bfb5111d64bc4ce1501ec51a87ec1807667e8fe6e73a3f7054f37eea61a46e37ee1542910b + checksum: 10c0/e72399cca83206fe34927d1a150f786153ca54cc65812f2c62e5393a8c02e5a512511705eccabcb6feccf6bc5af4a3c7bb1cd522e79ed96ba3e885de154237a1 languageName: node linkType: hard @@ -194,9 +194,9 @@ __metadata: languageName: unknown linkType: soft -"@angular-devkit/core@npm:19.0.0": - version: 19.0.0 - resolution: "@angular-devkit/core@npm:19.0.0" +"@angular-devkit/core@npm:19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular-devkit/core@npm:19.1.0-next.0" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -214,7 +214,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/fae90dd59048ee381729538b2e9c2d232de62c18455a21be9a9957634bf9f9dc68cf83cca1823200aacf8bfefc9d4075336a4da572be0d2e9c233e1fab574ce2 + checksum: 10c0/7211252709e7b14e1c33587d16e5ed7c1dde6fa64af6bd84abbea25abff77fd9d3bbc1ca13a42ee41418097f988e7eafd4fa922f920ab467330d64e9e25bf31f languageName: node linkType: hard @@ -245,14 +245,14 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/animations@npm:19.1.0-next.0" +"@angular/animations@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/animations@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.0 - checksum: 10c0/d3d1fe745f7aa5310565cfd56cddaf5e9f40db6cfa322f7ac7a0f01c670ef71efccb13932c0bb98acb3f8aa531348402fe5e253bde79873f02d3140ae7325bb9 + "@angular/core": 19.1.0-next.2 + checksum: 10c0/c99d0e7d63e2f0853e931dcef15044ebdb39ce6e299d066d7fcf3dec93477016db36e2414b42c3992397a07e4f3228ec4da32ab226ea2682edfed02bf42fc82b languageName: node linkType: hard @@ -324,12 +324,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9": - version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=499c0a0303900d2d8fb6fcdeec7e72a80d202ac9" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#2f92e20a32f578b694c37cce6a540a2da165e652": + version: 0.0.0-40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=2f92e20a32f578b694c37cce6a540a2da165e652" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.0.0" + "@angular/build": "npm:19.1.0-next.0" "@babel/core": "npm:^7.16.0" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" "@bazel/buildifier": "npm:6.3.3" @@ -349,7 +349,7 @@ __metadata: "@types/ws": "npm:8.5.13" "@types/yargs": "npm:^17.0.0" browser-sync: "npm:^3.0.0" - prettier: "npm:3.4.1" + prettier: "npm:3.4.2" protractor: "npm:^7.0.0" selenium-webdriver: "npm:^4.18.1" send: "npm:^1.0.0" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/a12d2583f6bf856830c44735aff1388a70d3107d8bb1271c1d20647b7b08015088395c2174ca9f430bc858b4cf43b8ae96a5e6897424d147e7acd812b6d9207b + checksum: 10c0/3d7bda81d8dfecb1cc0b4f9a4c918c4a11468613519f0ea7354f69f3c6ee756936bd3695cb6a2062eeb477b01fcd46674f69007e1cb3a7f023a476487da43089 languageName: node linkType: hard @@ -429,18 +429,18 @@ __metadata: languageName: unknown linkType: soft -"@angular/build@npm:19.0.0": - version: 19.0.0 - resolution: "@angular/build@npm:19.0.0" +"@angular/build@npm:19.1.0-next.0": + version: 19.1.0-next.0 + resolution: "@angular/build@npm:19.1.0-next.0" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1900.0" + "@angular-devkit/architect": "npm:0.1901.0-next.0" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-syntax-import-attributes": "npm:7.26.0" "@inquirer/confirm": "npm:5.0.2" - "@vitejs/plugin-basic-ssl": "npm:1.1.0" + "@vitejs/plugin-basic-ssl": "npm:1.2.0" beasties: "npm:0.1.0" browserslist: "npm:^4.23.0" esbuild: "npm:0.24.0" @@ -448,28 +448,28 @@ __metadata: https-proxy-agent: "npm:7.0.5" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" - lmdb: "npm:3.1.5" - magic-string: "npm:0.30.12" + lmdb: "npm:3.2.0" + magic-string: "npm:0.30.14" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" - piscina: "npm:4.7.0" - rollup: "npm:4.26.0" - sass: "npm:1.80.7" + piscina: "npm:4.8.0" + rollup: "npm:4.28.0" + sass: "npm:1.82.0" semver: "npm:7.6.3" - vite: "npm:5.4.11" + vite: "npm:6.0.2" watchpack: "npm:2.4.2" peerDependencies: - "@angular/compiler": ^19.0.0 - "@angular/compiler-cli": ^19.0.0 - "@angular/localize": ^19.0.0 - "@angular/platform-server": ^19.0.0 - "@angular/service-worker": ^19.0.0 - "@angular/ssr": ^19.0.0 + "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 + "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 + "@angular/localize": ^19.0.0 || ^19.1.0-next.0 + "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 + "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 + "@angular/ssr": ^19.1.0-next.0 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=5.5 <5.7" + typescript: ">=5.5 <5.8" dependenciesMeta: esbuild: built: true @@ -492,13 +492,13 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10c0/beee41da0e227fed467ce9e67700ecb0941b44cbfb35e410c0252cf08581c26a65f65e7434a8efc9f1304c42add14860be28787ff3e5f917566f9fa55adb9036 + checksum: 10c0/2e965a20be3e173e9115e9b88148594bae77495e56a6385e89d6294b816b14558dd41c49ab69d0566b56692e29ad6fd32e9dff8b8dcc010a21af7b717e7bb413 languageName: node linkType: hard -"@angular/cdk@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/cdk@npm:19.1.0-next.0" +"@angular/cdk@npm:19.1.0-next.1": + version: 19.1.0-next.1 + resolution: "@angular/cdk@npm:19.1.0-next.1" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" @@ -509,7 +509,7 @@ __metadata: dependenciesMeta: parse5: optional: true - checksum: 10c0/adb7cf5c1c523225d1415611629ea443bf0ae93eabf383077ddf1be7c5bd13aeb123c671585cd3123cadb6e672934977c8f288286d1a2a8650478e322f368e60 + checksum: 10c0/58dff9ead0edba02943b89f3c6819fcc0f4e548eb21f55070698a7e558adc1b76e4c182b8296adc0c66b0b483f3efa25a9d5a4d2160b5b5515ce9bc701f7a915 languageName: node linkType: hard @@ -539,21 +539,21 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/common@npm:19.1.0-next.0" +"@angular/common@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/common@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.0 + "@angular/core": 19.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/d0a579a389f7e9205eeb651eec3c48e19e34db51f8b244f3be8f68905839594f6a01b4ff8ce5d8cd37542d25326e63e0f8886c44266d5af3f158499af3b0f5be + checksum: 10c0/7f26af0e6501aff830b5d9c1e7bd1a7b59b58ca71b006822268d73903e0722725bc93bb5a60d408db9413fb433d7c8ba6f769041553796f9e515cd117a455bad languageName: node linkType: hard -"@angular/compiler-cli@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/compiler-cli@npm:19.1.0-next.0" +"@angular/compiler-cli@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/compiler-cli@npm:19.1.0-next.2" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -564,39 +564,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.0 + "@angular/compiler": 19.1.0-next.2 typescript: ">=5.5 <5.8" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/21f66911fb8c43b7c4cb7bae9ee1eeba2706e9e2ae2900ba8951f1f957fb8ff67c8b6fffe12b1f1eb19d7d0e06f6b905aa1591a390b9835a680fb67b2de8d1a2 + checksum: 10c0/e7e1962234af37d9956549ae232edce470606aa8dfc2b45fe7a714efae2124722b684e5d19b230a62d3cdb90abd58f780a1f0d01d05c753cc64207dd34f21cd7 languageName: node linkType: hard -"@angular/compiler@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/compiler@npm:19.1.0-next.0" +"@angular/compiler@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/compiler@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.0 + "@angular/core": 19.1.0-next.2 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/702a30d919a9132b784ac17dfe2af52ba49dc85a49bcb4df1f5d0fbc48e8682b4ef1f2b55a0342662f1f7cfd88f8a67a7f21c19f9662c0fee1e246a0ee06d11c + checksum: 10c0/eb5001ebdfae987100551d344d31d35bdb9c8383c67c90fbff4d5aca1b9ede7056f71fa875615b042b65d0bb03526b0864982aa57182facc412151bd3a75d111 languageName: node linkType: hard -"@angular/core@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/core@npm:19.1.0-next.0" +"@angular/core@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/core@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/5f930946d65ea171bf6fad7ba27f497f42cc61b8e50acad85c01372e129b5ae451ce4ce698413ed2b0de24f3837cad2b64f28da396c0becf3d46a1ffd6574361 + checksum: 10c0/e2128e814e61dd297f5c3bf4832841c1212b69912fb700a90b74cb0fc0918a9f803317ffd47b481308b9adb720e5fd8cb428d411a2478087c78fee8b50e4ca3d languageName: node linkType: hard @@ -627,23 +627,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.1.0-next.0" + "@angular/animations": "npm:19.1.0-next.2" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9" - "@angular/cdk": "npm:19.1.0-next.0" - "@angular/common": "npm:19.1.0-next.0" - "@angular/compiler": "npm:19.1.0-next.0" - "@angular/compiler-cli": "npm:19.1.0-next.0" - "@angular/core": "npm:19.1.0-next.0" - "@angular/forms": "npm:19.1.0-next.0" - "@angular/localize": "npm:19.1.0-next.0" - "@angular/material": "npm:19.1.0-next.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127" - "@angular/platform-browser": "npm:19.1.0-next.0" - "@angular/platform-browser-dynamic": "npm:19.1.0-next.0" - "@angular/platform-server": "npm:19.1.0-next.0" - "@angular/router": "npm:19.1.0-next.0" - "@angular/service-worker": "npm:19.1.0-next.0" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2f92e20a32f578b694c37cce6a540a2da165e652" + "@angular/cdk": "npm:19.1.0-next.1" + "@angular/common": "npm:19.1.0-next.2" + "@angular/compiler": "npm:19.1.0-next.2" + "@angular/compiler-cli": "npm:19.1.0-next.2" + "@angular/core": "npm:19.1.0-next.2" + "@angular/forms": "npm:19.1.0-next.2" + "@angular/localize": "npm:19.1.0-next.2" + "@angular/material": "npm:19.1.0-next.1" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ac2fa10c4ca08f0ca10d837aef343406e61f49ca" + "@angular/platform-browser": "npm:19.1.0-next.2" + "@angular/platform-browser-dynamic": "npm:19.1.0-next.2" + "@angular/platform-server": "npm:19.1.0-next.2" + "@angular/router": "npm:19.1.0-next.2" + "@angular/service-worker": "npm:19.1.0-next.2" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -799,59 +799,59 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/forms@npm:19.1.0-next.0" +"@angular/forms@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/forms@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.0 - "@angular/core": 19.1.0-next.0 - "@angular/platform-browser": 19.1.0-next.0 + "@angular/common": 19.1.0-next.2 + "@angular/core": 19.1.0-next.2 + "@angular/platform-browser": 19.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/afee46b77661b2a88a05e94e1789fa881af0e442003fdcfd328ae4ebc56c473b7f4666a345fbdd60e2cc92167aefb2a4ca5e80e0c66f66ebb10b7294f07e5561 + checksum: 10c0/a3a18707d5b3c6666de581d9d7a9ce0b8fb3c826dc5cc5427fb04c633c0eb82c0922693b3dfa890cddb4c1e89ad74621ae4d8c7b1037413e7731f81cd9ae454c languageName: node linkType: hard -"@angular/localize@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/localize@npm:19.1.0-next.0" +"@angular/localize@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/localize@npm:19.1.0-next.2" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.0 - "@angular/compiler-cli": 19.1.0-next.0 + "@angular/compiler": 19.1.0-next.2 + "@angular/compiler-cli": 19.1.0-next.2 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/b55ccdf384562da4f6527799eb1259620af7dcbdbbc82941ceb92494f71e7bf47189262f89831738940d156c81c9dff5c7918a0058d097fa7daf5ebce17aa32e + checksum: 10c0/1adbac13a2c43d9d28d86a76a00dbfb62c3647d7a7df34bd9051c43216b14e1f84518bc8b227b7890ae7ec69ae5950965e6a9869935b65ec6c2774db2a431aeb languageName: node linkType: hard -"@angular/material@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/material@npm:19.1.0-next.0" +"@angular/material@npm:19.1.0-next.1": + version: 19.1.0-next.1 + resolution: "@angular/material@npm:19.1.0-next.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: "@angular/animations": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/cdk": 19.1.0-next.0 + "@angular/cdk": 19.1.0-next.1 "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/forms": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/platform-browser": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/9ef62e3ef1309c1d2899baf5227e46f6149900aadfcb0b56023d52a5433540cf7b451d5bdc07cc093538653e4dcfd90c13485b8bb4f61bf7593413a5f41bc531 + checksum: 10c0/17e46a8883dd2408014ba8471e1f8c7d3d239798114258b08cf69246efcd89ea5a05334b9457c172aba052a64fad190fa66c3372706ec5bb429b990b5c1fba7c languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127": - version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=579163373d32ec04ef9dab6c21e34bfc6d40b127" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#ac2fa10c4ca08f0ca10d837aef343406e61f49ca": + version: 0.0.0-40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=ac2fa10c4ca08f0ca10d837aef343406e61f49ca" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -866,53 +866,53 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/8da786b9bec7d495784ae668d68febec29762ea72d914a8041e530295c4cacfc08264a5a9813b169ced9726c35c45bf021acc3e215159494b7eca385b16ac0f3 + checksum: 10c0/c43a13c282f5f17305f97b8d38089be062fc30de7a809d9207f9f97901682ef86dfe9480f86b790fe9a08a2ca031bcb1dd7c768fead00cf9be302b8c06b1a1a3 languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.0" +"@angular/platform-browser-dynamic@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.0 - "@angular/compiler": 19.1.0-next.0 - "@angular/core": 19.1.0-next.0 - "@angular/platform-browser": 19.1.0-next.0 - checksum: 10c0/6c94a65cef61cb7a076cebc245f410e72da0c0138fe874a6a8b4a8263e0c921180235ef7c02d2cc0a8f9f0af1af05dbec44636f8ce80692d0a07114b84bf3582 + "@angular/common": 19.1.0-next.2 + "@angular/compiler": 19.1.0-next.2 + "@angular/core": 19.1.0-next.2 + "@angular/platform-browser": 19.1.0-next.2 + checksum: 10c0/b1f4b00caa5b80cd9c3ef27d46fb01f9d15e711f2bbe45ba5d8c332e18360a980209fe7f0c218f21f8b52a115537e8fcfd547f44eae0e2875b9f2111c3156e44 languageName: node linkType: hard -"@angular/platform-browser@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/platform-browser@npm:19.1.0-next.0" +"@angular/platform-browser@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/platform-browser@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.1.0-next.0 - "@angular/common": 19.1.0-next.0 - "@angular/core": 19.1.0-next.0 + "@angular/animations": 19.1.0-next.2 + "@angular/common": 19.1.0-next.2 + "@angular/core": 19.1.0-next.2 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/e00f00e7b6d566735ca5cce0af9c0b4195036b3cad18e4dc604df9d77e8b13e3d259fcd57426b060faab76f1628ecdb78dc61511e6567cfaa6dcdc9ed7458644 + checksum: 10c0/19dd3ab552b0aa750921af8df73f7f564ddf814c59218e7ad91f85acdf56d13a7b1c61613f17c740104ce75e0fcffef469dfd252f66466a7671604e38e914502 languageName: node linkType: hard -"@angular/platform-server@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/platform-server@npm:19.1.0-next.0" +"@angular/platform-server@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/platform-server@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.1.0-next.0 - "@angular/common": 19.1.0-next.0 - "@angular/compiler": 19.1.0-next.0 - "@angular/core": 19.1.0-next.0 - "@angular/platform-browser": 19.1.0-next.0 - checksum: 10c0/4587209a039d2cb171ceb57c8885841a786c7162d2c7b9a22e52733718f0be2f9e3605299e66eeef3c28084e45d5ce4d48d9b63f1c9455090e19d6c919c63816 + "@angular/animations": 19.1.0-next.2 + "@angular/common": 19.1.0-next.2 + "@angular/compiler": 19.1.0-next.2 + "@angular/core": 19.1.0-next.2 + "@angular/platform-browser": 19.1.0-next.2 + checksum: 10c0/433ea8b1c532daf35da1aaeec09e289592bd3a3620023afc4f83db801eecace2e15479bd10ed5ed958fabda32fee167c639c7e860e1bd42803e05fd3e0573087 languageName: node linkType: hard @@ -931,31 +931,31 @@ __metadata: languageName: unknown linkType: soft -"@angular/router@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/router@npm:19.1.0-next.0" +"@angular/router@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/router@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.0 - "@angular/core": 19.1.0-next.0 - "@angular/platform-browser": 19.1.0-next.0 + "@angular/common": 19.1.0-next.2 + "@angular/core": 19.1.0-next.2 + "@angular/platform-browser": 19.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/fbb3a6b0de491135d81e5ad8f34108e56e47ed16f0a0a0de222ebd30b18551eb30bfc80a39fe6237e939a03cd67f4dce1810da76f6858c6c2a8808d4579d293c + checksum: 10c0/cb41e421eef37d28c2246186d4fd9febb50e973fda448922d6ea29a177e73e966da8fedab8ecbe1c3e2bc85de0eccc49855185cd290352bc04f826ea034de0d0 languageName: node linkType: hard -"@angular/service-worker@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/service-worker@npm:19.1.0-next.0" +"@angular/service-worker@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/service-worker@npm:19.1.0-next.2" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.0 - "@angular/core": 19.1.0-next.0 + "@angular/common": 19.1.0-next.2 + "@angular/core": 19.1.0-next.2 bin: ngsw-config: ngsw-config.js - checksum: 10c0/76acbd4284cbf7dfd30c3043ff31f75d0c86309e300e9c57db9716bba1795a806e4e3766d51902623e78fd8e35a32c083efc0c911792637518118dec3f85c45a + checksum: 10c0/51d5d98ad02c43a9dc241842e0e0c99b0b442e8215a37c8b937fad6f7a15361615d57ce3a6a517cbbfa6fb1f52ed709dba202dc78bd23510dbf02388f86edbf1 languageName: node linkType: hard @@ -963,12 +963,12 @@ __metadata: version: 0.0.0-use.local resolution: "@angular/ssr@workspace:packages/angular/ssr" dependencies: - "@angular/common": "npm:19.1.0-next.0" - "@angular/compiler": "npm:19.1.0-next.0" - "@angular/core": "npm:19.1.0-next.0" - "@angular/platform-browser": "npm:19.1.0-next.0" - "@angular/platform-server": "npm:19.1.0-next.0" - "@angular/router": "npm:19.1.0-next.0" + "@angular/common": "npm:19.1.0-next.2" + "@angular/compiler": "npm:19.1.0-next.2" + "@angular/core": "npm:19.1.0-next.2" + "@angular/platform-browser": "npm:19.1.0-next.2" + "@angular/platform-server": "npm:19.1.0-next.2" + "@angular/router": "npm:19.1.0-next.2" "@bazel/runfiles": "npm:^5.8.1" tslib: "npm:^2.3.0" peerDependencies: @@ -2417,13 +2417,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/aix-ppc64@npm:0.24.0" @@ -2431,13 +2424,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/android-arm64@npm:0.24.0" @@ -2445,13 +2431,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/android-arm@npm:0.24.0" @@ -2459,13 +2438,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/android-x64@npm:0.24.0" @@ -2473,13 +2445,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/darwin-arm64@npm:0.24.0" @@ -2487,13 +2452,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/darwin-x64@npm:0.24.0" @@ -2501,13 +2459,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/freebsd-arm64@npm:0.24.0" @@ -2515,13 +2466,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/freebsd-x64@npm:0.24.0" @@ -2529,13 +2473,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-arm64@npm:0.24.0" @@ -2543,13 +2480,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-arm@npm:0.24.0" @@ -2557,13 +2487,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-ia32@npm:0.24.0" @@ -2571,13 +2494,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-loong64@npm:0.24.0" @@ -2585,13 +2501,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-mips64el@npm:0.24.0" @@ -2599,13 +2508,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-ppc64@npm:0.24.0" @@ -2613,13 +2515,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-riscv64@npm:0.24.0" @@ -2627,13 +2522,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-s390x@npm:0.24.0" @@ -2641,13 +2529,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-x64@npm:0.24.0" @@ -2655,13 +2536,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/netbsd-x64@npm:0.24.0" @@ -2676,13 +2550,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/openbsd-x64@npm:0.24.0" @@ -2690,13 +2557,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/sunos-x64@npm:0.24.0" @@ -2704,13 +2564,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/win32-arm64@npm:0.24.0" @@ -2718,13 +2571,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/win32-ia32@npm:0.24.0" @@ -2732,13 +2578,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/win32-x64@npm:0.24.0" @@ -3277,13 +3116,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-arm64@npm:3.1.5": - version: 3.1.5 - resolution: "@lmdb/lmdb-darwin-arm64@npm:3.1.5" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-arm64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-darwin-arm64@npm:3.2.0" @@ -3291,13 +3123,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-x64@npm:3.1.5": - version: 3.1.5 - resolution: "@lmdb/lmdb-darwin-x64@npm:3.1.5" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-x64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.0" @@ -3305,13 +3130,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm64@npm:3.1.5": - version: 3.1.5 - resolution: "@lmdb/lmdb-linux-arm64@npm:3.1.5" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@lmdb/lmdb-linux-arm64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.0" @@ -3319,13 +3137,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm@npm:3.1.5": - version: 3.1.5 - resolution: "@lmdb/lmdb-linux-arm@npm:3.1.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@lmdb/lmdb-linux-arm@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-linux-arm@npm:3.2.0" @@ -3333,13 +3144,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-x64@npm:3.1.5": - version: 3.1.5 - resolution: "@lmdb/lmdb-linux-x64@npm:3.1.5" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-linux-x64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-linux-x64@npm:3.2.0" @@ -3347,13 +3151,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-win32-x64@npm:3.1.5": - version: 3.1.5 - resolution: "@lmdb/lmdb-win32-x64@npm:3.1.5" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-win32-x64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-win32-x64@npm:3.2.0" @@ -3630,8 +3427,8 @@ __metadata: resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.1.0-next.0" - "@angular/compiler-cli": "npm:19.1.0-next.0" + "@angular/compiler": "npm:19.1.0-next.2" + "@angular/compiler-cli": "npm:19.1.0-next.2" typescript: "npm:5.7.2" webpack: "npm:5.97.0" peerDependencies: @@ -4392,13 +4189,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.26.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.0" @@ -4406,13 +4196,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-android-arm64@npm:4.26.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm64@npm:4.28.0" @@ -4420,13 +4203,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.26.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.0" @@ -4434,13 +4210,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.26.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-x64@npm:4.28.0" @@ -4448,13 +4217,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.26.0" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.0" @@ -4462,13 +4224,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.26.0" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.0" @@ -4476,13 +4231,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0" @@ -4490,13 +4238,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.26.0" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0" @@ -4504,13 +4245,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.26.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.0" @@ -4518,13 +4252,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.26.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.0" @@ -4532,13 +4259,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0" @@ -4546,13 +4266,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.26.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0" @@ -4560,13 +4273,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.26.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.0" @@ -4574,13 +4280,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.26.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.0" @@ -4588,13 +4287,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.26.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.0" @@ -4602,13 +4294,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.26.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.0" @@ -4616,13 +4301,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.26.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.0" @@ -4630,13 +4308,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.26.0": - version: 4.26.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.26.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.0" @@ -6143,15 +5814,6 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-basic-ssl@npm:1.1.0": - version: 1.1.0 - resolution: "@vitejs/plugin-basic-ssl@npm:1.1.0" - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 10c0/98aadf5c7fd229995c67f973b4fb0f987a378031a4edcc5f714b412c00af12a6ecafb96659e76382ff9f8a831aac5243c74548e2807402ea8b02ec122d29f008 - languageName: node - linkType: hard - "@vitejs/plugin-basic-ssl@npm:1.2.0": version: 1.2.0 resolution: "@vitejs/plugin-basic-ssl@npm:1.2.0" @@ -9451,86 +9113,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.21.5" - "@esbuild/android-arm": "npm:0.21.5" - "@esbuild/android-arm64": "npm:0.21.5" - "@esbuild/android-x64": "npm:0.21.5" - "@esbuild/darwin-arm64": "npm:0.21.5" - "@esbuild/darwin-x64": "npm:0.21.5" - "@esbuild/freebsd-arm64": "npm:0.21.5" - "@esbuild/freebsd-x64": "npm:0.21.5" - "@esbuild/linux-arm": "npm:0.21.5" - "@esbuild/linux-arm64": "npm:0.21.5" - "@esbuild/linux-ia32": "npm:0.21.5" - "@esbuild/linux-loong64": "npm:0.21.5" - "@esbuild/linux-mips64el": "npm:0.21.5" - "@esbuild/linux-ppc64": "npm:0.21.5" - "@esbuild/linux-riscv64": "npm:0.21.5" - "@esbuild/linux-s390x": "npm:0.21.5" - "@esbuild/linux-x64": "npm:0.21.5" - "@esbuild/netbsd-x64": "npm:0.21.5" - "@esbuild/openbsd-x64": "npm:0.21.5" - "@esbuild/sunos-x64": "npm:0.21.5" - "@esbuild/win32-arm64": "npm:0.21.5" - "@esbuild/win32-ia32": "npm:0.21.5" - "@esbuild/win32-x64": "npm:0.21.5" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de - languageName: node - linkType: hard - "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -12968,41 +12550,6 @@ __metadata: languageName: node linkType: hard -"lmdb@npm:3.1.5": - version: 3.1.5 - resolution: "lmdb@npm:3.1.5" - dependencies: - "@lmdb/lmdb-darwin-arm64": "npm:3.1.5" - "@lmdb/lmdb-darwin-x64": "npm:3.1.5" - "@lmdb/lmdb-linux-arm": "npm:3.1.5" - "@lmdb/lmdb-linux-arm64": "npm:3.1.5" - "@lmdb/lmdb-linux-x64": "npm:3.1.5" - "@lmdb/lmdb-win32-x64": "npm:3.1.5" - msgpackr: "npm:^1.11.2" - node-addon-api: "npm:^6.1.0" - node-gyp: "npm:latest" - node-gyp-build-optional-packages: "npm:5.2.2" - ordered-binary: "npm:^1.5.3" - weak-lru-cache: "npm:^1.2.2" - dependenciesMeta: - "@lmdb/lmdb-darwin-arm64": - optional: true - "@lmdb/lmdb-darwin-x64": - optional: true - "@lmdb/lmdb-linux-arm": - optional: true - "@lmdb/lmdb-linux-arm64": - optional: true - "@lmdb/lmdb-linux-x64": - optional: true - "@lmdb/lmdb-win32-x64": - optional: true - bin: - download-lmdb-prebuilds: bin/download-prebuilds.js - checksum: 10c0/15731b1e94a25183f8e7000a6a1636c7d82b992340110692bdea9ef320af8d284f988683679b78024c61137cab1cfa46f8e9a99d00d586c2b56497b994095cac - languageName: node - linkType: hard - "lmdb@npm:3.2.0": version: 3.2.0 resolution: "lmdb@npm:3.2.0" @@ -13304,15 +12851,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.12": - version: 0.30.12 - resolution: "magic-string@npm:0.30.12" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/469f457d18af37dfcca8617086ea8a65bcd8b60ba8a1182cb024ce43e470ace3c9d1cb6bee58d3b311768fb16bc27bd50bdeebcaa63dadd0fd46cac4d2e11d5f - languageName: node - linkType: hard - "magic-string@npm:0.30.14, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.14 resolution: "magic-string@npm:0.30.14" @@ -15052,27 +14590,27 @@ __metadata: languageName: node linkType: hard -"piscina@npm:4.7.0, piscina@npm:^4.7.0": - version: 4.7.0 - resolution: "piscina@npm:4.7.0" +"piscina@npm:4.8.0": + version: 4.8.0 + resolution: "piscina@npm:4.8.0" dependencies: "@napi-rs/nice": "npm:^1.0.1" dependenciesMeta: "@napi-rs/nice": optional: true - checksum: 10c0/d539857c9140d820173c78c9d6b7c20597ae4ff10a5060ff90ffc1d22a098eccd98f4d16073ce51c6d07e530079fa4d9a31ff7b4477b1411011e108b5b5689d4 + checksum: 10c0/963ee0dc0862e936c88357b21b0b4fa32407ab21e9600756504411f368dcfae7478c8a19e13d0dd8afed56a8252a8e5967ee4413aa33dd436751b7ee2804531e languageName: node linkType: hard -"piscina@npm:4.8.0": - version: 4.8.0 - resolution: "piscina@npm:4.8.0" +"piscina@npm:^4.7.0": + version: 4.7.0 + resolution: "piscina@npm:4.7.0" dependencies: "@napi-rs/nice": "npm:^1.0.1" dependenciesMeta: "@napi-rs/nice": optional: true - checksum: 10c0/963ee0dc0862e936c88357b21b0b4fa32407ab21e9600756504411f368dcfae7478c8a19e13d0dd8afed56a8252a8e5967ee4413aa33dd436751b7ee2804531e + checksum: 10c0/d539857c9140d820173c78c9d6b7c20597ae4ff10a5060ff90ffc1d22a098eccd98f4d16073ce51c6d07e530079fa4d9a31ff7b4477b1411011e108b5b5689d4 languageName: node linkType: hard @@ -15234,7 +14772,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.49, postcss@npm:^8.2.14, postcss@npm:^8.4.33, postcss@npm:^8.4.43, postcss@npm:^8.4.47, postcss@npm:^8.4.49": +"postcss@npm:8.4.49, postcss@npm:^8.2.14, postcss@npm:^8.4.33, postcss@npm:^8.4.47, postcss@npm:^8.4.49": version: 8.4.49 resolution: "postcss@npm:8.4.49" dependencies: @@ -15252,7 +14790,16 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.4.1, prettier@npm:^3.0.0": +"prettier@npm:3.4.2": + version: 3.4.2 + resolution: "prettier@npm:3.4.2" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 + languageName: node + linkType: hard + +"prettier@npm:^3.0.0": version: 3.4.1 resolution: "prettier@npm:3.4.1" bin: @@ -16157,76 +15704,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.26.0": - version: 4.26.0 - resolution: "rollup@npm:4.26.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.26.0" - "@rollup/rollup-android-arm64": "npm:4.26.0" - "@rollup/rollup-darwin-arm64": "npm:4.26.0" - "@rollup/rollup-darwin-x64": "npm:4.26.0" - "@rollup/rollup-freebsd-arm64": "npm:4.26.0" - "@rollup/rollup-freebsd-x64": "npm:4.26.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.26.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.26.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.26.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.26.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.26.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.26.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.26.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.26.0" - "@rollup/rollup-linux-x64-musl": "npm:4.26.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.26.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.26.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.26.0" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/a4375787b95bc3b55d38bbb8dec5f6a63862b08369b9562a2d38efadd400ca42a79406b8f09670a0deb0cc9cd72cca1c0be317302190d1f7feff597003d951bc - languageName: node - linkType: hard - -"rollup@npm:4.28.0, rollup@npm:^4.20.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.28.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.28.0 resolution: "rollup@npm:4.28.0" dependencies: @@ -16404,23 +15882,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.80.7": - version: 1.80.7 - resolution: "sass@npm:1.80.7" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" - source-map-js: "npm:>=0.6.2 <2.0.0" - dependenciesMeta: - "@parcel/watcher": - optional: true - bin: - sass: sass.js - checksum: 10c0/e0e0df8dc9dd7694826f915196a96cda45fe0fc849be9fc08b43c12aa1250eb512130979ed239e1106476973ace1f52abbcc1d5900a075d3813c282a626dcbf7 - languageName: node - linkType: hard - "sass@npm:1.82.0": version: 1.82.0 resolution: "sass@npm:1.82.0" @@ -18623,49 +18084,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:5.4.11": - version: 5.4.11 - resolution: "vite@npm:5.4.11" - dependencies: - esbuild: "npm:^0.21.3" - fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.43" - rollup: "npm:^4.20.0" - peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/d536bb7af57dd0eca2a808f95f5ff1d7b7ffb8d86e17c6893087680a0448bd0d15e07475270c8a6de65cb5115592d037130a1dd979dc76bcef8c1dda202a1874 - languageName: node - linkType: hard - "vite@npm:6.0.2": version: 6.0.2 resolution: "vite@npm:6.0.2" From c832bac9b23cd7e8c354f4e2428c158b9bb45e47 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 5 Dec 2024 16:28:30 +0000 Subject: [PATCH 0082/2162] fix(@angular/build): show error when Node.js built-ins are used during `ng serve` This commit ensures consistent behavior between `ng build` and `ng serve`. Previously, `ng serve` did not display an error message when Node.js built-in modules were included in browser bundles. By default, Vite replaces Node.js built-ins with empty modules, which can lead to unexpected runtime issues. This update addresses the problem by surfacing clear error messages, providing better developer feedback and alignment between the two commands. Closes: #27425 --- .../src/builders/dev-server/vite-server.ts | 20 +++++++++++ .../vite/browser-node-module-dep-error.ts | 26 ++++++++++++++ .../vite/reuse-dep-optimization-cache.ts | 34 +++++++------------ 3 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts 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 39b27b2bd6c7..64c68fd26888 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -803,6 +803,26 @@ function getDepOptimizationConfig({ thirdPartySourcemaps: boolean; }): DepOptimizationConfig { const plugins: ViteEsBuildPlugin[] = [ + { + name: 'angular-browser-node-built-in', + setup(build) { + // This namespace is configured by vite. + // @see: https://github.com/vitejs/vite/blob/a1dd396da856401a12c921d0cd2c4e97cb63f1b5/packages/vite/src/node/optimizer/esbuildDepPlugin.ts#L109 + build.onLoad({ filter: /.*/, namespace: 'browser-external' }, (args) => { + if (!isBuiltin(args.path)) { + return; + } + + return { + errors: [ + { + text: `The package "${args.path}" wasn't found on the file system but is built into node.`, + }, + ], + }; + }); + }, + }, { name: `angular-vite-optimize-deps${ssr ? '-ssr' : ''}${ thirdPartySourcemaps ? '-vendor-sourcemap' : '' diff --git a/tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts b/tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts new file mode 100644 index 000000000000..8aa791750c23 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts @@ -0,0 +1,26 @@ +import assert from 'node:assert'; +import { execAndWaitForOutputToMatch, ng } from '../../utils/process'; +import { writeFile } from '../../utils/fs'; +import { getGlobalVariable } from '../../utils/env'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + await ng('cache', 'clean'); + await ng('cache', 'on'); + + await writeFile('src/main.ts', `import '@angular-devkit/core/node';`); + + const { stderr } = await execAndWaitForOutputToMatch('ng', ['serve'], /ERROR/, { + CI: '0', + NO_COLOR: 'true', + }); + + assert.match( + stderr, + /The package "node:path" wasn't found on the file system but is built into node/, + ); +} diff --git a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts b/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts index 26caf5a9afb3..c7c03be87e2c 100644 --- a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts +++ b/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts @@ -1,11 +1,7 @@ import assert from 'node:assert'; +import { setTimeout } from 'node:timers/promises'; import { findFreePort } from '../../utils/network'; -import { - execAndWaitForOutputToMatch, - killAllProcesses, - ng, - waitForAnyProcessOutputToMatch, -} from '../../utils/process'; +import { execAndWaitForOutputToMatch, killAllProcesses, ng } from '../../utils/process'; export default async function () { await ng('cache', 'clean'); @@ -13,23 +9,19 @@ export default async function () { const port = await findFreePort(); - // Make sure serve is consistent with build - await execAndWaitForOutputToMatch( - 'ng', - ['serve', '--port', `${port}`], - /bundle generation complete/, - // Use CI:0 to force caching - { DEBUG: 'vite:deps', CI: '0', NO_COLOR: 'true' }, - ); - - // Wait for vite to write to FS and stablize. - await Promise.all([ - waitForAnyProcessOutputToMatch(/dependencies optimized/, 5000), - fetch(`http://localhost:${port}/main.js`).then((r) => - assert(r.ok, `Expected 'response.ok' to be 'true'.`), + const [, response] = await Promise.all([ + execAndWaitForOutputToMatch( + 'ng', + ['serve', '--port', `${port}`], + /dependencies optimized/, + // Use CI:0 to force caching + { DEBUG: 'vite:deps', CI: '0', NO_COLOR: 'true' }, ), + setTimeout(4_000).then(() => fetch(`http://localhost:${port}/main.js`)), ]); + assert(response.ok, `Expected 'response.ok' to be 'true'.`); + // Terminate the dev-server await killAllProcesses(); @@ -38,6 +30,6 @@ export default async function () { ['serve', '--port=0'], /Hash is consistent\. Skipping/, // Use CI:0 to force caching - { DEBUG: 'vite:deps', CI: '0' }, + { DEBUG: 'vite:deps', CI: '0', NO_COLOR: 'true' }, ); } From 2c2ac84fec1f42d54067893cc7f52ae82139f08b Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 5 Dec 2024 17:42:27 +0000 Subject: [PATCH 0083/2162] docs: release notes for the v19.0.4 release --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfe1e92f9f2d..a210c3298ca0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ + + +# 19.0.4 (2024-12-05) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------ | +| [23667ed4a](https://github.com/angular/angular-cli/commit/23667ed4aa0bedbb591dc0284116402dc42ed95c) | fix | handle windows spec collisions | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| [fc41f50b5](https://github.com/angular/angular-cli/commit/fc41f50b53bbffead017b420105eed5bd8573ac1) | fix | show error when Node.js built-ins are used during `ng serve` | +| [14451e275](https://github.com/angular/angular-cli/commit/14451e2754caff2c9800cca17e11ffa452575f09) | perf | reuse TS package.json cache when rebuilding | + + + # 19.1.0-next.0 (2024-12-04) From b8b561d452efb3003978a1731735af772108d82d Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 5 Dec 2024 18:52:45 +0000 Subject: [PATCH 0084/2162] refactor(@angular/build): move `getDepOptimizationConfig` into utils file Reduce the amount of code in vite-server.ts --- .../src/builders/dev-server/vite-server.ts | 89 +----------------- .../angular/build/src/tools/vite/utils.ts | 92 +++++++++++++++++++ 2 files changed, 94 insertions(+), 87 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 64c68fd26888..4c868c90bf37 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -13,7 +13,7 @@ import assert from 'node:assert'; import { readFile } from 'node:fs/promises'; import { builtinModules, isBuiltin } from 'node:module'; import { join } from 'node:path'; -import type { Connect, DepOptimizationConfig, InlineConfig, ViteDevServer } from 'vite'; +import type { Connect, InlineConfig, ViteDevServer } from 'vite'; import type { ComponentStyleRecord } from '../../tools/vite/middlewares'; import { ServerSsrMode, @@ -23,6 +23,7 @@ import { createAngularSsrTransformPlugin, createRemoveIdPrefixPlugin, } from '../../tools/vite/plugins'; +import { EsbuildLoaderOption, getDepOptimizationConfig } from '../../tools/vite/utils'; import { loadProxyConfiguration, normalizeSourceMaps } from '../../utils'; import { useComponentStyleHmr, useComponentTemplateHmr } from '../../utils/environment-options'; import { loadEsmModule } from '../../utils/load-esm'; @@ -32,7 +33,6 @@ import { BuildOutputFileType, type ExternalResultMetadata, JavaScriptTransformer, - getFeatureSupport, getSupportedBrowsers, isZonelessApp, transformSupportedBrowsersToTargets, @@ -775,91 +775,6 @@ export async function setupServer( return configuration; } -type ViteEsBuildPlugin = NonNullable< - NonNullable['plugins'] ->[0]; - -type EsbuildLoaderOption = Exclude['loader']; - -function getDepOptimizationConfig({ - disabled, - exclude, - include, - target, - zoneless, - prebundleTransformer, - ssr, - loader, - thirdPartySourcemaps, -}: { - disabled: boolean; - exclude: string[]; - include: string[]; - target: string[]; - prebundleTransformer: JavaScriptTransformer; - ssr: boolean; - zoneless: boolean; - loader?: EsbuildLoaderOption; - thirdPartySourcemaps: boolean; -}): DepOptimizationConfig { - const plugins: ViteEsBuildPlugin[] = [ - { - name: 'angular-browser-node-built-in', - setup(build) { - // This namespace is configured by vite. - // @see: https://github.com/vitejs/vite/blob/a1dd396da856401a12c921d0cd2c4e97cb63f1b5/packages/vite/src/node/optimizer/esbuildDepPlugin.ts#L109 - build.onLoad({ filter: /.*/, namespace: 'browser-external' }, (args) => { - if (!isBuiltin(args.path)) { - return; - } - - return { - errors: [ - { - text: `The package "${args.path}" wasn't found on the file system but is built into node.`, - }, - ], - }; - }); - }, - }, - { - name: `angular-vite-optimize-deps${ssr ? '-ssr' : ''}${ - thirdPartySourcemaps ? '-vendor-sourcemap' : '' - }`, - setup(build) { - build.onLoad({ filter: /\.[cm]?js$/ }, async (args) => { - return { - contents: await prebundleTransformer.transformFile(args.path), - loader: 'js', - }; - }); - }, - }, - ]; - - return { - // Exclude any explicitly defined dependencies (currently build defined externals) - exclude, - // NB: to disable the deps optimizer, set optimizeDeps.noDiscovery to true and optimizeDeps.include as undefined. - // Include all implict dependencies from the external packages internal option - include: disabled ? undefined : include, - noDiscovery: disabled, - // Add an esbuild plugin to run the Angular linker on dependencies - esbuildOptions: { - // Set esbuild supported targets. - target, - supported: getFeatureSupport(target, zoneless), - plugins, - loader, - define: { - 'ngServerMode': `${ssr}`, - }, - resolveExtensions: ['.mjs', '.js', '.cjs'], - }, - }; -} - /** * Checks if the given value is an absolute URL. * diff --git a/packages/angular/build/src/tools/vite/utils.ts b/packages/angular/build/src/tools/vite/utils.ts index ae2cd59ec693..7aa37482bf81 100644 --- a/packages/angular/build/src/tools/vite/utils.ts +++ b/packages/angular/build/src/tools/vite/utils.ts @@ -7,7 +7,11 @@ */ import { lookup as lookupMimeType } from 'mrmime'; +import { isBuiltin } from 'node:module'; import { extname } from 'node:path'; +import type { DepOptimizationConfig } from 'vite'; +import { JavaScriptTransformer } from '../esbuild/javascript-transformer'; +import { getFeatureSupport } from '../esbuild/utils'; export type AngularMemoryOutputFiles = Map< string, @@ -33,3 +37,91 @@ export function lookupMimeTypeFromRequest(url: string): string | undefined { return extension && lookupMimeType(extension); } + +type ViteEsBuildPlugin = NonNullable< + NonNullable['plugins'] +>[0]; + +export type EsbuildLoaderOption = Exclude< + DepOptimizationConfig['esbuildOptions'], + undefined +>['loader']; + +export function getDepOptimizationConfig({ + disabled, + exclude, + include, + target, + zoneless, + prebundleTransformer, + ssr, + loader, + thirdPartySourcemaps, +}: { + disabled: boolean; + exclude: string[]; + include: string[]; + target: string[]; + prebundleTransformer: JavaScriptTransformer; + ssr: boolean; + zoneless: boolean; + loader?: EsbuildLoaderOption; + thirdPartySourcemaps: boolean; +}): DepOptimizationConfig { + const plugins: ViteEsBuildPlugin[] = [ + { + name: 'angular-browser-node-built-in', + setup(build) { + // This namespace is configured by vite. + // @see: https://github.com/vitejs/vite/blob/a1dd396da856401a12c921d0cd2c4e97cb63f1b5/packages/vite/src/node/optimizer/esbuildDepPlugin.ts#L109 + build.onLoad({ filter: /.*/, namespace: 'browser-external' }, (args) => { + if (!isBuiltin(args.path)) { + return; + } + + return { + errors: [ + { + text: `The package "${args.path}" wasn't found on the file system but is built into node.`, + }, + ], + }; + }); + }, + }, + { + name: `angular-vite-optimize-deps${ssr ? '-ssr' : ''}${ + thirdPartySourcemaps ? '-vendor-sourcemap' : '' + }`, + setup(build) { + build.onLoad({ filter: /\.[cm]?js$/ }, async (args) => { + return { + contents: await prebundleTransformer.transformFile(args.path), + loader: 'js', + }; + }); + }, + }, + ]; + + return { + // Exclude any explicitly defined dependencies (currently build defined externals) + exclude, + // NB: to disable the deps optimizer, set optimizeDeps.noDiscovery to true and optimizeDeps.include as undefined. + // Include all implict dependencies from the external packages internal option + include: disabled ? undefined : include, + noDiscovery: disabled, + // Add an esbuild plugin to run the Angular linker on dependencies + esbuildOptions: { + // Set esbuild supported targets. + target, + supported: getFeatureSupport(target, zoneless), + plugins, + loader, + define: { + 'ngServerMode': `${ssr}`, + }, + resolveExtensions: ['.mjs', '.js', '.cjs'], + }, + }; +} From fb41d182ee9e50386b0412e07a8bacaaa8c7ce13 Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Thu, 5 Dec 2024 08:37:36 -0800 Subject: [PATCH 0085/2162] fix(@angular-devkit/build-angular): fix webpack config transform for karma --- .../testing/builder/src/builder-harness.ts | 13 +++- .../angular_devkit/build_angular/BUILD.bazel | 1 + .../src/builders/karma/browser_builder.ts | 2 +- .../karma/tests/options/custom-loader_spec.ts | 67 +++++++++++++++++++ 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 packages/angular_devkit/build_angular/src/builders/karma/tests/options/custom-loader_spec.ts diff --git a/modules/testing/builder/src/builder-harness.ts b/modules/testing/builder/src/builder-harness.ts index d38858565389..9fdca970a277 100644 --- a/modules/testing/builder/src/builder-harness.ts +++ b/modules/testing/builder/src/builder-harness.ts @@ -54,6 +54,11 @@ export interface BuilderHarnessExecutionOptions { outputLogsOnException: boolean; useNativeFileWatching: boolean; signal: AbortSignal; + additionalExecuteArguments: unknown[]; +} + +interface BuilderHandlerFnWithVarArgs extends BuilderHandlerFn { + (input: T, context: BuilderContext, ...args: unknown[]): BuilderOutputLike; } /** @@ -256,7 +261,13 @@ export class BuilderHarness { mergeMap((validator) => validator(targetOptions)), map((validationResult) => validationResult.data), mergeMap((data) => - convertBuilderOutputToObservable(this.builderHandler(data as T & json.JsonObject, context)), + convertBuilderOutputToObservable( + (this.builderHandler as BuilderHandlerFnWithVarArgs)( + data as T & json.JsonObject, + context, + ...(options.additionalExecuteArguments ?? []), + ), + ), ), map((buildResult) => ({ result: buildResult, error: undefined })), catchError((error) => { diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 4a3b2ab94478..fd803c9ba7f2 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -321,6 +321,7 @@ LARGE_SPECS = { "@npm//karma-jasmine", "@npm//karma-jasmine-html-reporter", "@npm//puppeteer", + "@npm//webpack", ], }, "protractor": { 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 6abf78e1f68a..6bc18e6e2b4e 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 @@ -34,7 +34,7 @@ export function execute( karmaOptions?: (options: KarmaConfigOptions) => KarmaConfigOptions; } = {}, ): Observable { - return from(initializeBrowser(options, context)).pipe( + return from(initializeBrowser(options, context, transforms.webpackConfiguration)).pipe( switchMap(async ([karma, webpackConfig]) => { const projectName = context.target?.project; if (!projectName) { diff --git a/packages/angular_devkit/build_angular/src/builders/karma/tests/options/custom-loader_spec.ts b/packages/angular_devkit/build_angular/src/builders/karma/tests/options/custom-loader_spec.ts new file mode 100644 index 000000000000..5b40e38451c4 --- /dev/null +++ b/packages/angular_devkit/build_angular/src/builders/karma/tests/options/custom-loader_spec.ts @@ -0,0 +1,67 @@ +/** + * @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 { Configuration } from 'webpack'; + +import { execute } from '../../index'; +import { BASE_OPTIONS, KARMA_BUILDER_INFO, describeKarmaBuilder } from '../setup'; +import { ExecutionTransformer } from '../../../../transforms'; + +describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget, isApplicationBuilder) => { + describe('Option: Custom file loader', () => { + beforeEach(async () => { + if (isApplicationBuilder) { + pending('not implemented yet for application builder'); + } + await setupTarget(harness); + }); + + beforeEach(async () => { + await harness.writeFiles({ + 'src/number-webpack-loader.js': ` + module.exports = (source) => { + return 'export const DOUBLED = ' + (Number(source) * 2) + ';\\n'; + };`, + 'src/app/app.number': `42`, + 'src/app/app.number.d.ts': `export const DOUBLED: number;`, + 'src/app/app.component.spec.ts': ` + import { DOUBLED } from './app.number'; + describe('Custom webpack transform', () => { + it('generates expected export', () => { + expect(DOUBLED).toBe(84); + }); + });`, + }); + }); + + it('applies the webpack configuration transform', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + }); + + const webpackConfiguration: ExecutionTransformer = (config: Configuration) => { + config.module ??= {}; + config.module.rules ??= []; + config.module.rules.push({ + test: /\.number$/, + loader: './src/number-webpack-loader.js', + }); + return config; + }; + + const { result } = await harness.executeOnce({ + additionalExecuteArguments: [ + { + webpackConfiguration, + }, + ], + }); + expect(result?.success).toBeTrue(); + }); + }); +}); From 6647247ec098e33ed17155ac8892c06cf3cdfeb5 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 5 Dec 2024 12:34:17 +0000 Subject: [PATCH 0086/2162] test(@angular/ssr): refine spec setup to resolve component ID collision warnings This update addresses excessive log noise caused by the following warning: `NG0912: Component ID generation collision detected. Components 'AppComponent' and 'AppComponent' with selector 'app-root' generated the same component ID. To fix this, you can change the selector of one of those components or add an extra host attribute to force a different ID. Find more at https://angular.dev/errors/NG0912`. --- packages/angular/ssr/test/app-engine_spec.ts | 44 +++++++++----------- packages/angular/ssr/test/app_spec.ts | 4 +- packages/angular/ssr/test/testing-utils.ts | 19 +++++---- 3 files changed, 32 insertions(+), 35 deletions(-) diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index df405703a5bf..ebe98d3e7d9e 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -19,21 +19,21 @@ import { RenderMode } from '../src/routes/route-config'; import { setAngularAppTestingManifest } from './testing-utils'; function createEntryPoint(locale: string) { - return async () => { - @Component({ - standalone: true, - selector: `app-ssr-${locale}`, - template: `SSR works ${locale.toUpperCase()}`, - }) - class SSRComponent {} - - @Component({ - standalone: true, - selector: `app-ssg-${locale}`, - template: `SSG works ${locale.toUpperCase()}`, - }) - class SSGComponent {} + @Component({ + standalone: true, + selector: `app-ssr-${locale}`, + template: `SSR works ${locale.toUpperCase()}`, + }) + class SSRComponent {} + + @Component({ + standalone: true, + selector: `app-ssg-${locale}`, + template: `SSG works ${locale.toUpperCase()}`, + }) + class SSGComponent {} + return async () => { setAngularAppTestingManifest( [ { path: 'ssg', component: SSGComponent }, @@ -74,8 +74,6 @@ describe('AngularAppEngine', () => { describe('Localized app', () => { beforeAll(() => { - destroyAngularServerApp(); - setAngularAppEngineManifest({ // Note: Although we are testing only one locale, we need to configure two or more // to ensure that we test a different code path. @@ -142,18 +140,16 @@ describe('AngularAppEngine', () => { describe('Non-localized app', () => { beforeAll(() => { - destroyAngularServerApp(); + @Component({ + standalone: true, + selector: 'app-home', + template: `Home works`, + }) + class HomeComponent {} setAngularAppEngineManifest({ entryPoints: { '': async () => { - @Component({ - standalone: true, - selector: 'app-home', - template: `Home works`, - }) - class HomeComponent {} - setAngularAppTestingManifest( [{ path: 'home', component: HomeComponent }], [{ path: '**', renderMode: RenderMode.Server }], diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index 7bf8731e17b3..1ae6d2e3e20b 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -12,7 +12,7 @@ import '@angular/compiler'; /* eslint-enable import/no-unassigned-import */ import { Component } from '@angular/core'; -import { AngularServerApp, destroyAngularServerApp } from '../src/app'; +import { AngularServerApp } from '../src/app'; import { RenderMode } from '../src/routes/route-config'; import { setAngularAppTestingManifest } from './testing-utils'; @@ -20,8 +20,6 @@ describe('AngularServerApp', () => { let app: AngularServerApp; beforeAll(() => { - destroyAngularServerApp(); - @Component({ standalone: true, selector: 'app-home', diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index ff6803df58a8..019e79e1b015 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -10,6 +10,7 @@ import { Component, provideExperimentalZonelessChangeDetection } from '@angular/ 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, provideServerRoutesConfig } from '../src/routes/route-config'; @@ -29,6 +30,16 @@ export function setAngularAppTestingManifest( baseHref = '/', additionalServerAssets: Record = {}, ): void { + destroyAngularServerApp(); + + @Component({ + standalone: true, + selector: 'app-root', + template: '', + imports: [RouterOutlet], + }) + class AppComponent {} + setAngularAppManifest({ inlineCriticalCss: false, baseHref, @@ -65,14 +76,6 @@ export function setAngularAppTestingManifest( }, }, bootstrap: async () => () => { - @Component({ - standalone: true, - selector: 'app-root', - template: '', - imports: [RouterOutlet], - }) - class AppComponent {} - return bootstrapApplication(AppComponent, { providers: [ provideServerRendering(), From ffad81a4de09f9664aa5d24176cc2a3b56342def Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 6 Dec 2024 07:13:48 +0000 Subject: [PATCH 0087/2162] build: update all non-major dependencies --- .github/workflows/pr.yml | 2 +- package.json | 10 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 4 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- yarn.lock | 162 ++++++++++++++++-- 7 files changed, 157 insertions(+), 29 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index cf7f1a4623f8..fb9b82d95d40 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - name: Setup ESLint Caching - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: .eslintcache key: ${{ runner.os }}-${{ hashFiles('.eslintrc.json') }} diff --git a/package.json b/package.json index 9f2cea6a5908..ade7a12dc84d 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", "babel-loader": "9.2.1", - "beasties": "0.1.0", + "beasties": "0.2.0", "browser-sync": "3.0.3", "browserslist": "^4.21.5", "buffer": "6.0.3", @@ -139,7 +139,7 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", - "express": "4.21.1", + "express": "4.21.2", "fast-glob": "3.3.2", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.3", @@ -197,7 +197,7 @@ "source-map-support": "0.5.21", "symbol-observable": "4.0.0", "tar": "^7.0.0", - "terser": "5.36.0", + "terser": "5.37.0", "tree-kill": "1.2.2", "ts-node": "^10.9.1", "tslib": "2.8.1", @@ -206,9 +206,9 @@ "unenv": "^1.10.0", "verdaccio": "6.0.2", "verdaccio-auth-memory": "^10.0.0", - "vite": "6.0.2", + "vite": "6.0.3", "watchpack": "2.4.2", - "webpack": "5.97.0", + "webpack": "5.97.1", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 9eb07e4c8e69..021388faaf18 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -26,7 +26,7 @@ "@babel/plugin-syntax-import-attributes": "7.26.0", "@inquirer/confirm": "5.0.2", "@vitejs/plugin-basic-ssl": "1.2.0", - "beasties": "0.1.0", + "beasties": "0.2.0", "browserslist": "^4.23.0", "esbuild": "0.24.0", "fast-glob": "3.3.2", @@ -41,7 +41,7 @@ "rollup": "4.28.0", "sass": "1.82.0", "semver": "7.6.3", - "vite": "6.0.2", + "vite": "6.0.3", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index e53d5a6784c0..d4fe6fcf2273 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -53,10 +53,10 @@ "semver": "7.6.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.36.0", + "terser": "5.37.0", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.97.0", + "webpack": "5.97.1", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 173b3d38df65..45492dcce249 100644 --- a/packages/angular_devkit/build_webpack/package.json +++ b/packages/angular_devkit/build_webpack/package.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "webpack": "5.97.0" + "webpack": "5.97.1" }, "peerDependencies": { "webpack": "^5.30.0", diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 075ea55a1b48..f51912505303 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "19.1.0-next.2", "@angular/compiler-cli": "19.1.0-next.2", "typescript": "5.7.2", - "webpack": "5.97.0" + "webpack": "5.97.1" } } diff --git a/yarn.lock b/yarn.lock index 3cfc07bc2f35..6946bda296d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -107,11 +107,11 @@ __metadata: semver: "npm:7.6.3" source-map-loader: "npm:5.0.0" source-map-support: "npm:0.5.21" - terser: "npm:5.36.0" + terser: "npm:5.37.0" tree-kill: "npm:1.2.2" tslib: "npm:2.8.1" undici: "npm:7.1.0" - webpack: "npm:5.97.0" + webpack: "npm:5.97.1" webpack-dev-middleware: "npm:7.4.2" webpack-dev-server: "npm:5.1.0" webpack-merge: "npm:6.0.1" @@ -169,7 +169,7 @@ __metadata: "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" rxjs: "npm:7.8.1" - webpack: "npm:5.97.0" + webpack: "npm:5.97.1" peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 @@ -379,7 +379,7 @@ __metadata: "@babel/plugin-syntax-import-attributes": "npm:7.26.0" "@inquirer/confirm": "npm:5.0.2" "@vitejs/plugin-basic-ssl": "npm:1.2.0" - beasties: "npm:0.1.0" + beasties: "npm:0.2.0" browserslist: "npm:^4.23.0" esbuild: "npm:0.24.0" fast-glob: "npm:3.3.2" @@ -395,7 +395,7 @@ __metadata: rollup: "npm:4.28.0" sass: "npm:1.82.0" semver: "npm:7.6.3" - vite: "npm:6.0.2" + vite: "npm:6.0.3" watchpack: "npm:2.4.2" peerDependencies: "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 @@ -700,7 +700,7 @@ __metadata: ansi-colors: "npm:4.1.3" autoprefixer: "npm:10.4.20" babel-loader: "npm:9.2.1" - beasties: "npm:0.1.0" + beasties: "npm:0.2.0" browser-sync: "npm:3.0.3" browserslist: "npm:^4.21.5" buffer: "npm:6.0.3" @@ -714,7 +714,7 @@ __metadata: eslint-config-prettier: "npm:9.1.0" eslint-plugin-header: "npm:3.1.1" eslint-plugin-import: "npm:2.31.0" - express: "npm:4.21.1" + express: "npm:4.21.2" fast-glob: "npm:3.3.2" http-proxy: "npm:^1.18.1" http-proxy-middleware: "npm:3.0.3" @@ -772,7 +772,7 @@ __metadata: source-map-support: "npm:0.5.21" symbol-observable: "npm:4.0.0" tar: "npm:^7.0.0" - terser: "npm:5.36.0" + terser: "npm:5.37.0" tree-kill: "npm:1.2.2" ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" @@ -781,9 +781,9 @@ __metadata: unenv: "npm:^1.10.0" verdaccio: "npm:6.0.2" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:6.0.2" + vite: "npm:6.0.3" watchpack: "npm:2.4.2" - webpack: "npm:5.97.0" + webpack: "npm:5.97.1" webpack-dev-middleware: "npm:7.4.2" webpack-dev-server: "npm:5.1.0" webpack-merge: "npm:6.0.1" @@ -3430,7 +3430,7 @@ __metadata: "@angular/compiler": "npm:19.1.0-next.2" "@angular/compiler-cli": "npm:19.1.0-next.2" typescript: "npm:5.7.2" - webpack: "npm:5.97.0" + webpack: "npm:5.97.1" peerDependencies: "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 typescript: ">=5.5 <5.8" @@ -7002,6 +7002,22 @@ __metadata: languageName: node linkType: hard +"beasties@npm:0.2.0": + version: 0.2.0 + resolution: "beasties@npm:0.2.0" + dependencies: + css-select: "npm:^5.1.0" + css-what: "npm:^6.1.0" + dom-serializer: "npm:^2.0.0" + domhandler: "npm:^5.0.3" + htmlparser2: "npm:^9.1.0" + picocolors: "npm:^1.1.1" + postcss: "npm:^8.4.49" + postcss-media-query-parser: "npm:^0.2.3" + checksum: 10c0/f7d885553b0289e3d50bcc7e4ad72a3974cedad4418d714b29afca91ee0cd0fef9f907a8e17bb80622f18ca410279be8ec2d938bc22e2cb2fcd084dad17291fa + languageName: node + linkType: hard + "before-after-hook@npm:^3.0.2": version: 3.0.2 resolution: "before-after-hook@npm:3.0.2" @@ -9517,6 +9533,45 @@ __metadata: languageName: node linkType: hard +"express@npm:4.21.2": + version: 4.21.2 + resolution: "express@npm:4.21.2" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.3" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.7.1" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.3.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.3" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.12" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.13.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.19.0" + serve-static: "npm:1.16.2" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f + languageName: node + linkType: hard + "extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -10552,7 +10607,7 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^9.0.0": +"htmlparser2@npm:^9.0.0, htmlparser2@npm:^9.1.0": version: 9.1.0 resolution: "htmlparser2@npm:9.1.0" dependencies: @@ -14448,6 +14503,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:0.1.12": + version: 0.1.12 + resolution: "path-to-regexp@npm:0.1.12" + checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -17091,7 +17153,21 @@ __metadata: languageName: node linkType: hard -"terser@npm:5.36.0, terser@npm:^5.26.0": +"terser@npm:5.37.0": + version: 5.37.0 + resolution: "terser@npm:5.37.0" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/ff0dc79b0a0da821e7f5bf7a047eab6d04e70e88b62339a0f1d71117db3310e255f5c00738fa3b391f56c3571f800a00047720261ba04ced0241c1f9922199f4 + languageName: node + linkType: hard + +"terser@npm:^5.26.0": version: 5.36.0 resolution: "terser@npm:5.36.0" dependencies: @@ -18136,6 +18212,58 @@ __metadata: languageName: node linkType: hard +"vite@npm:6.0.3": + version: 6.0.3 + resolution: "vite@npm:6.0.3" + dependencies: + esbuild: "npm:^0.24.0" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.49" + rollup: "npm:^4.23.0" + peerDependencies: + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/764ebed14770426a638575b23a51127c630ace873999ab896b0184484d8107e7255cdf64cfb36c65c1ef1d583e44b70a1d14c0f05b89612e834a5806e3964475 + languageName: node + linkType: hard + "void-elements@npm:^2.0.0": version: 2.0.1 resolution: "void-elements@npm:2.0.1" @@ -18334,9 +18462,9 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5.97.0": - version: 5.97.0 - resolution: "webpack@npm:5.97.0" +"webpack@npm:5.97.1": + version: 5.97.1 + resolution: "webpack@npm:5.97.1" dependencies: "@types/eslint-scope": "npm:^3.7.7" "@types/estree": "npm:^1.0.6" @@ -18366,7 +18494,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/a8714d42defbf52382b61c157f68e161a16d0edf228d8d9abaa7a165f3ee0ac7386a08d28d4dcf8d6740ea5bda0c4d4abfeeb838df029e636c1c28bb2454ac56 + checksum: 10c0/a12d3dc882ca582075f2c4bd88840be8307427245c90a8a0e0b372d73560df13fcf25a61625c9e7edc964981d16b5a8323640562eb48347cf9dd2f8bd1b39d35 languageName: node linkType: hard From 120f088778fa0023291781afb5199933d4ac69f7 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 6 Dec 2024 06:14:14 +0000 Subject: [PATCH 0088/2162] 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 480130511d2e..82897c05cb85 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#0814af9f9aa3cc21dcae56fdd7bd8b3447214040", - "@angular/cdk": "github:angular/cdk-builds#92f078ffe9a36a0ff94b06212761b6dc5d2931ed", - "@angular/common": "github:angular/common-builds#177586106de8d649d52506a164fa4e112000d2a1", - "@angular/compiler": "github:angular/compiler-builds#d07917bd7758640ab78a208bb799b5bffc3911ca", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#ec5244f2b09b69711ceaaf7b5efbd6f5f5b6f123", - "@angular/core": "github:angular/core-builds#c0fc8896471f875ab525f043038702fa65cf317e", - "@angular/forms": "github:angular/forms-builds#db0436c4a81b656df418974b5e5486a67f8afe00", - "@angular/language-service": "github:angular/language-service-builds#383f66b198009b841ea2e0587bdb1fef3b546f17", - "@angular/localize": "github:angular/localize-builds#4f79d46aecf9fcd3ffcbc8e701f87c0ccf32bb0f", - "@angular/material": "github:angular/material-builds#8824a4d58d67aaa1f5f00671654931bad45d50b2", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#590855b9b30f7214b1a54cc2cfb0175e1fbd6735", - "@angular/platform-browser": "github:angular/platform-browser-builds#981b6a657b841bd2aa75f27a43c574244b4278bc", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a2a65fdf5559e69560dcb073e543fef88a68de39", - "@angular/platform-server": "github:angular/platform-server-builds#d94b352af1e92d3dfc6a758e09adbf7b2bc0f759", - "@angular/router": "github:angular/router-builds#ccf3d50346e0f7e234da71191b1b9ec3471e39f2", - "@angular/service-worker": "github:angular/service-worker-builds#75eda802eea44baf5b565d77ecbbf21d8a1f372f" + "@angular/animations": "github:angular/animations-builds#9c8bf57cc81f15953088cdd07cff9d313d583572", + "@angular/cdk": "github:angular/cdk-builds#9e15b9d7a3d5a0a2c0514ee3b68b15eafec4c0b6", + "@angular/common": "github:angular/common-builds#84f9bf8b584d0267b961cb0015b41e8b599f71b7", + "@angular/compiler": "github:angular/compiler-builds#b9b16869372dab5f9abb966fe8b77135ed4a9556", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#1922bc7eebdd68488ebf36510997813c540fb0e4", + "@angular/core": "github:angular/core-builds#c86076fdcfbadb7bde11d8a038546de561ba2d94", + "@angular/forms": "github:angular/forms-builds#cdccd3ef246d903f2b4adf2b48b9158ed635d190", + "@angular/language-service": "github:angular/language-service-builds#17be159396626b5293c8fc068d649b689bedc93f", + "@angular/localize": "github:angular/localize-builds#b870cc694a0ab70144c0f58673fd8f8c5a047bbe", + "@angular/material": "github:angular/material-builds#1cd7565dd915df7f2bb8897da873b6841dc939b2", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#0a80b382a950ade7f11261f2834b2471c38c57ed", + "@angular/platform-browser": "github:angular/platform-browser-builds#5e1ba412cbb0e028000c82ee326264f3397e792d", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#233ef1cafbf4a915a94acd28885a6f4ca2210d72", + "@angular/platform-server": "github:angular/platform-server-builds#3d6e0e1674626c056085f1c4cf7e124294de1e39", + "@angular/router": "github:angular/router-builds#fde3dc33c58cfbcb139e482a9b6b59b3d979724d", + "@angular/service-worker": "github:angular/service-worker-builds#e9f6144fefe89cb8d93f0a0124630e2907d3661e" } } From d7214e9610588fe1dbd8ce30e51eaac14a038c56 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 6 Dec 2024 12:56:29 +0000 Subject: [PATCH 0089/2162] fix(@angular/ssr): include `Content-Language` header when locale is set The server now includes the `Content-Language` HTTP header in responses whenever a locale is explicitly set. --- packages/angular/ssr/src/app.ts | 24 ++++++++++++-------- packages/angular/ssr/test/app-engine_spec.ts | 3 +++ packages/angular/ssr/test/testing-utils.ts | 9 ++++++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 19ef87591db7..08d5ca13a180 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -210,11 +210,16 @@ export class AngularServerApp { } const assetPath = this.buildServerAssetPathFromRequest(request); - if (!this.assets.hasServerAsset(assetPath)) { + const { + manifest: { locale }, + assets, + } = this; + + if (!assets.hasServerAsset(assetPath)) { return null; } - const { text, hash, size } = this.assets.getServerAsset(assetPath); + const { text, hash, size } = assets.getServerAsset(assetPath); const etag = `"${hash}"`; return request.headers.get('if-none-match') === etag @@ -224,6 +229,7 @@ export class AngularServerApp { 'Content-Length': size.toString(), 'ETag': etag, 'Content-Type': 'text/html;charset=UTF-8', + ...(locale !== undefined ? { 'Content-Language': locale } : {}), ...headers, }, }); @@ -254,11 +260,17 @@ export class AngularServerApp { const url = new URL(request.url); const platformProviders: StaticProvider[] = []; + const { + manifest: { bootstrap, inlineCriticalCss, locale }, + assets, + } = this; + // Initialize the response with status and headers if available. const responseInit = { status, headers: new Headers({ 'Content-Type': 'text/html;charset=UTF-8', + ...(locale !== undefined ? { 'Content-Language': locale } : {}), ...headers, }), }; @@ -281,18 +293,12 @@ export class AngularServerApp { ); } else if (renderMode === RenderMode.Client) { // Serve the client-side rendered version if the route is configured for CSR. - let html = await this.assets.getServerAsset('index.csr.html').text(); + let html = await assets.getServerAsset('index.csr.html').text(); html = await this.runTransformsOnHtml(html, url); return new Response(html, responseInit); } - const { - manifest: { bootstrap, inlineCriticalCss, locale }, - hooks, - assets, - } = this; - if (locale !== undefined) { platformProviders.push({ provide: LOCALE_ID, diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index ebe98d3e7d9e..2cad65fe03cb 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -60,6 +60,7 @@ function createEntryPoint(locale: string) { `, }, }, + locale, ); return { @@ -110,12 +111,14 @@ describe('AngularAppEngine', () => { const request = new Request('https://example.com/it/ssr/index.html'); const response = await appEngine.handle(request); expect(await response?.text()).toContain('SSR works IT'); + expect(response?.headers?.get('Content-Language')).toBe('it'); }); it('should return a serve prerendered page with correct locale', async () => { const request = new Request('https://example.com/it/ssg'); const response = await appEngine.handle(request); expect(await response?.text()).toContain('SSG works IT'); + expect(response?.headers?.get('Content-Language')).toBe('it'); }); it('should correctly serve the prerendered content when the URL ends with "index.html" with correct locale', async () => { diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index 019e79e1b015..dd18ea29b516 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -21,14 +21,18 @@ import { ServerRoute, provideServerRoutesConfig } from '../src/routes/route-conf * Angular components and providers for testing purposes. * * @param routes - An array of route definitions to be used by the Angular Router. - * @param serverRoutes - An array of ServerRoute definitions to be used for server-side rendering. - * @param [baseHref='/'] - An optional base href to be used in the HTML template. + * @param serverRoutes - An array of server route definitions for server-side rendering. + * @param [baseHref='/'] - An optional base href for the HTML template (default is `/`). + * @param additionalServerAssets - A record of additional server assets to include, + * where the keys are asset paths and the values are asset details. + * @param locale - An optional locale to configure for the application during testing. */ export function setAngularAppTestingManifest( routes: Routes, serverRoutes: ServerRoute[], baseHref = '/', additionalServerAssets: Record = {}, + locale?: string, ): void { destroyAngularServerApp(); @@ -43,6 +47,7 @@ export function setAngularAppTestingManifest( setAngularAppManifest({ inlineCriticalCss: false, baseHref, + locale, assets: { ...additionalServerAssets, 'index.server.html': { From 0a570c0c2e64c61ce9969975a21c0d9aac8d9f3b Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Sat, 7 Dec 2024 17:46:00 +0000 Subject: [PATCH 0090/2162] feat(@angular/build): add support for customizing URL segments with i18n MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, the `baseHref` option under each locale allowed for generating a unique base href for specific locales. However, users were still required to handle file organization manually, and `baseHref` appeared to be primarily designed for this purpose. This commit introduces a new `subPath` option, which simplifies the i18n process, particularly in static site generation (SSG) and server-side rendering (SSR). When the `subPath` option is used, the `baseHref` is ignored. Instead, the `subPath` serves as both the base href and the name of the directory containing the localized version of the app. Below is an example configuration showcasing the use of `subPath`: ```json "i18n": { "sourceLocale": { "code": "en-US", "subPath": "" }, "locales": { "fr-BE": { "subPath": "fr", "translation": "src/i18n/messages.fr-BE.xlf" }, "de-BE": { "subPath": "de", "translation": "src/i18n/messages.de-BE.xlf" } } } ``` The following tree structure demonstrates how the `subPath` organizes localized build output: ``` dist/ ├── app/ │ └── browser/ # Default locale, accessible at `/` │ ├── fr/ # Locale for `fr-BE`, accessible at `/fr` │ └── de/ # Locale for `de-BE`, accessible at `/de` ``` DEPRECATED: The `baseHref` option under `i18n.locales` and `i18n.sourceLocale` in `angular.json` is deprecated in favor of `subPath`. The `subPath` defines the URL segment for the locale, serving as both the HTML base HREF and the directory name for output. By default, if not specified, `subPath` will use the locale code. Closes #16997 and closes #28967 --- .../build/src/builders/application/i18n.ts | 26 +-- .../build/src/builders/application/options.ts | 13 +- .../src/builders/extract-i18n/options.ts | 3 +- .../angular/build/src/utils/i18n-options.ts | 89 ++++++++-- .../src/utils/server-rendering/manifest.ts | 22 +-- .../src/utils/server-rendering/prerender.ts | 2 +- .../cli/lib/config/workspace-schema.json | 68 ++++++-- packages/angular/ssr/src/app-engine.ts | 2 +- .../src/builders/browser/index.ts | 13 +- .../src/builders/extract-i18n/options.ts | 3 +- .../build_angular/src/utils/i18n-webpack.ts | 2 +- .../build_angular/src/utils/output-paths.ts | 2 +- packages/schematics/angular/guard/index.ts | 2 +- .../schematics/angular/guard/index_spec.ts | 4 +- ...routes-output-mode-server-i18n-sub-path.ts | 152 ++++++++++++++++++ 15 files changed, 335 insertions(+), 68 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts diff --git a/packages/angular/build/src/builders/application/i18n.ts b/packages/angular/build/src/builders/application/i18n.ts index cfb044f0e34f..101956f6319a 100644 --- a/packages/angular/build/src/builders/application/i18n.ts +++ b/packages/angular/build/src/builders/application/i18n.ts @@ -36,12 +36,14 @@ export async function inlineI18n( warnings: string[]; prerenderedRoutes: PrerenderedRoutesRecord; }> { + const { i18nOptions, optimizationOptions, baseHref } = options; + // Create the multi-threaded inliner with common options and the files generated from the build. const inliner = new I18nInliner( { - missingTranslation: options.i18nOptions.missingTranslationBehavior ?? 'warning', + missingTranslation: i18nOptions.missingTranslationBehavior ?? 'warning', outputFiles: executionResult.outputFiles, - shouldOptimize: options.optimizationOptions.scripts, + shouldOptimize: optimizationOptions.scripts, }, maxWorkers, ); @@ -60,19 +62,16 @@ export async function inlineI18n( const updatedOutputFiles = []; const updatedAssetFiles = []; try { - for (const locale of options.i18nOptions.inlineLocales) { + for (const locale of i18nOptions.inlineLocales) { // A locale specific set of files is returned from the inliner. const localeInlineResult = await inliner.inlineForLocale( locale, - options.i18nOptions.locales[locale].translation, + i18nOptions.locales[locale].translation, ); const localeOutputFiles = localeInlineResult.outputFiles; inlineResult.errors.push(...localeInlineResult.errors); inlineResult.warnings.push(...localeInlineResult.warnings); - const baseHref = - getLocaleBaseHref(options.baseHref, options.i18nOptions, locale) ?? options.baseHref; - const { errors, warnings, @@ -82,7 +81,7 @@ export async function inlineI18n( } = await executePostBundleSteps( { ...options, - baseHref, + baseHref: getLocaleBaseHref(baseHref, i18nOptions, locale) ?? baseHref, }, localeOutputFiles, executionResult.assetFiles, @@ -94,16 +93,17 @@ export async function inlineI18n( inlineResult.errors.push(...errors); inlineResult.warnings.push(...warnings); - // Update directory with locale base - if (options.i18nOptions.flatOutput !== true) { + // Update directory with locale base or subPath + const subPath = i18nOptions.locales[locale].subPath; + if (i18nOptions.flatOutput !== true) { localeOutputFiles.forEach((file) => { - file.path = join(locale, file.path); + file.path = join(subPath, file.path); }); for (const assetFile of [...executionResult.assetFiles, ...additionalAssets]) { updatedAssetFiles.push({ source: assetFile.source, - destination: join(locale, assetFile.destination), + destination: join(subPath, assetFile.destination), }); } } else { @@ -128,7 +128,7 @@ export async function inlineI18n( ]; // Assets are only changed if not using the flat output option - if (options.i18nOptions.flatOutput !== true) { + if (!i18nOptions.flatOutput) { executionResult.assetFiles = updatedAssetFiles; } diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 4a1d781f6680..13adfa354d40 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -168,7 +168,7 @@ export async function normalizeOptions( const i18nOptions: I18nOptions & { duplicateTranslationBehavior?: I18NTranslation; missingTranslationBehavior?: I18NTranslation; - } = createI18nOptions(projectMetadata, options.localize); + } = createI18nOptions(projectMetadata, options.localize, context.logger); i18nOptions.duplicateTranslationBehavior = options.i18nDuplicateTranslation; i18nOptions.missingTranslationBehavior = options.i18nMissingTranslation; if (options.forceI18nFlatOutput) { @@ -645,7 +645,7 @@ function normalizeGlobalEntries( } export function getLocaleBaseHref( - baseHref: string | undefined, + baseHref: string | undefined = '', i18n: NormalizedApplicationBuildOptions['i18nOptions'], locale: string, ): string | undefined { @@ -653,9 +653,12 @@ export function getLocaleBaseHref( return undefined; } - if (i18n.locales[locale] && i18n.locales[locale].baseHref !== '') { - return urlJoin(baseHref || '', i18n.locales[locale].baseHref ?? `/${locale}/`); + const localeData = i18n.locales[locale]; + if (!localeData) { + return undefined; } - return undefined; + const baseHrefSuffix = localeData.baseHref ?? localeData.subPath + '/'; + + return baseHrefSuffix !== '' ? urlJoin(baseHref, baseHrefSuffix) : undefined; } diff --git a/packages/angular/build/src/builders/extract-i18n/options.ts b/packages/angular/build/src/builders/extract-i18n/options.ts index 8e36f3db28f1..24be86ee7c8f 100644 --- a/packages/angular/build/src/builders/extract-i18n/options.ts +++ b/packages/angular/build/src/builders/extract-i18n/options.ts @@ -36,8 +36,7 @@ export async function normalizeOptions( // Target specifier defaults to the current project's build target with no specified configuration const buildTargetSpecifier = options.buildTarget ?? ':'; const buildTarget = targetFromTargetString(buildTargetSpecifier, projectName, 'build'); - - const i18nOptions = createI18nOptions(projectMetadata); + const i18nOptions = createI18nOptions(projectMetadata, /** inline */ false, context.logger); // Normalize xliff format extensions let format = options.format; diff --git a/packages/angular/build/src/utils/i18n-options.ts b/packages/angular/build/src/utils/i18n-options.ts index 3f63e9a68099..2482729e7813 100644 --- a/packages/angular/build/src/utils/i18n-options.ts +++ b/packages/angular/build/src/utils/i18n-options.ts @@ -18,6 +18,7 @@ export interface LocaleDescription { translation?: Record; dataPath?: string; baseHref?: string; + subPath: string; } export interface I18nOptions { @@ -54,19 +55,31 @@ function normalizeTranslationFileOption( function ensureObject(value: unknown, name: string): asserts value is Record { if (!value || typeof value !== 'object' || Array.isArray(value)) { - throw new Error(`Project ${name} field is malformed. Expected an object.`); + throw new Error(`Project field '${name}' is malformed. Expected an object.`); } } function ensureString(value: unknown, name: string): asserts value is string { if (typeof value !== 'string') { - throw new Error(`Project ${name} field is malformed. Expected a string.`); + throw new Error(`Project field '${name}' is malformed. Expected a string.`); } } +function ensureValidsubPath(value: unknown, name: string): asserts value is string { + ensureString(value, name); + + if (!/^[\w-]*$/.test(value)) { + throw new Error( + `Project field '${name}' is invalid. It can only contain letters, numbers, hyphens, and underscores.`, + ); + } +} export function createI18nOptions( projectMetadata: { i18n?: unknown }, inline?: boolean | string[], + logger?: { + warn(message: string): void; + }, ): I18nOptions { const { i18n: metadata = {} } = projectMetadata; @@ -82,22 +95,41 @@ export function createI18nOptions( }, }; - let rawSourceLocale; - let rawSourceLocaleBaseHref; + let rawSourceLocale: string | undefined; + let rawSourceLocaleBaseHref: string | undefined; + let rawsubPath: string | undefined; if (typeof metadata.sourceLocale === 'string') { rawSourceLocale = metadata.sourceLocale; } else if (metadata.sourceLocale !== undefined) { - ensureObject(metadata.sourceLocale, 'i18n sourceLocale'); + ensureObject(metadata.sourceLocale, 'i18n.sourceLocale'); if (metadata.sourceLocale.code !== undefined) { - ensureString(metadata.sourceLocale.code, 'i18n sourceLocale code'); + ensureString(metadata.sourceLocale.code, 'i18n.sourceLocale.code'); rawSourceLocale = metadata.sourceLocale.code; } if (metadata.sourceLocale.baseHref !== undefined) { - ensureString(metadata.sourceLocale.baseHref, 'i18n sourceLocale baseHref'); + ensureString(metadata.sourceLocale.baseHref, 'i18n.sourceLocale.baseHref'); + logger?.warn( + `The 'baseHref' field under 'i18n.sourceLocale' is deprecated and will be removed in future versions. ` + + `Please use 'subPath' instead.\nNote: 'subPath' defines the URL segment for the locale, acting ` + + `as both the HTML base HREF and the directory name for output.\nBy default, ` + + `if not specified, 'subPath' uses the locale code.`, + ); + rawSourceLocaleBaseHref = metadata.sourceLocale.baseHref; } + + if (metadata.sourceLocale.subPath !== undefined) { + ensureValidsubPath(metadata.sourceLocale.subPath, 'i18n.sourceLocale.subPath'); + rawsubPath = metadata.sourceLocale.subPath; + } + + if (rawsubPath !== undefined && rawSourceLocaleBaseHref !== undefined) { + throw new Error( + `'i18n.sourceLocale.subPath' and 'i18n.sourceLocale.baseHref' cannot be used together.`, + ); + } } if (rawSourceLocale !== undefined) { @@ -108,21 +140,41 @@ export function createI18nOptions( i18n.locales[i18n.sourceLocale] = { files: [], baseHref: rawSourceLocaleBaseHref, + subPath: rawsubPath ?? i18n.sourceLocale, }; if (metadata.locales !== undefined) { ensureObject(metadata.locales, 'i18n locales'); for (const [locale, options] of Object.entries(metadata.locales)) { - let translationFiles; - let baseHref; + let translationFiles: string[] | undefined; + let baseHref: string | undefined; + let subPath: string | undefined; + if (options && typeof options === 'object' && 'translation' in options) { translationFiles = normalizeTranslationFileOption(options.translation, locale, false); if ('baseHref' in options) { - ensureString(options.baseHref, `i18n locales ${locale} baseHref`); + ensureString(options.baseHref, `i18n.locales.${locale}.baseHref`); + logger?.warn( + `The 'baseHref' field under 'i18n.locales.${locale}' is deprecated and will be removed in future versions. ` + + `Please use 'subPath' instead.\nNote: 'subPath' defines the URL segment for the locale, acting ` + + `as both the HTML base HREF and the directory name for output.\nBy default, ` + + `if not specified, 'subPath' uses the locale code.`, + ); baseHref = options.baseHref; } + + if ('subPath' in options) { + ensureString(options.subPath, `i18n.locales.${locale}.subPath`); + subPath = options.subPath; + } + + if (subPath !== undefined && baseHref !== undefined) { + throw new Error( + `'i18n.locales.${locale}.subPath' and 'i18n.locales.${locale}.baseHref' cannot be used together.`, + ); + } } else { translationFiles = normalizeTranslationFileOption(options, locale, true); } @@ -136,10 +188,27 @@ export function createI18nOptions( i18n.locales[locale] = { files: translationFiles.map((file) => ({ path: file })), baseHref, + subPath: subPath ?? locale, }; } } + // Check that subPaths are unique. + const localesData = Object.entries(i18n.locales); + for (let i = 0; i < localesData.length; i++) { + const [localeA, { subPath: subPathA }] = localesData[i]; + + for (let j = i + 1; j < localesData.length; j++) { + const [localeB, { subPath: subPathB }] = localesData[j]; + + if (subPathA === subPathB) { + throw new Error( + `Invalid i18n configuration: Locales '${localeA}' and '${localeB}' cannot have the same subPath: '${subPathB}'.`, + ); + } + } + } + if (inline === true) { i18n.inlineLocales.add(i18n.sourceLocale); Object.keys(i18n.locales).forEach((locale) => i18n.inlineLocales.add(locale)); diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index ba05db89aa65..ca2886f11d89 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -7,10 +7,7 @@ */ import { extname } from 'node:path'; -import { - NormalizedApplicationBuildOptions, - getLocaleBaseHref, -} from '../../builders/application/options'; +import { NormalizedApplicationBuildOptions } from '../../builders/application/options'; import { type BuildOutputFile, BuildOutputFileType } from '../../tools/esbuild/bundler-context'; import { createOutputFile } from '../../tools/esbuild/utils'; @@ -56,20 +53,11 @@ export function generateAngularServerAppEngineManifest( baseHref: string | undefined, ): string { const entryPoints: Record = {}; - - if (i18nOptions.shouldInline) { + if (i18nOptions.shouldInline && !i18nOptions.flatOutput) { for (const locale of i18nOptions.inlineLocales) { - const importPath = - './' + (i18nOptions.flatOutput ? '' : locale + '/') + MAIN_SERVER_OUTPUT_FILENAME; - - let localeWithBaseHref = getLocaleBaseHref('', i18nOptions, locale) || '/'; - - // Remove leading and trailing slashes. - const start = localeWithBaseHref[0] === '/' ? 1 : 0; - const end = localeWithBaseHref[localeWithBaseHref.length - 1] === '/' ? -1 : undefined; - localeWithBaseHref = localeWithBaseHref.slice(start, end); - - entryPoints[localeWithBaseHref] = `() => import('${importPath}')`; + const { subPath } = i18nOptions.locales[locale]; + const importPath = `${subPath ? `${subPath}/` : ''}${MAIN_SERVER_OUTPUT_FILENAME}`; + entryPoints[subPath] = `() => import('./${importPath}')`; } } else { entryPoints[''] = `() => import('./${MAIN_SERVER_OUTPUT_FILENAME}')`; diff --git a/packages/angular/build/src/utils/server-rendering/prerender.ts b/packages/angular/build/src/utils/server-rendering/prerender.ts index 2c539502382c..93b76bf17dcf 100644 --- a/packages/angular/build/src/utils/server-rendering/prerender.ts +++ b/packages/angular/build/src/utils/server-rendering/prerender.ts @@ -219,7 +219,7 @@ async function renderPages( const appShellRouteWithLeadingSlash = appShellRoute && addLeadingSlash(appShellRoute); const baseHrefWithLeadingSlash = addLeadingSlash(baseHref); - for (const { route, redirectTo, renderMode } of serializableRouteTreeNode) { + for (const { route, redirectTo } of serializableRouteTreeNode) { // Remove the base href from the file output path. const routeWithoutBaseHref = addTrailingSlash(route).startsWith(baseHrefWithLeadingSlash) ? addLeadingSlash(route.slice(baseHrefWithLeadingSlash.length)) diff --git a/packages/angular/cli/lib/config/workspace-schema.json b/packages/angular/cli/lib/config/workspace-schema.json index dce8ecfec6fa..402ad662cf09 100644 --- a/packages/angular/cli/lib/config/workspace-schema.json +++ b/packages/angular/cli/lib/config/workspace-schema.json @@ -275,18 +275,43 @@ }, { "type": "object", - "description": "Localization options to use for the source locale", + "description": "Localization options to use for the source locale.", "properties": { "code": { "type": "string", - "description": "Specifies the locale code of the source locale", + "description": "Specifies the locale code of the source locale.", "pattern": "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$" }, "baseHref": { "type": "string", - "description": "HTML base HREF to use for the locale (defaults to the locale code)" + "deprecated": true, + "description": "Specifies the HTML base HREF for the locale. Defaults to the locale code if not provided." + }, + "subPath": { + "type": "string", + "description": "Defines the subpath for accessing this locale. It serves as the HTML base HREF and the directory name for the output. Defaults to the locale code if not specified.", + "pattern": "^[\\w-]*$" } }, + "anyOf": [ + { + "required": ["subPath"], + "not": { + "required": ["baseHref"] + } + }, + { + "required": ["baseHref"], + "not": { + "required": ["subPath"] + } + }, + { + "not": { + "required": ["baseHref", "subPath"] + } + } + ], "additionalProperties": false } ] @@ -299,11 +324,11 @@ "oneOf": [ { "type": "string", - "description": "Localization file to use for i18n" + "description": "Localization file to use for i18n." }, { "type": "array", - "description": "Localization files to use for i18n", + "description": "Localization files to use for i18n.", "items": { "type": "string", "uniqueItems": true @@ -311,17 +336,17 @@ }, { "type": "object", - "description": "Localization options to use for the locale", + "description": "Localization options to use for the locale.", "properties": { "translation": { "oneOf": [ { "type": "string", - "description": "Localization file to use for i18n" + "description": "Localization file to use for i18n." }, { "type": "array", - "description": "Localization files to use for i18n", + "description": "Localization files to use for i18n.", "items": { "type": "string", "uniqueItems": true @@ -331,9 +356,34 @@ }, "baseHref": { "type": "string", - "description": "HTML base HREF to use for the locale (defaults to the locale code)" + "deprecated": true, + "description": "Specifies the HTML base HREF for the locale. Defaults to the locale code if not provided." + }, + "subPath": { + "type": "string", + "description": "Defines the URL segment for accessing this locale. It serves as the HTML base HREF and the directory name for the output. Defaults to the locale code if not specified.", + "pattern": "^[\\w-]*$" } }, + "anyOf": [ + { + "required": ["subPath"], + "not": { + "required": ["baseHref"] + } + }, + { + "required": ["baseHref"], + "not": { + "required": ["subPath"] + } + }, + { + "not": { + "required": ["baseHref", "subPath"] + } + } + ], "additionalProperties": false } ] diff --git a/packages/angular/ssr/src/app-engine.ts b/packages/angular/ssr/src/app-engine.ts index 2b3b15ef7ea4..68117744d8c5 100644 --- a/packages/angular/ssr/src/app-engine.ts +++ b/packages/angular/ssr/src/app-engine.ts @@ -148,6 +148,6 @@ export class AngularAppEngine { const potentialLocale = getPotentialLocaleIdFromUrl(url, basePath); - return this.getEntryPointExports(potentialLocale); + return this.getEntryPointExports(potentialLocale) ?? this.getEntryPointExports(''); } } diff --git a/packages/angular_devkit/build_angular/src/builders/browser/index.ts b/packages/angular_devkit/build_angular/src/builders/browser/index.ts index 963e404041fb..b3cba62e10c3 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/index.ts @@ -425,11 +425,18 @@ export function buildWebpackBrowser( ); function getLocaleBaseHref(i18n: I18nOptions, locale: string): string | undefined { - if (i18n.locales[locale] && i18n.locales[locale]?.baseHref !== '') { - return urlJoin(options.baseHref || '', i18n.locales[locale].baseHref ?? `/${locale}/`); + if (i18n.flatOutput) { + return undefined; } - return undefined; + const localeData = i18n.locales[locale]; + if (!localeData) { + return undefined; + } + + const baseHrefSuffix = localeData.baseHref ?? localeData.subPath + '/'; + + return baseHrefSuffix !== '' ? urlJoin(options.baseHref || '', baseHrefSuffix) : undefined; } } diff --git a/packages/angular_devkit/build_angular/src/builders/extract-i18n/options.ts b/packages/angular_devkit/build_angular/src/builders/extract-i18n/options.ts index 46a0ac56e99d..492909da14f0 100644 --- a/packages/angular_devkit/build_angular/src/builders/extract-i18n/options.ts +++ b/packages/angular_devkit/build_angular/src/builders/extract-i18n/options.ts @@ -36,8 +36,7 @@ export async function normalizeOptions( // Target specifier defaults to the current project's build target with no specified configuration const buildTargetSpecifier = options.buildTarget ?? ':'; const buildTarget = targetFromTargetString(buildTargetSpecifier, projectName, 'build'); - - const i18nOptions = createI18nOptions(projectMetadata); + const i18nOptions = createI18nOptions(projectMetadata, /** inline */ false, context.logger); // Normalize xliff format extensions let format = options.format; diff --git a/packages/angular_devkit/build_angular/src/utils/i18n-webpack.ts b/packages/angular_devkit/build_angular/src/utils/i18n-webpack.ts index 242d21c51d73..ef0fd1dc2207 100644 --- a/packages/angular_devkit/build_angular/src/utils/i18n-webpack.ts +++ b/packages/angular_devkit/build_angular/src/utils/i18n-webpack.ts @@ -43,7 +43,7 @@ export async function configureI18nBuild [ l, - i18n.flatOutput ? baseOutputPath : join(baseOutputPath, l), + i18n.flatOutput ? baseOutputPath : join(baseOutputPath, i18n.locales[l].subPath), ]) : [['', baseOutputPath]]; diff --git a/packages/schematics/angular/guard/index.ts b/packages/schematics/angular/guard/index.ts index 8e8d5c75610c..467fe6198935 100644 --- a/packages/schematics/angular/guard/index.ts +++ b/packages/schematics/angular/guard/index.ts @@ -34,7 +34,7 @@ export default function (options: GuardOptions): Rule { const routerNamedImports: string[] = [...options.implements, 'MaybeAsync', 'GuardResult']; if (options.implements.includes(GuardInterface.CanMatch)) { - routerNamedImports.push('Route', 'UrlSegment'); + routerNamedImports.push('Route', 'subPath'); if (options.implements.length > 1) { routerNamedImports.push(...commonRouterNameImports); diff --git a/packages/schematics/angular/guard/index_spec.ts b/packages/schematics/angular/guard/index_spec.ts index bfa09f524ede..05abf2a525ad 100644 --- a/packages/schematics/angular/guard/index_spec.ts +++ b/packages/schematics/angular/guard/index_spec.ts @@ -143,7 +143,7 @@ describe('Guard Schematic', () => { 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 expectedImports = `import { CanMatch, GuardResult, MaybeAsync, Route, UrlSegment } from '@angular/router';`; + const expectedImports = `import { CanMatch, GuardResult, MaybeAsync, Route, subPath } from '@angular/router';`; expect(fileString).toContain(expectedImports); }); @@ -176,7 +176,7 @@ describe('Guard Schematic', () => { const fileString = tree.readContent('/projects/bar/src/app/foo.guard.ts'); const expectedImports = `import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanMatch, GuardResult, ` + - `MaybeAsync, Route, RouterStateSnapshot, UrlSegment } from '@angular/router';`; + `MaybeAsync, Route, RouterStateSnapshot, subPath } from '@angular/router';`; expect(fileString).toContain(expectedImports); }); 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 new file mode 100644 index 000000000000..6e473880b32c --- /dev/null +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts @@ -0,0 +1,152 @@ +import { join } from 'node:path'; +import assert from 'node:assert'; +import { expectFileToMatch, writeFile } from '../../../utils/fs'; +import { execAndWaitForOutputToMatch, ng, noSilentNg, silentNg } from '../../../utils/process'; +import { langTranslations, setupI18nConfig } from '../../i18n/setup'; +import { findFreePort } from '../../../utils/network'; +import { getGlobalVariable } from '../../../utils/env'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; +import { updateJsonFile, useSha } from '../../../utils/project'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + // Setup project + await setupI18nConfig(); + + // Update angular.json + const URL_SUB_PATH: Record = { + 'en-US': '', + 'fr': 'fr', + 'de': 'deutsche', + }; + + await updateJsonFile('angular.json', (workspaceJson) => { + const appProject = workspaceJson.projects['test-project']; + const i18n: Record = appProject.i18n; + i18n.sourceLocale = { + subPath: URL_SUB_PATH['en-US'], + }; + + i18n.locales['fr'] = { + translation: i18n.locales['fr'], + subPath: URL_SUB_PATH['fr'], + }; + + i18n.locales['de'] = { + translation: i18n.locales['de'], + subPath: URL_SUB_PATH['de'], + }; + }); + + // 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 useSha(); + await installWorkspacePackages(); + + // Add routes + await writeFile( + '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'; + + export const routes: Routes = [ + { + path: '', + component: HomeComponent, + }, + { + path: 'ssg', + component: SsgComponent, + }, + { + path: 'ssr', + component: SsrComponent, + }, + ]; + `, + ); + + // Add server routing + await writeFile( + 'src/app/app.routes.server.ts', + ` + import { RenderMode, ServerRoute } from '@angular/ssr'; + + export const serverRoutes: ServerRoute[] = [ + { + path: '', + renderMode: RenderMode.Prerender, + }, + { + path: 'ssg', + renderMode: RenderMode.Prerender, + }, + { + path: '**', + renderMode: RenderMode.Server, + }, + ]; + `, + ); + + // Generate components for the above routes + const componentNames: string[] = ['home', 'ssg', 'ssr']; + for (const componentName of componentNames) { + await silentNg('generate', 'component', componentName); + } + + await noSilentNg('build', '--output-mode=server', '--base-href=/base/'); + + const pathToVerify = ['/index.html', '/ssg/index.html']; + for (const { lang } of langTranslations) { + const subPath = URL_SUB_PATH[lang]; + const outputPath = join('dist/test-project/browser', subPath); + + for (const path of pathToVerify) { + await expectFileToMatch(join(outputPath, path), `

${lang}

`); + const baseHref = `/base/${subPath ? `${subPath}/` : ''}`; + await expectFileToMatch(join(outputPath, path), ``); + } + } + + // Tests responses + const port = await spawnServer(); + const pathnamesToVerify = ['/ssr', '/ssg']; + + for (const { lang } of langTranslations) { + for (const pathname of pathnamesToVerify) { + const subPath = URL_SUB_PATH[lang]; + const urlPathname = `/base${subPath ? `/${subPath}` : ''}${pathname}`; + const res = await fetch(`http://localhost:${port}${urlPathname}`); + const text = await res.text(); + + assert.match( + text, + new RegExp(`

${lang}

`), + `Response for '${urlPathname}': '

${lang}

' was not matched in content.`, + ); + } + } +} + +async function spawnServer(): Promise { + const port = await findFreePort(); + await execAndWaitForOutputToMatch( + 'npm', + ['run', 'serve:ssr:test-project'], + /Node Express server listening on/, + { + 'PORT': String(port), + }, + ); + + return port; +} From e126bf9018aa0da34f467f41982b829a0619d350 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 8 Dec 2024 14:14:01 +0000 Subject: [PATCH 0091/2162] build: update all non-major dependencies --- package.json | 8 +- packages/angular/build/package.json | 6 +- packages/angular/cli/package.json | 2 +- .../schematics_cli/package.json | 2 +- yarn.lock | 391 ++++++++++++++---- 5 files changed, 330 insertions(+), 79 deletions(-) diff --git a/package.json b/package.json index ade7a12dc84d..310f4da55f7d 100644 --- a/package.json +++ b/package.json @@ -86,8 +86,8 @@ "@bazel/rollup": "^5.8.1", "@bazel/runfiles": "^5.8.1", "@discoveryjs/json-ext": "0.6.3", - "@inquirer/confirm": "5.0.2", - "@inquirer/prompts": "7.1.0", + "@inquirer/confirm": "5.1.0", + "@inquirer/prompts": "7.2.0", "@listr2/prompt-adapter-inquirer": "2.0.18", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", @@ -143,7 +143,7 @@ "fast-glob": "3.3.2", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.3", - "https-proxy-agent": "7.0.5", + "https-proxy-agent": "7.0.6", "husky": "9.1.7", "ini": "5.0.0", "istanbul-lib-instrument": "6.0.3", @@ -184,7 +184,7 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.28.0", + "rollup": "4.28.1", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 021388faaf18..dae83fe6b2d4 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -24,13 +24,13 @@ "@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.0.2", + "@inquirer/confirm": "5.1.0", "@vitejs/plugin-basic-ssl": "1.2.0", "beasties": "0.2.0", "browserslist": "^4.23.0", "esbuild": "0.24.0", "fast-glob": "3.3.2", - "https-proxy-agent": "7.0.5", + "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "listr2": "8.2.5", "magic-string": "0.30.14", @@ -38,7 +38,7 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.8.0", - "rollup": "4.28.0", + "rollup": "4.28.1", "sass": "1.82.0", "semver": "7.6.3", "vite": "6.0.3", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index de4d24ebcb3c..2ef78a249d56 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -25,7 +25,7 @@ "@angular-devkit/architect": "0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.1.0", + "@inquirer/prompts": "7.2.0", "@listr2/prompt-adapter-inquirer": "2.0.18", "@schematics/angular": "0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index adc3b9698275..cbc7c1ee78f4 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": "0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.1.0", + "@inquirer/prompts": "7.2.0", "ansi-colors": "4.1.3", "symbol-observable": "4.0.0", "yargs-parser": "21.1.1" diff --git a/yarn.lock b/yarn.lock index 6946bda296d5..282f872d6259 100644 --- a/yarn.lock +++ b/yarn.lock @@ -224,7 +224,7 @@ __metadata: dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" "@angular-devkit/schematics": "npm:0.0.0-PLACEHOLDER" - "@inquirer/prompts": "npm:7.1.0" + "@inquirer/prompts": "npm:7.2.0" ansi-colors: "npm:4.1.3" symbol-observable: "npm:4.0.0" yargs-parser: "npm:21.1.1" @@ -377,13 +377,13 @@ __metadata: "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-syntax-import-attributes": "npm:7.26.0" - "@inquirer/confirm": "npm:5.0.2" + "@inquirer/confirm": "npm:5.1.0" "@vitejs/plugin-basic-ssl": "npm:1.2.0" beasties: "npm:0.2.0" browserslist: "npm:^4.23.0" esbuild: "npm:0.24.0" fast-glob: "npm:3.3.2" - https-proxy-agent: "npm:7.0.5" + https-proxy-agent: "npm:7.0.6" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" lmdb: "npm:3.2.0" @@ -392,7 +392,7 @@ __metadata: parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.8.0" - rollup: "npm:4.28.0" + rollup: "npm:4.28.1" sass: "npm:1.82.0" semver: "npm:7.6.3" vite: "npm:6.0.3" @@ -520,7 +520,7 @@ __metadata: "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" "@angular-devkit/schematics": "npm:0.0.0-PLACEHOLDER" - "@inquirer/prompts": "npm:7.1.0" + "@inquirer/prompts": "npm:7.2.0" "@listr2/prompt-adapter-inquirer": "npm:2.0.18" "@schematics/angular": "npm:0.0.0-PLACEHOLDER" "@yarnpkg/lockfile": "npm:1.1.0" @@ -661,8 +661,8 @@ __metadata: "@bazel/rollup": "npm:^5.8.1" "@bazel/runfiles": "npm:^5.8.1" "@discoveryjs/json-ext": "npm:0.6.3" - "@inquirer/confirm": "npm:5.0.2" - "@inquirer/prompts": "npm:7.1.0" + "@inquirer/confirm": "npm:5.1.0" + "@inquirer/prompts": "npm:7.2.0" "@listr2/prompt-adapter-inquirer": "npm:2.0.18" "@rollup/plugin-alias": "npm:^5.1.1" "@rollup/plugin-commonjs": "npm:^28.0.0" @@ -718,7 +718,7 @@ __metadata: fast-glob: "npm:3.3.2" http-proxy: "npm:^1.18.1" http-proxy-middleware: "npm:3.0.3" - https-proxy-agent: "npm:7.0.5" + https-proxy-agent: "npm:7.0.6" husky: "npm:9.1.7" ini: "npm:5.0.0" istanbul-lib-instrument: "npm:6.0.3" @@ -759,7 +759,7 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.28.0" + rollup: "npm:4.28.1" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" @@ -2766,22 +2766,22 @@ __metadata: languageName: node linkType: hard -"@inquirer/checkbox@npm:^4.0.2": - version: 4.0.2 - resolution: "@inquirer/checkbox@npm:4.0.2" +"@inquirer/checkbox@npm:^4.0.3": + version: 4.0.3 + resolution: "@inquirer/checkbox@npm:4.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/figures": "npm:^1.0.8" "@inquirer/type": "npm:^3.0.1" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/a087984b5de252530246f40fa090cbd531c78cdf53f6eaef8653cfc69623480b3377916e31da81d097583ef1248a0508b199994c386a27cbad4c6ce536944a73 + checksum: 10c0/fe4084e0abac1e7c9efa88cb57e54213d49e4158c72a1c4f3bb45b6ea535d7b1177ae9defc8f62203c53c88a6fe2c30b30a826287f89e59d6e06ef50a2785176 languageName: node linkType: hard -"@inquirer/confirm@npm:5.0.2, @inquirer/confirm@npm:^5.0.2": +"@inquirer/confirm@npm:5.0.2": version: 5.0.2 resolution: "@inquirer/confirm@npm:5.0.2" dependencies: @@ -2793,6 +2793,18 @@ __metadata: languageName: node linkType: hard +"@inquirer/confirm@npm:5.1.0, @inquirer/confirm@npm:^5.1.0": + version: 5.1.0 + resolution: "@inquirer/confirm@npm:5.1.0" + dependencies: + "@inquirer/core": "npm:^10.1.1" + "@inquirer/type": "npm:^3.0.1" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/c75e91a84839c800a7176e3c790368656c505f6f8c1f8e7cd022055eb31d75d73ac847224061791f6c35e71be35fac52d2efb976e4709884d00d4968e37630c7 + languageName: node + linkType: hard + "@inquirer/core@npm:^10.1.0": version: 10.1.0 resolution: "@inquirer/core@npm:10.1.0" @@ -2810,29 +2822,46 @@ __metadata: languageName: node linkType: hard -"@inquirer/editor@npm:^4.1.0": - version: 4.1.0 - resolution: "@inquirer/editor@npm:4.1.0" +"@inquirer/core@npm:^10.1.1": + version: 10.1.1 + resolution: "@inquirer/core@npm:10.1.1" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/figures": "npm:^1.0.8" + "@inquirer/type": "npm:^3.0.1" + ansi-escapes: "npm:^4.3.2" + cli-width: "npm:^4.1.0" + mute-stream: "npm:^2.0.0" + signal-exit: "npm:^4.1.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + yoctocolors-cjs: "npm:^2.1.2" + checksum: 10c0/7c3b50b5a8c673d2b978684c39b8d65249145cbc859b598d4d0be9af1d2f30731228996ff8143a8fca1b776f76040d83ae241807291144f6205c23b93e33d408 + languageName: node + linkType: hard + +"@inquirer/editor@npm:^4.2.0": + version: 4.2.0 + resolution: "@inquirer/editor@npm:4.2.0" + dependencies: + "@inquirer/core": "npm:^10.1.1" "@inquirer/type": "npm:^3.0.1" external-editor: "npm:^3.1.0" peerDependencies: "@types/node": ">=18" - checksum: 10c0/6ed7724e83a7f52b4bdd911f6878bc0a18b18f955bb7e8cd423820e8a0bc941a97321b07be88cea6b22a7027a9ed15f5e03ca8f9a6abe94d6af32504a98e6954 + checksum: 10c0/ed56c675b9ffdc4bb62e53ab0c64e435d64fcbfd157b04db0ee5f9f31f88ad9d2ecd6fee45a15c09ab2e794db231607198d4d0772712311392f3e91d4363efa1 languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.2": - version: 4.0.2 - resolution: "@inquirer/expand@npm:4.0.2" +"@inquirer/expand@npm:^4.0.3": + version: 4.0.3 + resolution: "@inquirer/expand@npm:4.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/type": "npm:^3.0.1" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/937c2597db14cd67b92386ff8e0eb248900ec4e98631503037b12d535a869b22e683010633f1bbf2c1fefe881b45d43a20b212a465bfd7406367fdcaa1723445 + checksum: 10c0/37fb3fb2a483ec6873b9dffc36f1a9316d75a490c9c30edfb877e0118316e093289a646686a569b5fc4bab688506c1df418f8ecb5d8fcace127c745c4f9bc945 languageName: node linkType: hard @@ -2843,102 +2872,102 @@ __metadata: languageName: node linkType: hard -"@inquirer/input@npm:^4.0.2": - version: 4.0.2 - resolution: "@inquirer/input@npm:4.0.2" +"@inquirer/input@npm:^4.1.0": + version: 4.1.0 + resolution: "@inquirer/input@npm:4.1.0" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/type": "npm:^3.0.1" peerDependencies: "@types/node": ">=18" - checksum: 10c0/9e160ae5011144058327af8a267d1b854edbc6f5cceb544188279e81a38e479e72b3ea9dc4c83b44d01b2b17c52d0617f6e3b5d63f82fffba07da92f97e1f889 + checksum: 10c0/1dbbdb4edc6ed17970c18e049d59c536068ca35de848093230fc547e8202b2fc632fcdcc6f534887e9b4ed114c7b3f4501a05145d2efa694b3a2f31b410ba503 languageName: node linkType: hard -"@inquirer/number@npm:^3.0.2": - version: 3.0.2 - resolution: "@inquirer/number@npm:3.0.2" +"@inquirer/number@npm:^3.0.3": + version: 3.0.3 + resolution: "@inquirer/number@npm:3.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/type": "npm:^3.0.1" peerDependencies: "@types/node": ">=18" - checksum: 10c0/3b6f334a4ebb3019bc628b440be3c86fa1318fce693f55628ae95a47c388bdcb6eb06f3c226e3795752fa243ffd27508751bc82e623d2d4656163f2d1840bee7 + checksum: 10c0/443d6ee1abd9d6970a43e91232c4df1b70f96db5b7f0f8a0594d2af232ad16d17c77c52c74c69c7dbb8af3d64df19462fc9fb1990cacfeae64d9ac4f39a10527 languageName: node linkType: hard -"@inquirer/password@npm:^4.0.2": - version: 4.0.2 - resolution: "@inquirer/password@npm:4.0.2" +"@inquirer/password@npm:^4.0.3": + version: 4.0.3 + resolution: "@inquirer/password@npm:4.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/type": "npm:^3.0.1" ansi-escapes: "npm:^4.3.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/2ef73fb3574805e35a88e7398845ee7f5f473662a8af580023d3d8e00bdc7452b724a262ca636eb729864d9af36376b3812739f38c22e94ebad9e68518d2a90a + checksum: 10c0/5ebd6e5d1d5bc5898873111035fee023ee2cdd55c3860526db4c732450c4795ee5b4e2fd9826616391afc9375ecdffcbc1e8054bb61fbe87e94df4849c2e5e6c languageName: node linkType: hard -"@inquirer/prompts@npm:7.1.0": - version: 7.1.0 - resolution: "@inquirer/prompts@npm:7.1.0" - dependencies: - "@inquirer/checkbox": "npm:^4.0.2" - "@inquirer/confirm": "npm:^5.0.2" - "@inquirer/editor": "npm:^4.1.0" - "@inquirer/expand": "npm:^4.0.2" - "@inquirer/input": "npm:^4.0.2" - "@inquirer/number": "npm:^3.0.2" - "@inquirer/password": "npm:^4.0.2" - "@inquirer/rawlist": "npm:^4.0.2" - "@inquirer/search": "npm:^3.0.2" - "@inquirer/select": "npm:^4.0.2" +"@inquirer/prompts@npm:7.2.0": + version: 7.2.0 + resolution: "@inquirer/prompts@npm:7.2.0" + dependencies: + "@inquirer/checkbox": "npm:^4.0.3" + "@inquirer/confirm": "npm:^5.1.0" + "@inquirer/editor": "npm:^4.2.0" + "@inquirer/expand": "npm:^4.0.3" + "@inquirer/input": "npm:^4.1.0" + "@inquirer/number": "npm:^3.0.3" + "@inquirer/password": "npm:^4.0.3" + "@inquirer/rawlist": "npm:^4.0.3" + "@inquirer/search": "npm:^3.0.3" + "@inquirer/select": "npm:^4.0.3" peerDependencies: "@types/node": ">=18" - checksum: 10c0/e6ed9c3eac059f5de6e233872d8e15f6ddc27e461be119ac1494c6ab74fd583b0cde00554be2be00601df8f9b6df6cd20876772a8148dd4bc5f1f5015e1d5549 + checksum: 10c0/df400acd7a02dabe95702ceb7fbc467dc38550263692e07c6f97ba6b0d0aa89d93c51db69688f5f6775d02c2611e3db1936ab5df103c1082a671398719396347 languageName: node linkType: hard -"@inquirer/rawlist@npm:^4.0.2": - version: 4.0.2 - resolution: "@inquirer/rawlist@npm:4.0.2" +"@inquirer/rawlist@npm:^4.0.3": + version: 4.0.3 + resolution: "@inquirer/rawlist@npm:4.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/type": "npm:^3.0.1" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/f003c0c9e5bd0aec5bb3fbba10247c8da23ccdcfb1937f50b38e2ab6938be448773976303f43e1b518dff673aa82c5c08b4a3fba6e621622f6adb967eb39161a + checksum: 10c0/e2cfb79a13132b3480464a5b6c75a9823f8449ca7ecb50a3c5d8ec040bb0c29b3fc23e3ad2a7cf393e00ef9c2f1806b3511d02ba94cfd6586db72962dd8c6739 languageName: node linkType: hard -"@inquirer/search@npm:^3.0.2": - version: 3.0.2 - resolution: "@inquirer/search@npm:3.0.2" +"@inquirer/search@npm:^3.0.3": + version: 3.0.3 + resolution: "@inquirer/search@npm:3.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/figures": "npm:^1.0.8" "@inquirer/type": "npm:^3.0.1" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/3fc7be27b86073f713efaf3ee07fb4a8a5526f80b57b68ed1bb1a31837ae85affee0637ff185688a6cc0a76e4dd970f66ffb059264a6cea667dab4e27d59561f + checksum: 10c0/080a2bf28b4c9fa7f9d07096c70c47868a1b57acfb31bb3eff16335bb2e71eb5b9cd22d091e56292d887a720f3ffa7ce79843298b238db567694b0d120b11706 languageName: node linkType: hard -"@inquirer/select@npm:^4.0.2": - version: 4.0.2 - resolution: "@inquirer/select@npm:4.0.2" +"@inquirer/select@npm:^4.0.3": + version: 4.0.3 + resolution: "@inquirer/select@npm:4.0.3" dependencies: - "@inquirer/core": "npm:^10.1.0" + "@inquirer/core": "npm:^10.1.1" "@inquirer/figures": "npm:^1.0.8" "@inquirer/type": "npm:^3.0.1" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/abd23ba234c3489e76e96c444f97bb00913bdd3f278e2e3f4b060dfdd4c53e0ef78c0a8a3b303a111d35399e4dd366f2b23fb3e213d1b55ae10c02336e921445 + checksum: 10c0/7c8d7b2e4aed99e2bb826ba11717190b80aaf2c90999203b0b1bae26104cc03613bdd6de58440a6b3a254c93d2882de103be9972bb71b3d85ce9f62da21deac7 languageName: node linkType: hard @@ -4196,6 +4225,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm64@npm:4.28.0" @@ -4203,6 +4239,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-android-arm64@npm:4.28.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.0" @@ -4210,6 +4253,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-x64@npm:4.28.0" @@ -4217,6 +4267,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.0" @@ -4224,6 +4281,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.0" @@ -4231,6 +4295,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0" @@ -4238,6 +4309,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0" @@ -4245,6 +4323,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.0" @@ -4252,6 +4337,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.0" @@ -4259,6 +4351,20 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0" @@ -4266,6 +4372,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0" @@ -4273,6 +4386,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.0" @@ -4280,6 +4400,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.0" @@ -4287,6 +4414,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.0" @@ -4294,6 +4428,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.0" @@ -4301,6 +4442,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.0" @@ -4308,6 +4456,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.0" @@ -4315,6 +4470,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/wasm-node@npm:^4.24.0": version: 4.28.0 resolution: "@rollup/wasm-node@npm:4.28.0" @@ -6315,6 +6477,13 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + languageName: node + linkType: hard + "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -10808,6 +10977,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:7.0.6": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + "https-proxy-agent@npm:^2.2.1": version: 2.2.4 resolution: "https-proxy-agent@npm:2.2.4" @@ -15835,6 +16014,78 @@ __metadata: languageName: node linkType: hard +"rollup@npm:4.28.1": + version: 4.28.1 + resolution: "rollup@npm:4.28.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.28.1" + "@rollup/rollup-android-arm64": "npm:4.28.1" + "@rollup/rollup-darwin-arm64": "npm:4.28.1" + "@rollup/rollup-darwin-x64": "npm:4.28.1" + "@rollup/rollup-freebsd-arm64": "npm:4.28.1" + "@rollup/rollup-freebsd-x64": "npm:4.28.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.28.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.28.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-x64-musl": "npm:4.28.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.28.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.28.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.28.1" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/2d2d0433b7cb53153a04c7b406f342f31517608dc57510e49177941b9e68c30071674b83a0292ef1d87184e5f7c6d0f2945c8b3c74963074de10c75366fe2c14 + languageName: node + linkType: hard + "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" From 28bdbeb62c753f79de0860a8b944fcb40d1cf3be Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 9 Dec 2024 10:27:53 +0000 Subject: [PATCH 0092/2162] revert: fix(@angular/build): show error when Node.js built-ins are used during ng serve This commit reverts 06f478bc18d3e0daa8902d0fef94e55a5d052348 Closes: #29077 --- .../angular/build/src/tools/vite/utils.ts | 20 -------------- .../vite/browser-node-module-dep-error.ts | 26 ------------------- 2 files changed, 46 deletions(-) delete mode 100644 tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts diff --git a/packages/angular/build/src/tools/vite/utils.ts b/packages/angular/build/src/tools/vite/utils.ts index 7aa37482bf81..83085d910f60 100644 --- a/packages/angular/build/src/tools/vite/utils.ts +++ b/packages/angular/build/src/tools/vite/utils.ts @@ -69,26 +69,6 @@ export function getDepOptimizationConfig({ thirdPartySourcemaps: boolean; }): DepOptimizationConfig { const plugins: ViteEsBuildPlugin[] = [ - { - name: 'angular-browser-node-built-in', - setup(build) { - // This namespace is configured by vite. - // @see: https://github.com/vitejs/vite/blob/a1dd396da856401a12c921d0cd2c4e97cb63f1b5/packages/vite/src/node/optimizer/esbuildDepPlugin.ts#L109 - build.onLoad({ filter: /.*/, namespace: 'browser-external' }, (args) => { - if (!isBuiltin(args.path)) { - return; - } - - return { - errors: [ - { - text: `The package "${args.path}" wasn't found on the file system but is built into node.`, - }, - ], - }; - }); - }, - }, { name: `angular-vite-optimize-deps${ssr ? '-ssr' : ''}${ thirdPartySourcemaps ? '-vendor-sourcemap' : '' diff --git a/tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts b/tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts deleted file mode 100644 index 8aa791750c23..000000000000 --- a/tests/legacy-cli/e2e/tests/vite/browser-node-module-dep-error.ts +++ /dev/null @@ -1,26 +0,0 @@ -import assert from 'node:assert'; -import { execAndWaitForOutputToMatch, ng } from '../../utils/process'; -import { writeFile } from '../../utils/fs'; -import { getGlobalVariable } from '../../utils/env'; - -export default async function () { - assert( - getGlobalVariable('argv')['esbuild'], - 'This test should not be called in the Webpack suite.', - ); - - await ng('cache', 'clean'); - await ng('cache', 'on'); - - await writeFile('src/main.ts', `import '@angular-devkit/core/node';`); - - const { stderr } = await execAndWaitForOutputToMatch('ng', ['serve'], /ERROR/, { - CI: '0', - NO_COLOR: 'true', - }); - - assert.match( - stderr, - /The package "node:path" wasn't found on the file system but is built into node/, - ); -} From d811a7ffb0b6aad741e35025e218ea558590b0bb Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 9 Dec 2024 18:26:12 +0100 Subject: [PATCH 0093/2162] fix(@angular/build): handle external `@angular/` packages during SSR (#29094) This commit introduces `ngServerMode` to ensure proper handling of external `@angular/` packages when they are used as externals during server-side rendering (SSR). Closes: #29092 --- .../tools/esbuild/application-code-bundle.ts | 46 +++++++++++-------- .../esm-in-memory-loader/loader-hooks.ts | 12 ++++- ...utput-mode-server-external-dependencies.ts | 32 +++++++++++++ 3 files changed, 69 insertions(+), 21 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts 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 3587ff99a618..c776d30ca629 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -200,6 +200,16 @@ export function createServerPolyfillBundleOptions( return; } + const jsBanner: string[] = [`globalThis['ngServerMode'] = true;`]; + if (isNodePlatform) { + // Note: Needed as esbuild does not provide require shims / proxy from ESModules. + // See: https://github.com/evanw/esbuild/issues/1921. + jsBanner.push( + `import { createRequire } from 'node:module';`, + `globalThis['require'] ??= createRequire(import.meta.url);`, + ); + } + const buildOptions: BuildOptions = { ...polyfillBundleOptions, platform: isNodePlatform ? 'node' : 'neutral', @@ -210,16 +220,9 @@ export function createServerPolyfillBundleOptions( // More details: https://github.com/angular/angular-cli/issues/25405. mainFields: ['es2020', 'es2015', 'module', 'main'], entryNames: '[name]', - banner: isNodePlatform - ? { - js: [ - // Note: Needed as esbuild does not provide require shims / proxy from ESModules. - // See: https://github.com/evanw/esbuild/issues/1921. - `import { createRequire } from 'node:module';`, - `globalThis['require'] ??= createRequire(import.meta.url);`, - ].join('\n'), - } - : undefined, + banner: { + js: jsBanner.join('\n'), + }, target, entryPoints: { 'polyfills.server': namespace, @@ -391,19 +394,22 @@ export function createSsrEntryCodeBundleOptions( const ssrInjectManifestNamespace = 'angular:ssr-entry-inject-manifest'; const isNodePlatform = options.ssrOptions?.platform !== ExperimentalPlatform.Neutral; + const jsBanner: string[] = [`globalThis['ngServerMode'] = true;`]; + if (isNodePlatform) { + // Note: Needed as esbuild does not provide require shims / proxy from ESModules. + // See: https://github.com/evanw/esbuild/issues/1921. + jsBanner.push( + `import { createRequire } from 'node:module';`, + `globalThis['require'] ??= createRequire(import.meta.url);`, + ); + } + const buildOptions: BuildOptions = { ...getEsBuildServerCommonOptions(options), target, - banner: isNodePlatform - ? { - js: [ - // Note: Needed as esbuild does not provide require shims / proxy from ESModules. - // See: https://github.com/evanw/esbuild/issues/1921. - `import { createRequire } from 'node:module';`, - `globalThis['require'] ??= createRequire(import.meta.url);`, - ].join('\n'), - } - : undefined, + banner: { + js: jsBanner.join('\n'), + }, entryPoints: { 'server': ssrEntryNamespace, }, diff --git a/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts b/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts index ca9e986bbb89..74a2df7636ec 100644 --- a/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts +++ b/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts @@ -13,6 +13,11 @@ import { pathToFileURL } from 'node:url'; import { fileURLToPath } from 'url'; import { JavaScriptTransformer } from '../../../tools/esbuild/javascript-transformer'; +/** + * @note For some unknown reason, setting `globalThis.ngServerMode = true` does not work when using ESM loader hooks. + */ +const NG_SERVER_MODE_INIT_BYTES = new TextEncoder().encode('var ngServerMode=true;'); + /** * Node.js ESM loader to redirect imports to in memory files. * @see: https://nodejs.org/api/esm.html#loaders for more information about loaders. @@ -133,7 +138,12 @@ export async function load(url: string, context: { format?: string | null }, nex // need linking are ESM only. if (format === 'module' && isFileProtocol(url)) { const filePath = fileURLToPath(url); - const source = await javascriptTransformer.transformFile(filePath); + let source = await javascriptTransformer.transformFile(filePath); + + if (filePath.includes('@angular/')) { + // Prepend 'var ngServerMode=true;' to the source. + source = Buffer.concat([NG_SERVER_MODE_INIT_BYTES, source]); + } return { format, 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 new file mode 100644 index 000000000000..9d01f375a211 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts @@ -0,0 +1,32 @@ +import assert from 'node:assert'; +import { ng } from '../../../utils/process'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; +import { updateJsonFile, useSha } from '../../../utils/project'; +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/ssr'); + await ng('add', '@angular/ssr', '--server-routing', '--skip-confirmation', '--skip-install'); + await useSha(); + await installWorkspacePackages(); + + await updateJsonFile('angular.json', (json) => { + const build = json['projects']['test-project']['architect']['build']; + build.options.externalDependencies = [ + '@angular/platform-browser', + '@angular/core', + '@angular/router', + '@angular/common', + '@angular/common/http', + '@angular/platform-browser/animations', + ]; + }); + + await ng('build'); +} From bd90271050cfcc9fb02aaa8ac084ad161b48a75b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 9 Dec 2024 17:15:25 +0000 Subject: [PATCH 0094/2162] 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 82897c05cb85..8939694addb4 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#9c8bf57cc81f15953088cdd07cff9d313d583572", - "@angular/cdk": "github:angular/cdk-builds#9e15b9d7a3d5a0a2c0514ee3b68b15eafec4c0b6", - "@angular/common": "github:angular/common-builds#84f9bf8b584d0267b961cb0015b41e8b599f71b7", - "@angular/compiler": "github:angular/compiler-builds#b9b16869372dab5f9abb966fe8b77135ed4a9556", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#1922bc7eebdd68488ebf36510997813c540fb0e4", - "@angular/core": "github:angular/core-builds#c86076fdcfbadb7bde11d8a038546de561ba2d94", - "@angular/forms": "github:angular/forms-builds#cdccd3ef246d903f2b4adf2b48b9158ed635d190", - "@angular/language-service": "github:angular/language-service-builds#17be159396626b5293c8fc068d649b689bedc93f", - "@angular/localize": "github:angular/localize-builds#b870cc694a0ab70144c0f58673fd8f8c5a047bbe", - "@angular/material": "github:angular/material-builds#1cd7565dd915df7f2bb8897da873b6841dc939b2", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#0a80b382a950ade7f11261f2834b2471c38c57ed", - "@angular/platform-browser": "github:angular/platform-browser-builds#5e1ba412cbb0e028000c82ee326264f3397e792d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#233ef1cafbf4a915a94acd28885a6f4ca2210d72", - "@angular/platform-server": "github:angular/platform-server-builds#3d6e0e1674626c056085f1c4cf7e124294de1e39", - "@angular/router": "github:angular/router-builds#fde3dc33c58cfbcb139e482a9b6b59b3d979724d", - "@angular/service-worker": "github:angular/service-worker-builds#e9f6144fefe89cb8d93f0a0124630e2907d3661e" + "@angular/animations": "github:angular/animations-builds#57a8326e117d4656e15b515c5be80e2f4f614e06", + "@angular/cdk": "github:angular/cdk-builds#13673718acbc6eaa9f8dc1821515b8c8905b4ac4", + "@angular/common": "github:angular/common-builds#1847b3648a13c813f78c0f39a7e3597dddb58b2c", + "@angular/compiler": "github:angular/compiler-builds#a1fca72c5a362997e8b874d3cd912bc88235ec6b", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#db08655b750d5c0b16558f5da465f02405105e8b", + "@angular/core": "github:angular/core-builds#37b0c4da5d1653ba87d3b6c410c4fa63f30e0d59", + "@angular/forms": "github:angular/forms-builds#e30d8a33cb935a8a2edbf19fe1a02f3b5ffa2468", + "@angular/language-service": "github:angular/language-service-builds#8d7f2ff3b1769e4eec4b99f3a7a4ab666d7565b6", + "@angular/localize": "github:angular/localize-builds#b2003fdcb9738a83a6a49f04f972179c24b61009", + "@angular/material": "github:angular/material-builds#578aff12fed272cd08987d653f6e5315a5dbe121", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#092f50be01688df82924caec700820ad2d930a4b", + "@angular/platform-browser": "github:angular/platform-browser-builds#866311ba31020351c995710c7a58b923293dcdfb", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#fe6cb871eced5d69c96392ef0db466dee3d90ac3", + "@angular/platform-server": "github:angular/platform-server-builds#b5ea259f01f5994eeb3b36495a6a154a9c2e9d48", + "@angular/router": "github:angular/router-builds#9070daf55fe906fc0a94a1fd594bf1e36a546775", + "@angular/service-worker": "github:angular/service-worker-builds#e1aaf4d5744163f5f78d6ea3071f422d209934d0" } } From faa710e32d47091c2af635c1fc7000c78b8ebd50 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 9 Dec 2024 08:28:29 +0000 Subject: [PATCH 0095/2162] build: lock file maintenance --- yarn.lock | 700 +++++++++++++++++------------------------------------- 1 file changed, 214 insertions(+), 486 deletions(-) diff --git a/yarn.lock b/yarn.lock index 282f872d6259..7ff7a4d81642 100644 --- a/yarn.lock +++ b/yarn.lock @@ -982,7 +982,7 @@ __metadata: languageName: unknown linkType: soft -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -994,9 +994,9 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0": - version: 7.26.2 - resolution: "@babel/compat-data@npm:7.26.2" - checksum: 10c0/c9b5f3724828d17f728a778f9d66c19b55c018d0d76de6d731178cca64f182c22b71400a73bf2b65dcc4fcfe52b630088a94d5902911b54206aa90e3ffe07d12 + version: 7.26.3 + resolution: "@babel/compat-data@npm:7.26.3" + checksum: 10c0/d63e71845c34dfad8d7ff8c15b562e620dbf60e68e3abfa35681d24d612594e8e5ec9790d831a287ecd79ce00f48e7ffddc85c5ce94af7242d45917b9c1a5f90 languageName: node linkType: hard @@ -1023,7 +1023,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.26.3": +"@babel/generator@npm:7.26.3, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.3": version: 7.26.3 resolution: "@babel/generator@npm:7.26.3" dependencies: @@ -1036,19 +1036,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": - version: 7.26.2 - resolution: "@babel/generator@npm:7.26.2" - dependencies: - "@babel/parser": "npm:^7.26.2" - "@babel/types": "npm:^7.26.0" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^3.0.2" - checksum: 10c0/167ebce8977142f5012fad6bd91da51ac52bcd752f2261a54b7ab605d928aebe57e21636cdd2a9c7757e552652c68d9fcb5d40b06fcb66e02d9ee7526e118a5c - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:7.25.9, @babel/helper-annotate-as-pure@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" @@ -1058,16 +1045,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" - dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/a6068bb813e7f72d12b72edeecb99167f60cd7964cacedfb60e01fff5e7bed4a5a7f4f7414de7cf352a1b71487df5f8dab8c2b5230de4ad5aea16adf32e14219 - languageName: node - linkType: hard - "@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-compilation-targets@npm:7.25.9" @@ -1099,15 +1076,15 @@ __metadata: linkType: hard "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" + version: 7.26.3 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.26.3" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.25.9" - regexpu-core: "npm:^6.1.1" + regexpu-core: "npm:^6.2.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/3adc60a758febbf07d65a15eaccab1f7b9fcc55e7141e59122f13c9f81fc0d1cce4525b7f4af50285d27c93b34c859fd2c39c39820c5fb92211898c3bbdc77ef + checksum: 10c0/266f30b99af621559467ed67634cb653408a9262930c0627c3d17691a9d477329fb4dabe4b1785cbf0490e892513d247836674271842d6a8da49fd0afae7d435 languageName: node linkType: hard @@ -1210,16 +1187,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-simple-access@npm:7.25.9" - dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/3f1bcdb88ee3883ccf86959869a867f6bbf8c4737cd44fb9f799c38e54f67474590bc66802500ae9fe18161792875b2cfb7ec15673f48ed6c8663f6d09686ca8 - languageName: node - linkType: hard - "@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" @@ -1281,18 +1248,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/parser@npm:7.26.2" - dependencies: - "@babel/types": "npm:^7.26.0" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.26.3": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.3": version: 7.26.3 resolution: "@babel/parser@npm:7.26.3" dependencies: @@ -1599,14 +1555,13 @@ __metadata: linkType: hard "@babel/plugin-transform-exponentiation-operator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9" + version: 7.26.3 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.26.3" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.9" "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/3b42f65bab3fee28c385115ce6bcb6ba544dff187012df408a432c9fb44c980afd898911020c723dc1c9257aaf3d7d0131ad83ba15102bf30ad9a86fc2a8a912 + checksum: 10c0/cac922e851c6a0831fdd2e3663564966916015aeff7f4485825fc33879cbc3a313ceb859814c9200248e2875d65bb13802a723e5d7d7b40a2e90da82a5a1e15c languageName: node linkType: hard @@ -1703,15 +1658,14 @@ __metadata: linkType: hard "@babel/plugin-transform-modules-commonjs@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9" + version: 7.26.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.26.0" "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-simple-access": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6ce771fb04d4810257fc8900374fece877dacaed74b05eaa16ad9224b390f43795c4d046cbe9ae304e1eb5aad035d37383895e3c64496d647c2128d183916e74 + checksum: 10c0/82e59708f19f36da29531a64a7a94eabbf6ff46a615e0f5d9b49f3f59e8ef10e2bac607d749091508d3fa655146c9e5647c3ffeca781060cdabedb4c7a33c6f2 languageName: node linkType: hard @@ -2148,31 +2102,21 @@ __metadata: linkType: hard "@babel/traverse@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/traverse@npm:7.25.9" + version: 7.26.4 + resolution: "@babel/traverse@npm:7.26.4" dependencies: - "@babel/code-frame": "npm:^7.25.9" - "@babel/generator": "npm:^7.25.9" - "@babel/parser": "npm:^7.25.9" + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.3" + "@babel/parser": "npm:^7.26.3" "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" + "@babel/types": "npm:^7.26.3" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/e90be586a714da4adb80e6cb6a3c5cfcaa9b28148abdafb065e34cc109676fc3db22cf98cd2b2fff66ffb9b50c0ef882cab0f466b6844be0f6c637b82719bba1 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 + checksum: 10c0/cf25d0eda9505daa0f0832ad786b9e28c9d967e823aaf7fbe425250ab198c656085495aa6bed678b27929e095c84eea9fd778b851a31803da94c9bc4bf4eaef7 languageName: node linkType: hard -"@babel/types@npm:^7.26.3": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3, @babel/types@npm:^7.4.4": version: 7.26.3 resolution: "@babel/types@npm:7.26.3" dependencies: @@ -2711,12 +2655,12 @@ __metadata: linkType: hard "@grpc/grpc-js@npm:^1.10.9, @grpc/grpc-js@npm:^1.7.0": - version: 1.12.3 - resolution: "@grpc/grpc-js@npm:1.12.3" + version: 1.12.4 + resolution: "@grpc/grpc-js@npm:1.12.4" dependencies: "@grpc/proto-loader": "npm:^0.7.13" "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/86fa7119a59622c4e0bdb71a02fc0735d13b4a8481db022becd0d704655a6849c3cc892c94bff0f022795fd22777c471080b2566a7d9a13a24382bafe07d5dc3 + checksum: 10c0/008a3bbf65a754e4d5a3bf373e0866e4fd91628001e0329c60dfb9ecdf200cd26e9a1dc25ed45be59776990027674904c9cb2e6bbf5dbb14081b5c748b15b770 languageName: node linkType: hard @@ -2805,24 +2749,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/core@npm:^10.1.0": - version: 10.1.0 - resolution: "@inquirer/core@npm:10.1.0" - dependencies: - "@inquirer/figures": "npm:^1.0.8" - "@inquirer/type": "npm:^3.0.1" - ansi-escapes: "npm:^4.3.2" - cli-width: "npm:^4.1.0" - mute-stream: "npm:^2.0.0" - signal-exit: "npm:^4.1.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^6.2.0" - yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/ffd187edb210426c3e25ed564f7aa8844468c28dd2ba3c53dbe28d3359b519cdfae987b31bf927c1dd2e9f70a914fdefe319abe4c5f384e5e08410d11e0a7ce2 - languageName: node - linkType: hard - -"@inquirer/core@npm:^10.1.1": +"@inquirer/core@npm:^10.1.0, @inquirer/core@npm:^10.1.1": version: 10.1.1 resolution: "@inquirer/core@npm:10.1.1" dependencies: @@ -3105,8 +3032,8 @@ __metadata: linkType: hard "@jsonjoy.com/json-pack@npm:^1.0.3": - version: 1.1.0 - resolution: "@jsonjoy.com/json-pack@npm:1.1.0" + version: 1.1.1 + resolution: "@jsonjoy.com/json-pack@npm:1.1.1" dependencies: "@jsonjoy.com/base64": "npm:^1.1.1" "@jsonjoy.com/util": "npm:^1.1.2" @@ -3114,7 +3041,7 @@ __metadata: thingies: "npm:^1.20.0" peerDependencies: tslib: 2 - checksum: 10c0/cdf5cb567a7f2e703d4966a3e3a5f7f7b54ee40a2102aa0ede5c79bcf2060c8465d82f39de8583db4cf1d8415bec8e57dfb1156ef663567b846cdea45813d9d1 + checksum: 10c0/fd0d8baa0c8eba536924540717901e0d7eed742576991033cceeb32dcce801ee0a4318cf6eb40b444c9e78f69ddbd4f38b9eb0041e9e54c17e7b6d1219b12e1d languageName: node linkType: hard @@ -3494,19 +3421,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae - languageName: node - linkType: hard - "@npmcli/agent@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/agent@npm:3.0.0" @@ -3581,15 +3495,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.1 - resolution: "@npmcli/fs@npm:3.1.1" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 - languageName: node - linkType: hard - "@npmcli/fs@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/fs@npm:4.0.0" @@ -3628,7 +3533,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/map-workspaces@npm:^4.0.1": +"@npmcli/map-workspaces@npm:^4.0.1, @npmcli/map-workspaces@npm:^4.0.2": version: 4.0.2 resolution: "@npmcli/map-workspaces@npm:4.0.2" dependencies: @@ -3667,7 +3572,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/package-json@npm:^6.0.0, @npmcli/package-json@npm:^6.0.1": +"@npmcli/package-json@npm:^6.0.0, @npmcli/package-json@npm:^6.0.1, @npmcli/package-json@npm:^6.1.0": version: 6.1.0 resolution: "@npmcli/package-json@npm:6.1.0" dependencies: @@ -3708,16 +3613,16 @@ __metadata: linkType: hard "@npmcli/run-script@npm:^9.0.0, @npmcli/run-script@npm:^9.0.1": - version: 9.0.1 - resolution: "@npmcli/run-script@npm:9.0.1" + version: 9.0.2 + resolution: "@npmcli/run-script@npm:9.0.2" dependencies: "@npmcli/node-gyp": "npm:^4.0.0" "@npmcli/package-json": "npm:^6.0.0" "@npmcli/promise-spawn": "npm:^8.0.0" - node-gyp: "npm:^10.0.0" + node-gyp: "npm:^11.0.0" proc-log: "npm:^5.0.0" which: "npm:^5.0.0" - checksum: 10c0/61814b1b8c7fbefb712ddad4b1cb64a563f5806a57ef20df7735482cf3ceafc6fbf6cad82551d158eb10f76fca5bffcdb5b03459f70c61c87e7aa8774f407bbb + checksum: 10c0/d2e7763c45a07bad064ecb1ab53fb797a6cb1d125bf3e95bfd164e4886e8539e4714afd04bcf4f13570e8a4b1297a040fa7ecc44732276e11d42ca8244c70662 languageName: node linkType: hard @@ -3852,11 +3757,11 @@ __metadata: linkType: hard "@opentelemetry/context-async-hooks@npm:^1.26.0": - version: 1.28.0 - resolution: "@opentelemetry/context-async-hooks@npm:1.28.0" + version: 1.29.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.29.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/bfd3b76dce4495d538307fef597c9145949f2b67b9096b1c06c63e14003cdee73fc06fa36bb512eb403f9e625caa4282024ca39367307524e501fcece93611dd + checksum: 10c0/f7b5c6b4cad60021a0f7815016fda1b4b8d364348ecfa7e04fe07dfe9af90caaf4065fa5f9169a65f28b71aaf961672eed3849c42cd6484a9051dec0e5c9de5c languageName: node linkType: hard @@ -4091,9 +3996,9 @@ __metadata: languageName: node linkType: hard -"@puppeteer/browsers@npm:2.4.1": - version: 2.4.1 - resolution: "@puppeteer/browsers@npm:2.4.1" +"@puppeteer/browsers@npm:2.5.0": + version: 2.5.0 + resolution: "@puppeteer/browsers@npm:2.5.0" dependencies: debug: "npm:^4.3.7" extract-zip: "npm:^2.0.1" @@ -4105,7 +4010,7 @@ __metadata: yargs: "npm:^17.7.2" bin: browsers: lib/cjs/main-cli.js - checksum: 10c0/025ad64d4003f1cc6c2d4a1c9c5f54e182541a816a41d8bfbe433d55affdc16fd4c52b70fe06481bcbe4c5df484293304d47c7c7fae85c223b396b48e2442f1c + checksum: 10c0/2ab2fa5b9054aab05ce424c30d42ecc316a03a6848b87f68699019b6c74c21b886cff34a77ccb4daa09a2c0d90e003bc295d492fad4d64a93527c72999cc4006 languageName: node linkType: hard @@ -4478,8 +4383,8 @@ __metadata: linkType: hard "@rollup/wasm-node@npm:^4.24.0": - version: 4.28.0 - resolution: "@rollup/wasm-node@npm:4.28.0" + version: 4.28.1 + resolution: "@rollup/wasm-node@npm:4.28.1" dependencies: "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" @@ -4488,7 +4393,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/804836da6287289ba22119df0f0838ebd3f5308de1e14b421734542af5dd836a1cf733e4a0d052b1bb6c35e01cb884a080fddd47ec7091619b73480ba726dd09 + checksum: 10c0/65b3780573884b4fe491406c79879a8a2da19cbadb87090627a1e156dc9bb3ecffec0089a5fc7e2bc0adaca842b50cd0d68831a6e431e97b8011bcdac8015ee9 languageName: node linkType: hard @@ -4640,8 +4545,8 @@ __metadata: linkType: hard "@stylistic/eslint-plugin@npm:^2.8.0": - version: 2.11.0 - resolution: "@stylistic/eslint-plugin@npm:2.11.0" + version: 2.12.0 + resolution: "@stylistic/eslint-plugin@npm:2.12.0" dependencies: "@typescript-eslint/utils": "npm:^8.13.0" eslint-visitor-keys: "npm:^4.2.0" @@ -4650,7 +4555,7 @@ __metadata: picomatch: "npm:^4.0.2" peerDependencies: eslint: ">=8.40.0" - checksum: 10c0/6ca19b6656be5ed657cf4d1920602fb27144dc5d51ba188e0bdcb2a4e0b740d4fdb27052fc268d164fa1269c972aeab15541c9e15b3ff4b7884ecae47f18ff67 + checksum: 10c0/07313f2bfe625b811d359550e5cb61a1578b51c75c8fe2a3fc17d77588d27aeb442b7a269feada2b135a7c2ce0e9fbeb78ea6ac2298d3c403966d1873dbce8bc languageName: node linkType: hard @@ -5723,9 +5628,9 @@ __metadata: linkType: hard "@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + version: 1.2.1 + resolution: "@ungap/structured-clone@npm:1.2.1" + checksum: 10c0/127afbcc75ff1532f7b1eb85ee992f9faa70e8d5bb2558da05355d423b966fc279d0a485bf19da2883280e7c299ae4170809a72e78eab086da71c6bcdda5d1e2 languageName: node linkType: hard @@ -6468,16 +6373,7 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" - dependencies: - debug: "npm:^4.3.4" - checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 - languageName: node - linkType: hard - -"agent-base@npm:^7.1.2": +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.3 resolution: "agent-base@npm:7.1.3" checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 @@ -7519,26 +7415,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" - dependencies: - "@npmcli/fs": "npm:^3.1.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^10.0.1" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f - languageName: node - linkType: hard - "cacache@npm:^19.0.0, cacache@npm:^19.0.1": version: 19.0.1 resolution: "cacache@npm:19.0.1" @@ -7569,16 +7445,25 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bind-apply-helpers@npm:^1.0.0": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" dependencies: - es-define-property: "npm:^1.0.0" es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" + checksum: 10c0/acb2ab68bf2718e68a3e895f0d0b73ccc9e45b9b6f210f163512ba76f91dab409eb8792f6dae188356f9095747512a3101646b3dea9d37fb8c7c6bf37796d18c + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 languageName: node linkType: hard @@ -7604,9 +7489,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001686 - resolution: "caniuse-lite@npm:1.0.30001686" - checksum: 10c0/41748e81c17c1a6a0fd6e515c93c8620004171fe6706027e45f837fde71e97173e85141b0dc11e07d53b4782f3741a6651cb0f7d395cc1c1860892355eabdfa2 + version: 1.0.30001687 + resolution: "caniuse-lite@npm:1.0.30001687" + checksum: 10c0/9ca0f6d33dccaf4692339d0fda50e03e4dd7eb7f25faabd1cb33e2099d9a76b0bc30c37be3315e91c1d990da1b5cc864eee2077494f4d0ba94d68b48fe2ea7f1 languageName: node linkType: hard @@ -8436,15 +8321,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.7, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": - version: 4.3.7 - resolution: "debug@npm:4.3.7" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7": + version: 4.4.0 + resolution: "debug@npm:4.4.0" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de languageName: node linkType: hard @@ -8460,6 +8345,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:4.3.7, debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + "debug@npm:^3.1.0, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -8810,6 +8707,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "dunder-proto@npm:1.0.0" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/b321e5cbf64f0a4c786b0b3dc187eb5197a83f6e05a1e11b86db25251b3ae6747c4b805d9e0a4fbf481d22a86a539dc75f82d883daeac7fc2ce4bd72ff5ef5a2 + languageName: node + linkType: hard + "duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": version: 3.7.1 resolution: "duplexify@npm:3.7.1" @@ -8886,9 +8794,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.68 - resolution: "electron-to-chromium@npm:1.5.68" - checksum: 10c0/02cfa3043280e4f8e003724fadee30fa8cdb5f6df1be51627b1ad34f66a8d4fb51b3d3863647620075c02b21c8ff99bc2afe55142a2b4742b1f9d523c11b25a3 + version: 1.5.71 + resolution: "electron-to-chromium@npm:1.5.71" + checksum: 10c0/f6fdeec0e1d68634cf92c267bdce3e50af947ce2c8fb1034df3e738c536b3033e311ad0fb9a6c4c35f678f10a299e4f78fdfcedbaa78d8992fedc443a7363d6d languageName: node linkType: hard @@ -9127,12 +9035,10 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c languageName: node linkType: hard @@ -9663,7 +9569,7 @@ __metadata: languageName: node linkType: hard -"express@npm:4.21.1, express@npm:^4.19.2": +"express@npm:4.21.1": version: 4.21.1 resolution: "express@npm:4.21.1" dependencies: @@ -9702,7 +9608,7 @@ __metadata: languageName: node linkType: hard -"express@npm:4.21.2": +"express@npm:4.21.2, express@npm:^4.19.2": version: 4.21.2 resolution: "express@npm:4.21.2" dependencies: @@ -10186,17 +10092,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.2.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 - languageName: node - linkType: hard - "fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -10344,15 +10239,18 @@ __metadata: linkType: hard "get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" + version: 1.2.5 + resolution: "get-intrinsic@npm:1.2.5" dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + dunder-proto: "npm:^1.0.0" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + checksum: 10c0/dcaace9fd4b4dd127b6668f580393e1a704bad308b7b88d694145e2599ee6c51b70cbfd49c6c96a5ffdb14a70824a0b3bd9b78bad84953932e5f0c5da4e508fd languageName: node linkType: hard @@ -10391,14 +10289,13 @@ __metadata: linkType: hard "get-uri@npm:^6.0.1": - version: 6.0.3 - resolution: "get-uri@npm:6.0.3" + version: 6.0.4 + resolution: "get-uri@npm:6.0.4" dependencies: basic-ftp: "npm:^5.0.2" data-uri-to-buffer: "npm:^6.0.2" debug: "npm:^4.3.4" - fs-extra: "npm:^11.2.0" - checksum: 10c0/8d801c462cd5b9c171d4d9e5f17afce3d9ebfbbfb006a88e3e768ce0071a8e2e59ee1ce822915fc43b9d6b83fde7b8d1c9648330ae89778fa41ad774df8ee0ac + checksum: 10c0/07c87abe1f97a4545fae329a37a45e276ec57e6ad48dad2a97780f87c96b00a82c2043ab49e1a991f99bb5cff8f8ed975e44e4f8b3c9600f35493a97f123499f languageName: node linkType: hard @@ -10575,12 +10472,10 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1, gopd@npm:^1.1.0": - version: 1.1.0 - resolution: "gopd@npm:1.1.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/acfa9914889700cf42eaf676e1dc2d5a277217580e36119a9a6f5b77197700fd8294b8994f257963845820e7b414c8f06e1b9f8dff6456b0f71f61d175fecf3c +"gopd@npm:^1.0.1, gopd@npm:^1.1.0, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead languageName: node linkType: hard @@ -10707,16 +10602,16 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.1.0 - resolution: "has-proto@npm:1.1.0" +"has-proto@npm:^1.0.3": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.7" - checksum: 10c0/d0aeb83ca76aa265a7629bf973d6338c310b8307cb7fa8b85f8f01a7d95fc3d6ede54eaedeb538a6c1ee4fc8961abfbe89ea88d9a78244fa03097fe5b506c10d + dunder-proto: "npm:^1.0.0" + checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 languageName: node linkType: hard -"has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e @@ -10967,7 +10862,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:7.0.5, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.5": +"https-proxy-agent@npm:7.0.5": version: 7.0.5 resolution: "https-proxy-agent@npm:7.0.5" dependencies: @@ -10977,7 +10872,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:7.0.6": +"https-proxy-agent@npm:7.0.6, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.6": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" dependencies: @@ -11176,7 +11071,7 @@ __metadata: languageName: node linkType: hard -"init-package-json@npm:^7.0.1": +"init-package-json@npm:^7.0.2": version: 7.0.2 resolution: "init-package-json@npm:7.0.2" dependencies: @@ -11490,13 +11385,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - "is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" @@ -12191,19 +12079,6 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 - languageName: node - linkType: hard - "jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" @@ -13129,26 +13004,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" - dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" - http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - proc-log: "npm:^4.2.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e - languageName: node - linkType: hard - "make-fetch-happen@npm:^14.0.0, make-fetch-happen@npm:^14.0.1, make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -13183,14 +13038,14 @@ __metadata: linkType: hard "memfs@npm:^4.6.0": - version: 4.14.1 - resolution: "memfs@npm:4.14.1" + version: 4.15.0 + resolution: "memfs@npm:4.15.0" dependencies: "@jsonjoy.com/json-pack": "npm:^1.0.3" "@jsonjoy.com/util": "npm:^1.3.0" tree-dump: "npm:^1.0.1" tslib: "npm:^2.0.0" - checksum: 10c0/2cf3836aa753fd846a4f5b9d6d5e22d9f2523eb4203a12b34a2c4baa7d6d16b37e30d7bab580c52a6f94a3dfdd14309128fe3e1aa5dacb5493903ca60efc54be + checksum: 10c0/be161036983ad517b8a6cb5e4493e6e0f1cc44024bc2135d51d9b28e823bb6a68bb00233900a1e9b93e942e8f581747f432b2224eb26c0045d97f8c84d25bd27 languageName: node linkType: hard @@ -13367,21 +13222,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b - languageName: node - linkType: hard - "minipass-fetch@npm:^4.0.0": version: 4.0.0 resolution: "minipass-fetch@npm:4.0.0" @@ -13447,7 +13287,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minizlib@npm:^2.1.1": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -13656,13 +13496,6 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3, negotiator@npm:~0.6.4": - version: 0.6.4 - resolution: "negotiator@npm:0.6.4" - checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea - languageName: node - linkType: hard - "negotiator@npm:^1.0.0": version: 1.0.0 resolution: "negotiator@npm:1.0.0" @@ -13670,6 +13503,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:~0.6.4": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -13817,23 +13657,23 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^10.0.0, node-gyp@npm:^10.2.0, node-gyp@npm:latest": - version: 10.3.1 - resolution: "node-gyp@npm:10.3.1" +"node-gyp@npm:^11.0.0, node-gyp@npm:latest": + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^4.1.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.2.1" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/87c3b50e1f6f5256b5d2879a8c064eefa53ed444bad2a20870be43bc189db7cbffe22c30af056046c6d904181d73881b1726fd391d2f6f79f89b991019f195ea + checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 languageName: node linkType: hard @@ -13844,17 +13684,6 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" - dependencies: - abbrev: "npm:^2.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 - languageName: node - linkType: hard - "nopt@npm:^8.0.0": version: 8.0.0 resolution: "nopt@npm:8.0.0" @@ -13999,15 +13828,15 @@ __metadata: linkType: hard "npm@npm:^10.8.1": - version: 10.9.1 - resolution: "npm@npm:10.9.1" + version: 10.9.2 + resolution: "npm@npm:10.9.2" dependencies: "@isaacs/string-locale-compare": "npm:^1.1.0" "@npmcli/arborist": "npm:^8.0.0" "@npmcli/config": "npm:^9.0.0" "@npmcli/fs": "npm:^4.0.0" - "@npmcli/map-workspaces": "npm:^4.0.1" - "@npmcli/package-json": "npm:^6.0.1" + "@npmcli/map-workspaces": "npm:^4.0.2" + "@npmcli/package-json": "npm:^6.1.0" "@npmcli/promise-spawn": "npm:^8.0.2" "@npmcli/redact": "npm:^3.0.0" "@npmcli/run-script": "npm:^9.0.1" @@ -14024,7 +13853,7 @@ __metadata: graceful-fs: "npm:^4.2.11" hosted-git-info: "npm:^8.0.2" ini: "npm:^5.0.0" - init-package-json: "npm:^7.0.1" + init-package-json: "npm:^7.0.2" is-cidr: "npm:^5.1.0" json-parse-even-better-errors: "npm:^4.0.0" libnpmaccess: "npm:^9.0.0" @@ -14043,7 +13872,7 @@ __metadata: minipass: "npm:^7.1.1" minipass-pipeline: "npm:^1.2.4" ms: "npm:^2.1.2" - node-gyp: "npm:^10.2.0" + node-gyp: "npm:^11.0.0" nopt: "npm:^8.0.0" normalize-package-data: "npm:^7.0.0" npm-audit-report: "npm:^6.0.0" @@ -14073,7 +13902,7 @@ __metadata: bin: npm: bin/npm-cli.js npx: bin/npx-cli.js - checksum: 10c0/66b6eeb99844accbd07be63cc2c48aeb6ddb8adc2b429cd473fb412e4d6c9d66cbbc130839199ad494116c6766bbe39054ed93fe5b5696bda818037760766813 + checksum: 10c0/b6cc861a857a0a28ee91a9f10d42d37043b32712656d7f5d490cf3a60755606cfbd3c0e14ff3e0e3b90eed122a8c1fc7e5abc974b6e5db25cafc37d52d2cea57 languageName: node linkType: hard @@ -14397,9 +14226,9 @@ __metadata: linkType: hard "p-map@npm:^7.0.2": - version: 7.0.2 - resolution: "p-map@npm:7.0.2" - checksum: 10c0/e10548036648d1c043153f9997112fe5a7de54a319210238628f8ea22ee36587fd6ee740811f88b60bbf29d932e23ae35df7fced40df477116c84c18e797047e + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c languageName: node linkType: hard @@ -14440,19 +14269,19 @@ __metadata: languageName: node linkType: hard -"pac-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "pac-proxy-agent@npm:7.0.2" +"pac-proxy-agent@npm:^7.1.0": + version: 7.1.0 + resolution: "pac-proxy-agent@npm:7.1.0" dependencies: "@tootallnate/quickjs-emscripten": "npm:^0.23.0" - agent-base: "npm:^7.0.2" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" get-uri: "npm:^6.0.1" http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.5" + https-proxy-agent: "npm:^7.0.6" pac-resolver: "npm:^7.0.1" - socks-proxy-agent: "npm:^8.0.4" - checksum: 10c0/1ef0812bb860d2c695aa3a8604acdb4239b8074183c9fdb9bdf3747b8b28bbb88f22269d3ca95cae825c8ed0ca82681e6692c0e304c961fe004231e579d1ca91 + socks-proxy-agent: "npm:^8.0.5" + checksum: 10c0/072528e3e7a0bb1187d5c09687a112ae230f6fa0d974e7460eaa0c1406666930ed53ffadfbfadfe8e1c7a8cc8d6ae26a4db96e27723d40a918c8454f0f1a012a languageName: node linkType: hard @@ -14831,7 +14660,7 @@ __metadata: languageName: node linkType: hard -"piscina@npm:4.8.0": +"piscina@npm:4.8.0, piscina@npm:^4.7.0": version: 4.8.0 resolution: "piscina@npm:4.8.0" dependencies: @@ -14843,18 +14672,6 @@ __metadata: languageName: node linkType: hard -"piscina@npm:^4.7.0": - version: 4.7.0 - resolution: "piscina@npm:4.7.0" - dependencies: - "@napi-rs/nice": "npm:^1.0.1" - dependenciesMeta: - "@napi-rs/nice": - optional: true - checksum: 10c0/d539857c9140d820173c78c9d6b7c20597ae4ff10a5060ff90ffc1d22a098eccd98f4d16073ce51c6d07e530079fa4d9a31ff7b4477b1411011e108b5b5689d4 - languageName: node - linkType: hard - "pkg-dir@npm:^4.1.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" @@ -15031,7 +14848,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.4.2": +"prettier@npm:3.4.2, prettier@npm:^3.0.0": version: 3.4.2 resolution: "prettier@npm:3.4.2" bin: @@ -15040,22 +14857,6 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.0.0": - version: 3.4.1 - resolution: "prettier@npm:3.4.1" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/2d6cc3101ad9de72b49c59339480b0983e6ff6742143da0c43f476bf3b5ef88ede42ebd9956d7a0a8fa59f7a5990e8ef03c9ad4c37f7e4c9e5db43ee0853156c - languageName: node - linkType: hard - -"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 - languageName: node - linkType: hard - "proc-log@npm:^5.0.0": version: 5.0.0 resolution: "proc-log@npm:5.0.0" @@ -15235,18 +15036,18 @@ __metadata: linkType: hard "proxy-agent@npm:^6.4.0": - version: 6.4.0 - resolution: "proxy-agent@npm:6.4.0" + version: 6.5.0 + resolution: "proxy-agent@npm:6.5.0" dependencies: - agent-base: "npm:^7.0.2" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" http-proxy-agent: "npm:^7.0.1" - https-proxy-agent: "npm:^7.0.3" + https-proxy-agent: "npm:^7.0.6" lru-cache: "npm:^7.14.1" - pac-proxy-agent: "npm:^7.0.1" + pac-proxy-agent: "npm:^7.1.0" proxy-from-env: "npm:^1.1.0" - socks-proxy-agent: "npm:^8.0.2" - checksum: 10c0/0c5b85cacf67eec9d8add025a5e577b2c895672e4187079ec41b0ee2a6dacd90e69a837936cb3ac141dd92b05b50a325b9bfe86ab0dc3b904011aa3bcf406fc0 + socks-proxy-agent: "npm:^8.0.5" + checksum: 10c0/7fd4e6f36bf17098a686d4aee3b8394abfc0b0537c2174ce96b0a4223198b9fafb16576c90108a3fcfc2af0168bd7747152bfa1f58e8fee91d3780e79aab7fd8 languageName: node linkType: hard @@ -15337,16 +15138,16 @@ __metadata: linkType: hard "puppeteer-core@npm:^23.2.0": - version: 23.9.0 - resolution: "puppeteer-core@npm:23.9.0" + version: 23.10.1 + resolution: "puppeteer-core@npm:23.10.1" dependencies: - "@puppeteer/browsers": "npm:2.4.1" + "@puppeteer/browsers": "npm:2.5.0" chromium-bidi: "npm:0.8.0" debug: "npm:^4.3.7" devtools-protocol: "npm:0.0.1367902" typed-query-selector: "npm:^2.12.0" ws: "npm:^8.18.0" - checksum: 10c0/1cb6e084059a94929f39ca458eec45b258f1ffbeb904ed689e2b915fd48741aa6aecf98129edf6426773316d204b3795a937da590bb65a635b6c8fd3e4feae11 + checksum: 10c0/e72eebd5c8eb1b74a849215960c8f87cdb002a60ad8466a00253aabb44df487d8e2da44687b89fcf687677e042b16c900b226c05f2d8741cf74ed5b258bac76a languageName: node linkType: hard @@ -15607,17 +15408,18 @@ __metadata: linkType: hard "reflect.getprototypeof@npm:^1.0.6": - version: 1.0.7 - resolution: "reflect.getprototypeof@npm:1.0.7" + version: 1.0.8 + resolution: "reflect.getprototypeof@npm:1.0.8" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" + dunder-proto: "npm:^1.0.0" es-abstract: "npm:^1.23.5" es-errors: "npm:^1.3.0" get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - which-builtin-type: "npm:^1.1.4" - checksum: 10c0/841814f7631b55ee42e198cb14a5c25c0752431ab8f0ad9794c32d46ab9fb0d5ba4939edac1f99a174a21443a1400a72bccbbb9ccd9277e4b4bf6d14aabb31c8 + gopd: "npm:^1.2.0" + which-builtin-type: "npm:^1.2.0" + checksum: 10c0/720479dd7a72a20d66efaca507ed7c7e18403d24ce764f436130464d4a516a12ed8a9a2714dcabc3e1296f9a31f914ba1095e2371619df23d3ac56c4f8c8bae1 languageName: node linkType: hard @@ -15672,7 +15474,7 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^6.1.1": +"regexpu-core@npm:^6.2.0": version: 6.2.0 resolution: "regexpu-core@npm:6.2.0" dependencies: @@ -15945,7 +15747,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.28.0": version: 4.28.0 resolution: "rollup@npm:4.28.0" dependencies: @@ -16014,7 +15816,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.1": +"rollup@npm:4.28.1, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.28.1 resolution: "rollup@npm:4.28.1" dependencies: @@ -16195,7 +15997,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.82.0": +"sass@npm:1.82.0, sass@npm:^1.81.0": version: 1.82.0 resolution: "sass@npm:1.82.0" dependencies: @@ -16212,23 +16014,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:^1.81.0": - version: 1.81.1 - resolution: "sass@npm:1.81.1" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" - source-map-js: "npm:>=0.6.2 <2.0.0" - dependenciesMeta: - "@parcel/watcher": - optional: true - bin: - sass: sass.js - checksum: 10c0/be30371b1706ae84ca39fc724368deae5fd9cf94f4737fb0120f166e81545d113d1aa9abd3d797cf66f1d48625ab20ec838509f157d23e3e1e57c6a7e5e78cda - languageName: node - linkType: hard - "saucelabs@npm:^1.5.0": version: 1.5.0 resolution: "saucelabs@npm:1.5.0" @@ -16468,7 +16253,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -16710,14 +16495,14 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.2, socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.4": - version: 8.0.4 - resolution: "socks-proxy-agent@npm:8.0.4" +"socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.5": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: "npm:^7.1.1" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" socks: "npm:^2.8.3" - checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 languageName: node linkType: hard @@ -16969,15 +16754,6 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.6 - resolution: "ssri@npm:10.0.6" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 - languageName: node - linkType: hard - "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -17064,8 +16840,8 @@ __metadata: linkType: hard "streamx@npm:^2.15.0, streamx@npm:^2.20.0": - version: 2.20.2 - resolution: "streamx@npm:2.20.2" + version: 2.21.0 + resolution: "streamx@npm:2.21.0" dependencies: bare-events: "npm:^2.2.0" fast-fifo: "npm:^1.3.2" @@ -17074,7 +16850,7 @@ __metadata: dependenciesMeta: bare-events: optional: true - checksum: 10c0/2ad68b9426e0211c1198b5b5dd7280088793c6792e1f8e2a8fbd2487d483f35ee13b0b46edfa247daad2132d6b0abc21af4eaa4a4c099ff4cd11fcff83e6ce3e + checksum: 10c0/4583d1585c0b5876bc623e4c31c00358d914277b649928573002577019cb41cb8e62a7b39559aa118ff8424c1d98b03eb163536f838fa21d006f274042498180 languageName: node linkType: hard @@ -17404,7 +17180,7 @@ __metadata: languageName: node linkType: hard -"terser@npm:5.37.0": +"terser@npm:5.37.0, terser@npm:^5.26.0": version: 5.37.0 resolution: "terser@npm:5.37.0" dependencies: @@ -17418,20 +17194,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.26.0": - version: 5.36.0 - resolution: "terser@npm:5.36.0" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 10c0/f4ed2bead19f64789ddcfb85b7cef78f3942f967b8890c54f57d1e35bc7d547d551c6a4c32210bce6ba45b1c738314bbfac6acbc6c762a45cd171777d0c120d9 - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -17444,9 +17206,11 @@ __metadata: linkType: hard "text-decoder@npm:^1.1.0": - version: 1.2.1 - resolution: "text-decoder@npm:1.2.1" - checksum: 10c0/deea9e3f4bde3b8990439e59cd52b2e917a416e29fbaf607052c89117c7148f1831562c099e9dd49abea0839cffdeb75a3c8f1f137f1686afd2808322f8e3f00 + version: 1.2.2 + resolution: "text-decoder@npm:1.2.2" + dependencies: + b4a: "npm:^1.6.4" + checksum: 10c0/20612b87d282ee07d8fba28f4b411c556a2487948de4c77610191e263e4e80fec5af1ffd9a00b58b7598c153e58127e36110be642721a197f222b58ff2aab5c2 languageName: node linkType: hard @@ -18080,15 +17844,6 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" - dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f - languageName: node - linkType: hard - "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -18098,15 +17853,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 - languageName: node - linkType: hard - "unique-slug@npm:^5.0.0": version: 5.0.0 resolution: "unique-slug@npm:5.0.0" @@ -18137,13 +17883,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a - languageName: node - linkType: hard - "unix-crypt-td-js@npm:1.1.4": version: 1.1.4 resolution: "unix-crypt-td-js@npm:1.1.4" @@ -18768,12 +18507,12 @@ __metadata: linkType: hard "whatwg-url@npm:^14.0.0": - version: 14.0.0 - resolution: "whatwg-url@npm:14.0.0" + version: 14.1.0 + resolution: "whatwg-url@npm:14.1.0" dependencies: tr46: "npm:^5.0.0" webidl-conversions: "npm:^7.0.0" - checksum: 10c0/ac32e9ba9d08744605519bbe9e1371174d36229689ecc099157b6ba102d4251a95e81d81f3d80271eb8da182eccfa65653f07f0ab43ea66a6934e643fd091ba9 + checksum: 10c0/f00104f1c67ce086ba8ffedab529cbbd9aefd8c0a6555320026de7aeff31f91c38680f95818b140a7c9cc657cde3781e567835dda552ddb1e2b8faaba0ac3cb6 languageName: node linkType: hard @@ -18800,7 +18539,7 @@ __metadata: languageName: node linkType: hard -"which-builtin-type@npm:^1.1.4": +"which-builtin-type@npm:^1.2.0": version: 1.2.0 resolution: "which-builtin-type@npm:1.2.0" dependencies: @@ -18875,17 +18614,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a - languageName: node - linkType: hard - "which@npm:^5.0.0": version: 5.0.0 resolution: "which@npm:5.0.0" From 8d7a51dfc9658aa2f0f0c527435c05c2b10f34e5 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 10 Dec 2024 10:59:55 +0000 Subject: [PATCH 0096/2162] feat(@angular/ssr): add `modulepreload` for lazy-loaded routes Enhance performance when using SSR by adding `modulepreload` links to lazy-loaded routes. This ensures that the required modules are preloaded in the background, improving the user experience and reducing the time to interactive. Closes #26484 --- packages/angular/build/BUILD.bazel | 1 + .../src/builders/application/execute-build.ts | 3 +- .../application/execute-post-bundle.ts | 11 + .../build/src/builders/application/i18n.ts | 4 + .../angular/compilation/aot-compilation.ts | 11 +- .../src/tools/angular/compilation/factory.ts | 12 +- .../angular/compilation/jit-compilation.ts | 13 +- .../compilation/parallel-compilation.ts | 6 +- .../angular/compilation/parallel-worker.ts | 5 +- .../transformers/lazy-routes-transformer.ts | 225 ++++++++++++++++++ .../lazy-routes-transformer_spec.ts | 208 ++++++++++++++++ .../tools/esbuild/angular/compiler-plugin.ts | 3 +- .../tools/esbuild/compiler-plugin-options.ts | 1 + .../src/utils/server-rendering/manifest.ts | 68 ++++++ packages/angular/ssr/src/app.ts | 46 +++- packages/angular/ssr/src/manifest.ts | 20 ++ packages/angular/ssr/src/routes/ng-routes.ts | 74 +++++- packages/angular/ssr/src/routes/route-tree.ts | 5 + packages/angular/ssr/test/testing-utils.ts | 2 +- .../server-routes-preload-links.ts | 223 +++++++++++++++++ 20 files changed, 921 insertions(+), 20 deletions(-) create mode 100644 packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer.ts create mode 100644 packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer_spec.ts create mode 100644 tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 5f8cb394d6f6..1aa140f21887 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -127,6 +127,7 @@ ts_library( "@npm//@angular/compiler-cli", "@npm//@babel/core", "@npm//prettier", + "@npm//typescript", ], ) diff --git a/packages/angular/build/src/builders/application/execute-build.ts b/packages/angular/build/src/builders/application/execute-build.ts index b5ca83a76405..3da1b3721f11 100644 --- a/packages/angular/build/src/builders/application/execute-build.ts +++ b/packages/angular/build/src/builders/application/execute-build.ts @@ -247,12 +247,13 @@ export async function executeBuild( // Perform i18n translation inlining if enabled if (i18nOptions.shouldInline) { - const result = await inlineI18n(options, executionResult, initialFiles); + const result = await inlineI18n(metafile, options, executionResult, initialFiles); executionResult.addErrors(result.errors); executionResult.addWarnings(result.warnings); executionResult.addPrerenderedRoutes(result.prerenderedRoutes); } else { const result = await executePostBundleSteps( + metafile, options, executionResult.outputFiles, executionResult.assetFiles, diff --git a/packages/angular/build/src/builders/application/execute-post-bundle.ts b/packages/angular/build/src/builders/application/execute-post-bundle.ts index 31b4a9d2e97c..5066d5aaca01 100644 --- a/packages/angular/build/src/builders/application/execute-post-bundle.ts +++ b/packages/angular/build/src/builders/application/execute-post-bundle.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import type { Metafile } from 'esbuild'; import assert from 'node:assert'; import { BuildOutputFile, @@ -34,6 +35,7 @@ import { OutputMode } from './schema'; /** * Run additional builds steps including SSG, AppShell, Index HTML file and Service worker generation. + * @param metafile An esbuild metafile object. * @param options The normalized application builder options used to create the build. * @param outputFiles The output files of an executed build. * @param assetFiles The assets of an executed build. @@ -42,6 +44,7 @@ import { OutputMode } from './schema'; */ // eslint-disable-next-line max-lines-per-function export async function executePostBundleSteps( + metafile: Metafile, options: NormalizedApplicationBuildOptions, outputFiles: BuildOutputFile[], assetFiles: BuildOutputAsset[], @@ -71,6 +74,7 @@ export async function executePostBundleSteps( serverEntryPoint, prerenderOptions, appShellOptions, + publicPath, workspaceRoot, partialSSRBuild, } = options; @@ -108,6 +112,7 @@ export async function executePostBundleSteps( } // Create server manifest + const initialFilesPaths = new Set(initialFiles.keys()); if (serverEntryPoint) { const { manifestContent, serverAssetsChunks } = generateAngularServerAppManifest( additionalHtmlOutputFiles, @@ -116,6 +121,9 @@ export async function executePostBundleSteps( undefined, locale, baseHref, + initialFilesPaths, + metafile, + publicPath, ); additionalOutputFiles.push( @@ -197,6 +205,9 @@ export async function executePostBundleSteps( serializableRouteTreeNodeForManifest, locale, baseHref, + initialFilesPaths, + metafile, + publicPath, ); for (const chunk of serverAssetsChunks) { diff --git a/packages/angular/build/src/builders/application/i18n.ts b/packages/angular/build/src/builders/application/i18n.ts index 101956f6319a..f526286e35a7 100644 --- a/packages/angular/build/src/builders/application/i18n.ts +++ b/packages/angular/build/src/builders/application/i18n.ts @@ -7,6 +7,7 @@ */ import { BuilderContext } from '@angular-devkit/architect'; +import type { Metafile } from 'esbuild'; import { join } from 'node:path'; import { BuildOutputFileType, InitialFileRecord } from '../../tools/esbuild/bundler-context'; import { @@ -23,11 +24,13 @@ import { NormalizedApplicationBuildOptions, getLocaleBaseHref } from './options' /** * Inlines all active locales as specified by the application build options into all * application JavaScript files created during the build. + * @param metafile An esbuild metafile object. * @param options The normalized application builder options used to create the build. * @param executionResult The result of an executed build. * @param initialFiles A map containing initial file information for the executed build. */ export async function inlineI18n( + metafile: Metafile, options: NormalizedApplicationBuildOptions, executionResult: ExecutionResult, initialFiles: Map, @@ -79,6 +82,7 @@ export async function inlineI18n( additionalOutputFiles, prerenderedRoutes: generatedRoutes, } = await executePostBundleSteps( + metafile, { ...options, baseHref: getLocaleBaseHref(baseHref, i18nOptions, locale) ?? baseHref, diff --git a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts index f111224c36d8..a807e0ea791d 100644 --- a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts @@ -17,6 +17,7 @@ import { ensureSourceFileVersions, } from '../angular-host'; import { replaceBootstrap } from '../transformers/jit-bootstrap-transformer'; +import { lazyRoutesTransformer } from '../transformers/lazy-routes-transformer'; import { createWorkerTransformer } from '../transformers/web-worker-transformer'; import { AngularCompilation, DiagnosticModes, EmitFileResult } from './angular-compilation'; import { collectHmrCandidates } from './hmr-candidates'; @@ -47,6 +48,10 @@ class AngularCompilationState { export class AotCompilation extends AngularCompilation { #state?: AngularCompilationState; + constructor(private readonly browserOnlyBuild: boolean) { + super(); + } + async initialize( tsconfig: string, hostOptions: AngularHostOptions, @@ -314,8 +319,12 @@ export class AotCompilation extends AngularCompilation { transformers.before ??= []; transformers.before.push( replaceBootstrap(() => typeScriptProgram.getProgram().getTypeChecker()), + webWorkerTransform, ); - transformers.before.push(webWorkerTransform); + + if (!this.browserOnlyBuild) { + transformers.before.push(lazyRoutesTransformer(compilerOptions, compilerHost)); + } // Emit is handled in write file callback when using TypeScript if (useTypeScriptTranspilation) { diff --git a/packages/angular/build/src/tools/angular/compilation/factory.ts b/packages/angular/build/src/tools/angular/compilation/factory.ts index 5984b4815f6a..91447dea24cf 100644 --- a/packages/angular/build/src/tools/angular/compilation/factory.ts +++ b/packages/angular/build/src/tools/angular/compilation/factory.ts @@ -14,22 +14,26 @@ import type { AngularCompilation } from './angular-compilation'; * compilation either for AOT or JIT mode. By default a parallel compilation is created * that uses a Node.js worker thread. * @param jit True, for Angular JIT compilation; False, for Angular AOT compilation. + * @param browserOnlyBuild True, for browser only builds; False, for browser and server builds. * @returns An instance of an Angular compilation object. */ -export async function createAngularCompilation(jit: boolean): Promise { +export async function createAngularCompilation( + jit: boolean, + browserOnlyBuild: boolean, +): Promise { if (useParallelTs) { const { ParallelCompilation } = await import('./parallel-compilation'); - return new ParallelCompilation(jit); + return new ParallelCompilation(jit, browserOnlyBuild); } if (jit) { const { JitCompilation } = await import('./jit-compilation'); - return new JitCompilation(); + return new JitCompilation(browserOnlyBuild); } else { const { AotCompilation } = await import('./aot-compilation'); - return new AotCompilation(); + return new AotCompilation(browserOnlyBuild); } } diff --git a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts index db2de81b4ae7..a811cb50ec0a 100644 --- a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts @@ -13,6 +13,7 @@ import { loadEsmModule } from '../../../utils/load-esm'; import { profileSync } from '../../esbuild/profiling'; import { AngularHostOptions, createAngularCompilerHost } from '../angular-host'; import { createJitResourceTransformer } from '../transformers/jit-resource-transformer'; +import { lazyRoutesTransformer } from '../transformers/lazy-routes-transformer'; import { createWorkerTransformer } from '../transformers/web-worker-transformer'; import { AngularCompilation, DiagnosticModes, EmitFileResult } from './angular-compilation'; @@ -29,6 +30,10 @@ class JitCompilationState { export class JitCompilation extends AngularCompilation { #state?: JitCompilationState; + constructor(private readonly browserOnlyBuild: boolean) { + super(); + } + async initialize( tsconfig: string, hostOptions: AngularHostOptions, @@ -116,8 +121,8 @@ export class JitCompilation extends AngularCompilation { replaceResourcesTransform, webWorkerTransform, } = this.#state; - const buildInfoFilename = - typeScriptProgram.getCompilerOptions().tsBuildInfoFile ?? '.tsbuildinfo'; + const compilerOptions = typeScriptProgram.getCompilerOptions(); + const buildInfoFilename = compilerOptions.tsBuildInfoFile ?? '.tsbuildinfo'; const emittedFiles: EmitFileResult[] = []; const writeFileCallback: ts.WriteFileCallback = (filename, contents, _a, _b, sourceFiles) => { @@ -140,6 +145,10 @@ export class JitCompilation extends AngularCompilation { ], }; + if (!this.browserOnlyBuild) { + transformers.before.push(lazyRoutesTransformer(compilerOptions, compilerHost)); + } + // TypeScript will loop until there are no more affected files in the program while ( typeScriptProgram.emitNextAffectedFile(writeFileCallback, undefined, undefined, transformers) diff --git a/packages/angular/build/src/tools/angular/compilation/parallel-compilation.ts b/packages/angular/build/src/tools/angular/compilation/parallel-compilation.ts index f3b3503f6988..be612cbfcad4 100644 --- a/packages/angular/build/src/tools/angular/compilation/parallel-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/parallel-compilation.ts @@ -26,7 +26,10 @@ import { AngularCompilation, DiagnosticModes, EmitFileResult } from './angular-c export class ParallelCompilation extends AngularCompilation { readonly #worker: WorkerPool; - constructor(readonly jit: boolean) { + constructor( + private readonly jit: boolean, + private readonly browserOnlyBuild: boolean, + ) { super(); // TODO: Convert to import.meta usage during ESM transition @@ -99,6 +102,7 @@ export class ParallelCompilation extends AngularCompilation { fileReplacements: hostOptions.fileReplacements, tsconfig, jit: this.jit, + browserOnlyBuild: this.browserOnlyBuild, stylesheetPort: stylesheetChannel.port2, optionsPort: optionsChannel.port2, optionsSignal, diff --git a/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts b/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts index 2669951c12e4..d67fbb9bd06c 100644 --- a/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts +++ b/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts @@ -17,6 +17,7 @@ import { JitCompilation } from './jit-compilation'; export interface InitRequest { jit: boolean; + browserOnlyBuild: boolean; tsconfig: string; fileReplacements?: Record; stylesheetPort: MessagePort; @@ -31,7 +32,9 @@ let compilation: AngularCompilation | undefined; const sourceFileCache = new SourceFileCache(); export async function initialize(request: InitRequest) { - compilation ??= request.jit ? new JitCompilation() : new AotCompilation(); + compilation ??= request.jit + ? new JitCompilation(request.browserOnlyBuild) + : new AotCompilation(request.browserOnlyBuild); const stylesheetRequests = new Map void, (reason: Error) => void]>(); request.stylesheetPort.on('message', ({ requestId, value, error }) => { diff --git a/packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer.ts b/packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer.ts new file mode 100644 index 000000000000..10d45d00d714 --- /dev/null +++ b/packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer.ts @@ -0,0 +1,225 @@ +/** + * @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 assert from 'node:assert'; +import { relative } from 'node:path/posix'; +import ts from 'typescript'; + +/** + * A transformer factory that adds a property to the lazy-loaded route object. + * This property is used to allow for the retrieval of the module path during SSR. + * + * @param compilerOptions The compiler options. + * @param compilerHost The compiler host. + * @returns A transformer factory. + * + * @example + * **Before:** + * ```ts + * const routes: Routes = [ + * { + * path: 'lazy', + * loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule) + * } + * ]; + * ``` + * + * **After:** + * ```ts + * const routes: Routes = [ + * { + * path: 'lazy', + * loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule), + * ...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "./lazy/lazy.module.ts" }: {}) + * } + * ]; + * ``` + */ +export function lazyRoutesTransformer( + compilerOptions: ts.CompilerOptions, + compilerHost: ts.CompilerHost, +): ts.TransformerFactory { + const moduleResolutionCache = compilerHost.getModuleResolutionCache?.(); + assert( + typeof compilerOptions.basePath === 'string', + 'compilerOptions.basePath should be a string.', + ); + const basePath = compilerOptions.basePath; + + return (context: ts.TransformationContext) => { + const factory = context.factory; + + const visitor = (node: ts.Node): ts.Node => { + if (!ts.isObjectLiteralExpression(node)) { + // Not an object literal, so skip it. + return ts.visitEachChild(node, visitor, context); + } + + const loadFunction = getLoadComponentOrChildrenProperty(node)?.initializer; + // Check if the initializer is an arrow function or a function expression + if ( + !loadFunction || + (!ts.isArrowFunction(loadFunction) && !ts.isFunctionExpression(loadFunction)) + ) { + return ts.visitEachChild(node, visitor, context); + } + + let callExpression: ts.CallExpression | undefined; + + if (ts.isArrowFunction(loadFunction)) { + // Handle arrow functions: body can either be a block or a direct call expression + const body = loadFunction.body; + + if (ts.isBlock(body)) { + // Arrow function with a block: check the first statement for a return call expression + const firstStatement = body.statements[0]; + + if ( + firstStatement && + ts.isReturnStatement(firstStatement) && + firstStatement.expression && + ts.isCallExpression(firstStatement.expression) + ) { + callExpression = firstStatement.expression; + } + } else if (ts.isCallExpression(body)) { + // Arrow function with a direct call expression as its body + callExpression = body; + } + } else if (ts.isFunctionExpression(loadFunction)) { + // Handle function expressions: check for a return statement with a call expression + const returnExpression = loadFunction.body.statements.find( + ts.isReturnStatement, + )?.expression; + + if (returnExpression && ts.isCallExpression(returnExpression)) { + callExpression = returnExpression; + } + } + + if (!callExpression) { + return ts.visitEachChild(node, visitor, context); + } + + // Optionally check for the 'then' property access expression + const expression = callExpression.expression; + if ( + !ts.isCallExpression(expression) && + ts.isPropertyAccessExpression(expression) && + expression.name.text !== 'then' + ) { + return ts.visitEachChild(node, visitor, context); + } + + const importExpression = ts.isPropertyAccessExpression(expression) + ? expression.expression // Navigate to the underlying expression for 'then' + : callExpression; + + // Ensure the underlying expression is an import call + if ( + !ts.isCallExpression(importExpression) || + importExpression.expression.kind !== ts.SyntaxKind.ImportKeyword + ) { + return ts.visitEachChild(node, visitor, context); + } + + // Check if the argument to the import call is a string literal + const callExpressionArgument = importExpression.arguments[0]; + if (!ts.isStringLiteralLike(callExpressionArgument)) { + // Not a string literal, so skip it. + return ts.visitEachChild(node, visitor, context); + } + + const resolvedPath = ts.resolveModuleName( + callExpressionArgument.text, + node.getSourceFile().fileName, + compilerOptions, + compilerHost, + moduleResolutionCache, + )?.resolvedModule?.resolvedFileName; + + if (!resolvedPath) { + // Could not resolve the module, so skip it. + return ts.visitEachChild(node, visitor, context); + } + + const resolvedRelativePath = relative(basePath, resolvedPath); + + // Create the new property + // Example: `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/home.ts" }: {})` + const newProperty = factory.createSpreadAssignment( + factory.createParenthesizedExpression( + factory.createConditionalExpression( + factory.createBinaryExpression( + factory.createBinaryExpression( + factory.createTypeOfExpression(factory.createIdentifier('ngServerMode')), + factory.createToken(ts.SyntaxKind.ExclamationEqualsEqualsToken), + factory.createStringLiteral('undefined'), + ), + factory.createToken(ts.SyntaxKind.AmpersandAmpersandToken), + factory.createIdentifier('ngServerMode'), + ), + factory.createToken(ts.SyntaxKind.QuestionToken), + factory.createObjectLiteralExpression([ + factory.createPropertyAssignment( + factory.createIdentifier('ɵentryName'), + factory.createStringLiteral(resolvedRelativePath), + ), + ]), + factory.createToken(ts.SyntaxKind.ColonToken), + factory.createObjectLiteralExpression([]), + ), + ), + ); + + // Add the new property to the object literal. + return factory.updateObjectLiteralExpression(node, [...node.properties, newProperty]); + }; + + return (sourceFile) => { + const text = sourceFile.text; + if (!text.includes('loadC')) { + // Fast check for 'loadComponent' and 'loadChildren'. + return sourceFile; + } + + return ts.visitEachChild(sourceFile, visitor, context); + }; + }; +} + +/** + * Retrieves the property assignment for the `loadComponent` or `loadChildren` property of a route object. + * + * @param node The object literal expression to search. + * @returns The property assignment if found, otherwise `undefined`. + */ +function getLoadComponentOrChildrenProperty( + node: ts.ObjectLiteralExpression, +): ts.PropertyAssignment | undefined { + let hasPathProperty = false; + let loadComponentOrChildrenProperty: ts.PropertyAssignment | undefined; + for (const prop of node.properties) { + if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) { + continue; + } + + const propertyNameText = prop.name.text; + if (propertyNameText === 'path') { + hasPathProperty = true; + } else if (propertyNameText === 'loadComponent' || propertyNameText === 'loadChildren') { + loadComponentOrChildrenProperty = prop; + } + + if (hasPathProperty && loadComponentOrChildrenProperty) { + break; + } + } + + return loadComponentOrChildrenProperty; +} diff --git a/packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer_spec.ts b/packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer_spec.ts new file mode 100644 index 000000000000..4dd388f28eb1 --- /dev/null +++ b/packages/angular/build/src/tools/angular/transformers/lazy-routes-transformer_spec.ts @@ -0,0 +1,208 @@ +/** + * @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 ts from 'typescript'; +import { lazyRoutesTransformer } from './lazy-routes-transformer'; + +describe('lazyRoutesTransformer', () => { + let program: ts.Program; + let compilerHost: ts.CompilerHost; + + beforeEach(() => { + // Mock a basic TypeScript program and compilerHost + program = ts.createProgram(['/project/src/dummy.ts'], { basePath: '/project/' }); + compilerHost = { + getNewLine: () => '\n', + fileExists: () => true, + readFile: () => '', + writeFile: () => undefined, + getCanonicalFileName: (fileName: string) => fileName, + getCurrentDirectory: () => '/project', + getDefaultLibFileName: () => 'lib.d.ts', + getSourceFile: () => undefined, + useCaseSensitiveFileNames: () => true, + resolveModuleNames: (moduleNames, containingFile) => + moduleNames.map( + (name) => + ({ + resolvedFileName: `/project/src/${name}.ts`, + }) as ts.ResolvedModule, + ), + }; + }); + + const transformSourceFile = (sourceCode: string): ts.SourceFile => { + const sourceFile = ts.createSourceFile( + '/project/src/dummy.ts', + sourceCode, + ts.ScriptTarget.ESNext, + true, + ts.ScriptKind.TS, + ); + + const transformer = lazyRoutesTransformer(program.getCompilerOptions(), compilerHost); + const result = ts.transform(sourceFile, [transformer]); + + return result.transformed[0]; + }; + + it('should return the same object when the routes array contains an empty object', () => { + const source = ` + const routes = [{}]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain(`const routes = [{}]`); + }); + + it('should add ɵentryName property to object with loadComponent and path (Arrow function)', () => { + const source = ` + const routes = [ + { + path: 'home', + loadComponent: () => import('./home').then(m => m.HomeComponent) + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain( + `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/home.ts" } : {})`, + ); + }); + + it('should add ɵentryName property to object with loadComponent and path (Arrow function with return)', () => { + const source = ` + const routes = [ + { + path: 'home', + loadComponent: () => { + return import('./home').then(m => m.HomeComponent); + } + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain( + `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/home.ts" } : {})`, + ); + }); + + it('should add ɵentryName property to object with loadComponent and path (Arrow function without .then)', () => { + const source = ` + const routes = [ + { + path: 'about', + loadComponent: () => import('./about') + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain( + `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/about.ts" } : {})`, + ); + }); + + it('should add ɵentryName property to object with loadComponent using return and .then', () => { + const source = ` + const routes = [ + { + path: '', + loadComponent: () => { + return import('./home').then((m) => m.HomeComponent); + } + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain( + `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/home.ts" } : {})`, + ); + }); + + it('should add ɵentryName property to object with loadComponent and path (Function expression)', () => { + const source = ` + const routes = [ + { + path: 'home', + loadComponent: function () { return import('./home').then(m => m.HomeComponent) } + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain( + `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/home.ts" } : {})`, + ); + }); + + it('should not modify unrelated object literals', () => { + const source = ` + const routes = [ + { + path: 'home', + component: HomeComponent + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).not.toContain(`ɵentryName`); + }); + + it('should ignore loadComponent without a valid import call', () => { + const source = ` + const routes = [ + { + path: 'home', + loadComponent: () => someFunction() + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).not.toContain(`ɵentryName`); + }); + + it('should resolve paths relative to basePath', () => { + const source = ` + const routes = [ + { + path: 'about', + loadChildren: () => import('./features/about').then(m => m.AboutModule) + } + ]; + `; + + const transformedSourceFile = transformSourceFile(source); + const transformedCode = ts.createPrinter().printFile(transformedSourceFile); + + expect(transformedCode).toContain( + `...(typeof ngServerMode !== "undefined" && ngServerMode ? { ɵentryName: "src/features/about.ts" } : {})`, + ); + }); +}); 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 0e3e3fa8e0fb..740c2d119b5a 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -40,6 +40,7 @@ export interface CompilerPluginOptions { sourcemap: boolean | 'external'; tsconfig: string; jit?: boolean; + browserOnlyBuild?: boolean; /** Skip TypeScript compilation setup. This is useful to re-use the TypeScript compilation from another plugin. */ noopTypeScriptCompilation?: boolean; @@ -119,7 +120,7 @@ export function createCompilerPlugin( // Create new reusable compilation for the appropriate mode based on the `jit` plugin option const compilation: AngularCompilation = pluginOptions.noopTypeScriptCompilation ? new NoopCompilation() - : await createAngularCompilation(!!pluginOptions.jit); + : await createAngularCompilation(!!pluginOptions.jit, !!pluginOptions.browserOnlyBuild); // Compilation is initially assumed to have errors until emitted let hasCompilationErrors = true; 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..93a92fa7e9a1 100644 --- a/packages/angular/build/src/tools/esbuild/compiler-plugin-options.ts +++ b/packages/angular/build/src/tools/esbuild/compiler-plugin-options.ts @@ -31,6 +31,7 @@ export function createCompilerPluginOptions( const incremental = !!options.watch; return { + browserOnlyBuild: !options.serverEntryPoint, sourcemap: !!sourcemapOptions.scripts && (sourcemapOptions.hidden ? 'external' : true), thirdPartySourcemaps: sourcemapOptions.vendor, tsconfig, diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index ca2886f11d89..bdd7fdd28df9 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -6,14 +6,21 @@ * found in the LICENSE file at https://angular.dev/license */ +import type { Metafile } from 'esbuild'; import { extname } from 'node:path'; import { NormalizedApplicationBuildOptions } from '../../builders/application/options'; import { type BuildOutputFile, BuildOutputFileType } from '../../tools/esbuild/bundler-context'; import { createOutputFile } from '../../tools/esbuild/utils'; +import { shouldOptimizeChunks } from '../environment-options'; export const SERVER_APP_MANIFEST_FILENAME = 'angular-app-manifest.mjs'; export const SERVER_APP_ENGINE_MANIFEST_FILENAME = 'angular-app-engine-manifest.mjs'; +interface FilesMapping { + path: string; + dynamicImport: boolean; +} + const MAIN_SERVER_OUTPUT_FILENAME = 'main.server.mjs'; /** @@ -97,6 +104,9 @@ export default { * the application, helping with localization and rendering content specific to the locale. * @param baseHref - The base HREF for the application. This is used to set the base URL * for all relative URLs in the application. + * @param initialFiles - A list of initial files that preload tags have already been added for. + * @param metafile - An esbuild metafile object. + * @param publicPath - The configured public path. * * @returns An object containing: * - `manifestContent`: A string of the SSR manifest content. @@ -109,6 +119,9 @@ export function generateAngularServerAppManifest( routes: readonly unknown[] | undefined, locale: string | undefined, baseHref: string, + initialFiles: Set, + metafile: Metafile, + publicPath: string | undefined, ): { manifestContent: string; serverAssetsChunks: BuildOutputFile[]; @@ -132,6 +145,13 @@ export function generateAngularServerAppManifest( } } + // When routes have been extracted, mappings are no longer needed, as preloads will be included in the metadata. + // When shouldOptimizeChunks is enabled the metadata is no longer correct and thus we cannot generate the mappings. + const entryPointToBrowserMapping = + routes?.length || shouldOptimizeChunks + ? undefined + : generateLazyLoadedFilesMappings(metafile, initialFiles, publicPath); + const manifestContent = ` export default { bootstrap: () => import('./main.server.mjs').then(m => m.default), @@ -139,6 +159,7 @@ export default { baseHref: '${baseHref}', locale: ${JSON.stringify(locale)}, routes: ${JSON.stringify(routes, undefined, 2)}, + entryPointToBrowserMapping: ${JSON.stringify(entryPointToBrowserMapping, undefined, 2)}, assets: { ${Object.entries(serverAssets) .map(([key, value]) => `'${key}': ${value}`) @@ -149,3 +170,50 @@ export default { return { manifestContent, serverAssetsChunks }; } + +/** + * Maps entry points to their corresponding browser bundles for lazy loading. + * + * This function processes a metafile's outputs to generate a mapping between browser-side entry points + * and the associated JavaScript files that should be loaded in the browser. It includes the entry-point's + * own path and any valid imports while excluding initial files or external resources. + */ +function generateLazyLoadedFilesMappings( + metafile: Metafile, + initialFiles: Set, + publicPath = '', +): Record { + const entryPointToBundles: Record = {}; + for (const [fileName, { entryPoint, exports, imports }] of Object.entries(metafile.outputs)) { + // Skip files that don't have an entryPoint, no exports, or are not .js + if (!entryPoint || exports?.length < 1 || !fileName.endsWith('.js')) { + continue; + } + + const importedPaths: FilesMapping[] = [ + { + path: `${publicPath}${fileName}`, + dynamicImport: false, + }, + ]; + + for (const { kind, external, path } of imports) { + if ( + external || + initialFiles.has(path) || + (kind !== 'dynamic-import' && kind !== 'import-statement') + ) { + continue; + } + + importedPaths.push({ + path: `${publicPath}${path}`, + dynamicImport: kind === 'dynamic-import', + }); + } + + entryPointToBundles[entryPoint] = importedPaths; + } + + return entryPointToBundles; +} diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 08d5ca13a180..85f1ca9818ad 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -251,7 +251,7 @@ export class AngularServerApp { matchedRoute: RouteTreeNodeMetadata, requestContext?: unknown, ): Promise { - const { renderMode, headers, status } = matchedRoute; + const { renderMode, headers, status, preload } = matchedRoute; if (!this.allowStaticRouteRender && renderMode === RenderMode.Prerender) { return null; @@ -293,8 +293,8 @@ export class AngularServerApp { ); } else if (renderMode === RenderMode.Client) { // Serve the client-side rendered version if the route is configured for CSR. - let html = await assets.getServerAsset('index.csr.html').text(); - html = await this.runTransformsOnHtml(html, url); + let html = await this.assets.getServerAsset('index.csr.html').text(); + html = await this.runTransformsOnHtml(html, url, preload); return new Response(html, responseInit); } @@ -308,7 +308,7 @@ export class AngularServerApp { this.boostrap ??= await bootstrap(); let html = await assets.getIndexServerHtml().text(); - html = await this.runTransformsOnHtml(html, url); + html = await this.runTransformsOnHtml(html, url, preload); html = await renderAngular( html, this.boostrap, @@ -385,13 +385,22 @@ export class AngularServerApp { * * @param html - The raw HTML content to be transformed. * @param url - The URL associated with the HTML content, used for context during transformations. + * @param preload - An array of URLs representing the JavaScript resources to preload. * @returns A promise that resolves to the transformed HTML string. */ - private async runTransformsOnHtml(html: string, url: URL): Promise { + private async runTransformsOnHtml( + html: string, + url: URL, + preload: readonly string[] | undefined, + ): Promise { if (this.hooks.has('html:transform:pre')) { html = await this.hooks.run('html:transform:pre', { html, url }); } + if (preload?.length) { + html = appendPreloadHintsToHtml(html, preload); + } + return html; } } @@ -430,3 +439,30 @@ export function destroyAngularServerApp(): void { angularServerApp = undefined; } + +/** + * Appends module preload hints to an HTML string for specified JavaScript resources. + * This function enhances the HTML by injecting `` elements + * for each provided resource, allowing browsers to preload the specified JavaScript + * modules for better performance. + * + * @param html - The original HTML string to which preload hints will be added. + * @param preload - An array of URLs representing the JavaScript resources to preload. + * @returns The modified HTML string with the preload hints injected before the closing `` tag. + * If `` is not found, the links are not added. + */ +function appendPreloadHintsToHtml(html: string, preload: readonly string[]): string { + const bodyCloseIdx = html.lastIndexOf(''); + if (bodyCloseIdx === -1) { + return html; + } + + // Note: Module preloads should be placed at the end before the closing body tag to avoid a performance penalty. + // Placing them earlier can cause the browser to prioritize downloading these modules + // over other critical page resources like images, CSS, and fonts. + return [ + html.slice(0, bodyCloseIdx), + ...preload.map((val) => ``), + html.slice(bodyCloseIdx), + ].join('\n'); +} diff --git a/packages/angular/ssr/src/manifest.ts b/packages/angular/ssr/src/manifest.ts index 2c0d642ec2ae..f37ca613314b 100644 --- a/packages/angular/ssr/src/manifest.ts +++ b/packages/angular/ssr/src/manifest.ts @@ -110,6 +110,26 @@ export interface AngularAppManifest { * the application, aiding with localization and rendering content specific to the locale. */ readonly locale?: string; + + /** + * Maps entry-point names to their corresponding browser bundles and loading strategies. + * + * - **Key**: The entry-point name, typically the value of `ɵentryName`. + * - **Value**: An array of objects, each representing a browser bundle with: + * - `path`: The filename or URL of the associated JavaScript bundle to preload. + * - `dynamicImport`: A boolean indicating whether the bundle is loaded via a dynamic `import()`. + * If `true`, the bundle is lazily loaded, impacting its preloading behavior. + * + * ### Example + * ```ts + * { + * 'src/app/lazy/lazy.ts': [{ path: 'src/app/lazy/lazy.js', dynamicImport: true }] + * } + * ``` + */ + readonly entryPointToBrowserMapping?: Readonly< + Record | undefined> + >; } /** diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 1f4f7c7d5613..be91636ccd25 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -9,7 +9,11 @@ import { APP_BASE_HREF, PlatformLocation } from '@angular/common'; import { ApplicationRef, Compiler, Injector, runInInjectionContext, ɵConsole } from '@angular/core'; import { INITIAL_CONFIG, platformServer } from '@angular/platform-server'; -import { Route, Router, ɵloadChildren as loadChildrenHelper } from '@angular/router'; +import { + Route as AngularRoute, + Router, + ɵloadChildren as loadChildrenHelper, +} from '@angular/router'; import { ServerAssets } from '../assets'; import { Console } from '../console'; import { AngularAppManifest, getAngularAppManifest } from '../manifest'; @@ -25,6 +29,16 @@ import { } from './route-config'; import { RouteTree, RouteTreeNodeMetadata } from './route-tree'; +interface Route extends AngularRoute { + ɵentryName?: string; +} + +/** + * The maximum number of module preload link elements that should be added for + * initial scripts. + */ +const MODULE_PRELOAD_MAX = 10; + /** * Regular expression to match segments preceded by a colon in a string. */ @@ -87,6 +101,8 @@ interface AngularRouterConfigResult { appShellRoute?: string; } +type EntryPointToBrowserMapping = AngularAppManifest['entryPointToBrowserMapping']; + /** * Traverses an array of route configurations to generate route tree node metadata. * @@ -104,6 +120,8 @@ async function* traverseRoutesConfig(options: { serverConfigRouteTree: RouteTree | undefined; invokeGetPrerenderParams: boolean; includePrerenderFallbackRoutes: boolean; + entryPointToBrowserMapping: EntryPointToBrowserMapping | undefined; + parentPreloads?: readonly string[]; }): AsyncIterableIterator { const { routes, @@ -111,13 +129,15 @@ async function* traverseRoutesConfig(options: { parentInjector, parentRoute, serverConfigRouteTree, + entryPointToBrowserMapping, + parentPreloads, invokeGetPrerenderParams, includePrerenderFallbackRoutes, } = options; for (const route of routes) { try { - const { path = '', redirectTo, loadChildren, children } = route; + const { path = '', redirectTo, loadChildren, loadComponent, children, ɵentryName } = route; const currentRoutePath = joinUrlParts(parentRoute, path); // Get route metadata from the server config route tree, if available @@ -140,13 +160,17 @@ async function* traverseRoutesConfig(options: { const metadata: ServerConfigRouteTreeNodeMetadata = { renderMode: RenderMode.Prerender, ...matchedMetaData, + preload: parentPreloads, // Match Angular router behavior // ['one', 'two', ''] -> 'one/two/' // ['one', 'two', 'three'] -> 'one/two/three' route: path === '' ? addTrailingSlash(currentRoutePath) : currentRoutePath, + presentInClientRouter: undefined, }; - delete metadata.presentInClientRouter; + if (ɵentryName && loadComponent) { + appendPreloadToMetadata(ɵentryName, entryPointToBrowserMapping, metadata, true); + } if (metadata.renderMode === RenderMode.Prerender) { // Handle SSG routes @@ -180,11 +204,20 @@ async function* traverseRoutesConfig(options: { ...options, routes: children, parentRoute: currentRoutePath, + parentPreloads: metadata.preload, }); } // Load and process lazy-loaded child routes if (loadChildren) { + if (ɵentryName) { + // When using `loadChildren`, the entire feature area (including multiple routes) is loaded. + // As a result, we do not want all dynamic-import dependencies to be preload, because it involves multiple dependencies + // across different child routes. In contrast, `loadComponent` only loads a single component, which allows + // for precise control over preloading, ensuring that the files preloaded are exactly those required for that specific route. + appendPreloadToMetadata(ɵentryName, entryPointToBrowserMapping, metadata, false); + } + const loadedChildRoutes = await loadChildrenHelper( route, compiler, @@ -198,6 +231,7 @@ async function* traverseRoutesConfig(options: { routes: childRoutes, parentInjector: injector, parentRoute: currentRoutePath, + parentPreloads: metadata.preload, }); } } @@ -209,6 +243,36 @@ async function* traverseRoutesConfig(options: { } } +/** + * Appends preload information to the metadata object based on the specified entry-point and chunk mappings. + * + * This function extracts preload data for a given entry-point from the provided chunk mappings. It adds the + * corresponding browser bundles to the metadata's preload list, ensuring no duplicates and limiting the total + * preloads to a predefined maximum. + */ +function appendPreloadToMetadata( + entryName: string, + entryPointToBrowserMapping: EntryPointToBrowserMapping, + metadata: ServerConfigRouteTreeNodeMetadata, + includeDynamicImports: boolean, +): void { + if (!entryPointToBrowserMapping) { + return; + } + + const preload = entryPointToBrowserMapping[entryName]; + + if (preload?.length) { + // Merge existing preloads with new ones, ensuring uniqueness and limiting the total to the maximum allowed. + const preloadPaths = + preload + .filter(({ dynamicImport }) => includeDynamicImports || !dynamicImport) + .map(({ path }) => path) ?? []; + const combinedPreloads = [...(metadata.preload ?? []), ...preloadPaths]; + metadata.preload = Array.from(new Set(combinedPreloads)).slice(0, MODULE_PRELOAD_MAX); + } +} + /** * Handles SSG (Static Site Generation) routes by invoking `getPrerenderParams` and yielding * all parameterized paths, returning any errors encountered. @@ -391,6 +455,7 @@ function buildServerConfigRouteTree({ routes, appShellRoute }: ServerRoutesConfi * @param invokeGetPrerenderParams - A boolean flag indicating whether to invoke `getPrerenderParams` for parameterized SSG routes * to handle prerendering paths. Defaults to `false`. * @param includePrerenderFallbackRoutes - A flag indicating whether to include fallback routes in the result. Defaults to `true`. + * @param entryPointToBrowserMapping - Maps the entry-point name to the associated JavaScript browser bundles. * * @returns A promise that resolves to an object of type `AngularRouterConfigResult` or errors. */ @@ -400,6 +465,7 @@ export async function getRoutesFromAngularRouterConfig( url: URL, invokeGetPrerenderParams = false, includePrerenderFallbackRoutes = true, + entryPointToBrowserMapping: EntryPointToBrowserMapping | undefined = undefined, ): Promise { const { protocol, host } = url; @@ -469,6 +535,7 @@ export async function getRoutesFromAngularRouterConfig( serverConfigRouteTree, invokeGetPrerenderParams, includePrerenderFallbackRoutes, + entryPointToBrowserMapping, }); for await (const result of traverseRoutes) { @@ -569,6 +636,7 @@ export function extractRoutesAndCreateRouteTree(options: { url, invokeGetPrerenderParams, includePrerenderFallbackRoutes, + manifest.entryPointToBrowserMapping, ); for (const { route, ...metadata } of routes) { diff --git a/packages/angular/ssr/src/routes/route-tree.ts b/packages/angular/ssr/src/routes/route-tree.ts index 85b1279aaee5..ba79688aa3c6 100644 --- a/packages/angular/ssr/src/routes/route-tree.ts +++ b/packages/angular/ssr/src/routes/route-tree.ts @@ -65,6 +65,11 @@ export interface RouteTreeNodeMetadata { * Specifies the rendering mode used for this route. */ renderMode: RenderMode; + + /** + * A list of resource that should be preloaded by the browser. + */ + preload?: readonly string[]; } /** diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index dd18ea29b516..f872487b06d8 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -22,7 +22,7 @@ import { ServerRoute, provideServerRoutesConfig } from '../src/routes/route-conf * * @param routes - An array of route definitions to be used by the Angular Router. * @param serverRoutes - An array of server route definitions for server-side rendering. - * @param [baseHref='/'] - An optional base href for the HTML template (default is `/`). + * @param baseHref - An optional base href to be used in the HTML template. * @param additionalServerAssets - A record of additional server assets to include, * where the keys are asset paths and the values are asset details. * @param locale - An optional locale to configure for the application during testing. 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 new file mode 100644 index 000000000000..77670e5eb64d --- /dev/null +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts @@ -0,0 +1,223 @@ +import assert from 'node:assert'; +import { replaceInFile, writeMultipleFiles } from '../../../utils/fs'; +import { execAndWaitForOutputToMatch, ng, noSilentNg, silentNg } from '../../../utils/process'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; +import { ngServe, updateJsonFile, useSha } from '../../../utils/project'; +import { getGlobalVariable } from '../../../utils/env'; +import { findFreePort } from '../../../utils/network'; + +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', '--server-routing', '--skip-confirmation', '--skip-install'); + await useSha(); + await installWorkspacePackages(); + + await updateJsonFile('angular.json', (workspaceJson) => { + const appProject = workspaceJson.projects['test-project']; + appProject.architect['build'].options.namedChunks = true; + }); + + // Add routes + await writeMultipleFiles({ + 'src/app/app.routes.ts': ` + import { Routes } from '@angular/router'; + + export const routes: Routes = [ + { + path: '', + loadComponent: () => import('./home/home.component').then(c => c.HomeComponent), + }, + { + path: 'ssg', + loadChildren: () => import('./ssg.routes').then(m => m.routes), + }, + { + path: 'ssr', + loadComponent: () => import('./ssr/ssr.component').then(c => c.SsrComponent), + }, + { + path: 'csr', + loadComponent: () => import('./csr/csr.component').then(c => c.CsrComponent), + }, + ]; + `, + 'src/app/app.routes.server.ts': ` + import { RenderMode, ServerRoute } from '@angular/ssr'; + + export const serverRoutes: ServerRoute[] = [ + { + path: 'ssr', + renderMode: RenderMode.Server, + }, + { + path: 'csr', + renderMode: RenderMode.Client, + }, + { + path: '**', + renderMode: RenderMode.Prerender, + }, + ]; + `, + 'src/app/cross-dep.ts': `export const foo = 'foo';`, + 'src/app/ssg.routes.ts': ` + import { Routes } from '@angular/router'; + + export const routes: Routes = [ + { + path: '', + loadComponent: () => import('./ssg/ssg.component').then(c => c.SsgComponent), + }, + { + path: 'one', + loadComponent: () => import('./ssg-one/ssg-one.component').then(c => c.SsgOneComponent), + }, + { + path: 'two', + loadComponent: () => import('./ssg-two/ssg-two.component').then(c => c.SsgTwoComponent), + }, + ];`, + }); + + // Generate components for the above routes + const componentNames: string[] = ['home', 'ssg', 'csr', 'ssr', 'ssg-one', 'ssg-two']; + + for (const componentName of componentNames) { + await silentNg('generate', 'component', componentName); + } + + // Add a cross-dependency + await Promise.all([ + replaceInFile( + 'src/app/ssg-one/ssg-one.component.ts', + `OneComponent {`, + `OneComponent { + async ngOnInit() { + await import('../cross-dep'); + } + `, + ), + replaceInFile( + 'src/app/ssg-two/ssg-two.component.ts', + `TwoComponent {`, + `TwoComponent { + async ngOnInit() { + await import('../cross-dep'); + } + `, + ), + ]); + + // Test both vite and `ng build` + await runTests(await ngServe()); + + await noSilentNg('build', '--output-mode=server'); + await runTests(await spawnServer()); +} + +const RESPONSE_EXPECTS: Record< + string, + { + matches: RegExp[]; + notMatches: RegExp[]; + } +> = { + '/': { + matches: [//], + notMatches: [/ssg\.component/, /ssr\.component/, /csr\.component/, /cross-dep-/], + }, + '/ssg': { + matches: [ + //, + //, + ], + notMatches: [ + /home\.component/, + /ssr\.component/, + /csr\.component/, + /ssg-one\.component/, + /ssg-two\.component/, + /cross-dep-/, + ], + }, + '/ssg/one': { + matches: [ + //, + //, + //, + ], + notMatches: [ + /home\.component/, + /ssr\.component/, + /csr\.component/, + /ssg-two\.component/, + /ssg\.component/, + ], + }, + '/ssg/two': { + matches: [ + //, + //, + //, + ], + notMatches: [ + /home\.component/, + /ssr\.component/, + /csr\.component/, + /ssg-one\.component/, + /ssg\.component/, + ], + }, + '/ssr': { + matches: [//], + notMatches: [/home\.component/, /ssg\.component/, /csr\.component/], + }, + '/csr': { + matches: [//], + notMatches: [/home\.component/, /ssg\.component/, /ssr\.component/, /cross-dep-/], + }, +}; + +async function runTests(port: number): Promise { + for (const [pathname, { matches, notMatches }] of Object.entries(RESPONSE_EXPECTS)) { + const res = await fetch(`http://localhost:${port}${pathname}`); + const text = await res.text(); + + for (const match of matches) { + assert.match(text, match, `Response for '${pathname}': ${match} was not matched in content.`); + + // Ensure that the url is correct and it's a 200. + const link = text.match(match)?.[1]; + const preloadRes = await fetch(`http://localhost:${port}/${link}`); + assert.equal(preloadRes.status, 200); + } + + for (const match of notMatches) { + assert.doesNotMatch( + text, + match, + `Response for '${pathname}': ${match} was matched in content.`, + ); + } + } +} + +async function spawnServer(): Promise { + const port = await findFreePort(); + await execAndWaitForOutputToMatch( + 'npm', + ['run', 'serve:ssr:test-project'], + /Node Express server listening on/, + { + 'PORT': String(port), + }, + ); + + return port; +} From 41ece633b3d42ef110bf6085fe0783ab2a56efcd Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 10 Dec 2024 11:39:56 +0000 Subject: [PATCH 0097/2162] feat(@angular/ssr): redirect to preferred locale when accessing root route without a specified locale When users access the root route `/` without providing a locale, the application now redirects them to their preferred locale based on the `Accept-Language` header. This enhancement leverages the user's browser preferences to determine the most appropriate locale, providing a seamless and personalized experience without requiring manual locale selection. --- .../src/utils/server-rendering/manifest.ts | 13 +- packages/angular/ssr/src/app-engine.ts | 64 ++++++- packages/angular/ssr/src/i18n.ts | 157 ++++++++++++++++++ packages/angular/ssr/src/manifest.ts | 10 +- packages/angular/ssr/test/app-engine_spec.ts | 38 ++++- packages/angular/ssr/test/i18n_spec.ts | 105 +++++++++++- 6 files changed, 377 insertions(+), 10 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index bdd7fdd28df9..a8be8d833efa 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -60,19 +60,30 @@ export function generateAngularServerAppEngineManifest( baseHref: string | undefined, ): string { const entryPoints: Record = {}; + const supportedLocales: Record = {}; + if (i18nOptions.shouldInline && !i18nOptions.flatOutput) { for (const locale of i18nOptions.inlineLocales) { const { subPath } = i18nOptions.locales[locale]; const importPath = `${subPath ? `${subPath}/` : ''}${MAIN_SERVER_OUTPUT_FILENAME}`; entryPoints[subPath] = `() => import('./${importPath}')`; + supportedLocales[locale] = subPath; } } else { entryPoints[''] = `() => import('./${MAIN_SERVER_OUTPUT_FILENAME}')`; + supportedLocales[i18nOptions.sourceLocale] = ''; + } + + // Remove trailing slash but retain leading slash. + let basePath = baseHref || '/'; + if (basePath.length > 1 && basePath[basePath.length - 1] === '/') { + basePath = basePath.slice(0, -1); } const manifestContent = ` export default { - basePath: '${baseHref ?? '/'}', + basePath: '${basePath}', + supportedLocales: ${JSON.stringify(supportedLocales, undefined, 2)}, entryPoints: { ${Object.entries(entryPoints) .map(([key, value]) => `'${key}': ${value}`) diff --git a/packages/angular/ssr/src/app-engine.ts b/packages/angular/ssr/src/app-engine.ts index 68117744d8c5..d8df64fa4bbd 100644 --- a/packages/angular/ssr/src/app-engine.ts +++ b/packages/angular/ssr/src/app-engine.ts @@ -8,8 +8,9 @@ import type { AngularServerApp, getOrCreateAngularServerApp } from './app'; import { Hooks } from './hooks'; -import { getPotentialLocaleIdFromUrl } from './i18n'; +import { getPotentialLocaleIdFromUrl, getPreferredLocale } from './i18n'; import { EntryPointExports, getAngularAppEngineManifest } from './manifest'; +import { joinUrlParts } from './utils/url'; /** * Angular server application engine. @@ -47,9 +48,11 @@ export class AngularAppEngine { private readonly manifest = getAngularAppEngineManifest(); /** - * The number of entry points available in the server application's manifest. + * A map of supported locales from the server application's manifest. */ - private readonly entryPointsCount = Object.keys(this.manifest.entryPoints).length; + private readonly supportedLocales: ReadonlyArray = Object.keys( + this.manifest.supportedLocales, + ); /** * A cache that holds entry points, keyed by their potential locale string. @@ -70,7 +73,58 @@ export class AngularAppEngine { async handle(request: Request, requestContext?: unknown): Promise { const serverApp = await this.getAngularServerAppForRequest(request); - return serverApp ? serverApp.handle(request, requestContext) : null; + if (serverApp) { + return serverApp.handle(request, requestContext); + } + + if (this.supportedLocales.length > 1) { + // Redirect to the preferred language if i18n is enabled. + return this.redirectBasedOnAcceptLanguage(request); + } + + return null; + } + + /** + * Handles requests for the base path when i18n is enabled. + * Redirects the user to a locale-specific path based on the `Accept-Language` header. + * + * @param request The incoming request. + * @returns A `Response` object with a 302 redirect, or `null` if i18n is not enabled + * or the request is not for the base path. + */ + private redirectBasedOnAcceptLanguage(request: Request): Response | null { + const { basePath, supportedLocales } = this.manifest; + + // If the request is not for the base path, it's not our responsibility to handle it. + const url = new URL(request.url); + if (url.pathname !== basePath) { + return null; + } + + // For requests to the base path (typically '/'), attempt to extract the preferred locale + // from the 'Accept-Language' header. + const preferredLocale = getPreferredLocale( + request.headers.get('Accept-Language') || '*', + this.supportedLocales, + ); + + if (preferredLocale) { + const subPath = supportedLocales[preferredLocale]; + if (subPath !== undefined) { + url.pathname = joinUrlParts(url.pathname, subPath); + + return new Response(null, { + status: 302, // Use a 302 redirect as language preference may change. + headers: { + 'Location': url.toString(), + 'Vary': 'Accept-Language', + }, + }); + } + } + + return null; } /** @@ -142,7 +196,7 @@ export class AngularAppEngine { */ private getEntryPointExportsForUrl(url: URL): Promise | undefined { const { basePath } = this.manifest; - if (this.entryPointsCount === 1) { + if (this.supportedLocales.length === 1) { return this.getEntryPointExports(''); } diff --git a/packages/angular/ssr/src/i18n.ts b/packages/angular/ssr/src/i18n.ts index d87c69666794..06129bcb22ed 100644 --- a/packages/angular/ssr/src/i18n.ts +++ b/packages/angular/ssr/src/i18n.ts @@ -43,3 +43,160 @@ export function getPotentialLocaleIdFromUrl(url: URL, basePath: string): string // Extract the potential locale id. return pathname.slice(start, end); } + +/** + * Parses the `Accept-Language` header and returns a list of locale preferences with their respective quality values. + * + * The `Accept-Language` header is typically a comma-separated list of locales, with optional quality values + * in the form of `q=`. If no quality value is specified, a default quality of `1` is assumed. + * Special case: if the header is `*`, it returns the default locale with a quality of `1`. + * + * @param header - The value of the `Accept-Language` header, typically a comma-separated list of locales + * with optional quality values (e.g., `en-US;q=0.8,fr-FR;q=0.9`). If the header is `*`, + * it represents a wildcard for any language, returning the default locale. + * + * @returns A `ReadonlyMap` where the key is the locale (e.g., `en-US`, `fr-FR`), and the value is + * the associated quality value (a number between 0 and 1). If no quality value is provided, + * a default of `1` is used. + * + * @example + * ```js + * parseLanguageHeader('en-US;q=0.8,fr-FR;q=0.9') + * // returns new Map([['en-US', 0.8], ['fr-FR', 0.9]]) + + * parseLanguageHeader('*') + * // returns new Map([['*', 1]]) + * ``` + */ +function parseLanguageHeader(header: string): ReadonlyMap { + if (header === '*') { + return new Map([['*', 1]]); + } + + const parsedValues = header + .split(',') + .map((item) => { + const [locale, qualityValue] = item.split(';', 2).map((v) => v.trim()); + + let quality = qualityValue?.startsWith('q=') ? parseFloat(qualityValue.slice(2)) : undefined; + if (typeof quality !== 'number' || isNaN(quality) || quality < 0 || quality > 1) { + quality = 1; // Invalid quality value defaults to 1 + } + + return [locale, quality] as const; + }) + .sort(([_localeA, qualityA], [_localeB, qualityB]) => qualityB - qualityA); + + return new Map(parsedValues); +} + +/** + * Gets the preferred locale based on the highest quality value from the provided `Accept-Language` header + * and the set of available locales. + * + * This function adheres to the HTTP `Accept-Language` header specification as defined in + * [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.5), including: + * - Case-insensitive matching of language tags. + * - Quality value handling (e.g., `q=1`, `q=0.8`). If no quality value is provided, it defaults to `q=1`. + * - Prefix matching (e.g., `en` matching `en-US` or `en-GB`). + * + * @param header - The `Accept-Language` header string to parse and evaluate. It may contain multiple + * locales with optional quality values, for example: `'en-US;q=0.8,fr-FR;q=0.9'`. + * @param supportedLocales - An array of supported locales (e.g., `['en-US', 'fr-FR']`), + * representing the locales available in the application. + * @returns The best matching locale from the supported languages, or `undefined` if no match is found. + * + * @example + * ```js + * getPreferredLocale('en-US;q=0.8,fr-FR;q=0.9', ['en-US', 'fr-FR', 'de-DE']) + * // returns 'fr-FR' + * + * getPreferredLocale('en;q=0.9,fr-FR;q=0.8', ['en-US', 'fr-FR', 'de-DE']) + * // returns 'en-US' + * + * getPreferredLocale('es-ES;q=0.7', ['en-US', 'fr-FR', 'de-DE']) + * // returns undefined + * ``` + */ +export function getPreferredLocale( + header: string, + supportedLocales: ReadonlyArray, +): string | undefined { + if (supportedLocales.length < 2) { + return supportedLocales[0]; + } + + const parsedLocales = parseLanguageHeader(header); + + // Handle edge cases: + // - No preferred locales provided. + // - Only one supported locale. + // - Wildcard preference. + if (parsedLocales.size === 0 || (parsedLocales.size === 1 && parsedLocales.has('*'))) { + return supportedLocales[0]; + } + + // Create a map for case-insensitive lookup of supported locales. + // Keys are normalized (lowercase) locale values, values are original casing. + const normalizedSupportedLocales = new Map(); + for (const locale of supportedLocales) { + normalizedSupportedLocales.set(normalizeLocale(locale), locale); + } + + // Iterate through parsed locales in descending order of quality. + let bestMatch: string | undefined; + const qualityZeroNormalizedLocales = new Set(); + for (const [locale, quality] of parsedLocales) { + const normalizedLocale = normalizeLocale(locale); + if (quality === 0) { + qualityZeroNormalizedLocales.add(normalizedLocale); + continue; // Skip locales with quality value of 0. + } + + // Exact match found. + if (normalizedSupportedLocales.has(normalizedLocale)) { + return normalizedSupportedLocales.get(normalizedLocale); + } + + // If an exact match is not found, try prefix matching (e.g., "en" matches "en-US"). + // Store the first prefix match encountered, as it has the highest quality value. + if (bestMatch !== undefined) { + continue; + } + + const [languagePrefix] = normalizedLocale.split('-', 1); + for (const supportedLocale of normalizedSupportedLocales.keys()) { + if (supportedLocale.startsWith(languagePrefix)) { + bestMatch = normalizedSupportedLocales.get(supportedLocale); + break; // No need to continue searching for this locale. + } + } + } + + if (bestMatch !== undefined) { + return bestMatch; + } + + // Return the first locale that is not quality zero. + for (const [normalizedLocale, locale] of normalizedSupportedLocales) { + if (!qualityZeroNormalizedLocales.has(normalizedLocale)) { + return locale; + } + } +} + +/** + * Normalizes a locale string by converting it to lowercase. + * + * @param locale - The locale string to normalize. + * @returns The normalized locale string in lowercase. + * + * @example + * ```ts + * const normalized = normalizeLocale('EN-US'); + * console.log(normalized); // Output: "en-us" + * ``` + */ +function normalizeLocale(locale: string): string { + return locale.toLowerCase(); +} diff --git a/packages/angular/ssr/src/manifest.ts b/packages/angular/ssr/src/manifest.ts index f37ca613314b..ae33dc979577 100644 --- a/packages/angular/ssr/src/manifest.ts +++ b/packages/angular/ssr/src/manifest.ts @@ -55,7 +55,7 @@ export interface AngularAppEngineManifest { /** * A readonly record of entry points for the server application. * Each entry consists of: - * - `key`: The base href for the entry point. + * - `key`: The url segment for the entry point. * - `value`: A function that returns a promise resolving to an object of type `EntryPointExports`. */ readonly entryPoints: Readonly Promise) | undefined>>; @@ -65,6 +65,14 @@ export interface AngularAppEngineManifest { * This is used to determine the root path of the application. */ readonly basePath: string; + + /** + * A readonly record mapping supported locales to their respective entry-point paths. + * Each entry consists of: + * - `key`: The locale identifier (e.g., 'en', 'fr'). + * - `value`: The url segment associated with that locale. + */ + readonly supportedLocales: Readonly>; } /** diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index 2cad65fe03cb..712c39539751 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -34,10 +34,32 @@ function createEntryPoint(locale: string) { class SSGComponent {} return async () => { + @Component({ + standalone: true, + selector: `app-home-${locale}`, + template: `Home works ${locale.toUpperCase()}`, + }) + class HomeComponent {} + + @Component({ + standalone: true, + selector: `app-ssr-${locale}`, + template: `SSR works ${locale.toUpperCase()}`, + }) + class SSRComponent {} + + @Component({ + standalone: true, + selector: `app-ssg-${locale}`, + template: `SSG works ${locale.toUpperCase()}`, + }) + class SSGComponent {} + setAngularAppTestingManifest( [ { path: 'ssg', component: SSGComponent }, { path: 'ssr', component: SSRComponent }, + { path: '', component: HomeComponent }, ], [ { path: 'ssg', renderMode: RenderMode.Prerender }, @@ -82,7 +104,8 @@ describe('AngularAppEngine', () => { it: createEntryPoint('it'), en: createEntryPoint('en'), }, - basePath: '', + supportedLocales: { 'it': 'it', 'en': 'en' }, + basePath: '/', }); appEngine = new AngularAppEngine(); @@ -133,6 +156,16 @@ describe('AngularAppEngine', () => { expect(response).toBeNull(); }); + it('should redirect to the highest priority locale when the URL is "/"', async () => { + const request = new Request('https://example.com/', { + headers: { 'Accept-Language': 'fr-CH, fr;q=0.9, it;q=0.8, en;q=0.7, *;q=0.5' }, + }); + const response = await appEngine.handle(request); + expect(response?.status).toBe(302); + expect(response?.headers.get('Location')).toBe('https://example.com/it'); + expect(response?.headers.get('Vary')).toBe('Accept-Language'); + }); + it('should return null for requests to file-like resources in a locale', async () => { const request = new Request('https://example.com/it/logo.png'); const response = await appEngine.handle(request); @@ -164,7 +197,8 @@ describe('AngularAppEngine', () => { }; }, }, - basePath: '', + basePath: '/', + supportedLocales: { 'en-US': '' }, }); appEngine = new AngularAppEngine(); diff --git a/packages/angular/ssr/test/i18n_spec.ts b/packages/angular/ssr/test/i18n_spec.ts index 3996e37187c6..e5dcfd397c4c 100644 --- a/packages/angular/ssr/test/i18n_spec.ts +++ b/packages/angular/ssr/test/i18n_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { getPotentialLocaleIdFromUrl } from '../src/i18n'; +import { getPotentialLocaleIdFromUrl, getPreferredLocale } from '../src/i18n'; describe('getPotentialLocaleIdFromUrl', () => { it('should extract locale ID correctly when basePath is present', () => { @@ -65,3 +65,106 @@ describe('getPotentialLocaleIdFromUrl', () => { expect(localeId).toBe('en'); }); }); + +describe('getPreferredLocale', () => { + it('should return the exact match with the highest quality value', () => { + const header = 'en-GB;q=0.8,fr-FR;q=0.9'; + const supportedLocales = ['en-GB', 'fr-FR', 'fr-BE']; + const result = getPreferredLocale(header, supportedLocales); + // Exact match for 'fr-FR' with the highest quality (0.9) + expect(result).toBe('fr-FR'); + }); + + it('should return the best match when no exact match is found, using language prefixes', () => { + const header = 'en-GB;q=0.9,fr;q=0.8'; + const supportedLocales = ['fr-FR', 'de-DE', 'en-US']; + const result = getPreferredLocale(header, supportedLocales); + // 'en-US' is the exact match with the highest quality (0.9) + expect(result).toBe('en-US'); + }); + + it('should match based on language prefix when no exact match is found', () => { + const header = 'en-US;q=0.8,fr;q=0.9,en-GB;q=0.7'; + const supportedLocales = ['en-GB', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + // Best match is 'en-GB' based on exact match (0.8 for 'en-US') + expect(result).toBe('en-GB'); + }); + + it('should return the first available locale when no exact match or prefix is found', () => { + const header = 'it-IT;q=0.8'; + const supportedLocales = ['en-GB', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + // The first locale in the supportedLocales set + expect(result).toBe('en-GB'); + }); + + it('should return the first available locale when the header is empty', () => { + const header = ''; + const supportedLocales = ['en-GB', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + expect(result).toBe('en-GB'); // The first locale in the supportedLocales set + }); + + it('should return the first available locale when the header is just "*"', () => { + const header = '*'; + const supportedLocales = ['en-GB', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + // The first locale in the supportedLocales set + expect(result).toBe('en-GB'); + }); + + it('should return the first available locale when no valid languages are in header', () => { + const header = 'xyz;q=0.5'; + const supportedLocales = ['en-GB', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + // No valid language, fallback to the first available locale + expect(result).toBe('en-GB'); + }); + + it('should return the closest match when no valid languages in header', () => { + const header = 'en-XYZ;q=0.7,fr-XYZ;q=0.8'; + const supportedLocales = ['en-GB', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + + // Since there is no exact match for 'en-XYZ' or 'fr-XYZ', + // the function should return 'fr-FR' as the closest match, + // as it shares the language prefix 'fr' with the 'fr-XYZ' in the header. + expect(result).toBe('fr-FR'); + }); + + it('should ignore locales with quality 0 and choose the highest quality supported locale', () => { + const header = 'en-GB;q=0,fr;q=0.9'; + const supportedLocales = ['en-GB', 'fr-FR', 'fr-BE']; + const result = getPreferredLocale(header, supportedLocales); + // 'en-GB' is ignored because quality is 0, so 'fr-FR' is chosen + expect(result).toBe('fr-FR'); + }); + + it('should select the highest quality supported locale as fallback, ignoring those with quality 0', () => { + const header = 'en-GB;q=0'; + const supportedLocales = ['en-GB', 'fr-FR', 'fr-BE']; + const result = getPreferredLocale(header, supportedLocales); + // 'en-GB' is ignored because quality is 0, so 'fr-FR' is chosen as the highest quality supported locale + expect(result).toBe('fr-FR'); + }); + + it('should select the closest match based on quality before considering wildcard "*"', () => { + const header = 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'; + const supportedLocales = ['it-IT', 'fr-FR', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + + // 'fr-FR' matches the 'fr' prefix with quality 0.9 + expect(result).toBe('fr-FR'); + }); + + it('should select the first available locale when only the wildcard "*" matches', () => { + const header = 'fr-CH, fr;q=0.9, *;q=0.5'; + const supportedLocales = ['it-IT', 'de-DE']; + const result = getPreferredLocale(header, supportedLocales); + + // Since 'fr-CH' and 'fr' do not match any supported locales, + // and '*' is present with quality 0.5, the first supported locale is chosen as a fallback. + expect(result).toBe('it-IT'); + }); +}); From 43127ddfb6fa35582b6b2c2e6700fd9eca6c4e7b Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 10 Dec 2024 14:41:18 +0000 Subject: [PATCH 0098/2162] refactor(@angular/build): add `globalThis['ngServerMode']` only when `externalDependencies` are present This code is unnecessary when no external dependencies are involved. --- .../src/tools/esbuild/application-code-bundle.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 c776d30ca629..db2581eb9b00 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -200,7 +200,11 @@ export function createServerPolyfillBundleOptions( return; } - const jsBanner: string[] = [`globalThis['ngServerMode'] = true;`]; + const jsBanner: string[] = []; + if (polyfillBundleOptions.external?.length) { + jsBanner.push(`globalThis['ngServerMode'] = true;`); + } + if (isNodePlatform) { // Note: Needed as esbuild does not provide require shims / proxy from ESModules. // See: https://github.com/evanw/esbuild/issues/1921. @@ -394,7 +398,11 @@ export function createSsrEntryCodeBundleOptions( const ssrInjectManifestNamespace = 'angular:ssr-entry-inject-manifest'; const isNodePlatform = options.ssrOptions?.platform !== ExperimentalPlatform.Neutral; - const jsBanner: string[] = [`globalThis['ngServerMode'] = true;`]; + const jsBanner: string[] = []; + if (options.externalDependencies?.length) { + jsBanner.push(`globalThis['ngServerMode'] = true;`); + } + if (isNodePlatform) { // Note: Needed as esbuild does not provide require shims / proxy from ESModules. // See: https://github.com/evanw/esbuild/issues/1921. From 0d2c648ad1eb29e9d6a056b5c2b913d27b784e32 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 10 Dec 2024 09:18:38 +0000 Subject: [PATCH 0099/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 40 +++++++++--------- package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 6 +-- yarn.lock | 20 ++++----- 9 files changed, 63 insertions(+), 63 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 3055c0110d81..4f99dd56843d 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + - uses: angular/dev-infra/github-actions/branch-manager@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 06e036f588ab..98ab912ba417 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - run: yarn 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 6c3ae6858ebd..a2f0cc81b3f0 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + - uses: angular/dev-infra/github-actions/post-approval-changes@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 3852df5a0944..fc2164f87610 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + - uses: angular/dev-infra/github-actions/feature-request@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 52ae205e0ce7..30951694b4f1 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable # 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 fb9b82d95d40..0bdeacf5551c 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/linting/licenses@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Check tooling setup run: yarn 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@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 + uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 310f4da55f7d..5f7cd55debd8 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.2", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2f92e20a32f578b694c37cce6a540a2da165e652", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333", "@angular/cdk": "19.1.0-next.1", "@angular/common": "19.1.0-next.2", "@angular/compiler": "19.1.0-next.2", @@ -63,7 +63,7 @@ "@angular/forms": "19.1.0-next.2", "@angular/localize": "19.1.0-next.2", "@angular/material": "19.1.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ac2fa10c4ca08f0ca10d837aef343406e61f49ca", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481", "@angular/platform-browser": "19.1.0-next.2", "@angular/platform-browser-dynamic": "19.1.0-next.2", "@angular/platform-server": "19.1.0-next.2", diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 8939694addb4..639661719903 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -3,7 +3,7 @@ "private": true, "dependencies": { "@angular/animations": "github:angular/animations-builds#57a8326e117d4656e15b515c5be80e2f4f614e06", - "@angular/cdk": "github:angular/cdk-builds#13673718acbc6eaa9f8dc1821515b8c8905b4ac4", + "@angular/cdk": "github:angular/cdk-builds#c5599d08018685a9a4fa75ed8d45d93ba4379508", "@angular/common": "github:angular/common-builds#1847b3648a13c813f78c0f39a7e3597dddb58b2c", "@angular/compiler": "github:angular/compiler-builds#a1fca72c5a362997e8b874d3cd912bc88235ec6b", "@angular/compiler-cli": "github:angular/compiler-cli-builds#db08655b750d5c0b16558f5da465f02405105e8b", @@ -11,8 +11,8 @@ "@angular/forms": "github:angular/forms-builds#e30d8a33cb935a8a2edbf19fe1a02f3b5ffa2468", "@angular/language-service": "github:angular/language-service-builds#8d7f2ff3b1769e4eec4b99f3a7a4ab666d7565b6", "@angular/localize": "github:angular/localize-builds#b2003fdcb9738a83a6a49f04f972179c24b61009", - "@angular/material": "github:angular/material-builds#578aff12fed272cd08987d653f6e5315a5dbe121", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#092f50be01688df82924caec700820ad2d930a4b", + "@angular/material": "github:angular/material-builds#d5bab5777d17f76a4f5172713f2c45c0ec3aca0b", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#aa21cc16ee93e0b2c60303c43a218507ed81ecb3", "@angular/platform-browser": "github:angular/platform-browser-builds#866311ba31020351c995710c7a58b923293dcdfb", "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#fe6cb871eced5d69c96392ef0db466dee3d90ac3", "@angular/platform-server": "github:angular/platform-server-builds#b5ea259f01f5994eeb3b36495a6a154a9c2e9d48", diff --git a/yarn.lock b/yarn.lock index 7ff7a4d81642..3a1b38389dc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -324,9 +324,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#2f92e20a32f578b694c37cce6a540a2da165e652": - version: 0.0.0-40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=2f92e20a32f578b694c37cce6a540a2da165e652" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333": + version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=8aff236a2d25f44f347d488aa1a906c0d52ca333" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.0" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/3d7bda81d8dfecb1cc0b4f9a4c918c4a11468613519f0ea7354f69f3c6ee756936bd3695cb6a2062eeb477b01fcd46674f69007e1cb3a7f023a476487da43089 + checksum: 10c0/7e7ec11c4f9f94b5e75be5559bbb44f3fcdad8a6bedd65ea8d8884386726c304a3791243b3c29f77bc1aa58088bba88e59ac66b407f813807047ef6a1f340a05 languageName: node linkType: hard @@ -629,7 +629,7 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.2" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2f92e20a32f578b694c37cce6a540a2da165e652" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333" "@angular/cdk": "npm:19.1.0-next.1" "@angular/common": "npm:19.1.0-next.2" "@angular/compiler": "npm:19.1.0-next.2" @@ -638,7 +638,7 @@ __metadata: "@angular/forms": "npm:19.1.0-next.2" "@angular/localize": "npm:19.1.0-next.2" "@angular/material": "npm:19.1.0-next.1" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ac2fa10c4ca08f0ca10d837aef343406e61f49ca" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481" "@angular/platform-browser": "npm:19.1.0-next.2" "@angular/platform-browser-dynamic": "npm:19.1.0-next.2" "@angular/platform-server": "npm:19.1.0-next.2" @@ -849,9 +849,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#ac2fa10c4ca08f0ca10d837aef343406e61f49ca": - version: 0.0.0-40b2cbdbcc40f36f125d721c4e8decd3bb607ea4 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=ac2fa10c4ca08f0ca10d837aef343406e61f49ca" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481": + version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=e0bc0d1225c9605f344561c6b3b3d471f0fee481" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -866,7 +866,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/c43a13c282f5f17305f97b8d38089be062fc30de7a809d9207f9f97901682ef86dfe9480f86b790fe9a08a2ca031bcb1dd7c768fead00cf9be302b8c06b1a1a3 + checksum: 10c0/ec89e8c97fe4b1216805289e6b11644a46f74008aa7246ec5139fa5212d062df3522a8b4a84f8ab6ae6abd9b5fa14e491a4aa0b19f3959cef9c498a70eb0b87a languageName: node linkType: hard From 210bf4e2b4eeac6cdda7e810752486b74c6c0876 Mon Sep 17 00:00:00 2001 From: Aaron Shim <5382864+aaronshim@users.noreply.github.com> Date: Thu, 28 Nov 2024 00:36:38 +0000 Subject: [PATCH 0100/2162] fix(@angular/build): Fixing auto-csp edge cases where - `); scriptContent = []; @@ -152,7 +152,7 @@ export async function autoCsp(html: string, unsafeEval = false): Promise } } - if (tag.tagName === 'body' || tag.tagName === 'html') { + if (tag.tagName === 'head' || tag.tagName === 'body' || tag.tagName === 'html') { // Write the loader script if a string of @@ -96,13 +100,15 @@ describe('auto-csp', () => { const csps = getCsps(result); expect(csps.length).toBe(1); - expect(csps[0]).toMatch(ONE_HASH_CSP); + expect(csps[0]).toMatch(TWO_HASH_CSP); expect(result).toContain( // eslint-disable-next-line max-len - `var scripts = [['./main1.js', undefined, false, false],['./main2.js', undefined, true, false],['./main3.js', 'module', true, true]];`, + `var scripts = [['./main1.js', '', false, false],['./main2.js', '', true, false],['./main3.js', 'module', true, true]];`, ); - // Only one loader script is created. - expect(Array.from(result.matchAll(/`); + // Only two loader scripts are created. + expect(Array.from(result.matchAll(/ + + +
Some text
+ + + `); + + const csps = getCsps(result); + expect(csps.length).toBe(1); + expect(csps[0]).toMatch(ONE_HASH_CSP); + + expect(result).toContain( + // eslint-disable-next-line max-len + `document.lastElementChild.appendChild`, + ); + // Head loader script is in the head. + expect(result).toContain(``); + // Only one loader script is created. + expect(Array.from(result.matchAll(/ + + + + + + + + + + `, + 'e2e/src/app.e2e-spec.ts': ` + import { browser, by, element } from 'protractor'; + import * as webdriver from 'selenium-webdriver'; + + function allConsoleWarnMessagesAndErrors() { + return browser + .manage() + .logs() + .get('browser') + .then(function (browserLog: any[]) { + const warnMessages: any[] = []; + browserLog.filter((logEntry) => { + const msg = logEntry.message; + console.log('>> ' + msg); + if (logEntry.level.value >= webdriver.logging.Level.INFO.value) { + warnMessages.push(msg); + } + }); + return warnMessages; + }); + } + + describe('Hello world E2E Tests', () => { + beforeAll(async () => { + await browser.waitForAngularEnabled(true); + }); + + it('should display: Welcome and run all scripts in order', async () => { + // Load the page without waiting for Angular since it is not bootstrapped automatically. + await browser.driver.get(browser.baseUrl); + + // Test the contents. + expect(await element(by.css('h1')).getText()).toMatch('Hello'); + + // Make sure all scripts ran and there were no client side errors. + const consoleMessages = await allConsoleWarnMessagesAndErrors(); + expect(consoleMessages.length).toEqual(4); // No additional errors + // Extract just the printed messages from the console data. + const printedMessages = consoleMessages.map(m => m.match(/"(.*?)"/)[1]); + expect(printedMessages).toEqual([ + // All messages printed in order because execution order is preserved. + "Inline Script Head", + "Inline Script Body: 1339", + "First External Script: 1338", + "Second External Script: 1337", + ]); + }); + }); + `, + }); + + async function spawnServer(): Promise { + const port = await findFreePort(); + + await execAndWaitForOutputToMatch('node', ['serve.js'], /Node Express server listening on/, { + 'PORT': String(port), + }); + + return port; + } + + await ng('build'); + + // Make sure the output files have auto-CSP as a result of `ng build` + await expectFileToMatch('dist/test-project/browser/index.html', CSP_META_TAG); + + // Make sure that our e2e protractor tests run to confirm that our angular project runs. + const port = await spawnServer(); + await ng('e2e', `--base-url=http://localhost:${port}`, '--dev-server-target='); +} From 5295d4dd2458e04817cef76b29072a4670090330 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 13 Dec 2024 06:18:26 +0000 Subject: [PATCH 0114/2162] build: update github/codeql-action action to v3.27.9 --- .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 a175e812f343..05e97d28f0e4 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@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3.27.7 + uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 with: sarif_file: results.sarif From 7069c3bac86eb291b51548fbf3fdde6cb2f4c33a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 13 Dec 2024 06:18:30 +0000 Subject: [PATCH 0115/2162] build: update dependency sass to v1.83.0 --- package.json | 2 +- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- yarn.lock | 23 ++++++++++++++++--- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index dfbb34353dc4..219de648dbc6 100644 --- a/package.json +++ b/package.json @@ -188,7 +188,7 @@ "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", - "sass": "1.82.0", + "sass": "1.83.0", "sass-loader": "16.0.4", "semver": "7.6.3", "shelljs": "^0.8.5", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index a8a7403f662b..60980b56d7a1 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -39,7 +39,7 @@ "picomatch": "4.0.2", "piscina": "4.8.0", "rollup": "4.28.1", - "sass": "1.82.0", + "sass": "1.83.0", "semver": "7.6.3", "vite": "6.0.3", "watchpack": "2.4.2" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 4afc488e1fa2..a2609a617433 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.1", - "sass": "1.82.0", + "sass": "1.83.0", "sass-loader": "16.0.4", "semver": "7.6.3", "source-map-loader": "5.0.0", diff --git a/yarn.lock b/yarn.lock index bc6479e33f3f..687055a6385f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,7 +102,7 @@ __metadata: postcss-loader: "npm:8.1.1" resolve-url-loader: "npm:5.0.0" rxjs: "npm:7.8.1" - sass: "npm:1.82.0" + sass: "npm:1.83.0" sass-loader: "npm:16.0.4" semver: "npm:7.6.3" source-map-loader: "npm:5.0.0" @@ -393,7 +393,7 @@ __metadata: picomatch: "npm:4.0.2" piscina: "npm:4.8.0" rollup: "npm:4.28.1" - sass: "npm:1.82.0" + sass: "npm:1.83.0" semver: "npm:7.6.3" vite: "npm:6.0.3" watchpack: "npm:2.4.2" @@ -763,7 +763,7 @@ __metadata: rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" - sass: "npm:1.82.0" + sass: "npm:1.83.0" sass-loader: "npm:16.0.4" semver: "npm:7.6.3" shelljs: "npm:^0.8.5" @@ -16089,6 +16089,23 @@ __metadata: languageName: node linkType: hard +"sass@npm:1.83.0": + version: 1.83.0 + resolution: "sass@npm:1.83.0" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + chokidar: "npm:^4.0.0" + immutable: "npm:^5.0.2" + source-map-js: "npm:>=0.6.2 <2.0.0" + dependenciesMeta: + "@parcel/watcher": + optional: true + bin: + sass: sass.js + checksum: 10c0/4415361229879a9041d77c953da85482e89032aa4321ba13250a9987d39c80fac6c88af3777f2a2d76a4e8b0c8afbd21c1970fdbe84e0b3ec25fb26741f92beb + languageName: node + linkType: hard + "saucelabs@npm:^1.5.0": version: 1.5.0 resolution: "saucelabs@npm:1.5.0" From 8d35b9bd38914a8759d600c4c1d704e769f98fc7 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 13 Dec 2024 18:20:18 +0000 Subject: [PATCH 0116/2162] build: update angular --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 ++-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 ++-- package.json | 28 +-- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- yarn.lock | 208 +++++++++--------- 11 files changed, 190 insertions(+), 190 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 4f99dd56843d..c07251a9a59e 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + - uses: angular/dev-infra/github-actions/branch-manager@4693145a16baaefdb7c9f55689b8eefc1fffc246 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98ab912ba417..1a73f17ffe86 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - run: yarn 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 a2f0cc81b3f0..a6675fa96573 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@4693145a16baaefdb7c9f55689b8eefc1fffc246 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + - uses: angular/dev-infra/github-actions/post-approval-changes@4693145a16baaefdb7c9f55689b8eefc1fffc246 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index fc2164f87610..d3e3d008b013 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + - uses: angular/dev-infra/github-actions/feature-request@4693145a16baaefdb7c9f55689b8eefc1fffc246 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 30951694b4f1..ed4606ee10c1 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable # 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 0bdeacf5551c..062a9dc418ba 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/linting/licenses@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Check tooling setup run: yarn 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@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -125,13 +125,13 @@ jobs: runs-on: windows-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -146,13 +146,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -169,12 +169,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 219de648dbc6..da5bcf4596d5 100644 --- a/package.json +++ b/package.json @@ -52,23 +52,23 @@ }, "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.1.0-next.2", + "@angular/animations": "19.1.0-next.3", "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0", "@angular/cdk": "19.1.0-next.2", - "@angular/common": "19.1.0-next.2", - "@angular/compiler": "19.1.0-next.2", - "@angular/compiler-cli": "19.1.0-next.2", - "@angular/core": "19.1.0-next.2", - "@angular/forms": "19.1.0-next.2", - "@angular/localize": "19.1.0-next.2", + "@angular/common": "19.1.0-next.3", + "@angular/compiler": "19.1.0-next.3", + "@angular/compiler-cli": "19.1.0-next.3", + "@angular/core": "19.1.0-next.3", + "@angular/forms": "19.1.0-next.3", + "@angular/localize": "19.1.0-next.3", "@angular/material": "19.1.0-next.2", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481", - "@angular/platform-browser": "19.1.0-next.2", - "@angular/platform-browser-dynamic": "19.1.0-next.2", - "@angular/platform-server": "19.1.0-next.2", - "@angular/router": "19.1.0-next.2", - "@angular/service-worker": "19.1.0-next.2", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb", + "@angular/platform-browser": "19.1.0-next.3", + "@angular/platform-browser-dynamic": "19.1.0-next.3", + "@angular/platform-server": "19.1.0-next.3", + "@angular/router": "19.1.0-next.3", + "@angular/service-worker": "19.1.0-next.3", "@babel/core": "7.26.0", "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 046808c2f3fc..5fafb91b24ca 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -27,12 +27,12 @@ } }, "devDependencies": { - "@angular/common": "19.1.0-next.2", - "@angular/compiler": "19.1.0-next.2", - "@angular/core": "19.1.0-next.2", - "@angular/platform-browser": "19.1.0-next.2", - "@angular/platform-server": "19.1.0-next.2", - "@angular/router": "19.1.0-next.2", + "@angular/common": "19.1.0-next.3", + "@angular/compiler": "19.1.0-next.3", + "@angular/core": "19.1.0-next.3", + "@angular/platform-browser": "19.1.0-next.3", + "@angular/platform-server": "19.1.0-next.3", + "@angular/router": "19.1.0-next.3", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index f51912505303..d57d7cf6c245 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.1.0-next.2", - "@angular/compiler-cli": "19.1.0-next.2", + "@angular/compiler": "19.1.0-next.3", + "@angular/compiler-cli": "19.1.0-next.3", "typescript": "5.7.2", "webpack": "5.97.1" } diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index b62541e25087..c00b7b312400 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#360f859838c23951f686e9a025e0e7f5a7053157", - "@angular/cdk": "github:angular/cdk-builds#b8d887551b7af15a6db99cd6966b84db5ce390fc", - "@angular/common": "github:angular/common-builds#ad555c8c5dd40482387a377e86d7de25162c9f5f", - "@angular/compiler": "github:angular/compiler-builds#278f0893cbbb1c6d6bdfcb5188f072743bca24c9", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#0b7ba32f1bbb389c6232a4c195db2af02a9d8c42", - "@angular/core": "github:angular/core-builds#223c02ba9b4a24c71a2d5af8c28dc8f8330d62ce", - "@angular/forms": "github:angular/forms-builds#1b83038bd7bf3394cc30793c6ed6dd2dd9be6135", - "@angular/language-service": "github:angular/language-service-builds#568dc6acb8c8fc1df5c7a47de4c943e867a578be", - "@angular/localize": "github:angular/localize-builds#28c321d64db4f13b6040fce95f90427693d2f733", - "@angular/material": "github:angular/material-builds#b5aa2898b757b6ea6c99734bd8635bfcdc48e94d", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#4a5a0309f135381272886abdd0e5b5057e9d2671", - "@angular/platform-browser": "github:angular/platform-browser-builds#b389e9897e8e7f6b6c34ce918758f2b708692fb5", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#98a5c939badd5fd53d84c1a581260ffee4684b40", - "@angular/platform-server": "github:angular/platform-server-builds#e3de8508d8095225e833a9e41149f086493ea902", - "@angular/router": "github:angular/router-builds#d9078247e4b77417b01572717186a514114d1b6c", - "@angular/service-worker": "github:angular/service-worker-builds#524a1d3a4e6127c656d5c0efd67b787dc384523a" + "@angular/animations": "github:angular/animations-builds#140f33a7982d208e44cfcce96672af3f641fd43f", + "@angular/cdk": "github:angular/cdk-builds#c95182efc51c53b7d810cbdd61e3fbb1743e9402", + "@angular/common": "github:angular/common-builds#217b1854b31b7bdcbe457f0fc44c74ea6c5216e6", + "@angular/compiler": "github:angular/compiler-builds#16846a8d5794a5f7551eaddd9e0e8f872e79afd5", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e6166da63f358f0c411ee4b9d7916a40a8fd3119", + "@angular/core": "github:angular/core-builds#6f0376bcaac1353f4dcedb9c8579324d957a083d", + "@angular/forms": "github:angular/forms-builds#9a52635d2bf1cd207efa799cfe51bf5a548c6a22", + "@angular/language-service": "github:angular/language-service-builds#0d020c35c2424aacb20785b98ea1a8fc83a68ce4", + "@angular/localize": "github:angular/localize-builds#4ae8b2f8124334f16297e51ec44f36513b240684", + "@angular/material": "github:angular/material-builds#b4208f26800c910d83937661d90c07d56051b82b", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ca06719d6f22bdef62e87c0b5bcb2417c2d243a4", + "@angular/platform-browser": "github:angular/platform-browser-builds#a9de245c8ae9bcca49801324978480a16c8a2dd5", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#4749ba8a232aa363a50225fec64fddf8976c8322", + "@angular/platform-server": "github:angular/platform-server-builds#4054c8ea5933dcd875a1fc607e54b99ec82be9b2", + "@angular/router": "github:angular/router-builds#b5ca3c8128eb7f10d55d81642b548572ac92135b", + "@angular/service-worker": "github:angular/service-worker-builds#8647cb5eaac95a3a2c7d0cf85b82557ffb07d466" } } diff --git a/yarn.lock b/yarn.lock index 687055a6385f..44e811cc46b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -245,14 +245,14 @@ __metadata: languageName: unknown linkType: soft -"@angular/animations@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/animations@npm:19.1.0-next.2" +"@angular/animations@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/animations@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.2 - checksum: 10c0/c99d0e7d63e2f0853e931dcef15044ebdb39ce6e299d066d7fcf3dec93477016db36e2414b42c3992397a07e4f3228ec4da32ab226ea2682edfed02bf42fc82b + "@angular/core": 19.1.0-next.3 + checksum: 10c0/310cb187e92be3fa332a3097003912111d817aa1230272de76e0ec2f2eca27762cbc73e7afad0ae28ce984a0138aec99f22d8b68b54bb61ccb138f5dfaed7514 languageName: node linkType: hard @@ -324,9 +324,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333": - version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=8aff236a2d25f44f347d488aa1a906c0d52ca333" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0": + version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=d17f802de0af0ac409259f97678ce59ddd0671a0" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.0" @@ -363,7 +363,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/7e7ec11c4f9f94b5e75be5559bbb44f3fcdad8a6bedd65ea8d8884386726c304a3791243b3c29f77bc1aa58088bba88e59ac66b407f813807047ef6a1f340a05 + checksum: 10c0/be7d98b00ca2cb31dc911403ee95778caa2e9a38da746c0636bd9ef33709c7739dc3de20e964fe2c9734d32eddd0f7383533e52d24ca33547eeca9e408e42e0b languageName: node linkType: hard @@ -539,21 +539,21 @@ __metadata: languageName: unknown linkType: soft -"@angular/common@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/common@npm:19.1.0-next.2" +"@angular/common@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/common@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.2 + "@angular/core": 19.1.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/7f26af0e6501aff830b5d9c1e7bd1a7b59b58ca71b006822268d73903e0722725bc93bb5a60d408db9413fb433d7c8ba6f769041553796f9e515cd117a455bad + checksum: 10c0/0f4b39288ac9d7a7d4b519a61551f47be206dfa249352662ac69ea69f0d7776291868c4c47b08a54e16dd7f2cb7534f7fba6e8abf0a8f4912fc4d9fe2cc054da languageName: node linkType: hard -"@angular/compiler-cli@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/compiler-cli@npm:19.1.0-next.2" +"@angular/compiler-cli@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/compiler-cli@npm:19.1.0-next.3" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -564,39 +564,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.2 + "@angular/compiler": 19.1.0-next.3 typescript: ">=5.5 <5.8" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/e7e1962234af37d9956549ae232edce470606aa8dfc2b45fe7a714efae2124722b684e5d19b230a62d3cdb90abd58f780a1f0d01d05c753cc64207dd34f21cd7 + checksum: 10c0/c5717c1c6a3839393151b861e2754a494b7796ded8048d307fa9d6b394492f49c3344b89de42602f8542daaad9f7aae80768ec553f05a1e3e78f4bbf7e1e5518 languageName: node linkType: hard -"@angular/compiler@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/compiler@npm:19.1.0-next.2" +"@angular/compiler@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/compiler@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.2 + "@angular/core": 19.1.0-next.3 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/eb5001ebdfae987100551d344d31d35bdb9c8383c67c90fbff4d5aca1b9ede7056f71fa875615b042b65d0bb03526b0864982aa57182facc412151bd3a75d111 + checksum: 10c0/72edfe102470b9589c0004f56bd2ff350875427c51a4a7565bb3fad659f3525e69ceb1828e74f85dc00943c3e27ae03171a6ed3b8d9c8447460408f9c2d7ae8b languageName: node linkType: hard -"@angular/core@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/core@npm:19.1.0-next.2" +"@angular/core@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/core@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/e2128e814e61dd297f5c3bf4832841c1212b69912fb700a90b74cb0fc0918a9f803317ffd47b481308b9adb720e5fd8cb428d411a2478087c78fee8b50e4ca3d + checksum: 10c0/eb259b2cfd16e476096d41f68782cb4acdcd14e178a138b437ce3c3612c7d970c838610fe9d0ff335c3a5c03dcb1ee594f98586c94207831bfd2f11f7a398839 languageName: node linkType: hard @@ -627,23 +627,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.1.0-next.2" + "@angular/animations": "npm:19.1.0-next.3" "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0" "@angular/cdk": "npm:19.1.0-next.2" - "@angular/common": "npm:19.1.0-next.2" - "@angular/compiler": "npm:19.1.0-next.2" - "@angular/compiler-cli": "npm:19.1.0-next.2" - "@angular/core": "npm:19.1.0-next.2" - "@angular/forms": "npm:19.1.0-next.2" - "@angular/localize": "npm:19.1.0-next.2" + "@angular/common": "npm:19.1.0-next.3" + "@angular/compiler": "npm:19.1.0-next.3" + "@angular/compiler-cli": "npm:19.1.0-next.3" + "@angular/core": "npm:19.1.0-next.3" + "@angular/forms": "npm:19.1.0-next.3" + "@angular/localize": "npm:19.1.0-next.3" "@angular/material": "npm:19.1.0-next.2" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481" - "@angular/platform-browser": "npm:19.1.0-next.2" - "@angular/platform-browser-dynamic": "npm:19.1.0-next.2" - "@angular/platform-server": "npm:19.1.0-next.2" - "@angular/router": "npm:19.1.0-next.2" - "@angular/service-worker": "npm:19.1.0-next.2" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb" + "@angular/platform-browser": "npm:19.1.0-next.3" + "@angular/platform-browser-dynamic": "npm:19.1.0-next.3" + "@angular/platform-server": "npm:19.1.0-next.3" + "@angular/router": "npm:19.1.0-next.3" + "@angular/service-worker": "npm:19.1.0-next.3" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -799,36 +799,36 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/forms@npm:19.1.0-next.2" +"@angular/forms@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/forms@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.2 - "@angular/core": 19.1.0-next.2 - "@angular/platform-browser": 19.1.0-next.2 + "@angular/common": 19.1.0-next.3 + "@angular/core": 19.1.0-next.3 + "@angular/platform-browser": 19.1.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/a3a18707d5b3c6666de581d9d7a9ce0b8fb3c826dc5cc5427fb04c633c0eb82c0922693b3dfa890cddb4c1e89ad74621ae4d8c7b1037413e7731f81cd9ae454c + checksum: 10c0/ac112479f597f93762528f9cec284c9409fe0a031e3d49464427c3e92886fae978eb78d912f2db49bf71397f238d17cabe6ca395641cc12bfaa142ceeb7646e6 languageName: node linkType: hard -"@angular/localize@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/localize@npm:19.1.0-next.2" +"@angular/localize@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/localize@npm:19.1.0-next.3" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.2 - "@angular/compiler-cli": 19.1.0-next.2 + "@angular/compiler": 19.1.0-next.3 + "@angular/compiler-cli": 19.1.0-next.3 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/1adbac13a2c43d9d28d86a76a00dbfb62c3647d7a7df34bd9051c43216b14e1f84518bc8b227b7890ae7ec69ae5950965e6a9869935b65ec6c2774db2a431aeb + checksum: 10c0/65a724a8e23da04d43cc2b27c04bef07c97754ee9930abae091b24075ef68e30fb2598bd69393e1a10af9ab181acfedcfb0e3076f86c076cf84fc89d20b4e630 languageName: node linkType: hard @@ -849,9 +849,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481": - version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=e0bc0d1225c9605f344561c6b3b3d471f0fee481" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb": + version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=fe9dde0666e9b8e1164951e8c146f9a03b05fcdb" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -866,53 +866,53 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/ec89e8c97fe4b1216805289e6b11644a46f74008aa7246ec5139fa5212d062df3522a8b4a84f8ab6ae6abd9b5fa14e491a4aa0b19f3959cef9c498a70eb0b87a + checksum: 10c0/0d1bfc08dd0a95dfd4639b5a82cd4b476e3fd211d512cdaec508fb675c20cfde4d934c9c1068844b1f0011e81922577c004cf8db1ca1c75f5f475cc8db1eb806 languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.2" +"@angular/platform-browser-dynamic@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.2 - "@angular/compiler": 19.1.0-next.2 - "@angular/core": 19.1.0-next.2 - "@angular/platform-browser": 19.1.0-next.2 - checksum: 10c0/b1f4b00caa5b80cd9c3ef27d46fb01f9d15e711f2bbe45ba5d8c332e18360a980209fe7f0c218f21f8b52a115537e8fcfd547f44eae0e2875b9f2111c3156e44 + "@angular/common": 19.1.0-next.3 + "@angular/compiler": 19.1.0-next.3 + "@angular/core": 19.1.0-next.3 + "@angular/platform-browser": 19.1.0-next.3 + checksum: 10c0/43f1785744a68bbd5f0ec1af7dcd0937fdd8baf74f5f7f5c3f60488411abcd7237fc739a355a1cda383a98929a4e44f4c36f88c8b8d23b48b252c8d477e73738 languageName: node linkType: hard -"@angular/platform-browser@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/platform-browser@npm:19.1.0-next.2" +"@angular/platform-browser@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/platform-browser@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.1.0-next.2 - "@angular/common": 19.1.0-next.2 - "@angular/core": 19.1.0-next.2 + "@angular/animations": 19.1.0-next.3 + "@angular/common": 19.1.0-next.3 + "@angular/core": 19.1.0-next.3 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/19dd3ab552b0aa750921af8df73f7f564ddf814c59218e7ad91f85acdf56d13a7b1c61613f17c740104ce75e0fcffef469dfd252f66466a7671604e38e914502 + checksum: 10c0/f127361624fc55f3990c8c507c0f154b4bdf1904452435a2c6e500649a6fe9374f3ee284fac512774bbadf199038154e53205183266513a8223f1dc0360b1a8a languageName: node linkType: hard -"@angular/platform-server@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/platform-server@npm:19.1.0-next.2" +"@angular/platform-server@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/platform-server@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.1.0-next.2 - "@angular/common": 19.1.0-next.2 - "@angular/compiler": 19.1.0-next.2 - "@angular/core": 19.1.0-next.2 - "@angular/platform-browser": 19.1.0-next.2 - checksum: 10c0/433ea8b1c532daf35da1aaeec09e289592bd3a3620023afc4f83db801eecace2e15479bd10ed5ed958fabda32fee167c639c7e860e1bd42803e05fd3e0573087 + "@angular/animations": 19.1.0-next.3 + "@angular/common": 19.1.0-next.3 + "@angular/compiler": 19.1.0-next.3 + "@angular/core": 19.1.0-next.3 + "@angular/platform-browser": 19.1.0-next.3 + checksum: 10c0/5b2f41f7bfb06fb21a97f73057b408ea638878506b24f34671ec8ffc03619ad4000dfb37f75f5ca8692fd45ddc009e21456f225035ff31d8f290d62445d556b4 languageName: node linkType: hard @@ -931,31 +931,31 @@ __metadata: languageName: unknown linkType: soft -"@angular/router@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/router@npm:19.1.0-next.2" +"@angular/router@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/router@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.2 - "@angular/core": 19.1.0-next.2 - "@angular/platform-browser": 19.1.0-next.2 + "@angular/common": 19.1.0-next.3 + "@angular/core": 19.1.0-next.3 + "@angular/platform-browser": 19.1.0-next.3 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/cb41e421eef37d28c2246186d4fd9febb50e973fda448922d6ea29a177e73e966da8fedab8ecbe1c3e2bc85de0eccc49855185cd290352bc04f826ea034de0d0 + checksum: 10c0/0008e3d86ba6bd2c042d5c6c0d5ccba4b46ddf53b9dede9f8d410a01757217c8da84d8002f48e405c41eecb8aa2dd5290c15cb9c15e06c9fc5ffb7c612db1790 languageName: node linkType: hard -"@angular/service-worker@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/service-worker@npm:19.1.0-next.2" +"@angular/service-worker@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/service-worker@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.2 - "@angular/core": 19.1.0-next.2 + "@angular/common": 19.1.0-next.3 + "@angular/core": 19.1.0-next.3 bin: ngsw-config: ngsw-config.js - checksum: 10c0/51d5d98ad02c43a9dc241842e0e0c99b0b442e8215a37c8b937fad6f7a15361615d57ce3a6a517cbbfa6fb1f52ed709dba202dc78bd23510dbf02388f86edbf1 + checksum: 10c0/39182dac6d953ee7743672513caccf23fdbfdec43c045a90a3a4107777639eb691855ee6cd20f1c605f8b46bf2d8206d67a6aee33e773119ab49b79cbb3a4798 languageName: node linkType: hard @@ -963,12 +963,12 @@ __metadata: version: 0.0.0-use.local resolution: "@angular/ssr@workspace:packages/angular/ssr" dependencies: - "@angular/common": "npm:19.1.0-next.2" - "@angular/compiler": "npm:19.1.0-next.2" - "@angular/core": "npm:19.1.0-next.2" - "@angular/platform-browser": "npm:19.1.0-next.2" - "@angular/platform-server": "npm:19.1.0-next.2" - "@angular/router": "npm:19.1.0-next.2" + "@angular/common": "npm:19.1.0-next.3" + "@angular/compiler": "npm:19.1.0-next.3" + "@angular/core": "npm:19.1.0-next.3" + "@angular/platform-browser": "npm:19.1.0-next.3" + "@angular/platform-server": "npm:19.1.0-next.3" + "@angular/router": "npm:19.1.0-next.3" "@bazel/runfiles": "npm:^5.8.1" tslib: "npm:^2.3.0" peerDependencies: @@ -3383,8 +3383,8 @@ __metadata: resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" dependencies: "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.1.0-next.2" - "@angular/compiler-cli": "npm:19.1.0-next.2" + "@angular/compiler": "npm:19.1.0-next.3" + "@angular/compiler-cli": "npm:19.1.0-next.3" typescript: "npm:5.7.2" webpack: "npm:5.97.1" peerDependencies: From a9a3470147aaf66ff4784a5b5c26c56d1051a5b3 Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Tue, 10 Dec 2024 14:59:05 -0800 Subject: [PATCH 0117/2162] fix(@angular-devkit/build-angular): jasmine.clock with app builder --- .../src/builders/karma/application_builder.ts | 115 ++++++++++++++++-- .../src/builders/karma/jasmine_global.js | 18 +++ .../builders/karma/jasmine_global_cleanup.js | 14 +++ .../tests/behavior/jasmine-clock_spec.ts | 46 +++++++ 4 files changed, 186 insertions(+), 7 deletions(-) create mode 100644 packages/angular_devkit/build_angular/src/builders/karma/jasmine_global.js create mode 100644 packages/angular_devkit/build_angular/src/builders/karma/jasmine_global_cleanup.js create mode 100644 packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/jasmine-clock_spec.ts diff --git a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts index ff4604c7c91e..c30bbbd5539a 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts @@ -20,7 +20,7 @@ import { randomUUID } from 'crypto'; import glob from 'fast-glob'; import * as fs from 'fs/promises'; import { IncomingMessage, ServerResponse } from 'http'; -import type { Config, ConfigOptions, InlinePluginDef } from 'karma'; +import type { Config, ConfigOptions, FilePattern, InlinePluginDef } from 'karma'; import * as path from 'path'; import { Observable, Subscriber, catchError, defaultIfEmpty, from, of, switchMap } from 'rxjs'; import { Configuration } from 'webpack'; @@ -106,6 +106,66 @@ class AngularAssetsMiddleware { } } +class AngularPolyfillsPlugin { + static readonly $inject = ['config.files']; + + static readonly NAME = 'angular-polyfills'; + + static createPlugin( + polyfillsFile: FilePattern, + jasmineCleanupFiles: FilePattern, + ): InlinePluginDef { + return { + // This has to be a "reporter" because reporters run _after_ frameworks + // and karma-jasmine-html-reporter injects additional scripts that may + // depend on Jasmine but aren't modules - which means that they would run + // _before_ all module code (including jasmine). + [`reporter:${AngularPolyfillsPlugin.NAME}`]: [ + 'factory', + Object.assign((files: (string | FilePattern)[]) => { + // The correct order is zone.js -> jasmine -> zone.js/testing. + // Jasmine has to see the patched version of the global `setTimeout` + // function so it doesn't cache the unpatched version. And /testing + // needs to see the global `jasmine` object so it can patch it. + const polyfillsIndex = 0; + files.splice(polyfillsIndex, 0, polyfillsFile); + + // Insert just before test_main.js. + const zoneTestingIndex = files.findIndex((f) => { + if (typeof f === 'string') { + return false; + } + + return f.pattern.endsWith('/test_main.js'); + }); + if (zoneTestingIndex === -1) { + throw new Error('Could not find test entrypoint file.'); + } + files.splice(zoneTestingIndex, 0, jasmineCleanupFiles); + + // We need to ensure that all files are served as modules, otherwise + // the order in the files list gets really confusing: Karma doesn't + // set defer on scripts, so all scripts with type=js will run first, + // even if type=module files appeared earlier in `files`. + for (const f of files) { + if (typeof f === 'string') { + throw new Error(`Unexpected string-based file: "${f}"`); + } + if (f.included === false) { + // Don't worry about files that aren't included on the initial + // page load. `type` won't affect them. + continue; + } + if ('js' === (f.type ?? 'js')) { + f.type = 'module'; + } + } + }, AngularPolyfillsPlugin), + ], + }; + } +} + function injectKarmaReporter( buildOptions: BuildOptions, buildIterator: AsyncIterator, @@ -247,12 +307,27 @@ async function getProjectSourceRoot(context: BuilderContext): Promise { return path.join(context.workspaceRoot, sourceRoot); } -function normalizePolyfills(polyfills: string | string[] | undefined): string[] { +function normalizePolyfills(polyfills: string | string[] | undefined): [string[], string[]] { if (typeof polyfills === 'string') { - return [polyfills]; + polyfills = [polyfills]; + } else if (!polyfills) { + polyfills = []; } - return polyfills ?? []; + const jasmineGlobalEntryPoint = + '@angular-devkit/build-angular/src/builders/karma/jasmine_global.js'; + const jasmineGlobalCleanupEntrypoint = + '@angular-devkit/build-angular/src/builders/karma/jasmine_global_cleanup.js'; + + const zoneTestingEntryPoint = 'zone.js/testing'; + const polyfillsExludingZoneTesting = polyfills.filter((p) => p !== zoneTestingEntryPoint); + + return [ + polyfillsExludingZoneTesting.concat([jasmineGlobalEntryPoint]), + polyfillsExludingZoneTesting.length === polyfills.length + ? [jasmineGlobalCleanupEntrypoint] + : [jasmineGlobalCleanupEntrypoint, zoneTestingEntryPoint], + ]; } async function collectEntrypoints( @@ -311,6 +386,11 @@ async function initializeApplication( ) : undefined; + const [polyfills, jasmineCleanup] = normalizePolyfills(options.polyfills); + for (let idx = 0; idx < jasmineCleanup.length; ++idx) { + entryPoints.set(`jasmine-cleanup-${idx}`, jasmineCleanup[idx]); + } + const buildOptions: BuildOptions = { assets: options.assets, entryPoints, @@ -327,7 +407,7 @@ async function initializeApplication( }, instrumentForCoverage, styles: options.styles, - polyfills: normalizePolyfills(options.polyfills), + polyfills, webWorkerTsConfig: options.webWorkerTsConfig, watch: options.watch ?? !karmaOptions.singleRun, stylePreprocessorOptions: options.stylePreprocessorOptions, @@ -349,10 +429,25 @@ async function initializeApplication( // Write test files await writeTestFiles(buildOutput.files, buildOptions.outputPath); + // We need to add this to the beginning *after* the testing framework has + // prepended its files. + const polyfillsFile: FilePattern = { + pattern: `${outputPath}/polyfills.js`, + included: true, + served: true, + type: 'module', + watched: false, + }; + const jasmineCleanupFiles: FilePattern = { + pattern: `${outputPath}/jasmine-cleanup-*.js`, + included: true, + served: true, + type: 'module', + watched: false, + }; + karmaOptions.files ??= []; karmaOptions.files.push( - // Serve polyfills first. - { pattern: `${outputPath}/polyfills.js`, type: 'module', watched: false }, // Serve global setup script. { pattern: `${outputPath}/${mainName}.js`, type: 'module', watched: false }, // Serve all source maps. @@ -413,6 +508,12 @@ async function initializeApplication( parsedKarmaConfig.middleware ??= []; parsedKarmaConfig.middleware.push(AngularAssetsMiddleware.NAME); + parsedKarmaConfig.plugins.push( + AngularPolyfillsPlugin.createPlugin(polyfillsFile, jasmineCleanupFiles), + ); + parsedKarmaConfig.reporters ??= []; + parsedKarmaConfig.reporters.push(AngularPolyfillsPlugin.NAME); + // When using code-coverage, auto-add karma-coverage. // This was done as part of the karma plugin for webpack. if ( diff --git a/packages/angular_devkit/build_angular/src/builders/karma/jasmine_global.js b/packages/angular_devkit/build_angular/src/builders/karma/jasmine_global.js new file mode 100644 index 000000000000..7f45cf531b41 --- /dev/null +++ b/packages/angular_devkit/build_angular/src/builders/karma/jasmine_global.js @@ -0,0 +1,18 @@ +/** + * @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 + */ + +// See: https://github.com/jasmine/jasmine/issues/2015 +(function () { + 'use strict'; + + // jasmine will ignore `window` unless it returns this specific (but uncommon) + // value from toString(). + window.toString = function () { + return '[object GjsGlobal]'; + }; +})(); diff --git a/packages/angular_devkit/build_angular/src/builders/karma/jasmine_global_cleanup.js b/packages/angular_devkit/build_angular/src/builders/karma/jasmine_global_cleanup.js new file mode 100644 index 000000000000..d703f8eaf5a9 --- /dev/null +++ b/packages/angular_devkit/build_angular/src/builders/karma/jasmine_global_cleanup.js @@ -0,0 +1,14 @@ +/** + * @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 + */ + +// See: https://github.com/jasmine/jasmine/issues/2015 +(function () { + 'use strict'; + + delete window.toString; +})(); diff --git a/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/jasmine-clock_spec.ts b/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/jasmine-clock_spec.ts new file mode 100644 index 000000000000..302b549b5d2c --- /dev/null +++ b/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/jasmine-clock_spec.ts @@ -0,0 +1,46 @@ +/** + * @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('Behavior: "jasmine.clock()"', () => { + beforeEach(async () => { + await setupTarget(harness); + }); + + it('can install and uninstall the mock clock', async () => { + await harness.writeFiles({ + './src/app/app.component.spec.ts': ` + import { AppComponent } from './app.component'; + + describe('Using jasmine.clock()', () => { + beforeEach(async () => { + jasmine.clock().install(); + }); + + afterEach(() => { + jasmine.clock().uninstall(); + }); + + it('runs a basic test case', () => { + expect(!!AppComponent).toBe(true); + }); + });`, + }); + + harness.useTarget('test', { + ...BASE_OPTIONS, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + }); + }); +}); From 1d6d264960b56bc1644b3689123bf6e765ecffe5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 14 Dec 2024 06:21:28 +0000 Subject: [PATCH 0118/2162] build: update angular --- tests/legacy-cli/e2e/ng-snapshot/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index c00b7b312400..f5bb36a8659b 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -3,7 +3,7 @@ "private": true, "dependencies": { "@angular/animations": "github:angular/animations-builds#140f33a7982d208e44cfcce96672af3f641fd43f", - "@angular/cdk": "github:angular/cdk-builds#c95182efc51c53b7d810cbdd61e3fbb1743e9402", + "@angular/cdk": "github:angular/cdk-builds#72ccabfc3bb47ac0579354687fadddd3eb8962f0", "@angular/common": "github:angular/common-builds#217b1854b31b7bdcbe457f0fc44c74ea6c5216e6", "@angular/compiler": "github:angular/compiler-builds#16846a8d5794a5f7551eaddd9e0e8f872e79afd5", "@angular/compiler-cli": "github:angular/compiler-cli-builds#e6166da63f358f0c411ee4b9d7916a40a8fd3119", @@ -11,8 +11,8 @@ "@angular/forms": "github:angular/forms-builds#9a52635d2bf1cd207efa799cfe51bf5a548c6a22", "@angular/language-service": "github:angular/language-service-builds#0d020c35c2424aacb20785b98ea1a8fc83a68ce4", "@angular/localize": "github:angular/localize-builds#4ae8b2f8124334f16297e51ec44f36513b240684", - "@angular/material": "github:angular/material-builds#b4208f26800c910d83937661d90c07d56051b82b", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ca06719d6f22bdef62e87c0b5bcb2417c2d243a4", + "@angular/material": "github:angular/material-builds#aa4fc973cbd5c326cdd76fe1eb51d6a78cb7cb72", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3f2355e199ac009050c6556edd7da69e8127fb7e", "@angular/platform-browser": "github:angular/platform-browser-builds#a9de245c8ae9bcca49801324978480a16c8a2dd5", "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#4749ba8a232aa363a50225fec64fddf8976c8322", "@angular/platform-server": "github:angular/platform-server-builds#4054c8ea5933dcd875a1fc607e54b99ec82be9b2", From 78c41f67ec26daa3dececec8f3338b8316cab19b Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 13:38:34 +0000 Subject: [PATCH 0119/2162] refactor(@angular/ssr): add timeout to prevent 'adev' hanging during route extraction A timeout was added during route extraction to resolve an issue where 'adev' would hang in production builds. The root cause is currently unclear, but this change ensures the build completes successfully. --- packages/angular/ssr/src/routes/ng-routes.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 4c0829044e53..681c8cd5c872 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -571,6 +571,10 @@ export async function getRoutesFromAngularRouterConfig( } } + // This timeout is necessary to prevent 'adev' from hanging in production builds. + // The exact cause is unclear, but removing it leads to the issue. + await new Promise((resolve) => setTimeout(resolve, 0)); + if (serverConfigRouteTree) { for (const { route, presentInClientRouter } of serverConfigRouteTree.traverse()) { if (presentInClientRouter || route === '**') { From 1bf9381c8c580321c8a473da1735839ecaf5ad76 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 13:26:43 +0000 Subject: [PATCH 0120/2162] fix(@angular/ssr): correctly resolve pre-transform resources in Vite SSR without AppEngine Ensure proper resolution of pre-transform resources when using SSR in Vite without relying on AppEngine. Closes #29132 --- .../vite/plugins/angular-memory-plugin.ts | 14 ++++- .../vite/ssr-no-server-entry-sub-path.ts | 53 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tests/legacy-cli/e2e/tests/vite/ssr-no-server-entry-sub-path.ts diff --git a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts index dc83f131f299..92fd7ac7df54 100644 --- a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts @@ -8,7 +8,7 @@ import assert from 'node:assert'; import { readFile } from 'node:fs/promises'; -import { dirname, join, relative } from 'node:path'; +import { basename, dirname, join, relative } from 'node:path'; import type { Plugin } from 'vite'; import { loadEsmModule } from '../../../utils/load-esm'; import { AngularMemoryOutputFiles } from '../utils'; @@ -51,6 +51,18 @@ export async function createAngularMemoryPlugin( // Remove query if present const [importerFile] = importer.split('?', 1); source = '/' + join(dirname(relative(virtualProjectRoot, importerFile)), source); + } else if ( + !ssr && + source[0] === '/' && + importer.endsWith('index.html') && + normalizePath(importer).startsWith(virtualProjectRoot) + ) { + // This is only needed when using SSR and `angularSsrMiddleware` (old style) to correctly resolve + // .js files when using lazy-loading. + // Remove query if present + const [importerFile] = importer.split('?', 1); + source = + '/' + join(dirname(relative(virtualProjectRoot, importerFile)), basename(source)); } } 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 new file mode 100644 index 000000000000..a55f48d0b39f --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vite/ssr-no-server-entry-sub-path.ts @@ -0,0 +1,53 @@ +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/, { + 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'.`); +} From 183f77201e8f0778bd56ef1bf181d2ae1283e7e2 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 15 Nov 2024 16:27:11 +0000 Subject: [PATCH 0121/2162] build: update to bazel 6 This is necessary for an incremental migration to `rules_js` which requires Bazel v6. Bazel v6 removed the managed directories feature, which means we no longer can rely on symlinked node modules as the Bazel repository; but rather need to duplicate dependencies. This is okay/acceptable to enable the incremental migration. --- .bazelversion | 2 +- WORKSPACE | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.bazelversion b/.bazelversion index ade65226e0aa..f22d756da39d 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -5.4.1 +6.5.0 diff --git a/WORKSPACE b/WORKSPACE index 9903b5b15bc7..ed3a708dc46b 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,7 +1,4 @@ -workspace( - name = "angular_cli", - managed_directories = {"@npm": ["node_modules"]}, -) +workspace(name = "angular_cli") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -122,9 +119,6 @@ yarn_install( # 2. Incompatibilites with the `ts_library` rule. exports_directories_only = False, package_json = "//:package.json", - # We prefer to symlink the `node_modules` to only maintain a single install. - # See https://github.com/angular/dev-infra/pull/446#issuecomment-1059820287 for details. - symlink_node_modules = True, yarn = "//:.yarn/releases/yarn-4.5.0.cjs", yarn_lock = "//:yarn.lock", ) From f22d4ee8e4c10e9b35d05ea185c5a5da937a8468 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Mon, 18 Nov 2024 14:49:32 +0000 Subject: [PATCH 0122/2162] build: setup `rules_js` and link dependencies This also requires us to move patches from `patch:` protocol to `patch-package` temporarily. This is because we need to temporarily use pnpm and yarn berry in hybrid, and both don't have any overlap in how patching works; and pnpm would fail if it sees the `patch` protocol. --- .../npm_translate_lock_MzA5NzUwNzMx | 8 + .github/workflows/ci.yml | 2 + .github/workflows/pr.yml | 2 + .npmrc | 8 +- .prettierignore | 1 + BUILD.bazel | 5 + WORKSPACE | 51 +- package.json | 24 +- .../@angular+bazel+19.0.0-next.7.patch | 6 +- .../@bazel+concatjs+5.8.1.patch | 30 +- .../@bazel+jasmine+5.8.1.patch | 8 +- pnpm-lock.yaml | 15274 ++++++++++++++++ pnpm-workspace.yaml | 2 + yarn.lock | 872 +- 14 files changed, 15778 insertions(+), 515 deletions(-) create mode 100755 .aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx rename .yarn/patches/@angular-bazel-https-9848736cf4.patch => patches/@angular+bazel+19.0.0-next.7.patch (66%) rename .yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch => patches/@bazel+concatjs+5.8.1.patch (75%) rename .yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch => patches/@bazel+jasmine+5.8.1.patch (73%) create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx new file mode 100755 index 000000000000..0ef6afc59917 --- /dev/null +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -0,0 +1,8 @@ +# @generated +# Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). +# This file should be checked into version control along with the pnpm-lock.yaml file. +.npmrc=-2023857461 +package.json=1474377014 +pnpm-lock.yaml=1733416088 +pnpm-workspace.yaml=1711114604 +yarn.lock=-607783516 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a73f17ffe86..862b40f18692 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,6 +65,8 @@ jobs: run: yarn install --immutable - name: Run module and package tests run: yarn bazel test //modules/... //packages/... + env: + ASPECT_RULES_JS_FROZEN_PNPM_LOCK: '1' e2e: strategy: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 062a9dc418ba..36d5e71ae753 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -99,6 +99,8 @@ jobs: run: yarn install --immutable - name: Run module and package tests run: yarn bazel test //modules/... //packages/... + env: + ASPECT_RULES_JS_FROZEN_PNPM_LOCK: '1' e2e: strategy: diff --git a/.npmrc b/.npmrc index c42da845b449..b8d41f41d029 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,7 @@ -engine-strict = true +# Yarn Berry doesn't check engines at all, so pnpm shouldn't either. +engine-strict = false + +# Disabling pnpm [hoisting](https://pnpm.io/npmrc#hoist) by setting `hoist=false` is recommended on +# projects using rules_js so that pnpm outside of Bazel lays out a node_modules tree similar to what +# rules_js lays out under Bazel (without a hidden node_modules/.pnpm/node_modules) +hoist=false diff --git a/.prettierignore b/.prettierignore index b469932f0838..b0b71acaf241 100644 --- a/.prettierignore +++ b/.prettierignore @@ -15,3 +15,4 @@ dist/ /tests/legacy-cli/e2e/assets/ /tools/test/*.json +pnpm-lock.yaml diff --git a/BUILD.bazel b/BUILD.bazel index 3b7064d60060..4d419edf7e2a 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -5,6 +5,7 @@ load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") load("@npm//@bazel/concatjs:index.bzl", "ts_config") +load("@npm2//:defs.bzl", "npm_link_all_packages") package(default_visibility = ["//visibility:public"]) @@ -19,6 +20,10 @@ exports_files([ "package.json", ]) +npm_link_all_packages( + name = "node_modules", +) + # Files required by e2e tests copy_to_bin( name = "config-files", diff --git a/WORKSPACE b/WORKSPACE index ed3a708dc46b..c919d3cd837f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,5 +1,7 @@ workspace(name = "angular_cli") +DEFAULT_NODE_VERSION = "18.19.1" + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( @@ -27,6 +29,17 @@ load("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_d build_bazel_rules_nodejs_dependencies() +http_archive( + name = "aspect_rules_js", + sha256 = "75c25a0f15a9e4592bbda45b57aa089e4bf17f9176fd735351e8c6444df87b52", + strip_prefix = "rules_js-2.1.0", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.1.0/rules_js-v2.1.0.tar.gz", +) + +load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") + +rules_js_dependencies() + http_archive( name = "rules_pkg", sha256 = "8c20f74bca25d2d442b327ae26768c02cf3c99e93fad0381f32be9aab1967675", @@ -70,7 +83,7 @@ nodejs_register_toolchains( name = "nodejs", # 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 = NODE_18_REPO, - node_version = "18.19.1", + node_version = DEFAULT_NODE_VERSION, ) nodejs_register_toolchains( @@ -103,16 +116,23 @@ nodejs_register_toolchains( node_version = "22.0.0", ) +load("@aspect_rules_js//js:toolchains.bzl", "rules_js_register_toolchains") + +rules_js_register_toolchains( + node_repositories = NODE_18_REPO, + node_version = DEFAULT_NODE_VERSION, +) + load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") yarn_install( name = "npm", data = [ - "//:.yarn/patches/@angular-bazel-https-9848736cf4.patch", - "//:.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch", - "//:.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch", "//:.yarn/releases/yarn-4.5.0.cjs", "//:.yarnrc.yml", + "//:patches/@angular+bazel+19.0.0-next.7.patch", + "//:patches/@bazel+concatjs+5.8.1.patch", + "//:patches/@bazel+jasmine+5.8.1.patch", ], # Currently disabled due to: # 1. Missing Windows support currently. @@ -152,3 +172,26 @@ load("@build_bazel_rules_nodejs//toolchains/esbuild:esbuild_repositories.bzl", " esbuild_repositories( npm_repository = "npm", ) + +load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock") + +npm_translate_lock( + name = "npm2", + data = [ + "//:package.json", + "//:pnpm-workspace.yaml", + ], + npmrc = "//:.npmrc", + patches = { + # Note: Patches not needed as the existing patches are only + # for `rules_nodejs` dependencies :) + }, + pnpm_lock = "//:pnpm-lock.yaml", + update_pnpm_lock = True, + verify_node_modules_ignored = "//:.bazelignore", + yarn_lock = "//:yarn.lock", +) + +load("@npm2//:repositories.bzl", "npm_repositories") + +npm_repositories() diff --git a/package.json b/package.json index da5bcf4596d5..423a75f31586 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ "sdk", "Angular DevKit" ], - "packageManager": "yarn@4.5.0", "scripts": { "admin": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only ./scripts/devkit-admin.mjs", "test": "bazel test //packages/...", @@ -18,7 +17,7 @@ "lint": "eslint --cache --max-warnings=0 \"**/*.@(ts|mts|cts)\"", "templates": "yarn admin templates", "validate": "yarn admin validate", - "postinstall": "yarn webdriver-update && yarn husky", + "postinstall": "patch-package && yarn webdriver-update && yarn husky", "//webdriver-update-README": "ChromeDriver version must match Puppeteer Chromium version, see https://github.com/GoogleChrome/puppeteer/releases http://chromedriver.chromium.org/downloads", "webdriver-update": "webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21", "public-api:check": "node goldens/public-api/manage.js test", @@ -42,18 +41,10 @@ "url": "https://github.com/angular/angular-cli/issues" }, "homepage": "https://github.com/angular/angular-cli", - "workspaces": { - "packages": [ - "packages/angular/*", - "packages/angular_devkit/*", - "packages/ngtools/*", - "packages/schematics/*" - ] - }, "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.3", - "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277", "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0", "@angular/cdk": "19.1.0-next.2", "@angular/common": "19.1.0-next.3", @@ -81,8 +72,8 @@ "@babel/runtime": "7.26.0", "@bazel/bazelisk": "1.25.0", "@bazel/buildifier": "7.3.1", - "@bazel/concatjs": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch", - "@bazel/jasmine": "patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch", + "@bazel/concatjs": "5.8.1", + "@bazel/jasmine": "5.8.1", "@bazel/rollup": "^5.8.1", "@bazel/runfiles": "^5.8.1", "@discoveryjs/json-ext": "0.6.3", @@ -175,6 +166,7 @@ "ora": "5.4.1", "pacote": "20.0.0", "parse5-html-rewriting-stream": "7.0.0", + "patch-package": "^8.0.0", "picomatch": "4.0.2", "piscina": "4.8.0", "postcss": "8.4.49", @@ -225,8 +217,10 @@ "built": true } }, + "pnpm": { + "onlyBuiltDependencies": [] + }, "resolutions": { - "@bazel/concatjs@npm:5.8.1": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch", - "@microsoft/api-extractor/typescript": "5.6.3" + "typescript": "5.7.2" } } diff --git a/.yarn/patches/@angular-bazel-https-9848736cf4.patch b/patches/@angular+bazel+19.0.0-next.7.patch similarity index 66% rename from .yarn/patches/@angular-bazel-https-9848736cf4.patch rename to patches/@angular+bazel+19.0.0-next.7.patch index bdb9331c20fe..09c60fbf87b7 100644 --- a/.yarn/patches/@angular-bazel-https-9848736cf4.patch +++ b/patches/@angular+bazel+19.0.0-next.7.patch @@ -1,7 +1,7 @@ -diff --git a/src/ng_package/packager.mjs b/src/ng_package/packager.mjs +diff --git a/node_modules/@angular/bazel/src/ng_package/packager.mjs b/node_modules/@angular/bazel/src/ng_package/packager.mjs index 5c1f3a2c72e28a90b666c96b2fe9755cdafd5259..47034ceeb0b9ab9c1e9bee50239723a51d2e2e19 100755 ---- a/src/ng_package/packager.mjs -+++ b/src/ng_package/packager.mjs +--- a/node_modules/@angular/bazel/src/ng_package/packager.mjs ++++ b/node_modules/@angular/bazel/src/ng_package/packager.mjs @@ -7,7 +7,7 @@ */ import * as fs from 'fs'; diff --git a/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch b/patches/@bazel+concatjs+5.8.1.patch similarity index 75% rename from .yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch rename to patches/@bazel+concatjs+5.8.1.patch index 8ea4fc259ae6..c69e168c0c39 100644 --- a/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch +++ b/patches/@bazel+concatjs+5.8.1.patch @@ -1,24 +1,24 @@ -diff --git a/internal/build_defs.bzl b/internal/build_defs.bzl +diff --git a/node_modules/@bazel/concatjs/internal/build_defs.bzl b/node_modules/@bazel/concatjs/internal/build_defs.bzl index 9e5cda684f0456b61d1b6c0f9c56ae021594713f..6c45196bda5880531d32618dfca0dee44c035cb9 100755 ---- a/internal/build_defs.bzl -+++ b/internal/build_defs.bzl +--- a/node_modules/@bazel/concatjs/internal/build_defs.bzl ++++ b/node_modules/@bazel/concatjs/internal/build_defs.bzl @@ -76,7 +76,7 @@ _TYPESCRIPT_TYPINGS = Label( "//typescript:typescript__typings", ) - + -_TYPESCRIPT_SCRIPT_TARGETS = ["es3", "es5", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "esnext"] +_TYPESCRIPT_SCRIPT_TARGETS = ["es3", "es5", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2022", "esnext"] _TYPESCRIPT_MODULE_KINDS = ["none", "commonjs", "amd", "umd", "system", "es2015", "esnext"] - + _DEVMODE_TARGET_DEFAULT = "es2015" -diff --git a/internal/common/tsconfig.bzl b/internal/common/tsconfig.bzl +diff --git a/node_modules/@bazel/concatjs/internal/common/tsconfig.bzl b/node_modules/@bazel/concatjs/internal/common/tsconfig.bzl index b01c999f5e02b388f51a508b0b608cf69db9b664..847c23fe4829d0c847e9b4bd1ad698e1ccea720e 100755 ---- a/internal/common/tsconfig.bzl -+++ b/internal/common/tsconfig.bzl +--- a/node_modules/@bazel/concatjs/internal/common/tsconfig.bzl ++++ b/node_modules/@bazel/concatjs/internal/common/tsconfig.bzl @@ -211,9 +211,6 @@ def create_tsconfig( # will convert that to goog.module syntax. "module": "umd" if devmode_manifest or has_node_runtime else "esnext", - + - # Has no effect in closure/ES2015 mode. Always true just for simplicity. - "downlevelIteration": True, - @@ -28,7 +28,7 @@ index b01c999f5e02b388f51a508b0b608cf69db9b664..847c23fe4829d0c847e9b4bd1ad698e1 @@ -248,13 +245,6 @@ def create_tsconfig( # "short name" mappings for npm packages, such as "@angular/core" "paths": mapped_module_roots, - + - # Inline const enums. - "preserveConstEnums": False, - @@ -38,7 +38,7 @@ index b01c999f5e02b388f51a508b0b608cf69db9b664..847c23fe4829d0c847e9b4bd1ad698e1 - # Interpret JSX as React calls (until someone asks for something different) "jsx": "react", - + @@ -277,12 +267,6 @@ def create_tsconfig( # always emit declaration files in the same location as outDir. "declarationDir": "/".join([workspace_path, outdir_path]), @@ -50,12 +50,12 @@ index b01c999f5e02b388f51a508b0b608cf69db9b664..847c23fe4829d0c847e9b4bd1ad698e1 - # Implied by inlineSourceMap: True - "sourceMap": False, } - + # "node_modules" still checked for backward compat for ng_module -diff --git a/internal/tsetse/rules/must_use_promises_rule.js b/internal/tsetse/rules/must_use_promises_rule.js +diff --git a/node_modules/@bazel/concatjs/internal/tsetse/rules/must_use_promises_rule.js b/node_modules/@bazel/concatjs/internal/tsetse/rules/must_use_promises_rule.js index e404d01cf80ab4da4b9cca89005b14a60b7d8c79..85488d9a339982af4495d2b5f4c30effb98a538b 100755 ---- a/internal/tsetse/rules/must_use_promises_rule.js -+++ b/internal/tsetse/rules/must_use_promises_rule.js +--- a/node_modules/@bazel/concatjs/internal/tsetse/rules/must_use_promises_rule.js ++++ b/node_modules/@bazel/concatjs/internal/tsetse/rules/must_use_promises_rule.js @@ -30,6 +30,10 @@ function checkCallExpression(checker, node) { if (tsutils.isExpressionValueUsed(node) || !inAsyncFunction(node)) { return; diff --git a/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch b/patches/@bazel+jasmine+5.8.1.patch similarity index 73% rename from .yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch rename to patches/@bazel+jasmine+5.8.1.patch index 05c8522d7c71..264506e30fe0 100644 --- a/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch +++ b/patches/@bazel+jasmine+5.8.1.patch @@ -1,7 +1,7 @@ -diff --git a/jasmine_runner.js b/jasmine_runner.js +diff --git a/node_modules/@bazel/jasmine/jasmine_runner.js b/node_modules/@bazel/jasmine/jasmine_runner.js index 097eb920357f5f02e5b6592e0e4be27c0b4bf25d..bd55c2dad833b32a9e644fed8c7d6b626cd01128 100755 ---- a/jasmine_runner.js -+++ b/jasmine_runner.js +--- a/node_modules/@bazel/jasmine/jasmine_runner.js ++++ b/node_modules/@bazel/jasmine/jasmine_runner.js @@ -147,7 +147,7 @@ async function main(args) { // TODO(6.0): remove support for deprecated versions of Jasmine that use the old API & // remember to update the `peerDependencies` as well. @@ -9,5 +9,5 @@ index 097eb920357f5f02e5b6592e0e4be27c0b4bf25d..bd55c2dad833b32a9e644fed8c7d6b62 - if (jrunner.coreVersion().charAt(0) !== '4') { + if (+jrunner.coreVersion().charAt(0) < 4) { console.warn(`DEPRECATED: Support for Jasmine versions prior to '4.0.x' is deprecated in '@bazel/jasmine'.`); - + // Old Jasmine API. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000000..f4792edbc673 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,15274 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +onlyBuiltDependencies: [] + +overrides: + typescript: 5.7.2 + +importers: + + .: + devDependencies: + '@ampproject/remapping': + specifier: 2.3.0 + version: 2.3.0 + '@angular/animations': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/bazel': + specifier: https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277 + version: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.0)(terser@5.36.0)(typescript@5.7.2) + '@angular/build-tooling': + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9 + version: github.com/angular/dev-infra-private-build-tooling-builds/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(chokidar@4.0.1)(debug@4.3.7)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.36.0)(zone.js@0.15.0) + '@angular/cdk': + specifier: 19.0.1 + version: 19.0.1(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/common': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/compiler': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/compiler-cli': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@angular/core': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/forms': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + '@angular/localize': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0) + '@angular/material': + specifier: 19.0.1 + version: 19.0.1(@angular/animations@19.1.0-next.0)(@angular/cdk@19.0.1)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/forms@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + '@angular/ng-dev': + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127 + version: github.com/angular/dev-infra-private-ng-dev-builds/579163373d32ec04ef9dab6c21e34bfc6d40b127 + '@angular/platform-browser': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular/platform-browser-dynamic': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0) + '@angular/platform-server': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0) + '@angular/router': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + '@angular/service-worker': + specifier: ^19.1.0-next.0 + version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@babel/core': + specifier: 7.26.0 + version: 7.26.0 + '@babel/generator': + specifier: 7.26.2 + version: 7.26.2 + '@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.0) + '@babel/plugin-transform-async-generator-functions': + specifier: 7.25.9 + version: 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': + specifier: 7.25.9 + version: 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': + specifier: 7.25.9 + version: 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': + specifier: 7.26.0 + version: 7.26.0(@babel/core@7.26.0) + '@babel/runtime': + specifier: 7.26.0 + version: 7.26.0 + '@bazel/bazelisk': + specifier: 1.24.1 + version: 1.24.1 + '@bazel/buildifier': + specifier: 7.3.1 + version: 7.3.1 + '@bazel/concatjs': + specifier: 5.8.1 + version: 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) + '@bazel/jasmine': + specifier: 5.8.1 + version: 5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0) + '@bazel/rollup': + specifier: ^5.8.1 + version: 5.8.1(rollup@4.28.0) + '@bazel/runfiles': + specifier: ^5.8.1 + version: 5.8.1 + '@discoveryjs/json-ext': + specifier: 0.6.3 + version: 0.6.3 + '@inquirer/confirm': + specifier: 5.0.2 + version: 5.0.2(@types/node@18.19.67) + '@inquirer/prompts': + specifier: 7.1.0 + version: 7.1.0(@types/node@18.19.67) + '@listr2/prompt-adapter-inquirer': + specifier: 2.0.18 + version: 2.0.18(@inquirer/prompts@7.1.0) + '@rollup/plugin-alias': + specifier: ^5.1.1 + version: 5.1.1(rollup@4.28.0) + '@rollup/plugin-commonjs': + specifier: ^28.0.0 + version: 28.0.1(rollup@4.28.0) + '@rollup/plugin-node-resolve': + specifier: ^13.0.5 + version: 13.3.0(rollup@4.28.0) + '@stylistic/eslint-plugin': + specifier: ^2.8.0 + version: 2.11.0(eslint@8.57.0)(typescript@5.7.2) + '@types/babel__core': + specifier: 7.20.5 + version: 7.20.5 + '@types/browser-sync': + specifier: ^2.27.0 + version: 2.29.0 + '@types/express': + specifier: ^4.16.0 + version: 4.17.21 + '@types/http-proxy': + specifier: ^1.17.4 + version: 1.17.15 + '@types/ini': + specifier: ^4.0.0 + version: 4.1.1 + '@types/jasmine': + specifier: ~5.1.0 + version: 5.1.5 + '@types/karma': + specifier: ^6.3.0 + version: 6.3.9 + '@types/less': + specifier: ^3.0.3 + version: 3.0.7 + '@types/loader-utils': + specifier: ^2.0.0 + version: 2.0.6 + '@types/lodash': + specifier: ^4.17.0 + version: 4.17.13 + '@types/node': + specifier: ^18.13.0 + version: 18.19.67 + '@types/npm-package-arg': + specifier: ^6.1.0 + version: 6.1.4 + '@types/pacote': + specifier: ^11.1.3 + version: 11.1.8 + '@types/picomatch': + specifier: ^3.0.0 + version: 3.0.1 + '@types/progress': + specifier: ^2.0.3 + version: 2.0.7 + '@types/resolve': + specifier: ^1.17.1 + version: 1.20.6 + '@types/semver': + specifier: ^7.3.12 + version: 7.5.8 + '@types/shelljs': + specifier: ^0.8.11 + version: 0.8.15 + '@types/watchpack': + specifier: ^2.4.4 + version: 2.4.4 + '@types/yargs': + specifier: ^17.0.20 + version: 17.0.33 + '@types/yargs-parser': + specifier: ^21.0.0 + version: 21.0.3 + '@types/yarnpkg__lockfile': + specifier: ^1.1.5 + version: 1.1.9 + '@typescript-eslint/eslint-plugin': + specifier: 8.17.0 + version: 8.17.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': + specifier: 8.17.0 + version: 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@vitejs/plugin-basic-ssl': + specifier: 1.2.0 + version: 1.2.0(vite@6.0.2) + '@web/test-runner': + specifier: ^0.19.0 + version: 0.19.0 + '@yarnpkg/lockfile': + specifier: 1.1.0 + version: 1.1.0 + 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 + autoprefixer: + specifier: 10.4.20 + version: 10.4.20(postcss@8.4.49) + babel-loader: + specifier: 9.2.1 + version: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1) + beasties: + specifier: 0.1.0 + version: 0.1.0 + browser-sync: + specifier: 3.0.3 + version: 3.0.3(debug@4.3.7) + browserslist: + specifier: ^4.21.5 + version: 4.24.2 + buffer: + specifier: 6.0.3 + version: 6.0.3 + chokidar: + specifier: 4.0.1 + version: 4.0.1 + copy-webpack-plugin: + specifier: 12.0.2 + version: 12.0.2(webpack@5.96.1) + css-loader: + specifier: 7.1.2 + version: 7.1.2(webpack@5.96.1) + debug: + specifier: ^4.1.1 + version: 4.3.7(supports-color@9.4.0) + esbuild: + specifier: 0.24.0 + version: 0.24.0 + esbuild-wasm: + specifier: 0.24.0 + version: 0.24.0 + eslint: + specifier: 8.57.0 + version: 8.57.0 + eslint-config-prettier: + specifier: 9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-plugin-header: + specifier: 3.1.1 + version: 3.1.1(eslint@8.57.0) + eslint-plugin-import: + specifier: 2.31.0 + version: 2.31.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0) + express: + specifier: 4.21.1 + version: 4.21.1 + fast-glob: + specifier: 3.3.2 + version: 3.3.2 + http-proxy: + specifier: ^1.18.1 + version: 1.18.1(debug@4.3.7) + http-proxy-middleware: + specifier: 3.0.3 + version: 3.0.3 + https-proxy-agent: + specifier: 7.0.5 + version: 7.0.5(supports-color@9.4.0) + 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 + jasmine: + specifier: ^5.0.0 + version: 5.5.0 + jasmine-core: + specifier: ~5.5.0 + version: 5.5.0 + 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(debug@4.3.7) + karma-chrome-launcher: + specifier: ~3.2.0 + version: 3.2.0 + karma-coverage: + specifier: ~2.2.0 + version: 2.2.1 + karma-jasmine: + specifier: ~5.1.0 + version: 5.1.0(karma@6.4.4) + karma-jasmine-html-reporter: + specifier: ~2.1.0 + version: 2.1.0(jasmine-core@5.5.0)(karma-jasmine@5.1.0)(karma@6.4.4) + karma-source-map-support: + specifier: 1.4.0 + version: 1.4.0 + less: + specifier: 4.2.1 + version: 4.2.1 + less-loader: + specifier: 12.2.0 + version: 12.2.0(less@4.2.1)(webpack@5.96.1) + license-webpack-plugin: + specifier: 4.0.2 + version: 4.0.2(webpack@5.96.1) + listr2: + specifier: 8.2.5 + version: 8.2.5 + lmdb: + specifier: 3.2.0 + version: 3.2.0 + loader-utils: + specifier: 3.3.1 + version: 3.3.1 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + magic-string: + specifier: 0.30.14 + version: 0.30.14 + mini-css-extract-plugin: + specifier: 2.9.2 + version: 2.9.2(webpack@5.96.1) + mrmime: + specifier: 2.0.0 + version: 2.0.0 + ng-packagr: + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.0)(tslib@2.8.1)(typescript@5.7.2) + npm: + specifier: ^10.8.1 + version: 10.9.1 + npm-package-arg: + specifier: 12.0.0 + version: 12.0.0 + 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 + patch-package: + specifier: ^8.0.0 + version: 8.0.0 + picomatch: + specifier: 4.0.2 + version: 4.0.2 + piscina: + specifier: 4.7.0 + version: 4.7.0 + postcss: + specifier: 8.4.49 + version: 8.4.49 + postcss-loader: + specifier: 8.1.1 + version: 8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.96.1) + prettier: + specifier: ^3.0.0 + version: 3.4.1 + protractor: + specifier: ~7.0.0 + version: 7.0.0 + puppeteer: + specifier: 18.2.1 + version: 18.2.1 + quicktype-core: + specifier: 23.0.170 + version: 23.0.170 + resolve-url-loader: + specifier: 5.0.0 + version: 5.0.0 + rollup: + specifier: 4.28.0 + version: 4.28.0 + rollup-license-plugin: + specifier: ~3.0.1 + version: 3.0.1 + rollup-plugin-sourcemaps: + specifier: ^0.6.0 + version: 0.6.3(@types/node@18.19.67)(rollup@4.28.0) + rxjs: + specifier: 7.8.1 + version: 7.8.1 + sass: + specifier: 1.81.1 + version: 1.81.1 + sass-loader: + specifier: 16.0.3 + version: 16.0.3(sass@1.81.1)(webpack@5.96.1) + semver: + specifier: 7.6.3 + version: 7.6.3 + shelljs: + specifier: ^0.8.5 + version: 0.8.5 + source-map: + specifier: 0.7.4 + version: 0.7.4 + source-map-loader: + specifier: 5.0.0 + version: 5.0.0(webpack@5.96.1) + 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 + terser: + specifier: 5.36.0 + version: 5.36.0 + tree-kill: + specifier: 1.2.2 + version: 1.2.2 + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@types/node@18.19.67)(typescript@5.7.2) + tslib: + specifier: 2.8.1 + version: 2.8.1 + typescript: + specifier: 5.7.2 + version: 5.7.2 + undici: + specifier: 7.0.0 + version: 7.0.0 + unenv: + specifier: ^1.10.0 + version: 1.10.0 + verdaccio: + specifier: 6.0.2 + version: 6.0.2(typanion@3.14.0) + verdaccio-auth-memory: + specifier: ^10.0.0 + version: 10.2.2 + vite: + specifier: 6.0.2 + version: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.81.1)(terser@5.36.0) + watchpack: + specifier: 2.4.2 + version: 2.4.2 + webpack: + specifier: 5.96.1 + version: 5.96.1(esbuild@0.24.0) + webpack-dev-middleware: + specifier: 7.4.2 + version: 7.4.2(webpack@5.96.1) + webpack-dev-server: + specifier: 5.1.0 + version: 5.1.0(debug@4.3.7)(webpack@5.96.1) + webpack-merge: + specifier: 6.0.1 + version: 6.0.1 + webpack-subresource-integrity: + specifier: 5.1.0 + version: 5.1.0(webpack@5.96.1) + yargs: + specifier: 17.7.2 + version: 17.7.2 + yargs-parser: + specifier: 21.1.1 + version: 21.1.1 + zone.js: + specifier: ^0.15.0 + version: 0.15.0 + dependenciesMeta: + esbuild: + built: true + puppeteer: + built: true + +packages: + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@angular-devkit/architect@0.1900.0(chokidar@4.0.1): + resolution: {integrity: sha512-oC2CyKf9olKvthEwp2wmkKw+H9NhpnK9cWYHvajWeCRJ8A4DLaKwfMuZ9lioi92QPourrJzoikgp7C6m2AuuZQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 19.0.0(chokidar@4.0.1) + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/core@19.0.0(chokidar@4.0.1): + resolution: {integrity: sha512-/EJQOKVFb9vsFbPR+57C7fJHFVr7le9Ru6aormIKw24xyZZHtt5X4rwdeN7l6Zkv8F0cJ2EoTSiQoY17090DLQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^4.0.0 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + chokidar: 4.0.1 + jsonc-parser: 3.3.1 + picomatch: 4.0.2 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + + /@angular/animations@19.1.0-next.0(@angular/core@19.1.0-next.0): + resolution: {integrity: sha512-tVixJSU9J4B+m/mMC6yS+6m5PtaOfltrtT0fw92XM2zA0sVeS4d9+DiewkdMU9wwYwUdMfJEf+jXe7N1rOUtHQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 19.1.0-next.0 + dependencies: + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + tslib: 2.8.1 + dev: true + + /@angular/benchpress@0.3.0(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-ApxoY5lTj1S0QFLdq5ZdTfdkIds1m3tma9EJOZpNVHRU9eCj2D/5+VFb5tlWsv9NHQ2S0XXkJjauFOAdfzT8uw==} + dependencies: + '@angular/core': 14.3.0(rxjs@7.8.1)(zone.js@0.15.0) + reflect-metadata: 0.1.14 + transitivePeerDependencies: + - rxjs + - zone.js + dev: true + + /@angular/build@19.0.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.36.0)(typescript@5.7.2): + resolution: {integrity: sha512-OLyUwAVCSqW589l19g19aP2O1NpBMRPsqKmYLaTYvYSIcZkNRJPxOcsCIDGB3FUQUEjpouYtzPA3RtBuJWsCwQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler': ^19.0.0 + '@angular/compiler-cli': ^19.0.0 + '@angular/localize': ^19.0.0 + '@angular/platform-server': ^19.0.0 + '@angular/service-worker': ^19.0.0 + '@angular/ssr': ^19.0.0 + less: ^4.2.0 + postcss: ^8.4.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: 5.7.2 + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + '@angular/ssr': + optional: true + less: + optional: true + postcss: + optional: true + tailwindcss: + optional: true + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.1900.0(chokidar@4.0.1) + '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@angular/localize': 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0) + '@angular/platform-server': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0) + '@angular/service-worker': 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@babel/core': 7.26.0 + '@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/core@7.26.0) + '@inquirer/confirm': 5.0.2(@types/node@18.19.67) + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.11) + beasties: 0.1.0 + browserslist: 4.24.2 + esbuild: 0.24.0 + fast-glob: 3.3.2 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + istanbul-lib-instrument: 6.0.3 + less: 4.2.1 + listr2: 8.2.5 + magic-string: 0.30.12 + mrmime: 2.0.0 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 4.0.2 + piscina: 4.7.0 + postcss: 8.4.49 + rollup: 4.26.0 + sass: 1.80.7 + semver: 7.6.3 + typescript: 5.7.2 + vite: 5.4.11(@types/node@18.19.67)(less@4.2.1)(sass@1.80.7)(terser@5.36.0) + watchpack: 2.4.2 + optionalDependencies: + lmdb: 3.1.5 + transitivePeerDependencies: + - '@types/node' + - chokidar + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true + + /@angular/cdk@19.0.1(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(rxjs@7.8.1): + resolution: {integrity: sha512-dIqYBQISvxlpXIU10625rURPjniQV1emXbFF6wAEE48iqx9mm9WZ11KZU4heqA3qp/betZYcVY2Hwc7fLKp4Uw==} + peerDependencies: + '@angular/common': ^19.0.0 || ^20.0.0 + '@angular/core': ^19.0.0 || ^20.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + rxjs: 7.8.1 + tslib: 2.8.1 + optionalDependencies: + parse5: 7.2.1 + dev: true + + /@angular/common@19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1): + resolution: {integrity: sha512-CiBL2qJ5hYAuIwjJ/jzBM8J+5SRktzetd8DHKKPgsZsU4xIvaKLfF+lDBWBMIewNJwyUdL517RJRzzRcd7NzFg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 19.1.0-next.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + rxjs: 7.8.1 + tslib: 2.8.1 + dev: true + + /@angular/compiler-cli@19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2): + resolution: {integrity: sha512-vr4ZBImO+1fIbm+X6Mvfutje7Aw5gNOykkTYnTOroguB4lCUsG/xqdQHVpJXE+B56pg/uXqWMyF8SD3MZhEp5g==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + hasBin: true + peerDependencies: + '@angular/compiler': 19.1.0-next.0 + typescript: 5.7.2 + dependencies: + '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@babel/core': 7.26.0 + '@jridgewell/sourcemap-codec': 1.5.0 + chokidar: 4.0.1 + convert-source-map: 1.9.0 + reflect-metadata: 0.2.2 + semver: 7.6.3 + tslib: 2.8.1 + typescript: 5.7.2 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@angular/compiler@19.1.0-next.0(@angular/core@19.1.0-next.0): + resolution: {integrity: sha512-IJWMyzchAbvaeGLJlLhQpEzjQOsge4/hWs1ONzW98AzqeTtO3L7Bx9hch45egqX/UvrOhQKCYj6YaNJwmN/j3Q==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 19.1.0-next.0 + peerDependenciesMeta: + '@angular/core': + optional: true + dependencies: + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + tslib: 2.8.1 + dev: true + + /@angular/core@14.3.0(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-wYiwItc0Uyn4FWZ/OAx/Ubp2/WrD3EgUJ476y1XI7yATGPF8n9Ld5iCXT08HOvc4eBcYlDfh90kTXR6/MfhzdQ==} + engines: {node: ^14.15.0 || >=16.10.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.11.4 || ~0.12.0 + dependencies: + rxjs: 7.8.1 + tslib: 2.8.1 + zone.js: 0.15.0 + dev: true + + /@angular/core@19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-EyFu4Jki1QCzn/jqEoOZokwRyYyR4HABxbJIkxdiXVv/UaCYCZIRwCOjNAD0kmmFU0btm5UVJtoXSrTo3mQBBg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.15.0 + dependencies: + rxjs: 7.8.1 + tslib: 2.8.1 + zone.js: 0.15.0 + dev: true + + /@angular/forms@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1): + resolution: {integrity: sha512-y7KOkQ7M2QgYgvzEhHy5DP4vBuXYOMf0lMXFxe70JADT75s15iBid+VWX9hx6ZBYBGfdXpwSFss1SQwGz/ZHIA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/common': 19.1.0-next.0 + '@angular/core': 19.1.0-next.0 + '@angular/platform-browser': 19.1.0-next.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + rxjs: 7.8.1 + tslib: 2.8.1 + dev: true + + /@angular/localize@19.1.0-next.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0): + resolution: {integrity: sha512-Md5XmZAQcRLXW3cxCO6Ks31pRbR+NQZHczdrK2MDjbv2Tp7VwaM042E89rxEYLYDsSfLyeCRvkapKHtAFNXkRg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + hasBin: true + peerDependencies: + '@angular/compiler': 19.1.0-next.0 + '@angular/compiler-cli': 19.1.0-next.0 + dependencies: + '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@babel/core': 7.26.0 + '@types/babel__core': 7.20.5 + fast-glob: 3.3.2 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@angular/material@19.0.1(@angular/animations@19.1.0-next.0)(@angular/cdk@19.0.1)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/forms@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1): + resolution: {integrity: sha512-pAZ+cgBUAJjXmwAY4u1NXuxcxJKHts0s7ZNpf6JGUu+yWArLOc/BwFTDO9Htzz2E82eMH417d1ny4fpYwdgIZg==} + peerDependencies: + '@angular/animations': ^19.0.0 || ^20.0.0 + '@angular/cdk': 19.0.1 + '@angular/common': ^19.0.0 || ^20.0.0 + '@angular/core': ^19.0.0 || ^20.0.0 + '@angular/forms': ^19.0.0 || ^20.0.0 + '@angular/platform-browser': ^19.0.0 || ^20.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/animations': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/cdk': 19.0.1(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/forms': 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + rxjs: 7.8.1 + tslib: 2.8.1 + dev: true + + /@angular/platform-browser-dynamic@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0): + resolution: {integrity: sha512-9+fcYtqWq3kwx8tIGSVnxHU9SX8wvJbKlD+9x73YCKstMjw3izSXVSDPGKY1JSdqne2L8PNafqOBGgE70Bk//A==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/common': 19.1.0-next.0 + '@angular/compiler': 19.1.0-next.0 + '@angular/core': 19.1.0-next.0 + '@angular/platform-browser': 19.1.0-next.0 + dependencies: + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + tslib: 2.8.1 + dev: true + + /@angular/platform-browser@19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0): + resolution: {integrity: sha512-SquzOLqNdAcW6ugLApMBMeGEjHGgVsua/jEYsKqVWSCG+kLm8I1pwVJDUWP/B4GnBK0P/38fsL9PPzY5gjpohA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/animations': 19.1.0-next.0 + '@angular/common': 19.1.0-next.0 + '@angular/core': 19.1.0-next.0 + peerDependenciesMeta: + '@angular/animations': + optional: true + dependencies: + '@angular/animations': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + tslib: 2.8.1 + dev: true + + /@angular/platform-server@19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0): + resolution: {integrity: sha512-SeT56d9dLcf6Tzq5fN3oQep3o5Q5qHgBLtLbkWtZqW1pV+nE8cM9lYcu2TGxrcLDBsFeq+/RS0Yenv6BeyjszA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/animations': 19.1.0-next.0 + '@angular/common': 19.1.0-next.0 + '@angular/compiler': 19.1.0-next.0 + '@angular/core': 19.1.0-next.0 + '@angular/platform-browser': 19.1.0-next.0 + dependencies: + '@angular/animations': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + tslib: 2.8.1 + xhr2: 0.2.1 + dev: true + + /@angular/router@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1): + resolution: {integrity: sha512-ijnBqLcvqA5JmBFN4hM8r9DzkjRRtU77l+gPK9qCOurhVnh1bHAZBTO/idNjXTFEgz+qd9Pa9/uAKBFssdOQwA==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/common': 19.1.0-next.0 + '@angular/core': 19.1.0-next.0 + '@angular/platform-browser': 19.1.0-next.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + rxjs: 7.8.1 + tslib: 2.8.1 + dev: true + + /@angular/service-worker@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0): + resolution: {integrity: sha512-2Yp67xzcEvroSrqJf7pRC9FjvoLM3XtlLyUfnXELRxGa+Nh68ZgFJw1ii7iA8f+7j/QseM4IdwcjuSTjutwsTw==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + hasBin: true + peerDependencies: + '@angular/common': 19.1.0-next.0 + '@angular/core': 19.1.0-next.0 + dependencies: + '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + tslib: 2.8.1 + dev: true + + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: true + + /@babel/compat-data@7.26.2: + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.26.0: + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7(supports-color@9.4.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + dev: true + + /@babel/helper-annotate-as-pure@7.25.9: + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.25.9: + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-compilation-targets@7.25.9: + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0): + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.7(supports-color@9.4.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.25.9: + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression@7.25.9: + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@babel/helper-plugin-utils@7.25.9: + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access@7.25.9: + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.25.9: + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function@7.25.9: + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers@7.26.0: + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + dev: true + + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.26.0): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + dev: true + + /@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + dev: true + + /@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: true + + /@babel/preset-env@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 + esutils: 2.0.3 + dev: true + + /@babel/runtime@7.26.0: + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: true + + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + dev: true + + /@babel/traverse@7.25.9: + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7(supports-color@9.4.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.26.0: + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: true + + /@bazel/bazelisk@1.24.1: + resolution: {integrity: sha512-1lJPcMtTVgEVR6E7CUNM5vaM2nr0fbRMYNy4RYXZsNZce7BhFCoiXPgFsVZFXNO00xNp5b0cpZTtqmUYdQlfWQ==} + hasBin: true + dev: true + + /@bazel/buildifier@6.3.3: + resolution: {integrity: sha512-0f5eNWhylZQbiTddfVkIXKkugQadzZdonLw4ur58oK4X+gIHOZ42Xv94sepu8Di9UWKFXNc4zxuuTiWM22hGvw==} + hasBin: true + dev: true + + /@bazel/buildifier@7.3.1: + resolution: {integrity: sha512-qhSjryLo2uHeib/uLc8Yeh6SBisqdf9pPO79QPlyNO3Apc4g9J1Tir/52VdOo9czHTgSasbtOjfWJCPzMoCSIA==} + hasBin: true + dev: true + + /@bazel/concatjs@5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2): + resolution: {integrity: sha512-TkARsNUxgi3bjFeGwIGlffmQglNhuR9qK9uE7uKhdBZvQE5caAWVCjYiMTzo3viKDhwKn5QNRcHY5huuJMVFfA==} + hasBin: true + peerDependencies: + karma: '>=4.0.0' + karma-chrome-launcher: '>=2.0.0' + karma-firefox-launcher: '>=1.0.0' + karma-jasmine: '>=2.0.0' + karma-junit-reporter: '>=2.0.0' + karma-requirejs: '>=1.0.0' + karma-sourcemap-loader: '>=0.3.0' + dependencies: + karma: 6.4.4(debug@4.3.7) + karma-chrome-launcher: 3.2.0 + karma-firefox-launcher: 2.1.3 + karma-jasmine: 5.1.0(karma@6.4.4) + karma-junit-reporter: 2.0.1(karma@6.4.4) + karma-requirejs: 1.1.0(karma@6.4.4)(requirejs@2.3.7) + karma-sourcemap-loader: 0.4.0 + protobufjs: 6.8.8 + source-map-support: 0.5.9 + tsutils: 3.21.0(typescript@5.7.2) + transitivePeerDependencies: + - typescript + dev: true + + /@bazel/esbuild@5.8.1: + resolution: {integrity: sha512-8k4LL8P3ivCnFeBOcjiFxL8U+M5VtEGuOyIqm2hfEiP8xDWsZLS7YQ7KhshKJy7Elh2dlK9oGgMtl0D/x9kxxg==} + dev: true + + /@bazel/jasmine@5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0): + resolution: {integrity: sha512-052veW5EbJRH+5hL4l9Sf99bTmdKQ5WXXMF0QiBOZcA3ZHYMAaKfYNO+brutiWoX6FrBloiskLrMzF8OiHBqyw==} + hasBin: true + peerDependencies: + jasmine: '>=2.99.0' + jasmine-core: '>=2.99.0' + dependencies: + c8: 7.5.0 + jasmine: 5.5.0 + jasmine-core: 5.5.0 + jasmine-reporters: 2.5.2 + dev: true + + /@bazel/protractor@5.8.1(protractor@7.0.0): + resolution: {integrity: sha512-6JpP4uQLVRu3m0GrpexDjICKK8YJW/9voc8rZFQxVf3sm8yNjapUVN/b/PBAwua+nDY3uMe3W9aHgStZFOST0A==} + peerDependencies: + protractor: '>=5.0.0' + dependencies: + protractor: 7.0.0 + dev: true + + /@bazel/rollup@5.8.1(rollup@4.28.0): + resolution: {integrity: sha512-Ys+UWbRp1TY2j+z15N+SZgID/nuqAtJTgJDsz0NZVjm8F8KzmgXxLDnBb/cUKFVk83pNOAi84G/bq1tINjMSNA==} + hasBin: true + peerDependencies: + rollup: '>=2.3.0 <3.0.0' + dependencies: + '@bazel/worker': 5.8.1 + rollup: 4.28.0 + dev: true + + /@bazel/runfiles@5.8.1: + resolution: {integrity: sha512-NDdfpdQ6rZlylgv++iMn5FkObC/QlBQvipinGLSOguTYpRywmieOyJ29XHvUilspwTFSILWpoE9CqMGkHXug1g==} + dev: true + + /@bazel/runfiles@6.3.1: + resolution: {integrity: sha512-1uLNT5NZsUVIGS4syuHwTzZ8HycMPyr6POA3FCE4GbMtc4rhoJk8aZKtNIRthJYfL+iioppi+rTfH3olMPr9nA==} + dev: true + + /@bazel/terser@5.8.1(terser@5.36.0): + resolution: {integrity: sha512-TPjSDhw1pSZt9P2hd/22IJwl8KCZiJL+u2gB5mghBTCFDVdC5Dgsx135pFtvlqc6LjjOvd3s6dzcQr0YJo2HSg==} + hasBin: true + peerDependencies: + terser: '>=4.0.0 <5.9.0' + dependencies: + terser: 5.36.0 + dev: true + + /@bazel/typescript@5.8.1(typescript@5.7.2): + resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} + hasBin: true + peerDependencies: + typescript: 5.7.2 + dependencies: + '@bazel/worker': 5.8.1 + semver: 5.6.0 + source-map-support: 0.5.9 + tsutils: 3.21.0(typescript@5.7.2) + typescript: 5.7.2 + dev: true + + /@bazel/worker@5.8.1: + resolution: {integrity: sha512-GMyZSNW3F34f9GjbJqvs1aHyed5BNrNeiDzNJhC1fIizo/UeBM21oBBONIYLBDoBtq936U85VyPZ76JaP/83hw==} + dependencies: + google-protobuf: 3.21.4 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@cypress/request@3.0.5: + resolution: {integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==} + engines: {node: '>= 6'} + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 4.0.1 + http-signature: 1.4.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.13.0 + safe-buffer: 5.2.1 + tough-cookie: 4.1.4 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + dev: true + + /@discoveryjs/json-ext@0.6.3: + resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} + engines: {node: '>=14.17.0'} + dev: true + + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + dev: true + optional: true + + /@esbuild/aix-ppc64@0.24.0: + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + dev: true + optional: true + + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + dev: true + optional: true + + /@esbuild/android-arm64@0.24.0: + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + dev: true + optional: true + + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + dev: true + optional: true + + /@esbuild/android-arm@0.24.0: + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + dev: true + optional: true + + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + dev: true + optional: true + + /@esbuild/android-x64@0.24.0: + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + dev: true + optional: true + + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@esbuild/darwin-arm64@0.24.0: + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@esbuild/darwin-x64@0.24.0: + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.24.0: + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + dev: true + optional: true + + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + + /@esbuild/freebsd-x64@0.24.0: + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-arm64@0.24.0: + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-arm@0.24.0: + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-ia32@0.24.0: + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-loong64@0.24.0: + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-mips64el@0.24.0: + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-ppc64@0.24.0: + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-riscv64@0.24.0: + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-s390x@0.24.0: + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@esbuild/linux-x64@0.24.0: + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + dev: true + optional: true + + /@esbuild/netbsd-x64@0.24.0: + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + dev: true + optional: true + + /@esbuild/openbsd-arm64@0.24.0: + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + dev: true + optional: true + + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + dev: true + optional: true + + /@esbuild/openbsd-x64@0.24.0: + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + dev: true + optional: true + + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + dev: true + optional: true + + /@esbuild/sunos-x64@0.24.0: + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + dev: true + optional: true + + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + dev: true + optional: true + + /@esbuild/win32-arm64@0.24.0: + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + dev: true + optional: true + + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + dev: true + optional: true + + /@esbuild/win32-ia32@0.24.0: + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + dev: true + optional: true + + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@esbuild/win32-x64@0.24.0: + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.1(eslint@8.57.0): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.7(supports-color@9.4.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@glideapps/ts-necessities@2.2.3: + resolution: {integrity: sha512-gXi0awOZLHk3TbW55GZLCPP6O+y/b5X1pBXKBVckFONSwF1z1E5ND2BGJsghQFah+pW7pkkyFb2VhUQI2qhL5w==} + dev: true + + /@google-cloud/common@5.0.2(supports-color@9.4.0): + resolution: {integrity: sha512-V7bmBKYQyu0eVG2BFejuUjlBt+zrya6vtsKdY+JxMM/dNntPF41vZ9+LhOshEUH01zOHEqBSvI7Dad7ZS6aUeA==} + engines: {node: '>=14.0.0'} + dependencies: + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + arrify: 2.0.1 + duplexify: 4.1.3 + extend: 3.0.2 + google-auth-library: 9.15.0(supports-color@9.4.0) + html-entities: 2.5.2 + retry-request: 7.0.2(supports-color@9.4.0) + teeny-request: 9.0.0(supports-color@9.4.0) + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@google-cloud/precise-date@4.0.0: + resolution: {integrity: sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==} + engines: {node: '>=14.0.0'} + dev: true + + /@google-cloud/projectify@4.0.0: + resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} + engines: {node: '>=14.0.0'} + dev: true + + /@google-cloud/promisify@4.0.0: + resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} + engines: {node: '>=14'} + dev: true + + /@google-cloud/spanner@7.16.0(supports-color@9.4.0): + resolution: {integrity: sha512-9/rQau/WNgM1Zle9sEJm6jUp1l4sbHtiHGcktQnQc2LPs5EjMMg9eYaP4UfWgDzoxny+3hyKTyhBbAzHR8pQGA==} + engines: {node: '>=14.0.0'} + dependencies: + '@google-cloud/common': 5.0.2(supports-color@9.4.0) + '@google-cloud/precise-date': 4.0.0 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + '@grpc/proto-loader': 0.7.13 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + '@types/big.js': 6.2.2 + '@types/stack-trace': 0.0.33 + arrify: 2.0.1 + big.js: 6.2.2 + checkpoint-stream: 0.1.2 + duplexify: 4.1.3 + events-intercept: 2.0.0 + extend: 3.0.2 + google-auth-library: 9.15.0(supports-color@9.4.0) + google-gax: 4.4.1(supports-color@9.4.0) + grpc-gcp: 1.0.1 + is: 3.3.0 + lodash.snakecase: 4.1.1 + merge-stream: 2.0.0 + p-queue: 6.6.2 + protobufjs: 7.4.0 + retry-request: 7.0.2(supports-color@9.4.0) + split-array-stream: 2.0.0 + stack-trace: 0.0.10 + stream-events: 1.0.5 + teeny-request: 9.0.0(supports-color@9.4.0) + through2: 4.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@grpc/grpc-js@1.12.3: + resolution: {integrity: sha512-iaxAZnANdCwMNpJlyhkI1W1jQZIDZKFNtU2OpQDdgd+pBcU3t7G+PT7svobkW4WSZTdis+CVV6y8KIwu83HDYQ==} + engines: {node: '>=12.10.0'} + dependencies: + '@grpc/proto-loader': 0.7.13 + '@js-sdsl/ordered-map': 4.4.2 + dev: true + + /@grpc/proto-loader@0.7.13: + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.4.0 + yargs: 17.7.2 + dev: true + + /@hapi/bourne@3.0.0: + resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7(supports-color@9.4.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true + + /@inquirer/checkbox@4.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-+gznPl8ip8P8HYHYecDtUtdsh1t2jvb+sWCD72GAiZ9m45RqwrLmReDaqdC0umQfamtFXVRoMVJ2/qINKGm9Tg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + dev: true + + /@inquirer/confirm@5.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + dev: true + + /@inquirer/core@10.1.0(@types/node@18.19.67): + resolution: {integrity: sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==} + engines: {node: '>=18'} + dependencies: + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@18.19.67) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@inquirer/editor@4.1.0(@types/node@18.19.67): + resolution: {integrity: sha512-K1gGWsxEqO23tVdp5MT3H799OZ4ER1za7Dlc8F4um0W7lwSv0KGR/YyrUEyimj0g7dXZd8XknM/5QA2/Uy+TbA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + external-editor: 3.1.0 + dev: true + + /@inquirer/expand@4.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-WdgCX1cUtinz+syKyZdJomovULYlKUWZbVYZzhf+ZeeYf4htAQ3jLymoNs3koIAKfZZl3HUBb819ClCBfyznaw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + yoctocolors-cjs: 2.1.2 + dev: true + + /@inquirer/figures@1.0.8: + resolution: {integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==} + engines: {node: '>=18'} + dev: true + + /@inquirer/input@4.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-yCLCraigU085EcdpIVEDgyfGv4vBiE4I+k1qRkc9C5dMjWF42ADMGy1RFU94+eZlz4YlkmFsiyHZy0W1wdhaNg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + dev: true + + /@inquirer/number@3.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-MKQhYofdUNk7eqJtz52KvM1dH6R93OMrqHduXCvuefKrsiMjHiMwjc3NZw5Imm2nqY7gWd9xdhYrtcHMJQZUxA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + dev: true + + /@inquirer/password@4.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-tQXGSu7IO07gsYlGy3VgXRVsbOWqFBMbqAUrJSc1PDTQQ5Qdm+QVwkP0OC0jnUZ62D19iPgXOMO+tnWG+HhjNQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + ansi-escapes: 4.3.2 + dev: true + + /@inquirer/prompts@7.1.0(@types/node@18.19.67): + resolution: {integrity: sha512-5U/XiVRH2pp1X6gpNAjWOglMf38/Ys522ncEHIKT1voRUvSj/DQnR22OVxHnwu5S+rCFaUiPQ57JOtMFQayqYA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/checkbox': 4.0.2(@types/node@18.19.67) + '@inquirer/confirm': 5.0.2(@types/node@18.19.67) + '@inquirer/editor': 4.1.0(@types/node@18.19.67) + '@inquirer/expand': 4.0.2(@types/node@18.19.67) + '@inquirer/input': 4.0.2(@types/node@18.19.67) + '@inquirer/number': 3.0.2(@types/node@18.19.67) + '@inquirer/password': 4.0.2(@types/node@18.19.67) + '@inquirer/rawlist': 4.0.2(@types/node@18.19.67) + '@inquirer/search': 3.0.2(@types/node@18.19.67) + '@inquirer/select': 4.0.2(@types/node@18.19.67) + '@types/node': 18.19.67 + dev: true + + /@inquirer/rawlist@4.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-3XGcskMoVF8H0Dl1S5TSZ3rMPPBWXRcM0VeNVsS4ByWeWjSeb0lPqfnBg6N7T0608I1B2bSVnbi2cwCrmOD1Yw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + yoctocolors-cjs: 2.1.2 + dev: true + + /@inquirer/search@3.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-Zv4FC7w4dJ13BOJfKRQCICQfShinGjb1bCEIHxTSnjj2telu3+3RHwHubPG9HyD4aix5s+lyAMEK/wSFD75HLA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + yoctocolors-cjs: 2.1.2 + dev: true + + /@inquirer/select@4.0.2(@types/node@18.19.67): + resolution: {integrity: sha512-uSWUzaSYAEj0hlzxa1mUB6VqrKaYx0QxGBLZzU4xWFxaSyGaXxsSE4OSOwdU24j0xl8OajgayqFXW0l2bkl2kg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + dev: true + + /@inquirer/type@1.5.5: + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + dependencies: + mute-stream: 1.0.0 + dev: true + + /@inquirer/type@3.0.1(@types/node@18.19.67): + resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@types/node': 18.19.67 + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@isaacs/fs-minipass@4.0.1: + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + dependencies: + minipass: 7.1.2 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /@js-sdsl/ordered-map@4.4.2: + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + dev: true + + /@jsonjoy.com/base64@1.1.2(tslib@2.8.1): + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + + /@jsonjoy.com/json-pack@1.1.0(tslib@2.8.1): + resolution: {integrity: sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.8.1) + tslib: 2.8.1 + dev: true + + /@jsonjoy.com/util@1.5.0(tslib@2.8.1): + resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + dev: true + + /@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.1.0): + resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@inquirer/prompts': '>= 3 < 8' + dependencies: + '@inquirer/prompts': 7.1.0(@types/node@18.19.67) + '@inquirer/type': 1.5.5 + dev: true + + /@lmdb/lmdb-darwin-arm64@3.1.5: + resolution: {integrity: sha512-ue5PSOzHMCIYrfvPP/MRS6hsKKLzqqhcdAvJCO8uFlDdj598EhgnacuOTuqA6uBK5rgiZXfDWyb7DVZSiBKxBA==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@lmdb/lmdb-darwin-arm64@3.2.0: + resolution: {integrity: sha512-Ca5N6DGDlH/lIycMj2U3FtokNPdUmGyL+htto3G+gexoXYaDE9cbojVgwXd3/Zih9Friqh7l5qZk+LZEVDwJvQ==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@lmdb/lmdb-darwin-x64@3.1.5: + resolution: {integrity: sha512-CGhsb0R5vE6mMNCoSfxHFD8QTvBHM51gs4DBeigTYHWnYv2V5YpJkC4rMo5qAAFifuUcc0+a8a3SIU0c9NrfNw==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@lmdb/lmdb-darwin-x64@3.2.0: + resolution: {integrity: sha512-s/MXLuRXxJjQpg0aM/yN3FJh34tqEPo6Zg+FJvc9+gUNpzXzZwBB9MOTYA05WVrvxwtIKxMg7ocLjAH1LQUT3A==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@lmdb/lmdb-linux-arm64@3.1.5: + resolution: {integrity: sha512-LAjaoOcBHGj6fiYB8ureiqPoph4eygbXu4vcOF+hsxiY74n8ilA7rJMmGUT0K0JOB5lmRQHSmor3mytRjS4qeQ==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@lmdb/lmdb-linux-arm64@3.2.0: + resolution: {integrity: sha512-XRkaZok4AkzMXKLfsdJYVBXYJ/6idDpuLIPGiVjelxKLbZIKB7F+Xp2BDfeelAPdjRbW/qhzF7FNA0u1blz/Og==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@lmdb/lmdb-linux-arm@3.1.5: + resolution: {integrity: sha512-3WeW328DN+xB5PZdhSWmqE+t3+44xWXEbqQ+caWJEZfOFdLp9yklBZEbVqVdqzznkoaXJYxTCp996KD6HmANeg==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@lmdb/lmdb-linux-arm@3.2.0: + resolution: {integrity: sha512-e9pljI8rZk1UAaDdi7sGiY0zkqsNAS3a4llOuk2UslAH4UP9vGZfjfCR5D+HKPUPbSEk28adOiNmIUT4N2lTBw==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@lmdb/lmdb-linux-x64@3.1.5: + resolution: {integrity: sha512-k/IklElP70qdCXOQixclSl2GPLFiopynGoKX1FqDd1/H0E3Fo1oPwjY2rEVu+0nS3AOw1sryStdXk8CW3cVIsw==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@lmdb/lmdb-linux-x64@3.2.0: + resolution: {integrity: sha512-c8HMb044qzMT/wvk4HzBesRv3wQNeFkUFz6laH3FKVs0+ztM7snuT3izPWdeYhgCLkAiIqshqlcbvzQfPDeg2Q==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@lmdb/lmdb-win32-x64@3.1.5: + resolution: {integrity: sha512-KYar6W8nraZfSJspcK7Kp7hdj238X/FNauYbZyrqPBrtsXI1hvI4/KcRcRGP50aQoV7fkKDyJERlrQGMGTZUsA==} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@lmdb/lmdb-win32-x64@3.2.0: + resolution: {integrity: sha512-xcrdSOPtpZ4ScWJM2x4g+eWCOctINOcaEWGSvZbmXPFD69SAFywyhqNsB3snAY3assYV0B52PWmiAwXWfijd+g==} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@microsoft/api-extractor-model@7.30.0(@types/node@18.19.67): + resolution: {integrity: sha512-26/LJZBrsWDKAkOWRiQbdVgcfd1F3nyJnAiJzsAgpouPk7LtOIj7PK9aJtBaw/pUXrkotEg27RrT+Jm/q0bbug==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.0(@types/node@18.19.67) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.48.0(@types/node@18.19.67): + resolution: {integrity: sha512-FMFgPjoilMUWeZXqYRlJ3gCVRhB7WU/HN88n8OLqEsmsG4zBdX/KQdtJfhq95LQTQ++zfu0Em1LLb73NqRCLYQ==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.30.0(@types/node@18.19.67) + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.0(@types/node@18.19.67) + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.3(@types/node@18.19.67) + '@rushstack/ts-command-line': 4.23.1(@types/node@18.19.67) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.7.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config@0.17.1: + resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + ajv: 8.12.0 + jju: 1.4.0 + resolve: 1.22.8 + dev: true + + /@microsoft/tsdoc@0.15.1: + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + dev: true + + /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3: + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3: + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3: + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3: + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3: + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3: + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@napi-rs/nice-android-arm-eabi@1.0.1: + resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + dev: true + optional: true + + /@napi-rs/nice-android-arm64@1.0.1: + resolution: {integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + dev: true + optional: true + + /@napi-rs/nice-darwin-arm64@1.0.1: + resolution: {integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@napi-rs/nice-darwin-x64@1.0.1: + resolution: {integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@napi-rs/nice-freebsd-x64@1.0.1: + resolution: {integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + + /@napi-rs/nice-linux-arm-gnueabihf@1.0.1: + resolution: {integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-arm64-gnu@1.0.1: + resolution: {integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-arm64-musl@1.0.1: + resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-ppc64-gnu@1.0.1: + resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-riscv64-gnu@1.0.1: + resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-s390x-gnu@1.0.1: + resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-x64-gnu@1.0.1: + resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-linux-x64-musl@1.0.1: + resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@napi-rs/nice-win32-arm64-msvc@1.0.1: + resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + dev: true + optional: true + + /@napi-rs/nice-win32-ia32-msvc@1.0.1: + resolution: {integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + dev: true + optional: true + + /@napi-rs/nice-win32-x64-msvc@1.0.1: + resolution: {integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@napi-rs/nice@1.0.1: + resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} + engines: {node: '>= 10'} + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.0.1 + '@napi-rs/nice-android-arm64': 1.0.1 + '@napi-rs/nice-darwin-arm64': 1.0.1 + '@napi-rs/nice-darwin-x64': 1.0.1 + '@napi-rs/nice-freebsd-x64': 1.0.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.0.1 + '@napi-rs/nice-linux-arm64-gnu': 1.0.1 + '@napi-rs/nice-linux-arm64-musl': 1.0.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.0.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.0.1 + '@napi-rs/nice-linux-s390x-gnu': 1.0.1 + '@napi-rs/nice-linux-x64-gnu': 1.0.1 + '@napi-rs/nice-linux-x64-musl': 1.0.1 + '@napi-rs/nice-win32-arm64-msvc': 1.0.1 + '@napi-rs/nice-win32-ia32-msvc': 1.0.1 + '@napi-rs/nice-win32-x64-msvc': 1.0.1 + dev: true + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@npmcli/agent@2.2.2: + resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/agent@3.0.0: + resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/fs@3.1.1: + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.6.3 + dev: true + + /@npmcli/fs@4.0.0: + resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + semver: 7.6.3 + dev: true + + /@npmcli/git@6.0.1: + resolution: {integrity: sha512-BBWMMxeQzalmKadyimwb2/VVQyJB01PH0HhVSNLHNBDZN/M/h/02P6f8fxedIiFhpMj11SO9Ep5tKTBE7zL2nw==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@npmcli/promise-spawn': 8.0.2 + ini: 5.0.0 + lru-cache: 10.4.3 + npm-pick-manifest: 10.0.0 + proc-log: 5.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.3 + which: 5.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents@3.0.0: + resolution: {integrity: sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + dependencies: + npm-bundled: 4.0.0 + npm-normalize-package-bin: 4.0.0 + dev: true + + /@npmcli/node-gyp@4.0.0: + resolution: {integrity: sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /@npmcli/package-json@6.1.0: + resolution: {integrity: sha512-t6G+6ZInT4X+tqj2i+wlLIeCKnKOTuz9/VFYDtj+TGTur5q7sp/OYrQA19LdBbWfXDOi0Y4jtedV6xtB8zQ9ug==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@npmcli/git': 6.0.1 + glob: 10.4.5 + hosted-git-info: 8.0.2 + json-parse-even-better-errors: 4.0.0 + normalize-package-data: 7.0.0 + proc-log: 5.0.0 + semver: 7.6.3 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@8.0.2: + resolution: {integrity: sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + which: 5.0.0 + dev: true + + /@npmcli/redact@3.0.0: + resolution: {integrity: sha512-/1uFzjVcfzqrgCeGW7+SZ4hv0qLWmKXVzFahZGJ6QuJBj6Myt9s17+JL86i76NV9YSnJRcGXJYQbAU0rn1YTCQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /@npmcli/run-script@9.0.1: + resolution: {integrity: sha512-q9C0uHrb6B6cm3qXVM32UmpqTKuFGbtP23O2K5sLvPMz2hilKd0ptqGXSpuunOuOmPQb/aT5F/kCXFc1P2gO/A==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@npmcli/node-gyp': 4.0.0 + '@npmcli/package-json': 6.1.0 + '@npmcli/promise-spawn': 8.0.2 + node-gyp: 10.3.1 + proc-log: 5.0.0 + which: 5.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@octokit/auth-token@5.1.1: + resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} + engines: {node: '>= 18'} + dev: true + + /@octokit/core@6.1.2: + resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==} + engines: {node: '>= 18'} + dependencies: + '@octokit/auth-token': 5.1.1 + '@octokit/graphql': 8.1.1 + '@octokit/request': 9.1.3 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.2 + dev: true + + /@octokit/endpoint@10.1.1: + resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + dev: true + + /@octokit/graphql@8.1.1: + resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==} + engines: {node: '>= 18'} + dependencies: + '@octokit/request': 9.1.3 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + dev: true + + /@octokit/openapi-types@22.2.0: + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + dev: true + + /@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.2): + resolution: {integrity: sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.2 + dev: true + + /@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2): + resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + dependencies: + '@octokit/core': 6.1.2 + dev: true + + /@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2): + resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.2 + dev: true + + /@octokit/request-error@6.1.5: + resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 13.6.2 + dev: true + + /@octokit/request@9.1.3: + resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==} + engines: {node: '>= 18'} + dependencies: + '@octokit/endpoint': 10.1.1 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + dev: true + + /@octokit/rest@21.0.2: + resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/core': 6.1.2 + '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2) + '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2) + dev: true + + /@octokit/types@13.6.2: + resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + dependencies: + '@octokit/openapi-types': 22.2.0 + dev: true + + /@opentelemetry/api@1.9.0: + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + dev: true + + /@opentelemetry/context-async-hooks@1.28.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-igcl4Ve+F1N2063PJUkesk/GkYyuGIWinYkSyAFTnIj3gzrOgvOA4k747XNdL47HRRL1w/qh7UW8NDuxOLvKFA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + dev: true + + /@opentelemetry/semantic-conventions@1.28.0: + resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} + engines: {node: '>=14'} + dev: true + + /@parcel/watcher-android-arm64@2.5.0: + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + dev: true + optional: true + + /@parcel/watcher-darwin-arm64@2.5.0: + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@parcel/watcher-darwin-x64@2.5.0: + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@parcel/watcher-freebsd-x64@2.5.0: + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + + /@parcel/watcher-linux-arm-glibc@2.5.0: + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@parcel/watcher-linux-arm-musl@2.5.0: + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.5.0: + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@parcel/watcher-linux-arm64-musl@2.5.0: + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@parcel/watcher-linux-x64-glibc@2.5.0: + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@parcel/watcher-linux-x64-musl@2.5.0: + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@parcel/watcher-win32-arm64@2.5.0: + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + dev: true + optional: true + + /@parcel/watcher-win32-ia32@2.5.0: + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + dev: true + optional: true + + /@parcel/watcher-win32-x64@2.5.0: + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@parcel/watcher@2.5.0: + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} + engines: {node: '>= 10.0.0'} + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + dev: true + optional: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + dev: true + optional: true + + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + dev: true + + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + dev: true + + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + dev: true + + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + dev: true + + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + dev: true + + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: true + + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: true + + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: true + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: true + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: true + + /@puppeteer/browsers@2.4.1: + resolution: {integrity: sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng==} + engines: {node: '>=18'} + hasBin: true + dependencies: + debug: 4.3.7(supports-color@9.4.0) + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.4.0 + semver: 7.6.3 + tar-fs: 3.0.6 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@rollup/plugin-alias@5.1.1(rollup@4.28.0): + resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 4.28.0 + dev: true + + /@rollup/plugin-commonjs@28.0.1(rollup@4.28.0): + resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.28.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.4.2(picomatch@4.0.2) + is-reference: 1.2.1 + magic-string: 0.30.14 + picomatch: 4.0.2 + rollup: 4.28.0 + dev: true + + /@rollup/plugin-json@6.1.0(rollup@4.28.0): + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.28.0) + rollup: 4.28.0 + dev: true + + /@rollup/plugin-node-resolve@13.3.0(rollup@4.28.0): + resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@4.28.0) + '@types/resolve': 1.17.1 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 4.28.0 + dev: true + + /@rollup/plugin-node-resolve@15.3.0(rollup@4.28.0): + resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.28.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 4.28.0 + dev: true + + /@rollup/pluginutils@3.1.0(rollup@4.28.0): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 4.28.0 + dev: true + + /@rollup/pluginutils@5.1.3(rollup@4.28.0): + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + rollup: 4.28.0 + dev: true + + /@rollup/rollup-android-arm-eabi@4.26.0: + resolution: {integrity: sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==} + cpu: [arm] + os: [android] + dev: true + optional: true + + /@rollup/rollup-android-arm-eabi@4.28.0: + resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==} + cpu: [arm] + os: [android] + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.26.0: + resolution: {integrity: sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==} + cpu: [arm64] + os: [android] + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.28.0: + resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==} + cpu: [arm64] + os: [android] + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.26.0: + resolution: {integrity: sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.28.0: + resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.26.0: + resolution: {integrity: sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.28.0: + resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + + /@rollup/rollup-freebsd-arm64@4.26.0: + resolution: {integrity: sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==} + cpu: [arm64] + os: [freebsd] + dev: true + optional: true + + /@rollup/rollup-freebsd-arm64@4.28.0: + resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==} + cpu: [arm64] + os: [freebsd] + dev: true + optional: true + + /@rollup/rollup-freebsd-x64@4.26.0: + resolution: {integrity: sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + + /@rollup/rollup-freebsd-x64@4.28.0: + resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.26.0: + resolution: {integrity: sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.28.0: + resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.26.0: + resolution: {integrity: sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.28.0: + resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==} + cpu: [arm] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.26.0: + resolution: {integrity: sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.28.0: + resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.26.0: + resolution: {integrity: sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.28.0: + resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.26.0: + resolution: {integrity: sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.28.0: + resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.26.0: + resolution: {integrity: sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.28.0: + resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.26.0: + resolution: {integrity: sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==} + cpu: [s390x] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.28.0: + resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==} + cpu: [s390x] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.26.0: + resolution: {integrity: sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.28.0: + resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.26.0: + resolution: {integrity: sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.28.0: + resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.26.0: + resolution: {integrity: sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==} + cpu: [arm64] + os: [win32] + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.28.0: + resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==} + cpu: [arm64] + os: [win32] + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.26.0: + resolution: {integrity: sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==} + cpu: [ia32] + os: [win32] + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.28.0: + resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==} + cpu: [ia32] + os: [win32] + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.26.0: + resolution: {integrity: sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.28.0: + resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@rollup/wasm-node@4.28.0: + resolution: {integrity: sha512-M686ZTwhx618GAsRN71qr9a4Z0UMd9T75rICZFV7G8ajqzYbeikt/6dgQZtEOLIp6bqtz7nYGKOS93CXEPtqoA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + dev: true + + /@rushstack/node-core-library@5.10.0(@types/node@18.19.67): + resolution: {integrity: sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.19.67 + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + dev: true + + /@rushstack/rig-package@0.5.3: + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + dev: true + + /@rushstack/terminal@0.14.3(@types/node@18.19.67): + resolution: {integrity: sha512-csXbZsAdab/v8DbU1sz7WC2aNaKArcdS/FPmXMOXEj/JBBZMvDK0+1b4Qao0kkG0ciB1Qe86/Mb68GjH6/TnMw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 5.10.0(@types/node@18.19.67) + '@types/node': 18.19.67 + supports-color: 8.1.1 + dev: true + + /@rushstack/ts-command-line@4.23.1(@types/node@18.19.67): + resolution: {integrity: sha512-40jTmYoiu/xlIpkkRsVfENtBq4CW3R4azbL0Vmda+fMwHWqss6wwf/Cy/UJmMqIzpfYc2OTnjYP1ZLD3CmyeCA==} + dependencies: + '@rushstack/terminal': 0.14.3(@types/node@18.19.67) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@sigstore/bundle@3.0.0: + resolution: {integrity: sha512-XDUYX56iMPAn/cdgh/DTJxz5RWmqKV4pwvUAEKEWJl+HzKdCd/24wUa9JYNMlDSCb7SUHAdtksxYX779Nne/Zg==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@sigstore/protobuf-specs': 0.3.2 + dev: true + + /@sigstore/core@2.0.0: + resolution: {integrity: sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /@sigstore/protobuf-specs@0.3.2: + resolution: {integrity: sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@sigstore/sign@3.0.0: + resolution: {integrity: sha512-UjhDMQOkyDoktpXoc5YPJpJK6IooF2gayAr5LvXI4EL7O0vd58okgfRcxuaH+YTdhvb5aa1Q9f+WJ0c2sVuYIw==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@sigstore/bundle': 3.0.0 + '@sigstore/core': 2.0.0 + '@sigstore/protobuf-specs': 0.3.2 + make-fetch-happen: 14.0.3 + proc-log: 5.0.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@3.0.0: + resolution: {integrity: sha512-9Xxy/8U5OFJu7s+OsHzI96IX/OzjF/zj0BSSaWhgJgTqtlBhQIV2xdrQI5qxLD7+CWWDepadnXAxzaZ3u9cvRw==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@sigstore/protobuf-specs': 0.3.2 + tuf-js: 3.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/verify@2.0.0: + resolution: {integrity: sha512-Ggtq2GsJuxFNUvQzLoXqRwS4ceRfLAJnrIHUDrzAD0GgnOhwujJkKkxM/s5Bako07c3WtAs/sZo5PJq7VHjeDg==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@sigstore/bundle': 3.0.0 + '@sigstore/core': 2.0.0 + '@sigstore/protobuf-specs': 0.3.2 + dev: true + + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + dev: true + + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + dev: true + + /@stylistic/eslint-plugin@2.11.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-PNRHbydNG5EH8NK4c+izdJlxajIR6GxcUhzsYNRsn6Myep4dsZt0qFCz3rCPnkvgO5FYibDcMqgNHUT+zvjYZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@typescript-eslint/utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + eslint: 8.57.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@tootallnate/quickjs-emscripten@0.23.0: + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + dev: true + + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@tufjs/canonical-json@2.0.0: + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@tufjs/models@3.0.1: + resolution: {integrity: sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.5 + dev: true + + /@types/accepts@1.3.7: + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true + + /@types/babel__code-frame@7.0.6: + resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + dev: true + + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + dependencies: + '@babel/types': 7.26.0 + dev: true + + /@types/big.js@6.2.2: + resolution: {integrity: sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==} + dev: true + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.10.1 + dev: true + + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/browser-sync@2.29.0: + resolution: {integrity: sha512-d2V8FDX/LbDCSm343N2VChzDxvll0h76I8oSigYpdLgPDmcdcR6fywTggKBkUiDM3qAbHOq7NZvepj/HJM5e2g==} + dependencies: + '@types/micromatch': 2.3.35 + '@types/node': 22.10.1 + '@types/serve-static': 1.15.7 + chokidar: 3.6.0 + dev: true + + /@types/caseless@0.12.5: + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + dev: true + + /@types/co-body@6.1.3: + resolution: {integrity: sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==} + dependencies: + '@types/node': 22.10.1 + '@types/qs': 6.9.17 + dev: true + + /@types/command-line-args@5.2.3: + resolution: {integrity: sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==} + dev: true + + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + dependencies: + '@types/express-serve-static-core': 5.0.2 + '@types/node': 22.10.1 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/content-disposition@0.5.8: + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} + dev: true + + /@types/convert-source-map@2.0.3: + resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==} + dev: true + + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: true + + /@types/cookies@0.9.0: + resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} + dependencies: + '@types/connect': 3.4.38 + '@types/express': 5.0.0 + '@types/keygrip': 1.0.6 + '@types/node': 22.10.1 + dev: true + + /@types/cors@2.8.17: + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/debounce@1.2.4: + resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==} + dev: true + + /@types/duplexify@3.6.4: + resolution: {integrity: sha512-2eahVPsd+dy3CL6FugAzJcxoraWhUghZGEQJns1kTKfCXWKJ5iG/VkaB05wRVrDKHfOFKqb0X0kXh91eE99RZg==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + dev: true + + /@types/eslint@9.6.1: + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + dev: true + + /@types/express-serve-static-core@4.19.6: + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + dependencies: + '@types/node': 22.10.1 + '@types/qs': 6.9.17 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express-serve-static-core@5.0.2: + resolution: {integrity: sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==} + dependencies: + '@types/node': 22.10.1 + '@types/qs': 6.9.17 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.17 + '@types/serve-static': 1.15.7 + dev: true + + /@types/express@5.0.0: + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 5.0.2 + '@types/qs': 6.9.17 + '@types/serve-static': 1.15.7 + dev: true + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.10.1 + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/http-assert@1.5.6: + resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} + dev: true + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.15: + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/ini@4.1.1: + resolution: {integrity: sha512-MIyNUZipBTbyUNnhvuXJTY7B6qNI78meck9Jbv3wk0OgNwRyOOVEKDutAkOs1snB/tx0FafyR6/SN4Ps0hZPeg==} + dev: true + + /@types/is-windows@1.0.2: + resolution: {integrity: sha512-Qt86FJkakTwcZR+r08JSrOtw1g05EhZwSKRu9S5tu8pXulFRl06KS2fYAoxE32fc3gVXkpwlYIxUkjFIusvyFQ==} + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jasmine@5.1.5: + resolution: {integrity: sha512-SaCZ3kM5NjOiJqMRYwHpLbTfUC2Dyk1KS3QanNFsUYPGTk70CWVK/J9ueun6zNhw/UkgV7xl8V4ZLQZNRbfnNw==} + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/karma@6.3.9: + resolution: {integrity: sha512-sjE/MHnoAZAQYAKRXAbjTOiBKyGGErEM725bruRcmDdMa2vp1bjWPhApI7/i564PTyHlzc3vIGXLL6TFIpAxFg==} + dependencies: + '@types/node': 22.10.1 + log4js: 6.9.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@types/keygrip@1.0.6: + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + dev: true + + /@types/koa-compose@3.2.8: + resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + dependencies: + '@types/koa': 2.15.0 + dev: true + + /@types/koa@2.15.0: + resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} + dependencies: + '@types/accepts': 1.3.7 + '@types/content-disposition': 0.5.8 + '@types/cookies': 0.9.0 + '@types/http-assert': 1.5.6 + '@types/http-errors': 2.0.4 + '@types/keygrip': 1.0.6 + '@types/koa-compose': 3.2.8 + '@types/node': 22.10.1 + dev: true + + /@types/less@3.0.7: + resolution: {integrity: sha512-+SD1DrM8EwJsilPFSR1IMMGWOTg5sO1waewoJ1k3BHCvU07zQThy8t2wTfxvHz//R0uK3koAUl9WbWwal0H+YA==} + dev: true + + /@types/loader-utils@2.0.6: + resolution: {integrity: sha512-cgu0Xefgq9O5FjFR78jgI6X31aPjDWCaJ6LCfRtlj6BtyVVWiXagysSYlPACwGKAzRwsFLjKXcj4iGfcVt6cLw==} + dependencies: + '@types/node': 22.10.1 + '@types/webpack': 4.41.40 + dev: true + + /@types/lodash@4.17.13: + resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + dev: true + + /@types/long@4.0.2: + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + dev: true + + /@types/micromatch@2.3.35: + resolution: {integrity: sha512-J749bHo/Zu56w0G0NI/IGHLQPiSsjx//0zJhfEVAN95K/xM5C8ZDmhkXtU3qns0sBOao7HuQzr8XV1/2o5LbXA==} + dependencies: + '@types/parse-glob': 3.0.32 + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + + /@types/node-fetch@3.0.2: + resolution: {integrity: sha512-3q5FyT6iuekUxXeL2qjcyIhtMJdfMF7RGhYXWKkYpdcW9k36A/+txXrjG0l+NMVkiC30jKNrcOqVlqBl7BcCHA==} + dependencies: + node-fetch: 3.3.2 + dev: true + + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/node@10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: true + + /@types/node@18.19.67: + resolution: {integrity: sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/node@22.10.1: + resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} + dependencies: + undici-types: 6.20.0 + dev: true + + /@types/npm-package-arg@6.1.4: + resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} + dev: true + + /@types/npm-registry-fetch@8.0.7: + resolution: {integrity: sha512-db9iBh7kDDg4lRT4k4XZ6IiecTEgFCID4qk+VDVPbtzU855q3KZLCn08ATr4H27ntRJVhulQ7GWjl24H42x96w==} + dependencies: + '@types/node': 22.10.1 + '@types/node-fetch': 3.0.2 + '@types/npm-package-arg': 6.1.4 + '@types/npmlog': 7.0.0 + '@types/ssri': 7.1.5 + dev: true + + /@types/npmlog@7.0.0: + resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/pacote@11.1.8: + resolution: {integrity: sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q==} + dependencies: + '@types/node': 22.10.1 + '@types/npm-registry-fetch': 8.0.7 + '@types/npmlog': 7.0.0 + '@types/ssri': 7.1.5 + dev: true + + /@types/parse-glob@3.0.32: + resolution: {integrity: sha512-n4xmml2WKR12XeQprN8L/sfiVPa8FHS3k+fxp4kSr/PA2GsGUgFND+bvISJxM0y5QdvzNEGjEVU3eIrcKks/pA==} + dev: true + + /@types/parse5@6.0.3: + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: true + + /@types/picomatch@3.0.1: + resolution: {integrity: sha512-1MRgzpzY0hOp9pW/kLRxeQhUWwil6gnrUYd3oEpeYBqp/FexhaCPv3F8LsYr47gtUU45fO2cm1dbwkSrHEo8Uw==} + dev: true + + /@types/progress@2.0.7: + resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/pumpify@1.4.4: + resolution: {integrity: sha512-+cWbQUecD04MQYkjNBhPmcUIP368aloYmqm+ImdMKA8rMpxRNAhZAD6gIj+sAVTF1DliqrT/qUp6aGNi/9U3tw==} + dependencies: + '@types/duplexify': 3.6.4 + '@types/node': 22.10.1 + dev: true + + /@types/q@0.0.32: + resolution: {integrity: sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==} + dev: true + + /@types/qs@6.9.17: + resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/request@2.48.12: + resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} + dependencies: + '@types/caseless': 0.12.5 + '@types/node': 22.10.1 + '@types/tough-cookie': 4.0.5 + form-data: 2.5.2 + dev: true + + /@types/resolve@1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + + /@types/resolve@1.20.6: + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + dev: true + + /@types/retry@0.12.2: + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + dev: true + + /@types/selenium-webdriver@3.0.26: + resolution: {integrity: sha512-dyIGFKXfUFiwkMfNGn1+F6b80ZjR3uSYv1j6xVJSDlft5waZ2cwkHW4e7zNzvq7hiEackcgvBpmnXZrI1GltPg==} + dev: true + + /@types/selenium-webdriver@4.1.27: + resolution: {integrity: sha512-ALqsj8D7Swb6MnBQuAQ58J3KC3yh6fLGtAmpBmnZX8j+0kmP7NaLt56CuzBw2W2bXPrvHFTgn8iekOQFUKXEQA==} + dependencies: + '@types/node': 22.10.1 + '@types/ws': 8.5.13 + dev: true + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.10.1 + dev: true + + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + dependencies: + '@types/express': 5.0.0 + dev: true + + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 22.10.1 + '@types/send': 0.17.4 + dev: true + + /@types/shelljs@0.8.15: + resolution: {integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==} + dependencies: + '@types/glob': 7.2.0 + '@types/node': 22.10.1 + dev: true + + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/source-list-map@0.1.6: + resolution: {integrity: sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==} + dev: true + + /@types/ssri@7.1.5: + resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/stack-trace@0.0.33: + resolution: {integrity: sha512-O7in6531Bbvlb2KEsJ0dq0CHZvc3iWSR5ZYMtvGgnHA56VgriAN/AU2LorfmcvAl2xc9N5fbCTRyMRRl8nd74g==} + dev: true + + /@types/supports-color@8.1.3: + resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} + dev: true + + /@types/tapable@1.0.12: + resolution: {integrity: sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==} + dev: true + + /@types/tmp@0.2.6: + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + dev: true + + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: true + + /@types/uglify-js@3.17.5: + resolution: {integrity: sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==} + dependencies: + source-map: 0.6.1 + dev: true + + /@types/watchpack@2.4.4: + resolution: {integrity: sha512-SbuSavsPxfOPZwVHBgQUVuzYBe6+8KL7dwiJLXaj5rmv3DxktOMwX5WP1J6UontwUbewjVoc7pCgZvqy6rPn+A==} + dependencies: + '@types/graceful-fs': 4.1.9 + '@types/node': 22.10.1 + dev: true + + /@types/webpack-sources@3.2.3: + resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} + dependencies: + '@types/node': 22.10.1 + '@types/source-list-map': 0.1.6 + source-map: 0.7.4 + dev: true + + /@types/webpack@4.41.40: + resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} + dependencies: + '@types/node': 22.10.1 + '@types/tapable': 1.0.12 + '@types/uglify-js': 3.17.5 + '@types/webpack-sources': 3.2.3 + anymatch: 3.1.3 + source-map: 0.6.1 + dev: true + + /@types/ws@7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/ws@8.5.13: + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + dependencies: + '@types/node': 22.10.1 + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@types/yarnpkg__lockfile@1.1.9: + resolution: {integrity: sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q==} + dev: true + + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + dependencies: + '@types/node': 22.10.1 + dev: true + optional: true + + /@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} + 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: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/type-utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.17.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@8.17.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.17.0 + debug: 4.3.7(supports-color@9.4.0) + eslint: 8.57.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@8.17.0: + resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 + dev: true + + /@typescript-eslint/type-utils@8.17.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + debug: 4.3.7(supports-color@9.4.0) + eslint: 8.57.0 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@8.17.0: + resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@typescript-eslint/typescript-estree@8.17.0(typescript@5.7.2): + resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 + debug: 4.3.7(supports-color@9.4.0) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@8.17.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + eslint: 8.57.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/visitor-keys@8.17.0: + resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.17.0 + eslint-visitor-keys: 4.2.0 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@verdaccio/auth@8.0.0-next-8.4: + resolution: {integrity: sha512-Bv+du+eIMK2/KU2wIjha2FHQrhBT5RuDOVi1nyRyjEyjmJrUt2RWU0Cb7ASxzQy61nkcJ3bs7kuu9dPHK/Z+jw==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/config': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/loaders': 8.0.0-next-8.3 + '@verdaccio/signature': 8.0.0-next-8.1 + '@verdaccio/utils': 8.1.0-next-8.4 + debug: 4.3.7(supports-color@9.4.0) + lodash: 4.17.21 + verdaccio-htpasswd: 13.0.0-next-8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/commons-api@10.2.0: + resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} + engines: {node: '>=8'} + dependencies: + http-errors: 2.0.0 + http-status-codes: 2.2.0 + dev: true + + /@verdaccio/config@8.0.0-next-8.4: + resolution: {integrity: sha512-9CTYYhaO4xrGbiYjLqRy8EMFPm0YL4a7P6ae8Zm4Dx85Dd6i8XqZ7tlU/+a6qf1g/qggYloolU8pcjaLWNDKAQ==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/utils': 8.1.0-next-8.4 + debug: 4.3.7(supports-color@9.4.0) + js-yaml: 4.1.0 + lodash: 4.17.21 + minimatch: 7.4.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/core@8.0.0-next-8.1: + resolution: {integrity: sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==} + engines: {node: '>=14'} + 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 + dev: true + + /@verdaccio/core@8.0.0-next-8.4: + resolution: {integrity: sha512-TCaHwIpr97f4YQkU25E6pk1dbfWTQwYPos1tMb9Q7k6IapoxN0c1s+SyF5FBuMOIfJpTHoWJDo/z7QCouQC3lw==} + engines: {node: '>=18'} + 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 + dev: true + + /@verdaccio/file-locking@10.3.1: + resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==} + engines: {node: '>=12'} + dependencies: + lockfile: 1.0.4 + dev: true + + /@verdaccio/file-locking@13.0.0-next-8.2: + resolution: {integrity: sha512-TcHgN3I/N28WBSvtukpGrJhBljl4jyIXq0vEv94vXAG6nUE3saK+vtgo8PfYA3Ueo88v/1zyAbiZM4uxwojCmQ==} + engines: {node: '>=18'} + dependencies: + lockfile: 1.0.4 + dev: true + + /@verdaccio/loaders@8.0.0-next-8.3: + resolution: {integrity: sha512-7bIOdi+U1xSLRu0s1XxQwrV3zzzFaVaTX7JKFgj2tQvMy9AgzlpjbW1CqaH8OTVEqq03Pwvwj5hQlcvyzCwm1A==} + engines: {node: '>=18'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/local-storage-legacy@11.0.2: + resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} + engines: {node: '>=12'} + dependencies: + '@verdaccio/commons-api': 10.2.0 + '@verdaccio/file-locking': 10.3.1 + '@verdaccio/streams': 10.2.1 + async: 3.2.4 + debug: 4.3.4 + lodash: 4.17.21 + lowdb: 1.0.0 + mkdirp: 1.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/logger-commons@8.0.0-next-8.4: + resolution: {integrity: sha512-neDbq5IIRoidFT4Rv3zH9YydICDCJEybb06BzCGVOzlhZ7F+fBzJH1qlBhAEISfbONugDgfuUQ2jbRCKEkHezQ==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/logger-prettify': 8.0.0-next-8.1 + colorette: 2.0.20 + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/logger-prettify@8.0.0-next-8.1: + resolution: {integrity: sha512-vLhaGq0q7wtMCcqa0aQY6QOsMNarhTu/l4e6Z8mG/5LUH95GGLsBwpXLnKS94P3deIjsHhc9ycnEmG39txbQ1w==} + engines: {node: '>=18'} + dependencies: + colorette: 2.0.20 + dayjs: 1.11.13 + lodash: 4.17.21 + pino-abstract-transport: 1.2.0 + sonic-boom: 3.8.1 + dev: true + + /@verdaccio/logger@8.0.0-next-8.4: + resolution: {integrity: sha512-zJIFpKYNR/api/mxj5HqJSlEMFh9J4sVKk+3QYlPmppW68beZLLzqwchb5+c/V559lnSrGy5HvDUEGLXvp6reA==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/logger-commons': 8.0.0-next-8.4 + pino: 9.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/middleware@8.0.0-next-8.4: + resolution: {integrity: sha512-tzpfSpeLKUeyTsQ+fvUsokgdh1NrjDJX/oz2ya8wTYSInKAt1Ld9MRzRVSHJwIQc7wfg46zSjpcKZVLA/YkJ6w==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/config': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/url': 13.0.0-next-8.4 + '@verdaccio/utils': 8.1.0-next-8.4 + debug: 4.3.7(supports-color@9.4.0) + express: 4.21.1 + express-rate-limit: 5.5.1 + lodash: 4.17.21 + lru-cache: 7.18.3 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/search-indexer@8.0.0-next-8.2: + resolution: {integrity: sha512-sWliVN5BkAGbZ3e/GD0CsZMfPJdRMRuN0tEKQFsvEJifxToq5UkfCw6vKaVvhezsTWqb+Rp5y+2d4n5BDOA49w==} + engines: {node: '>=18'} + dev: true + + /@verdaccio/signature@8.0.0-next-8.1: + resolution: {integrity: sha512-lHD/Z2FoPQTtDYz6ZlXhj/lrg0SFirHrwCGt/cibl1GlePpx78WPdo03tgAyl0Qf+I35n484/gR1l9eixBQqYw==} + engines: {node: '>=18'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + jsonwebtoken: 9.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/streams@10.2.1: + resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} + engines: {node: '>=12', npm: '>=5'} + dev: true + + /@verdaccio/tarball@13.0.0-next-8.4: + resolution: {integrity: sha512-zizQwACK+P9sHtArbuW5MJluRpc3lC6bilGTFNc0TLkHbwL73F8wxkKr5VLzWV7H54+sVKMDs1lCnaoHa0ygmw==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/url': 13.0.0-next-8.4 + '@verdaccio/utils': 8.1.0-next-8.4 + debug: 4.3.7(supports-color@9.4.0) + gunzip-maybe: 1.4.2 + lodash: 4.17.21 + tar-stream: 3.1.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/ui-theme@8.0.0-next-8.4: + resolution: {integrity: sha512-j3STxUuIgvn058LqfXWv+SwRi1fQ7HapMSfVKXAhi09+f4zlD2mtvKLth0WbuzU1NqJPTGLAP9ueBf1210C1Hw==} + dev: true + + /@verdaccio/url@13.0.0-next-8.4: + resolution: {integrity: sha512-Xo+9DUcwYTBV6d0n4vjLAN2k92J33XM/9JNltWM6140oI8lz+VJKiajtejG/hRBi82RioRdWJ0RZDDY6FsbS3Q==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.4 + debug: 4.3.7(supports-color@9.4.0) + lodash: 4.17.21 + validator: 13.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@verdaccio/utils@7.0.1-next-8.1: + resolution: {integrity: sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==} + engines: {node: '>=12'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.1 + lodash: 4.17.21 + minimatch: 7.4.6 + semver: 7.6.3 + dev: true + + /@verdaccio/utils@8.1.0-next-8.4: + resolution: {integrity: sha512-mAEBWV5zsjtC4e/hfj1Q/eYtMlML5wxedk7mqqmvAydjw+ycSH/D/ksU+B10h4STX2NcBlcLtgLl7OI/wFzrgA==} + engines: {node: '>=12'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.4 + lodash: 4.17.21 + minimatch: 7.4.6 + semver: 7.6.3 + dev: true + + /@vitejs/plugin-basic-ssl@1.1.0(vite@5.4.11): + resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + vite: 5.4.11(@types/node@18.19.67)(less@4.2.1)(sass@1.80.7)(terser@5.36.0) + dev: true + + /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.2): + resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + dependencies: + vite: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.81.1)(terser@5.36.0) + dev: true + + /@web/browser-logs@0.4.0: + resolution: {integrity: sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==} + engines: {node: '>=18.0.0'} + dependencies: + errorstacks: 2.4.1 + dev: true + + /@web/config-loader@0.3.2: + resolution: {integrity: sha512-Vrjv/FexBGmAdnCYpJKLHX1dfT1UaUdvHmX1JRaWos9OvDf/tFznYJ5SpJwww3Rl87/ewvLSYG7kfsMqEAsizQ==} + engines: {node: '>=18.0.0'} + dev: true + + /@web/dev-server-core@0.7.4: + resolution: {integrity: sha512-nHSNrJ1J9GjmSceKNHpWRMjvpfE2NTV9EYUffPIr7j0sIV59gK7NI/4+9slotJ/ODXw0+e1gSeJshTOhjjVNxQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@types/koa': 2.15.0 + '@types/ws': 7.4.7 + '@web/parse5-utils': 2.1.0 + chokidar: 4.0.1 + clone: 2.1.2 + es-module-lexer: 1.5.4 + get-stream: 6.0.1 + is-stream: 2.0.1 + isbinaryfile: 5.0.4 + koa: 2.15.3 + koa-etag: 4.0.0 + koa-send: 5.0.1 + koa-static: 5.0.0 + lru-cache: 8.0.5 + mime-types: 2.1.35 + parse5: 6.0.1 + picomatch: 2.3.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/dev-server-rollup@0.6.4: + resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} + engines: {node: '>=18.0.0'} + dependencies: + '@rollup/plugin-node-resolve': 15.3.0(rollup@4.28.0) + '@web/dev-server-core': 0.7.4 + nanocolors: 0.2.13 + parse5: 6.0.1 + rollup: 4.28.0 + whatwg-url: 14.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/dev-server@0.4.6: + resolution: {integrity: sha512-jj/1bcElAy5EZet8m2CcUdzxT+CRvUjIXGh8Lt7vxtthkN9PzY9wlhWx/9WOs5iwlnG1oj0VGo6f/zvbPO0s9w==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + '@babel/code-frame': 7.26.2 + '@types/command-line-args': 5.2.3 + '@web/config-loader': 0.3.2 + '@web/dev-server-core': 0.7.4 + '@web/dev-server-rollup': 0.6.4 + camelcase: 6.3.0 + command-line-args: 5.2.1 + command-line-usage: 7.0.3 + debounce: 1.2.1 + deepmerge: 4.3.1 + internal-ip: 6.2.0 + nanocolors: 0.2.13 + open: 8.4.2 + portfinder: 1.0.32 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/parse5-utils@2.1.0: + resolution: {integrity: sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==} + engines: {node: '>=18.0.0'} + dependencies: + '@types/parse5': 6.0.3 + parse5: 6.0.1 + dev: true + + /@web/test-runner-chrome@0.17.0: + resolution: {integrity: sha512-Il5N9z41NKWCrQM1TVgRaDWWYoJtG5Ha4fG+cN1MWL2OlzBS4WoOb4lFV3EylZ7+W3twZOFr1zy2Rx61yDYd/A==} + engines: {node: '>=18.0.0'} + 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: 23.9.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/test-runner-commands@0.9.0: + resolution: {integrity: sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==} + engines: {node: '>=18.0.0'} + dependencies: + '@web/test-runner-core': 0.13.4 + mkdirp: 1.0.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/test-runner-core@0.13.4: + resolution: {integrity: sha512-84E1025aUSjvZU1j17eCTwV7m5Zg3cZHErV3+CaJM9JPCesZwLraIa0ONIQ9w4KLgcDgJFw9UnJ0LbFf42h6tg==} + engines: {node: '>=18.0.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@types/babel__code-frame': 7.0.6 + '@types/co-body': 6.1.3 + '@types/convert-source-map': 2.0.3 + '@types/debounce': 1.2.4 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@web/browser-logs': 0.4.0 + '@web/dev-server-core': 0.7.4 + chokidar: 4.0.1 + cli-cursor: 3.1.0 + co-body: 6.2.0 + convert-source-map: 2.0.0 + debounce: 1.2.1 + dependency-graph: 0.11.0 + globby: 11.1.0 + internal-ip: 6.2.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.1.7 + log-update: 4.0.0 + nanocolors: 0.2.13 + nanoid: 3.3.8 + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/test-runner-coverage-v8@0.8.0: + resolution: {integrity: sha512-PskiucYpjUtgNfR2zF2AWqWwjXL7H3WW/SnCAYmzUrtob7X9o/+BjdyZ4wKbOxWWSbJO4lEdGIDLu+8X2Xw+lA==} + engines: {node: '>=18.0.0'} + dependencies: + '@web/test-runner-core': 0.13.4 + istanbul-lib-coverage: 3.2.2 + lru-cache: 8.0.5 + picomatch: 2.3.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/test-runner-mocha@0.9.0: + resolution: {integrity: sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@web/test-runner-core': 0.13.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@web/test-runner@0.19.0: + resolution: {integrity: sha512-qLUupi88OK1Kl52cWPD/2JewUCRUxYsZ1V1DyLd05P7u09zCdrUYrtkB/cViWyxlBe/TOvqkSNpcTv6zLJ9GoA==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + '@web/browser-logs': 0.4.0 + '@web/config-loader': 0.3.2 + '@web/dev-server': 0.4.6 + '@web/test-runner-chrome': 0.17.0 + '@web/test-runner-commands': 0.9.0 + '@web/test-runner-core': 0.13.4 + '@web/test-runner-mocha': 0.9.0 + camelcase: 6.3.0 + command-line-args: 5.2.1 + command-line-usage: 7.0.3 + convert-source-map: 2.0.0 + diff: 5.2.0 + globby: 11.1.0 + nanocolors: 0.2.13 + portfinder: 1.0.32 + source-map: 0.7.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@webassemblyjs/ast@1.14.1: + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.13.2: + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + dev: true + + /@webassemblyjs/helper-api-error@1.13.2: + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + dev: true + + /@webassemblyjs/helper-buffer@1.14.1: + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + dev: true + + /@webassemblyjs/helper-numbers@1.13.2: + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.13.2: + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.14.1: + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + dev: true + + /@webassemblyjs/ieee754@1.13.2: + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.13.2: + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.13.2: + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + dev: true + + /@webassemblyjs/wasm-edit@1.14.1: + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + dev: true + + /@webassemblyjs/wasm-gen@1.14.1: + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + dev: true + + /@webassemblyjs/wasm-opt@1.14.1: + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + dev: true + + /@webassemblyjs/wasm-parser@1.14.1: + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + dev: true + + /@webassemblyjs/wast-printer@1.14.1: + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + dev: true + + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /@yarnpkg/lockfile@1.1.0: + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + dev: true + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-jsx@5.3.2(acorn@8.14.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.14.0 + dev: true + + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.14.0 + dev: true + + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + dev: true + + /adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + dev: true + + /agent-base@4.3.0: + resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} + engines: {node: '>= 4.0.0'} + dependencies: + es6-promisify: 5.0.0 + dev: true + + /agent-base@6.0.2(supports-color@9.4.0): + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /agent-base@7.1.1(supports-color@9.4.0): + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-draft-04@1.0.0(ajv@8.13.0): + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: true + + /ajv-formats@2.1.1(ajv@8.17.1): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: true + + /ajv-formats@3.0.1(ajv@8.13.0): + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: true + + /ajv-formats@3.0.1(ajv@8.17.1): + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords@5.1.0(ajv@8.17.1): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + dependencies: + environment: 1.1.0 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /apache-md5@1.1.8: + resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} + engines: {node: '>=8'} + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back@6.2.2: + resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} + engines: {node: '>=12.17'} + dev: true + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.1.0 + dev: true + + /array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: true + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + dependencies: + tslib: 2.8.1 + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async-each-series@0.1.1: + resolution: {integrity: sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==} + engines: {node: '>=0.8.0'} + dev: true + + /async-mutex@0.4.0: + resolution: {integrity: sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==} + dependencies: + tslib: 2.8.1 + dev: true + + /async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true + + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: true + + /async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: true + + /autoprefixer@10.4.20(postcss@8.4.49): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001686 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + dev: true + + /b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + dev: true + + /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1): + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.26.0 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /bare-events@2.5.0: + resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + dev: true + optional: true + + /bare-fs@2.3.5: + resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} + dependencies: + bare-events: 2.5.0 + bare-path: 2.1.3 + bare-stream: 2.4.2 + dev: true + optional: true + + /bare-os@2.4.4: + resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==} + dev: true + optional: true + + /bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + dependencies: + bare-os: 2.4.4 + dev: true + optional: true + + /bare-stream@2.4.2: + resolution: {integrity: sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==} + dependencies: + streamx: 2.20.2 + dev: true + optional: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + + /basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} + dev: true + + /beasties@0.1.0: + resolution: {integrity: sha512-+Ssscd2gVG24qRNC+E2g88D+xsQW4xwakWtKAiGEQ3Pw54/FGdyo9RrfxhGhEv6ilFVbB7r3Lgx+QnAxnSpECw==} + dependencies: + css-select: 5.1.0 + css-what: 6.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + htmlparser2: 9.1.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-media-query-parser: 0.2.3 + dev: true + + /before-after-hook@3.0.2: + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + dev: true + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: true + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /blocking-proxy@1.0.1: + resolution: {integrity: sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==} + engines: {node: '>=6.9.x'} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + + /browser-or-node@3.0.0: + resolution: {integrity: sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==} + dev: true + + /browser-sync-client@3.0.3: + resolution: {integrity: sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==} + engines: {node: '>=8.0.0'} + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + mitt: 1.2.0 + dev: true + + /browser-sync-ui@3.0.3: + resolution: {integrity: sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==} + dependencies: + async-each-series: 0.1.1 + chalk: 4.1.2 + connect-history-api-fallback: 1.6.0 + immutable: 3.8.2 + server-destroy: 1.0.1 + socket.io-client: 4.8.1 + stream-throttle: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /browser-sync@3.0.3(debug@4.3.7): + resolution: {integrity: sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==} + engines: {node: '>= 8.0.0'} + hasBin: true + dependencies: + browser-sync-client: 3.0.3 + browser-sync-ui: 3.0.3 + bs-recipes: 1.3.4 + chalk: 4.1.2 + chokidar: 3.6.0 + connect: 3.6.6 + connect-history-api-fallback: 1.6.0 + dev-ip: 1.0.1 + easy-extender: 2.3.4 + eazy-logger: 4.0.1 + etag: 1.8.1 + fresh: 0.5.2 + fs-extra: 3.0.1 + http-proxy: 1.18.1(debug@4.3.7) + immutable: 3.8.2 + micromatch: 4.0.8 + opn: 5.3.0 + portscanner: 2.2.0 + raw-body: 2.5.2 + resp-modifier: 6.0.2 + rx: 4.1.0 + send: 0.19.1 + serve-index: 1.9.1 + serve-static: 1.16.2 + server-destroy: 1.0.1 + socket.io: 4.8.1 + ua-parser-js: 1.0.39 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + dependencies: + pako: 0.2.9 + dev: true + + /browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001686 + electron-to-chromium: 1.5.68 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + dev: true + + /browserstack@1.6.1: + resolution: {integrity: sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==} + dependencies: + https-proxy-agent: 2.2.4 + transitivePeerDependencies: + - supports-color + dev: true + + /bs-recipes@1.3.4: + resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + dependencies: + run-applescript: 7.0.0 + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /c8@7.5.0: + resolution: {integrity: sha512-GSkLsbvDr+FIwjNSJ8OwzWAyuznEYGTAd1pzb/Kr0FMLuV4vqYJTyjboDTwmlUNAG6jAU3PFWzqIdKrOt1D8tw==} + engines: {node: '>=10.12.0'} + hasBin: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + furi: 2.0.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.1.7 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 7.1.2 + yargs: 16.2.0 + yargs-parser: 20.2.9 + dev: true + + /cacache@18.0.4: + resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.1 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 10.4.3 + minipass: 7.1.2 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.6 + tar: 6.2.1 + unique-filename: 3.0.0 + dev: true + + /cacache@19.0.1: + resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@npmcli/fs': 4.0.0 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 10.4.3 + minipass: 7.1.2 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 7.0.2 + ssri: 12.0.0 + tar: 7.4.3 + unique-filename: 4.0.0 + dev: true + + /cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001686: + resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + dependencies: + chalk: 4.1.2 + dev: true + + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /checkpoint-stream@0.1.2: + resolution: {integrity: sha512-eYXIcydL3mPjjEVLxHdi1ISgTwmxGJZ8vyJ3lYVvFTDRyTOZMTbKZdRJqiA7Gi1rPcwOyyzcrZmGLL8ff7e69w==} + dependencies: + '@types/pumpify': 1.4.4 + events-intercept: 2.0.0 + pumpify: 1.5.1 + split-array-stream: 1.0.3 + through2: 2.0.5 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + dependencies: + readdirp: 4.0.2 + dev: true + + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + dev: true + + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@types/node': 22.10.1 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + dev: true + + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + dev: true + + /chromium-bidi@0.8.0(devtools-protocol@0.0.1367902): + resolution: {integrity: sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==} + peerDependencies: + devtools-protocol: '*' + dependencies: + devtools-protocol: 0.0.1367902 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.23.8 + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + dependencies: + restore-cursor: 5.1.0 + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + dev: true + + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + + /clipanion@4.0.0-rc.4(typanion@3.14.0): + resolution: {integrity: sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==} + peerDependencies: + typanion: '*' + dependencies: + typanion: 3.14.0 + dev: true + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: true + + /co-body@6.2.0: + resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} + engines: {node: '>=8.0.0'} + dependencies: + '@hapi/bourne': 3.0.0 + inflation: 2.1.0 + qs: 6.13.1 + raw-body: 2.5.2 + type-is: 1.6.18 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collection-utils@1.0.1: + resolution: {integrity: sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg==} + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-usage@7.0.3: + resolution: {integrity: sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==} + engines: {node: '>=12.20.0'} + dependencies: + array-back: 6.2.2 + chalk-template: 0.4.0 + table-layout: 4.1.1 + typical: 7.3.0 + dev: true + + /commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.53.0 + dev: true + + /compression@1.7.5: + resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} + engines: {node: '>= 0.8.0'} + 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 + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /connect@3.6.6: + resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.0 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + dev: true + + /cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + dev: true + + /cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + dev: true + + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /copy-webpack-plugin@12.0.2(webpack@5.96.1): + resolution: {integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 14.0.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + dependencies: + browserslist: 4.24.2 + dev: true + + /core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + dev: true + + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig@9.0.0(typescript@5.7.2): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: 5.7.2 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.7.2 + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-fetch@3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + + /cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-loader@7.1.2(webpack@5.96.1): + resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-scope: 3.2.1(postcss@8.4.49) + postcss-modules-values: 4.0.0(postcss@8.4.49) + postcss-value-parser: 4.2.0 + semver: 7.6.3 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /custom-event@1.0.1: + resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + dev: true + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + + /data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + dev: true + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + dev: true + + /dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dev: true + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug@4.3.7(supports-color@9.4.0): + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 9.4.0 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + dev: true + + /default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + dev: true + + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.1.0 + dev: true + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: true + + /degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + dev: true + + /del@2.2.2: + resolution: {integrity: sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==} + engines: {node: '>=0.10.0'} + dependencies: + globby: 5.0.0 + is-path-cwd: 1.0.0 + is-path-in-cwd: 1.0.1 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + rimraf: 2.7.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + dev: true + + /dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} + dev: true + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + optional: true + + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + dev: true + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /dev-ip@1.0.1: + resolution: {integrity: sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==} + engines: {node: '>= 0.8.0'} + hasBin: true + dev: true + + /devtools-protocol@0.0.1045489: + resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} + dev: true + + /devtools-protocol@0.0.1367902: + resolution: {integrity: sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==} + dev: true + + /di@0.0.1: + resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serialize@2.2.1: + resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} + dependencies: + custom-event: 1.0.1 + ent: 2.2.1 + extend: 3.0.2 + void-elements: 2.0.1 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + dev: true + + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /easy-extender@2.3.4: + resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} + engines: {node: '>= 4.0.0'} + dependencies: + lodash: 4.17.21 + dev: true + + /eazy-logger@4.0.1: + resolution: {integrity: sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==} + engines: {node: '>= 0.8.0'} + dependencies: + chalk: 4.1.2 + dev: true + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.5.68: + resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==} + dev: true + + /emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + dev: true + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /engine.io-client@6.6.2: + resolution: {integrity: sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==} + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7(supports-color@9.4.0) + engine.io-parser: 5.2.3 + ws: 8.17.1 + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + dev: true + + /engine.io@6.6.2: + resolution: {integrity: sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 22.10.1 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.5 + debug: 4.3.7(supports-color@9.4.0) + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /ent@2.2.1: + resolution: {integrity: sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==} + engines: {node: '>= 0.4'} + dependencies: + punycode: 1.4.1 + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /envinfo@7.14.0: + resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + dev: true + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /errorstacks@2.4.1: + resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} + dev: true + + /es-abstract@1.23.5: + resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.1.0 + has-property-descriptors: 1.0.2 + has-proto: 1.1.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.2.0 + is-shared-array-buffer: 1.0.3 + is-string: 1.1.0 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.3 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.3 + typed-array-length: 1.0.7 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.16 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.1.0 + dev: true + + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: true + + /es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: true + + /esbuild-wasm@0.24.0: + resolution: {integrity: sha512-xhNn5tL1AhkPg4ft59yXT6FkwKXiPSYyz1IeinJHUJpjvOHOIPvdmFQc0pGdjxlKSbzZc2mNmtVOWAR1EF/JAg==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + + /esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + dev: true + + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.15.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.17.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-header@3.1.1(eslint@8.57.0): + resolution: {integrity: sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==} + peerDependencies: + eslint: '>=7.7.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0): + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.7(supports-color@9.4.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + + /events-intercept@2.0.0: + resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: true + + /express-rate-limit@5.5.1: + resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} + dev: true + + /express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.7(supports-color@9.4.0) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /extsprintf@1.4.1: + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + dev: true + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /fdir@6.4.2(picomatch@4.0.2): + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + dependencies: + picomatch: 4.0.2 + dev: true + + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.1.0: + resolution: {integrity: sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.3.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + dev: true + + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + dependencies: + micromatch: 4.0.8 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + dev: true + + /follow-redirects@1.15.9(debug@4.3.7): + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.7(supports-color@9.4.0) + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + dependencies: + cross-spawn: 7.0.6 + signal-exit: 3.0.7 + dev: true + + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + dev: true + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@2.5.2: + resolution: {integrity: sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + safe-buffer: 5.2.1 + dev: true + + /form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + dev: true + + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.1.2 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /furi@2.0.0: + resolution: {integrity: sha512-uKuNsaU0WVaK/vmvj23wW1bicOFfyqSsAIH71bRZx8kA4Xj+YCHin7CJKJJjkIsmxYaPFLk9ljmjEyB7xF7WvQ==} + dependencies: + '@types/is-windows': 1.0.2 + is-windows: 1.0.2 + dev: true + + /gaxios@6.7.1(supports-color@9.4.0): + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + is-stream: 2.0.1 + node-fetch: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gcp-metadata@6.1.0(supports-color@9.4.0): + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + dependencies: + gaxios: 6.7.1(supports-color@9.4.0) + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.1.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + dev: true + + /get-npm-tarball-url@2.1.0: + resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} + engines: {node: '>=12.17'} + dev: true + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.2 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.3.7(supports-color@9.4.0) + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + gopd: 1.1.0 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + + /globby@5.0.0: + resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + arrify: 1.0.1 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /google-auth-library@9.15.0(supports-color@9.4.0): + resolution: {integrity: sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==} + engines: {node: '>=14'} + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1(supports-color@9.4.0) + gcp-metadata: 6.1.0(supports-color@9.4.0) + gtoken: 7.1.0(supports-color@9.4.0) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /google-gax@4.4.1(supports-color@9.4.0): + resolution: {integrity: sha512-Phyp9fMfA00J3sZbJxbbB4jC55b7DBjE3F6poyL3wKMEBVKA79q6BGuHcTiM28yOzVql0NDbRL8MLLh8Iwk9Dg==} + engines: {node: '>=14'} + dependencies: + '@grpc/grpc-js': 1.12.3 + '@grpc/proto-loader': 0.7.13 + '@types/long': 4.0.2 + abort-controller: 3.0.0 + duplexify: 4.1.3 + google-auth-library: 9.15.0(supports-color@9.4.0) + node-fetch: 2.7.0 + object-hash: 3.0.0 + proto3-json-serializer: 2.0.2 + protobufjs: 7.4.0 + retry-request: 7.0.2(supports-color@9.4.0) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /google-protobuf@3.21.4: + resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} + dev: true + + /gopd@1.1.0: + resolution: {integrity: sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /grpc-gcp@1.0.1: + resolution: {integrity: sha512-06r73IoGaAIpzT+DRPnw7V5BXvZ5mjy1OcKqSPX+ZHOgbLxT+lJfz8IN83z/sbA3t55ZX88MfDaaCjDGdveVIA==} + engines: {node: '>=12'} + dependencies: + '@grpc/grpc-js': 1.12.3 + dev: true + + /gtoken@7.1.0(supports-color@9.4.0): + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + dependencies: + gaxios: 6.7.1(supports-color@9.4.0) + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + dependencies: + browserify-zlib: 0.1.4 + is-deflate: 1.0.0 + is-gzip: 1.0.0 + peek-stream: 1.1.3 + pumpify: 1.5.1 + through2: 2.0.5 + dev: true + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + dev: true + + /har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.1.0: + resolution: {integrity: sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.1.0 + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /hosted-git-info@8.0.2: + resolution: {integrity: sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + lru-cache: 10.4.3 + dev: true + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: true + + /html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-agent@5.0.0(supports-color@9.4.0): + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-middleware@2.0.7(@types/express@4.17.21)(debug@4.3.7): + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.15 + http-proxy: 1.18.1(debug@4.3.7) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy-middleware@3.0.3: + resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/http-proxy': 1.17.15 + debug: 4.3.7(supports-color@9.4.0) + http-proxy: 1.18.1(debug@4.3.7) + is-glob: 4.0.3 + is-plain-object: 5.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy@1.18.1(debug@4.3.7): + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9(debug@4.3.7) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + dev: true + + /http-signature@1.4.0: + resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.18.0 + dev: true + + /http-status-codes@2.2.0: + resolution: {integrity: sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==} + dev: true + + /http-status-codes@2.3.0: + resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + dev: true + + /https-proxy-agent@2.2.4: + resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} + engines: {node: '>= 4.5.0'} + dependencies: + agent-base: 4.3.0 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@5.0.1(supports-color@9.4.0): + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.5(supports-color@9.4.0): + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.49 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore-walk@7.0.0: + resolution: {integrity: sha512-T4gbf83A4NH95zvhVYZc+qWocBBGlpzUXLPGurJggw/WIOwicfXJChLDP/iBZnN5WqROSu5Bm3hhle4z8a8YGQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + minimatch: 9.0.5 + dev: true + + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + optional: true + + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: true + + /immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + dev: true + + /immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflation@2.1.0: + resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /ini@5.0.0: + resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /injection-js@2.4.0: + resolution: {integrity: sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==} + dependencies: + tslib: 2.8.1 + dev: true + + /internal-ip@6.2.0: + resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} + engines: {node: '>=10'} + dependencies: + default-gateway: 6.0.3 + ipaddr.js: 1.9.1 + is-ip: 3.1.0 + p-event: 4.2.0 + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + dev: true + + /ip-regex@4.3.0: + resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} + engines: {node: '>=8'} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + + /is-boolean-object@1.2.0: + resolution: {integrity: sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finalizationregistry@1.1.0: + resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + dependencies: + get-east-asian-width: 1.3.0 + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-ip@3.1.0: + resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} + engines: {node: '>=8'} + dependencies: + ip-regex: 4.3.0 + dev: true + + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-network-error@1.1.0: + resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + engines: {node: '>=16'} + dev: true + + /is-number-like@1.0.8: + resolution: {integrity: sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==} + dependencies: + lodash.isfinite: 3.3.2 + dev: true + + /is-number-object@1.1.0: + resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-cwd@1.0.0: + resolution: {integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-path-in-cwd@1.0.1: + resolution: {integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-path-inside: 1.0.1 + dev: true + + /is-path-inside@1.0.1: + resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} + engines: {node: '>=0.10.0'} + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true + + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.6 + dev: true + + /is-regex@1.2.0: + resolution: {integrity: sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + gopd: 1.1.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-stream-ended@0.1.4: + resolution: {integrity: sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string@1.1.0: + resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.1.0: + resolution: {integrity: sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-symbols: 1.1.0 + safe-regex-test: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.16 + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: true + + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + dependencies: + is-inside-container: 1.0.0 + dev: true + + /is@3.3.0: + resolution: {integrity: sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jasmine-core@2.8.0: + resolution: {integrity: sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==} + dev: true + + /jasmine-core@4.6.1: + resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} + dev: true + + /jasmine-core@5.5.0: + resolution: {integrity: sha512-NHOvoPO6o9gVR6pwqEACTEpbgcH+JJ6QDypyymGbSUIFIFsMMbBJ/xsFNud8MSClfnWclXd7RQlAZBz7yVo5TQ==} + dev: true + + /jasmine-reporters@2.5.2: + resolution: {integrity: sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==} + dependencies: + '@xmldom/xmldom': 0.8.10 + mkdirp: 1.0.4 + dev: true + + /jasmine-spec-reporter@7.0.0: + resolution: {integrity: sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==} + dependencies: + colors: 1.4.0 + dev: true + + /jasmine@2.8.0: + resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} + hasBin: true + dependencies: + exit: 0.1.2 + glob: 7.2.3 + jasmine-core: 2.8.0 + dev: true + + /jasmine@5.5.0: + resolution: {integrity: sha512-JKlEVCVD5QBPYLsg/VE+IUtjyseDCrW8rMBu8la+9ysYashDgavMLM9Kotls1FhI6dCJLJ40dBCIfQjGLPZI1Q==} + hasBin: true + dependencies: + glob: 10.4.5 + jasmine-core: 5.5.0 + dev: true + + /jasminewd2@2.2.0: + resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} + engines: {node: '>= 6.9.x'} + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 22.10.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + dev: true + + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + + /js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + dev: true + + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.1.2 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stable-stringify@1.1.1: + resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + isarray: 2.0.5 + jsonify: 0.0.1 + object-keys: 1.1.1 + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + dev: true + + /jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.6.3 + dev: true + + /jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: true + + /jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: true + + /jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + dependencies: + jwa: 2.0.0 + safe-buffer: 5.2.1 + dev: true + + /karma-chrome-launcher@3.2.0: + resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} + dependencies: + which: 1.3.1 + dev: true + + /karma-coverage@2.2.1: + resolution: {integrity: sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==} + engines: {node: '>=10.0.0'} + dependencies: + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /karma-firefox-launcher@2.1.3: + resolution: {integrity: sha512-LMM2bseebLbYjODBOVt7TCPP9OI2vZIXCavIXhkO9m+10Uj5l7u/SKoeRmYx8FYHTVGZSpk6peX+3BMHC1WwNw==} + dependencies: + is-wsl: 2.2.0 + which: 3.0.1 + dev: true + + /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.5.0)(karma-jasmine@5.1.0)(karma@6.4.4): + resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} + peerDependencies: + jasmine-core: ^4.0.0 || ^5.0.0 + karma: ^6.0.0 + karma-jasmine: ^5.0.0 + dependencies: + jasmine-core: 5.5.0 + karma: 6.4.4(debug@4.3.7) + karma-jasmine: 5.1.0(karma@6.4.4) + dev: true + + /karma-jasmine@5.1.0(karma@6.4.4): + resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} + engines: {node: '>=12'} + peerDependencies: + karma: ^6.0.0 + dependencies: + jasmine-core: 4.6.1 + karma: 6.4.4(debug@4.3.7) + dev: true + + /karma-junit-reporter@2.0.1(karma@6.4.4): + resolution: {integrity: sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==} + engines: {node: '>= 8'} + peerDependencies: + karma: '>=0.9' + dependencies: + karma: 6.4.4(debug@4.3.7) + path-is-absolute: 1.0.1 + xmlbuilder: 12.0.0 + dev: true + + /karma-requirejs@1.1.0(karma@6.4.4)(requirejs@2.3.7): + resolution: {integrity: sha512-MHTOYKdwwJBkvYid0TaYvBzOnFH3TDtzo6ie5E4o9SaUSXXsfMRLa/whUz6efVIgTxj1xnKYasNn/XwEgJeB/Q==} + peerDependencies: + karma: '>=0.9' + requirejs: ^2.1.0 + dependencies: + karma: 6.4.4(debug@4.3.7) + requirejs: 2.3.7 + dev: true + + /karma-source-map-support@1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + dependencies: + source-map-support: 0.5.21 + dev: true + + /karma-sourcemap-loader@0.4.0: + resolution: {integrity: sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA==} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /karma@6.4.4(debug@4.3.7): + resolution: {integrity: sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.3 + braces: 3.0.3 + chokidar: 3.6.0 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + http-proxy: 1.18.1(debug@4.3.7) + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.9.1 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.8.1 + source-map: 0.6.1 + tmp: 0.2.3 + ua-parser-js: 0.7.39 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + dependencies: + tsscmp: 1.0.6 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /klaw-sync@6.0.0: + resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + dev: true + + /koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + dev: true + + /koa-etag@4.0.0: + resolution: {integrity: sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==} + dependencies: + etag: 1.8.1 + dev: true + + /koa-send@5.0.1: + resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} + engines: {node: '>= 8'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + http-errors: 1.8.1 + resolve-path: 1.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /koa-static@5.0.0: + resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} + engines: {node: '>= 7.6.0'} + dependencies: + debug: 3.2.7 + koa-send: 5.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /koa@2.15.3: + resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.3.7(supports-color@9.4.0) + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /launch-editor@2.9.1: + resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.2 + dev: true + + /less-loader@12.2.0(less@4.2.1)(webpack@5.96.1): + resolution: {integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + less: 4.2.1 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /less@4.2.1: + resolution: {integrity: sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /license-webpack-plugin@4.0.2(webpack@5.96.1): + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + webpack: 5.96.1(esbuild@0.24.0) + webpack-sources: 3.2.3 + dev: true + + /lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + dependencies: + immediate: 3.0.6 + dev: true + + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + dev: true + + /limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + dev: true + + /lmdb@3.1.5: + resolution: {integrity: sha512-46Mch5Drq+A93Ss3gtbg+Xuvf5BOgIuvhKDWoGa3HcPHI6BL2NCOkRdSx1D4VfzwrxhnsjbyIVsLRlQHu6URvw==} + hasBin: true + dependencies: + msgpackr: 1.11.2 + node-addon-api: 6.1.0 + node-gyp-build-optional-packages: 5.2.2 + ordered-binary: 1.5.3 + weak-lru-cache: 1.2.2 + optionalDependencies: + '@lmdb/lmdb-darwin-arm64': 3.1.5 + '@lmdb/lmdb-darwin-x64': 3.1.5 + '@lmdb/lmdb-linux-arm': 3.1.5 + '@lmdb/lmdb-linux-arm64': 3.1.5 + '@lmdb/lmdb-linux-x64': 3.1.5 + '@lmdb/lmdb-win32-x64': 3.1.5 + dev: true + optional: true + + /lmdb@3.2.0: + resolution: {integrity: sha512-cDeZAM4mXOwN1IdH93a91qXppn4jXV4NHphg53bqQDRFjJnpYZTgGcjrqpsmm209DtXTvmKMcYJd+XrHybwFZg==} + hasBin: true + dependencies: + msgpackr: 1.11.2 + node-addon-api: 6.1.0 + node-gyp-build-optional-packages: 5.2.2 + ordered-binary: 1.5.3 + weak-lru-cache: 1.2.2 + optionalDependencies: + '@lmdb/lmdb-darwin-arm64': 3.2.0 + '@lmdb/lmdb-darwin-x64': 3.2.0 + '@lmdb/lmdb-linux-arm': 3.2.0 + '@lmdb/lmdb-linux-arm64': 3.2.0 + '@lmdb/lmdb-linux-x64': 3.2.0 + '@lmdb/lmdb-win32-x64': 3.2.0 + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + + /loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lockfile@1.0.4: + resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} + dependencies: + signal-exit: 3.0.7 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + dev: true + + /lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + dev: true + + /lodash.isfinite@3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + dev: true + + /lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + dev: true + + /lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + dev: true + + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.7(supports-color@9.4.0) + flatted: 3.3.2 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + dev: true + + /long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + dev: true + + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + dev: true + + /lowdb@1.0.0: + resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + is-promise: 2.2.2 + lodash: 4.17.21 + pify: 3.0.0 + steno: 0.4.4 + dev: true + + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true + + /lru-cache@8.0.5: + resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} + engines: {node: '>=16.14'} + dev: true + + /magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.3 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /make-fetch-happen@13.0.1: + resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/agent': 2.2.2 + cacache: 18.0.4 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.1.2 + minipass-fetch: 3.0.5 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + proc-log: 4.2.0 + promise-retry: 2.0.1 + ssri: 10.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /make-fetch-happen@14.0.3: + resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@npmcli/agent': 3.0.0 + cacache: 19.0.1 + http-cache-semantics: 4.1.1 + minipass: 7.1.2 + minipass-fetch: 4.0.0 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + ssri: 12.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /memfs@4.14.1: + resolution: {integrity: sha512-Fq5CMEth+2iprLJ5mNizRcWuiwRZYjNkUD0zKk224jZunE9CRacTRDK8QLALbMBlNX2y3nY6lKZbesCwDwacig==} + engines: {node: '>= 4.0.0'} + dependencies: + '@jsonjoy.com/json-pack': 1.1.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + tree-dump: 1.0.2(tslib@2.8.1) + tslib: 2.8.1 + dev: true + + /merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + dev: true + + /mini-css-extract-plugin@2.9.2(webpack@5.96.1): + resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + minipass: 7.1.2 + dev: true + + /minipass-fetch@3.0.5: + resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.1.2 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-fetch@4.0.0: + resolution: {integrity: sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + minipass: 7.1.2 + minipass-sized: 1.0.3 + minizlib: 3.0.1 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + dev: true + + /mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + dev: true + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: true + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + dev: true + optional: true + + /msgpackr@1.11.2: + resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} + optionalDependencies: + msgpackr-extract: 3.0.3 + dev: true + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: true + + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /nanocolors@0.2.13: + resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} + dev: true + + /nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + dev: true + optional: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + dev: true + + /negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + dev: true + + /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.0)(tslib@2.8.1)(typescript@5.7.2): + resolution: {integrity: sha512-kqS63grbL+WnG5AveyXmqsMHeY2w6tmApfDuvK9lEC4u1VHfgGoA8Q3RKGkz+32zSI/eiBVXB/qMeeP+1q5QZA==} + engines: {node: ^18.19.1 || >=20.11.1} + hasBin: true + peerDependencies: + '@angular/compiler-cli': ^19.0.0 || ^19.1.0-next.0 + tailwindcss: ^2.0.0 || ^3.0.0 + tslib: ^2.3.0 + typescript: 5.7.2 + peerDependenciesMeta: + tailwindcss: + optional: true + dependencies: + '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@rollup/plugin-json': 6.1.0(rollup@4.28.0) + '@rollup/wasm-node': 4.28.0 + ajv: 8.17.1 + ansi-colors: 4.1.3 + browserslist: 4.24.2 + chokidar: 4.0.1 + commander: 12.1.0 + convert-source-map: 2.0.0 + dependency-graph: 1.0.0 + esbuild: 0.24.0 + fast-glob: 3.3.2 + find-cache-dir: 3.3.2 + injection-js: 2.4.0 + jsonc-parser: 3.3.1 + less: 4.2.1 + ora: 5.4.1 + piscina: 4.7.0 + postcss: 8.4.49 + rxjs: 7.8.1 + sass: 1.81.1 + tslib: 2.8.1 + typescript: 5.7.2 + optionalDependencies: + rollup: 4.28.0 + dev: true + + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: true + + /node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + dev: true + optional: true + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + dev: true + + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + dependencies: + detect-libc: 2.0.3 + dev: true + + /node-gyp@10.3.1: + resolution: {integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.4.5 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.1 + nopt: 7.2.1 + proc-log: 4.2.0 + semver: 7.6.3 + tar: 6.2.1 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: true + + /nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-package-data@7.0.0: + resolution: {integrity: sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + hosted-git-info: 8.0.2 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-bundled@4.0.0: + resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + npm-normalize-package-bin: 4.0.0 + dev: true + + /npm-install-checks@7.1.1: + resolution: {integrity: sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + semver: 7.6.3 + dev: true + + /npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /npm-package-arg@12.0.0: + resolution: {integrity: sha512-ZTE0hbwSdTNL+Stx2zxSqdu2KZfNDcrtrLdIk7XGnQFYBWYDho/ORvXtn5XEePcL3tFpGjHCV3X3xrtDh7eZ+A==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + hosted-git-info: 8.0.2 + proc-log: 5.0.0 + semver: 7.6.3 + validate-npm-package-name: 6.0.0 + dev: true + + /npm-packlist@9.0.0: + resolution: {integrity: sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + ignore-walk: 7.0.0 + dev: true + + /npm-pick-manifest@10.0.0: + resolution: {integrity: sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + npm-install-checks: 7.1.1 + npm-normalize-package-bin: 4.0.0 + npm-package-arg: 12.0.0 + semver: 7.6.3 + dev: true + + /npm-registry-fetch@18.0.2: + resolution: {integrity: sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@npmcli/redact': 3.0.0 + jsonparse: 1.3.1 + make-fetch-happen: 14.0.3 + minipass: 7.1.2 + minipass-fetch: 4.0.0 + minizlib: 3.0.1 + npm-package-arg: 12.0.0 + proc-log: 5.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm@10.9.1: + resolution: {integrity: sha512-yJUw03xLqjiv1D52oHeoS5qmOEC5hkJlhP1cWlSrCgshuxWVyFEEK3M3hLC0NwbTaklLTYrhoIanYsuNP5WUKg==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + dev: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/redact' + - '@npmcli/run-script' + - '@sigstore/tuf' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + + /object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + dev: true + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-object-atoms: 1.0.0 + dev: true + + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + dev: true + + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + dev: true + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + dependencies: + mimic-function: 5.0.1 + dev: true + + /only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + dev: true + + /open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + dev: true + + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /opn@5.3.0: + resolution: {integrity: sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==} + engines: {node: '>=4'} + dependencies: + is-wsl: 1.1.0 + dev: true + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /ordered-binary@1.5.3: + resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-event@4.2.0: + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} + engines: {node: '>=8'} + dependencies: + p-timeout: 3.2.0 + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.1.1 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-map@7.0.2: + resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} + engines: {node: '>=18'} + dev: true + + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: true + + /p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.1.0 + retry: 0.13.1 + dev: true + + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pac-proxy-agent@7.0.2: + resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} + engines: {node: '>= 14'} + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.1(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + dev: true + + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: true + + /pacote@20.0.0: + resolution: {integrity: sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + dependencies: + '@npmcli/git': 6.0.1 + '@npmcli/installed-package-contents': 3.0.0 + '@npmcli/package-json': 6.1.0 + '@npmcli/promise-spawn': 8.0.2 + '@npmcli/run-script': 9.0.1 + cacache: 19.0.1 + fs-minipass: 3.0.3 + minipass: 7.1.2 + npm-package-arg: 12.0.0 + npm-packlist: 9.0.0 + npm-pick-manifest: 10.0.0 + npm-registry-fetch: 18.0.2 + proc-log: 5.0.0 + promise-retry: 2.0.1 + sigstore: 3.0.0 + ssri: 12.0.0 + tar: 6.2.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse5-html-rewriting-stream@7.0.0: + resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} + dependencies: + entities: 4.5.0 + parse5: 7.2.1 + parse5-sax-parser: 7.0.0 + dev: true + + /parse5-sax-parser@7.0.0: + resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} + dependencies: + parse5: 7.2.1 + dev: true + + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: true + + /parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + dependencies: + entities: 4.5.0 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /patch-package@8.0.0: + resolution: {integrity: sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==} + engines: {node: '>=14', npm: '>5'} + hasBin: true + dependencies: + '@yarnpkg/lockfile': 1.1.0 + chalk: 4.1.2 + ci-info: 3.9.0 + cross-spawn: 7.0.6 + find-yarn-workspace-root: 2.0.0 + fs-extra: 9.1.0 + json-stable-stringify: 1.1.1 + klaw-sync: 6.0.0 + minimist: 1.2.8 + open: 7.4.2 + rimraf: 2.7.1 + semver: 7.6.3 + slash: 2.0.0 + tmp: 0.0.33 + yaml: 2.6.1 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: true + + /path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + dev: true + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: true + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + optional: true + + /pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + dev: true + + /pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + dev: true + + /pino@9.4.0: + resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + dev: true + + /piscina@4.7.0: + resolution: {integrity: sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==} + optionalDependencies: + '@napi-rs/nice': 1.0.1 + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + + /pkginfo@0.4.1: + resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + + /portfinder@1.0.32: + resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} + engines: {node: '>= 0.12.0'} + dependencies: + async: 2.6.4 + debug: 3.2.7 + mkdirp: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /portscanner@2.2.0: + resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} + engines: {node: '>=0.4', npm: '>=1.0.0'} + dependencies: + async: 2.6.4 + is-number-like: 1.0.8 + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.96.1): + resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + cosmiconfig: 9.0.0(typescript@5.7.2) + jiti: 1.21.6 + postcss: 8.4.49 + semver: 7.6.3 + webpack: 5.96.1(esbuild@0.24.0) + transitivePeerDependencies: + - typescript + dev: true + + /postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-modules-extract-imports@3.1.0(postcss@8.4.49): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.49 + dev: true + + /postcss-modules-local-by-default@4.1.0(postcss@8.4.49): + resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.2.1(postcss@8.4.49): + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.49): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + dev: true + + /postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@3.4.1: + resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /proc-log@5.0.0: + resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: true + + /process-warning@4.0.0: + resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} + dev: true + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /proto3-json-serializer@2.0.2: + resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} + engines: {node: '>=14.0.0'} + dependencies: + protobufjs: 7.4.0 + dev: true + + /protobufjs@6.8.8: + resolution: {integrity: sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==} + hasBin: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/long': 4.0.2 + '@types/node': 10.17.60 + long: 4.0.0 + dev: true + + /protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.10.1 + long: 5.2.3 + dev: true + + /protractor@7.0.0: + resolution: {integrity: sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==} + engines: {node: '>=10.13.x'} + deprecated: We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular + hasBin: true + dependencies: + '@types/q': 0.0.32 + '@types/selenium-webdriver': 3.0.26 + blocking-proxy: 1.0.1 + browserstack: 1.6.1 + chalk: 1.1.3 + glob: 7.2.3 + jasmine: 2.8.0 + jasminewd2: 2.2.0 + q: 1.4.1 + saucelabs: 1.5.0 + selenium-webdriver: 3.6.0 + source-map-support: 0.4.18 + webdriver-js-extender: 2.1.0 + webdriver-manager: 12.1.9 + yargs: 15.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.2 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + optional: true + + /psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + dependencies: + punycode: 2.3.1 + dev: true + + /pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /puppeteer-core@18.2.1: + resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} + engines: {node: '>=14.1.0'} + dependencies: + cross-fetch: 3.1.5 + debug: 4.3.4 + devtools-protocol: 0.0.1045489 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1(supports-color@9.4.0) + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 8.9.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /puppeteer-core@23.9.0: + resolution: {integrity: sha512-hLVrav2HYMVdK0YILtfJwtnkBAwNOztUdR4aJ5YKDvgsbtagNr6urUJk9HyjRA9e+PaLI3jzJ0wM7A4jSZ7Qxw==} + engines: {node: '>=18'} + dependencies: + '@puppeteer/browsers': 2.4.1 + chromium-bidi: 0.8.0(devtools-protocol@0.0.1367902) + debug: 4.3.7(supports-color@9.4.0) + devtools-protocol: 0.0.1367902 + typed-query-selector: 2.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /puppeteer@18.2.1: + resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} + engines: {node: '>=14.1.0'} + deprecated: < 22.8.2 is no longer supported + dependencies: + https-proxy-agent: 5.0.1(supports-color@9.4.0) + progress: 2.0.3 + proxy-from-env: 1.1.0 + puppeteer-core: 18.2.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /q@1.4.1: + resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + + /q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + 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) + dev: true + + /qjobs@1.2.0: + resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} + engines: {node: '>=0.9'} + dev: true + + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: true + + /qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: true + + /qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: true + + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: true + + /quicktype-core@23.0.170: + resolution: {integrity: sha512-ZsjveG0yJUIijUx4yQshzyQ5EAXKbFSBTQJHnJ+KoSZVxcS+m3GcmDpzrdUIRYMhgLaF11ZGvLSYi5U0xcwemw==} + dependencies: + '@glideapps/ts-necessities': 2.2.3 + browser-or-node: 3.0.0 + collection-utils: 1.0.1 + cross-fetch: 4.0.0 + is-url: 1.2.4 + js-base64: 3.7.7 + lodash: 4.17.21 + pako: 1.0.11 + pluralize: 8.0.0 + readable-stream: 4.5.2 + unicode-properties: 1.4.1 + urijs: 1.19.11 + wordwrap: 1.0.0 + yaml: 2.6.1 + transitivePeerDependencies: + - encoding + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + dev: true + + /real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: true + + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.8 + dev: true + + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + dev: true + + /reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + dev: true + + /reflect.getprototypeof@1.0.7: + resolution: {integrity: sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + gopd: 1.1.0 + which-builtin-type: 1.2.0 + dev: true + + /regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.26.0 + dev: true + + /regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + dev: true + + /regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + + /regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + dev: true + + /regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + dev: true + + /regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + dependencies: + jsesc: 3.0.2 + dev: true + + /request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /requirejs@2.3.7: + resolution: {integrity: sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-path@1.4.0: + resolution: {integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==} + engines: {node: '>= 0.8'} + dependencies: + http-errors: 1.6.3 + path-is-absolute: 1.0.1 + dev: true + + /resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.4.49 + source-map: 0.6.1 + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resp-modifier@6.0.2: + resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + dev: true + + /retry-request@7.0.2(supports-color@9.4.0): + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} + dependencies: + '@types/request': 2.48.12 + extend: 3.0.2 + teeny-request: 9.0.0(supports-color@9.4.0) + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + dependencies: + glob: 10.4.5 + dev: true + + /rollup-license-plugin@3.0.1: + resolution: {integrity: sha512-dbwTbIU7bdZfHnaDQvmUPw8elGvsEmEgKOb6QYJtylEAkwBowOO5fETyhpJWhKxoNkJc9LmKF1PNVR//pxRy3w==} + engines: {node: '>=18.0.0'} + dependencies: + get-npm-tarball-url: 2.1.0 + node-fetch: 3.3.2 + spdx-expression-validate: 2.0.0 + dev: true + + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.67)(rollup@4.28.0): + 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 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@4.28.0) + '@types/node': 18.19.67 + rollup: 4.28.0 + source-map-resolve: 0.6.0 + dev: true + + /rollup@4.26.0: + resolution: {integrity: sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.26.0 + '@rollup/rollup-android-arm64': 4.26.0 + '@rollup/rollup-darwin-arm64': 4.26.0 + '@rollup/rollup-darwin-x64': 4.26.0 + '@rollup/rollup-freebsd-arm64': 4.26.0 + '@rollup/rollup-freebsd-x64': 4.26.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.26.0 + '@rollup/rollup-linux-arm-musleabihf': 4.26.0 + '@rollup/rollup-linux-arm64-gnu': 4.26.0 + '@rollup/rollup-linux-arm64-musl': 4.26.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.26.0 + '@rollup/rollup-linux-riscv64-gnu': 4.26.0 + '@rollup/rollup-linux-s390x-gnu': 4.26.0 + '@rollup/rollup-linux-x64-gnu': 4.26.0 + '@rollup/rollup-linux-x64-musl': 4.26.0 + '@rollup/rollup-win32-arm64-msvc': 4.26.0 + '@rollup/rollup-win32-ia32-msvc': 4.26.0 + '@rollup/rollup-win32-x64-msvc': 4.26.0 + fsevents: 2.3.3 + dev: true + + /rollup@4.28.0: + resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.28.0 + '@rollup/rollup-android-arm64': 4.28.0 + '@rollup/rollup-darwin-arm64': 4.28.0 + '@rollup/rollup-darwin-x64': 4.28.0 + '@rollup/rollup-freebsd-arm64': 4.28.0 + '@rollup/rollup-freebsd-x64': 4.28.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.28.0 + '@rollup/rollup-linux-arm-musleabihf': 4.28.0 + '@rollup/rollup-linux-arm64-gnu': 4.28.0 + '@rollup/rollup-linux-arm64-musl': 4.28.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.28.0 + '@rollup/rollup-linux-riscv64-gnu': 4.28.0 + '@rollup/rollup-linux-s390x-gnu': 4.28.0 + '@rollup/rollup-linux-x64-gnu': 4.28.0 + '@rollup/rollup-linux-x64-musl': 4.28.0 + '@rollup/rollup-win32-arm64-msvc': 4.28.0 + '@rollup/rollup-win32-ia32-msvc': 4.28.0 + '@rollup/rollup-win32-x64-msvc': 4.28.0 + fsevents: 2.3.3 + dev: true + + /run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rx@4.1.0: + resolution: {integrity: sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==} + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.8.1 + dev: true + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.1.0 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.2.0 + dev: true + + /safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sass-loader@16.0.3(sass@1.81.1)(webpack@5.96.1): + resolution: {integrity: sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + dependencies: + neo-async: 2.6.2 + sass: 1.81.1 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /sass@1.80.7: + resolution: {integrity: sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 4.0.1 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + dev: true + + /sass@1.81.1: + resolution: {integrity: sha512-VNLgf4FC5yFyKwAumAAwwNh8X4SevlVREq3Y8aDZIkm0lI/zO1feycMXQ4hn+eB6FVhRbleSQ1Yb/q8juSldTA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 4.0.1 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + dev: true + + /saucelabs@1.5.0: + resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} + dependencies: + https-proxy-agent: 2.2.4 + transitivePeerDependencies: + - supports-color + dev: true + + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + dev: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + dev: true + + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selenium-webdriver@3.6.0: + resolution: {integrity: sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==} + engines: {node: '>= 6.9.0'} + dependencies: + jszip: 3.10.1 + rimraf: 2.7.1 + tmp: 0.0.30 + xml2js: 0.4.23 + dev: true + + /selenium-webdriver@4.27.0: + resolution: {integrity: sha512-LkTJrNz5socxpPnWPODQ2bQ65eYx9JK+DQMYNihpTjMCqHwgWGYQnQTCAAche2W3ZP87alA+1zYPvgS8tHNzMQ==} + engines: {node: '>= 14.21.0'} + dependencies: + '@bazel/runfiles': 6.3.1 + jszip: 3.10.1 + tmp: 0.2.3 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: true + + /semver@5.6.0: + resolution: {integrity: sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==} + hasBin: true + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + 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 + dev: true + + /send@0.19.1: + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + engines: {node: '>= 0.8.0'} + 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 + dev: true + + /send@1.1.0: + resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} + engines: {node: '>= 18'} + dependencies: + debug: 4.3.7(supports-color@9.4.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-types: 2.1.35 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.1.0 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + dev: true + + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + dev: true + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.3 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sigstore@3.0.0: + resolution: {integrity: sha512-PHMifhh3EN4loMcHCz6l3v/luzgT3za+9f8subGgeMNjbJjzH4Ij/YoX3Gvu+kaouJRIlVdTHHCREADYf+ZteA==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@sigstore/bundle': 3.0.0 + '@sigstore/core': 2.0.0 + '@sigstore/protobuf-specs': 0.3.2 + '@sigstore/sign': 3.0.0 + '@sigstore/tuf': 3.0.0 + '@sigstore/verify': 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + dev: true + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /socket.io-client@4.8.1: + resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7(supports-color@9.4.0) + engine.io-client: 6.6.2 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /socket.io@4.8.1: + resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7(supports-color@9.4.0) + engine.io: 6.6.2 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + dev: true + + /sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + dependencies: + atomic-sleep: 1.0.0 + dev: true + + /sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + dependencies: + atomic-sleep: 1.0.0 + dev: true + + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-loader@5.0.0(webpack@5.96.1): + resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.72.1 + dependencies: + iconv-lite: 0.6.3 + source-map-js: 1.2.1 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /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 + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + dev: true + + /source-map-support@0.4.18: + resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} + dependencies: + source-map: 0.5.7 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support@0.5.9: + resolution: {integrity: sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + dev: true + + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + dev: true + + /spdx-expression-validate@2.0.0: + resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} + dependencies: + spdx-expression-parse: 3.0.1 + dev: true + + /spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.7(supports-color@9.4.0) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /split-array-stream@1.0.3: + resolution: {integrity: sha512-yGY35QmZFzZkWZ0eHE06RPBi63umym8m+pdtuC/dlO1ADhdKSfCj0uNn87BYCXBBDFxyTq4oTw0BgLYT0K5z/A==} + dependencies: + async: 2.6.4 + is-stream-ended: 0.1.4 + dev: true + + /split-array-stream@2.0.0: + resolution: {integrity: sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==} + dependencies: + is-stream-ended: 0.1.4 + dev: true + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + dev: true + + /sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.1.2 + dev: true + + /ssri@12.0.0: + resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + minipass: 7.1.2 + dev: true + + /stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: true + + /statuses@1.3.1: + resolution: {integrity: sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /steno@0.4.4: + resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + dependencies: + stubs: 3.0.0 + dev: true + + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: true + + /stream-throttle@0.1.3: + resolution: {integrity: sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==} + engines: {node: '>= 0.10.0'} + hasBin: true + dependencies: + commander: 2.20.3 + limiter: 1.1.5 + dev: true + + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.7(supports-color@9.4.0) + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /streamx@2.20.2: + resolution: {integrity: sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.2.1 + optionalDependencies: + bare-events: 2.5.0 + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.1.0 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + dev: true + + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: true + + /table-layout@4.1.1: + resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} + engines: {node: '>=12.17'} + dependencies: + array-back: 6.2.2 + wordwrapjs: 5.1.0 + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + dev: true + + /tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.3.5 + bare-path: 2.1.3 + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.20.2 + dev: true + + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + dev: true + + /teeny-request@9.0.0(supports-color@9.4.0): + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} + dependencies: + http-proxy-agent: 5.0.0(supports-color@9.4.0) + https-proxy-agent: 5.0.1(supports-color@9.4.0) + node-fetch: 2.7.0 + stream-events: 1.0.5 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /terser-webpack-plugin@5.3.10(esbuild@0.24.0)(webpack@5.96.1): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + esbuild: 0.24.0 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.36.0 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-decoder@1.2.1: + resolution: {integrity: sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thingies@1.21.0(tslib@2.8.1): + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + dependencies: + tslib: 2.8.1 + dev: true + + /thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + dependencies: + real-require: 0.2.0 + dev: true + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: true + + /through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.2 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + dev: true + + /tmp@0.0.30: + resolution: {integrity: sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==} + engines: {node: '>=0.4.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + dev: true + + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: true + + /tree-dump@1.0.2(tslib@2.8.1): + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + dependencies: + tslib: 2.8.1 + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /true-case-path@2.2.1: + resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} + dev: true + + /ts-api-utils@1.4.3(typescript@5.7.2): + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: 5.7.2 + dependencies: + typescript: 5.7.2 + dev: true + + /ts-node@10.9.2(@types/node@18.19.67)(typescript@5.7.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: 5.7.2 + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + 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': 18.19.67 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.7.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + dev: true + + /tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + dev: true + + /tsutils@3.21.0(typescript@5.7.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: 5.7.2 + dependencies: + tslib: 1.14.1 + typescript: 5.7.2 + dev: true + + /tuf-js@3.0.1: + resolution: {integrity: sha512-+68OP1ZzSF84rTckf3FA95vJ1Zlx/uaXyiiKyPd1pA4rZNkpEvDAKmsu1xUSmbF/chCRYgZ6UZkDwC7PmzmAyA==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + '@tufjs/models': 3.0.1 + debug: 4.3.7(supports-color@9.4.0) + make-fetch-happen: 14.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /typanion@3.14.0: + resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.1.0 + has-proto: 1.1.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.3: + resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.1.0 + has-proto: 1.1.0 + is-typed-array: 1.1.13 + reflect.getprototypeof: 1.0.7 + dev: true + + /typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.1.0 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.7 + dev: true + + /typed-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + dev: true + + /typed-graphqlify@3.1.6: + resolution: {integrity: sha512-Snlg1ZrokbkQuemOb4xjWWCJrNcOMeb2Ii0/BwMfwLCcJVNjygyqhrFkrYNvi4gDrwWFrGE0TvxxM+Slym2JMg==} + dev: true + + /typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + dev: true + + /typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /typical@7.3.0: + resolution: {integrity: sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==} + engines: {node: '>=12.17'} + dev: true + + /ua-parser-js@0.7.39: + resolution: {integrity: sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==} + hasBin: true + dev: true + + /ua-parser-js@1.0.39: + resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} + hasBin: true + dev: true + + /uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + dev: true + optional: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.0 + dev: true + + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + dev: true + + /undici@7.0.0: + resolution: {integrity: sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==} + engines: {node: '>=20.18.1'} + dev: true + + /unenv@1.10.0: + resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + dev: true + + /unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + dev: true + + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + + /unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-filename@4.0.0: + resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + unique-slug: 5.0.0 + dev: true + + /unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unique-slug@5.0.0: + resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} + engines: {node: ^18.17.0 || >=20.5.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /universal-user-agent@7.0.2: + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /unix-crypt-td-js@1.1.4: + resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /update-browserslist-db@1.1.1(browserslist@4.24.2): + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid@11.0.3: + resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} + hasBin: true + dev: true + + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-to-istanbul@7.1.2: + resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} + engines: {node: '>=10.10.0'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.4 + dev: true + + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@6.0.0: + resolution: {integrity: sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==} + engines: {node: ^18.17.0 || >=20.5.0} + dev: true + + /validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /verdaccio-audit@13.0.0-next-8.4: + resolution: {integrity: sha512-T4yi/46fLngllx5mvFtXsGcW3MxGZZ9IkHYPK1OQw9+Xj9aOuMec2eFdztTRo9SgqZfgblGSY1ESZYy19sQLvw==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/config': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.4 + express: 4.21.1 + https-proxy-agent: 5.0.1(supports-color@9.4.0) + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /verdaccio-auth-memory@10.2.2: + resolution: {integrity: sha512-JCAnSqwq2l1UPt0hQcPn1B3X9mYpJ5zMsDvuDdmnlWLkrIDx2Wev5fluW0HC9hcFMITFl/DJj/DyzYOOqwhFSQ==} + engines: {node: '>=8'} + dependencies: + '@verdaccio/commons-api': 10.2.0 + dev: true + + /verdaccio-htpasswd@13.0.0-next-8.4: + resolution: {integrity: sha512-w0knjKz8SdBGSv0Kt61LoUOCYBZ2/iig3bVbGFWTj4MwCUG6eNewMoQ6nbrk+kyHNFVq75IzT1eIhXDEysx15Q==} + engines: {node: '>=18'} + dependencies: + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/file-locking': 13.0.0-next-8.2 + apache-md5: 1.1.8 + bcryptjs: 2.4.3 + core-js: 3.37.1 + debug: 4.3.7(supports-color@9.4.0) + http-errors: 2.0.0 + unix-crypt-td-js: 1.1.4 + transitivePeerDependencies: + - supports-color + dev: true + + /verdaccio@6.0.2(typanion@3.14.0): + resolution: {integrity: sha512-XthgJlF1hGW+GR/apRLZ7DQw26XpLI+xjMGb7dhJKxI4Pz2gSiEY1RXP9T9I/rlIBr9Zx6rYOgRk7A9Aeq/kpg==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@cypress/request': 3.0.5 + '@verdaccio/auth': 8.0.0-next-8.4 + '@verdaccio/config': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/local-storage-legacy': 11.0.2 + '@verdaccio/logger': 8.0.0-next-8.4 + '@verdaccio/middleware': 8.0.0-next-8.4 + '@verdaccio/search-indexer': 8.0.0-next-8.2 + '@verdaccio/signature': 8.0.0-next-8.1 + '@verdaccio/streams': 10.2.1 + '@verdaccio/tarball': 13.0.0-next-8.4 + '@verdaccio/ui-theme': 8.0.0-next-8.4 + '@verdaccio/url': 13.0.0-next-8.4 + '@verdaccio/utils': 7.0.1-next-8.1 + JSONStream: 1.3.5 + async: 3.2.6 + clipanion: 4.0.0-rc.4(typanion@3.14.0) + compression: 1.7.5 + cors: 2.8.5 + debug: 4.3.7(supports-color@9.4.0) + envinfo: 7.14.0 + express: 4.21.1 + 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.4 + verdaccio-htpasswd: 13.0.0-next-8.4 + transitivePeerDependencies: + - encoding + - supports-color + - typanion + dev: true + + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + dev: true + + /vite@5.4.11(@types/node@18.19.67)(less@4.2.1)(sass@1.80.7)(terser@5.36.0): + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.19.67 + esbuild: 0.21.5 + less: 4.2.1 + postcss: 8.4.49 + rollup: 4.28.0 + sass: 1.80.7 + terser: 5.36.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite@6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.81.1)(terser@5.36.0): + resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + dependencies: + '@types/node': 18.19.67 + esbuild: 0.24.0 + less: 4.2.1 + postcss: 8.4.49 + rollup: 4.28.0 + sass: 1.81.1 + terser: 5.36.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /void-elements@2.0.1: + resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} + engines: {node: '>=0.10.0'} + dev: true + + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /weak-lru-cache@1.2.2: + resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + dev: true + + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + dev: true + + /webdriver-js-extender@2.1.0: + resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} + engines: {node: '>=6.9.x'} + dependencies: + '@types/selenium-webdriver': 3.0.26 + selenium-webdriver: 3.6.0 + dev: true + + /webdriver-manager@12.1.9: + resolution: {integrity: sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==} + engines: {node: '>=6.9.x'} + hasBin: true + dependencies: + adm-zip: 0.5.16 + chalk: 1.1.3 + del: 2.2.2 + glob: 7.2.3 + ini: 1.3.8 + minimist: 1.2.8 + q: 1.5.1 + request: 2.88.2 + rimraf: 2.7.1 + semver: 5.7.2 + xml2js: 0.4.23 + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-dev-middleware@7.4.2(webpack@5.96.1): + resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + dependencies: + colorette: 2.0.20 + memfs: 4.14.1 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.96.1): + resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.13 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.5 + connect-history-api-fallback: 2.0.0 + express: 4.21.1 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.7(@types/express@4.17.21)(debug@4.3.7) + ipaddr.js: 2.2.0 + launch-editor: 2.9.1 + open: 10.1.0 + p-retry: 6.2.1 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.96.1(esbuild@0.24.0) + webpack-dev-middleware: 7.4.2(webpack@5.96.1) + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /webpack-merge@6.0.1: + resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} + engines: {node: '>=18.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-subresource-integrity@5.1.0(webpack@5.96.1): + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + typed-assert: 1.0.9 + webpack: 5.96.1(esbuild@0.24.0) + dev: true + + /webpack@5.96.1(esbuild@0.24.0): + resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + browserslist: 4.24.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.24.0)(webpack@5.96.1) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /which-boxed-primitive@1.1.0: + resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} + engines: {node: '>= 0.4'} + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.0 + is-number-object: 1.1.0 + is-string: 1.1.0 + is-symbol: 1.1.0 + dev: true + + /which-builtin-type@1.2.0: + resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.1.0 + is-generator-function: 1.0.10 + is-regex: 1.2.0 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.1.0 + which-collection: 1.0.2 + which-typed-array: 1.1.16 + dev: true + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + + /which-typed-array@1.1.16: + resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.1.0 + has-tostringtag: 1.0.2 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wordwrapjs@5.1.0: + resolution: {integrity: sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==} + engines: {node: '>=12.17'} + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.9.0: + resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xhr2@0.2.1: + resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} + engines: {node: '>= 6'} + dev: true + + /xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + dev: true + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: true + + /xmlbuilder@12.0.0: + resolution: {integrity: sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==} + engines: {node: '>=6.0'} + dev: true + + /xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + dev: true + + /yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + dev: true + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + dev: true + + /yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + dev: true + + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + dev: true + + /zone.js@0.15.0: + resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} + dev: true + + github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.0)(terser@5.36.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/07617f0f8540d27f8895b1820a6f994e1e5b7277} + id: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277 + name: '@angular/bazel' + version: 19.0.0-next.7 + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + hasBin: true + peerDependencies: + '@angular/compiler-cli': 19.0.0-next.7+sha-00a79d0 + '@bazel/concatjs': ^5.3.0 + '@bazel/worker': ^5.3.0 + '@rollup/plugin-commonjs': ^28.0.0 + '@rollup/plugin-node-resolve': ^13.0.4 + rollup: ^2.56.3 + rollup-plugin-sourcemaps: ^0.6.3 + terser: ^5.9.0 + typescript: 5.7.2 + peerDependenciesMeta: + terser: + optional: true + dependencies: + '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) + '@bazel/worker': 5.8.1 + '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) + '@rollup/plugin-commonjs': 28.0.1(rollup@4.28.0) + '@rollup/plugin-node-resolve': 13.3.0(rollup@4.28.0) + magic-string: 0.30.14 + rollup: 4.28.0 + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.67)(rollup@4.28.0) + terser: 5.36.0 + tslib: 2.8.1 + typescript: 5.7.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + github.com/angular/dev-infra-private-build-tooling-builds/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(chokidar@4.0.1)(debug@4.3.7)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.36.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9} + id: github.com/angular/dev-infra-private-build-tooling-builds/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9 + name: '@angular/build-tooling' + version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + dependencies: + '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/build': 19.0.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.36.0)(typescript@5.7.2) + '@babel/core': 7.26.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) + '@bazel/buildifier': 6.3.3 + '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) + '@bazel/esbuild': 5.8.1 + '@bazel/protractor': 5.8.1(protractor@7.0.0) + '@bazel/runfiles': 5.8.1 + '@bazel/terser': 5.8.1(terser@5.36.0) + '@bazel/typescript': 5.8.1(typescript@5.7.2) + '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) + '@types/browser-sync': 2.29.0 + '@types/minimatch': 5.1.2 + '@types/node': 18.19.67 + '@types/selenium-webdriver': 4.1.27 + '@types/send': 0.17.4 + '@types/tmp': 0.2.6 + '@types/ws': 8.5.13 + '@types/yargs': 17.0.33 + browser-sync: 3.0.3(debug@4.3.7) + prettier: 3.4.1 + protractor: 7.0.0 + selenium-webdriver: 4.27.0 + send: 1.1.0 + source-map: 0.7.4 + tmp: 0.2.3 + true-case-path: 2.2.1 + tslib: 2.8.1 + typescript: 5.7.2 + uuid: 11.0.3 + yargs: 17.7.2 + transitivePeerDependencies: + - '@angular/compiler' + - '@angular/compiler-cli' + - '@angular/localize' + - '@angular/platform-server' + - '@angular/service-worker' + - '@angular/ssr' + - bufferutil + - chokidar + - debug + - karma + - karma-chrome-launcher + - karma-firefox-launcher + - karma-jasmine + - karma-junit-reporter + - karma-requirejs + - karma-sourcemap-loader + - less + - lightningcss + - postcss + - rxjs + - sass-embedded + - stylus + - sugarss + - supports-color + - tailwindcss + - terser + - utf-8-validate + - zone.js + dev: true + + github.com/angular/dev-infra-private-ng-dev-builds/579163373d32ec04ef9dab6c21e34bfc6d40b127: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/579163373d32ec04ef9dab6c21e34bfc6d40b127} + name: '@angular/ng-dev' + version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + hasBin: true + dependencies: + '@google-cloud/spanner': 7.16.0(supports-color@9.4.0) + '@octokit/rest': 21.0.2 + '@types/semver': 7.5.8 + '@types/supports-color': 8.1.3 + '@yarnpkg/lockfile': 1.1.0 + chalk: 5.3.0 + semver: 7.6.3 + supports-color: 9.4.0 + typed-graphqlify: 3.1.6 + typescript: 5.7.2 + yaml: 2.6.1 + transitivePeerDependencies: + - encoding + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000000..d05a7e7dc84a --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - . diff --git a/yarn.lock b/yarn.lock index 44e811cc46b3..641e99f8b44b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,31 +15,6 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect-cli@workspace:packages/angular_devkit/architect_cli": - version: 0.0.0-use.local - resolution: "@angular-devkit/architect-cli@workspace:packages/angular_devkit/architect_cli" - dependencies: - "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@types/progress": "npm:2.0.7" - ansi-colors: "npm:4.1.3" - progress: "npm:2.0.3" - symbol-observable: "npm:4.0.0" - yargs-parser: "npm:21.1.1" - bin: - architect: ./bin/architect.js - languageName: unknown - linkType: soft - -"@angular-devkit/architect@npm:0.0.0-EXPERIMENTAL-PLACEHOLDER, @angular-devkit/architect@workspace:packages/angular_devkit/architect": - version: 0.0.0-use.local - resolution: "@angular-devkit/architect@workspace:packages/angular_devkit/architect" - dependencies: - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - rxjs: "npm:7.8.1" - languageName: unknown - linkType: soft - "@angular-devkit/architect@npm:0.1901.0-next.0": version: 0.1901.0-next.0 resolution: "@angular-devkit/architect@npm:0.1901.0-next.0" @@ -55,145 +30,6 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/build-angular@workspace:packages/angular_devkit/build_angular": - version: 0.0.0-use.local - resolution: "@angular-devkit/build-angular@workspace:packages/angular_devkit/build_angular" - dependencies: - "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" - "@angular-devkit/build-webpack": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/build": "npm:0.0.0-PLACEHOLDER" - "@babel/core": "npm:7.26.0" - "@babel/generator": "npm:7.26.3" - "@babel/helper-annotate-as-pure": "npm:7.25.9" - "@babel/helper-split-export-declaration": "npm:7.24.7" - "@babel/plugin-transform-async-generator-functions": "npm:7.25.9" - "@babel/plugin-transform-async-to-generator": "npm:7.25.9" - "@babel/plugin-transform-runtime": "npm:7.25.9" - "@babel/preset-env": "npm:7.26.0" - "@babel/runtime": "npm:7.26.0" - "@discoveryjs/json-ext": "npm:0.6.3" - "@ngtools/webpack": "npm:0.0.0-PLACEHOLDER" - "@vitejs/plugin-basic-ssl": "npm:1.2.0" - ansi-colors: "npm:4.1.3" - autoprefixer: "npm:10.4.20" - babel-loader: "npm:9.2.1" - browserslist: "npm:^4.21.5" - copy-webpack-plugin: "npm:12.0.2" - css-loader: "npm:7.1.2" - esbuild: "npm:0.24.0" - esbuild-wasm: "npm:0.24.0" - fast-glob: "npm:3.3.2" - http-proxy-middleware: "npm:3.0.3" - istanbul-lib-instrument: "npm:6.0.3" - jsonc-parser: "npm:3.3.1" - karma-source-map-support: "npm:1.4.0" - less: "npm:4.2.1" - less-loader: "npm:12.2.0" - license-webpack-plugin: "npm:4.0.2" - loader-utils: "npm:3.3.1" - mini-css-extract-plugin: "npm:2.9.2" - open: "npm:10.1.0" - ora: "npm:5.4.1" - picomatch: "npm:4.0.2" - piscina: "npm:4.8.0" - postcss: "npm:8.4.49" - postcss-loader: "npm:8.1.1" - resolve-url-loader: "npm:5.0.0" - rxjs: "npm:7.8.1" - sass: "npm:1.83.0" - sass-loader: "npm:16.0.4" - semver: "npm:7.6.3" - source-map-loader: "npm:5.0.0" - source-map-support: "npm:0.5.21" - terser: "npm:5.37.0" - tree-kill: "npm:1.2.2" - tslib: "npm:2.8.1" - undici: "npm:7.1.0" - webpack: "npm:5.97.1" - webpack-dev-middleware: "npm:7.4.2" - webpack-dev-server: "npm:5.2.0" - webpack-merge: "npm:6.0.1" - webpack-subresource-integrity: "npm:5.1.0" - peerDependencies: - "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 - "@angular/localize": ^19.0.0 || ^19.1.0-next.0 - "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 - "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 - "@angular/ssr": ^0.0.0-PLACEHOLDER - "@web/test-runner": ^0.19.0 - browser-sync: ^3.0.2 - jest: ^29.5.0 - jest-environment-jsdom: ^29.5.0 - karma: ^6.3.0 - ng-packagr: ^19.0.0 || ^19.1.0-next.0 - protractor: ^7.0.0 - tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=5.5 <5.8" - dependenciesMeta: - esbuild: - optional: true - peerDependenciesMeta: - "@angular/localize": - optional: true - "@angular/platform-server": - optional: true - "@angular/service-worker": - optional: true - "@angular/ssr": - optional: true - "@web/test-runner": - optional: true - browser-sync: - optional: true - jest: - optional: true - jest-environment-jsdom: - optional: true - karma: - optional: true - ng-packagr: - optional: true - protractor: - optional: true - tailwindcss: - optional: true - languageName: unknown - linkType: soft - -"@angular-devkit/build-webpack@npm:0.0.0-EXPERIMENTAL-PLACEHOLDER, @angular-devkit/build-webpack@workspace:packages/angular_devkit/build_webpack": - version: 0.0.0-use.local - resolution: "@angular-devkit/build-webpack@workspace:packages/angular_devkit/build_webpack" - dependencies: - "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - rxjs: "npm:7.8.1" - webpack: "npm:5.97.1" - peerDependencies: - webpack: ^5.30.0 - webpack-dev-server: ^5.0.2 - languageName: unknown - linkType: soft - -"@angular-devkit/core@npm:0.0.0-PLACEHOLDER, @angular-devkit/core@workspace:packages/angular_devkit/core": - version: 0.0.0-use.local - resolution: "@angular-devkit/core@workspace:packages/angular_devkit/core" - dependencies: - ajv: "npm:8.17.1" - ajv-formats: "npm:3.0.1" - jsonc-parser: "npm:3.3.1" - picomatch: "npm:4.0.2" - rxjs: "npm:7.8.1" - source-map: "npm:0.7.4" - peerDependencies: - chokidar: ^4.0.0 - peerDependenciesMeta: - chokidar: - optional: true - languageName: unknown - linkType: soft - "@angular-devkit/core@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular-devkit/core@npm:19.1.0-next.0" @@ -218,33 +54,6 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/schematics-cli@workspace:packages/angular_devkit/schematics_cli": - version: 0.0.0-use.local - resolution: "@angular-devkit/schematics-cli@workspace:packages/angular_devkit/schematics_cli" - dependencies: - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular-devkit/schematics": "npm:0.0.0-PLACEHOLDER" - "@inquirer/prompts": "npm:7.2.0" - ansi-colors: "npm:4.1.3" - symbol-observable: "npm:4.0.0" - yargs-parser: "npm:21.1.1" - bin: - schematics: ./bin/schematics.js - languageName: unknown - linkType: soft - -"@angular-devkit/schematics@npm:0.0.0-PLACEHOLDER, @angular-devkit/schematics@workspace:packages/angular_devkit/schematics": - version: 0.0.0-use.local - resolution: "@angular-devkit/schematics@workspace:packages/angular_devkit/schematics" - dependencies: - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - jsonc-parser: "npm:3.3.1" - magic-string: "npm:0.30.15" - ora: "npm:5.4.1" - rxjs: "npm:7.8.1" - languageName: unknown - linkType: soft - "@angular/animations@npm:19.1.0-next.3": version: 19.1.0-next.3 resolution: "@angular/animations@npm:19.1.0-next.3" @@ -256,7 +65,7 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#commit=07617f0f8540d27f8895b1820a6f994e1e5b7277": +"@angular/bazel@https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277": version: 19.0.0-next.7+sha-00a79d0 resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=07617f0f8540d27f8895b1820a6f994e1e5b7277" dependencies: @@ -285,35 +94,6 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch": - version: 19.0.0-next.7+sha-00a79d0 - resolution: "@angular/bazel@patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch::version=19.0.0-next.7%2Bsha-00a79d0&hash=f67b3e" - dependencies: - "@microsoft/api-extractor": "npm:^7.24.2" - magic-string: "npm:^0.30.0" - tslib: "npm:^2.3.0" - peerDependencies: - "@angular/compiler-cli": 19.0.0-next.7+sha-00a79d0 - "@bazel/concatjs": ^5.3.0 - "@bazel/worker": ^5.3.0 - "@rollup/plugin-commonjs": ^28.0.0 - "@rollup/plugin-node-resolve": ^13.0.4 - rollup: ^2.56.3 - rollup-plugin-sourcemaps: ^0.6.3 - terser: ^5.9.0 - typescript: ">=5.5 <5.7" - peerDependenciesMeta: - terser: - optional: true - bin: - ngc-wrapped: ./src/ngc-wrapped/index.mjs - packager: ./src/ng_package/packager.mjs - types_bundler: ./src/types_bundle/index.mjs - xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/a6708251649781290bec4d4b6839b55988f59f4f36b22de07765571290cfe4a1c608b4a33775fabe58e0b06ac9da8dd67bb13ad7e183f06750cd8ee1c0b053d4 - languageName: node - linkType: hard - "@angular/benchpress@npm:0.3.0": version: 0.3.0 resolution: "@angular/benchpress@npm:0.3.0" @@ -367,68 +147,6 @@ __metadata: languageName: node linkType: hard -"@angular/build@npm:0.0.0-PLACEHOLDER, @angular/build@workspace:packages/angular/build": - version: 0.0.0-use.local - resolution: "@angular/build@workspace:packages/angular/build" - dependencies: - "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" - "@babel/core": "npm:7.26.0" - "@babel/helper-annotate-as-pure": "npm:7.25.9" - "@babel/helper-split-export-declaration": "npm:7.24.7" - "@babel/plugin-syntax-import-attributes": "npm:7.26.0" - "@inquirer/confirm": "npm:5.1.0" - "@vitejs/plugin-basic-ssl": "npm:1.2.0" - beasties: "npm:0.2.0" - browserslist: "npm:^4.23.0" - esbuild: "npm:0.24.0" - fast-glob: "npm:3.3.2" - https-proxy-agent: "npm:7.0.6" - istanbul-lib-instrument: "npm:6.0.3" - listr2: "npm:8.2.5" - lmdb: "npm:3.2.0" - magic-string: "npm:0.30.15" - mrmime: "npm:2.0.0" - parse5-html-rewriting-stream: "npm:7.0.0" - picomatch: "npm:4.0.2" - piscina: "npm:4.8.0" - rollup: "npm:4.28.1" - sass: "npm:1.83.0" - semver: "npm:7.6.3" - vite: "npm:6.0.3" - watchpack: "npm:2.4.2" - peerDependencies: - "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 - "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 - "@angular/localize": ^19.0.0 || ^19.1.0-next.0 - "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 - "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 - "@angular/ssr": ^0.0.0-PLACEHOLDER - less: ^4.2.0 - postcss: ^8.4.0 - tailwindcss: ^2.0.0 || ^3.0.0 - typescript: ">=5.5 <5.8" - dependenciesMeta: - lmdb: - optional: true - peerDependenciesMeta: - "@angular/localize": - optional: true - "@angular/platform-server": - optional: true - "@angular/service-worker": - optional: true - "@angular/ssr": - optional: true - less: - optional: true - postcss: - optional: true - tailwindcss: - optional: true - languageName: unknown - linkType: soft - "@angular/build@npm:19.1.0-next.0": version: 19.1.0-next.0 resolution: "@angular/build@npm:19.1.0-next.0" @@ -513,32 +231,6 @@ __metadata: languageName: node linkType: hard -"@angular/cli@npm:0.0.0-PLACEHOLDER, @angular/cli@workspace:packages/angular/cli": - version: 0.0.0-use.local - resolution: "@angular/cli@workspace:packages/angular/cli" - dependencies: - "@angular-devkit/architect": "npm:0.0.0-EXPERIMENTAL-PLACEHOLDER" - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular-devkit/schematics": "npm:0.0.0-PLACEHOLDER" - "@inquirer/prompts": "npm:7.2.0" - "@listr2/prompt-adapter-inquirer": "npm:2.0.18" - "@schematics/angular": "npm:0.0.0-PLACEHOLDER" - "@yarnpkg/lockfile": "npm:1.1.0" - ini: "npm:5.0.0" - jsonc-parser: "npm:3.3.1" - listr2: "npm:8.2.5" - npm-package-arg: "npm:12.0.1" - npm-pick-manifest: "npm:10.0.0" - pacote: "npm:20.0.0" - resolve: "npm:1.22.8" - semver: "npm:7.6.3" - symbol-observable: "npm:4.0.0" - yargs: "npm:17.7.2" - bin: - ng: ./bin/ng.js - languageName: unknown - linkType: soft - "@angular/common@npm:19.1.0-next.3": version: 19.1.0-next.3 resolution: "@angular/common@npm:19.1.0-next.3" @@ -612,23 +304,13 @@ __metadata: languageName: node linkType: hard -"@angular/create@workspace:packages/angular/create": - version: 0.0.0-use.local - resolution: "@angular/create@workspace:packages/angular/create" - dependencies: - "@angular/cli": "npm:0.0.0-PLACEHOLDER" - bin: - create: ./src/index.js - languageName: unknown - linkType: soft - "@angular/devkit-repo@workspace:.": version: 0.0.0-use.local resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.3" - "@angular/bazel": "patch:@angular/bazel@https%3A//github.com/angular/bazel-builds.git%23commit=07617f0f8540d27f8895b1820a6f994e1e5b7277#~/.yarn/patches/@angular-bazel-https-9848736cf4.patch" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277" "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0" "@angular/cdk": "npm:19.1.0-next.2" "@angular/common": "npm:19.1.0-next.3" @@ -656,8 +338,8 @@ __metadata: "@babel/runtime": "npm:7.26.0" "@bazel/bazelisk": "npm:1.25.0" "@bazel/buildifier": "npm:7.3.1" - "@bazel/concatjs": "patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch" - "@bazel/jasmine": "patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch" + "@bazel/concatjs": "npm:5.8.1" + "@bazel/jasmine": "npm:5.8.1" "@bazel/rollup": "npm:^5.8.1" "@bazel/runfiles": "npm:^5.8.1" "@discoveryjs/json-ext": "npm:0.6.3" @@ -750,6 +432,7 @@ __metadata: ora: "npm:5.4.1" pacote: "npm:20.0.0" parse5-html-rewriting-stream: "npm:7.0.0" + patch-package: "npm:^8.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.8.0" postcss: "npm:8.4.49" @@ -916,21 +599,6 @@ __metadata: languageName: node linkType: hard -"@angular/pwa@workspace:packages/angular/pwa": - version: 0.0.0-use.local - resolution: "@angular/pwa@workspace:packages/angular/pwa" - dependencies: - "@angular-devkit/schematics": "npm:0.0.0-PLACEHOLDER" - "@schematics/angular": "npm:0.0.0-PLACEHOLDER" - parse5-html-rewriting-stream: "npm:7.0.0" - peerDependencies: - "@angular/cli": ^19.0.0 || ^19.1.0-next.0 - peerDependenciesMeta: - "@angular/cli": - optional: true - languageName: unknown - linkType: soft - "@angular/router@npm:19.1.0-next.3": version: 19.1.0-next.3 resolution: "@angular/router@npm:19.1.0-next.3" @@ -959,29 +627,6 @@ __metadata: languageName: node linkType: hard -"@angular/ssr@workspace:packages/angular/ssr": - version: 0.0.0-use.local - resolution: "@angular/ssr@workspace:packages/angular/ssr" - dependencies: - "@angular/common": "npm:19.1.0-next.3" - "@angular/compiler": "npm:19.1.0-next.3" - "@angular/core": "npm:19.1.0-next.3" - "@angular/platform-browser": "npm:19.1.0-next.3" - "@angular/platform-server": "npm:19.1.0-next.3" - "@angular/router": "npm:19.1.0-next.3" - "@bazel/runfiles": "npm:^5.8.1" - tslib: "npm:^2.3.0" - peerDependencies: - "@angular/common": ^19.0.0 || ^19.1.0-next.0 - "@angular/core": ^19.0.0 || ^19.1.0-next.0 - "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 - "@angular/router": ^19.0.0 || ^19.1.0-next.0 - peerDependenciesMeta: - "@angular/platform-server": - optional: true - languageName: unknown - linkType: soft - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" @@ -2116,7 +1761,17 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 + languageName: node + linkType: hard + +"@babel/types@npm:^7.26.3": version: 7.26.3 resolution: "@babel/types@npm:7.26.3" dependencies: @@ -2175,27 +1830,6 @@ __metadata: languageName: node linkType: hard -"@bazel/concatjs@patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch": - version: 5.8.1 - resolution: "@bazel/concatjs@patch:@bazel/concatjs@npm%3A5.8.1#~/.yarn/patches/@bazel-concatjs-npm-5.8.1-1bf81df846.patch::version=5.8.1&hash=13d359" - dependencies: - protobufjs: "npm:6.8.8" - source-map-support: "npm:0.5.9" - tsutils: "npm:3.21.0" - peerDependencies: - karma: ">=4.0.0" - karma-chrome-launcher: ">=2.0.0" - karma-firefox-launcher: ">=1.0.0" - karma-jasmine: ">=2.0.0" - karma-junit-reporter: ">=2.0.0" - karma-requirejs: ">=1.0.0" - karma-sourcemap-loader: ">=0.3.0" - bin: - tsc_wrapped: internal/tsc_wrapped/tsc_wrapped.js - checksum: 10c0/6b51579124bdc15650603d6a621fab7b11d7d4185d0eaa113ec23cad337436b89d690880a9285968e100e405678cc610b59ee335681e13035709dc444cc89733 - languageName: node - linkType: hard - "@bazel/esbuild@npm:5.8.1": version: 5.8.1 resolution: "@bazel/esbuild@npm:5.8.1" @@ -2218,21 +1852,6 @@ __metadata: languageName: node linkType: hard -"@bazel/jasmine@patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch": - version: 5.8.1 - resolution: "@bazel/jasmine@patch:@bazel/jasmine@npm%3A5.8.1#~/.yarn/patches/@bazel-jasmine-npm-5.8.1-3370fee155.patch::version=5.8.1&hash=19675e" - dependencies: - c8: "npm:~7.5.0" - jasmine-reporters: "npm:~2.5.0" - peerDependencies: - jasmine: ">=2.99.0" - jasmine-core: ">=2.99.0" - bin: - bazel-jasmine-runner: jasmine_runner.js - checksum: 10c0/a6e58ab5b125d0512801d0216dfc42b8ef8f66eee640f96adac19fcb445d58336f2630ee4e6e9199b67a23e599567b0a77cc65fb48705c5d0c4a97de893ee114 - languageName: node - linkType: hard - "@bazel/protractor@npm:5.8.1": version: 5.8.1 resolution: "@bazel/protractor@npm:5.8.1" @@ -3378,22 +2997,6 @@ __metadata: languageName: node linkType: hard -"@ngtools/webpack@npm:0.0.0-PLACEHOLDER, @ngtools/webpack@workspace:packages/ngtools/webpack": - version: 0.0.0-use.local - resolution: "@ngtools/webpack@workspace:packages/ngtools/webpack" - dependencies: - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular/compiler": "npm:19.1.0-next.3" - "@angular/compiler-cli": "npm:19.1.0-next.3" - typescript: "npm:5.7.2" - webpack: "npm:5.97.1" - peerDependencies: - "@angular/compiler-cli": ^19.0.0 || ^19.1.0-next.0 - typescript: ">=5.5 <5.8" - webpack: ^5.54.0 - languageName: unknown - linkType: soft - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4123,6 +3726,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.0" @@ -4137,6 +3747,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-android-arm64@npm:4.27.4" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-android-arm64@npm:4.28.0" @@ -4151,6 +3768,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.0" @@ -4165,6 +3789,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-darwin-x64@npm:4.28.0" @@ -4179,6 +3810,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.0" @@ -4193,6 +3831,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.0" @@ -4207,6 +3852,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0" @@ -4221,6 +3873,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0" @@ -4235,6 +3894,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.0" @@ -4249,6 +3915,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.0" @@ -4270,6 +3943,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0" @@ -4284,6 +3964,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0" @@ -4298,6 +3985,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.0" @@ -4312,6 +4006,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.0" @@ -4326,6 +4027,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.0" @@ -4340,6 +4048,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.0" @@ -4354,6 +4069,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.0" @@ -4368,6 +4090,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.27.4": + version: 4.27.4 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.28.0": version: 4.28.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.0" @@ -4462,16 +4191,6 @@ __metadata: languageName: node linkType: hard -"@schematics/angular@npm:0.0.0-PLACEHOLDER, @schematics/angular@workspace:packages/schematics/angular": - version: 0.0.0-use.local - resolution: "@schematics/angular@workspace:packages/schematics/angular" - dependencies: - "@angular-devkit/core": "npm:0.0.0-PLACEHOLDER" - "@angular-devkit/schematics": "npm:0.0.0-PLACEHOLDER" - jsonc-parser: "npm:3.3.1" - languageName: unknown - linkType: soft - "@sigstore/bundle@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/bundle@npm:3.0.0" @@ -5206,7 +4925,7 @@ __metadata: languageName: node linkType: hard -"@types/progress@npm:2.0.7, @types/progress@npm:^2.0.3": +"@types/progress@npm:^2.0.3": version: 2.0.7 resolution: "@types/progress@npm:2.0.7" dependencies: @@ -6898,6 +6617,13 @@ __metadata: languageName: node linkType: hard +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + languageName: node + linkType: hard + "atob@npm:^2.1.2": version: 2.1.2 resolution: "atob@npm:2.1.2" @@ -7698,6 +7424,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.7.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + "ci-info@npm:^4.0.0, ci-info@npm:^4.1.0": version: 4.1.0 resolution: "ci-info@npm:4.1.0" @@ -9991,6 +9724,15 @@ __metadata: languageName: node linkType: hard +"find-yarn-workspace-root@npm:^2.0.0": + version: 2.0.0 + resolution: "find-yarn-workspace-root@npm:2.0.0" + dependencies: + micromatch: "npm:^4.0.2" + checksum: 10c0/b0d3843013fbdaf4e57140e0165889d09fa61745c9e85da2af86e54974f4cc9f1967e40f0d8fc36a79d53091f0829c651d06607d552582e53976f3cd8f4e5689 + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.2.0 resolution: "flat-cache@npm:3.2.0" @@ -10157,6 +9899,18 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^9.0.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + languageName: node + linkType: hard + "fs-extra@npm:~7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" @@ -10533,7 +10287,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -11704,7 +11458,7 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.2.0": +"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -12068,6 +11822,18 @@ __metadata: languageName: node linkType: hard +"json-stable-stringify@npm:^1.0.2": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.5" + isarray: "npm:^2.0.5" + jsonify: "npm:^0.0.1" + object-keys: "npm:^1.1.1" + checksum: 10c0/3801e3eeccbd030afb970f54bea690a079cfea7d9ed206a1b17ca9367f4b7772c764bf77a48f03e56b50e5f7ee7d11c52339fe20d8d7ccead003e4ca69e4cfde + languageName: node + linkType: hard + "json-stringify-nice@npm:^1.1.4": version: 1.1.4 resolution: "json-stringify-nice@npm:1.1.4" @@ -12133,6 +11899,26 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + languageName: node + linkType: hard + +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 10c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 + languageName: node + linkType: hard + "jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" @@ -12363,6 +12149,15 @@ __metadata: languageName: node linkType: hard +"klaw-sync@npm:^6.0.0": + version: 6.0.0 + resolution: "klaw-sync@npm:6.0.0" + dependencies: + graceful-fs: "npm:^4.1.11" + checksum: 10c0/00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a + languageName: node + linkType: hard + "kleur@npm:4.1.5": version: 4.1.5 resolution: "kleur@npm:4.1.5" @@ -12474,7 +12269,7 @@ __metadata: languageName: node linkType: hard -"less@npm:4.2.1, less@npm:^4.2.0": +"less@npm:4.2.1": version: 4.2.1 resolution: "less@npm:4.2.1" dependencies: @@ -12509,6 +12304,41 @@ __metadata: languageName: node linkType: hard +"less@npm:^4.2.0": + version: 4.2.0 + resolution: "less@npm:4.2.0" + dependencies: + copy-anything: "npm:^2.0.1" + errno: "npm:^0.1.1" + graceful-fs: "npm:^4.1.2" + image-size: "npm:~0.5.0" + make-dir: "npm:^2.1.0" + mime: "npm:^1.4.1" + needle: "npm:^3.1.0" + parse-node-version: "npm:^1.0.1" + source-map: "npm:~0.6.0" + tslib: "npm:^2.3.0" + dependenciesMeta: + errno: + optional: true + graceful-fs: + optional: true + image-size: + optional: true + make-dir: + optional: true + mime: + optional: true + needle: + optional: true + source-map: + optional: true + bin: + lessc: bin/lessc + checksum: 10c0/8593d547a3e7651555a2c51bac8b148b37ec14e75e6e28ee4ddf27eb49cbcb4b558e50cdefa97d6942a8120fc744ace0d61c43d4c246e098c8828269b14cf5fb + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -13014,7 +12844,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.14, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": +"magic-string@npm:0.30.14": version: 0.30.14 resolution: "magic-string@npm:0.30.14" dependencies: @@ -13032,6 +12862,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": + version: 0.30.13 + resolution: "magic-string@npm:0.30.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/a275faeca1564c545019b4742c38a42ca80226c8c9e0805c32d1a1cc58b0e6ff7bbd914ed885fd10043858a7da0f732cb8f49c8975c3ecebde9cad4b57db5115 + languageName: node + linkType: hard + "make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -14156,6 +13995,16 @@ __metadata: languageName: node linkType: hard +"open@npm:^7.4.2": + version: 7.4.2 + resolution: "open@npm:7.4.2" + dependencies: + is-docker: "npm:^2.0.0" + is-wsl: "npm:^2.1.1" + checksum: 10c0/77573a6a68f7364f3a19a4c80492712720746b63680ee304555112605ead196afe91052bd3c3d165efdf4e9d04d255e87de0d0a77acec11ef47fd5261251813f + languageName: node + linkType: hard + "open@npm:^8.0.2": version: 8.4.2 resolution: "open@npm:8.4.2" @@ -14527,6 +14376,31 @@ __metadata: languageName: node linkType: hard +"patch-package@npm:^8.0.0": + version: 8.0.0 + resolution: "patch-package@npm:8.0.0" + dependencies: + "@yarnpkg/lockfile": "npm:^1.1.0" + chalk: "npm:^4.1.2" + ci-info: "npm:^3.7.0" + cross-spawn: "npm:^7.0.3" + find-yarn-workspace-root: "npm:^2.0.0" + fs-extra: "npm:^9.0.0" + json-stable-stringify: "npm:^1.0.2" + klaw-sync: "npm:^6.0.0" + minimist: "npm:^1.2.6" + open: "npm:^7.4.2" + rimraf: "npm:^2.6.3" + semver: "npm:^7.5.3" + slash: "npm:^2.0.0" + tmp: "npm:^0.0.33" + yaml: "npm:^2.2.2" + bin: + patch-package: index.js + checksum: 10c0/690eab0537e953a3fd7d32bb23f0e82f97cd448f8244c3227ed55933611a126f9476397325c06ad2c11d881a19b427a02bd1881bee78d89f1731373fc4fe0fee + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -15667,7 +15541,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.8, resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": +"resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -15680,7 +15554,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -15773,7 +15647,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^2.2.8, rimraf@npm:^2.5.2, rimraf@npm:^2.5.4": +"rimraf@npm:^2.2.8, rimraf@npm:^2.5.2, rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: @@ -15891,7 +15765,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.1, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.28.1, rollup@npm:^4.24.0": version: 4.28.1 resolution: "rollup@npm:4.28.1" dependencies: @@ -15963,6 +15837,75 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.23.0, rollup@npm:^4.4.0": + version: 4.27.4 + resolution: "rollup@npm:4.27.4" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.27.4" + "@rollup/rollup-android-arm64": "npm:4.27.4" + "@rollup/rollup-darwin-arm64": "npm:4.27.4" + "@rollup/rollup-darwin-x64": "npm:4.27.4" + "@rollup/rollup-freebsd-arm64": "npm:4.27.4" + "@rollup/rollup-freebsd-x64": "npm:4.27.4" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" + "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" + "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" + "@rollup/rollup-linux-x64-musl": "npm:4.27.4" + "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" + "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" + "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 + languageName: node + linkType: hard + "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -16477,6 +16420,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -17721,16 +17671,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.6.3": - version: 5.6.3 - resolution: "typescript@npm:5.6.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/44f61d3fb15c35359bc60399cb8127c30bae554cd555b8e2b46d68fa79d680354b83320ad419ff1b81a0bdf324197b29affe6cc28988cd6a74d4ac60c94f9799 - languageName: node - linkType: hard - "typescript@npm:5.7.2": version: 5.7.2 resolution: "typescript@npm:5.7.2" @@ -17741,26 +17681,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~4.9.0": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/5f6cad2e728a8a063521328e612d7876e12f0d8a8390d3b3aaa452a6a65e24e9ac8ea22beb72a924fd96ea0a49ea63bb4e251fb922b12eedfb7f7a26475e5c56 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.6.3#optional!builtin": - version: 5.6.3 - resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=8c6c40" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/7c9d2e07c81226d60435939618c91ec2ff0b75fbfa106eec3430f0fcf93a584bc6c73176676f532d78c3594fe28a54b36eb40b3d75593071a7ec91301533ace7 - languageName: node - linkType: hard - "typescript@patch:typescript@npm%3A5.7.2#optional!builtin": version: 5.7.2 resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=8c6c40" @@ -17771,16 +17691,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~4.9.0#optional!builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/e3333f887c6829dfe0ab6c1dbe0dd1e3e2aeb56c66460cb85c5440c566f900c833d370ca34eb47558c0c69e78ced4bfe09b8f4f98b6de7afed9b84b8d1dd06a1 - languageName: node - linkType: hard - "typical@npm:^4.0.0": version: 4.0.0 resolution: "typical@npm:4.0.0" @@ -17975,6 +17885,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + "unix-crypt-td-js@npm:1.1.4": version: 1.1.4 resolution: "unix-crypt-td-js@npm:1.1.4" @@ -18938,7 +18855,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.1, yaml@npm:^2.4.1": +"yaml@npm:2.6.1, yaml@npm:^2.2.2": version: 2.6.1 resolution: "yaml@npm:2.6.1" bin: @@ -18947,6 +18864,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.4.1": + version: 2.6.0 + resolution: "yaml@npm:2.6.0" + bin: + yaml: bin.mjs + checksum: 10c0/9e74cdb91cc35512a1c41f5ce509b0e93cc1d00eff0901e4ba831ee75a71ddf0845702adcd6f4ee6c811319eb9b59653248462ab94fa021ab855543a75396ceb + languageName: node + linkType: hard + "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" From afc75ce5a41a9a4641cfa4dda2e26a34779f34a2 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Mon, 18 Nov 2024 18:36:50 +0000 Subject: [PATCH 0123/2162] build: setup `rules_ts` for compiling TypeScript sources This commit sets up `rules_ts`, providing the `ts_library` equivalent for the `rules_js` migration. --- .bazelrc | 4 ++++ BUILD.bazel | 11 +++++++++++ WORKSPACE | 17 +++++++++++++++++ tools/rules_ts_windows.patch | 30 ++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 tools/rules_ts_windows.patch diff --git a/.bazelrc b/.bazelrc index 614512ec5faa..23784b0aea56 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,6 +1,10 @@ # Disable NG CLI TTY mode 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 + # Make TypeScript compilation fast, by keeping a few copies of the compiler # running as daemons, and cache SourceFile AST's to reduce parse time. build --strategy=TypeScriptCompile=worker diff --git a/BUILD.bazel b/BUILD.bazel index 4d419edf7e2a..9d1ae5a562b0 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,3 +1,5 @@ +load("@aspect_rules_ts//ts:defs.bzl", rules_js_tsconfig = "ts_config") + # Copyright Google Inc. All Rights Reserved. # # Use of this source code is governed by an MIT-style license that can be @@ -24,6 +26,15 @@ npm_link_all_packages( name = "node_modules", ) +rules_js_tsconfig( + name = "build-tsconfig", + src = "tsconfig-build.json", + deps = [ + "tsconfig.json", + "//:node_modules/@types/node", + ], +) + # Files required by e2e tests copy_to_bin( name = "config-files", diff --git a/WORKSPACE b/WORKSPACE index c919d3cd837f..1852385d9f2f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -195,3 +195,20 @@ npm_translate_lock( load("@npm2//:repositories.bzl", "npm_repositories") npm_repositories() + +http_archive( + name = "aspect_rules_ts", + patch_args = ["-p1"], + patches = ["//tools:rules_ts_windows.patch"], + sha256 = "9acd128abe77397505148eaa6895faed57839560dbf2177dd6285e51235e2724", + strip_prefix = "rules_ts-3.3.1", + url = "https://github.com/aspect-build/rules_ts/releases/download/v3.3.1/rules_ts-v3.3.1.tar.gz", +) + +load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") + +rules_ts_dependencies( + # ts_version_from = "//:package.json", + # TODO: Support in https://github.com/aspect-build/rules_ts/blob/main/ts/private/npm_repositories.bzl + ts_version = "5.6.2", +) diff --git a/tools/rules_ts_windows.patch b/tools/rules_ts_windows.patch new file mode 100644 index 000000000000..7a7cd342b0a5 --- /dev/null +++ b/tools/rules_ts_windows.patch @@ -0,0 +1,30 @@ +diff --git a/ts/private/ts_project.bzl b/ts/private/ts_project.bzl +index 367bba0..a112f8f 100644 +--- a/ts/private/ts_project.bzl ++++ b/ts/private/ts_project.bzl +@@ -93,25 +93,6 @@ def _ts_project_impl(ctx): + elif ctx.attr.supports_workers == 0: + supports_workers = False + +- host_is_windows = platform_utils.host_platform_is_windows() +- if host_is_windows and supports_workers: +- supports_workers = False +- +- # buildifier: disable=print +- print("""\ +-WARNING: disabling ts_project workers which are not currently supported on Windows hosts. +-See https://github.com/aspect-build/rules_ts/issues/228 for more details. +-""") +- +- if ctx.attr.is_typescript_5_or_greater and supports_workers: +- supports_workers = False +- +- # buildifier: disable=print +- print("""\ +-WARNING: disabling ts_project workers which are not currently supported with TS >= 5.0.0. +-See https://github.com/aspect-build/rules_ts/issues/361 for more details. +-""") +- + if supports_workers: + execution_requirements["supports-workers"] = "1" + execution_requirements["worker-key-mnemonic"] = "TsProject" From 369a5fa57a3d5025295a68c4a3c222f2a4a80881 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 21 Nov 2024 17:07:19 +0000 Subject: [PATCH 0124/2162] build: create `ts_project` interop allowing for incremental migration This commit introduces a new interop Starlark macro/rule for using `ts_project` throughout the repository without having to migrate any dependant or dependencies; allowing for incremental migration to `ts_project`. --- BUILD.bazel | 9 ++++ tools/interop.bzl | 107 ++++++++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 1 - 3 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 tools/interop.bzl diff --git a/BUILD.bazel b/BUILD.bazel index 9d1ae5a562b0..0464c4403395 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -35,6 +35,15 @@ rules_js_tsconfig( ], ) +rules_js_tsconfig( + name = "test-tsconfig", + src = "tsconfig-test.json", + deps = [ + "tsconfig.json", + "//:node_modules/@types/node", + ], +) + # Files required by e2e tests copy_to_bin( name = "config-files", diff --git a/tools/interop.bzl b/tools/interop.bzl new file mode 100644 index 000000000000..4626c09aeab3 --- /dev/null +++ b/tools/interop.bzl @@ -0,0 +1,107 @@ +load("@aspect_rules_js//js:providers.bzl", "JsInfo", "js_info") +load("@aspect_rules_ts//ts:defs.bzl", _ts_project = "ts_project") +load("@rules_nodejs//nodejs:providers.bzl", "DeclarationInfo", "JSModuleInfo", "LinkablePackageInfo") + +def _ts_deps_interop_impl(ctx): + types = [] + sources = [] + runfiles = ctx.runfiles(files = []) + for dep in ctx.attr.deps: + if not DeclarationInfo in dep: + fail("Expected target with DeclarationInfo: %s", dep) + types.append(dep[DeclarationInfo].transitive_declarations) + if not JSModuleInfo in dep: + fail("Expected target with JSModuleInfo: %s", dep) + sources.append(dep[JSModuleInfo].sources) + if not DefaultInfo in dep: + fail("Expected target with DefaultInfo: %s", dep) + runfiles = runfiles.merge(dep[DefaultInfo].default_runfiles) + + return [ + DefaultInfo(runfiles = runfiles), + ## NOTE: We don't need to propagate module mappings FORTUNATELY! + # because rules_nodejs supports tsconfig path mapping, given that + # everything is nicely compiled from `bazel-bin/`! + js_info( + target = ctx.label, + transitive_types = depset(transitive = types), + transitive_sources = depset(transitive = sources), + ), + ] + +ts_deps_interop = rule( + implementation = _ts_deps_interop_impl, + attrs = { + "deps": attr.label_list(providers = [DeclarationInfo], mandatory = True), + }, +) + +def _ts_project_module_impl(ctx): + # Forward runfiles. e.g. JSON files on `ts_project#data`. The jasmine + # consuming rules may rely on this, or the linker due to its symlinks then. + runfiles = ctx.attr.dep[DefaultInfo].default_runfiles + info = ctx.attr.dep[JsInfo] + + providers = [ + DefaultInfo( + runfiles = runfiles, + ), + JSModuleInfo( + direct_sources = info.sources, + sources = depset(transitive = [info.transitive_sources]), + ), + DeclarationInfo( + declarations = info.types, + transitive_declarations = info.transitive_types, + type_blocklisted_declarations = depset(), + ), + ] + + if ctx.attr.module_name: + providers.append( + LinkablePackageInfo( + package_name = ctx.attr.module_name, + package_path = "", + path = "%s/%s/%s" % (ctx.bin_dir.path, ctx.label.workspace_root, ctx.label.package), + files = info.sources, + ), + ) + + return providers + +ts_project_module = rule( + implementation = _ts_project_module_impl, + attrs = { + "dep": attr.label(providers = [JsInfo], mandatory = True), + # Noop attribute for aspect propagation of the linker interop deps; so + # that transitive linker dependencies are discovered. + "deps": attr.label_list(), + # Note: The module aspect from consuming `ts_library` targets will + # consume the module mappings automatically. + "module_name": attr.string(), + }, +) + +def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly = False, **kwargs): + ts_deps_interop( + name = "%s_interop_deps" % name, + deps = interop_deps, + testonly = testonly, + ) + + _ts_project( + name = "%s_rjs" % name, + testonly = testonly, + tsconfig = "//:test-tsconfig" if testonly else "//:build-tsconfig", + declaration = True, + deps = ["%s_interop_deps" % name] + deps, + **kwargs + ) + + ts_project_module( + name = name, + testonly = testonly, + dep = "%s_rjs" % name, + deps = interop_deps, + module_name = module_name, + ) diff --git a/tsconfig.json b/tsconfig.json index 1e365a8a98a9..f8cce3dbe85c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,6 @@ "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, "isolatedModules": true, - "outDir": "./dist", "skipLibCheck": true, "strict": true, "target": "es2022", From 620671dc1872a0b42829721be3c9308e91f2543b Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 22 Nov 2024 16:08:30 +0000 Subject: [PATCH 0125/2162] build: update to more improved `copy_to_bin` rule. This is necessary as the current rule is not clever enough to detect when a given file is already "generated" and inside `bin`. This is important because `package.json` files are always copied to bin for `npm_package`, but the `package.json` may already be copied from e.g. `ts_project#data`. This shouldn't cause a Bazel action conflict. --- tools/defaults.bzl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 088997c12b44..dee0e6197edf 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -1,9 +1,10 @@ """Re-export of some bazel rules with repository-wide defaults.""" +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") load("@aspect_bazel_lib//lib:jq.bzl", "jq") load("@aspect_bazel_lib//lib:utils.bzl", "to_label") -load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", _js_library = "js_library", _pkg_npm = "pkg_npm") +load("@build_bazel_rules_nodejs//:index.bzl", _js_library = "js_library", _pkg_npm = "pkg_npm") load("@npm//@angular/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") load("@npm//@angular/build-tooling/bazel:extract_js_module_output.bzl", "extract_js_module_output") load("@npm//@bazel/concatjs:index.bzl", _ts_library = "ts_library") @@ -184,7 +185,10 @@ def pkg_npm(name, pkg_deps = [], use_prodmode_output = False, **kwargs): "substituted/": "", }, exclude_srcs_patterns = [ - "packages/**/*", # Exclude compiled outputs of dependent packages + # Exclude compiled outputs of dependent packages + "packages/**/*", + # Exclude `node_modules` which may be pulled by the `js_module_output` runfiles. + "node_modules/**/*", ], allow_overwrites = True, ) From a19a72d8fca0c38e31be88b3fd025e201668cf27 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 22 Nov 2024 16:09:00 +0000 Subject: [PATCH 0126/2162] build: migrate `angular-devkit/architect` to `ts_project` This commit updates the architect devkit package code to use `ts_project`. We specificially don't migrate the jasmine node test yet as we want to experiment further with the incremental migration. --- packages/angular_devkit/architect/BUILD.bazel | 31 +++++++++++-------- packages/angular_devkit/architect/index.ts | 9 ++++++ .../architect/testing/BUILD.bazel | 15 ++++----- 3 files changed, 35 insertions(+), 20 deletions(-) create mode 100644 packages/angular_devkit/architect/index.ts diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 0a333cecdba1..8d98fd2bf797 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -5,7 +5,8 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -39,11 +40,11 @@ ts_json_schema( ) # @external_end -ts_library( +ts_project( name = "architect", - package_name = "@angular-devkit/architect", srcs = glob( include = [ + "index.ts", "src/**/*.ts", "builders/*.ts", ], @@ -63,25 +64,29 @@ ts_library( "node_modules/**", ], ), - module_name = "@angular-devkit/architect", - module_root = "src/index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", - "@npm//@types/node", - "@npm//rxjs", + ], + module_name = "@angular-devkit/architect", + deps = [ + "//:node_modules/@types/node", + "//:node_modules/rxjs", ], ) -ts_library( +ts_project( name = "architect_test_lib", testonly = True, srcs = glob(["src/**/*_spec.ts"]), - deps = [ - ":architect", - "//packages/angular_devkit/architect/testing", + interop_deps = [ "//packages/angular_devkit/core", - "@npm//rxjs", + ], + deps = [ + ":architect_rjs", + "//:node_modules/@types/jasmine", + "//:node_modules/rxjs", + "//packages/angular_devkit/architect/testing:testing_rjs", ], ) diff --git a/packages/angular_devkit/architect/index.ts b/packages/angular_devkit/architect/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/angular_devkit/architect/index.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 + */ + +export * from './src/index'; diff --git a/packages/angular_devkit/architect/testing/BUILD.bazel b/packages/angular_devkit/architect/testing/BUILD.bazel index 5f27b1748866..0db0d9eb0333 100644 --- a/packages/angular_devkit/architect/testing/BUILD.bazel +++ b/packages/angular_devkit/architect/testing/BUILD.bazel @@ -3,25 +3,26 @@ # 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 -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "testing", srcs = glob( include = ["**/*.ts"], exclude = ["**/*_spec.ts"], ), - module_name = "@angular-devkit/architect/testing", - module_root = "index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/architect", "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", - "@npm//@types/node", - "@npm//rxjs", + ], + module_name = "@angular-devkit/architect/testing", + deps = [ + "//:node_modules/@types/node", + "//:node_modules/rxjs", ], ) From 3af88fef8b3255971cc20034d31b01012b7cacb3 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 22 Nov 2024 16:13:03 +0000 Subject: [PATCH 0127/2162] test: update chunk file name to reflect new name It seems that the chunk deterministic name has changed after recent node module /lock file changes. It's unclear what specifically is involved in Webpack's chunk name generation, but the output and all other tests still look good; which makes this is a rather safe update to the new chunk name. Consulting with CLI team members explained that this can happen quite often. --- .../src/builders/browser/tests/options/named-chunks_spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts index 25b1384bb1df..e131303668f1 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts @@ -11,7 +11,7 @@ import { BASE_OPTIONS, BROWSER_BUILDER_INFO, describeBuilder } from '../setup'; const MAIN_OUTPUT = 'dist/main.js'; const NAMED_LAZY_OUTPUT = 'dist/src_lazy-module_ts.js'; -const UNNAMED_LAZY_OUTPUT = 'dist/358.js'; +const UNNAMED_LAZY_OUTPUT = 'dist/414.js'; describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => { describe('Option: "namedChunks"', () => { @@ -61,7 +61,6 @@ describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => { const { result } = await harness.executeOnce(); expect(result?.success).toBe(true); - debugger; harness.expectFile(MAIN_OUTPUT).toExist(); harness.expectFile(NAMED_LAZY_OUTPUT).toNotExist(); harness.expectFile(UNNAMED_LAZY_OUTPUT).toExist(); From dcd81725c948520937ff3e2becfde108c8f816e8 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Mon, 25 Nov 2024 16:44:19 +0000 Subject: [PATCH 0128/2162] build: remove cpp toolchain as it's no longer needed in Bazel 6 https://bazel.build/concepts/platforms --- .bazelrc | 2 -- 1 file changed, 2 deletions(-) diff --git a/.bazelrc b/.bazelrc index 23784b0aea56..caa0491048d0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -133,8 +133,6 @@ build:remote --jobs=150 # Setup the toolchain and platform for the remote build execution. The platform # is provided by the shared dev-infra package and targets k8 remote containers. -build:remote --crosstool_top=@npm//@angular/build-tooling/bazel/remote-execution/cpp:cc_toolchain_suite -build:remote --extra_toolchains=@npm//@angular/build-tooling/bazel/remote-execution/cpp:cc_toolchain build:remote --extra_execution_platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network build:remote --host_platform=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network build:remote --platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network From 8d54c090c45988ab0b6cd8caadebce3425115c44 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 26 Nov 2024 14:54:13 +0000 Subject: [PATCH 0129/2162] ci: remove extraneous imports lint rule as it doesnt work in monorepo setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - it seems to be disabled by default for actual production .ts files; but the rule is in "error" mode for spec files. - The rule doesn't seem to properly support mono-repos when configured properly. i.e. it only considers the top-level package.json — hence doesn't deal with cross-workspace deps. --- .eslintrc.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index f9727d18dd44..62a36e1d072d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -75,7 +75,6 @@ "import/newline-after-import": "error", "import/no-absolute-path": "error", "import/no-duplicates": "error", - "import/no-extraneous-dependencies": ["off", { "devDependencies": false }], "import/no-unassigned-import": ["error", { "allow": ["symbol-observable"] }], "import/order": [ "error", @@ -142,7 +141,6 @@ { "files": ["!packages/**", "**/*_spec.ts"], "rules": { - "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], "max-lines-per-function": "off", "no-case-declarations": "off", "no-console": "off" From 6006f591e8ddc175720864f1f5ad6fcdb3f23e85 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 26 Nov 2024 15:54:54 +0000 Subject: [PATCH 0130/2162] build: workaround aspect bazel lib `tar.gz` windows issue Workaround until `rules_js` imports the latest version of `aspect_bazel_lib`: https://github.com/bazel-contrib/bazel-lib/issues/968 --- .github/workflows/ci.yml | 10 ++++------ .github/workflows/pr.yml | 3 +++ WORKSPACE | 6 ++++++ tools/BUILD.bazel | 14 ++++++++++++++ tools/tar_system.bat | 5 +++++ 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100755 tools/tar_system.bat diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 862b40f18692..8abe2338be89 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -77,12 +77,6 @@ jobs: subset: [npm, esbuild] shard: [0, 1, 2, 3, 4, 5] exclude: - # Skip yarn subset on Windows - - os: windows-latest - subset: yarn - # Skip pnpm subset on Windows - - os: windows-latest - subset: pnpm # Skip Node.js v18 tests on Windows - os: windows-latest node: 18 @@ -91,6 +85,10 @@ jobs: node: 20 runs-on: ${{ matrix.os }} steps: + # Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968. + # TODO(devversion): Remove when Aspect lib issue is fixed. + - run: choco install gzip + if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 36d5e71ae753..3d670f51b943 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -126,6 +126,9 @@ jobs: e2e-windows-subset: runs-on: windows-latest steps: + # Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968. + # TODO(devversion): Remove when Aspect lib issue is fixed. + - run: choco install gzip - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 - name: Install node modules diff --git a/WORKSPACE b/WORKSPACE index 1852385d9f2f..b9a84a6463c8 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -2,6 +2,12 @@ workspace(name = "angular_cli") DEFAULT_NODE_VERSION = "18.19.1" +# Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968. +# Override toolchain for tar on windows. +register_toolchains( + "//tools:windows_tar_system_toolchain", +) + load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index ca51d1eaf46d..4333d2e43f46 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -1,3 +1,5 @@ +load("@aspect_bazel_lib//lib/private:tar_toolchain.bzl", "tar_toolchain") + # Copyright Google Inc. All Rights Reserved. # # Use of this source code is governed by an MIT-style license that can be @@ -28,4 +30,16 @@ nodejs_binary( entry_point = "quicktype_runner.js", templated_args = ["--bazel_patch_module_resolver"], ) + +tar_toolchain( + name = "system_tar_exec", + binary = "tar_system.bat", +) + +toolchain( + name = "windows_tar_system_toolchain", + exec_compatible_with = ["@platforms//os:windows"], + toolchain = ":system_tar_exec", + toolchain_type = "@aspect_bazel_lib//lib:tar_toolchain_type", +) # @external_end diff --git a/tools/tar_system.bat b/tools/tar_system.bat new file mode 100755 index 000000000000..523ca9d92b20 --- /dev/null +++ b/tools/tar_system.bat @@ -0,0 +1,5 @@ +if exist "C:\Program Files\Git\bin\bash.exe" ( + set "BASH=C:\Program Files\Git\bin\bash.exe" +) + +"%BASH%" -c "tar %*" From 410040289a981cf52d8aa5fbdc34324ced49c319 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 26 Nov 2024 15:58:20 +0000 Subject: [PATCH 0131/2162] build: rename `//:node_modules` to root modules In our dev-infra sync we decided that we want to have less ambiguous naming for node modules from the workspace root vs. node modules that are local to the package. Consider the confusion between: `//:node_modules` and `:node_modules`. This commit fixes this by naming the workspace `node_modules` as `:root_modules`. This does not have an effect on runtime of NodeJS output because `rules_js` continues to lay out the root modules as `/node_modules` folder; as it should. --- BUILD.bazel | 6 +++--- packages/angular_devkit/architect/BUILD.bazel | 8 ++++---- packages/angular_devkit/architect/testing/BUILD.bazel | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 0464c4403395..b22de2e3b10b 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -23,7 +23,7 @@ exports_files([ ]) npm_link_all_packages( - name = "node_modules", + name = "root_modules", ) rules_js_tsconfig( @@ -31,7 +31,7 @@ rules_js_tsconfig( src = "tsconfig-build.json", deps = [ "tsconfig.json", - "//:node_modules/@types/node", + "//:root_modules/@types/node", ], ) @@ -40,7 +40,7 @@ rules_js_tsconfig( src = "tsconfig-test.json", deps = [ "tsconfig.json", - "//:node_modules/@types/node", + "//:root_modules/@types/node", ], ) diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 8d98fd2bf797..78418fcbc081 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -70,8 +70,8 @@ ts_project( ], module_name = "@angular-devkit/architect", deps = [ - "//:node_modules/@types/node", - "//:node_modules/rxjs", + "//:root_modules/@types/node", + "//:root_modules/rxjs", ], ) @@ -84,8 +84,8 @@ ts_project( ], deps = [ ":architect_rjs", - "//:node_modules/@types/jasmine", - "//:node_modules/rxjs", + "//:root_modules/@types/jasmine", + "//:root_modules/rxjs", "//packages/angular_devkit/architect/testing:testing_rjs", ], ) diff --git a/packages/angular_devkit/architect/testing/BUILD.bazel b/packages/angular_devkit/architect/testing/BUILD.bazel index 0db0d9eb0333..aae4a586f472 100644 --- a/packages/angular_devkit/architect/testing/BUILD.bazel +++ b/packages/angular_devkit/architect/testing/BUILD.bazel @@ -22,7 +22,7 @@ ts_project( ], module_name = "@angular-devkit/architect/testing", deps = [ - "//:node_modules/@types/node", - "//:node_modules/rxjs", + "//:root_modules/@types/node", + "//:root_modules/rxjs", ], ) From 417ef7a1fbe7d346e2a7732580d0e41ff057dc04 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 26 Nov 2024 17:56:38 +0000 Subject: [PATCH 0132/2162] refactor: remove unnecessary type conversion failing lint I suspect there were some versioning changes with the e.g. `hoist = false` setting in npmrc; so eslint now starts failing about this unnessary type cast. Seems reasonable so this is committed without deep investigation. --- .../build_angular/src/builders/dev-server/webpack-server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts index 0f1b51b59d80..ee4b369a89cb 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts @@ -263,7 +263,7 @@ export function serveWebpackBrowser( ...buildEvent, baseUrl: serverAddress, stats: generateBuildEventStats(webpackRawStats, browserOptions), - } as DevServerBuilderOutput; + }; }), ); }), From ad450e3e86512ad788fc241e3792d090de2e95fc Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 26 Nov 2024 17:56:38 +0000 Subject: [PATCH 0133/2162] build: add missing path mapping for `build-webpack` import causing lint error I suspect there were some versioning changes with the e.g. `hoist = false` setting in npmrc; so eslint now starts failing about an import from `webpack-server.ts` resulting in unnecessary type cast lint errors. The existing mapping didn't work due to the underscore conversion, so this makes sense, and fixing the path mappings works. --- .../build_angular/src/builders/dev-server/webpack-server.ts | 2 +- tsconfig.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts index ee4b369a89cb..0f1b51b59d80 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts @@ -263,7 +263,7 @@ export function serveWebpackBrowser( ...buildEvent, baseUrl: serverAddress, stats: generateBuildEventStats(webpackRawStats, browserOptions), - }; + } as DevServerBuilderOutput; }), ); }), diff --git a/tsconfig.json b/tsconfig.json index f8cce3dbe85c..73c91f774209 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,6 +25,7 @@ "@angular-devkit/schematics/tools": ["./packages/angular_devkit/schematics/tools/index"], "@angular-devkit/schematics/testing": ["./packages/angular_devkit/schematics/testing/index"], "@angular-devkit/architect/testing": ["./packages/angular_devkit/architect/testing/index"], + "@angular-devkit/build-webpack": ["./packages/angular_devkit/build_webpack"], "@angular-devkit/*": ["./packages/angular_devkit/*/src"], "@angular/*": ["./packages/angular/*/src"], "@angular/build/private": ["./packages/angular/build/src/private"], From c701acb25de38f7dcf6f0341e5294fb6fb568334 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Fri, 29 Nov 2024 16:40:26 +0000 Subject: [PATCH 0134/2162] build: use worker for `ts_project` to enable fast DX and avoid no-sandbox issues For the `rules_js` migration we are introducing a new ruleset for Angular rules. These rules are not used here by the CLI as we don't use `ng_module`, but we are building the rules in a way where we expose a worker binary that can also work with vanilla TS. The worker significantly speeds up compilations, bringing them to equivalent speeds of `ts_library`, and **importantly** fixes/avoids issues when actions are executing outside sandbox. E.g. on Windows where the tsc compilation currently can see many other files that aren't action inputs; and accidentally picks them up. --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- WORKSPACE | 14 +- pnpm-lock.yaml | 2306 +++++++---------- tools/BUILD.bazel | 20 + tools/interop.bzl | 5 + 5 files changed, 1022 insertions(+), 1329 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 0ef6afc59917..95ebac7a70c8 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1474377014 -pnpm-lock.yaml=1733416088 +package.json=-429967005 +pnpm-lock.yaml=-1164942040 pnpm-workspace.yaml=1711114604 -yarn.lock=-607783516 +yarn.lock=80564211 diff --git a/WORKSPACE b/WORKSPACE index b9a84a6463c8..152877aac166 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -8,7 +8,7 @@ register_toolchains( "//tools:windows_tar_system_toolchain", ) -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") http_archive( name = "bazel_skylib", @@ -37,9 +37,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "75c25a0f15a9e4592bbda45b57aa089e4bf17f9176fd735351e8c6444df87b52", - strip_prefix = "rules_js-2.1.0", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.1.0/rules_js-v2.1.0.tar.gz", + sha256 = "3388abe9b9728ef68ea8d8301f932b11b2c9a271d74741ddd5f3b34d1db843ac", + strip_prefix = "rules_js-2.1.1", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.1.1/rules_js-v2.1.1.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") @@ -218,3 +218,9 @@ rules_ts_dependencies( # TODO: Support in https://github.com/aspect-build/rules_ts/blob/main/ts/private/npm_repositories.bzl ts_version = "5.6.2", ) + +http_file( + name = "tsc_worker", + sha256 = "", + urls = ["https://raw.githubusercontent.com/devversion/rules_angular/a270a74d1e64577bddba96a5484c7c5d2c5d2770/dist/worker.mjs"], +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4792edbc673..8da93472afef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,62 +17,62 @@ importers: specifier: 2.3.0 version: 2.3.0 '@angular/animations': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/core@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/core@19.1.0-next.2) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277 - version: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.0)(terser@5.36.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.2)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#499c0a0303900d2d8fb6fcdeec7e72a80d202ac9 - version: github.com/angular/dev-infra-private-build-tooling-builds/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(chokidar@4.0.1)(debug@4.3.7)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.36.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333 + version: github.com/angular/dev-infra-private-build-tooling-builds/8aff236a2d25f44f347d488aa1a906c0d52ca333(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': - specifier: 19.0.1 - version: 19.0.1(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + specifier: 19.1.0-next.1 + version: 19.1.0-next.1(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(rxjs@7.8.1) '@angular/common': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) '@angular/compiler': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/core@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/core@19.1.0-next.2) '@angular/compiler-cli': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) '@angular/core': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) '@angular/forms': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) '@angular/localize': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2) '@angular/material': - specifier: 19.0.1 - version: 19.0.1(@angular/animations@19.1.0-next.0)(@angular/cdk@19.0.1)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/forms@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + specifier: 19.1.0-next.1 + version: 19.1.0-next.1(@angular/animations@19.1.0-next.2)(@angular/cdk@19.1.0-next.1)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/forms@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#579163373d32ec04ef9dab6c21e34bfc6d40b127 - version: github.com/angular/dev-infra-private-ng-dev-builds/579163373d32ec04ef9dab6c21e34bfc6d40b127 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481 + version: github.com/angular/dev-infra-private-ng-dev-builds/e0bc0d1225c9605f344561c6b3b3d471f0fee481 '@angular/platform-browser': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) '@angular/platform-browser-dynamic': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2) '@angular/platform-server': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2) '@angular/router': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) '@angular/service-worker': - specifier: ^19.1.0-next.0 - version: 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) '@babel/core': specifier: 7.26.0 version: 7.26.0 '@babel/generator': - specifier: 7.26.2 - version: 7.26.2 + specifier: 7.26.3 + version: 7.26.3 '@babel/helper-annotate-as-pure': specifier: 7.25.9 version: 7.25.9 @@ -98,8 +98,8 @@ importers: specifier: 7.26.0 version: 7.26.0 '@bazel/bazelisk': - specifier: 1.24.1 - version: 1.24.1 + specifier: 1.25.0 + version: 1.25.0 '@bazel/buildifier': specifier: 7.3.1 version: 7.3.1 @@ -111,7 +111,7 @@ importers: version: 5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0) '@bazel/rollup': specifier: ^5.8.1 - version: 5.8.1(rollup@4.28.0) + version: 5.8.1(rollup@4.28.1) '@bazel/runfiles': specifier: ^5.8.1 version: 5.8.1 @@ -119,26 +119,26 @@ importers: specifier: 0.6.3 version: 0.6.3 '@inquirer/confirm': - specifier: 5.0.2 - version: 5.0.2(@types/node@18.19.67) + specifier: 5.1.0 + version: 5.1.0(@types/node@18.19.67) '@inquirer/prompts': - specifier: 7.1.0 - version: 7.1.0(@types/node@18.19.67) + specifier: 7.2.0 + version: 7.2.0(@types/node@18.19.67) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.1.0) + version: 2.0.18(@inquirer/prompts@7.2.0) '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.28.0) + version: 5.1.1(rollup@4.28.1) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.1(rollup@4.28.0) + version: 28.0.1(rollup@4.28.1) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.28.0) + version: 13.3.0(rollup@4.28.1) '@stylistic/eslint-plugin': specifier: ^2.8.0 - version: 2.11.0(eslint@8.57.0)(typescript@5.7.2) + version: 2.12.0(eslint@8.57.0)(typescript@5.7.2) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -206,14 +206,14 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.17.0 - version: 8.17.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.18.0 + version: 8.18.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: 8.17.0 - version: 8.17.0(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.18.0 + version: 8.18.0(eslint@8.57.0)(typescript@5.7.2) '@vitejs/plugin-basic-ssl': specifier: 1.2.0 - version: 1.2.0(vite@6.0.2) + version: 1.2.0(vite@6.0.3) '@web/test-runner': specifier: ^0.19.0 version: 0.19.0 @@ -234,13 +234,13 @@ importers: version: 10.4.20(postcss@8.4.49) babel-loader: specifier: 9.2.1 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1) beasties: - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.2.0 + version: 0.2.0 browser-sync: specifier: 3.0.3 - version: 3.0.3(debug@4.3.7) + version: 3.0.3(debug@4.4.0) browserslist: specifier: ^4.21.5 version: 4.24.2 @@ -252,13 +252,13 @@ importers: version: 4.0.1 copy-webpack-plugin: specifier: 12.0.2 - version: 12.0.2(webpack@5.96.1) + version: 12.0.2(webpack@5.97.1) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.96.1) + version: 7.1.2(webpack@5.97.1) debug: specifier: ^4.1.1 - version: 4.3.7(supports-color@9.4.0) + version: 4.4.0(supports-color@9.4.0) esbuild: specifier: 0.24.0 version: 0.24.0 @@ -276,22 +276,22 @@ importers: version: 3.1.1(eslint@8.57.0) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0) + version: 2.31.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0) express: - specifier: 4.21.1 - version: 4.21.1 + specifier: 4.21.2 + version: 4.21.2 fast-glob: specifier: 3.3.2 version: 3.3.2 http-proxy: specifier: ^1.18.1 - version: 1.18.1(debug@4.3.7) + version: 1.18.1(debug@4.4.0) http-proxy-middleware: specifier: 3.0.3 version: 3.0.3 https-proxy-agent: - specifier: 7.0.5 - version: 7.0.5(supports-color@9.4.0) + specifier: 7.0.6 + version: 7.0.6(supports-color@9.4.0) husky: specifier: 9.1.7 version: 9.1.7 @@ -315,7 +315,7 @@ importers: version: 3.3.1 karma: specifier: ~6.4.0 - version: 6.4.4(debug@4.3.7) + version: 6.4.4(debug@4.4.0) karma-chrome-launcher: specifier: ~3.2.0 version: 3.2.0 @@ -336,10 +336,10 @@ importers: version: 4.2.1 less-loader: specifier: 12.2.0 - version: 12.2.0(less@4.2.1)(webpack@5.96.1) + version: 12.2.0(less@4.2.1)(webpack@5.97.1) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.96.1) + version: 4.0.2(webpack@5.97.1) listr2: specifier: 8.2.5 version: 8.2.5 @@ -353,23 +353,23 @@ importers: specifier: ^4.17.21 version: 4.17.21 magic-string: - specifier: 0.30.14 - version: 0.30.14 + specifier: 0.30.15 + version: 0.30.15 mini-css-extract-plugin: specifier: 2.9.2 - version: 2.9.2(webpack@5.96.1) + version: 2.9.2(webpack@5.97.1) mrmime: specifier: 2.0.0 version: 2.0.0 ng-packagr: specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.0)(tslib@2.8.1)(typescript@5.7.2) + version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(tslib@2.8.1)(typescript@5.7.2) npm: specifier: ^10.8.1 - version: 10.9.1 + version: 10.9.2 npm-package-arg: - specifier: 12.0.0 - version: 12.0.0 + specifier: 12.0.1 + version: 12.0.1 npm-pick-manifest: specifier: 10.0.0 version: 10.0.0 @@ -392,17 +392,17 @@ importers: specifier: 4.0.2 version: 4.0.2 piscina: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.8.0 + version: 4.8.0 postcss: specifier: 8.4.49 version: 8.4.49 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.96.1) + version: 8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1) prettier: specifier: ^3.0.0 - version: 3.4.1 + version: 3.4.2 protractor: specifier: ~7.0.0 version: 7.0.0 @@ -416,23 +416,23 @@ importers: specifier: 5.0.0 version: 5.0.0 rollup: - specifier: 4.28.0 - version: 4.28.0 + specifier: 4.28.1 + version: 4.28.1 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.1 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@18.19.67)(rollup@4.28.0) + version: 0.6.3(@types/node@18.19.67)(rollup@4.28.1) rxjs: specifier: 7.8.1 version: 7.8.1 sass: - specifier: 1.81.1 - version: 1.81.1 + specifier: 1.82.0 + version: 1.82.0 sass-loader: - specifier: 16.0.3 - version: 16.0.3(sass@1.81.1)(webpack@5.96.1) + specifier: 16.0.4 + version: 16.0.4(sass@1.82.0)(webpack@5.97.1) semver: specifier: 7.6.3 version: 7.6.3 @@ -444,7 +444,7 @@ importers: version: 0.7.4 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.96.1) + version: 5.0.0(webpack@5.97.1) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -455,8 +455,8 @@ importers: specifier: ^7.0.0 version: 7.4.3 terser: - specifier: 5.36.0 - version: 5.36.0 + specifier: 5.37.0 + version: 5.37.0 tree-kill: specifier: 1.2.2 version: 1.2.2 @@ -470,8 +470,8 @@ importers: specifier: 5.7.2 version: 5.7.2 undici: - specifier: 7.0.0 - version: 7.0.0 + specifier: 7.1.0 + version: 7.1.0 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -482,26 +482,26 @@ importers: specifier: ^10.0.0 version: 10.2.2 vite: - specifier: 6.0.2 - version: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.81.1)(terser@5.36.0) + specifier: 6.0.3 + version: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 webpack: - specifier: 5.96.1 - version: 5.96.1(esbuild@0.24.0) + specifier: 5.97.1 + version: 5.97.1(esbuild@0.24.0) webpack-dev-middleware: specifier: 7.4.2 - version: 7.4.2(webpack@5.96.1) + version: 7.4.2(webpack@5.97.1) webpack-dev-server: - specifier: 5.1.0 - version: 5.1.0(debug@4.3.7)(webpack@5.96.1) + specifier: 5.2.0 + version: 5.2.0(debug@4.4.0)(webpack@5.97.1) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.96.1) + version: 5.1.0(webpack@5.97.1) yargs: specifier: 17.7.2 version: 17.7.2 @@ -527,18 +527,18 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@angular-devkit/architect@0.1900.0(chokidar@4.0.1): - resolution: {integrity: sha512-oC2CyKf9olKvthEwp2wmkKw+H9NhpnK9cWYHvajWeCRJ8A4DLaKwfMuZ9lioi92QPourrJzoikgp7C6m2AuuZQ==} + /@angular-devkit/architect@0.1901.0-next.0(chokidar@4.0.1): + resolution: {integrity: sha512-IIzaNbosmoHNUGDd5JebX0IbVEpLXewQH0kWw9x59KgRasjF2mYed0MM59QfIjZ4thu1E/8O3mI1m8H0U9E5JQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 19.0.0(chokidar@4.0.1) + '@angular-devkit/core': 19.1.0-next.0(chokidar@4.0.1) rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@angular-devkit/core@19.0.0(chokidar@4.0.1): - resolution: {integrity: sha512-/EJQOKVFb9vsFbPR+57C7fJHFVr7le9Ru6aormIKw24xyZZHtt5X4rwdeN7l6Zkv8F0cJ2EoTSiQoY17090DLQ==} + /@angular-devkit/core@19.1.0-next.0(chokidar@4.0.1): + resolution: {integrity: sha512-riQHONMvzXf1rctxYZbXm4S/fQE+OdtoZR7P3ZemU6a9QrfZUtT/t3ivElm9ZspI35SGZJxSTMdZXUidhMph9g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -555,13 +555,13 @@ packages: source-map: 0.7.4 dev: true - /@angular/animations@19.1.0-next.0(@angular/core@19.1.0-next.0): - resolution: {integrity: sha512-tVixJSU9J4B+m/mMC6yS+6m5PtaOfltrtT0fw92XM2zA0sVeS4d9+DiewkdMU9wwYwUdMfJEf+jXe7N1rOUtHQ==} + /@angular/animations@19.1.0-next.2(@angular/core@19.1.0-next.2): + resolution: {integrity: sha512-eXvHnzmNvnvp/OCAbNOdoLh3Dj7BlJ9Eluvp/VwS6LFXDD2dvKUCMVVStpsKbeUW+3oTZ9sD6uZJERxUvrOvcA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.0 + '@angular/core': 19.1.0-next.2 dependencies: - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -575,16 +575,16 @@ packages: - zone.js dev: true - /@angular/build@19.0.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.36.0)(typescript@5.7.2): - resolution: {integrity: sha512-OLyUwAVCSqW589l19g19aP2O1NpBMRPsqKmYLaTYvYSIcZkNRJPxOcsCIDGB3FUQUEjpouYtzPA3RtBuJWsCwQ==} + /@angular/build@19.1.0-next.0(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + resolution: {integrity: sha512-5YToh23ZUupSgqXgqDD5g8bFbbo1kFI7DBP8s/i2cqJs6jLV7P/Mj1lFh9wA3MqkTD9nxsKc0uMT8KdIxs9Iyg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler': ^19.0.0 - '@angular/compiler-cli': ^19.0.0 - '@angular/localize': ^19.0.0 - '@angular/platform-server': ^19.0.0 - '@angular/service-worker': ^19.0.0 - '@angular/ssr': ^19.0.0 + '@angular/compiler': ^19.0.0 || ^19.1.0-next.0 + '@angular/compiler-cli': ^19.0.0 || ^19.1.0-next.0 + '@angular/localize': ^19.0.0 || ^19.1.0-next.0 + '@angular/platform-server': ^19.0.0 || ^19.1.0-next.0 + '@angular/service-worker': ^19.0.0 || ^19.1.0-next.0 + '@angular/ssr': ^19.1.0-next.0 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -606,87 +606,90 @@ packages: optional: true dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1900.0(chokidar@4.0.1) - '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) - '@angular/localize': 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0) - '@angular/platform-server': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0) - '@angular/service-worker': 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular-devkit/architect': 0.1901.0-next.0(chokidar@4.0.1) + '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) + '@angular/localize': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2) + '@angular/platform-server': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2) + '@angular/service-worker': 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) '@babel/core': 7.26.0 '@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/core@7.26.0) '@inquirer/confirm': 5.0.2(@types/node@18.19.67) - '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.11) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.2) beasties: 0.1.0 browserslist: 4.24.2 esbuild: 0.24.0 fast-glob: 3.3.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) + https-proxy-agent: 7.0.5 istanbul-lib-instrument: 6.0.3 less: 4.2.1 listr2: 8.2.5 - magic-string: 0.30.12 + magic-string: 0.30.14 mrmime: 2.0.0 parse5-html-rewriting-stream: 7.0.0 picomatch: 4.0.2 - piscina: 4.7.0 + piscina: 4.8.0 postcss: 8.4.49 - rollup: 4.26.0 - sass: 1.80.7 + rollup: 4.28.0 + sass: 1.82.0 semver: 7.6.3 typescript: 5.7.2 - vite: 5.4.11(@types/node@18.19.67)(less@4.2.1)(sass@1.80.7)(terser@5.36.0) + vite: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: - lmdb: 3.1.5 + lmdb: 3.2.0 transitivePeerDependencies: - '@types/node' - chokidar + - jiti - lightningcss - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - yaml dev: true - /@angular/cdk@19.0.1(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(rxjs@7.8.1): - resolution: {integrity: sha512-dIqYBQISvxlpXIU10625rURPjniQV1emXbFF6wAEE48iqx9mm9WZ11KZU4heqA3qp/betZYcVY2Hwc7fLKp4Uw==} + /@angular/cdk@19.1.0-next.1(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(rxjs@7.8.1): + resolution: {integrity: sha512-UDN3QbvqjFqX7APStPf+LC8TbvM5VHZdhaXMuWlML7CwzBDO86ZA2InKn1v8vKva4GheVQ3DW8bcV6byM0KNkQ==} peerDependencies: - '@angular/common': ^19.0.0 || ^20.0.0 - '@angular/core': ^19.0.0 || ^20.0.0 + '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 optionalDependencies: parse5: 7.2.1 dev: true - /@angular/common@19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1): - resolution: {integrity: sha512-CiBL2qJ5hYAuIwjJ/jzBM8J+5SRktzetd8DHKKPgsZsU4xIvaKLfF+lDBWBMIewNJwyUdL517RJRzzRcd7NzFg==} + /@angular/common@19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1): + resolution: {integrity: sha512-c5GmOMKLjl3lsrVeCtsAPlmDwE2kE/xyEoWlbjqWp7MFKYG4Bh75h40HDzdOQe23lOgPAOcAgVw+VE1cLLidfw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.0 + '@angular/core': 19.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/compiler-cli@19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2): - resolution: {integrity: sha512-vr4ZBImO+1fIbm+X6Mvfutje7Aw5gNOykkTYnTOroguB4lCUsG/xqdQHVpJXE+B56pg/uXqWMyF8SD3MZhEp5g==} + /@angular/compiler-cli@19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2): + resolution: {integrity: sha512-zsjMHELOUVN//SslNSIl61puWextkx7J9trE+BXi0i3N8C6Fqxoauy8azNWRK70fxS4+fDEVPd/CFFnuvpATcw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.0 + '@angular/compiler': 19.1.0-next.2 typescript: 5.7.2 dependencies: - '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) + '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) '@babel/core': 7.26.0 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.1 @@ -700,16 +703,16 @@ packages: - supports-color dev: true - /@angular/compiler@19.1.0-next.0(@angular/core@19.1.0-next.0): - resolution: {integrity: sha512-IJWMyzchAbvaeGLJlLhQpEzjQOsge4/hWs1ONzW98AzqeTtO3L7Bx9hch45egqX/UvrOhQKCYj6YaNJwmN/j3Q==} + /@angular/compiler@19.1.0-next.2(@angular/core@19.1.0-next.2): + resolution: {integrity: sha512-jRERYgoT2Z8JWGGv+nWyTjfXLQGvT76ltV7iHY/glDCU2UkBDBPWoX6YACIRAx4N9+3UZyAVQgELm3sWqhcdkg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.0 + '@angular/core': 19.1.0-next.2 peerDependenciesMeta: '@angular/core': optional: true dependencies: - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -725,8 +728,8 @@ packages: zone.js: 0.15.0 dev: true - /@angular/core@19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0): - resolution: {integrity: sha512-EyFu4Jki1QCzn/jqEoOZokwRyYyR4HABxbJIkxdiXVv/UaCYCZIRwCOjNAD0kmmFU0btm5UVJtoXSrTo3mQBBg==} + /@angular/core@19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-k62MiQ5D40TxLP8KEvAW+U+uNfMRnG0r/hhxQx/VZQaSR85Xlv/j3OGDXrb8CAJE8H1iJN8DQMNqdL2E9ffVJw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 @@ -737,32 +740,32 @@ packages: zone.js: 0.15.0 dev: true - /@angular/forms@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1): - resolution: {integrity: sha512-y7KOkQ7M2QgYgvzEhHy5DP4vBuXYOMf0lMXFxe70JADT75s15iBid+VWX9hx6ZBYBGfdXpwSFss1SQwGz/ZHIA==} + /@angular/forms@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1): + resolution: {integrity: sha512-Hb3rdA7msSY22zdgyqcwpZ6rrpIMOFSUJyCxc5IugI3YAcAJOJoBd9UDn9Cp+KlG34opFX8zrjLYADR28KKrXQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.0 - '@angular/core': 19.1.0-next.0 - '@angular/platform-browser': 19.1.0-next.0 + '@angular/common': 19.1.0-next.2 + '@angular/core': 19.1.0-next.2 + '@angular/platform-browser': 19.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/localize@19.1.0-next.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0): - resolution: {integrity: sha512-Md5XmZAQcRLXW3cxCO6Ks31pRbR+NQZHczdrK2MDjbv2Tp7VwaM042E89rxEYLYDsSfLyeCRvkapKHtAFNXkRg==} + /@angular/localize@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2): + resolution: {integrity: sha512-qDRyxi/ocV9cXfd1oAwQkAO97GiPyJySIT64XWw6+aC2xoBQxfUX4V4jjMK75+IeivNZpqd4/vj+dtM0b+AA3g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.0 - '@angular/compiler-cli': 19.1.0-next.0 + '@angular/compiler': 19.1.0-next.2 + '@angular/compiler-cli': 19.1.0-next.2 dependencies: - '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 fast-glob: 3.3.2 @@ -771,105 +774,105 @@ packages: - supports-color dev: true - /@angular/material@19.0.1(@angular/animations@19.1.0-next.0)(@angular/cdk@19.0.1)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/forms@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1): - resolution: {integrity: sha512-pAZ+cgBUAJjXmwAY4u1NXuxcxJKHts0s7ZNpf6JGUu+yWArLOc/BwFTDO9Htzz2E82eMH417d1ny4fpYwdgIZg==} + /@angular/material@19.1.0-next.1(@angular/animations@19.1.0-next.2)(@angular/cdk@19.1.0-next.1)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/forms@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1): + resolution: {integrity: sha512-i0XF4lBZY+tgrPr1nRuuQQeIKEYMEHUvYf0Q9P5VG0evd+j2PdJw9gYbU5R5/GRhum/wDSUxoIyN1rex/zqQoQ==} peerDependencies: - '@angular/animations': ^19.0.0 || ^20.0.0 - '@angular/cdk': 19.0.1 - '@angular/common': ^19.0.0 || ^20.0.0 - '@angular/core': ^19.0.0 || ^20.0.0 - '@angular/forms': ^19.0.0 || ^20.0.0 - '@angular/platform-browser': ^19.0.0 || ^20.0.0 + '@angular/animations': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + '@angular/cdk': 19.1.0-next.1 + '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + '@angular/forms': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 + '@angular/platform-browser': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/animations': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/cdk': 19.0.1(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/forms': 19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1) - '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular/animations': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/cdk': 19.1.0-next.1(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/forms': 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) + '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/platform-browser-dynamic@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0): - resolution: {integrity: sha512-9+fcYtqWq3kwx8tIGSVnxHU9SX8wvJbKlD+9x73YCKstMjw3izSXVSDPGKY1JSdqne2L8PNafqOBGgE70Bk//A==} + /@angular/platform-browser-dynamic@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2): + resolution: {integrity: sha512-2SA2yltb9iFHNbGvbjiNx2XFnceUEd0b8PblVER4WGt226PBsSIqWc3d70JS2Dn7TriUebGGpurq1oZ+Uf70kA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.0 - '@angular/compiler': 19.1.0-next.0 - '@angular/core': 19.1.0-next.0 - '@angular/platform-browser': 19.1.0-next.0 + '@angular/common': 19.1.0-next.2 + '@angular/compiler': 19.1.0-next.2 + '@angular/core': 19.1.0-next.2 + '@angular/platform-browser': 19.1.0-next.2 dependencies: - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) tslib: 2.8.1 dev: true - /@angular/platform-browser@19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0): - resolution: {integrity: sha512-SquzOLqNdAcW6ugLApMBMeGEjHGgVsua/jEYsKqVWSCG+kLm8I1pwVJDUWP/B4GnBK0P/38fsL9PPzY5gjpohA==} + /@angular/platform-browser@19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2): + resolution: {integrity: sha512-52N9LDARPWf7BijMkDLDLqoHz3EW3BXf+fNFWFVFT37fssfueDeInySThzd6el7S9mQtpHRn2Z2ge1q3RnE9NA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.0 - '@angular/common': 19.1.0-next.0 - '@angular/core': 19.1.0-next.0 + '@angular/animations': 19.1.0-next.2 + '@angular/common': 19.1.0-next.2 + '@angular/core': 19.1.0-next.2 peerDependenciesMeta: '@angular/animations': optional: true dependencies: - '@angular/animations': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/animations': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true - /@angular/platform-server@19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0): - resolution: {integrity: sha512-SeT56d9dLcf6Tzq5fN3oQep3o5Q5qHgBLtLbkWtZqW1pV+nE8cM9lYcu2TGxrcLDBsFeq+/RS0Yenv6BeyjszA==} + /@angular/platform-server@19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2): + resolution: {integrity: sha512-Tf0v68KbrOrjbF1eg7arDQXdoTD3gCXzWc2PFTKnMpt+2biNMvNoC2+XvTIteG8DlkApMRJWUI2S6ORy1BW8Vw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.0 - '@angular/common': 19.1.0-next.0 - '@angular/compiler': 19.1.0-next.0 - '@angular/core': 19.1.0-next.0 - '@angular/platform-browser': 19.1.0-next.0 - dependencies: - '@angular/animations': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.0(@angular/core@19.1.0-next.0) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular/animations': 19.1.0-next.2 + '@angular/common': 19.1.0-next.2 + '@angular/compiler': 19.1.0-next.2 + '@angular/core': 19.1.0-next.2 + '@angular/platform-browser': 19.1.0-next.2 + dependencies: + '@angular/animations': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) tslib: 2.8.1 xhr2: 0.2.1 dev: true - /@angular/router@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0)(@angular/platform-browser@19.1.0-next.0)(rxjs@7.8.1): - resolution: {integrity: sha512-ijnBqLcvqA5JmBFN4hM8r9DzkjRRtU77l+gPK9qCOurhVnh1bHAZBTO/idNjXTFEgz+qd9Pa9/uAKBFssdOQwA==} + /@angular/router@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1): + resolution: {integrity: sha512-sglyN5dDqc94Hm43aiNUTBvtxFVcizRVIxJHOq3sNxN1zRSpSDrEFkYx4KE02/pbozcOHdoMArNeZkix0R/uUw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.0 - '@angular/core': 19.1.0-next.0 - '@angular/platform-browser': 19.1.0-next.0 + '@angular/common': 19.1.0-next.2 + '@angular/core': 19.1.0-next.2 + '@angular/platform-browser': 19.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.0(@angular/animations@19.1.0-next.0)(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/service-worker@19.1.0-next.0(@angular/common@19.1.0-next.0)(@angular/core@19.1.0-next.0): - resolution: {integrity: sha512-2Yp67xzcEvroSrqJf7pRC9FjvoLM3XtlLyUfnXELRxGa+Nh68ZgFJw1ii7iA8f+7j/QseM4IdwcjuSTjutwsTw==} + /@angular/service-worker@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2): + resolution: {integrity: sha512-eaSi6JbC2OMPcDRQoE7tYEvT/jakB7vS07QfsD3QtFNgskuOA4oJsWrTBkeVlvKZ2Dc/FvZ4sqthEf0bShuo5A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/common': 19.1.0-next.0 - '@angular/core': 19.1.0-next.0 + '@angular/common': 19.1.0-next.2 + '@angular/core': 19.1.0-next.2 dependencies: - '@angular/common': 19.1.0-next.0(@angular/core@19.1.0-next.0)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -882,8 +885,8 @@ packages: picocolors: 1.1.1 dev: true - /@babel/compat-data@7.26.2: - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + /@babel/compat-data@7.26.3: + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} dev: true @@ -893,16 +896,16 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 + '@babel/generator': 7.26.3 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -910,12 +913,12 @@ packages: - supports-color dev: true - /@babel/generator@7.26.2: - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + /@babel/generator@7.26.3: + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -925,24 +928,14 @@ packages: resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.26.0 - dev: true - - /@babel/helper-builder-binary-assignment-operator-visitor@7.25.9: - resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.26.3 dev: true /@babel/helper-compilation-targets@7.25.9: resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -961,14 +954,14 @@ packages: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} + /@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -987,7 +980,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -998,15 +991,15 @@ packages: resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@babel/helper-member-expression-to-functions@7.25.9: resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -1015,8 +1008,8 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -1030,7 +1023,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1039,7 +1032,7 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@babel/helper-plugin-utils@7.25.9: @@ -1056,7 +1049,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1070,17 +1063,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access@7.25.9: - resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1089,8 +1072,8 @@ packages: resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -1099,7 +1082,7 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@babel/helper-string-parser@7.25.9: @@ -1122,8 +1105,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -1133,15 +1116,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true - /@babel/parser@7.26.2: - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + /@babel/parser@7.26.3: + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0): @@ -1152,7 +1135,7 @@ packages: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1199,7 +1182,7 @@ packages: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1265,7 +1248,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1288,7 +1271,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1364,7 +1347,7 @@ packages: '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1398,7 +1381,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1419,7 +1402,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1433,17 +1416,14 @@ packages: '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + /@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0): @@ -1478,7 +1458,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1536,8 +1516,8 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0): - resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + /@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1545,7 +1525,6 @@ packages: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-simple-access': 7.25.9 transitivePeerDependencies: - supports-color dev: true @@ -1560,7 +1539,7 @@ packages: '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color dev: true @@ -1585,7 +1564,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1732,7 +1711,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1833,7 +1812,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1844,7 +1823,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1855,7 +1834,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 dev: true @@ -1865,7 +1844,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 @@ -1893,7 +1872,7 @@ packages: '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) @@ -1902,7 +1881,7 @@ packages: '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) @@ -1946,7 +1925,7 @@ packages: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 esutils: 2.0.3 dev: true @@ -1962,35 +1941,35 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 dev: true - /@babel/traverse@7.25.9: - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + /@babel/traverse@7.26.4: + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7(supports-color@9.4.0) + '@babel/types': 7.26.3 + debug: 4.4.0(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.26.0: - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + /@babel/types@7.26.3: + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 dev: true - /@bazel/bazelisk@1.24.1: - resolution: {integrity: sha512-1lJPcMtTVgEVR6E7CUNM5vaM2nr0fbRMYNy4RYXZsNZce7BhFCoiXPgFsVZFXNO00xNp5b0cpZTtqmUYdQlfWQ==} + /@bazel/bazelisk@1.25.0: + resolution: {integrity: sha512-IgesSUh9EwwLI9+Vs5rb/sx7vh6cI97CRLPqw9+/egFzeZlB5S2fTsKwbdDxtTVPjQMGS3GY64tTNsgejVFeKg==} hasBin: true dev: true @@ -2016,7 +1995,7 @@ packages: karma-requirejs: '>=1.0.0' karma-sourcemap-loader: '>=0.3.0' dependencies: - karma: 6.4.4(debug@4.3.7) + karma: 6.4.4(debug@4.4.0) karma-chrome-launcher: 3.2.0 karma-firefox-launcher: 2.1.3 karma-jasmine: 5.1.0(karma@6.4.4) @@ -2055,14 +2034,14 @@ packages: protractor: 7.0.0 dev: true - /@bazel/rollup@5.8.1(rollup@4.28.0): + /@bazel/rollup@5.8.1(rollup@4.28.1): resolution: {integrity: sha512-Ys+UWbRp1TY2j+z15N+SZgID/nuqAtJTgJDsz0NZVjm8F8KzmgXxLDnBb/cUKFVk83pNOAi84G/bq1tINjMSNA==} hasBin: true peerDependencies: rollup: '>=2.3.0 <3.0.0' dependencies: '@bazel/worker': 5.8.1 - rollup: 4.28.0 + rollup: 4.28.1 dev: true /@bazel/runfiles@5.8.1: @@ -2073,13 +2052,13 @@ packages: resolution: {integrity: sha512-1uLNT5NZsUVIGS4syuHwTzZ8HycMPyr6POA3FCE4GbMtc4rhoJk8aZKtNIRthJYfL+iioppi+rTfH3olMPr9nA==} dev: true - /@bazel/terser@5.8.1(terser@5.36.0): + /@bazel/terser@5.8.1(terser@5.37.0): resolution: {integrity: sha512-TPjSDhw1pSZt9P2hd/22IJwl8KCZiJL+u2gB5mghBTCFDVdC5Dgsx135pFtvlqc6LjjOvd3s6dzcQr0YJo2HSg==} hasBin: true peerDependencies: terser: '>=4.0.0 <5.9.0' dependencies: - terser: 5.36.0 + terser: 5.37.0 dev: true /@bazel/typescript@5.8.1(typescript@5.7.2): @@ -2146,14 +2125,6 @@ packages: engines: {node: '>=14.17.0'} dev: true - /@esbuild/aix-ppc64@0.21.5: - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - dev: true - optional: true - /@esbuild/aix-ppc64@0.24.0: resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} @@ -2162,14 +2133,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.21.5: - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - dev: true - optional: true - /@esbuild/android-arm64@0.24.0: resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} @@ -2178,14 +2141,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.21.5: - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - dev: true - optional: true - /@esbuild/android-arm@0.24.0: resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} @@ -2194,14 +2149,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.21.5: - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - dev: true - optional: true - /@esbuild/android-x64@0.24.0: resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} @@ -2210,14 +2157,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.21.5: - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - dev: true - optional: true - /@esbuild/darwin-arm64@0.24.0: resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} @@ -2226,14 +2165,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.21.5: - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - dev: true - optional: true - /@esbuild/darwin-x64@0.24.0: resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} @@ -2242,14 +2173,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.21.5: - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - dev: true - optional: true - /@esbuild/freebsd-arm64@0.24.0: resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} @@ -2258,14 +2181,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.21.5: - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - dev: true - optional: true - /@esbuild/freebsd-x64@0.24.0: resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} @@ -2274,14 +2189,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.21.5: - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-arm64@0.24.0: resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} @@ -2290,14 +2197,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.21.5: - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@esbuild/linux-arm@0.24.0: resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} @@ -2306,14 +2205,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.21.5: - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - dev: true - optional: true - /@esbuild/linux-ia32@0.24.0: resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} @@ -2322,14 +2213,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.21.5: - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-loong64@0.24.0: resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} @@ -2338,14 +2221,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.21.5: - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - dev: true - optional: true - /@esbuild/linux-mips64el@0.24.0: resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} @@ -2354,14 +2229,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.21.5: - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-ppc64@0.24.0: resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} @@ -2370,14 +2237,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.21.5: - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-riscv64@0.24.0: resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} @@ -2386,14 +2245,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.21.5: - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - dev: true - optional: true - /@esbuild/linux-s390x@0.24.0: resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} @@ -2402,14 +2253,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.21.5: - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-x64@0.24.0: resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} @@ -2418,14 +2261,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.21.5: - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - dev: true - optional: true - /@esbuild/netbsd-x64@0.24.0: resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} @@ -2442,14 +2277,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.21.5: - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - dev: true - optional: true - /@esbuild/openbsd-x64@0.24.0: resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} @@ -2458,14 +2285,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.21.5: - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - dev: true - optional: true - /@esbuild/sunos-x64@0.24.0: resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} @@ -2474,14 +2293,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.21.5: - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - dev: true - optional: true - /@esbuild/win32-arm64@0.24.0: resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} @@ -2490,14 +2301,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.21.5: - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - dev: true - optional: true - /@esbuild/win32-ia32@0.24.0: resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} @@ -2506,14 +2309,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.21.5: - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - dev: true - optional: true - /@esbuild/win32-x64@0.24.0: resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} @@ -2542,7 +2337,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -2606,7 +2401,7 @@ packages: '@google-cloud/promisify': 4.0.0 '@grpc/proto-loader': 0.7.13 '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 1.29.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 @@ -2635,8 +2430,8 @@ packages: - supports-color dev: true - /@grpc/grpc-js@1.12.3: - resolution: {integrity: sha512-iaxAZnANdCwMNpJlyhkI1W1jQZIDZKFNtU2OpQDdgd+pBcU3t7G+PT7svobkW4WSZTdis+CVV6y8KIwu83HDYQ==} + /@grpc/grpc-js@1.12.4: + resolution: {integrity: sha512-NBhrxEWnFh0FxeA0d//YP95lRFsSx2TNLEUQg4/W+5f/BMxcCjgOOIT24iD+ZB/tZw057j44DaIxja7w4XMrhg==} engines: {node: '>=12.10.0'} dependencies: '@grpc/proto-loader': 0.7.13 @@ -2664,7 +2459,7 @@ packages: deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2680,13 +2475,13 @@ packages: deprecated: Use @eslint/object-schema instead dev: true - /@inquirer/checkbox@4.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-+gznPl8ip8P8HYHYecDtUtdsh1t2jvb+sWCD72GAiZ9m45RqwrLmReDaqdC0umQfamtFXVRoMVJ2/qINKGm9Tg==} + /@inquirer/checkbox@4.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-CEt9B4e8zFOGtc/LYeQx5m8nfqQeG/4oNNv0PUvXGG0mys+wR/WbJ3B4KfSQ4Fcr3AQfpiuFOi3fVvmPfvNbxw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/figures': 1.0.8 '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 @@ -2700,13 +2495,24 @@ packages: peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@types/node': 18.19.67 + dev: true + + /@inquirer/confirm@5.1.0(@types/node@18.19.67): + resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 dev: true - /@inquirer/core@10.1.0(@types/node@18.19.67): - resolution: {integrity: sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==} + /@inquirer/core@10.1.1(@types/node@18.19.67): + resolution: {integrity: sha512-rmZVXy9iZvO3ZStEe/ayuuwIJ23LSF13aPMlLMTQARX6lGUBDHGV8UB5i9MRrfy0+mZwt5/9bdy8llszSD3NQA==} engines: {node: '>=18'} dependencies: '@inquirer/figures': 1.0.8 @@ -2722,25 +2528,25 @@ packages: - '@types/node' dev: true - /@inquirer/editor@4.1.0(@types/node@18.19.67): - resolution: {integrity: sha512-K1gGWsxEqO23tVdp5MT3H799OZ4ER1za7Dlc8F4um0W7lwSv0KGR/YyrUEyimj0g7dXZd8XknM/5QA2/Uy+TbA==} + /@inquirer/editor@4.2.0(@types/node@18.19.67): + resolution: {integrity: sha512-Z3LeGsD3WlItDqLxTPciZDbGtm0wrz7iJGS/uUxSiQxef33ZrBq7LhsXg30P7xrWz1kZX4iGzxxj5SKZmJ8W+w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 external-editor: 3.1.0 dev: true - /@inquirer/expand@4.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-WdgCX1cUtinz+syKyZdJomovULYlKUWZbVYZzhf+ZeeYf4htAQ3jLymoNs3koIAKfZZl3HUBb819ClCBfyznaw==} + /@inquirer/expand@4.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-MDszqW4HYBpVMmAoy/FA9laLrgo899UAga0itEjsYrBthKieDZNc0e16gdn7N3cQ0DSf/6zsTBZMuDYDQU4ktg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 yoctocolors-cjs: 2.1.2 @@ -2751,91 +2557,91 @@ packages: engines: {node: '>=18'} dev: true - /@inquirer/input@4.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-yCLCraigU085EcdpIVEDgyfGv4vBiE4I+k1qRkc9C5dMjWF42ADMGy1RFU94+eZlz4YlkmFsiyHZy0W1wdhaNg==} + /@inquirer/input@4.1.0(@types/node@18.19.67): + resolution: {integrity: sha512-16B8A9hY741yGXzd8UJ9R8su/fuuyO2e+idd7oVLYjP23wKJ6ILRIIHcnXe8/6AoYgwRS2zp4PNsW/u/iZ24yg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 dev: true - /@inquirer/number@3.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-MKQhYofdUNk7eqJtz52KvM1dH6R93OMrqHduXCvuefKrsiMjHiMwjc3NZw5Imm2nqY7gWd9xdhYrtcHMJQZUxA==} + /@inquirer/number@3.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-HA/W4YV+5deKCehIutfGBzNxWH1nhvUC67O4fC9ufSijn72yrYnRmzvC61dwFvlXIG1fQaYWi+cqNE9PaB9n6Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 dev: true - /@inquirer/password@4.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-tQXGSu7IO07gsYlGy3VgXRVsbOWqFBMbqAUrJSc1PDTQQ5Qdm+QVwkP0OC0jnUZ62D19iPgXOMO+tnWG+HhjNQ==} + /@inquirer/password@4.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-3qWjk6hS0iabG9xx0U1plwQLDBc/HA/hWzLFFatADpR6XfE62LqPr9GpFXBkLU0KQUaIXZ996bNG+2yUvocH8w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 ansi-escapes: 4.3.2 dev: true - /@inquirer/prompts@7.1.0(@types/node@18.19.67): - resolution: {integrity: sha512-5U/XiVRH2pp1X6gpNAjWOglMf38/Ys522ncEHIKT1voRUvSj/DQnR22OVxHnwu5S+rCFaUiPQ57JOtMFQayqYA==} + /@inquirer/prompts@7.2.0(@types/node@18.19.67): + resolution: {integrity: sha512-ZXYZ5oGVrb+hCzcglPeVerJ5SFwennmDOPfXq1WyeZIrPGySLbl4W6GaSsBFvu3WII36AOK5yB8RMIEEkBjf8w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/checkbox': 4.0.2(@types/node@18.19.67) - '@inquirer/confirm': 5.0.2(@types/node@18.19.67) - '@inquirer/editor': 4.1.0(@types/node@18.19.67) - '@inquirer/expand': 4.0.2(@types/node@18.19.67) - '@inquirer/input': 4.0.2(@types/node@18.19.67) - '@inquirer/number': 3.0.2(@types/node@18.19.67) - '@inquirer/password': 4.0.2(@types/node@18.19.67) - '@inquirer/rawlist': 4.0.2(@types/node@18.19.67) - '@inquirer/search': 3.0.2(@types/node@18.19.67) - '@inquirer/select': 4.0.2(@types/node@18.19.67) + '@inquirer/checkbox': 4.0.3(@types/node@18.19.67) + '@inquirer/confirm': 5.1.0(@types/node@18.19.67) + '@inquirer/editor': 4.2.0(@types/node@18.19.67) + '@inquirer/expand': 4.0.3(@types/node@18.19.67) + '@inquirer/input': 4.1.0(@types/node@18.19.67) + '@inquirer/number': 3.0.3(@types/node@18.19.67) + '@inquirer/password': 4.0.3(@types/node@18.19.67) + '@inquirer/rawlist': 4.0.3(@types/node@18.19.67) + '@inquirer/search': 3.0.3(@types/node@18.19.67) + '@inquirer/select': 4.0.3(@types/node@18.19.67) '@types/node': 18.19.67 dev: true - /@inquirer/rawlist@4.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-3XGcskMoVF8H0Dl1S5TSZ3rMPPBWXRcM0VeNVsS4ByWeWjSeb0lPqfnBg6N7T0608I1B2bSVnbi2cwCrmOD1Yw==} + /@inquirer/rawlist@4.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-5MhinSzfmOiZlRoPezfbJdfVCZikZs38ja3IOoWe7H1dxL0l3Z2jAUgbBldeyhhOkELdGvPlBfQaNbeLslib1w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/search@3.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-Zv4FC7w4dJ13BOJfKRQCICQfShinGjb1bCEIHxTSnjj2telu3+3RHwHubPG9HyD4aix5s+lyAMEK/wSFD75HLA==} + /@inquirer/search@3.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-mQTCbdNolTGvGGVCJSI6afDwiSGTV+fMLPEIMDJgIV6L/s3+RYRpxt6t0DYnqMQmemnZ/Zq0vTIRwoHT1RgcTg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/figures': 1.0.8 '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/select@4.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-uSWUzaSYAEj0hlzxa1mUB6VqrKaYx0QxGBLZzU4xWFxaSyGaXxsSE4OSOwdU24j0xl8OajgayqFXW0l2bkl2kg==} + /@inquirer/select@4.0.3(@types/node@18.19.67): + resolution: {integrity: sha512-OZfKDtDE8+J54JYAFTUGZwvKNfC7W/gFCjDkcsO7HnTH/wljsZo9y/FJquOxMy++DY0+9l9o/MOZ8s5s1j5wmw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.0(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.67) '@inquirer/figures': 1.0.8 '@inquirer/type': 3.0.1(@types/node@18.19.67) '@types/node': 18.19.67 @@ -2940,8 +2746,8 @@ packages: tslib: 2.8.1 dev: true - /@jsonjoy.com/json-pack@1.1.0(tslib@2.8.1): - resolution: {integrity: sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==} + /@jsonjoy.com/json-pack@1.1.1(tslib@2.8.1): + resolution: {integrity: sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2966,23 +2772,16 @@ packages: resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} dev: true - /@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.1.0): + /@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.2.0): resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==} engines: {node: '>=18.0.0'} peerDependencies: '@inquirer/prompts': '>= 3 < 8' dependencies: - '@inquirer/prompts': 7.1.0(@types/node@18.19.67) + '@inquirer/prompts': 7.2.0(@types/node@18.19.67) '@inquirer/type': 1.5.5 dev: true - /@lmdb/lmdb-darwin-arm64@3.1.5: - resolution: {integrity: sha512-ue5PSOzHMCIYrfvPP/MRS6hsKKLzqqhcdAvJCO8uFlDdj598EhgnacuOTuqA6uBK5rgiZXfDWyb7DVZSiBKxBA==} - cpu: [arm64] - os: [darwin] - dev: true - optional: true - /@lmdb/lmdb-darwin-arm64@3.2.0: resolution: {integrity: sha512-Ca5N6DGDlH/lIycMj2U3FtokNPdUmGyL+htto3G+gexoXYaDE9cbojVgwXd3/Zih9Friqh7l5qZk+LZEVDwJvQ==} cpu: [arm64] @@ -2990,13 +2789,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-darwin-x64@3.1.5: - resolution: {integrity: sha512-CGhsb0R5vE6mMNCoSfxHFD8QTvBHM51gs4DBeigTYHWnYv2V5YpJkC4rMo5qAAFifuUcc0+a8a3SIU0c9NrfNw==} - cpu: [x64] - os: [darwin] - dev: true - optional: true - /@lmdb/lmdb-darwin-x64@3.2.0: resolution: {integrity: sha512-s/MXLuRXxJjQpg0aM/yN3FJh34tqEPo6Zg+FJvc9+gUNpzXzZwBB9MOTYA05WVrvxwtIKxMg7ocLjAH1LQUT3A==} cpu: [x64] @@ -3004,13 +2796,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-linux-arm64@3.1.5: - resolution: {integrity: sha512-LAjaoOcBHGj6fiYB8ureiqPoph4eygbXu4vcOF+hsxiY74n8ilA7rJMmGUT0K0JOB5lmRQHSmor3mytRjS4qeQ==} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@lmdb/lmdb-linux-arm64@3.2.0: resolution: {integrity: sha512-XRkaZok4AkzMXKLfsdJYVBXYJ/6idDpuLIPGiVjelxKLbZIKB7F+Xp2BDfeelAPdjRbW/qhzF7FNA0u1blz/Og==} cpu: [arm64] @@ -3018,13 +2803,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-linux-arm@3.1.5: - resolution: {integrity: sha512-3WeW328DN+xB5PZdhSWmqE+t3+44xWXEbqQ+caWJEZfOFdLp9yklBZEbVqVdqzznkoaXJYxTCp996KD6HmANeg==} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@lmdb/lmdb-linux-arm@3.2.0: resolution: {integrity: sha512-e9pljI8rZk1UAaDdi7sGiY0zkqsNAS3a4llOuk2UslAH4UP9vGZfjfCR5D+HKPUPbSEk28adOiNmIUT4N2lTBw==} cpu: [arm] @@ -3032,13 +2810,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-linux-x64@3.1.5: - resolution: {integrity: sha512-k/IklElP70qdCXOQixclSl2GPLFiopynGoKX1FqDd1/H0E3Fo1oPwjY2rEVu+0nS3AOw1sryStdXk8CW3cVIsw==} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@lmdb/lmdb-linux-x64@3.2.0: resolution: {integrity: sha512-c8HMb044qzMT/wvk4HzBesRv3wQNeFkUFz6laH3FKVs0+ztM7snuT3izPWdeYhgCLkAiIqshqlcbvzQfPDeg2Q==} cpu: [x64] @@ -3046,13 +2817,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-win32-x64@3.1.5: - resolution: {integrity: sha512-KYar6W8nraZfSJspcK7Kp7hdj238X/FNauYbZyrqPBrtsXI1hvI4/KcRcRGP50aQoV7fkKDyJERlrQGMGTZUsA==} - cpu: [x64] - os: [win32] - dev: true - optional: true - /@lmdb/lmdb-win32-x64@3.2.0: resolution: {integrity: sha512-xcrdSOPtpZ4ScWJM2x4g+eWCOctINOcaEWGSvZbmXPFD69SAFywyhqNsB3snAY3assYV0B52PWmiAwXWfijd+g==} cpu: [x64] @@ -3318,39 +3082,19 @@ packages: fastq: 1.17.1 dev: true - /@npmcli/agent@2.2.2: - resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - agent-base: 7.1.1(supports-color@9.4.0) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@npmcli/agent@3.0.0: resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} engines: {node: ^18.17.0 || >=20.5.0} dependencies: - agent-base: 7.1.1(supports-color@9.4.0) + agent-base: 7.1.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@9.4.0) lru-cache: 10.4.3 - socks-proxy-agent: 8.0.4 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color dev: true - /@npmcli/fs@3.1.1: - resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - semver: 7.6.3 - dev: true - /@npmcli/fs@4.0.0: resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} engines: {node: ^18.17.0 || >=20.5.0} @@ -3416,14 +3160,14 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} dev: true - /@npmcli/run-script@9.0.1: - resolution: {integrity: sha512-q9C0uHrb6B6cm3qXVM32UmpqTKuFGbtP23O2K5sLvPMz2hilKd0ptqGXSpuunOuOmPQb/aT5F/kCXFc1P2gO/A==} + /@npmcli/run-script@9.0.2: + resolution: {integrity: sha512-cJXiUlycdizQwvqE1iaAb4VRUM3RX09/8q46zjvy+ct9GhfZRWd7jXYVc1tn/CfRlGPVkX/u4sstRlepsm7hfw==} engines: {node: ^18.17.0 || >=20.5.0} dependencies: '@npmcli/node-gyp': 4.0.0 '@npmcli/package-json': 6.1.0 '@npmcli/promise-spawn': 8.0.2 - node-gyp: 10.3.1 + node-gyp: 11.0.0 proc-log: 5.0.0 which: 5.0.0 transitivePeerDependencies: @@ -3537,8 +3281,8 @@ packages: engines: {node: '>=8.0.0'} dev: true - /@opentelemetry/context-async-hooks@1.28.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-igcl4Ve+F1N2063PJUkesk/GkYyuGIWinYkSyAFTnIj3gzrOgvOA4k747XNdL47HRRL1w/qh7UW8NDuxOLvKFA==} + /@opentelemetry/context-async-hooks@1.29.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-TKT91jcFXgHyIDF1lgJF3BHGIakn6x0Xp7Tq3zoS3TMPzT9IlP0xEavWP8C1zGjU9UmZP2VR1tJhW9Az1A3w8Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -3729,15 +3473,15 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: true - /@puppeteer/browsers@2.4.1: - resolution: {integrity: sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng==} + /@puppeteer/browsers@2.5.0: + resolution: {integrity: sha512-6TQAc/5uRILE6deixJ1CR8rXyTbzXIXNgO1D0Woi9Bqicz2FV5iKP3BHYEg6o4UATCMcbQQ0jbmeaOkn/HQk2w==} engines: {node: '>=18'} hasBin: true dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) extract-zip: 2.0.1 progress: 2.0.3 - proxy-agent: 6.4.0 + proxy-agent: 6.5.0 semver: 7.6.3 tar-fs: 3.0.6 unbzip2-stream: 1.4.3 @@ -3746,7 +3490,7 @@ packages: - supports-color dev: true - /@rollup/plugin-alias@5.1.1(rollup@4.28.0): + /@rollup/plugin-alias@5.1.1(rollup@4.28.1): resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3755,10 +3499,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.28.0 + rollup: 4.28.1 dev: true - /@rollup/plugin-commonjs@28.0.1(rollup@4.28.0): + /@rollup/plugin-commonjs@28.0.1(rollup@4.28.1): resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: @@ -3767,17 +3511,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.0) + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.14 + magic-string: 0.30.15 picomatch: 4.0.2 - rollup: 4.28.0 + rollup: 4.28.1 dev: true - /@rollup/plugin-json@6.1.0(rollup@4.28.0): + /@rollup/plugin-json@6.1.0(rollup@4.28.1): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3786,26 +3530,26 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.0) - rollup: 4.28.0 + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + rollup: 4.28.1 dev: true - /@rollup/plugin-node-resolve@13.3.0(rollup@4.28.0): + /@rollup/plugin-node-resolve@13.3.0(rollup@4.28.1): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.28.0) + '@rollup/pluginutils': 3.1.0(rollup@4.28.1) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.28.0 + rollup: 4.28.1 dev: true - /@rollup/plugin-node-resolve@15.3.0(rollup@4.28.0): + /@rollup/plugin-node-resolve@15.3.0(rollup@4.28.1): resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3814,15 +3558,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.0) + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.28.0 + rollup: 4.28.1 dev: true - /@rollup/pluginutils@3.1.0(rollup@4.28.0): + /@rollup/pluginutils@3.1.0(rollup@4.28.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -3831,10 +3575,10 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.28.0 + rollup: 4.28.1 dev: true - /@rollup/pluginutils@5.1.3(rollup@4.28.0): + /@rollup/pluginutils@5.1.3(rollup@4.28.1): resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3846,16 +3590,9 @@ packages: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 - rollup: 4.28.0 + rollup: 4.28.1 dev: true - /@rollup/rollup-android-arm-eabi@4.26.0: - resolution: {integrity: sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==} - cpu: [arm] - os: [android] - dev: true - optional: true - /@rollup/rollup-android-arm-eabi@4.28.0: resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==} cpu: [arm] @@ -3863,9 +3600,9 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm64@4.26.0: - resolution: {integrity: sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==} - cpu: [arm64] + /@rollup/rollup-android-arm-eabi@4.28.1: + resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} + cpu: [arm] os: [android] dev: true optional: true @@ -3877,10 +3614,10 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.26.0: - resolution: {integrity: sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==} + /@rollup/rollup-android-arm64@4.28.1: + resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} cpu: [arm64] - os: [darwin] + os: [android] dev: true optional: true @@ -3891,9 +3628,9 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-x64@4.26.0: - resolution: {integrity: sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==} - cpu: [x64] + /@rollup/rollup-darwin-arm64@4.28.1: + resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} + cpu: [arm64] os: [darwin] dev: true optional: true @@ -3905,10 +3642,10 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-arm64@4.26.0: - resolution: {integrity: sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==} - cpu: [arm64] - os: [freebsd] + /@rollup/rollup-darwin-x64@4.28.1: + resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} + cpu: [x64] + os: [darwin] dev: true optional: true @@ -3919,9 +3656,9 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-x64@4.26.0: - resolution: {integrity: sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==} - cpu: [x64] + /@rollup/rollup-freebsd-arm64@4.28.1: + resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} + cpu: [arm64] os: [freebsd] dev: true optional: true @@ -3933,10 +3670,10 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.26.0: - resolution: {integrity: sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==} - cpu: [arm] - os: [linux] + /@rollup/rollup-freebsd-x64@4.28.1: + resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} + cpu: [x64] + os: [freebsd] dev: true optional: true @@ -3947,8 +3684,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.26.0: - resolution: {integrity: sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==} + /@rollup/rollup-linux-arm-gnueabihf@4.28.1: + resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} cpu: [arm] os: [linux] dev: true @@ -3961,9 +3698,9 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.26.0: - resolution: {integrity: sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==} - cpu: [arm64] + /@rollup/rollup-linux-arm-musleabihf@4.28.1: + resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} + cpu: [arm] os: [linux] dev: true optional: true @@ -3975,8 +3712,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.26.0: - resolution: {integrity: sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==} + /@rollup/rollup-linux-arm64-gnu@4.28.1: + resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} cpu: [arm64] os: [linux] dev: true @@ -3989,9 +3726,16 @@ packages: dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.26.0: - resolution: {integrity: sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==} - cpu: [ppc64] + /@rollup/rollup-linux-arm64-musl@4.28.1: + resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + + /@rollup/rollup-linux-loongarch64-gnu@4.28.1: + resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} + cpu: [loong64] os: [linux] dev: true optional: true @@ -4003,9 +3747,9 @@ packages: dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.26.0: - resolution: {integrity: sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==} - cpu: [riscv64] + /@rollup/rollup-linux-powerpc64le-gnu@4.28.1: + resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} + cpu: [ppc64] os: [linux] dev: true optional: true @@ -4017,9 +3761,9 @@ packages: dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.26.0: - resolution: {integrity: sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==} - cpu: [s390x] + /@rollup/rollup-linux-riscv64-gnu@4.28.1: + resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} + cpu: [riscv64] os: [linux] dev: true optional: true @@ -4031,9 +3775,9 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.26.0: - resolution: {integrity: sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==} - cpu: [x64] + /@rollup/rollup-linux-s390x-gnu@4.28.1: + resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} + cpu: [s390x] os: [linux] dev: true optional: true @@ -4045,8 +3789,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.26.0: - resolution: {integrity: sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==} + /@rollup/rollup-linux-x64-gnu@4.28.1: + resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} cpu: [x64] os: [linux] dev: true @@ -4059,10 +3803,10 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.26.0: - resolution: {integrity: sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==} - cpu: [arm64] - os: [win32] + /@rollup/rollup-linux-x64-musl@4.28.1: + resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} + cpu: [x64] + os: [linux] dev: true optional: true @@ -4073,9 +3817,9 @@ packages: dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.26.0: - resolution: {integrity: sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==} - cpu: [ia32] + /@rollup/rollup-win32-arm64-msvc@4.28.1: + resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} + cpu: [arm64] os: [win32] dev: true optional: true @@ -4087,9 +3831,9 @@ packages: dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.26.0: - resolution: {integrity: sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==} - cpu: [x64] + /@rollup/rollup-win32-ia32-msvc@4.28.1: + resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} + cpu: [ia32] os: [win32] dev: true optional: true @@ -4101,8 +3845,15 @@ packages: dev: true optional: true - /@rollup/wasm-node@4.28.0: - resolution: {integrity: sha512-M686ZTwhx618GAsRN71qr9a4Z0UMd9T75rICZFV7G8ajqzYbeikt/6dgQZtEOLIp6bqtz7nYGKOS93CXEPtqoA==} + /@rollup/rollup-win32-x64-msvc@4.28.1: + resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} + cpu: [x64] + os: [win32] + dev: true + optional: true + + /@rollup/wasm-node@4.28.1: + resolution: {integrity: sha512-t4ckEC09V3wbe0r6T4fGjq85lEbvGcGxn7QYYgjHyKNzZaQU5kFqr4FsavXYHRiVNYq8m+dRhdGjpfcC9UzzPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: @@ -4224,13 +3975,13 @@ packages: resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: true - /@stylistic/eslint-plugin@2.11.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-PNRHbydNG5EH8NK4c+izdJlxajIR6GxcUhzsYNRsn6Myep4dsZt0qFCz3rCPnkvgO5FYibDcMqgNHUT+zvjYZw==} + /@stylistic/eslint-plugin@2.12.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-IvD2WXbOoSp0zNpyYbjdSyEjZtut78RYfj2WIlbChE7HFuposTK5X1hc5+4AyqYcjLXYdD5oo/sJtqMGFNRb1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) eslint: 8.57.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -4296,8 +4047,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 @@ -4306,20 +4057,20 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 dev: true /@types/babel__traverse@7.20.6: resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true /@types/big.js@6.2.2: @@ -4864,23 +4615,20 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} + /@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} 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: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: 5.7.2 dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.17.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.17.0 - '@typescript-eslint/type-utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.17.0 + '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/type-utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -4891,48 +4639,42 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.17.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==} + /@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: 5.7.2 dependencies: - '@typescript-eslint/scope-manager': 8.17.0 - '@typescript-eslint/types': 8.17.0 - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.17.0 - debug: 4.3.7(supports-color@9.4.0) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.0 + debug: 4.4.0(supports-color@9.4.0) eslint: 8.57.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@8.17.0: - resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} + /@typescript-eslint/scope-manager@8.18.0: + resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.17.0 - '@typescript-eslint/visitor-keys': 8.17.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 dev: true - /@typescript-eslint/type-utils@8.17.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==} + /@typescript-eslint/type-utils@8.18.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: 5.7.2 dependencies: - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.17.0(eslint@8.57.0)(typescript@5.7.2) - debug: 4.3.7(supports-color@9.4.0) + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + debug: 4.4.0(supports-color@9.4.0) eslint: 8.57.0 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 @@ -4940,23 +4682,20 @@ packages: - supports-color dev: true - /@typescript-eslint/types@8.17.0: - resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} + /@typescript-eslint/types@8.18.0: + resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.17.0(typescript@5.7.2): - resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} + /@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2): + resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: 5.7.2 dependencies: - '@typescript-eslint/types': 8.17.0 - '@typescript-eslint/visitor-keys': 8.17.0 - debug: 4.3.7(supports-color@9.4.0) + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 + debug: 4.4.0(supports-color@9.4.0) fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 @@ -4967,36 +4706,33 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.17.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} + /@typescript-eslint/utils@8.18.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: 5.7.2 dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.17.0 - '@typescript-eslint/types': 8.17.0 - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) eslint: 8.57.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.17.0: - resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} + /@typescript-eslint/visitor-keys@8.18.0: + resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/types': 8.18.0 eslint-visitor-keys: 4.2.0 dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@ungap/structured-clone@1.2.1: + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} dev: true /@verdaccio/auth@8.0.0-next-8.4: @@ -5008,7 +4744,7 @@ packages: '@verdaccio/loaders': 8.0.0-next-8.3 '@verdaccio/signature': 8.0.0-next-8.1 '@verdaccio/utils': 8.1.0-next-8.4 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 lodash: 4.17.21 verdaccio-htpasswd: 13.0.0-next-8.4 transitivePeerDependencies: @@ -5029,7 +4765,7 @@ packages: dependencies: '@verdaccio/core': 8.0.0-next-8.4 '@verdaccio/utils': 8.1.0-next-8.4 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 js-yaml: 4.1.0 lodash: 4.17.21 minimatch: 7.4.6 @@ -5079,7 +4815,7 @@ packages: resolution: {integrity: sha512-7bIOdi+U1xSLRu0s1XxQwrV3zzzFaVaTX7JKFgj2tQvMy9AgzlpjbW1CqaH8OTVEqq03Pwvwj5hQlcvyzCwm1A==} engines: {node: '>=18'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 lodash: 4.17.21 transitivePeerDependencies: - supports-color @@ -5108,7 +4844,7 @@ packages: '@verdaccio/core': 8.0.0-next-8.4 '@verdaccio/logger-prettify': 8.0.0-next-8.1 colorette: 2.0.20 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: true @@ -5142,7 +4878,7 @@ packages: '@verdaccio/core': 8.0.0-next-8.4 '@verdaccio/url': 13.0.0-next-8.4 '@verdaccio/utils': 8.1.0-next-8.4 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 express: 4.21.1 express-rate-limit: 5.5.1 lodash: 4.17.21 @@ -5161,7 +4897,7 @@ packages: resolution: {integrity: sha512-lHD/Z2FoPQTtDYz6ZlXhj/lrg0SFirHrwCGt/cibl1GlePpx78WPdo03tgAyl0Qf+I35n484/gR1l9eixBQqYw==} engines: {node: '>=18'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 jsonwebtoken: 9.0.2 transitivePeerDependencies: - supports-color @@ -5179,7 +4915,7 @@ packages: '@verdaccio/core': 8.0.0-next-8.4 '@verdaccio/url': 13.0.0-next-8.4 '@verdaccio/utils': 8.1.0-next-8.4 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 gunzip-maybe: 1.4.2 lodash: 4.17.21 tar-stream: 3.1.7 @@ -5196,7 +4932,7 @@ packages: engines: {node: '>=18'} dependencies: '@verdaccio/core': 8.0.0-next-8.4 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 lodash: 4.17.21 validator: 13.12.0 transitivePeerDependencies: @@ -5223,22 +4959,22 @@ packages: semver: 7.6.3 dev: true - /@vitejs/plugin-basic-ssl@1.1.0(vite@5.4.11): - resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} - engines: {node: '>=14.6.0'} + /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.2): + resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} + engines: {node: '>=14.21.3'} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 5.4.11(@types/node@18.19.67)(less@4.2.1)(sass@1.80.7)(terser@5.36.0) + vite: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.2): + /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.3): resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} engines: {node: '>=14.21.3'} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.81.1)(terser@5.36.0) + vite: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) dev: true /@web/browser-logs@0.4.0: @@ -5285,12 +5021,12 @@ packages: resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} dependencies: - '@rollup/plugin-node-resolve': 15.3.0(rollup@4.28.0) + '@rollup/plugin-node-resolve': 15.3.0(rollup@4.28.1) '@web/dev-server-core': 0.7.4 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.28.0 - whatwg-url: 14.0.0 + rollup: 4.28.1 + whatwg-url: 14.1.0 transitivePeerDependencies: - bufferutil - supports-color @@ -5338,7 +5074,7 @@ packages: '@web/test-runner-coverage-v8': 0.8.0 async-mutex: 0.4.0 chrome-launcher: 0.15.2 - puppeteer-core: 23.9.0 + puppeteer-core: 23.10.1 transitivePeerDependencies: - bufferutil - supports-color @@ -5642,26 +5378,14 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true - /agent-base@7.1.1(supports-color@9.4.0): - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + /agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - dependencies: - debug: 4.3.7(supports-color@9.4.0) - transitivePeerDependencies: - - supports-color - dev: true - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 dev: true /ajv-draft-04@1.0.0(ajv@8.13.0): @@ -5859,7 +5583,7 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-array-buffer: 3.0.4 dev: true @@ -5871,11 +5595,11 @@ packages: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.5 is-string: 1.1.0 dev: true @@ -5900,7 +5624,7 @@ packages: resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-errors: 1.3.0 @@ -5912,7 +5636,7 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-shim-unscopables: 1.0.2 @@ -5922,7 +5646,7 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-shim-unscopables: 1.0.2 @@ -5933,11 +5657,11 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.5 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 dev: true @@ -6028,7 +5752,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001686 + caniuse-lite: 1.0.30001687 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -6055,7 +5779,7 @@ packages: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} dev: true - /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1): + /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1): resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -6065,7 +5789,7 @@ packages: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true /babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): @@ -6073,7 +5797,7 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 @@ -6137,7 +5861,7 @@ packages: /bare-stream@2.4.2: resolution: {integrity: sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==} dependencies: - streamx: 2.20.2 + streamx: 2.21.0 dev: true optional: true @@ -6182,6 +5906,20 @@ packages: postcss-media-query-parser: 0.2.3 dev: true + /beasties@0.2.0: + resolution: {integrity: sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow==} + engines: {node: '>=14.0.0'} + dependencies: + css-select: 5.1.0 + css-what: 6.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + htmlparser2: 9.1.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-media-query-parser: 0.2.3 + dev: true + /before-after-hook@3.0.2: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} dev: true @@ -6299,7 +6037,7 @@ packages: - utf-8-validate dev: true - /browser-sync@3.0.3(debug@4.3.7): + /browser-sync@3.0.3(debug@4.4.0): resolution: {integrity: sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==} engines: {node: '>= 8.0.0'} hasBin: true @@ -6317,7 +6055,7 @@ packages: etag: 1.8.1 fresh: 0.5.2 fs-extra: 3.0.1 - http-proxy: 1.18.1(debug@4.3.7) + http-proxy: 1.18.1(debug@4.4.0) immutable: 3.8.2 micromatch: 4.0.8 opn: 5.3.0 @@ -6350,8 +6088,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001686 - electron-to-chromium: 1.5.68 + caniuse-lite: 1.0.30001687 + electron-to-chromium: 1.5.71 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) dev: true @@ -6431,24 +6169,6 @@ packages: yargs-parser: 20.2.9 dev: true - /cacache@18.0.4: - resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/fs': 3.1.1 - fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.6 - tar: 6.2.1 - unique-filename: 3.0.0 - dev: true - /cacache@19.0.1: resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6461,7 +6181,7 @@ packages: minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - p-map: 7.0.2 + p-map: 7.0.3 ssri: 12.0.0 tar: 7.4.3 unique-filename: 4.0.0 @@ -6475,14 +6195,21 @@ packages: ylru: 1.4.0 dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + /call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + dev: true + + /call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.5 set-function-length: 1.2.2 dev: true @@ -6501,8 +6228,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001686: - resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} + /caniuse-lite@1.0.30001687: + resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} dev: true /caseless@0.12.0: @@ -6624,11 +6351,6 @@ packages: engines: {node: '>=8'} dev: true - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -6910,7 +6632,7 @@ packages: is-what: 3.14.1 dev: true - /copy-webpack-plugin@12.0.2(webpack@5.96.1): + /copy-webpack-plugin@12.0.2(webpack@5.97.1): resolution: {integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -6922,7 +6644,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true /core-js-compat@3.39.0: @@ -6996,7 +6718,7 @@ packages: which: 2.0.2 dev: true - /css-loader@7.1.2(webpack@5.96.1): + /css-loader@7.1.2(webpack@5.97.1): resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -7016,7 +6738,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true /css-select@5.1.0: @@ -7065,7 +6787,7 @@ packages: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 dev: true @@ -7074,7 +6796,7 @@ packages: resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 dev: true @@ -7083,7 +6805,7 @@ packages: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 dev: true @@ -7135,9 +6857,21 @@ packages: ms: 2.1.2 dev: true - /debug@4.3.7(supports-color@9.4.0): + /debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.4.0(supports-color@9.4.0): + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -7201,9 +6935,9 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.1.0 + gopd: 1.2.0 dev: true /define-lazy-prop@2.0.0: @@ -7393,6 +7127,15 @@ packages: domhandler: 5.0.3 dev: true + /dunder-proto@1.0.0: + resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + dev: true + /duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: @@ -7446,8 +7189,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.5.68: - resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==} + /electron-to-chromium@1.5.71: + resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} dev: true /emoji-regex@10.4.0: @@ -7494,7 +7237,7 @@ packages: resolution: {integrity: sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 engine.io-parser: 5.2.3 ws: 8.17.1 xmlhttprequest-ssl: 2.1.2 @@ -7520,7 +7263,7 @@ packages: base64id: 2.0.0 cookie: 0.7.2 cors: 2.8.5 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 engine.io-parser: 5.2.3 ws: 8.17.1 transitivePeerDependencies: @@ -7594,22 +7337,22 @@ packages: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 data-view-buffer: 1.0.1 data-view-byte-length: 1.0.1 data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.3.0 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.5 get-symbol-description: 1.0.2 globalthis: 1.0.4 - gopd: 1.1.0 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.1.0 + has-proto: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 internal-slot: 1.0.7 @@ -7639,11 +7382,9 @@ packages: which-typed-array: 1.1.16 dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + /es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 dev: true /es-errors@1.3.0: @@ -7666,7 +7407,7 @@ packages: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.5 has-tostringtag: 1.0.2 hasown: 2.0.2 dev: true @@ -7702,36 +7443,6 @@ packages: hasBin: true dev: true - /esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - dev: true - /esbuild@0.24.0: resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} @@ -7813,7 +7524,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.17.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -7834,7 +7545,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -7850,7 +7561,7 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.17.0)(eslint@8.57.0): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -7861,7 +7572,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.17.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -7870,7 +7581,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.17.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -7926,11 +7637,11 @@ packages: '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@ungap/structured-clone': 1.2.1 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -8116,6 +7827,45 @@ packages: - supports-color dev: true + /express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -8134,7 +7884,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -8362,7 +8112,7 @@ packages: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} dev: true - /follow-redirects@1.15.9(debug@4.3.7): + /follow-redirects@1.15.9(debug@4.4.0): resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: @@ -8371,7 +8121,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) dev: true /for-each@0.3.3: @@ -8453,15 +8203,6 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: true - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true - /fs-extra@3.0.1: resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} dependencies: @@ -8531,7 +8272,7 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 functions-have-names: 1.2.3 @@ -8553,7 +8294,7 @@ packages: engines: {node: '>=14'} dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@9.4.0) is-stream: 2.0.1 node-fetch: 2.7.0 uuid: 9.0.1 @@ -8588,13 +8329,16 @@ packages: engines: {node: '>=18'} dev: true - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + /get-intrinsic@1.2.5: + resolution: {integrity: sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==} engines: {node: '>= 0.4'} dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.1.0 + gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 dev: true @@ -8620,19 +8364,18 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.5 dev: true - /get-uri@6.0.3: - resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + /get-uri@6.0.4: + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.7(supports-color@9.4.0) - fs-extra: 11.2.0 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true @@ -8702,7 +8445,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - gopd: 1.1.0 + gopd: 1.2.0 dev: true /globby@11.1.0: @@ -8760,7 +8503,7 @@ packages: resolution: {integrity: sha512-Phyp9fMfA00J3sZbJxbbB4jC55b7DBjE3F6poyL3wKMEBVKA79q6BGuHcTiM28yOzVql0NDbRL8MLLh8Iwk9Dg==} engines: {node: '>=14'} dependencies: - '@grpc/grpc-js': 1.12.3 + '@grpc/grpc-js': 1.12.4 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 @@ -8781,11 +8524,9 @@ packages: resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} dev: true - /gopd@1.1.0: - resolution: {integrity: sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==} + /gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 dev: true /graceful-fs@4.2.11: @@ -8800,7 +8541,7 @@ packages: resolution: {integrity: sha512-06r73IoGaAIpzT+DRPnw7V5BXvZ5mjy1OcKqSPX+ZHOgbLxT+lJfz8IN83z/sbA3t55ZX88MfDaaCjDGdveVIA==} engines: {node: '>=12'} dependencies: - '@grpc/grpc-js': 1.12.3 + '@grpc/grpc-js': 1.12.4 dev: true /gtoken@7.1.0(supports-color@9.4.0): @@ -8876,14 +8617,14 @@ packages: /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 dev: true - /has-proto@1.1.0: - resolution: {integrity: sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==} + /has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + dunder-proto: 1.0.0 dev: true /has-symbols@1.1.0: @@ -8996,7 +8737,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true @@ -9005,13 +8746,13 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.1(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true - /http-proxy-middleware@2.0.7(@types/express@4.17.21)(debug@4.3.7): + /http-proxy-middleware@2.0.7(@types/express@4.17.21)(debug@4.4.0): resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -9022,7 +8763,7 @@ packages: dependencies: '@types/express': 4.17.21 '@types/http-proxy': 1.17.15 - http-proxy: 1.18.1(debug@4.3.7) + http-proxy: 1.18.1(debug@4.4.0) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 @@ -9035,8 +8776,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/http-proxy': 1.17.15 - debug: 4.3.7(supports-color@9.4.0) - http-proxy: 1.18.1(debug@4.3.7) + debug: 4.4.0(supports-color@9.4.0) + http-proxy: 1.18.1(debug@4.4.0) is-glob: 4.0.3 is-plain-object: 5.0.0 micromatch: 4.0.8 @@ -9044,12 +8785,12 @@ packages: - supports-color dev: true - /http-proxy@1.18.1(debug@4.3.7): + /http-proxy@1.18.1(debug@4.4.0): resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9(debug@4.3.7) + follow-redirects: 1.15.9(debug@4.4.0) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -9096,17 +8837,27 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true - /https-proxy-agent@7.0.5(supports-color@9.4.0): + /https-proxy-agent@7.0.5: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.1(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.6(supports-color@9.4.0): + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color dev: true @@ -9204,11 +8955,6 @@ packages: engines: {node: '>=0.8.19'} dev: true - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - /inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -9296,8 +9042,8 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.2.5 dev: true /is-arrayish@0.2.1: @@ -9329,7 +9075,7 @@ packages: resolution: {integrity: sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 dev: true @@ -9391,7 +9137,7 @@ packages: resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 dev: true /is-fullwidth-code-point@3.0.0: @@ -9450,10 +9196,6 @@ packages: ip-regex: 4.3.0 dev: true - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: true - /is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -9483,7 +9225,7 @@ packages: resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 dev: true @@ -9547,8 +9289,8 @@ packages: resolution: {integrity: sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - gopd: 1.1.0 + call-bind: 1.0.8 + gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 dev: true @@ -9562,7 +9304,7 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 dev: true /is-stream-ended@0.1.4: @@ -9578,7 +9320,7 @@ packages: resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 dev: true @@ -9586,7 +9328,7 @@ packages: resolution: {integrity: sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-symbols: 1.1.0 safe-regex-test: 1.0.3 dev: true @@ -9619,15 +9361,15 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 dev: true /is-weakset@2.0.3: resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.2.5 dev: true /is-what@3.14.1: @@ -9708,7 +9450,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -9721,7 +9463,7 @@ packages: engines: {node: '>=10'} dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -9742,7 +9484,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -9898,7 +9640,7 @@ packages: resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 isarray: 2.0.5 jsonify: 0.0.1 object-keys: 1.1.1 @@ -10064,7 +9806,7 @@ packages: karma-jasmine: ^5.0.0 dependencies: jasmine-core: 5.5.0 - karma: 6.4.4(debug@4.3.7) + karma: 6.4.4(debug@4.4.0) karma-jasmine: 5.1.0(karma@6.4.4) dev: true @@ -10075,7 +9817,7 @@ packages: karma: ^6.0.0 dependencies: jasmine-core: 4.6.1 - karma: 6.4.4(debug@4.3.7) + karma: 6.4.4(debug@4.4.0) dev: true /karma-junit-reporter@2.0.1(karma@6.4.4): @@ -10084,7 +9826,7 @@ packages: peerDependencies: karma: '>=0.9' dependencies: - karma: 6.4.4(debug@4.3.7) + karma: 6.4.4(debug@4.4.0) path-is-absolute: 1.0.1 xmlbuilder: 12.0.0 dev: true @@ -10095,7 +9837,7 @@ packages: karma: '>=0.9' requirejs: ^2.1.0 dependencies: - karma: 6.4.4(debug@4.3.7) + karma: 6.4.4(debug@4.4.0) requirejs: 2.3.7 dev: true @@ -10111,7 +9853,7 @@ packages: graceful-fs: 4.2.11 dev: true - /karma@6.4.4(debug@4.3.7): + /karma@6.4.4(debug@4.4.0): resolution: {integrity: sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==} engines: {node: '>= 10'} hasBin: true @@ -10125,7 +9867,7 @@ packages: dom-serialize: 2.2.1 glob: 7.2.3 graceful-fs: 4.2.11 - http-proxy: 1.18.1(debug@4.3.7) + http-proxy: 1.18.1(debug@4.4.0) isbinaryfile: 4.0.10 lodash: 4.17.21 log4js: 6.9.1 @@ -10198,7 +9940,7 @@ packages: resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} engines: {node: '>= 8'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -10224,7 +9966,7 @@ packages: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -10253,7 +9995,7 @@ packages: shell-quote: 1.8.2 dev: true - /less-loader@12.2.0(less@4.2.1)(webpack@5.96.1): + /less-loader@12.2.0(less@4.2.1)(webpack@5.97.1): resolution: {integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -10267,7 +10009,7 @@ packages: optional: true dependencies: less: 4.2.1 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true /less@4.2.1: @@ -10296,7 +10038,7 @@ packages: type-check: 0.4.0 dev: true - /license-webpack-plugin@4.0.2(webpack@5.96.1): + /license-webpack-plugin@4.0.2(webpack@5.97.1): resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} peerDependencies: webpack: '*' @@ -10304,7 +10046,7 @@ packages: webpack: optional: true dependencies: - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) webpack-sources: 3.2.3 dev: true @@ -10343,25 +10085,6 @@ packages: wrap-ansi: 9.0.0 dev: true - /lmdb@3.1.5: - resolution: {integrity: sha512-46Mch5Drq+A93Ss3gtbg+Xuvf5BOgIuvhKDWoGa3HcPHI6BL2NCOkRdSx1D4VfzwrxhnsjbyIVsLRlQHu6URvw==} - hasBin: true - dependencies: - msgpackr: 1.11.2 - node-addon-api: 6.1.0 - node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.5.3 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.1.5 - '@lmdb/lmdb-darwin-x64': 3.1.5 - '@lmdb/lmdb-linux-arm': 3.1.5 - '@lmdb/lmdb-linux-arm64': 3.1.5 - '@lmdb/lmdb-linux-x64': 3.1.5 - '@lmdb/lmdb-win32-x64': 3.1.5 - dev: true - optional: true - /lmdb@3.2.0: resolution: {integrity: sha512-cDeZAM4mXOwN1IdH93a91qXppn4jXV4NHphg53bqQDRFjJnpYZTgGcjrqpsmm209DtXTvmKMcYJd+XrHybwFZg==} hasBin: true @@ -10512,7 +10235,7 @@ packages: engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) flatted: 3.3.2 rfdc: 1.4.1 streamroller: 3.1.5 @@ -10566,14 +10289,14 @@ packages: engines: {node: '>=16.14'} dev: true - /magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + /magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 dev: true - /magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + /magic-string@0.30.15: + resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 dev: true @@ -10605,26 +10328,6 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /make-fetch-happen@13.0.1: - resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} - engines: {node: ^16.14.0 || >=18.0.0} - dependencies: - '@npmcli/agent': 2.2.2 - cacache: 18.0.4 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.5 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - proc-log: 4.2.0 - promise-retry: 2.0.1 - ssri: 10.0.6 - transitivePeerDependencies: - - supports-color - dev: true - /make-fetch-happen@14.0.3: resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -10653,11 +10356,11 @@ packages: engines: {node: '>= 0.6'} dev: true - /memfs@4.14.1: - resolution: {integrity: sha512-Fq5CMEth+2iprLJ5mNizRcWuiwRZYjNkUD0zKk224jZunE9CRacTRDK8QLALbMBlNX2y3nY6lKZbesCwDwacig==} + /memfs@4.15.0: + resolution: {integrity: sha512-q9MmZXd2rRWHS6GU3WEm3HyiXZyyoA1DqdOhEq0lxPBmKb5S7IAOwX0RgUCwJfqjelDCySa5h8ujOy24LqsWcw==} engines: {node: '>= 4.0.0'} dependencies: - '@jsonjoy.com/json-pack': 1.1.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.1.1(tslib@2.8.1) '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) tree-dump: 1.0.2(tslib@2.8.1) tslib: 2.8.1 @@ -10734,7 +10437,7 @@ packages: engines: {node: '>=18'} dev: true - /mini-css-extract-plugin@2.9.2(webpack@5.96.1): + /mini-css-extract-plugin@2.9.2(webpack@5.97.1): resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -10742,7 +10445,7 @@ packages: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true /minimalistic-assert@1.0.1: @@ -10786,17 +10489,6 @@ packages: minipass: 7.1.2 dev: true - /minipass-fetch@3.0.5: - resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: true - /minipass-fetch@4.0.0: resolution: {integrity: sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==} engines: {node: ^18.17.0 || >=20.5.0} @@ -10997,7 +10689,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.0)(tslib@2.8.1)(typescript@5.7.2): + /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(tslib@2.8.1)(typescript@5.7.2): resolution: {integrity: sha512-kqS63grbL+WnG5AveyXmqsMHeY2w6tmApfDuvK9lEC4u1VHfgGoA8Q3RKGkz+32zSI/eiBVXB/qMeeP+1q5QZA==} engines: {node: ^18.19.1 || >=20.11.1} hasBin: true @@ -11010,9 +10702,9 @@ packages: tailwindcss: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) - '@rollup/plugin-json': 6.1.0(rollup@4.28.0) - '@rollup/wasm-node': 4.28.0 + '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) + '@rollup/plugin-json': 6.1.0(rollup@4.28.1) + '@rollup/wasm-node': 4.28.1 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.2 @@ -11027,14 +10719,14 @@ packages: jsonc-parser: 3.3.1 less: 4.2.1 ora: 5.4.1 - piscina: 4.7.0 + piscina: 4.8.0 postcss: 8.4.49 rxjs: 7.8.1 - sass: 1.81.1 + sass: 1.82.0 tslib: 2.8.1 typescript: 5.7.2 optionalDependencies: - rollup: 4.28.0 + rollup: 4.28.1 dev: true /node-addon-api@6.1.0: @@ -11100,21 +10792,21 @@ packages: detect-libc: 2.0.3 dev: true - /node-gyp@10.3.1: - resolution: {integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==} - engines: {node: ^16.14.0 || >=18.0.0} + /node-gyp@11.0.0: + resolution: {integrity: sha512-zQS+9MTTeCMgY0F3cWPyJyRFAkVltQ1uXm+xXu/ES6KFgC6Czo1Seb9vQW2wNxSX2OrDTiqL0ojtkFxBQ0ypIw==} + engines: {node: ^18.17.0 || >=20.5.0} hasBin: true dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 glob: 10.4.5 graceful-fs: 4.2.11 - make-fetch-happen: 13.0.1 - nopt: 7.2.1 - proc-log: 4.2.0 + make-fetch-happen: 14.0.3 + nopt: 8.0.0 + proc-log: 5.0.0 semver: 7.6.3 - tar: 6.2.1 - which: 4.0.0 + tar: 7.4.3 + which: 5.0.0 transitivePeerDependencies: - supports-color dev: true @@ -11123,9 +10815,9 @@ packages: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} dev: true - /nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /nopt@8.0.0: + resolution: {integrity: sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==} + engines: {node: ^18.17.0 || >=20.5.0} hasBin: true dependencies: abbrev: 2.0.0 @@ -11169,8 +10861,8 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} dev: true - /npm-package-arg@12.0.0: - resolution: {integrity: sha512-ZTE0hbwSdTNL+Stx2zxSqdu2KZfNDcrtrLdIk7XGnQFYBWYDho/ORvXtn5XEePcL3tFpGjHCV3X3xrtDh7eZ+A==} + /npm-package-arg@12.0.1: + resolution: {integrity: sha512-aDxjFfPV3Liw0WOBWlyZLMBqtbgbg03rmGvHDJa2Ttv7tIz+1oB5qWec4psCDFZcZi9b5XdGkPdQiJxOPzvQRQ==} engines: {node: ^18.17.0 || >=20.5.0} dependencies: hosted-git-info: 8.0.2 @@ -11192,7 +10884,7 @@ packages: dependencies: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 - npm-package-arg: 12.0.0 + npm-package-arg: 12.0.1 semver: 7.6.3 dev: true @@ -11206,7 +10898,7 @@ packages: minipass: 7.1.2 minipass-fetch: 4.0.0 minizlib: 3.0.1 - npm-package-arg: 12.0.0 + npm-package-arg: 12.0.1 proc-log: 5.0.0 transitivePeerDependencies: - supports-color @@ -11219,8 +10911,8 @@ packages: path-key: 3.1.1 dev: true - /npm@10.9.1: - resolution: {integrity: sha512-yJUw03xLqjiv1D52oHeoS5qmOEC5hkJlhP1cWlSrCgshuxWVyFEEK3M3hLC0NwbTaklLTYrhoIanYsuNP5WUKg==} + /npm@10.9.2: + resolution: {integrity: sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true dev: true @@ -11328,7 +11020,7 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -11338,7 +11030,7 @@ packages: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-object-atoms: 1.0.0 @@ -11348,7 +11040,7 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 dev: true @@ -11357,7 +11049,7 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 dev: true @@ -11538,15 +11230,8 @@ packages: p-limit: 4.0.0 dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-map@7.0.2: - resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} + /p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} dev: true @@ -11579,18 +11264,18 @@ packages: engines: {node: '>=6'} dev: true - /pac-proxy-agent@7.0.2: - resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} + /pac-proxy-agent@7.1.0: + resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==} engines: {node: '>= 14'} dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.1(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) - get-uri: 6.0.3 + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) + get-uri: 6.0.4 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@9.4.0) pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.4 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color dev: true @@ -11616,11 +11301,11 @@ packages: '@npmcli/installed-package-contents': 3.0.0 '@npmcli/package-json': 6.1.0 '@npmcli/promise-spawn': 8.0.2 - '@npmcli/run-script': 9.0.1 + '@npmcli/run-script': 9.0.2 cacache: 19.0.1 fs-minipass: 3.0.3 minipass: 7.1.2 - npm-package-arg: 12.0.0 + npm-package-arg: 12.0.1 npm-packlist: 9.0.0 npm-pick-manifest: 10.0.0 npm-registry-fetch: 18.0.2 @@ -11755,6 +11440,10 @@ packages: resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} dev: true + /path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11855,8 +11544,8 @@ packages: thread-stream: 3.1.0 dev: true - /piscina@4.7.0: - resolution: {integrity: sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==} + /piscina@4.8.0: + resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} optionalDependencies: '@napi-rs/nice': 1.0.1 dev: true @@ -11909,7 +11598,7 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.96.1): + /postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1): resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -11926,7 +11615,7 @@ packages: jiti: 1.21.6 postcss: 8.4.49 semver: 7.6.3 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) transitivePeerDependencies: - typescript dev: true @@ -12002,17 +11691,12 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@3.4.1: - resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} + /prettier@3.4.2: + resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true dev: true - /proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - /proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -12134,18 +11818,18 @@ packages: ipaddr.js: 1.9.1 dev: true - /proxy-agent@6.4.0: - resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + /proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.1(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@9.4.0) lru-cache: 7.18.3 - pac-proxy-agent: 7.0.2 + pac-proxy-agent: 7.1.0 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.4 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color dev: true @@ -12217,13 +11901,13 @@ packages: - utf-8-validate dev: true - /puppeteer-core@23.9.0: - resolution: {integrity: sha512-hLVrav2HYMVdK0YILtfJwtnkBAwNOztUdR4aJ5YKDvgsbtagNr6urUJk9HyjRA9e+PaLI3jzJ0wM7A4jSZ7Qxw==} + /puppeteer-core@23.10.1: + resolution: {integrity: sha512-ey6NwixHYEUnhCA/uYi7uQQ4a0CZw4k+MatbHXGl5GEzaiRQziYUxc2HGpdQZ/gnh4KQWAKkocyIg1/dIm5d0g==} engines: {node: '>=18'} dependencies: - '@puppeteer/browsers': 2.4.1 + '@puppeteer/browsers': 2.5.0 chromium-bidi: 0.8.0(devtools-protocol@0.0.1367902) - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) devtools-protocol: 0.0.1367902 typed-query-selector: 2.12.0 ws: 8.18.0 @@ -12252,6 +11936,10 @@ packages: /q@1.4.1: resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==} 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) dev: true /q@1.5.1: @@ -12409,16 +12097,17 @@ packages: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} dev: true - /reflect.getprototypeof@1.0.7: - resolution: {integrity: sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==} + /reflect.getprototypeof@1.0.8: + resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 + dunder-proto: 1.0.0 es-abstract: 1.23.5 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - gopd: 1.1.0 + get-intrinsic: 1.2.5 + gopd: 1.2.0 which-builtin-type: 1.2.0 dev: true @@ -12451,7 +12140,7 @@ packages: resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 @@ -12653,7 +12342,7 @@ packages: spdx-expression-validate: 2.0.0 dev: true - /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.67)(rollup@4.28.0): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.67)(rollup@4.28.1): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12663,40 +12352,12 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.28.0) + '@rollup/pluginutils': 3.1.0(rollup@4.28.1) '@types/node': 18.19.67 - rollup: 4.28.0 + rollup: 4.28.1 source-map-resolve: 0.6.0 dev: true - /rollup@4.26.0: - resolution: {integrity: sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.26.0 - '@rollup/rollup-android-arm64': 4.26.0 - '@rollup/rollup-darwin-arm64': 4.26.0 - '@rollup/rollup-darwin-x64': 4.26.0 - '@rollup/rollup-freebsd-arm64': 4.26.0 - '@rollup/rollup-freebsd-x64': 4.26.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.26.0 - '@rollup/rollup-linux-arm-musleabihf': 4.26.0 - '@rollup/rollup-linux-arm64-gnu': 4.26.0 - '@rollup/rollup-linux-arm64-musl': 4.26.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.26.0 - '@rollup/rollup-linux-riscv64-gnu': 4.26.0 - '@rollup/rollup-linux-s390x-gnu': 4.26.0 - '@rollup/rollup-linux-x64-gnu': 4.26.0 - '@rollup/rollup-linux-x64-musl': 4.26.0 - '@rollup/rollup-win32-arm64-msvc': 4.26.0 - '@rollup/rollup-win32-ia32-msvc': 4.26.0 - '@rollup/rollup-win32-x64-msvc': 4.26.0 - fsevents: 2.3.3 - dev: true - /rollup@4.28.0: resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -12725,6 +12386,35 @@ packages: fsevents: 2.3.3 dev: true + /rollup@4.28.1: + resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.28.1 + '@rollup/rollup-android-arm64': 4.28.1 + '@rollup/rollup-darwin-arm64': 4.28.1 + '@rollup/rollup-darwin-x64': 4.28.1 + '@rollup/rollup-freebsd-arm64': 4.28.1 + '@rollup/rollup-freebsd-x64': 4.28.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 + '@rollup/rollup-linux-arm-musleabihf': 4.28.1 + '@rollup/rollup-linux-arm64-gnu': 4.28.1 + '@rollup/rollup-linux-arm64-musl': 4.28.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 + '@rollup/rollup-linux-riscv64-gnu': 4.28.1 + '@rollup/rollup-linux-s390x-gnu': 4.28.1 + '@rollup/rollup-linux-x64-gnu': 4.28.1 + '@rollup/rollup-linux-x64-musl': 4.28.1 + '@rollup/rollup-win32-arm64-msvc': 4.28.1 + '@rollup/rollup-win32-ia32-msvc': 4.28.1 + '@rollup/rollup-win32-x64-msvc': 4.28.1 + fsevents: 2.3.3 + dev: true + /run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -12750,8 +12440,8 @@ packages: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.2.5 has-symbols: 1.1.0 isarray: 2.0.5 dev: true @@ -12768,7 +12458,7 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-regex: 1.2.0 dev: true @@ -12782,8 +12472,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@16.0.3(sass@1.81.1)(webpack@5.96.1): - resolution: {integrity: sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA==} + /sass-loader@16.0.4(sass@1.82.0)(webpack@5.97.1): + resolution: {integrity: sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -12804,24 +12494,12 @@ packages: optional: true dependencies: neo-async: 2.6.2 - sass: 1.81.1 - webpack: 5.96.1(esbuild@0.24.0) - dev: true - - /sass@1.80.7: - resolution: {integrity: sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 4.0.1 - immutable: 5.0.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.0 + sass: 1.82.0 + webpack: 5.97.1(esbuild@0.24.0) dev: true - /sass@1.81.1: - resolution: {integrity: sha512-VNLgf4FC5yFyKwAumAAwwNh8X4SevlVREq3Y8aDZIkm0lI/zO1feycMXQ4hn+eB6FVhRbleSQ1Yb/q8juSldTA==} + /sass@1.82.0: + resolution: {integrity: sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -12973,7 +12651,7 @@ packages: resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} engines: {node: '>= 18'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) destroy: 1.2.0 encodeurl: 2.0.0 escape-html: 1.0.3 @@ -13037,8 +12715,8 @@ packages: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.1.0 + get-intrinsic: 1.2.5 + gopd: 1.2.0 has-property-descriptors: 1.0.2 dev: true @@ -13102,9 +12780,9 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.5 object-inspect: 1.13.3 dev: true @@ -13179,7 +12857,7 @@ packages: /socket.io-adapter@2.5.5: resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 ws: 8.17.1 transitivePeerDependencies: - bufferutil @@ -13192,7 +12870,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 engine.io-client: 6.6.2 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -13206,7 +12884,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color dev: true @@ -13218,7 +12896,7 @@ packages: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 engine.io: 6.6.2 socket.io-adapter: 2.5.5 socket.io-parser: 4.2.4 @@ -13236,12 +12914,12 @@ packages: websocket-driver: 0.7.4 dev: true - /socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + /socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.1(supports-color@9.4.0) - debug: 4.3.7(supports-color@9.4.0) + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -13272,7 +12950,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map-loader@5.0.0(webpack@5.96.1): + /source-map-loader@5.0.0(webpack@5.97.1): resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -13280,7 +12958,7 @@ packages: dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true /source-map-resolve@0.6.0: @@ -13357,7 +13035,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -13371,7 +13049,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -13422,13 +13100,6 @@ packages: tweetnacl: 0.14.5 dev: true - /ssri@10.0.6: - resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - minipass: 7.1.2 - dev: true - /ssri@12.0.0: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -13485,18 +13156,18 @@ packages: engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color dev: true - /streamx@2.20.2: - resolution: {integrity: sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==} + /streamx@2.21.0: + resolution: {integrity: sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.2.1 + text-decoder: 1.2.2 optionalDependencies: bare-events: 2.5.0 dev: true @@ -13537,7 +13208,7 @@ packages: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.5 es-object-atoms: 1.0.0 @@ -13546,7 +13217,7 @@ packages: /string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 dev: true @@ -13555,7 +13226,7 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 dev: true @@ -13694,7 +13365,7 @@ packages: dependencies: b4a: 1.6.7 fast-fifo: 1.3.2 - streamx: 2.20.2 + streamx: 2.21.0 dev: true /tar@6.2.1: @@ -13735,7 +13406,7 @@ packages: - supports-color dev: true - /terser-webpack-plugin@5.3.10(esbuild@0.24.0)(webpack@5.96.1): + /terser-webpack-plugin@5.3.10(esbuild@0.24.0)(webpack@5.97.1): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -13756,12 +13427,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.96.1(esbuild@0.24.0) + terser: 5.37.0 + webpack: 5.97.1(esbuild@0.24.0) dev: true - /terser@5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + /terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -13780,8 +13451,10 @@ packages: minimatch: 3.1.2 dev: true - /text-decoder@1.2.1: - resolution: {integrity: sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==} + /text-decoder@1.2.2: + resolution: {integrity: sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==} + dependencies: + b4a: 1.6.7 dev: true /text-table@0.2.0: @@ -13983,7 +13656,7 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} dependencies: '@tufjs/models': 3.0.1 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.4.0(supports-color@9.4.0) make-fetch-happen: 14.0.3 transitivePeerDependencies: - supports-color @@ -14032,7 +13705,7 @@ packages: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-typed-array: 1.1.13 dev: true @@ -14041,10 +13714,10 @@ packages: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.1.0 - has-proto: 1.1.0 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 dev: true @@ -14053,24 +13726,24 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.1.0 - has-proto: 1.1.0 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 - reflect.getprototypeof: 1.0.7 + reflect.getprototypeof: 1.0.8 dev: true /typed-array-length@1.0.7: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.1.0 + gopd: 1.2.0 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.7 + reflect.getprototypeof: 1.0.8 dev: true /typed-assert@1.0.9: @@ -14121,7 +13794,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-bigints: 1.0.2 has-symbols: 1.1.0 which-boxed-primitive: 1.1.0 @@ -14142,8 +13815,8 @@ packages: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} dev: true - /undici@7.0.0: - resolution: {integrity: sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==} + /undici@7.1.0: + resolution: {integrity: sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==} engines: {node: '>=20.18.1'} dev: true @@ -14199,13 +13872,6 @@ packages: engines: {node: '>=18'} dev: true - /unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - unique-slug: 4.0.0 - dev: true - /unique-filename@4.0.0: resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -14213,13 +13879,6 @@ packages: unique-slug: 5.0.0 dev: true - /unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - dev: true - /unique-slug@5.0.0: resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -14391,7 +14050,7 @@ packages: apache-md5: 1.1.8 bcryptjs: 2.4.3 core-js: 3.37.1 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 http-errors: 2.0.0 unix-crypt-td-js: 1.1.4 transitivePeerDependencies: @@ -14422,7 +14081,7 @@ packages: clipanion: 4.0.0-rc.4(typanion@3.14.0) compression: 1.7.5 cors: 2.8.5 - debug: 4.3.7(supports-color@9.4.0) + debug: 4.3.7 envinfo: 7.14.0 express: 4.21.1 express-rate-limit: 5.5.1 @@ -14455,22 +14114,27 @@ packages: extsprintf: 1.4.1 dev: true - /vite@5.4.11(@types/node@18.19.67)(less@4.2.1)(sass@1.80.7)(terser@5.36.0): - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite@6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): + resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -14485,20 +14149,24 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true dependencies: '@types/node': 18.19.67 - esbuild: 0.21.5 + esbuild: 0.24.0 less: 4.2.1 postcss: 8.4.49 - rollup: 4.28.0 - sass: 1.80.7 - terser: 5.36.0 + rollup: 4.28.1 + sass: 1.82.0 + terser: 5.37.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.81.1)(terser@5.36.0): - resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} + /vite@6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): + resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -14541,9 +14209,9 @@ packages: esbuild: 0.24.0 less: 4.2.1 postcss: 8.4.49 - rollup: 4.28.0 - sass: 1.81.1 - terser: 5.36.0 + rollup: 4.28.1 + sass: 1.82.0 + terser: 5.37.0 optionalDependencies: fsevents: 2.3.3 dev: true @@ -14617,7 +14285,7 @@ packages: engines: {node: '>=12'} dev: true - /webpack-dev-middleware@7.4.2(webpack@5.96.1): + /webpack-dev-middleware@7.4.2(webpack@5.97.1): resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -14627,16 +14295,16 @@ packages: optional: true dependencies: colorette: 2.0.20 - memfs: 4.14.1 + memfs: 4.15.0 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true - /webpack-dev-server@5.1.0(debug@4.3.7)(webpack@5.96.1): - resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==} + /webpack-dev-server@5.2.0(debug@4.4.0)(webpack@5.97.1): + resolution: {integrity: sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -14661,10 +14329,9 @@ packages: colorette: 2.0.20 compression: 1.7.5 connect-history-api-fallback: 2.0.0 - express: 4.21.1 + express: 4.21.2 graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.7(@types/express@4.17.21)(debug@4.3.7) + http-proxy-middleware: 2.0.7(@types/express@4.17.21)(debug@4.4.0) ipaddr.js: 2.2.0 launch-editor: 2.9.1 open: 10.1.0 @@ -14674,8 +14341,8 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.96.1(esbuild@0.24.0) - webpack-dev-middleware: 7.4.2(webpack@5.96.1) + webpack: 5.97.1(esbuild@0.24.0) + webpack-dev-middleware: 7.4.2(webpack@5.97.1) ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -14698,7 +14365,7 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack-subresource-integrity@5.1.0(webpack@5.96.1): + /webpack-subresource-integrity@5.1.0(webpack@5.97.1): resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} engines: {node: '>= 12'} peerDependencies: @@ -14709,11 +14376,11 @@ packages: optional: true dependencies: typed-assert: 1.0.9 - webpack: 5.96.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.0) dev: true - /webpack@5.96.1(esbuild@0.24.0): - resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} + /webpack@5.97.1(esbuild@0.24.0): + resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -14742,7 +14409,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.24.0)(webpack@5.96.1) + terser-webpack-plugin: 5.3.10(esbuild@0.24.0)(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -14765,8 +14432,8 @@ packages: engines: {node: '>=0.8.0'} dev: true - /whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + /whatwg-url@14.1.0: + resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} engines: {node: '>=18'} dependencies: tr46: 5.0.0 @@ -14795,7 +14462,7 @@ packages: resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 is-async-function: 2.0.0 @@ -14829,9 +14496,9 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.1.0 + gopd: 1.2.0 has-tostringtag: 1.0.2 dev: true @@ -14858,14 +14525,6 @@ packages: isexe: 2.0.0 dev: true - /which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - isexe: 3.1.1 - dev: true - /which@5.0.0: resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -15146,7 +14805,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.0)(terser@5.36.0)(typescript@5.7.2): + github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.2)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/07617f0f8540d27f8895b1820a6f994e1e5b7277} id: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277 name: '@angular/bazel' @@ -15167,30 +14826,30 @@ packages: terser: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.0(@angular/compiler@19.1.0-next.0)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) - '@rollup/plugin-commonjs': 28.0.1(rollup@4.28.0) - '@rollup/plugin-node-resolve': 13.3.0(rollup@4.28.0) - magic-string: 0.30.14 - rollup: 4.28.0 - rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.67)(rollup@4.28.0) - terser: 5.36.0 + '@rollup/plugin-commonjs': 28.0.1(rollup@4.28.1) + '@rollup/plugin-node-resolve': 13.3.0(rollup@4.28.1) + magic-string: 0.30.15 + rollup: 4.28.1 + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.67)(rollup@4.28.1) + terser: 5.37.0 tslib: 2.8.1 typescript: 5.7.2 transitivePeerDependencies: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(chokidar@4.0.1)(debug@4.3.7)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.36.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9} - id: github.com/angular/dev-infra-private-build-tooling-builds/499c0a0303900d2d8fb6fcdeec7e72a80d202ac9 + github.com/angular/dev-infra-private-build-tooling-builds/8aff236a2d25f44f347d488aa1a906c0d52ca333(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/8aff236a2d25f44f347d488aa1a906c0d52ca333} + id: github.com/angular/dev-infra-private-build-tooling-builds/8aff236a2d25f44f347d488aa1a906c0d52ca333 name: '@angular/build-tooling' - version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.0.0(@angular/compiler-cli@19.1.0-next.0)(@angular/compiler@19.1.0-next.0)(@angular/localize@19.1.0-next.0)(@angular/platform-server@19.1.0-next.0)(@angular/service-worker@19.1.0-next.0)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.36.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -15198,7 +14857,7 @@ packages: '@bazel/esbuild': 5.8.1 '@bazel/protractor': 5.8.1(protractor@7.0.0) '@bazel/runfiles': 5.8.1 - '@bazel/terser': 5.8.1(terser@5.36.0) + '@bazel/terser': 5.8.1(terser@5.37.0) '@bazel/typescript': 5.8.1(typescript@5.7.2) '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) '@types/browser-sync': 2.29.0 @@ -15209,8 +14868,8 @@ packages: '@types/tmp': 0.2.6 '@types/ws': 8.5.13 '@types/yargs': 17.0.33 - browser-sync: 3.0.3(debug@4.3.7) - prettier: 3.4.1 + browser-sync: 3.0.3(debug@4.4.0) + prettier: 3.4.2 protractor: 7.0.0 selenium-webdriver: 4.27.0 send: 1.1.0 @@ -15231,6 +14890,7 @@ packages: - bufferutil - chokidar - debug + - jiti - karma - karma-chrome-launcher - karma-firefox-launcher @@ -15248,14 +14908,16 @@ packages: - supports-color - tailwindcss - terser + - tsx - utf-8-validate + - yaml - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/579163373d32ec04ef9dab6c21e34bfc6d40b127: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/579163373d32ec04ef9dab6c21e34bfc6d40b127} + github.com/angular/dev-infra-private-ng-dev-builds/e0bc0d1225c9605f344561c6b3b3d471f0fee481: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bc0d1225c9605f344561c6b3b3d471f0fee481} name: '@angular/ng-dev' - version: 0.0.0-d4ffcd67a4788bec64b7d61a68d2ba3aa83eed61 + version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 hasBin: true dependencies: '@google-cloud/spanner': 7.16.0(supports-color@9.4.0) diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index 4333d2e43f46..49fc0c271334 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -1,4 +1,6 @@ load("@aspect_bazel_lib//lib/private:tar_toolchain.bzl", "tar_toolchain") +load("@aspect_rules_js//js:defs.bzl", "js_binary") +load("@bazel_skylib//rules:copy_file.bzl", "copy_file") # Copyright Google Inc. All Rights Reserved. # @@ -42,4 +44,22 @@ toolchain( toolchain = ":system_tar_exec", toolchain_type = "@aspect_bazel_lib//lib:tar_toolchain_type", ) + +# TODO(devversion): Improve this by potentially sharing this common block. +copy_file( + name = "copy_worker_js", + src = "@tsc_worker//file", + out = "ts_worker.mjs", +) + +js_binary( + name = "vanilla_ts_worker", + data = [ + ":copy_worker_js", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/typescript", + ], + entry_point = ":copy_worker_js", + fixed_args = ["--vanilla-ts"], +) # @external_end diff --git a/tools/interop.bzl b/tools/interop.bzl index 4626c09aeab3..01e4e00f705e 100644 --- a/tools/interop.bzl +++ b/tools/interop.bzl @@ -94,6 +94,11 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly testonly = testonly, tsconfig = "//:test-tsconfig" if testonly else "//:build-tsconfig", declaration = True, + # Use the worker from our own Angular rules, as the default worker + # from `rules_ts` is incompatible with TS5+ and abandoned. We need + # worker for efficient, fast DX and avoiding Windows no-sandbox issues. + supports_workers = 1, + tsc_worker = "//tools:vanilla_ts_worker", deps = ["%s_interop_deps" % name] + deps, **kwargs ) From 04213c86de9697c0baae79a0fe52c363a9dcc1a4 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 13 Dec 2024 17:06:11 +0000 Subject: [PATCH 0135/2162] build: update rules_rs_dependencies to 5.7.2 --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 152877aac166..362341f9b746 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -216,7 +216,7 @@ load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") rules_ts_dependencies( # ts_version_from = "//:package.json", # TODO: Support in https://github.com/aspect-build/rules_ts/blob/main/ts/private/npm_repositories.bzl - ts_version = "5.6.2", + ts_version = "5.7.2", ) http_file( From b1500d3e83c01e45209ead45ff5c130bbb0302d8 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 13 Dec 2024 17:44:08 +0000 Subject: [PATCH 0136/2162] build: update npm_translate_lock and update to to typescript 5.7.2 --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- WORKSPACE | 9 +- pnpm-lock.yaml | 316 +++++++++--------- 3 files changed, 172 insertions(+), 159 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 95ebac7a70c8..98763d087f85 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-429967005 -pnpm-lock.yaml=-1164942040 +package.json=1044460161 +pnpm-lock.yaml=451366521 pnpm-workspace.yaml=1711114604 -yarn.lock=80564211 +yarn.lock=-892267542 diff --git a/WORKSPACE b/WORKSPACE index 362341f9b746..ec96f8c52205 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -206,16 +206,17 @@ http_archive( name = "aspect_rules_ts", patch_args = ["-p1"], patches = ["//tools:rules_ts_windows.patch"], - sha256 = "9acd128abe77397505148eaa6895faed57839560dbf2177dd6285e51235e2724", - strip_prefix = "rules_ts-3.3.1", - url = "https://github.com/aspect-build/rules_ts/releases/download/v3.3.1/rules_ts-v3.3.1.tar.gz", + sha256 = "cff3137b043ff6bf1a2542fd9691dc762432370cd39eb4bb0756d288de52067d", + strip_prefix = "rules_ts-3.3.2", + url = "https://github.com/aspect-build/rules_ts/releases/download/v3.3.2/rules_ts-v3.3.2.tar.gz", ) load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") rules_ts_dependencies( # ts_version_from = "//:package.json", - # TODO: Support in https://github.com/aspect-build/rules_ts/blob/main/ts/private/npm_repositories.bzl + # Obtained by: curl --silent https://registry.npmjs.org/typescript/5.7.2 | jq -r '.dist.integrity' + ts_integrity = "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", ts_version = "5.7.2", ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8da93472afef..16b47f91a3f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,56 +17,56 @@ importers: specifier: 2.3.0 version: 2.3.0 '@angular/animations': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/core@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/core@19.1.0-next.3) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277 - version: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.2)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#8aff236a2d25f44f347d488aa1a906c0d52ca333 - version: github.com/angular/dev-infra-private-build-tooling-builds/8aff236a2d25f44f347d488aa1a906c0d52ca333(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0 + version: github.com/angular/dev-infra-private-build-tooling-builds/d17f802de0af0ac409259f97678ce59ddd0671a0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': - specifier: 19.1.0-next.1 - version: 19.1.0-next.1(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/common': specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) + version: 19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/common': + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) '@angular/compiler': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/core@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/core@19.1.0-next.3) '@angular/compiler-cli': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) '@angular/core': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) '@angular/forms': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) '@angular/localize': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3) '@angular/material': - specifier: 19.1.0-next.1 - version: 19.1.0-next.1(@angular/animations@19.1.0-next.2)(@angular/cdk@19.1.0-next.1)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/forms@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) + specifier: 19.1.0-next.2 + version: 19.1.0-next.2(@angular/animations@19.1.0-next.3)(@angular/cdk@19.1.0-next.2)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/forms@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bc0d1225c9605f344561c6b3b3d471f0fee481 - version: github.com/angular/dev-infra-private-ng-dev-builds/e0bc0d1225c9605f344561c6b3b3d471f0fee481 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb + version: github.com/angular/dev-infra-private-ng-dev-builds/fe9dde0666e9b8e1164951e8c146f9a03b05fcdb '@angular/platform-browser': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) '@angular/platform-browser-dynamic': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3) '@angular/platform-server': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3) '@angular/router': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) '@angular/service-worker': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) '@babel/core': specifier: 7.26.0 version: 7.26.0 @@ -363,7 +363,7 @@ importers: version: 2.0.0 ng-packagr: specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(tslib@2.8.1)(typescript@5.7.2) + version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.3)(tslib@2.8.1)(typescript@5.7.2) npm: specifier: ^10.8.1 version: 10.9.2 @@ -428,11 +428,11 @@ importers: specifier: 7.8.1 version: 7.8.1 sass: - specifier: 1.82.0 - version: 1.82.0 + specifier: 1.83.0 + version: 1.83.0 sass-loader: specifier: 16.0.4 - version: 16.0.4(sass@1.82.0)(webpack@5.97.1) + version: 16.0.4(sass@1.83.0)(webpack@5.97.1) semver: specifier: 7.6.3 version: 7.6.3 @@ -483,7 +483,7 @@ importers: version: 10.2.2 vite: specifier: 6.0.3 - version: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + version: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -555,13 +555,13 @@ packages: source-map: 0.7.4 dev: true - /@angular/animations@19.1.0-next.2(@angular/core@19.1.0-next.2): - resolution: {integrity: sha512-eXvHnzmNvnvp/OCAbNOdoLh3Dj7BlJ9Eluvp/VwS6LFXDD2dvKUCMVVStpsKbeUW+3oTZ9sD6uZJERxUvrOvcA==} + /@angular/animations@19.1.0-next.3(@angular/core@19.1.0-next.3): + resolution: {integrity: sha512-Uf0NbInXdT5CnpuG7bF6a9TwBrnecfIHqsfJqzzGPnx1hWssCgyvNLnWIBn3tToJtooTE669PNsHIdSDabKnaA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.2 + '@angular/core': 19.1.0-next.3 dependencies: - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -575,7 +575,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.0(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): resolution: {integrity: sha512-5YToh23ZUupSgqXgqDD5g8bFbbo1kFI7DBP8s/i2cqJs6jLV7P/Mj1lFh9wA3MqkTD9nxsKc0uMT8KdIxs9Iyg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -607,11 +607,11 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1901.0-next.0(chokidar@4.0.1) - '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) - '@angular/localize': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2) - '@angular/platform-server': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2) - '@angular/service-worker': 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) + '@angular/localize': 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3) + '@angular/platform-server': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3) + '@angular/service-worker': 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-split-export-declaration': 7.24.7 @@ -654,42 +654,42 @@ packages: - yaml dev: true - /@angular/cdk@19.1.0-next.1(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(rxjs@7.8.1): - resolution: {integrity: sha512-UDN3QbvqjFqX7APStPf+LC8TbvM5VHZdhaXMuWlML7CwzBDO86ZA2InKn1v8vKva4GheVQ3DW8bcV6byM0KNkQ==} + /@angular/cdk@19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1): + resolution: {integrity: sha512-nXv4e3blwFPLdUMc/kTe7A6eO3fw/Ah4Eu+6rF5Pi5KHRV7XlZfRit2XbTcjzVHn3e+MYeLvh2LhKt8RLb/TnQ==} peerDependencies: '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 optionalDependencies: parse5: 7.2.1 dev: true - /@angular/common@19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1): - resolution: {integrity: sha512-c5GmOMKLjl3lsrVeCtsAPlmDwE2kE/xyEoWlbjqWp7MFKYG4Bh75h40HDzdOQe23lOgPAOcAgVw+VE1cLLidfw==} + /@angular/common@19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1): + resolution: {integrity: sha512-vyPSuB/TD/Tba9gCPa4pUTSNAd3Fcul7Kd0prHIiJ/MpocEp+JFBeeedgFumRB2sdP5xfuvPK3cqPF/e+6AklQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.2 + '@angular/core': 19.1.0-next.3 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/compiler-cli@19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2): - resolution: {integrity: sha512-zsjMHELOUVN//SslNSIl61puWextkx7J9trE+BXi0i3N8C6Fqxoauy8azNWRK70fxS4+fDEVPd/CFFnuvpATcw==} + /@angular/compiler-cli@19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2): + resolution: {integrity: sha512-FtBVAG566WcpuW8c1NJiF8KVwPDrYD+ang6Npk4JCwetX6ien+4B2qM/l11YPW1Bm1uWunUvziOV6oW997t1Uw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.2 + '@angular/compiler': 19.1.0-next.3 typescript: 5.7.2 dependencies: - '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) + '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) '@babel/core': 7.26.0 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.1 @@ -703,16 +703,16 @@ packages: - supports-color dev: true - /@angular/compiler@19.1.0-next.2(@angular/core@19.1.0-next.2): - resolution: {integrity: sha512-jRERYgoT2Z8JWGGv+nWyTjfXLQGvT76ltV7iHY/glDCU2UkBDBPWoX6YACIRAx4N9+3UZyAVQgELm3sWqhcdkg==} + /@angular/compiler@19.1.0-next.3(@angular/core@19.1.0-next.3): + resolution: {integrity: sha512-mzz5M+f6XXbdYNxpyp1LRtn670tE+vFsZ9JuvsNpN8+dnJFc4Y/eaMwk1+vsJkUb6EZybc5Q2soma2x1ofJMSg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.2 + '@angular/core': 19.1.0-next.3 peerDependenciesMeta: '@angular/core': optional: true dependencies: - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -728,8 +728,8 @@ packages: zone.js: 0.15.0 dev: true - /@angular/core@19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0): - resolution: {integrity: sha512-k62MiQ5D40TxLP8KEvAW+U+uNfMRnG0r/hhxQx/VZQaSR85Xlv/j3OGDXrb8CAJE8H1iJN8DQMNqdL2E9ffVJw==} + /@angular/core@19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-WyVj9AVkEtKIGvWx1XvmZm6KFpIE8gQYuPLVAUMoX9mmxnA69LmMeYmCZEJGpH2uJDDv3kLxrgvom8sAPH3/Ng==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 @@ -740,32 +740,32 @@ packages: zone.js: 0.15.0 dev: true - /@angular/forms@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1): - resolution: {integrity: sha512-Hb3rdA7msSY22zdgyqcwpZ6rrpIMOFSUJyCxc5IugI3YAcAJOJoBd9UDn9Cp+KlG34opFX8zrjLYADR28KKrXQ==} + /@angular/forms@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1): + resolution: {integrity: sha512-4BaVb64jQ1IK0TNApcjsbni9Pm0NTuSrwy/snex6ISQlYgZxy12evb6B3TlvIsuN1MhSyDiZrAcrhGCYTRT6lA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.2 - '@angular/core': 19.1.0-next.2 - '@angular/platform-browser': 19.1.0-next.2 + '@angular/common': 19.1.0-next.3 + '@angular/core': 19.1.0-next.3 + '@angular/platform-browser': 19.1.0-next.3 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/localize@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2): - resolution: {integrity: sha512-qDRyxi/ocV9cXfd1oAwQkAO97GiPyJySIT64XWw6+aC2xoBQxfUX4V4jjMK75+IeivNZpqd4/vj+dtM0b+AA3g==} + /@angular/localize@19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3): + resolution: {integrity: sha512-7dyN9Ib+8bHN8K5lEIln+/+uM+Z0RjKFB9G9KqWzkOBwKpF41UNX2mHat1OoF9WMX4iuan+yTS+qBmLHhEtpnA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.2 - '@angular/compiler-cli': 19.1.0-next.2 + '@angular/compiler': 19.1.0-next.3 + '@angular/compiler-cli': 19.1.0-next.3 dependencies: - '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) + '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 fast-glob: 3.3.2 @@ -774,105 +774,105 @@ packages: - supports-color dev: true - /@angular/material@19.1.0-next.1(@angular/animations@19.1.0-next.2)(@angular/cdk@19.1.0-next.1)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/forms@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1): - resolution: {integrity: sha512-i0XF4lBZY+tgrPr1nRuuQQeIKEYMEHUvYf0Q9P5VG0evd+j2PdJw9gYbU5R5/GRhum/wDSUxoIyN1rex/zqQoQ==} + /@angular/material@19.1.0-next.2(@angular/animations@19.1.0-next.3)(@angular/cdk@19.1.0-next.2)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/forms@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1): + resolution: {integrity: sha512-36bBXgaUrGh3cdfV+sgtOotlorJHBOMQ/Q9KBtCA/g6KEtK1+EaVSoV/QHiX256LpuUFRzNMQTyFl2GhfG6YhQ==} peerDependencies: '@angular/animations': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - '@angular/cdk': 19.1.0-next.1 + '@angular/cdk': 19.1.0-next.2 '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/forms': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/platform-browser': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/animations': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/cdk': 19.1.0-next.1(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/forms': 19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1) - '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + '@angular/animations': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/cdk': 19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/forms': 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) + '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/platform-browser-dynamic@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2): - resolution: {integrity: sha512-2SA2yltb9iFHNbGvbjiNx2XFnceUEd0b8PblVER4WGt226PBsSIqWc3d70JS2Dn7TriUebGGpurq1oZ+Uf70kA==} + /@angular/platform-browser-dynamic@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3): + resolution: {integrity: sha512-M9XCelWEu9sOT/TW15wK/FPWrhsfzyJq50ZSr6xGwkrIjfqTkmYcKA+9+B9DOSgnugNMjLUfJoRW0XHD7IyDCg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.2 - '@angular/compiler': 19.1.0-next.2 - '@angular/core': 19.1.0-next.2 - '@angular/platform-browser': 19.1.0-next.2 + '@angular/common': 19.1.0-next.3 + '@angular/compiler': 19.1.0-next.3 + '@angular/core': 19.1.0-next.3 + '@angular/platform-browser': 19.1.0-next.3 dependencies: - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) tslib: 2.8.1 dev: true - /@angular/platform-browser@19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2): - resolution: {integrity: sha512-52N9LDARPWf7BijMkDLDLqoHz3EW3BXf+fNFWFVFT37fssfueDeInySThzd6el7S9mQtpHRn2Z2ge1q3RnE9NA==} + /@angular/platform-browser@19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3): + resolution: {integrity: sha512-bavvrFQmot1jXPShK5yIzJwtWzLnkQaPqIVkaF/GbzEDAHryzr17CyjecZ7HmGEebwGe8IVhYKohwF8fn9zRng==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.2 - '@angular/common': 19.1.0-next.2 - '@angular/core': 19.1.0-next.2 + '@angular/animations': 19.1.0-next.3 + '@angular/common': 19.1.0-next.3 + '@angular/core': 19.1.0-next.3 peerDependenciesMeta: '@angular/animations': optional: true dependencies: - '@angular/animations': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/animations': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true - /@angular/platform-server@19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2): - resolution: {integrity: sha512-Tf0v68KbrOrjbF1eg7arDQXdoTD3gCXzWc2PFTKnMpt+2biNMvNoC2+XvTIteG8DlkApMRJWUI2S6ORy1BW8Vw==} + /@angular/platform-server@19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3): + resolution: {integrity: sha512-7ceVWFYgBEFdm6vhda4StGJY2HYJkVMJv1fcX63L2NSswRtaNbFTULwGADCl+kqDFQucTdq203+l1FAMMF7W5g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.2 - '@angular/common': 19.1.0-next.2 - '@angular/compiler': 19.1.0-next.2 - '@angular/core': 19.1.0-next.2 - '@angular/platform-browser': 19.1.0-next.2 - dependencies: - '@angular/animations': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.2(@angular/core@19.1.0-next.2) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + '@angular/animations': 19.1.0-next.3 + '@angular/common': 19.1.0-next.3 + '@angular/compiler': 19.1.0-next.3 + '@angular/core': 19.1.0-next.3 + '@angular/platform-browser': 19.1.0-next.3 + dependencies: + '@angular/animations': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) tslib: 2.8.1 xhr2: 0.2.1 dev: true - /@angular/router@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2)(@angular/platform-browser@19.1.0-next.2)(rxjs@7.8.1): - resolution: {integrity: sha512-sglyN5dDqc94Hm43aiNUTBvtxFVcizRVIxJHOq3sNxN1zRSpSDrEFkYx4KE02/pbozcOHdoMArNeZkix0R/uUw==} + /@angular/router@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1): + resolution: {integrity: sha512-jOY+qLvkLeg2ArPCJWjvAPYSA7dpimF+ybhjpyJ4SzB4co3y238J9MmVJE7MDid5QUfD6UOF6lvAOgx91J9R2w==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.2 - '@angular/core': 19.1.0-next.2 - '@angular/platform-browser': 19.1.0-next.2 + '@angular/common': 19.1.0-next.3 + '@angular/core': 19.1.0-next.3 + '@angular/platform-browser': 19.1.0-next.3 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.2(@angular/animations@19.1.0-next.2)(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/service-worker@19.1.0-next.2(@angular/common@19.1.0-next.2)(@angular/core@19.1.0-next.2): - resolution: {integrity: sha512-eaSi6JbC2OMPcDRQoE7tYEvT/jakB7vS07QfsD3QtFNgskuOA4oJsWrTBkeVlvKZ2Dc/FvZ4sqthEf0bShuo5A==} + /@angular/service-worker@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3): + resolution: {integrity: sha512-dGn5LQvgYNeJEQym91iYC74Q7JCdkPoyVfi/6IY8J31pvUydwc9FZHQAmR6fhDseFwrfZsx3tKjkcpQTOdT/sw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/common': 19.1.0-next.2 - '@angular/core': 19.1.0-next.2 + '@angular/common': 19.1.0-next.3 + '@angular/core': 19.1.0-next.3 dependencies: - '@angular/common': 19.1.0-next.2(@angular/core@19.1.0-next.2)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.2(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -4974,7 +4974,7 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true /@web/browser-logs@0.4.0: @@ -10689,7 +10689,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.2)(tslib@2.8.1)(typescript@5.7.2): + /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.3)(tslib@2.8.1)(typescript@5.7.2): resolution: {integrity: sha512-kqS63grbL+WnG5AveyXmqsMHeY2w6tmApfDuvK9lEC4u1VHfgGoA8Q3RKGkz+32zSI/eiBVXB/qMeeP+1q5QZA==} engines: {node: ^18.19.1 || >=20.11.1} hasBin: true @@ -10702,7 +10702,7 @@ packages: tailwindcss: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) '@rollup/plugin-json': 6.1.0(rollup@4.28.1) '@rollup/wasm-node': 4.28.1 ajv: 8.17.1 @@ -10722,7 +10722,7 @@ packages: piscina: 4.8.0 postcss: 8.4.49 rxjs: 7.8.1 - sass: 1.82.0 + sass: 1.83.0 tslib: 2.8.1 typescript: 5.7.2 optionalDependencies: @@ -12472,7 +12472,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@16.0.4(sass@1.82.0)(webpack@5.97.1): + /sass-loader@16.0.4(sass@1.83.0)(webpack@5.97.1): resolution: {integrity: sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -12494,7 +12494,7 @@ packages: optional: true dependencies: neo-async: 2.6.2 - sass: 1.82.0 + sass: 1.83.0 webpack: 5.97.1(esbuild@0.24.0) dev: true @@ -12510,6 +12510,18 @@ packages: '@parcel/watcher': 2.5.0 dev: true + /sass@1.83.0: + resolution: {integrity: sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 4.0.1 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + dev: true + /saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} dependencies: @@ -14165,7 +14177,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): + /vite@6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -14210,7 +14222,7 @@ packages: less: 4.2.1 postcss: 8.4.49 rollup: 4.28.1 - sass: 1.82.0 + sass: 1.83.0 terser: 5.37.0 optionalDependencies: fsevents: 2.3.3 @@ -14805,7 +14817,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.2)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/07617f0f8540d27f8895b1820a6f994e1e5b7277} id: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277 name: '@angular/bazel' @@ -14826,7 +14838,7 @@ packages: terser: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.2(@angular/compiler@19.1.0-next.2)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) @@ -14842,14 +14854,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/8aff236a2d25f44f347d488aa1a906c0d52ca333(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/8aff236a2d25f44f347d488aa1a906c0d52ca333} - id: github.com/angular/dev-infra-private-build-tooling-builds/8aff236a2d25f44f347d488aa1a906c0d52ca333 + github.com/angular/dev-infra-private-build-tooling-builds/d17f802de0af0ac409259f97678ce59ddd0671a0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/d17f802de0af0ac409259f97678ce59ddd0671a0} + id: github.com/angular/dev-infra-private-build-tooling-builds/d17f802de0af0ac409259f97678ce59ddd0671a0 name: '@angular/build-tooling' - version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.2)(@angular/compiler@19.1.0-next.2)(@angular/localize@19.1.0-next.2)(@angular/platform-server@19.1.0-next.2)(@angular/service-worker@19.1.0-next.2)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -14914,10 +14926,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/e0bc0d1225c9605f344561c6b3b3d471f0fee481: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bc0d1225c9605f344561c6b3b3d471f0fee481} + github.com/angular/dev-infra-private-ng-dev-builds/fe9dde0666e9b8e1164951e8c146f9a03b05fcdb: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fe9dde0666e9b8e1164951e8c146f9a03b05fcdb} name: '@angular/ng-dev' - version: 0.0.0-dc20101d21e4cffc13c3ad8ffefd5c34964edd17 + version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 hasBin: true dependencies: '@google-cloud/spanner': 7.16.0(supports-color@9.4.0) From e4ff5c9d4aa544e14a03f4f95a29f6e78e85d7a5 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 17:25:34 +0000 Subject: [PATCH 0137/2162] ci: sync package locks information for aspect with renovate This is needed as otherwise the `npm_translate_lock` file will be out of sync --- renovate.json | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/renovate.json b/renovate.json index eba1c6c44d72..89508467f298 100644 --- a/renovate.json +++ b/renovate.json @@ -8,23 +8,18 @@ "prHourlyLimit": 2, "labels": ["target: minor", "action: merge"], "timezone": "America/Tijuana", + "postUpgradeTasks": { + "commands": ["yarn install --frozen-lockfile --non-interactive", "yarn bazel run @npm2//:sync"], + "fileFilters": [".aspect/rules/external_repository_action_cache/**/*"], + "executionMode": "branch" + }, "lockFileMaintenance": { "enabled": true }, "dependencyDashboard": true, - "schedule": [ - "after 10:00pm every weekday", - "before 4:00am every weekday", - "every weekend" - ], + "schedule": ["after 10:00pm every weekday", "before 4:00am every weekday", "every weekend"], "baseBranches": ["main"], - "ignoreDeps": [ - "@types/node", - "@types/express", - "build_bazel_rules_nodejs", - "rules_pkg", - "yarn" - ], + "ignoreDeps": ["@types/node", "@types/express", "build_bazel_rules_nodejs", "rules_pkg", "yarn"], "includePaths": [ "WORKSPACE", "package.json", From 59985c2af011b017c34cf7cdcd81fbf43854eb0e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 18:13:06 +0000 Subject: [PATCH 0138/2162] ci: ignore changes to `.yarn/releases` There is an unidentified issue causing the Yarn binary to be altered, resulting in packages not installing correctly and leading to failures in the process. --- renovate.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 89508467f298..96f39a140a96 100644 --- a/renovate.json +++ b/renovate.json @@ -9,7 +9,11 @@ "labels": ["target: minor", "action: merge"], "timezone": "America/Tijuana", "postUpgradeTasks": { - "commands": ["yarn install --frozen-lockfile --non-interactive", "yarn bazel run @npm2//:sync"], + "commands": [ + "git restore .yarn/releases/yarn-4.5.0.cjs", + "yarn install --frozen-lockfile --non-interactive", + "yarn bazel run @npm2//:sync" + ], "fileFilters": [".aspect/rules/external_repository_action_cache/**/*"], "executionMode": "branch" }, From 2f51b660d1e7b48dc6dc54ea935a245a609d0db1 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 18:37:53 +0000 Subject: [PATCH 0139/2162] ci: disable `pnpm-lock.yaml` update via renovate This commit tries to display `pnpm-lock.yaml` update using renovate and instead it uses `yarn bazel run @npm2//:sync`. --- renovate.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 96f39a140a96..d210d12e0ec4 100644 --- a/renovate.json +++ b/renovate.json @@ -14,7 +14,7 @@ "yarn install --frozen-lockfile --non-interactive", "yarn bazel run @npm2//:sync" ], - "fileFilters": [".aspect/rules/external_repository_action_cache/**/*"], + "fileFilters": [".aspect/rules/external_repository_action_cache/**/*", "pnpm-lock.yaml"], "executionMode": "branch" }, "lockFileMaintenance": { @@ -32,6 +32,10 @@ ".github/workflows/**/*.yml" ], "packageRules": [ + { + "matchManagers": ["pnpm"], + "enabled": false + }, { "matchPackageNames": ["quicktype-core"], "schedule": ["before 4:00am on the first day of the month"] From e5c66f59cce6f51d03f404872c19cbb77cc40ea6 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 19:17:14 +0000 Subject: [PATCH 0140/2162] ci: ignore pnpm lock file update from renovate These files are updated by our tooling --- renovate.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/renovate.json b/renovate.json index d210d12e0ec4..f39c77f08f9a 100644 --- a/renovate.json +++ b/renovate.json @@ -31,11 +31,8 @@ "tests/legacy-cli/e2e/ng-snapshot/package.json", ".github/workflows/**/*.yml" ], + "ignorePaths": ["pnpm-lock.yaml"], "packageRules": [ - { - "matchManagers": ["pnpm"], - "enabled": false - }, { "matchPackageNames": ["quicktype-core"], "schedule": ["before 4:00am on the first day of the month"] From 19bb2d48097eaf8dcdbf584603210146b5f1b81e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 16 Dec 2024 17:05:27 +0000 Subject: [PATCH 0141/2162] fix(@angular/build): force HTTP/1.1 in dev-server SSR with SSL When server-side rendering (SSR) is enabled with SSL and Express, Vite must use HTTP/1.1 because Express does not support HTTP/2. This is achieved by setting an empty proxy configuration. Reference: https://github.com/vitejs/vite/blob/c4b532cc900bf988073583511f57bd581755d5e3/packages/vite/src/node/http.ts#L106 Closes #29142 --- .../build/src/builders/dev-server/vite-server.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 f3309d94f6d9..8ff1fee19964 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -681,7 +681,15 @@ export async function setupServer( headers: serverOptions.headers, // Disable the websocket if live reload is disabled (false/undefined are the only valid values) ws: serverOptions.liveReload === false && serverOptions.hmr === false ? false : undefined, - proxy, + // When server-side rendering (SSR) is enabled togather with SSL and Express is being used, + // we must configure Vite to use HTTP/1.1. + // This is necessary because Express does not support HTTP/2. + // We achieve this by defining an empty proxy. + // See: https://github.com/vitejs/vite/blob/c4b532cc900bf988073583511f57bd581755d5e3/packages/vite/src/node/http.ts#L106 + proxy: + serverOptions.ssl && ssrMode === ServerSsrMode.ExternalSsrMiddleware + ? (proxy ?? {}) + : proxy, cors: { // Allow preflight requests to be proxied. preflightContinue: true, From 3b7e6a8c6e2e018a85b437256040fd9c8161d537 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 12 Dec 2024 18:01:49 -0500 Subject: [PATCH 0142/2162] fix(@angular/build): invalidate component template updates with dev-server SSR To ensure that the Vite-based dev-server SSR uses updated component template update modules, the server module graph is invalidated when component updates are sent. This currently does a full invalidation but in the future this could potentially be optimized to only update the relevant modules. A fix is also present to correct the component update identifier usage to prevent lookup misses. --- .../build/src/builders/dev-server/vite-server.ts | 16 ++++++++++++++++ .../src/tools/esbuild/application-code-bundle.ts | 3 +++ .../tools/vite/plugins/angular-memory-plugin.ts | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) 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 8ff1fee19964..2447f02f5305 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -233,6 +233,12 @@ export async function* serveWithVite( assetFiles.set('/' + normalizePath(outputPath), normalizePath(file.inputPath)); } } + + // Invalidate SSR module graph to ensure that only new rebuild is used and not stale component updates + if (server && browserOptions.ssr && templateUpdates.size > 0) { + server.moduleGraph.invalidateAll(); + } + // Clear stale template updates on code rebuilds templateUpdates.clear(); @@ -256,6 +262,16 @@ export async function* serveWithVite( 'Builder must provide an initial full build before component update results.', ); + // Invalidate SSR module graph to ensure that new component updates are used + // TODO: Use fine-grained invalidation of only the component update modules + if (browserOptions.ssr) { + server.moduleGraph.invalidateAll(); + const { ɵresetCompiledComponents } = (await server.ssrLoadModule('/main.server.mjs')) as { + ɵresetCompiledComponents: () => void; + }; + ɵresetCompiledComponents(); + } + for (const componentUpdate of result.updates) { if (componentUpdate.type === 'template') { templateUpdates.set(componentUpdate.id, componentUpdate.content); 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 db2581eb9b00..30f6b750a1a0 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -357,6 +357,9 @@ export function createServerMainCodeBundleOptions( ɵgetOrCreateAngularServerApp, } from '@angular/ssr';`, + // Need for HMR + `export { ɵresetCompiledComponents } from '@angular/core';`, + // Re-export all symbols including default export from 'main.server.ts' `export { default } from '${mainServerEntryPointJsImport}';`, `export * from '${mainServerEntryPointJsImport}';`, diff --git a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts index 92fd7ac7df54..201ce171b3ea 100644 --- a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts @@ -78,7 +78,7 @@ export async function createAngularMemoryPlugin( const requestUrl = new URL(id.slice(1), 'http://localhost'); const componentId = requestUrl.searchParams.get('c'); - return (componentId && options.templateUpdates?.get(componentId)) ?? ''; + return (componentId && options.templateUpdates?.get(encodeURIComponent(componentId))) ?? ''; } const [file] = id.split('?', 1); From 298b554a7a40465444b4c508e2250ecbf459ea47 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:30:18 -0500 Subject: [PATCH 0143/2162] feat(@angular/build): enable component template hot replacement by default When using the `application` builder (default for new projects) with the development server, component template only changes will now automatically replace the template within the running application without a full reload of the page. No application code changes are necessary and both file-based (`templateUrl`) and inline (`template`) component templates are supported. Additionally, changing a components styles in combination with a template change is also supported for hot replacement. This includes both inline and file-based changes. If any issues are encountered or it is preferred to not hot replace component templates, the `NG_HMR_TEMPLATES=0` environment variable can be used to disable the feature. Setting the `liveReload` option or `hmr` option to false will also disable all updates. --- .../build/src/builders/dev-server/vite-server.ts | 13 +++++-------- .../angular/build/src/utils/environment-options.ts | 2 +- tests/legacy-cli/e2e/tests/basic/rebuild.ts | 9 ++------- .../legacy-cli/e2e/tests/vite/ssr-entry-express.ts | 6 +++++- .../legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts | 6 +++++- tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts | 6 +++++- tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts | 8 ++++++-- 7 files changed, 29 insertions(+), 21 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 2447f02f5305..fb70e6f964d5 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -138,17 +138,14 @@ export async function* serveWithVite( process.setSourceMapsEnabled(true); } - // Enable to support component style hot reloading (`NG_HMR_CSTYLES=0` can be used to disable selectively) + // Enable to support link-based component style hot reloading (`NG_HMR_CSTYLES=0` can be used to disable selectively) browserOptions.externalRuntimeStyles = serverOptions.liveReload && serverOptions.hmr && useComponentStyleHmr; - // Enable to support component template hot replacement (`NG_HMR_TEMPLATE=1` can be used to enable) - browserOptions.templateUpdates = !!serverOptions.liveReload && useComponentTemplateHmr; - if (browserOptions.templateUpdates) { - context.logger.warn( - 'Experimental support for component template hot replacement has been enabled via the "NG_HMR_TEMPLATE" environment variable.', - ); - } + // Enable to support component template hot replacement (`NG_HMR_TEMPLATE=0` can be used to disable selectively) + // This will also replace file-based/inline styles as code if external runtime styles are not enabled. + browserOptions.templateUpdates = + serverOptions.liveReload && serverOptions.hmr && useComponentTemplateHmr; // Setup the prebundling transformer that will be shared across Vite prebundling requests const prebundleTransformer = new JavaScriptTransformer( diff --git a/packages/angular/build/src/utils/environment-options.ts b/packages/angular/build/src/utils/environment-options.ts index 40de16a535e3..63abd82af46e 100644 --- a/packages/angular/build/src/utils/environment-options.ts +++ b/packages/angular/build/src/utils/environment-options.ts @@ -107,7 +107,7 @@ export const useComponentStyleHmr = const hmrComponentTemplateVariable = process.env['NG_HMR_TEMPLATES']; export const useComponentTemplateHmr = - isPresent(hmrComponentTemplateVariable) && isEnabled(hmrComponentTemplateVariable); + !isPresent(hmrComponentTemplateVariable) || !isDisabled(hmrComponentTemplateVariable); const partialSsrBuildVariable = process.env['NG_BUILD_PARTIAL_SSR']; export const usePartialSsrBuild = diff --git a/tests/legacy-cli/e2e/tests/basic/rebuild.ts b/tests/legacy-cli/e2e/tests/basic/rebuild.ts index f512961366bc..d289587d78b8 100644 --- a/tests/legacy-cli/e2e/tests/basic/rebuild.ts +++ b/tests/legacy-cli/e2e/tests/basic/rebuild.ts @@ -9,13 +9,8 @@ export default async function () { const validBundleRegEx = esbuild ? /sent to client/ : /Compiled successfully\./; const lazyBundleRegEx = esbuild ? /chunk-/ : /src_app_lazy_lazy_component_ts\.js/; - // Disable component stylesheet HMR to support page reload based rebuild testing. - // Ideally this environment variable would be passed directly to the new serve process - // but this would require signficant test changes due to the existing `ngServe` signature. - const oldHMRValue = process.env['NG_HMR_CSTYLES']; - process.env['NG_HMR_CSTYLES'] = '0'; - const port = await ngServe(); - process.env['NG_HMR_CSTYLES'] = oldHMRValue; + // Disable HMR to support page reload based rebuild testing. + const port = await ngServe('--no-hmr'); // Add a lazy route. await silentNg('generate', 'component', 'lazy'); 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 5337ad5e5cc5..a8fbbea83503 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts @@ -90,6 +90,7 @@ export default async function () { 'src/app/home/home.component.html', 'home works', 'yay home works!!!', + true, ); await validateResponse('/api/test', /foo/); await validateResponse('/home', /yay home works/); @@ -111,9 +112,12 @@ async function modifyFileAndWaitUntilUpdated( filePath: string, searchValue: string, replaceValue: string, + hmr = false, ): Promise { await Promise.all([ - waitForAnyProcessOutputToMatch(/Page reload sent to client/), + waitForAnyProcessOutputToMatch( + hmr ? /Component update sent to client/ : /Page reload sent to client/, + ), setTimeout(100).then(() => replaceInFile(filePath, searchValue, replaceValue)), ]); } 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 87c84ad0010f..aca0251b27db 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts @@ -90,6 +90,7 @@ export default async function () { 'src/app/home/home.component.html', 'home works', 'yay home works!!!', + true, ); await validateResponse('/api/test', /foo/); await validateResponse('/home', /yay home works/); @@ -111,9 +112,12 @@ async function modifyFileAndWaitUntilUpdated( filePath: string, searchValue: string, replaceValue: string, + hmr = false, ): Promise { await Promise.all([ - waitForAnyProcessOutputToMatch(/Page reload sent to client/), + waitForAnyProcessOutputToMatch( + hmr ? /Component update sent to client/ : /Page reload sent to client/, + ), setTimeout(100).then(() => replaceInFile(filePath, searchValue, replaceValue)), ]); } 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 0027190395f4..88e03d34aea9 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts @@ -81,6 +81,7 @@ export default async function () { 'src/app/home/home.component.html', 'home works', 'yay home works!!!', + true, ); await validateResponse('/api/test', /foo/); await validateResponse('/home', /yay home works/); @@ -102,9 +103,12 @@ async function modifyFileAndWaitUntilUpdated( filePath: string, searchValue: string, replaceValue: string, + hmr = false, ): Promise { await Promise.all([ - waitForAnyProcessOutputToMatch(/Page reload sent to client/), + waitForAnyProcessOutputToMatch( + hmr ? /Component update sent to client/ : /Page reload sent to client/, + ), setTimeout(100).then(() => replaceInFile(filePath, searchValue, replaceValue)), ]); } 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 353a6cf5b855..f36b36eec332 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts @@ -3,7 +3,7 @@ import { setTimeout } from 'node:timers/promises'; import { replaceInFile, writeMultipleFiles } from '../../utils/fs'; import { ng, silentNg, waitForAnyProcessOutputToMatch } from '../../utils/process'; import { installPackage, installWorkspacePackages, uninstallPackage } from '../../utils/packages'; -import { ngServe, updateJsonFile, useSha } from '../../utils/project'; +import { ngServe, useSha } from '../../utils/project'; import { getGlobalVariable } from '../../utils/env'; export default async function () { @@ -73,6 +73,7 @@ export default async function () { 'src/app/home/home.component.html', 'home works', 'yay home works!!!', + true, ); await validateResponse('/api/test', /foo/); await validateResponse('/home', /yay home works/); @@ -94,9 +95,12 @@ async function modifyFileAndWaitUntilUpdated( filePath: string, searchValue: string, replaceValue: string, + hmr = false, ): Promise { await Promise.all([ - waitForAnyProcessOutputToMatch(/Page reload sent to client/), + waitForAnyProcessOutputToMatch( + hmr ? /Component update sent to client/ : /Page reload sent to client/, + ), setTimeout(100).then(() => replaceInFile(filePath, searchValue, replaceValue)), ]); } From d5476ee6dd71a35861caec5e26f40a5df4b67e65 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 07:24:48 +0000 Subject: [PATCH 0144/2162] build: update `engines` field in `package.json` This commit removes the `yarn` engine field. The `packageManager` version was previously removed, causing Renovate to pick up an outdated Yarn version. Additionally, Yarn Berry does not use this field, rendering it unnecessary. --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 423a75f31586..bb4f30bfb6e3 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ }, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "yarn": ">=1.21.1 <2", "npm": "Please use yarn instead of NPM to install dependencies" }, "author": "Angular Authors", From 653b5c4ef8d8b1ea1f09e34d1c9e67eead7f8e13 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 07:53:44 +0000 Subject: [PATCH 0145/2162] ci: remove `ignorePaths` paths for `pnpm-lock.yaml` This does not work as expected because the paths are expected to be package files. --- renovate.json | 1 - 1 file changed, 1 deletion(-) diff --git a/renovate.json b/renovate.json index f39c77f08f9a..79b1f88c7ba6 100644 --- a/renovate.json +++ b/renovate.json @@ -31,7 +31,6 @@ "tests/legacy-cli/e2e/ng-snapshot/package.json", ".github/workflows/**/*.yml" ], - "ignorePaths": ["pnpm-lock.yaml"], "packageRules": [ { "matchPackageNames": ["quicktype-core"], From fbcb9130579aa27eb60665e0a9cb85bf53588076 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 11:29:37 +0000 Subject: [PATCH 0146/2162] build: workaround for `ERROR: An error occurred during the fetch of repository 'npm2'` In some cases `yarn bazel run @npm2//:sync` will fail in the first run see: https://github.com/aspect-build/rules_js/issues/1445 as a workaround we run a build before. ``` ERROR: An error occurred during the fetch of repository 'npm2': Traceback (most recent call last): File "/usr/local/google/home/alanagius/.cache/bazel/_bazel_alanagius/2fa837e4c5ce941f68b762e5f8e7dc4d/external/aspect_rules_js/npm/private/npm_translate_lock.bzl", line 112, column 21, in _npm_translate_lock_impl fail(msg) Error in fail: INFO: pnpm-lock.yaml file updated. Please run your build again. ``` --- .../npm_translate_lock_MzA5NzUwNzMx | 4 ++-- pnpm-lock.yaml | 1 + renovate.json | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 98763d087f85..7717976c91c8 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1044460161 -pnpm-lock.yaml=451366521 +package.json=1485890683 +pnpm-lock.yaml=-1807446371 pnpm-workspace.yaml=1711114604 yarn.lock=-892267542 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16b47f91a3f3..b12207414291 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2063,6 +2063,7 @@ packages: /@bazel/typescript@5.8.1(typescript@5.7.2): resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} + deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement hasBin: true peerDependencies: typescript: 5.7.2 diff --git a/renovate.json b/renovate.json index 79b1f88c7ba6..ecd2aa08d3e9 100644 --- a/renovate.json +++ b/renovate.json @@ -12,6 +12,7 @@ "commands": [ "git restore .yarn/releases/yarn-4.5.0.cjs", "yarn install --frozen-lockfile --non-interactive", + "yarn bazel build //tools/...", "yarn bazel run @npm2//:sync" ], "fileFilters": [".aspect/rules/external_repository_action_cache/**/*", "pnpm-lock.yaml"], From e5ed172df0f26b53097a7b0869bd737ce9e482b2 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 13:38:55 +0000 Subject: [PATCH 0147/2162] ci: disable renovate updates for placeholder versions Explicitly disable Renovate updates targeting the `0.0.0-PLACEHOLDER` and `0.0.0-EXPERIMENTAL-PLACEHOLDER` versions. These placeholders are not intended for automated updates and require manual handling. --- renovate.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/renovate.json b/renovate.json index ecd2aa08d3e9..affda656b629 100644 --- a/renovate.json +++ b/renovate.json @@ -37,6 +37,14 @@ "matchPackageNames": ["quicktype-core"], "schedule": ["before 4:00am on the first day of the month"] }, + { + "matchCurrentVersion": "0.0.0-PLACEHOLDER", + "enabled": false + }, + { + "matchCurrentVersion": "0.0.0-EXPERIMENTAL-PLACEHOLDER", + "enabled": false + }, { "groupName": "angular", "matchDepNames": ["/^@angular/.*/", "/angular/dev-infra/"] From 0fee02767bb20130b40aaad51f5a7b937dd0937f Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 15:44:05 +0000 Subject: [PATCH 0148/2162] ci: update `yarn` command This command is not compatible with Yarn 4. --- renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index affda656b629..1797bf2f29b5 100644 --- a/renovate.json +++ b/renovate.json @@ -11,7 +11,7 @@ "postUpgradeTasks": { "commands": [ "git restore .yarn/releases/yarn-4.5.0.cjs", - "yarn install --frozen-lockfile --non-interactive", + "yarn install --immutable", "yarn bazel build //tools/...", "yarn bazel run @npm2//:sync" ], From 7a0adb9ca35fcf416ccf41ad8071521316eaca19 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 17 Dec 2024 14:27:50 +0000 Subject: [PATCH 0149/2162] build: migrate remaining `angular-devkit/architect` to `ts_project` This completes `ts_library` to `ts_project` for the architect devkit package. --- .../angular_devkit/architect/node/BUILD.bazel | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/packages/angular_devkit/architect/node/BUILD.bazel b/packages/angular_devkit/architect/node/BUILD.bazel index eeaea502987f..1dcb60002064 100644 --- a/packages/angular_devkit/architect/node/BUILD.bazel +++ b/packages/angular_devkit/architect/node/BUILD.bazel @@ -4,30 +4,31 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "node", srcs = glob( include = ["**/*.ts"], exclude = ["**/*_spec.ts"], ), - module_name = "@angular-devkit/architect/node", - module_root = "index.d.ts", - deps = [ - "//packages/angular_devkit/architect", + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", - "@npm//@types/node", - "@npm//rxjs", + ], + module_name = "@angular-devkit/architect/node", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/rxjs", + "//packages/angular_devkit/architect:architect_rjs", ], ) -ts_library( +ts_project( name = "node_test_lib", testonly = True, srcs = glob( @@ -35,11 +36,14 @@ ts_library( "**/*_spec.ts", ], ), - deps = [ - ":node", - "//packages/angular_devkit/architect", + interop_deps = [ "//tests/angular_devkit/architect/node/jobs:jobs_test_lib", - "@npm//rxjs", + ], + deps = [ + ":node_rjs", + "//:root_modules/@types/jasmine", + "//:root_modules/rxjs", + "//packages/angular_devkit/architect:architect_rjs", ], ) From f728f2f5267efeb72eefe60d281f0751457b9bfc Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 17 Dec 2024 14:37:40 +0000 Subject: [PATCH 0150/2162] build: migrate `angular-devkit/architect-cli` to `ts_project` This migrates more package code to `ts_project` of `rules_js`. --- .../angular_devkit/architect_cli/BUILD.bazel | 24 ++++++++++--------- tsconfig.json | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 45261fd6b374..f5894c1c9ef9 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -1,4 +1,5 @@ -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,22 +9,23 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "architect_cli", - package_name = "@angular-devkit/architect-cli", srcs = [ "bin/architect.ts", ] + glob(["src/**/*.ts"]), - module_name = "@angular-devkit/architect-cli", - deps = [ - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", - "@npm//@types/node", - "@npm//@types/progress", - "@npm//@types/yargs-parser", - "@npm//ansi-colors", + ], + module_name = "@angular-devkit/architect-cli", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/@types/progress", + "//:root_modules/@types/yargs-parser", + "//:root_modules/ansi-colors", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", ], ) diff --git a/tsconfig.json b/tsconfig.json index 73c91f774209..c11293fd8e48 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,7 +24,7 @@ ], "@angular-devkit/schematics/tools": ["./packages/angular_devkit/schematics/tools/index"], "@angular-devkit/schematics/testing": ["./packages/angular_devkit/schematics/testing/index"], - "@angular-devkit/architect/testing": ["./packages/angular_devkit/architect/testing/index"], + "@angular-devkit/architect/*": ["./packages/angular_devkit/architect/*/index"], "@angular-devkit/build-webpack": ["./packages/angular_devkit/build_webpack"], "@angular-devkit/*": ["./packages/angular_devkit/*/src"], "@angular/*": ["./packages/angular/*/src"], From bd90bf73a19d6dfbfe8a9d05da3ec0daa2094596 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Tue, 17 Dec 2024 16:37:43 +0000 Subject: [PATCH 0151/2162] ci: force post upgrade task command for syncing pnpm lock file to exit successfully --- renovate.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/renovate.json b/renovate.json index 1797bf2f29b5..511c791ade49 100644 --- a/renovate.json +++ b/renovate.json @@ -12,8 +12,7 @@ "commands": [ "git restore .yarn/releases/yarn-4.5.0.cjs", "yarn install --immutable", - "yarn bazel build //tools/...", - "yarn bazel run @npm2//:sync" + "yarn bazel run @npm2//:sync || true" ], "fileFilters": [".aspect/rules/external_repository_action_cache/**/*", "pnpm-lock.yaml"], "executionMode": "branch" From e536a9b056e86801b52abd5a6dbda4870518d235 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 17 Dec 2024 16:05:17 +0000 Subject: [PATCH 0152/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 +- package.json | 6 +- pnpm-lock.yaml | 277 ++----------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 378 ++---------------- 11 files changed, 149 insertions(+), 646 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 7717976c91c8..9cd8e371f116 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1485890683 -pnpm-lock.yaml=-1807446371 +package.json=356485467 +pnpm-lock.yaml=901499653 pnpm-workspace.yaml=1711114604 -yarn.lock=-892267542 +yarn.lock=-1272121852 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index c07251a9a59e..e9bb5ff4a653 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + - uses: angular/dev-infra/github-actions/branch-manager@2e0abc2882242fac98af9e90bb05bd7f426726a7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8abe2338be89..5b70272a23ae 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - run: yarn 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 a6675fa96573..e9d8517143f5 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@2e0abc2882242fac98af9e90bb05bd7f426726a7 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + - uses: angular/dev-infra/github-actions/post-approval-changes@2e0abc2882242fac98af9e90bb05bd7f426726a7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index d3e3d008b013..501954804500 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + - uses: angular/dev-infra/github-actions/feature-request@2e0abc2882242fac98af9e90bb05bd7f426726a7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index ed4606ee10c1..9069c1869234 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable # 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 3d670f51b943..73f3f6b5846c 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/linting/licenses@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Check tooling setup run: yarn 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@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -113,13 +113,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,13 +130,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -151,13 +151,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -174,12 +174,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4693145a16baaefdb7c9f55689b8eefc1fffc246 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 bb4f30bfb6e3..f5a9e852dcbe 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.3", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800", "@angular/cdk": "19.1.0-next.2", "@angular/common": "19.1.0-next.3", "@angular/compiler": "19.1.0-next.3", @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-next.3", "@angular/localize": "19.1.0-next.3", "@angular/material": "19.1.0-next.2", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb", "@angular/platform-browser": "19.1.0-next.3", "@angular/platform-browser-dynamic": "19.1.0-next.3", "@angular/platform-server": "19.1.0-next.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b12207414291..dc12472f88c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/core@19.1.0-next.3) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277 - version: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9 + version: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0 - version: github.com/angular/dev-infra-private-build-tooling-builds/d17f802de0af0ac409259f97678ce59ddd0671a0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800 + version: github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.2 version: 19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1) @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-next.2 version: 19.1.0-next.2(@angular/animations@19.1.0-next.3)(@angular/cdk@19.1.0-next.2)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/forms@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb - version: github.com/angular/dev-infra-private-ng-dev-builds/fe9dde0666e9b8e1164951e8c146f9a03b05fcdb + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb + version: github.com/angular/dev-infra-private-ng-dev-builds/1aeefede77b2ad246250324ae72fa9d70438b2cb '@angular/platform-browser': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) @@ -527,18 +527,18 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@angular-devkit/architect@0.1901.0-next.0(chokidar@4.0.1): - resolution: {integrity: sha512-IIzaNbosmoHNUGDd5JebX0IbVEpLXewQH0kWw9x59KgRasjF2mYed0MM59QfIjZ4thu1E/8O3mI1m8H0U9E5JQ==} + /@angular-devkit/architect@0.1901.0-next.1(chokidar@4.0.1): + resolution: {integrity: sha512-bZS5UlLsdL5eF3JqMaheYdIBVYrEIoDs6Q5UN50cJe5gKcakDvn8ky/Dhmv8kxfq5efb9zUevTC5xqnu+cgcmg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 19.1.0-next.0(chokidar@4.0.1) + '@angular-devkit/core': 19.1.0-next.1(chokidar@4.0.1) rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@angular-devkit/core@19.1.0-next.0(chokidar@4.0.1): - resolution: {integrity: sha512-riQHONMvzXf1rctxYZbXm4S/fQE+OdtoZR7P3ZemU6a9QrfZUtT/t3ivElm9ZspI35SGZJxSTMdZXUidhMph9g==} + /@angular-devkit/core@19.1.0-next.1(chokidar@4.0.1): + resolution: {integrity: sha512-2xzT/jBSKuDO2avbB00qiuM4Moir9RcLtK++oyJm/CVQ8tUFppVvpb2MIp0TB/FuV+Tfm8APf0etY0w/fWfWZA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -575,8 +575,8 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): - resolution: {integrity: sha512-5YToh23ZUupSgqXgqDD5g8bFbbo1kFI7DBP8s/i2cqJs6jLV7P/Mj1lFh9wA3MqkTD9nxsKc0uMT8KdIxs9Iyg==} + /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + resolution: {integrity: sha512-rLzY+2AxkNb82TSRp7DaZH/y0/ZdUV3g0OwJl7ajXvyIH0oJgq5mtNAO4VUreU+MR6h3tGO+XJRg6W0OUM9rzw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^19.0.0 || ^19.1.0-next.0 @@ -584,7 +584,7 @@ packages: '@angular/localize': ^19.0.0 || ^19.1.0-next.0 '@angular/platform-server': ^19.0.0 || ^19.1.0-next.0 '@angular/service-worker': ^19.0.0 || ^19.1.0-next.0 - '@angular/ssr': ^19.1.0-next.0 + '@angular/ssr': ^19.1.0-next.1 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -606,7 +606,7 @@ packages: optional: true dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1901.0-next.0(chokidar@4.0.1) + '@angular-devkit/architect': 0.1901.0-next.1(chokidar@4.0.1) '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) '@angular/localize': 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3) @@ -616,27 +616,27 @@ packages: '@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/core@7.26.0) - '@inquirer/confirm': 5.0.2(@types/node@18.19.67) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.2) - beasties: 0.1.0 + '@inquirer/confirm': 5.1.0(@types/node@18.19.67) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.3) + beasties: 0.2.0 browserslist: 4.24.2 esbuild: 0.24.0 fast-glob: 3.3.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.6(supports-color@9.4.0) istanbul-lib-instrument: 6.0.3 less: 4.2.1 listr2: 8.2.5 - magic-string: 0.30.14 + magic-string: 0.30.15 mrmime: 2.0.0 parse5-html-rewriting-stream: 7.0.0 picomatch: 4.0.2 piscina: 4.8.0 postcss: 8.4.49 - rollup: 4.28.0 + rollup: 4.28.1 sass: 1.82.0 semver: 7.6.3 typescript: 5.7.2 - vite: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: lmdb: 3.2.0 @@ -2490,17 +2490,6 @@ packages: yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/confirm@5.0.2(@types/node@18.19.67): - resolution: {integrity: sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 - dev: true - /@inquirer/confirm@5.1.0(@types/node@18.19.67): resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==} engines: {node: '>=18'} @@ -3594,13 +3583,6 @@ packages: rollup: 4.28.1 dev: true - /@rollup/rollup-android-arm-eabi@4.28.0: - resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==} - cpu: [arm] - os: [android] - dev: true - optional: true - /@rollup/rollup-android-arm-eabi@4.28.1: resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} cpu: [arm] @@ -3608,13 +3590,6 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm64@4.28.0: - resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==} - cpu: [arm64] - os: [android] - dev: true - optional: true - /@rollup/rollup-android-arm64@4.28.1: resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} cpu: [arm64] @@ -3622,13 +3597,6 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.28.0: - resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==} - cpu: [arm64] - os: [darwin] - dev: true - optional: true - /@rollup/rollup-darwin-arm64@4.28.1: resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} cpu: [arm64] @@ -3636,13 +3604,6 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-x64@4.28.0: - resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==} - cpu: [x64] - os: [darwin] - dev: true - optional: true - /@rollup/rollup-darwin-x64@4.28.1: resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} cpu: [x64] @@ -3650,13 +3611,6 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-arm64@4.28.0: - resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==} - cpu: [arm64] - os: [freebsd] - dev: true - optional: true - /@rollup/rollup-freebsd-arm64@4.28.1: resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} cpu: [arm64] @@ -3664,13 +3618,6 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-x64@4.28.0: - resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==} - cpu: [x64] - os: [freebsd] - dev: true - optional: true - /@rollup/rollup-freebsd-x64@4.28.1: resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} cpu: [x64] @@ -3678,13 +3625,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.28.0: - resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.28.1: resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} cpu: [arm] @@ -3692,13 +3632,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.28.0: - resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm-musleabihf@4.28.1: resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} cpu: [arm] @@ -3706,13 +3639,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.28.0: - resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.28.1: resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} cpu: [arm64] @@ -3720,13 +3646,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.28.0: - resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.28.1: resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} cpu: [arm64] @@ -3741,13 +3660,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.28.0: - resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==} - cpu: [ppc64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.28.1: resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} cpu: [ppc64] @@ -3755,13 +3667,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.28.0: - resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==} - cpu: [riscv64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.28.1: resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} cpu: [riscv64] @@ -3769,13 +3674,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.28.0: - resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==} - cpu: [s390x] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-s390x-gnu@4.28.1: resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} cpu: [s390x] @@ -3783,13 +3681,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.28.0: - resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.28.1: resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} cpu: [x64] @@ -3797,13 +3688,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.28.0: - resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-x64-musl@4.28.1: resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} cpu: [x64] @@ -3811,13 +3695,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.28.0: - resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==} - cpu: [arm64] - os: [win32] - dev: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.28.1: resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} cpu: [arm64] @@ -3825,13 +3702,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.28.0: - resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==} - cpu: [ia32] - os: [win32] - dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.28.1: resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} cpu: [ia32] @@ -3839,13 +3709,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.28.0: - resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==} - cpu: [x64] - os: [win32] - dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.28.1: resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} cpu: [x64] @@ -4960,15 +4823,6 @@ packages: semver: 7.6.3 dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.2): - resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} - engines: {node: '>=14.21.3'} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - dependencies: - vite: 6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) - dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.3): resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} engines: {node: '>=14.21.3'} @@ -5894,19 +5748,6 @@ packages: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} dev: true - /beasties@0.1.0: - resolution: {integrity: sha512-+Ssscd2gVG24qRNC+E2g88D+xsQW4xwakWtKAiGEQ3Pw54/FGdyo9RrfxhGhEv6ilFVbB7r3Lgx+QnAxnSpECw==} - dependencies: - css-select: 5.1.0 - css-what: 6.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - htmlparser2: 9.1.0 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-media-query-parser: 0.2.3 - dev: true - /beasties@0.2.0: resolution: {integrity: sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow==} engines: {node: '>=14.0.0'} @@ -8843,16 +8684,6 @@ packages: - supports-color dev: true - /https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) - transitivePeerDependencies: - - supports-color - dev: true - /https-proxy-agent@7.0.6(supports-color@9.4.0): resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -10290,12 +10121,6 @@ packages: engines: {node: '>=16.14'} dev: true - /magic-string@0.30.14: - resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - /magic-string@0.30.15: resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==} dependencies: @@ -12359,34 +12184,6 @@ packages: source-map-resolve: 0.6.0 dev: true - /rollup@4.28.0: - resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.28.0 - '@rollup/rollup-android-arm64': 4.28.0 - '@rollup/rollup-darwin-arm64': 4.28.0 - '@rollup/rollup-darwin-x64': 4.28.0 - '@rollup/rollup-freebsd-arm64': 4.28.0 - '@rollup/rollup-freebsd-x64': 4.28.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.0 - '@rollup/rollup-linux-arm-musleabihf': 4.28.0 - '@rollup/rollup-linux-arm64-gnu': 4.28.0 - '@rollup/rollup-linux-arm64-musl': 4.28.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.0 - '@rollup/rollup-linux-riscv64-gnu': 4.28.0 - '@rollup/rollup-linux-s390x-gnu': 4.28.0 - '@rollup/rollup-linux-x64-gnu': 4.28.0 - '@rollup/rollup-linux-x64-musl': 4.28.0 - '@rollup/rollup-win32-arm64-msvc': 4.28.0 - '@rollup/rollup-win32-ia32-msvc': 4.28.0 - '@rollup/rollup-win32-x64-msvc': 4.28.0 - fsevents: 2.3.3 - dev: true - /rollup@4.28.1: resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -14127,8 +13924,8 @@ packages: extsprintf: 1.4.1 dev: true - /vite@6.0.2(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): - resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} + /vite@6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): + resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -14818,15 +14615,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/07617f0f8540d27f8895b1820a6f994e1e5b7277} - id: github.com/angular/bazel-builds/07617f0f8540d27f8895b1820a6f994e1e5b7277 + github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/b788089a8335af49adbbb4f32d238af7f0f437d9} + id: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9 name: '@angular/bazel' - version: 19.0.0-next.7 + version: 19.1.0-next.3 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.0.0-next.7+sha-00a79d0 + '@angular/compiler-cli': 19.1.0-next.3+sha-add84dd '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -14855,14 +14652,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/d17f802de0af0ac409259f97678ce59ddd0671a0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/d17f802de0af0ac409259f97678ce59ddd0671a0} - id: github.com/angular/dev-infra-private-build-tooling-builds/d17f802de0af0ac409259f97678ce59ddd0671a0 + github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/a09ac38aeae6dc96ff2073f161ace8017b7ce800} + id: github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800 name: '@angular/build-tooling' - version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 + version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.0(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -14927,10 +14724,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/fe9dde0666e9b8e1164951e8c146f9a03b05fcdb: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fe9dde0666e9b8e1164951e8c146f9a03b05fcdb} + github.com/angular/dev-infra-private-ng-dev-builds/1aeefede77b2ad246250324ae72fa9d70438b2cb: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1aeefede77b2ad246250324ae72fa9d70438b2cb} name: '@angular/ng-dev' - version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 + version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 hasBin: true dependencies: '@google-cloud/spanner': 7.16.0(supports-color@9.4.0) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index f5bb36a8659b..f73a6439bf61 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#140f33a7982d208e44cfcce96672af3f641fd43f", - "@angular/cdk": "github:angular/cdk-builds#72ccabfc3bb47ac0579354687fadddd3eb8962f0", - "@angular/common": "github:angular/common-builds#217b1854b31b7bdcbe457f0fc44c74ea6c5216e6", - "@angular/compiler": "github:angular/compiler-builds#16846a8d5794a5f7551eaddd9e0e8f872e79afd5", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e6166da63f358f0c411ee4b9d7916a40a8fd3119", - "@angular/core": "github:angular/core-builds#6f0376bcaac1353f4dcedb9c8579324d957a083d", - "@angular/forms": "github:angular/forms-builds#9a52635d2bf1cd207efa799cfe51bf5a548c6a22", - "@angular/language-service": "github:angular/language-service-builds#0d020c35c2424aacb20785b98ea1a8fc83a68ce4", - "@angular/localize": "github:angular/localize-builds#4ae8b2f8124334f16297e51ec44f36513b240684", - "@angular/material": "github:angular/material-builds#aa4fc973cbd5c326cdd76fe1eb51d6a78cb7cb72", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3f2355e199ac009050c6556edd7da69e8127fb7e", - "@angular/platform-browser": "github:angular/platform-browser-builds#a9de245c8ae9bcca49801324978480a16c8a2dd5", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#4749ba8a232aa363a50225fec64fddf8976c8322", - "@angular/platform-server": "github:angular/platform-server-builds#4054c8ea5933dcd875a1fc607e54b99ec82be9b2", - "@angular/router": "github:angular/router-builds#b5ca3c8128eb7f10d55d81642b548572ac92135b", - "@angular/service-worker": "github:angular/service-worker-builds#8647cb5eaac95a3a2c7d0cf85b82557ffb07d466" + "@angular/animations": "github:angular/animations-builds#66a65d8b59649ad376085a08088dfd8c12d74fb7", + "@angular/cdk": "github:angular/cdk-builds#696e76b821cc1c2872e3e99f6abd4ce7e5bbf735", + "@angular/common": "github:angular/common-builds#e39c94dd4e649e1722f3fa523010010549345096", + "@angular/compiler": "github:angular/compiler-builds#c6170b1dffc87c3fc66539d98a523a3e0d3a21c7", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#314bca432e53a54f7a65276122b3db3683ff9a02", + "@angular/core": "github:angular/core-builds#3d700f657cace50b9cd70b40c769b481c1603c17", + "@angular/forms": "github:angular/forms-builds#719b887c65976c3b84f1392c3ce536d46fe05f65", + "@angular/language-service": "github:angular/language-service-builds#efe394e67210024fa38e190e6b4bc76d357eab9d", + "@angular/localize": "github:angular/localize-builds#d733ef3f49229f680e358a3db1872db7c09f2934", + "@angular/material": "github:angular/material-builds#0eafbe3c8664bc3da192eecae27a971c23af4080", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#71a76b4bab80cf03a05ef845d79a97ff740a8d49", + "@angular/platform-browser": "github:angular/platform-browser-builds#b4fb153243a1ed613695b1b0c555a76c92c76ed9", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#3b278e5a48d7208e1eb724211917c174753cb400", + "@angular/platform-server": "github:angular/platform-server-builds#9f2eff3c2d577128cc000bdddb0fe2ec10a4f5a3", + "@angular/router": "github:angular/router-builds#bffd99e460843e2a14aa04db7853b30f76ff67e5", + "@angular/service-worker": "github:angular/service-worker-builds#ce0ec334bddeef58eada5b30842b9b6f845e6f43" } } diff --git a/yarn.lock b/yarn.lock index 641e99f8b44b..3a08ea128c75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,24 +15,24 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.1901.0-next.0": - version: 0.1901.0-next.0 - resolution: "@angular-devkit/architect@npm:0.1901.0-next.0" +"@angular-devkit/architect@npm:0.1901.0-next.1": + version: 0.1901.0-next.1 + resolution: "@angular-devkit/architect@npm:0.1901.0-next.1" dependencies: - "@angular-devkit/core": "npm:19.1.0-next.0" + "@angular-devkit/core": "npm:19.1.0-next.1" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/e72399cca83206fe34927d1a150f786153ca54cc65812f2c62e5393a8c02e5a512511705eccabcb6feccf6bc5af4a3c7bb1cd522e79ed96ba3e885de154237a1 + checksum: 10c0/48f17401b12437f656d737ee1d190a1399543562f92852558be4aa51941dd12f4777d4b508f8985b7507f120356df126c7980d907d3759a2615d2f97a5dca3d4 languageName: node linkType: hard -"@angular-devkit/core@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular-devkit/core@npm:19.1.0-next.0" +"@angular-devkit/core@npm:19.1.0-next.1": + version: 19.1.0-next.1 + resolution: "@angular-devkit/core@npm:19.1.0-next.1" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -50,7 +50,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/7211252709e7b14e1c33587d16e5ed7c1dde6fa64af6bd84abbea25abff77fd9d3bbc1ca13a42ee41418097f988e7eafd4fa922f920ab467330d64e9e25bf31f + checksum: 10c0/fd2935068827cc3bf4331f21d1511e9c80c15c0833793ef58c8bb1b9d258ff3e34fc2222f9d3a72b8f04f3904271ccc32aaa53dfa42d95293f0bdd1b7884cdbb languageName: node linkType: hard @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277": - version: 19.0.0-next.7+sha-00a79d0 - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=07617f0f8540d27f8895b1820a6f994e1e5b7277" +"@angular/bazel@https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9": + version: 19.1.0-next.3+sha-add84dd + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=b788089a8335af49adbbb4f32d238af7f0f437d9" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.0.0-next.7+sha-00a79d0 + "@angular/compiler-cli": 19.1.0-next.3+sha-add84dd "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -81,7 +81,7 @@ __metadata: rollup: ^2.56.3 rollup-plugin-sourcemaps: ^0.6.3 terser: ^5.9.0 - typescript: ">=5.5 <5.7" + typescript: ">=5.5 <5.8" peerDependenciesMeta: terser: optional: true @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/18e8c7c6e70261f04756559cfbf6a1e099bbadef5f6206b04c28c5b4bd6e8178713e1361ae0edf21e888efdd90ea45d008374ef57b22ea31d0722566babae8e7 + checksum: 10c0/a3354a2fe921e412f64e139e8c0ee03b7091c0f747b70fc01db3a10668c26d99fd8f19d964ac005b3dc547332e3cbd5a8564a1f7ec54d7fadf94afc713b7394a languageName: node linkType: hard @@ -104,12 +104,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0": - version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=d17f802de0af0ac409259f97678ce59ddd0671a0" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800": + version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=a09ac38aeae6dc96ff2073f161ace8017b7ce800" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.1.0-next.0" + "@angular/build": "npm:19.1.0-next.1" "@babel/core": "npm:^7.16.0" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" "@bazel/buildifier": "npm:6.3.3" @@ -143,39 +143,39 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/be7d98b00ca2cb31dc911403ee95778caa2e9a38da746c0636bd9ef33709c7739dc3de20e964fe2c9734d32eddd0f7383533e52d24ca33547eeca9e408e42e0b + checksum: 10c0/c5a324c4d4d284a41fe80b63ad3ba737daca5a7ccd31250883254a865166acafd3aafbfb30c2309fbfd3d119ec41da5bb6602036341c5a2d6123b406bd3f3b8a languageName: node linkType: hard -"@angular/build@npm:19.1.0-next.0": - version: 19.1.0-next.0 - resolution: "@angular/build@npm:19.1.0-next.0" +"@angular/build@npm:19.1.0-next.1": + version: 19.1.0-next.1 + resolution: "@angular/build@npm:19.1.0-next.1" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1901.0-next.0" + "@angular-devkit/architect": "npm:0.1901.0-next.1" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-syntax-import-attributes": "npm:7.26.0" - "@inquirer/confirm": "npm:5.0.2" + "@inquirer/confirm": "npm:5.1.0" "@vitejs/plugin-basic-ssl": "npm:1.2.0" - beasties: "npm:0.1.0" + beasties: "npm:0.2.0" browserslist: "npm:^4.23.0" esbuild: "npm:0.24.0" fast-glob: "npm:3.3.2" - https-proxy-agent: "npm:7.0.5" + https-proxy-agent: "npm:7.0.6" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" lmdb: "npm:3.2.0" - magic-string: "npm:0.30.14" + magic-string: "npm:0.30.15" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.8.0" - rollup: "npm:4.28.0" + rollup: "npm:4.28.1" sass: "npm:1.82.0" semver: "npm:7.6.3" - vite: "npm:6.0.2" + vite: "npm:6.0.3" watchpack: "npm:2.4.2" peerDependencies: "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 @@ -183,7 +183,7 @@ __metadata: "@angular/localize": ^19.0.0 || ^19.1.0-next.0 "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 - "@angular/ssr": ^19.1.0-next.0 + "@angular/ssr": ^19.1.0-next.1 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -210,7 +210,7 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10c0/2e965a20be3e173e9115e9b88148594bae77495e56a6385e89d6294b816b14558dd41c49ab69d0566b56692e29ad6fd32e9dff8b8dcc010a21af7b717e7bb413 + checksum: 10c0/033071f252bea38a6e8488a50decbc9733eec00d916501cbbd31286f75cbab4b590b7d88bd4423039371cac1aa53331fb36c270070e68fddc8c632ea9e455183 languageName: node linkType: hard @@ -310,8 +310,8 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.3" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#07617f0f8540d27f8895b1820a6f994e1e5b7277" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d17f802de0af0ac409259f97678ce59ddd0671a0" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800" "@angular/cdk": "npm:19.1.0-next.2" "@angular/common": "npm:19.1.0-next.3" "@angular/compiler": "npm:19.1.0-next.3" @@ -320,7 +320,7 @@ __metadata: "@angular/forms": "npm:19.1.0-next.3" "@angular/localize": "npm:19.1.0-next.3" "@angular/material": "npm:19.1.0-next.2" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb" "@angular/platform-browser": "npm:19.1.0-next.3" "@angular/platform-browser-dynamic": "npm:19.1.0-next.3" "@angular/platform-server": "npm:19.1.0-next.3" @@ -532,9 +532,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#fe9dde0666e9b8e1164951e8c146f9a03b05fcdb": - version: 0.0.0-4693145a16baaefdb7c9f55689b8eefc1fffc246 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=fe9dde0666e9b8e1164951e8c146f9a03b05fcdb" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb": + version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=1aeefede77b2ad246250324ae72fa9d70438b2cb" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -549,7 +549,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/0d1bfc08dd0a95dfd4639b5a82cd4b476e3fd211d512cdaec508fb675c20cfde4d934c9c1068844b1f0011e81922577c004cf8db1ca1c75f5f475cc8db1eb806 + checksum: 10c0/3f0221d665c77635fde69c39cfb4c126e8b613951b16efda24f5d114678e776dd32f6da7a4546132a60de8e08cc275155dd692e972ba6aa25fc9b2f069ebcbe7 languageName: node linkType: hard @@ -2344,18 +2344,6 @@ __metadata: languageName: node linkType: hard -"@inquirer/confirm@npm:5.0.2": - version: 5.0.2 - resolution: "@inquirer/confirm@npm:5.0.2" - dependencies: - "@inquirer/core": "npm:^10.1.0" - "@inquirer/type": "npm:^3.0.1" - peerDependencies: - "@types/node": ">=18" - checksum: 10c0/c121cfb0557b42dd6570b54dce707a048d85f328481d5230d21fede195902012ede06887aa478875cc83afa064c2e30953eb2cab0744f832195867b418865115 - languageName: node - linkType: hard - "@inquirer/confirm@npm:5.1.0, @inquirer/confirm@npm:^5.1.0": version: 5.1.0 resolution: "@inquirer/confirm@npm:5.1.0" @@ -2368,7 +2356,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/core@npm:^10.1.0, @inquirer/core@npm:^10.1.1": +"@inquirer/core@npm:^10.1.1": version: 10.1.1 resolution: "@inquirer/core@npm:10.1.1" dependencies: @@ -3733,13 +3721,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.1" @@ -3754,13 +3735,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-android-arm64@npm:4.28.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-android-arm64@npm:4.28.1" @@ -3775,13 +3749,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.28.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" @@ -3796,13 +3763,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.28.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" @@ -3817,13 +3777,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.0" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" @@ -3838,13 +3791,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.28.0" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" @@ -3859,13 +3805,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.0" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" @@ -3880,13 +3819,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.0" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" @@ -3901,13 +3833,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" @@ -3922,13 +3847,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" @@ -3950,13 +3868,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.0" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" @@ -3971,13 +3882,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" @@ -3992,13 +3896,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" @@ -4013,13 +3910,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" @@ -4034,13 +3924,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" @@ -4055,13 +3938,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" @@ -4076,13 +3952,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" @@ -4097,13 +3966,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.28.0": - version: 4.28.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" @@ -6146,7 +6008,7 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.3 resolution: "agent-base@npm:7.1.3" checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 @@ -6831,22 +6693,6 @@ __metadata: languageName: node linkType: hard -"beasties@npm:0.1.0": - version: 0.1.0 - resolution: "beasties@npm:0.1.0" - dependencies: - css-select: "npm:^5.1.0" - css-what: "npm:^6.1.0" - dom-serializer: "npm:^2.0.0" - domhandler: "npm:^5.0.3" - htmlparser2: "npm:^9.0.0" - picocolors: "npm:^1.1.1" - postcss: "npm:^8.4.47" - postcss-media-query-parser: "npm:^0.2.3" - checksum: 10c0/62c7b6ad21283843e4de18d6458850a9b60bf3bedcb393b4a953144ace9617aa1fdc4f5eb3901c87aa428ebe24aaabe21af727b4e5c57965012b56bfbc0ed46a - languageName: node - linkType: hard - "beasties@npm:0.2.0": version: 0.2.0 resolution: "beasties@npm:0.2.0" @@ -10479,7 +10325,7 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^9.0.0, htmlparser2@npm:^9.1.0": +"htmlparser2@npm:^9.1.0": version: 9.1.0 resolution: "htmlparser2@npm:9.1.0" dependencies: @@ -10670,16 +10516,6 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:7.0.5": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c - languageName: node - linkType: hard - "https-proxy-agent@npm:7.0.6, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.6": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" @@ -12844,15 +12680,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.14": - version: 0.30.14 - resolution: "magic-string@npm:0.30.14" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/c52c2a6e699dfa8a840e13154da35464a40cd8b07049b695a8b282883b0426c0811af1e36ac26860b4267289340b42772c156a5608e87be97b63d510e617e87a - languageName: node - linkType: hard - "magic-string@npm:0.30.15": version: 0.30.15 resolution: "magic-string@npm:0.30.15" @@ -15696,75 +15523,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.0": - version: 4.28.0 - resolution: "rollup@npm:4.28.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.28.0" - "@rollup/rollup-android-arm64": "npm:4.28.0" - "@rollup/rollup-darwin-arm64": "npm:4.28.0" - "@rollup/rollup-darwin-x64": "npm:4.28.0" - "@rollup/rollup-freebsd-arm64": "npm:4.28.0" - "@rollup/rollup-freebsd-x64": "npm:4.28.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.28.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.28.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.28.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.28.0" - "@rollup/rollup-linux-x64-musl": "npm:4.28.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.28.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.28.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.28.0" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/98d3bc2b784eff71b997cfc2be97c00e2f100ee38adc2f8ada7b9b9ecbbc96937f667a6a247a45491807b3f2adef3c73d1f5df40d71771bff0c2d8c0cca9b369 - languageName: node - linkType: hard - "rollup@npm:4.28.1, rollup@npm:^4.24.0": version: 4.28.1 resolution: "rollup@npm:4.28.1" @@ -18159,58 +17917,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.2": - version: 6.0.2 - resolution: "vite@npm:6.0.2" - dependencies: - esbuild: "npm:^0.24.0" - fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.49" - rollup: "npm:^4.23.0" - peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: ">=1.21.0" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/45fc609f2bc5fb5beb5a8e2cad9ad6c2edce229a922f6fc1270ea2a9d75819482edcc0f77c85b4a7abdad7eb69ce6a4f26131925d47cdc0778fc15d1bbc3b6a2 - languageName: node - linkType: hard - "vite@npm:6.0.3": version: 6.0.3 resolution: "vite@npm:6.0.3" From 339ffd4ed642c2f5274ca59ce2cb84edb978b6f0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 17 Dec 2024 17:21:11 +0000 Subject: [PATCH 0153/2162] build: update dependency npm to v11 --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 2 +- pnpm-lock.yaml | 12 +- yarn.lock | 283 ++++++++---------- 4 files changed, 139 insertions(+), 164 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 9cd8e371f116..a3d6f350bb60 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=356485467 -pnpm-lock.yaml=901499653 +package.json=998127843 +pnpm-lock.yaml=368829012 pnpm-workspace.yaml=1711114604 -yarn.lock=-1272121852 +yarn.lock=-832398723 diff --git a/package.json b/package.json index f5a9e852dcbe..26f11b0d428e 100644 --- a/package.json +++ b/package.json @@ -158,7 +158,7 @@ "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", "ng-packagr": "19.1.0-next.2", - "npm": "^10.8.1", + "npm": "^11.0.0", "npm-package-arg": "12.0.1", "npm-pick-manifest": "10.0.0", "open": "10.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc12472f88c2..e159788a1c2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -365,8 +365,8 @@ importers: specifier: 19.1.0-next.2 version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.3)(tslib@2.8.1)(typescript@5.7.2) npm: - specifier: ^10.8.1 - version: 10.9.2 + specifier: ^11.0.0 + version: 11.0.0 npm-package-arg: specifier: 12.0.1 version: 12.0.1 @@ -10737,9 +10737,9 @@ packages: path-key: 3.1.1 dev: true - /npm@10.9.2: - resolution: {integrity: sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==} - engines: {node: ^18.17.0 || >=20.5.0} + /npm@11.0.0: + resolution: {integrity: sha512-Ed/ylWXSKXx058WUqXYlgb3pafCqXL5vWzZEvwCKFsBl7OYQlNn/u4ESW+ON+OG6Q+uCRLPTDGHreX6aJEDj7A==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true dev: true bundledDependencies: @@ -10772,7 +10772,6 @@ packages: - libnpmdiff - libnpmexec - libnpmfund - - libnpmhook - libnpmorg - libnpmpack - libnpmpublish @@ -10810,7 +10809,6 @@ packages: - treeverse - validate-npm-package-name - which - - write-file-atomic /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} diff --git a/yarn.lock b/yarn.lock index 3a08ea128c75..1f91b436c276 100644 --- a/yarn.lock +++ b/yarn.lock @@ -425,7 +425,7 @@ __metadata: mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" ng-packagr: "npm:19.1.0-next.2" - npm: "npm:^10.8.1" + npm: "npm:^11.0.0" npm-package-arg: "npm:12.0.1" npm-pick-manifest: "npm:10.0.0" open: "npm:10.1.0" @@ -3025,15 +3025,15 @@ __metadata: languageName: node linkType: hard -"@npmcli/arborist@npm:^8.0.0": - version: 8.0.0 - resolution: "@npmcli/arborist@npm:8.0.0" +"@npmcli/arborist@npm:^9.0.0": + version: 9.0.0 + resolution: "@npmcli/arborist@npm:9.0.0" dependencies: "@isaacs/string-locale-compare": "npm:^1.1.0" "@npmcli/fs": "npm:^4.0.0" "@npmcli/installed-package-contents": "npm:^3.0.0" "@npmcli/map-workspaces": "npm:^4.0.1" - "@npmcli/metavuln-calculator": "npm:^8.0.0" + "@npmcli/metavuln-calculator": "npm:^9.0.0" "@npmcli/name-from-folder": "npm:^3.0.0" "@npmcli/node-gyp": "npm:^4.0.0" "@npmcli/package-json": "npm:^6.0.1" @@ -3044,7 +3044,6 @@ __metadata: cacache: "npm:^19.0.1" common-ancestor-path: "npm:^1.0.1" hosted-git-info: "npm:^8.0.0" - json-parse-even-better-errors: "npm:^4.0.0" json-stringify-nice: "npm:^1.1.4" lru-cache: "npm:^10.2.2" minimatch: "npm:^9.0.4" @@ -3053,7 +3052,7 @@ __metadata: npm-package-arg: "npm:^12.0.0" npm-pick-manifest: "npm:^10.0.0" npm-registry-fetch: "npm:^18.0.1" - pacote: "npm:^19.0.0" + pacote: "npm:^21.0.0" parse-conflict-json: "npm:^4.0.0" proc-log: "npm:^5.0.0" proggy: "npm:^3.0.0" @@ -3063,16 +3062,16 @@ __metadata: semver: "npm:^7.3.7" ssri: "npm:^12.0.0" treeverse: "npm:^3.0.0" - walk-up-path: "npm:^3.0.1" + walk-up-path: "npm:^4.0.0" bin: arborist: bin/index.js - checksum: 10c0/7ac8bdc87ee054f0343bb8b0455e5fc1c1aa4ee9ba31b990ac490fa67051acbc6546bab6869196799c2487a1da7710be55d657fbbba531a51449e182a611f197 + checksum: 10c0/7b92bce447b81de647f601537e257c5f05789efff393d8115e7db81b900bc5f60ccd73b2807eb674cd9fd69d192c08e9f9a7ef25d27bb976dbfd6f9861f896fd languageName: node linkType: hard -"@npmcli/config@npm:^9.0.0": - version: 9.0.0 - resolution: "@npmcli/config@npm:9.0.0" +"@npmcli/config@npm:^10.0.0": + version: 10.0.0 + resolution: "@npmcli/config@npm:10.0.0" dependencies: "@npmcli/map-workspaces": "npm:^4.0.1" "@npmcli/package-json": "npm:^6.0.1" @@ -3081,8 +3080,8 @@ __metadata: nopt: "npm:^8.0.0" proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - walk-up-path: "npm:^3.0.1" - checksum: 10c0/e059fa1dcf0d931bd9d8ae11cf1823b09945fa451a45d4bd55fd2382022f4f9210ce775fe445d52380324dd4985662f2e2d69c5d572b90eed48a8b904d76eba5 + walk-up-path: "npm:^4.0.0" + checksum: 10c0/ea31efb5aaae8bc7f2446c8d67f96ef9fc75e1921bc647d1ffcf3b83cba2168d9b5d8e6fb483b8721b36c5bc98d7b2dd6fc1f9457c94498fd2f630ff36f3de9d languageName: node linkType: hard @@ -3136,16 +3135,16 @@ __metadata: languageName: node linkType: hard -"@npmcli/metavuln-calculator@npm:^8.0.0": - version: 8.0.1 - resolution: "@npmcli/metavuln-calculator@npm:8.0.1" +"@npmcli/metavuln-calculator@npm:^9.0.0": + version: 9.0.0 + resolution: "@npmcli/metavuln-calculator@npm:9.0.0" dependencies: cacache: "npm:^19.0.0" json-parse-even-better-errors: "npm:^4.0.0" - pacote: "npm:^20.0.0" + pacote: "npm:^21.0.0" proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - checksum: 10c0/df9407debeda3f260da0630bd2fce29200ee0e83442dcda8c2f548828782893fb92eebe1bf9bfe58bc205f5cd7a1b42c0835354e97be9c41bd04573c1c83e7c3 + checksum: 10c0/6ff58d73ea97bfb32e62ce3c3131a79db0d594f7920006ac86352562ac792d4f697610b7c2a6699de3b6cc7b82734f852ad8db60d9d0cdc0d3b9bdb8af5e436e languageName: node linkType: hard @@ -6015,16 +6014,6 @@ __metadata: languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 - languageName: node - linkType: hard - "ajv-draft-04@npm:~1.0.0": version: 1.0.0 resolution: "ajv-draft-04@npm:1.0.0" @@ -6750,13 +6739,20 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.0.0, binary-extensions@npm:^2.3.0": +"binary-extensions@npm:^2.0.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 languageName: node linkType: hard +"binary-extensions@npm:^3.0.0": + version: 3.0.0 + resolution: "binary-extensions@npm:3.0.0" + checksum: 10c0/ff93b513fd2127a83996ea8b62df290af59c5827acf0d4d118cb8dc44c9c41e3464fe7374c1412c5fd94cf42bc79b6dd85ffc2c4edc12206390ff8c6a64afd55 + languageName: node + linkType: hard + "bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -7293,13 +7289,6 @@ __metadata: languageName: node linkType: hard -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 - languageName: node - linkType: hard - "cli-columns@npm:^4.0.0": version: 4.0.0 resolution: "cli-columns@npm:4.0.0" @@ -8247,13 +8236,20 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0, diff@npm:^5.1.0": +"diff@npm:^5.0.0": version: 5.2.0 resolution: "diff@npm:5.2.0" checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 languageName: node linkType: hard +"diff@npm:^7.0.0": + version: 7.0.0 + resolution: "diff@npm:7.0.0" + checksum: 10c0/251fd15f85ffdf814cfc35a728d526b8d2ad3de338dcbd011ac6e57c461417090766b28995f8ff733135b5fbc3699c392db1d5e27711ac4e00244768cd1d577b + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -10663,13 +10659,6 @@ __metadata: languageName: node linkType: hard -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - "inflation@npm:^2.0.0": version: 2.1.0 resolution: "inflation@npm:2.1.0" @@ -10715,18 +10704,18 @@ __metadata: languageName: node linkType: hard -"init-package-json@npm:^7.0.2": - version: 7.0.2 - resolution: "init-package-json@npm:7.0.2" +"init-package-json@npm:^8.0.0": + version: 8.0.0 + resolution: "init-package-json@npm:8.0.0" dependencies: - "@npmcli/package-json": "npm:^6.0.0" + "@npmcli/package-json": "npm:^6.1.0" npm-package-arg: "npm:^12.0.0" promzard: "npm:^2.0.0" read: "npm:^4.0.0" semver: "npm:^7.3.5" validate-npm-package-license: "npm:^3.0.4" validate-npm-package-name: "npm:^6.0.0" - checksum: 10c0/258860a3a41abd2dcb83727e234dd2f2f56d0b30191e6fa8dd424b83d5127a44330d6e97573cbe8df7582ab76d1b3da4090008b38f06003403988a5e5101fd6b + checksum: 10c0/229e0211a3b4522aa63e0ee1a804ab6f42ec1b1650d75e36800a4ec47a2f6dd8c66ca319671297538fafc49b07a75e0622f03b2ab819f3b3beeb91a3a8db3e7e languageName: node linkType: hard @@ -12185,94 +12174,84 @@ __metadata: languageName: node linkType: hard -"libnpmaccess@npm:^9.0.0": - version: 9.0.0 - resolution: "libnpmaccess@npm:9.0.0" +"libnpmaccess@npm:^10.0.0": + version: 10.0.0 + resolution: "libnpmaccess@npm:10.0.0" dependencies: npm-package-arg: "npm:^12.0.0" npm-registry-fetch: "npm:^18.0.1" - checksum: 10c0/5e86cb1b5ead4baa777ee2dbafe27e63c571056d547c83c8e0cd18a173712d9671728e26e405f74c14d10ca592bfd4f2c27c0a5f9882ab9ab3983c5b3d5e249a + checksum: 10c0/7e22c532967abc2f685870034740ba63c08aef2e6807fc9bece8210080447c576ef206c0b497cca083880dfd6e600e48b6b67cde38cafb62fef82446963ad875 languageName: node linkType: hard -"libnpmdiff@npm:^7.0.0": - version: 7.0.0 - resolution: "libnpmdiff@npm:7.0.0" +"libnpmdiff@npm:^8.0.0": + version: 8.0.0 + resolution: "libnpmdiff@npm:8.0.0" dependencies: - "@npmcli/arborist": "npm:^8.0.0" + "@npmcli/arborist": "npm:^9.0.0" "@npmcli/installed-package-contents": "npm:^3.0.0" - binary-extensions: "npm:^2.3.0" - diff: "npm:^5.1.0" + binary-extensions: "npm:^3.0.0" + diff: "npm:^7.0.0" minimatch: "npm:^9.0.4" npm-package-arg: "npm:^12.0.0" - pacote: "npm:^19.0.0" + pacote: "npm:^21.0.0" tar: "npm:^6.2.1" - checksum: 10c0/9404a613bac00d7023644cb6acfbf8811034692c258c5b795be6c0eb83ef3e490c3d4bcd0fdee10d1986a0a688d263dfc1cb630cc89da228eae268cff7f30be3 + checksum: 10c0/eabd8241618a34eb816c88f6c25ef2cfbe2b8ef604261ddb91a8340e1f1d7d7afb2bd56ad575c464a6869565c107dd759f0028a4c506978b208e12e00279caaf languageName: node linkType: hard -"libnpmexec@npm:^9.0.0": - version: 9.0.0 - resolution: "libnpmexec@npm:9.0.0" +"libnpmexec@npm:^10.0.0": + version: 10.0.0 + resolution: "libnpmexec@npm:10.0.0" dependencies: - "@npmcli/arborist": "npm:^8.0.0" + "@npmcli/arborist": "npm:^9.0.0" "@npmcli/run-script": "npm:^9.0.1" ci-info: "npm:^4.0.0" npm-package-arg: "npm:^12.0.0" - pacote: "npm:^19.0.0" + pacote: "npm:^21.0.0" proc-log: "npm:^5.0.0" read: "npm:^4.0.0" read-package-json-fast: "npm:^4.0.0" semver: "npm:^7.3.7" - walk-up-path: "npm:^3.0.1" - checksum: 10c0/79eb783d2bf3995c3b4436ab05e2a82f11f84ca0f049613e299da51fd6ff10e1b33ce2497f1e0fcb6e9bf27c51806cdf8cb78f278a36726230529c58ebfdf636 + walk-up-path: "npm:^4.0.0" + checksum: 10c0/812cb8703541899f3bd9a96344e46c8d76ec2c05e411c797d67ede0a7e2d0f82a74e35903dae31eafed0bd4e34f4d94a7dc9e226e897cec4b86c231611ea6764 languageName: node linkType: hard -"libnpmfund@npm:^6.0.0": - version: 6.0.0 - resolution: "libnpmfund@npm:6.0.0" - dependencies: - "@npmcli/arborist": "npm:^8.0.0" - checksum: 10c0/bf0a66c131c7a474c98f7545d45bf9adb8338cade923c1a7a5fc062b32f38956d9e720ac80201fbd0e6913b6b2d8176ae161205dcfb6ea8d6f3740bcb316fa3a - languageName: node - linkType: hard - -"libnpmhook@npm:^11.0.0": - version: 11.0.0 - resolution: "libnpmhook@npm:11.0.0" +"libnpmfund@npm:^7.0.0": + version: 7.0.0 + resolution: "libnpmfund@npm:7.0.0" dependencies: - aproba: "npm:^2.0.0" - npm-registry-fetch: "npm:^18.0.1" - checksum: 10c0/edac74fb7f006f9305b9f8ac0dfc22bca5e404ba0bb65c9f2ef21c8b905ec1fc5ca90471b551fcfba1d216f08fc470804cd21b87f5405b75927df5a975ab0cae + "@npmcli/arborist": "npm:^9.0.0" + checksum: 10c0/b76d6a2259f93d906edd5bb3ffaadd0b3bddf654e88c6634b32d5fc094b86e301ac5f2d9fbf089356b7a8b912f10d9e07d99a829c0b8880f1fbc3ab714b43f3d languageName: node linkType: hard -"libnpmorg@npm:^7.0.0": - version: 7.0.0 - resolution: "libnpmorg@npm:7.0.0" +"libnpmorg@npm:^8.0.0": + version: 8.0.0 + resolution: "libnpmorg@npm:8.0.0" dependencies: aproba: "npm:^2.0.0" npm-registry-fetch: "npm:^18.0.1" - checksum: 10c0/7fbb0ae997de4920517658df20b633e32f91797d0b287fc9a3e361891fc8e31afbb3d3851dafd44e57067f497056e5ff2a7a6f805b353f2e8de5ecd1692e6ad6 + checksum: 10c0/d1f70c3739b83c158d716f1eb112cca3089671ebd13da7efe66653b4a48e74076c51a059b9192e66aa6c33ff2695a9b2b0bb45334c45402fd848153c6172ce34 languageName: node linkType: hard -"libnpmpack@npm:^8.0.0": - version: 8.0.0 - resolution: "libnpmpack@npm:8.0.0" +"libnpmpack@npm:^9.0.0": + version: 9.0.0 + resolution: "libnpmpack@npm:9.0.0" dependencies: - "@npmcli/arborist": "npm:^8.0.0" + "@npmcli/arborist": "npm:^9.0.0" "@npmcli/run-script": "npm:^9.0.1" npm-package-arg: "npm:^12.0.0" - pacote: "npm:^19.0.0" - checksum: 10c0/c8232f22b7789c3f06dd91eee82fc342e4f14fa737aa31f2cff33ea9f0a5c797fd1947317d8f7619acdcdfdc6949f2c02433be3b9e11978d86cb59f3b40d3ca1 + pacote: "npm:^21.0.0" + checksum: 10c0/b35a14019b94614628fbe0d7ce55a13e9bffe0670e121deaeb055abefa67b2e143e4a594179a16cbe789e47616c141c24363632cb8112ebb12e048d7dfd48f60 languageName: node linkType: hard -"libnpmpublish@npm:^10.0.1": - version: 10.0.1 - resolution: "libnpmpublish@npm:10.0.1" +"libnpmpublish@npm:^11.0.0": + version: 11.0.0 + resolution: "libnpmpublish@npm:11.0.0" dependencies: ci-info: "npm:^4.0.0" normalize-package-data: "npm:^7.0.0" @@ -12282,39 +12261,39 @@ __metadata: semver: "npm:^7.3.7" sigstore: "npm:^3.0.0" ssri: "npm:^12.0.0" - checksum: 10c0/9420382ab7a80541274d6bba77fc1d96b195c00141ca5ea4cf198814b88e6bda4463a05c5a7e95a9956ff5890fe7dba349518ca06538d31f01bf677c5703247e + checksum: 10c0/a7859debd9963980c85829148a1008c1cdd48793fbaf243fb926cc83b055e2a6d112a59fb53443bf5afb52c8668d502ebb4e765a5d29ae232d84e261cd90e228 languageName: node linkType: hard -"libnpmsearch@npm:^8.0.0": - version: 8.0.0 - resolution: "libnpmsearch@npm:8.0.0" +"libnpmsearch@npm:^9.0.0": + version: 9.0.0 + resolution: "libnpmsearch@npm:9.0.0" dependencies: npm-registry-fetch: "npm:^18.0.1" - checksum: 10c0/96063ad6676ed85724b7b246da630c4d59cc7e9c0cc20431cf5b06d40060bb409c04b96070711825fadcc5d6c2abaccb1048268d7262d6c4db2be3a3f2a9404d + checksum: 10c0/5688a5ded0c11903a7673f7fd9495f036e5ba5f4d18f2b5a1a8dc4f5443453d068d4205bfee6cb3f158f4f9061d9b9890fee31f4cecefa2de2d9a01761128137 languageName: node linkType: hard -"libnpmteam@npm:^7.0.0": - version: 7.0.0 - resolution: "libnpmteam@npm:7.0.0" +"libnpmteam@npm:^8.0.0": + version: 8.0.0 + resolution: "libnpmteam@npm:8.0.0" dependencies: aproba: "npm:^2.0.0" npm-registry-fetch: "npm:^18.0.1" - checksum: 10c0/06872f449d6fd1f90c3507bd0654d8102b3820dd8a0882d20a01ad62a3b4f3f165e57f4d833f9a7454bb1ec884c2c7b722490d86a997804efab9697e9ae8cc0e + checksum: 10c0/2eca788c25b9bf9fc96b6f459412b6db1938a52777ba7df429437465d2ce9ee7c7067579e39c28166072959250491a96b8bcd5f91e39a81da375e9303928a7d8 languageName: node linkType: hard -"libnpmversion@npm:^7.0.0": - version: 7.0.0 - resolution: "libnpmversion@npm:7.0.0" +"libnpmversion@npm:^8.0.0": + version: 8.0.0 + resolution: "libnpmversion@npm:8.0.0" dependencies: "@npmcli/git": "npm:^6.0.1" "@npmcli/run-script": "npm:^9.0.1" json-parse-even-better-errors: "npm:^4.0.0" proc-log: "npm:^5.0.0" semver: "npm:^7.3.7" - checksum: 10c0/60d5543aa7fda90b11a10aeedf13482df242bb6ebff70c9eec4d26dcefb5c62cb9dd3fcfdd997b1aba84aa31d117a22b7f24633b75cbe63aa9cc4c519cab2c77 + checksum: 10c0/fa7902dff89cf32f8421a90844b54c9af98911130923271698ba6e374ce86ad38b2885d8fb6a5e8e21eb2f16291d57148fdb1268c5291c12dedcd786d9d6791c languageName: node linkType: hard @@ -13481,7 +13460,7 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:12.0.1": +"npm-package-arg@npm:12.0.1, npm-package-arg@npm:^12.0.1": version: 12.0.1 resolution: "npm-package-arg@npm:12.0.1" dependencies: @@ -13505,6 +13484,15 @@ __metadata: languageName: node linkType: hard +"npm-packlist@npm:^10.0.0": + version: 10.0.0 + resolution: "npm-packlist@npm:10.0.0" + dependencies: + ignore-walk: "npm:^7.0.0" + checksum: 10c0/be8cb82c4f9b6fdfba2e3379c538949d3ea7aeb303436db013aaccd8ad1ff49d9f894d7fa4684f9d3016b7944dcc3f0bfc8c3d10c535fa7cd29314a8aad4b80f + languageName: node + linkType: hard + "npm-packlist@npm:^9.0.0": version: 9.0.0 resolution: "npm-packlist@npm:9.0.0" @@ -13568,13 +13556,13 @@ __metadata: languageName: node linkType: hard -"npm@npm:^10.8.1": - version: 10.9.2 - resolution: "npm@npm:10.9.2" +"npm@npm:^11.0.0": + version: 11.0.0 + resolution: "npm@npm:11.0.0" dependencies: "@isaacs/string-locale-compare": "npm:^1.1.0" - "@npmcli/arborist": "npm:^8.0.0" - "@npmcli/config": "npm:^9.0.0" + "@npmcli/arborist": "npm:^9.0.0" + "@npmcli/config": "npm:^10.0.0" "@npmcli/fs": "npm:^4.0.0" "@npmcli/map-workspaces": "npm:^4.0.2" "@npmcli/package-json": "npm:^6.1.0" @@ -13594,20 +13582,19 @@ __metadata: graceful-fs: "npm:^4.2.11" hosted-git-info: "npm:^8.0.2" ini: "npm:^5.0.0" - init-package-json: "npm:^7.0.2" + init-package-json: "npm:^8.0.0" is-cidr: "npm:^5.1.0" json-parse-even-better-errors: "npm:^4.0.0" - libnpmaccess: "npm:^9.0.0" - libnpmdiff: "npm:^7.0.0" - libnpmexec: "npm:^9.0.0" - libnpmfund: "npm:^6.0.0" - libnpmhook: "npm:^11.0.0" - libnpmorg: "npm:^7.0.0" - libnpmpack: "npm:^8.0.0" - libnpmpublish: "npm:^10.0.1" - libnpmsearch: "npm:^8.0.0" - libnpmteam: "npm:^7.0.0" - libnpmversion: "npm:^7.0.0" + libnpmaccess: "npm:^10.0.0" + libnpmdiff: "npm:^8.0.0" + libnpmexec: "npm:^10.0.0" + libnpmfund: "npm:^7.0.0" + libnpmorg: "npm:^8.0.0" + libnpmpack: "npm:^9.0.0" + libnpmpublish: "npm:^11.0.0" + libnpmsearch: "npm:^9.0.0" + libnpmteam: "npm:^8.0.0" + libnpmversion: "npm:^8.0.0" make-fetch-happen: "npm:^14.0.3" minimatch: "npm:^9.0.5" minipass: "npm:^7.1.1" @@ -13618,13 +13605,13 @@ __metadata: normalize-package-data: "npm:^7.0.0" npm-audit-report: "npm:^6.0.0" npm-install-checks: "npm:^7.1.1" - npm-package-arg: "npm:^12.0.0" + npm-package-arg: "npm:^12.0.1" npm-pick-manifest: "npm:^10.0.0" npm-profile: "npm:^11.0.1" npm-registry-fetch: "npm:^18.0.2" npm-user-validate: "npm:^3.0.0" - p-map: "npm:^4.0.0" - pacote: "npm:^19.0.1" + p-map: "npm:^7.0.3" + pacote: "npm:^21.0.0" parse-conflict-json: "npm:^4.0.0" proc-log: "npm:^5.0.0" qrcode-terminal: "npm:^0.12.0" @@ -13639,11 +13626,10 @@ __metadata: treeverse: "npm:^3.0.0" validate-npm-package-name: "npm:^6.0.0" which: "npm:^5.0.0" - write-file-atomic: "npm:^6.0.0" bin: npm: bin/npm-cli.js npx: bin/npx-cli.js - checksum: 10c0/b6cc861a857a0a28ee91a9f10d42d37043b32712656d7f5d490cf3a60755606cfbd3c0e14ff3e0e3b90eed122a8c1fc7e5abc974b6e5db25cafc37d52d2cea57 + checksum: 10c0/9093e75bd04989ddcac2be07078f09d02dd15dedf389d404a827544cc111f0fb8852c8422ddc4973a6520733c9c3dee823fd65fdd95fafc3ac78db9b181d59e7 languageName: node linkType: hard @@ -13967,16 +13953,7 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 - languageName: node - linkType: hard - -"p-map@npm:^7.0.2": +"p-map@npm:^7.0.2, p-map@npm:^7.0.3": version: 7.0.3 resolution: "p-map@npm:7.0.3" checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c @@ -14053,7 +14030,7 @@ __metadata: languageName: node linkType: hard -"pacote@npm:20.0.0, pacote@npm:^20.0.0": +"pacote@npm:20.0.0": version: 20.0.0 resolution: "pacote@npm:20.0.0" dependencies: @@ -14080,9 +14057,9 @@ __metadata: languageName: node linkType: hard -"pacote@npm:^19.0.0, pacote@npm:^19.0.1": - version: 19.0.1 - resolution: "pacote@npm:19.0.1" +"pacote@npm:^21.0.0": + version: 21.0.0 + resolution: "pacote@npm:21.0.0" dependencies: "@npmcli/git": "npm:^6.0.0" "@npmcli/installed-package-contents": "npm:^3.0.0" @@ -14093,7 +14070,7 @@ __metadata: fs-minipass: "npm:^3.0.0" minipass: "npm:^7.0.2" npm-package-arg: "npm:^12.0.0" - npm-packlist: "npm:^9.0.0" + npm-packlist: "npm:^10.0.0" npm-pick-manifest: "npm:^10.0.0" npm-registry-fetch: "npm:^18.0.0" proc-log: "npm:^5.0.0" @@ -14103,7 +14080,7 @@ __metadata: tar: "npm:^6.1.11" bin: pacote: bin/index.js - checksum: 10c0/01a1fe755ec7333904c36cd6058e4fcdcfa2869799b929a4a57eb3ac3ca87023825c76aa9e6337904f08f760bff790b592c018357d331acc4c26d2cc273bbc51 + checksum: 10c0/406eabb2185f87526f07b2b7540a96c91f07c8782f9d1651ef022844f021922ee1507161c43dd16616ab3f15a2d13a1bfe217bfd79731020c725373c4e713022 languageName: node linkType: hard @@ -17976,10 +17953,10 @@ __metadata: languageName: node linkType: hard -"walk-up-path@npm:^3.0.1": - version: 3.0.1 - resolution: "walk-up-path@npm:3.0.1" - checksum: 10c0/3184738e0cf33698dd58b0ee4418285b9c811e58698f52c1f025435a85c25cbc5a63fee599f1a79cb29ca7ef09a44ec9417b16bfd906b1a37c305f7aa20ee5bc +"walk-up-path@npm:^4.0.0": + version: 4.0.0 + resolution: "walk-up-path@npm:4.0.0" + checksum: 10c0/fabe344f91387d1d41df230af962ef18bf703dd4178006d55cd6412caacd187b54440002d4d53a982d4f7f0455567dcffb6d3884533c8b2268928eca3ebd8a19 languageName: node linkType: hard From 2a12f87d3287c1bd9e0b534a3a3a96888847f822 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 17:36:31 +0000 Subject: [PATCH 0154/2162] ci: restore `pnpm-lock.yaml` that was updated by renovate Frce this fill to be generated by the tooling --- renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 511c791ade49..c1436d6c68a8 100644 --- a/renovate.json +++ b/renovate.json @@ -10,7 +10,7 @@ "timezone": "America/Tijuana", "postUpgradeTasks": { "commands": [ - "git restore .yarn/releases/yarn-4.5.0.cjs", + "git restore .yarn/releases/yarn-4.5.0.cjs pnpm-lock.yaml", "yarn install --immutable", "yarn bazel run @npm2//:sync || true" ], From 60c79c06493fc7c87ecca23418a87ff8ca3bb2e4 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 17 Dec 2024 18:00:36 +0000 Subject: [PATCH 0155/2162] build: lock file maintenance --- .../npm_translate_lock_MzA5NzUwNzMx | 4 +- pnpm-lock.yaml | 992 ++++++++------ yarn.lock | 1149 ++++++++--------- 3 files changed, 1131 insertions(+), 1014 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index a3d6f350bb60..38e438aa39b3 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -3,6 +3,6 @@ # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 package.json=998127843 -pnpm-lock.yaml=368829012 +pnpm-lock.yaml=-686671543 pnpm-workspace.yaml=1711114604 -yarn.lock=-832398723 +yarn.lock=1099635317 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e159788a1c2f..80be17089d5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 19.1.0-next.3(@angular/core@19.1.0-next.3) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9 - version: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800 version: github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -120,10 +120,10 @@ importers: version: 0.6.3 '@inquirer/confirm': specifier: 5.1.0 - version: 5.1.0(@types/node@18.19.67) + version: 5.1.0(@types/node@18.19.68) '@inquirer/prompts': specifier: 7.2.0 - version: 7.2.0(@types/node@18.19.67) + version: 7.2.0(@types/node@18.19.68) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 version: 2.0.18(@inquirer/prompts@7.2.0) @@ -132,13 +132,13 @@ importers: version: 5.1.1(rollup@4.28.1) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.1(rollup@4.28.1) + version: 28.0.2(rollup@4.28.1) '@rollup/plugin-node-resolve': specifier: ^13.0.5 version: 13.3.0(rollup@4.28.1) '@stylistic/eslint-plugin': specifier: ^2.8.0 - version: 2.12.0(eslint@8.57.0)(typescript@5.7.2) + version: 2.12.1(eslint@8.57.0)(typescript@5.7.2) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -171,7 +171,7 @@ importers: version: 4.17.13 '@types/node': specifier: ^18.13.0 - version: 18.19.67 + version: 18.19.68 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -243,7 +243,7 @@ importers: version: 3.0.3(debug@4.4.0) browserslist: specifier: ^4.21.5 - version: 4.24.2 + version: 4.24.3 buffer: specifier: 6.0.3 version: 6.0.3 @@ -423,7 +423,7 @@ importers: version: 3.0.1 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@18.19.67)(rollup@4.28.1) + version: 0.6.3(@types/node@18.19.68)(rollup@4.28.1) rxjs: specifier: 7.8.1 version: 7.8.1 @@ -462,7 +462,7 @@ importers: version: 1.2.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@18.19.67)(typescript@5.7.2) + version: 10.9.2(@types/node@18.19.68)(typescript@5.7.2) tslib: specifier: 2.8.1 version: 2.8.1 @@ -483,7 +483,7 @@ importers: version: 10.2.2 vite: specifier: 6.0.3 - version: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + version: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -523,7 +523,7 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 dev: true @@ -575,7 +575,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): resolution: {integrity: sha512-rLzY+2AxkNb82TSRp7DaZH/y0/ZdUV3g0OwJl7ajXvyIH0oJgq5mtNAO4VUreU+MR6h3tGO+XJRg6W0OUM9rzw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -616,10 +616,10 @@ packages: '@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/core@7.26.0) - '@inquirer/confirm': 5.1.0(@types/node@18.19.67) + '@inquirer/confirm': 5.1.0(@types/node@18.19.68) '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.3) beasties: 0.2.0 - browserslist: 4.24.2 + browserslist: 4.24.3 esbuild: 0.24.0 fast-glob: 3.3.2 https-proxy-agent: 7.0.6(supports-color@9.4.0) @@ -636,7 +636,7 @@ packages: sass: 1.82.0 semver: 7.6.3 typescript: 5.7.2 - vite: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: lmdb: 3.2.0 @@ -692,7 +692,7 @@ packages: '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) '@babel/core': 7.26.0 '@jridgewell/sourcemap-codec': 1.5.0 - chokidar: 4.0.1 + chokidar: 4.0.2 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 semver: 7.6.3 @@ -919,9 +919,9 @@ packages: dependencies: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 + jsesc: 3.1.0 dev: true /@babel/helper-annotate-as-pure@7.25.9: @@ -937,7 +937,7 @@ packages: dependencies: '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 + browserslist: 4.24.3 lru-cache: 5.1.1 semver: 6.3.1 dev: true @@ -982,7 +982,7 @@ packages: '@babel/helper-plugin-utils': 7.25.9 debug: 4.4.0(supports-color@9.4.0) lodash.debounce: 4.0.8 - resolve: 1.22.8 + resolve: 1.22.9 transitivePeerDependencies: - supports-color dev: true @@ -2476,37 +2476,37 @@ packages: deprecated: Use @eslint/object-schema instead dev: true - /@inquirer/checkbox@4.0.3(@types/node@18.19.67): + /@inquirer/checkbox@4.0.3(@types/node@18.19.68): resolution: {integrity: sha512-CEt9B4e8zFOGtc/LYeQx5m8nfqQeG/4oNNv0PUvXGG0mys+wR/WbJ3B4KfSQ4Fcr3AQfpiuFOi3fVvmPfvNbxw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.68) '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/confirm@5.1.0(@types/node@18.19.67): + /@inquirer/confirm@5.1.0(@types/node@18.19.68): resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 dev: true - /@inquirer/core@10.1.1(@types/node@18.19.67): + /@inquirer/core@10.1.1(@types/node@18.19.68): resolution: {integrity: sha512-rmZVXy9iZvO3ZStEe/ayuuwIJ23LSF13aPMlLMTQARX6lGUBDHGV8UB5i9MRrfy0+mZwt5/9bdy8llszSD3NQA==} engines: {node: '>=18'} dependencies: '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.67) + '@inquirer/type': 3.0.1(@types/node@18.19.68) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2518,27 +2518,27 @@ packages: - '@types/node' dev: true - /@inquirer/editor@4.2.0(@types/node@18.19.67): + /@inquirer/editor@4.2.0(@types/node@18.19.68): resolution: {integrity: sha512-Z3LeGsD3WlItDqLxTPciZDbGtm0wrz7iJGS/uUxSiQxef33ZrBq7LhsXg30P7xrWz1kZX4iGzxxj5SKZmJ8W+w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 external-editor: 3.1.0 dev: true - /@inquirer/expand@4.0.3(@types/node@18.19.67): + /@inquirer/expand@4.0.3(@types/node@18.19.68): resolution: {integrity: sha512-MDszqW4HYBpVMmAoy/FA9laLrgo899UAga0itEjsYrBthKieDZNc0e16gdn7N3cQ0DSf/6zsTBZMuDYDQU4ktg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 yoctocolors-cjs: 2.1.2 dev: true @@ -2547,94 +2547,94 @@ packages: engines: {node: '>=18'} dev: true - /@inquirer/input@4.1.0(@types/node@18.19.67): + /@inquirer/input@4.1.0(@types/node@18.19.68): resolution: {integrity: sha512-16B8A9hY741yGXzd8UJ9R8su/fuuyO2e+idd7oVLYjP23wKJ6ILRIIHcnXe8/6AoYgwRS2zp4PNsW/u/iZ24yg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 dev: true - /@inquirer/number@3.0.3(@types/node@18.19.67): + /@inquirer/number@3.0.3(@types/node@18.19.68): resolution: {integrity: sha512-HA/W4YV+5deKCehIutfGBzNxWH1nhvUC67O4fC9ufSijn72yrYnRmzvC61dwFvlXIG1fQaYWi+cqNE9PaB9n6Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 dev: true - /@inquirer/password@4.0.3(@types/node@18.19.67): + /@inquirer/password@4.0.3(@types/node@18.19.68): resolution: {integrity: sha512-3qWjk6hS0iabG9xx0U1plwQLDBc/HA/hWzLFFatADpR6XfE62LqPr9GpFXBkLU0KQUaIXZ996bNG+2yUvocH8w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 ansi-escapes: 4.3.2 dev: true - /@inquirer/prompts@7.2.0(@types/node@18.19.67): + /@inquirer/prompts@7.2.0(@types/node@18.19.68): resolution: {integrity: sha512-ZXYZ5oGVrb+hCzcglPeVerJ5SFwennmDOPfXq1WyeZIrPGySLbl4W6GaSsBFvu3WII36AOK5yB8RMIEEkBjf8w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/checkbox': 4.0.3(@types/node@18.19.67) - '@inquirer/confirm': 5.1.0(@types/node@18.19.67) - '@inquirer/editor': 4.2.0(@types/node@18.19.67) - '@inquirer/expand': 4.0.3(@types/node@18.19.67) - '@inquirer/input': 4.1.0(@types/node@18.19.67) - '@inquirer/number': 3.0.3(@types/node@18.19.67) - '@inquirer/password': 4.0.3(@types/node@18.19.67) - '@inquirer/rawlist': 4.0.3(@types/node@18.19.67) - '@inquirer/search': 3.0.3(@types/node@18.19.67) - '@inquirer/select': 4.0.3(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/checkbox': 4.0.3(@types/node@18.19.68) + '@inquirer/confirm': 5.1.0(@types/node@18.19.68) + '@inquirer/editor': 4.2.0(@types/node@18.19.68) + '@inquirer/expand': 4.0.3(@types/node@18.19.68) + '@inquirer/input': 4.1.0(@types/node@18.19.68) + '@inquirer/number': 3.0.3(@types/node@18.19.68) + '@inquirer/password': 4.0.3(@types/node@18.19.68) + '@inquirer/rawlist': 4.0.3(@types/node@18.19.68) + '@inquirer/search': 3.0.3(@types/node@18.19.68) + '@inquirer/select': 4.0.3(@types/node@18.19.68) + '@types/node': 18.19.68 dev: true - /@inquirer/rawlist@4.0.3(@types/node@18.19.67): + /@inquirer/rawlist@4.0.3(@types/node@18.19.68): resolution: {integrity: sha512-5MhinSzfmOiZlRoPezfbJdfVCZikZs38ja3IOoWe7H1dxL0l3Z2jAUgbBldeyhhOkELdGvPlBfQaNbeLslib1w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/core': 10.1.1(@types/node@18.19.68) + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/search@3.0.3(@types/node@18.19.67): + /@inquirer/search@3.0.3(@types/node@18.19.68): resolution: {integrity: sha512-mQTCbdNolTGvGGVCJSI6afDwiSGTV+fMLPEIMDJgIV6L/s3+RYRpxt6t0DYnqMQmemnZ/Zq0vTIRwoHT1RgcTg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.68) '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/select@4.0.3(@types/node@18.19.67): + /@inquirer/select@4.0.3(@types/node@18.19.68): resolution: {integrity: sha512-OZfKDtDE8+J54JYAFTUGZwvKNfC7W/gFCjDkcsO7HnTH/wljsZo9y/FJquOxMy++DY0+9l9o/MOZ8s5s1j5wmw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.67) + '@inquirer/core': 10.1.1(@types/node@18.19.68) '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.67) - '@types/node': 18.19.67 + '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@types/node': 18.19.68 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 dev: true @@ -2646,13 +2646,13 @@ packages: mute-stream: 1.0.0 dev: true - /@inquirer/type@3.0.1(@types/node@18.19.67): + /@inquirer/type@3.0.1(@types/node@18.19.68): resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 dev: true /@isaacs/cliui@8.0.2: @@ -2679,8 +2679,8 @@ packages: engines: {node: '>=8'} dev: true - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + /@jridgewell/gen-mapping@0.3.8: + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 @@ -2701,7 +2701,7 @@ packages: /@jridgewell/source-map@0.3.6: resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 dev: true @@ -2768,7 +2768,7 @@ packages: peerDependencies: '@inquirer/prompts': '>= 3 < 8' dependencies: - '@inquirer/prompts': 7.2.0(@types/node@18.19.67) + '@inquirer/prompts': 7.2.0(@types/node@18.19.68) '@inquirer/type': 1.5.5 dev: true @@ -2814,30 +2814,61 @@ packages: dev: true optional: true - /@microsoft/api-extractor-model@7.30.0(@types/node@18.19.67): + /@microsoft/api-extractor-model@7.30.0(@types/node@18.19.68): resolution: {integrity: sha512-26/LJZBrsWDKAkOWRiQbdVgcfd1F3nyJnAiJzsAgpouPk7LtOIj7PK9aJtBaw/pUXrkotEg27RrT+Jm/q0bbug==} dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.0(@types/node@18.19.67) + '@rushstack/node-core-library': 5.10.0(@types/node@18.19.68) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.48.0(@types/node@18.19.67): + /@microsoft/api-extractor-model@7.30.1(@types/node@18.19.68): + resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.1(@types/node@18.19.68) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.48.0(@types/node@18.19.68): resolution: {integrity: sha512-FMFgPjoilMUWeZXqYRlJ3gCVRhB7WU/HN88n8OLqEsmsG4zBdX/KQdtJfhq95LQTQ++zfu0Em1LLb73NqRCLYQ==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.30.0(@types/node@18.19.67) + '@microsoft/api-extractor-model': 7.30.0(@types/node@18.19.68) + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.0(@types/node@18.19.68) + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.3(@types/node@18.19.68) + '@rushstack/ts-command-line': 4.23.1(@types/node@18.19.68) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.9 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.7.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.48.1(@types/node@18.19.68): + resolution: {integrity: sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.30.1(@types/node@18.19.68) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.0(@types/node@18.19.67) + '@rushstack/node-core-library': 5.10.1(@types/node@18.19.68) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.3(@types/node@18.19.67) - '@rushstack/ts-command-line': 4.23.1(@types/node@18.19.67) + '@rushstack/terminal': 0.14.4(@types/node@18.19.68) + '@rushstack/ts-command-line': 4.23.2(@types/node@18.19.68) lodash: 4.17.21 minimatch: 3.0.8 - resolve: 1.22.8 + resolve: 1.22.9 semver: 7.5.4 source-map: 0.6.1 typescript: 5.7.2 @@ -2851,7 +2882,7 @@ packages: '@microsoft/tsdoc': 0.15.1 ajv: 8.12.0 jju: 1.4.0 - resolve: 1.22.8 + resolve: 1.22.9 dev: true /@microsoft/tsdoc@0.15.1: @@ -3463,8 +3494,8 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: true - /@puppeteer/browsers@2.5.0: - resolution: {integrity: sha512-6TQAc/5uRILE6deixJ1CR8rXyTbzXIXNgO1D0Woi9Bqicz2FV5iKP3BHYEg6o4UATCMcbQQ0jbmeaOkn/HQk2w==} + /@puppeteer/browsers@2.6.1: + resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} engines: {node: '>=18'} hasBin: true dependencies: @@ -3492,8 +3523,8 @@ packages: rollup: 4.28.1 dev: true - /@rollup/plugin-commonjs@28.0.1(rollup@4.28.1): - resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} + /@rollup/plugin-commonjs@28.0.2(rollup@4.28.1): + resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -3501,12 +3532,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.15 + magic-string: 0.30.17 picomatch: 4.0.2 rollup: 4.28.1 dev: true @@ -3520,7 +3551,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) rollup: 4.28.1 dev: true @@ -3535,12 +3566,12 @@ packages: deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.9 rollup: 4.28.1 dev: true - /@rollup/plugin-node-resolve@15.3.0(rollup@4.28.1): - resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} + /@rollup/plugin-node-resolve@15.3.1(rollup@4.28.1): + resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -3548,11 +3579,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.9 rollup: 4.28.1 dev: true @@ -3568,8 +3599,8 @@ packages: rollup: 4.28.1 dev: true - /@rollup/pluginutils@5.1.3(rollup@4.28.1): - resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + /@rollup/pluginutils@5.1.4(rollup@4.28.1): + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -3730,7 +3761,7 @@ packages: resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true - /@rushstack/node-core-library@5.10.0(@types/node@18.19.67): + /@rushstack/node-core-library@5.10.0(@types/node@18.19.68): resolution: {integrity: sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==} peerDependencies: '@types/node': '*' @@ -3738,25 +3769,44 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) ajv-formats: 3.0.1(ajv@8.13.0) fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.8 + resolve: 1.22.9 + semver: 7.5.4 + dev: true + + /@rushstack/node-core-library@5.10.1(@types/node@18.19.68): + resolution: {integrity: sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.19.68 + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.9 semver: 7.5.4 dev: true /@rushstack/rig-package@0.5.3: resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} dependencies: - resolve: 1.22.8 + resolve: 1.22.9 strip-json-comments: 3.1.1 dev: true - /@rushstack/terminal@0.14.3(@types/node@18.19.67): + /@rushstack/terminal@0.14.3(@types/node@18.19.68): resolution: {integrity: sha512-csXbZsAdab/v8DbU1sz7WC2aNaKArcdS/FPmXMOXEj/JBBZMvDK0+1b4Qao0kkG0ciB1Qe86/Mb68GjH6/TnMw==} peerDependencies: '@types/node': '*' @@ -3764,15 +3814,39 @@ packages: '@types/node': optional: true dependencies: - '@rushstack/node-core-library': 5.10.0(@types/node@18.19.67) - '@types/node': 18.19.67 + '@rushstack/node-core-library': 5.10.0(@types/node@18.19.68) + '@types/node': 18.19.68 + supports-color: 8.1.1 + dev: true + + /@rushstack/terminal@0.14.4(@types/node@18.19.68): + resolution: {integrity: sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 5.10.1(@types/node@18.19.68) + '@types/node': 18.19.68 supports-color: 8.1.1 dev: true - /@rushstack/ts-command-line@4.23.1(@types/node@18.19.67): + /@rushstack/ts-command-line@4.23.1(@types/node@18.19.68): resolution: {integrity: sha512-40jTmYoiu/xlIpkkRsVfENtBq4CW3R4azbL0Vmda+fMwHWqss6wwf/Cy/UJmMqIzpfYc2OTnjYP1ZLD3CmyeCA==} dependencies: - '@rushstack/terminal': 0.14.3(@types/node@18.19.67) + '@rushstack/terminal': 0.14.3(@types/node@18.19.68) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@rushstack/ts-command-line@4.23.2(@types/node@18.19.68): + resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} + dependencies: + '@rushstack/terminal': 0.14.4(@types/node@18.19.68) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -3839,13 +3913,13 @@ packages: resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: true - /@stylistic/eslint-plugin@2.12.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-IvD2WXbOoSp0zNpyYbjdSyEjZtut78RYfj2WIlbChE7HFuposTK5X1hc5+4AyqYcjLXYdD5oo/sJtqMGFNRb1w==} + /@stylistic/eslint-plugin@2.12.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) eslint: 8.57.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -3897,7 +3971,7 @@ packages: /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/argparse@1.0.38: @@ -3945,20 +4019,20 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/browser-sync@2.29.0: resolution: {integrity: sha512-d2V8FDX/LbDCSm343N2VChzDxvll0h76I8oSigYpdLgPDmcdcR6fywTggKBkUiDM3qAbHOq7NZvepj/HJM5e2g==} dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/serve-static': 1.15.7 chokidar: 3.6.0 dev: true @@ -3970,7 +4044,7 @@ packages: /@types/co-body@6.1.3: resolution: {integrity: sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/qs': 6.9.17 dev: true @@ -3982,13 +4056,13 @@ packages: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 5.0.2 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/content-disposition@0.5.8: @@ -4009,13 +4083,13 @@ packages: '@types/connect': 3.4.38 '@types/express': 5.0.0 '@types/keygrip': 1.0.6 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/debounce@1.2.4: @@ -4025,7 +4099,7 @@ packages: /@types/duplexify@3.6.4: resolution: {integrity: sha512-2eahVPsd+dy3CL6FugAzJcxoraWhUghZGEQJns1kTKfCXWKJ5iG/VkaB05wRVrDKHfOFKqb0X0kXh91eE99RZg==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/eslint-scope@3.7.7: @@ -4053,7 +4127,7 @@ packages: /@types/express-serve-static-core@4.19.6: resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4062,7 +4136,7 @@ packages: /@types/express-serve-static-core@5.0.2: resolution: {integrity: sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4090,13 +4164,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/http-assert@1.5.6: @@ -4110,7 +4184,7 @@ packages: /@types/http-proxy@1.17.15: resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/ini@4.1.1: @@ -4152,7 +4226,7 @@ packages: /@types/karma@6.3.9: resolution: {integrity: sha512-sjE/MHnoAZAQYAKRXAbjTOiBKyGGErEM725bruRcmDdMa2vp1bjWPhApI7/i564PTyHlzc3vIGXLL6TFIpAxFg==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -4178,7 +4252,7 @@ packages: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/less@3.0.7: @@ -4188,7 +4262,7 @@ packages: /@types/loader-utils@2.0.6: resolution: {integrity: sha512-cgu0Xefgq9O5FjFR78jgI6X31aPjDWCaJ6LCfRtlj6BtyVVWiXagysSYlPACwGKAzRwsFLjKXcj4iGfcVt6cLw==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/webpack': 4.41.40 dev: true @@ -4223,21 +4297,21 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/node@10.17.60: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true - /@types/node@18.19.67: - resolution: {integrity: sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==} + /@types/node@18.19.68: + resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} dependencies: undici-types: 5.26.5 dev: true - /@types/node@22.10.1: - resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} + /@types/node@22.10.2: + resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} dependencies: undici-types: 6.20.0 dev: true @@ -4249,7 +4323,7 @@ packages: /@types/npm-registry-fetch@8.0.7: resolution: {integrity: sha512-db9iBh7kDDg4lRT4k4XZ6IiecTEgFCID4qk+VDVPbtzU855q3KZLCn08ATr4H27ntRJVhulQ7GWjl24H42x96w==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/node-fetch': 3.0.2 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -4259,13 +4333,13 @@ packages: /@types/npmlog@7.0.0: resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/pacote@11.1.8: resolution: {integrity: sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/npm-registry-fetch': 8.0.7 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -4286,14 +4360,14 @@ packages: /@types/progress@2.0.7: resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/pumpify@1.4.4: resolution: {integrity: sha512-+cWbQUecD04MQYkjNBhPmcUIP368aloYmqm+ImdMKA8rMpxRNAhZAD6gIj+sAVTF1DliqrT/qUp6aGNi/9U3tw==} dependencies: '@types/duplexify': 3.6.4 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/q@0.0.32: @@ -4312,7 +4386,7 @@ packages: resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} dependencies: '@types/caseless': 0.12.5 - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/tough-cookie': 4.0.5 form-data: 2.5.2 dev: true @@ -4320,7 +4394,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/resolve@1.20.2: @@ -4342,7 +4416,7 @@ packages: /@types/selenium-webdriver@4.1.27: resolution: {integrity: sha512-ALqsj8D7Swb6MnBQuAQ58J3KC3yh6fLGtAmpBmnZX8j+0kmP7NaLt56CuzBw2W2bXPrvHFTgn8iekOQFUKXEQA==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/ws': 8.5.13 dev: true @@ -4354,7 +4428,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/serve-index@1.9.4: @@ -4367,7 +4441,7 @@ packages: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/send': 0.17.4 dev: true @@ -4375,13 +4449,13 @@ packages: resolution: {integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==} dependencies: '@types/glob': 7.2.0 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/source-list-map@0.1.6: @@ -4391,7 +4465,7 @@ packages: /@types/ssri@7.1.5: resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/stack-trace@0.0.33: @@ -4424,13 +4498,13 @@ packages: resolution: {integrity: sha512-SbuSavsPxfOPZwVHBgQUVuzYBe6+8KL7dwiJLXaj5rmv3DxktOMwX5WP1J6UontwUbewjVoc7pCgZvqy6rPn+A==} dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/webpack-sources@3.2.3: resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/source-list-map': 0.1.6 source-map: 0.7.4 dev: true @@ -4438,7 +4512,7 @@ packages: /@types/webpack@4.41.40: resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -4449,13 +4523,13 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/ws@8.5.13: resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true /@types/yargs-parser@21.0.3: @@ -4475,7 +4549,7 @@ packages: /@types/yauzl@2.10.3: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 dev: true optional: true @@ -4529,6 +4603,14 @@ packages: '@typescript-eslint/visitor-keys': 8.18.0 dev: true + /@typescript-eslint/scope-manager@8.18.1: + resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/visitor-keys': 8.18.1 + dev: true + /@typescript-eslint/type-utils@8.18.0(eslint@8.57.0)(typescript@5.7.2): resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4551,6 +4633,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true + /@typescript-eslint/types@8.18.1: + resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2): resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4570,6 +4657,25 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2): + resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: 5.7.2 + dependencies: + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/visitor-keys': 8.18.1 + debug: 4.4.0(supports-color@9.4.0) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@8.18.0(eslint@8.57.0)(typescript@5.7.2): resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4587,6 +4693,23 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.7.2 + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + eslint: 8.57.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/visitor-keys@8.18.0: resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4595,6 +4718,14 @@ packages: eslint-visitor-keys: 4.2.0 dev: true + /@typescript-eslint/visitor-keys@8.18.1: + resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.18.1 + eslint-visitor-keys: 4.2.0 + dev: true + /@ungap/structured-clone@1.2.1: resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} dev: true @@ -4829,7 +4960,7 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true /@web/browser-logs@0.4.0: @@ -4851,7 +4982,7 @@ packages: '@types/koa': 2.15.0 '@types/ws': 7.4.7 '@web/parse5-utils': 2.1.0 - chokidar: 4.0.1 + chokidar: 4.0.2 clone: 2.1.2 es-module-lexer: 1.5.4 get-stream: 6.0.1 @@ -4876,7 +5007,7 @@ packages: resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} dependencies: - '@rollup/plugin-node-resolve': 15.3.0(rollup@4.28.1) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.28.1) '@web/dev-server-core': 0.7.4 nanocolors: 0.2.13 parse5: 6.0.1 @@ -4929,7 +5060,7 @@ packages: '@web/test-runner-coverage-v8': 0.8.0 async-mutex: 0.4.0 chrome-launcher: 0.15.2 - puppeteer-core: 23.10.1 + puppeteer-core: 23.10.4 transitivePeerDependencies: - bufferutil - supports-color @@ -4961,7 +5092,7 @@ packages: '@types/istanbul-reports': 3.0.4 '@web/browser-logs': 0.4.0 '@web/dev-server-core': 0.7.4 - chokidar: 4.0.1 + chokidar: 4.0.2 cli-cursor: 3.1.0 co-body: 6.2.0 convert-source-map: 2.0.0 @@ -5439,7 +5570,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 - is-array-buffer: 3.0.4 + is-array-buffer: 3.0.5 dev: true /array-flatten@1.1.1: @@ -5452,10 +5583,10 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.5 - is-string: 1.1.0 + get-intrinsic: 1.2.6 + is-string: 1.1.1 dev: true /array-union@1.0.2: @@ -5481,44 +5612,43 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + /array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-shim-unscopables: 1.0.2 dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + /array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-shim-unscopables: 1.0.2 dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + /arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-errors: 1.3.0 - get-intrinsic: 1.2.5 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.2.6 + is-array-buffer: 3.0.5 dev: true /arrify@1.0.1: @@ -5606,8 +5736,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001687 + browserslist: 4.24.3 + caniuse-lite: 1.0.30001689 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -5643,7 +5773,7 @@ packages: dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 - schema-utils: 4.2.0 + schema-utils: 4.3.0 webpack: 5.97.1(esbuild@0.24.0) dev: true @@ -5697,7 +5827,7 @@ packages: dependencies: bare-events: 2.5.0 bare-path: 2.1.3 - bare-stream: 2.4.2 + bare-stream: 2.6.1 dev: true optional: true @@ -5713,10 +5843,10 @@ packages: dev: true optional: true - /bare-stream@2.4.2: - resolution: {integrity: sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==} + /bare-stream@2.6.1: + resolution: {integrity: sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==} dependencies: - streamx: 2.21.0 + streamx: 2.21.1 dev: true optional: true @@ -5925,15 +6055,15 @@ packages: pako: 0.2.9 dev: true - /browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + /browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001687 - electron-to-chromium: 1.5.71 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) + caniuse-lite: 1.0.30001689 + electron-to-chromium: 1.5.74 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) dev: true /browserstack@1.6.1: @@ -6051,10 +6181,18 @@ packages: dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 set-function-length: 1.2.2 dev: true + /call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -6070,8 +6208,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001687: - resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} + /caniuse-lite@1.0.30001689: + resolution: {integrity: sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==} dev: true /caseless@0.12.0: @@ -6145,6 +6283,13 @@ packages: readdirp: 4.0.2 dev: true + /chokidar@4.0.2: + resolution: {integrity: sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==} + engines: {node: '>= 14.16.0'} + dependencies: + readdirp: 4.0.2 + dev: true + /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true @@ -6164,7 +6309,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -6484,7 +6629,7 @@ packages: glob-parent: 6.0.2 globby: 14.0.2 normalize-path: 3.0.0 - schema-utils: 4.2.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 webpack: 5.97.1(esbuild@0.24.0) dev: true @@ -6492,7 +6637,7 @@ packages: /core-js-compat@3.39.0: resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 dev: true /core-js@3.37.1: @@ -6575,7 +6720,7 @@ packages: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) - postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.2.0(postcss@8.4.49) postcss-modules-scope: 3.2.1(postcss@8.4.49) postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 @@ -6631,7 +6776,7 @@ packages: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 dev: true /data-view-byte-length@1.0.1: @@ -6640,7 +6785,7 @@ packages: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 dev: true /data-view-byte-offset@1.0.0: @@ -6649,7 +6794,7 @@ packages: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 dev: true /date-format@4.0.14: @@ -6937,7 +7082,7 @@ packages: resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} dependencies: custom-event: 1.0.1 - ent: 2.2.1 + ent: 2.2.2 extend: 3.0.2 void-elements: 2.0.1 dev: true @@ -6969,8 +7114,8 @@ packages: domhandler: 5.0.3 dev: true - /dunder-proto@1.0.0: - resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} + /dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 @@ -7031,8 +7176,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.5.71: - resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} + /electron-to-chromium@1.5.74: + resolution: {integrity: sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==} dev: true /emoji-regex@10.4.0: @@ -7100,7 +7245,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.10.1 + '@types/node': 22.10.2 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -7122,11 +7267,14 @@ packages: tapable: 2.2.1 dev: true - /ent@2.2.1: - resolution: {integrity: sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==} + /ent@2.2.2: + resolution: {integrity: sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==} engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 punycode: 1.4.1 + safe-regex-test: 1.1.0 dev: true /entities@4.5.0: @@ -7172,14 +7320,15 @@ packages: resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} dev: true - /es-abstract@1.23.5: - resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} + /es-abstract@1.23.6: + resolution: {integrity: sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 + call-bound: 1.0.3 data-view-buffer: 1.0.1 data-view-byte-length: 1.0.1 data-view-byte-offset: 1.0.0 @@ -7188,39 +7337,40 @@ packages: es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.3.0 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.5 - get-symbol-description: 1.0.2 + function.prototype.name: 1.1.7 + get-intrinsic: 1.2.6 + get-symbol-description: 1.1.0 globalthis: 1.0.4 gopd: 1.2.0 has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 + is-data-view: 1.0.2 is-negative-zero: 2.0.3 - is-regex: 1.2.0 + is-regex: 1.2.1 is-shared-array-buffer: 1.0.3 - is-string: 1.1.0 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 + is-string: 1.1.1 + is-typed-array: 1.1.14 + is-weakref: 1.1.0 + math-intrinsics: 1.0.0 object-inspect: 1.13.3 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.3 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + safe-array-concat: 1.1.3 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.3 typed-array-length: 1.0.7 - unbox-primitive: 1.0.2 + unbox-primitive: 1.1.0 which-typed-array: 1.1.16 dev: true @@ -7249,7 +7399,7 @@ packages: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 has-tostringtag: 1.0.2 hasown: 2.0.2 dev: true @@ -7265,8 +7415,8 @@ packages: engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.1.0 + is-date-object: 1.1.0 + is-symbol: 1.1.1 dev: true /es6-promise@4.2.8: @@ -7360,8 +7510,8 @@ packages: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.15.1 - resolve: 1.22.8 + is-core-module: 2.16.0 + resolve: 1.22.9 transitivePeerDependencies: - supports-color dev: true @@ -7417,22 +7567,22 @@ packages: '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.15.1 + is-core-module: 2.16.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.0 semver: 6.3.1 - string.prototype.trimend: 1.0.8 + string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -8110,14 +8260,15 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + /function.prototype.name@1.1.7: + resolution: {integrity: sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 dev: true /functions-have-names@1.2.3: @@ -8171,18 +8322,20 @@ packages: engines: {node: '>=18'} dev: true - /get-intrinsic@1.2.5: - resolution: {integrity: sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==} + /get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.0 + dunder-proto: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.0.0 dev: true /get-npm-tarball-url@2.1.0: @@ -8202,13 +8355,13 @@ packages: engines: {node: '>=10'} dev: true - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + /get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 dev: true /get-uri@6.0.4: @@ -8466,7 +8619,7 @@ packages: resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} dependencies: - dunder-proto: 1.0.0 + dunder-proto: 1.0.1 dev: true /has-symbols@1.1.0: @@ -8833,13 +8986,13 @@ packages: p-event: 4.2.0 dev: true - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + /internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 dev: true /interpret@1.4.0: @@ -8870,12 +9023,13 @@ packages: engines: {node: '>= 10'} dev: true - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + /is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 dev: true /is-arrayish@0.2.1: @@ -8903,11 +9057,11 @@ packages: binary-extensions: 2.3.0 dev: true - /is-boolean-object@1.2.0: - resolution: {integrity: sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==} + /is-boolean-object@1.2.1: + resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 dev: true @@ -8923,24 +9077,27 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + /is-core-module@2.16.0: + resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 dev: true - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + /is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + is-typed-array: 1.1.14 dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + /is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 dev: true @@ -8965,11 +9122,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-finalizationregistry@1.1.0: - resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} + /is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 dev: true /is-fullwidth-code-point@3.0.0: @@ -9053,11 +9210,11 @@ packages: lodash.isfinite: 3.3.2 dev: true - /is-number-object@1.1.0: - resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} + /is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 dev: true @@ -9117,11 +9274,11 @@ packages: '@types/estree': 1.0.6 dev: true - /is-regex@1.2.0: - resolution: {integrity: sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==} + /is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -9148,25 +9305,25 @@ packages: engines: {node: '>=8'} dev: true - /is-string@1.1.0: - resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} + /is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 dev: true - /is-symbol@1.1.0: - resolution: {integrity: sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==} + /is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-symbols: 1.1.0 - safe-regex-test: 1.0.3 + safe-regex-test: 1.1.0 dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + /is-typed-array@1.1.14: + resolution: {integrity: sha512-lQUsHzcTb7rH57dajbOuZEuMDXjs9f04ZloER4QOpjpKcaw4f98BRUrs8aiO9Z4G7i7B0Xhgarg6SCgYcYi8Nw==} engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.16 @@ -9190,18 +9347,19 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + /is-weakref@1.1.0: + resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + /is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 dev: true /is-what@3.14.1: @@ -9390,7 +9548,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 22.10.1 + '@types/node': 22.10.2 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -9433,6 +9591,12 @@ packages: hasBin: true dev: true + /jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} dependencies: @@ -10127,6 +10291,12 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -10177,6 +10347,11 @@ packages: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} dev: true + /math-intrinsics@1.0.0: + resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} + engines: {node: '>= 0.4'} + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -10269,7 +10444,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - schema-utils: 4.2.0 + schema-utils: 4.3.0 tapable: 2.2.1 webpack: 5.97.1(esbuild@0.24.0) dev: true @@ -10533,8 +10708,8 @@ packages: '@rollup/wasm-node': 4.28.1 ajv: 8.17.1 ansi-colors: 4.1.3 - browserslist: 4.24.2 - chokidar: 4.0.1 + browserslist: 4.24.3 + chokidar: 4.0.2 commander: 12.1.0 convert-source-map: 2.0.0 dependency-graph: 1.0.0 @@ -10637,8 +10812,8 @@ packages: - supports-color dev: true - /node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + /node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} dev: true /nopt@8.0.0: @@ -10856,7 +11031,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-object-atoms: 1.0.0 dev: true @@ -10866,7 +11041,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 dev: true /object.values@1.2.0: @@ -11457,8 +11632,8 @@ packages: postcss: 8.4.49 dev: true - /postcss-modules-local-by-default@4.1.0(postcss@8.4.49): - resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} + /postcss-modules-local-by-default@4.2.0(postcss@8.4.49): + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -11605,7 +11780,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.10.1 + '@types/node': 22.10.2 long: 5.2.3 dev: true @@ -11725,11 +11900,11 @@ packages: - utf-8-validate dev: true - /puppeteer-core@23.10.1: - resolution: {integrity: sha512-ey6NwixHYEUnhCA/uYi7uQQ4a0CZw4k+MatbHXGl5GEzaiRQziYUxc2HGpdQZ/gnh4KQWAKkocyIg1/dIm5d0g==} + /puppeteer-core@23.10.4: + resolution: {integrity: sha512-pQAY7+IFAndWDkDodsQGguW1/ifV5OMlGXJDspwtK49Asb7poJZ/V5rXJxVSpq57bWrJasjQBZ1X27z1oWVq4Q==} engines: {node: '>=18'} dependencies: - '@puppeteer/browsers': 2.5.0 + '@puppeteer/browsers': 2.6.1 chromium-bidi: 0.8.0(devtools-protocol@0.0.1367902) debug: 4.4.0(supports-color@9.4.0) devtools-protocol: 0.0.1367902 @@ -11784,14 +11959,14 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 dev: true /qs@6.13.1: resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 dev: true /qs@6.5.3: @@ -11910,7 +12085,7 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.8 + resolve: 1.22.9 dev: true /reflect-metadata@0.1.14: @@ -11927,12 +12102,12 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dunder-proto: 1.0.0 - es-abstract: 1.23.5 + dunder-proto: 1.0.1 + es-abstract: 1.23.6 es-errors: 1.3.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 gopd: 1.2.0 - which-builtin-type: 1.2.0 + which-builtin-type: 1.2.1 dev: true /regenerate-unicode-properties@10.2.0: @@ -12068,11 +12243,11 @@ packages: source-map: 0.6.1 dev: true - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + /resolve@1.22.9: + resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==} hasBin: true dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -12166,7 +12341,7 @@ packages: spdx-expression-validate: 2.0.0 dev: true - /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.67)(rollup@4.28.1): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.68)(rollup@4.28.1): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12177,7 +12352,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 3.1.0(rollup@4.28.1) - '@types/node': 18.19.67 + '@types/node': 18.19.68 rollup: 4.28.1 source-map-resolve: 0.6.0 dev: true @@ -12232,12 +12407,13 @@ packages: tslib: 2.8.1 dev: true - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + /safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 has-symbols: 1.1.0 isarray: 2.0.5 dev: true @@ -12250,13 +12426,13 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + /safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-regex: 1.2.0 + is-regex: 1.2.1 dev: true /safe-stable-stringify@2.5.0: @@ -12299,7 +12475,7 @@ packages: engines: {node: '>=14.0.0'} hasBin: true dependencies: - chokidar: 4.0.1 + chokidar: 4.0.2 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: @@ -12311,7 +12487,7 @@ packages: engines: {node: '>=14.0.0'} hasBin: true dependencies: - chokidar: 4.0.1 + chokidar: 4.0.2 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: @@ -12339,9 +12515,9 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + /schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -12523,7 +12699,7 @@ packages: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.6 gopd: 1.2.0 has-property-descriptors: 1.0.2 dev: true @@ -12584,16 +12760,46 @@ packages: rechoir: 0.6.2 dev: true - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + /side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.5 object-inspect: 1.13.3 dev: true + /side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + dev: true + + /side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + dev: true + + /side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + dev: true + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true @@ -12970,12 +13176,12 @@ packages: - supports-color dev: true - /streamx@2.21.0: - resolution: {integrity: sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==} + /streamx@2.21.1: + resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.2.2 + text-decoder: 1.2.3 optionalDependencies: bare-events: 2.5.0 dev: true @@ -13012,20 +13218,25 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + /string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.6 es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + /string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 dev: true @@ -13173,7 +13384,7 @@ packages: dependencies: b4a: 1.6.7 fast-fifo: 1.3.2 - streamx: 2.21.0 + streamx: 2.21.1 dev: true /tar@6.2.1: @@ -13214,8 +13425,8 @@ packages: - supports-color dev: true - /terser-webpack-plugin@5.3.10(esbuild@0.24.0)(webpack@5.97.1): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + /terser-webpack-plugin@5.3.11(esbuild@0.24.0)(webpack@5.97.1): + resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -13233,7 +13444,7 @@ packages: '@jridgewell/trace-mapping': 0.3.25 esbuild: 0.24.0 jest-worker: 27.5.1 - schema-utils: 3.3.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.37.0 webpack: 5.97.1(esbuild@0.24.0) @@ -13259,8 +13470,8 @@ packages: minimatch: 3.1.2 dev: true - /text-decoder@1.2.2: - resolution: {integrity: sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==} + /text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} dependencies: b4a: 1.6.7 dev: true @@ -13396,7 +13607,7 @@ packages: typescript: 5.7.2 dev: true - /ts-node@10.9.2(@types/node@18.19.67)(typescript@5.7.2): + /ts-node@10.9.2(@types/node@18.19.68)(typescript@5.7.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -13415,7 +13626,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.67 + '@types/node': 18.19.68 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -13515,7 +13726,7 @@ packages: dependencies: call-bind: 1.0.8 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.14 dev: true /typed-array-byte-length@1.0.1: @@ -13526,7 +13737,7 @@ packages: for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.14 dev: true /typed-array-byte-offset@1.0.3: @@ -13538,7 +13749,7 @@ packages: for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.14 reflect.getprototypeof: 1.0.8 dev: true @@ -13549,7 +13760,7 @@ packages: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.14 possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.8 dev: true @@ -13599,13 +13810,14 @@ packages: dev: true optional: true - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + /unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-bigints: 1.0.2 has-symbols: 1.1.0 - which-boxed-primitive: 1.1.0 + which-boxed-primitive: 1.1.1 dev: true /unbzip2-stream@1.4.3: @@ -13722,13 +13934,13 @@ packages: engines: {node: '>= 0.8'} dev: true - /update-browserslist-db@1.1.1(browserslist@4.24.2): + /update-browserslist-db@1.1.1(browserslist@4.24.3): resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1 dev: true @@ -13922,7 +14134,7 @@ packages: extsprintf: 1.4.1 dev: true - /vite@6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): + /vite@6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -13962,7 +14174,7 @@ packages: yaml: optional: true dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 esbuild: 0.24.0 less: 4.2.1 postcss: 8.4.49 @@ -13973,7 +14185,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@6.0.3(@types/node@18.19.67)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): + /vite@6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -14013,7 +14225,7 @@ packages: yaml: optional: true dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 esbuild: 0.24.0 less: 4.2.1 postcss: 8.4.49 @@ -14107,7 +14319,7 @@ packages: mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.2.0 + schema-utils: 4.3.0 webpack: 5.97.1(esbuild@0.24.0) dev: true @@ -14144,7 +14356,7 @@ packages: launch-editor: 2.9.1 open: 10.1.0 p-retry: 6.2.1 - schema-utils: 4.2.0 + schema-utils: 4.3.0 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 @@ -14203,7 +14415,7 @@ packages: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.14.0 - browserslist: 4.24.2 + browserslist: 4.24.3 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 @@ -14217,7 +14429,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.24.0)(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(esbuild@0.24.0)(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -14255,32 +14467,32 @@ packages: webidl-conversions: 3.0.1 dev: true - /which-boxed-primitive@1.1.0: - resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} + /which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.0 - is-number-object: 1.1.0 - is-string: 1.1.0 - is-symbol: 1.1.0 + is-boolean-object: 1.2.1 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 dev: true - /which-builtin-type@1.2.0: - resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} + /which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - function.prototype.name: 1.1.6 + call-bound: 1.0.3 + function.prototype.name: 1.1.7 has-tostringtag: 1.0.2 is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.1.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 is-generator-function: 1.0.10 - is-regex: 1.2.0 - is-weakref: 1.0.2 + is-regex: 1.2.1 + is-weakref: 1.1.0 isarray: 2.0.5 - which-boxed-primitive: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 which-typed-array: 1.1.16 dev: true @@ -14292,7 +14504,7 @@ packages: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 + is-weakset: 2.0.4 dev: true /which-module@2.0.1: @@ -14613,7 +14825,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.1)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.67)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/b788089a8335af49adbbb4f32d238af7f0f437d9} id: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9 name: '@angular/bazel' @@ -14637,12 +14849,12 @@ packages: '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 - '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) - '@rollup/plugin-commonjs': 28.0.1(rollup@4.28.1) + '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.28.1) '@rollup/plugin-node-resolve': 13.3.0(rollup@4.28.1) - magic-string: 0.30.15 + magic-string: 0.30.17 rollup: 4.28.1 - rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.67)(rollup@4.28.1) + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.68)(rollup@4.28.1) terser: 5.37.0 tslib: 2.8.1 typescript: 5.7.2 @@ -14657,7 +14869,7 @@ packages: version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.67)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -14667,10 +14879,10 @@ packages: '@bazel/runfiles': 5.8.1 '@bazel/terser': 5.8.1(terser@5.37.0) '@bazel/typescript': 5.8.1(typescript@5.7.2) - '@microsoft/api-extractor': 7.48.0(@types/node@18.19.67) + '@microsoft/api-extractor': 7.48.0(@types/node@18.19.68) '@types/browser-sync': 2.29.0 '@types/minimatch': 5.1.2 - '@types/node': 18.19.67 + '@types/node': 18.19.68 '@types/selenium-webdriver': 4.1.27 '@types/send': 0.17.4 '@types/tmp': 0.2.6 diff --git a/yarn.lock b/yarn.lock index 1f91b436c276..b500d1d0b6a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1761,17 +1761,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 - languageName: node - linkType: hard - -"@babel/types@npm:^7.26.3": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3, @babel/types@npm:^7.4.4": version: 7.26.3 resolution: "@babel/types@npm:7.26.3" dependencies: @@ -2561,13 +2551,13 @@ __metadata: linkType: hard "@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" dependencies: "@jridgewell/set-array": "npm:^1.2.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a languageName: node linkType: hard @@ -2612,7 +2602,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -2732,7 +2722,18 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor@npm:7.48.0, @microsoft/api-extractor@npm:^7.24.2": +"@microsoft/api-extractor-model@npm:7.30.1": + version: 7.30.1 + resolution: "@microsoft/api-extractor-model@npm:7.30.1" + dependencies: + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.1" + checksum: 10c0/61effbd2663a261338a3ecf0ee87a5fa4d0b7899897ab311eba7cd01a6370658353bd1719ea015f29e41c32ea9c26bd7227795e88198501a4189fe6cd8f2eafc + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:7.48.0": version: 7.48.0 resolution: "@microsoft/api-extractor@npm:7.48.0" dependencies: @@ -2755,6 +2756,29 @@ __metadata: languageName: node linkType: hard +"@microsoft/api-extractor@npm:^7.24.2": + version: 7.48.1 + resolution: "@microsoft/api-extractor@npm:7.48.1" + dependencies: + "@microsoft/api-extractor-model": "npm:7.30.1" + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.1" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.14.4" + "@rushstack/ts-command-line": "npm:4.23.2" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.4.2" + bin: + api-extractor: bin/api-extractor + checksum: 10c0/90cf6e453a2761a584a2fcf276abfe1a3f34b0b3570b87ef9c6d10e490cc99b0a8a1ade8e88de5a864a36a3ab3af0ee17e9fa2b4346784fef9d0d7ca158fd971 + languageName: node + linkType: hard + "@microsoft/tsdoc-config@npm:~0.17.1": version: 0.17.1 resolution: "@microsoft/tsdoc-config@npm:0.17.1" @@ -3586,21 +3610,21 @@ __metadata: languageName: node linkType: hard -"@puppeteer/browsers@npm:2.5.0": - version: 2.5.0 - resolution: "@puppeteer/browsers@npm:2.5.0" +"@puppeteer/browsers@npm:2.6.1": + version: 2.6.1 + resolution: "@puppeteer/browsers@npm:2.6.1" dependencies: - debug: "npm:^4.3.7" + debug: "npm:^4.4.0" extract-zip: "npm:^2.0.1" progress: "npm:^2.0.3" - proxy-agent: "npm:^6.4.0" + proxy-agent: "npm:^6.5.0" semver: "npm:^7.6.3" tar-fs: "npm:^3.0.6" unbzip2-stream: "npm:^1.4.3" yargs: "npm:^17.7.2" bin: browsers: lib/cjs/main-cli.js - checksum: 10c0/2ab2fa5b9054aab05ce424c30d42ecc316a03a6848b87f68699019b6c74c21b886cff34a77ccb4daa09a2c0d90e003bc295d492fad4d64a93527c72999cc4006 + checksum: 10c0/31d4951eec40515769467be3878d3581fe0e50227f2a9fa865e9f872e4a003262996c412a1d48d9c800665b3aa91bb1c2d971eaa314ef10e536d08e63f2f40d3 languageName: node linkType: hard @@ -3617,8 +3641,8 @@ __metadata: linkType: hard "@rollup/plugin-commonjs@npm:^28.0.0": - version: 28.0.1 - resolution: "@rollup/plugin-commonjs@npm:28.0.1" + version: 28.0.2 + resolution: "@rollup/plugin-commonjs@npm:28.0.2" dependencies: "@rollup/pluginutils": "npm:^5.0.1" commondir: "npm:^1.0.1" @@ -3632,7 +3656,7 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10c0/15d73306f539763a4b0d5723a0be9099b56d07118ff12b4c7f4c04b26e762076706e9f88a45f131d639ed9b7bd52e51facf93f2ca265b994172677b48ca705fe + checksum: 10c0/e90a443e63bfed567d5a4854960240d256818a0b3c69a45e95e196c40a755959406dabe4fbccb886eeb45d3445ddc8f966632563a7d590808be7eee8084384f1 languageName: node linkType: hard @@ -3667,8 +3691,8 @@ __metadata: linkType: hard "@rollup/plugin-node-resolve@npm:^15.0.1": - version: 15.3.0 - resolution: "@rollup/plugin-node-resolve@npm:15.3.0" + version: 15.3.1 + resolution: "@rollup/plugin-node-resolve@npm:15.3.1" dependencies: "@rollup/pluginutils": "npm:^5.0.1" "@types/resolve": "npm:1.20.2" @@ -3680,7 +3704,7 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10c0/5f3b11f9f6d00fe9fd3fe1977cc71f6a99c2b13d0ee82ad6822c4c4ecfc98854791c5a505798762f7e2332d9d67568a561e89aa8268ed3b1668563be1845109e + checksum: 10c0/ecf3abe890fc98ad665fdbfb1ea245253e0d1f2bc6d9f4e8f496f212c76a2ce7cd4b9bc0abd21e6bcaa16f72d1c67cc6b322ea12a6ec68e8a8834df8242a5ecd languageName: node linkType: hard @@ -3698,8 +3722,8 @@ __metadata: linkType: hard "@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.0": - version: 5.1.3 - resolution: "@rollup/pluginutils@npm:5.1.3" + version: 5.1.4 + resolution: "@rollup/pluginutils@npm:5.1.4" dependencies: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^2.0.2" @@ -3709,14 +3733,7 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10c0/ba46ad588733fb01d184ee3bc7a127d626158bc840b5874a94c129ff62689d12f16f537530709c54da6f3b71f67d705c4e09235b1dc9542e9d47ee8f2d0b8b9e - languageName: node - linkType: hard - -"@rollup/rollup-android-arm-eabi@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.4" - conditions: os=android & cpu=arm + checksum: 10c0/6d58fbc6f1024eb4b087bc9bf59a1d655a8056a60c0b4021d3beaeec3f0743503f52467fd89d2cf0e7eccf2831feb40a05ad541a17637ea21ba10b21c2004deb languageName: node linkType: hard @@ -3727,13 +3744,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-android-arm64@npm:4.27.4" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-android-arm64@npm:4.28.1" @@ -3741,13 +3751,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.27.4" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" @@ -3755,13 +3758,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.27.4" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" @@ -3769,13 +3765,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.4" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" @@ -3783,13 +3772,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-freebsd-x64@npm:4.27.4" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" @@ -3797,13 +3779,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.4" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" @@ -3811,13 +3786,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.4" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" @@ -3825,13 +3793,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.4" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" @@ -3839,13 +3800,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.4" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" @@ -3860,13 +3814,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.4" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" @@ -3874,13 +3821,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.4" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" @@ -3888,13 +3828,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.4" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" @@ -3902,13 +3835,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.4" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" @@ -3916,13 +3842,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.4" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" @@ -3930,13 +3849,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.4" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" @@ -3944,13 +3856,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.4" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" @@ -3958,13 +3863,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.27.4": - version: 4.27.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.4" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" @@ -4015,6 +3913,27 @@ __metadata: languageName: node linkType: hard +"@rushstack/node-core-library@npm:5.10.1": + version: 5.10.1 + resolution: "@rushstack/node-core-library@npm:5.10.1" + dependencies: + ajv: "npm:~8.13.0" + ajv-draft-04: "npm:~1.0.0" + ajv-formats: "npm:~3.0.1" + fs-extra: "npm:~7.0.1" + import-lazy: "npm:~4.0.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/b20efa2aa1eedaf17aca40fa2241d108f25d4891e57c1dfcf9d4b7918b2ea7c57191b1b705d77fc1d40f13dc1a59f9996bdc345e59a485489d4e43d5c13b78a8 + languageName: node + linkType: hard + "@rushstack/rig-package@npm:0.5.3": version: 0.5.3 resolution: "@rushstack/rig-package@npm:0.5.3" @@ -4040,6 +3959,21 @@ __metadata: languageName: node linkType: hard +"@rushstack/terminal@npm:0.14.4": + version: 0.14.4 + resolution: "@rushstack/terminal@npm:0.14.4" + dependencies: + "@rushstack/node-core-library": "npm:5.10.1" + supports-color: "npm:~8.1.1" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/8ba79d4c6dcc749381140d1b278aa4d658aeaca6db380f1b66c91d4abaef06f7976d2069f2bc730244c99d6e6dda503ef75f0fc05f1446b4c0cee4803e231c36 + languageName: node + linkType: hard + "@rushstack/ts-command-line@npm:4.23.1": version: 4.23.1 resolution: "@rushstack/ts-command-line@npm:4.23.1" @@ -4052,6 +3986,18 @@ __metadata: languageName: node linkType: hard +"@rushstack/ts-command-line@npm:4.23.2": + version: 4.23.2 + resolution: "@rushstack/ts-command-line@npm:4.23.2" + dependencies: + "@rushstack/terminal": "npm:0.14.4" + "@types/argparse": "npm:1.0.38" + argparse: "npm:~1.0.9" + string-argv: "npm:~0.3.1" + checksum: 10c0/33e9b65f42d8e3add8b428bd8a1052f66c95baa15d6f3b17962b8fb4fa1042ce6281acb07550adef084192a37e327ab00dd96ce5617431b26ded1940ec1563a9 + languageName: node + linkType: hard + "@sigstore/bundle@npm:^3.0.0": version: 3.0.0 resolution: "@sigstore/bundle@npm:3.0.0" @@ -4125,8 +4071,8 @@ __metadata: linkType: hard "@stylistic/eslint-plugin@npm:^2.8.0": - version: 2.12.0 - resolution: "@stylistic/eslint-plugin@npm:2.12.0" + version: 2.12.1 + resolution: "@stylistic/eslint-plugin@npm:2.12.1" dependencies: "@typescript-eslint/utils": "npm:^8.13.0" eslint-visitor-keys: "npm:^4.2.0" @@ -4135,7 +4081,7 @@ __metadata: picomatch: "npm:^4.0.2" peerDependencies: eslint: ">=8.40.0" - checksum: 10c0/07313f2bfe625b811d359550e5cb61a1578b51c75c8fe2a3fc17d77588d27aeb442b7a269feada2b135a7c2ce0e9fbeb78ea6ac2298d3c403966d1873dbce8bc + checksum: 10c0/52859e4148a268c8a16cad53dd2d89a641a26e1e61bb4f7368cf5ee1b7fc9904519ade65719096607dc03f22cf2a06d6d363f5b0e8510609e0a2ebd89acc344d languageName: node linkType: hard @@ -4700,11 +4646,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=13.7.0": - version: 22.10.1 - resolution: "@types/node@npm:22.10.1" + version: 22.10.2 + resolution: "@types/node@npm:22.10.2" dependencies: undici-types: "npm:~6.20.0" - checksum: 10c0/0fbb6d29fa35d807f0223a4db709c598ac08d66820240a2cd6a8a69b8f0bc921d65b339d850a666b43b4e779f967e6ed6cf6f0fca3575e08241e6b900364c234 + checksum: 10c0/2c7b71a040f1ef5320938eca8ebc946e6905caa9bbf3d5665d9b3774a8d15ea9fab1582b849a6d28c7fc80756a62c5666bc66b69f42f4d5dafd1ccb193cdb4ac languageName: node linkType: hard @@ -4716,11 +4662,11 @@ __metadata: linkType: hard "@types/node@npm:^18.13.0, @types/node@npm:^18.19.21": - version: 18.19.67 - resolution: "@types/node@npm:18.19.67" + version: 18.19.68 + resolution: "@types/node@npm:18.19.68" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/72b06802ac291c2e710bcf527b040f5490e1f85f26fdedad417e13ce3ed3aeb67e1bf3eef0ba5f581986bf361dcdc5f2d1229a9e284bf3dbd85db5c595e67bc6 + checksum: 10c0/8c7f01be218c6e3c1e643173662af27e9a2b568f36c0fe83e4295cf7674fe2a0abb4a1c5d7c7abd3345b9114581387dfd3f14b6d0338daebdce9273cd7ba59ab languageName: node linkType: hard @@ -5123,16 +5069,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/scope-manager@npm:8.17.0" - dependencies: - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/visitor-keys": "npm:8.17.0" - checksum: 10c0/0c08d14240bad4b3f6874f08ba80b29db1a6657437089a6f109db458c544d835bcdc06ba9140bb4f835233ba4326d9a86e6cf6bdb5209960d2f7025aa3191f4f - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:8.18.0": version: 8.18.0 resolution: "@typescript-eslint/scope-manager@npm:8.18.0" @@ -5143,6 +5079,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/scope-manager@npm:8.18.1" + dependencies: + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" + checksum: 10c0/97c503b2ece79b6c99ca8e6a5f1f40855cf72f17fbf05e42e62d19c2666e7e6f5df9bf71f13dbc4720c5ee0397670ba8052482a90441fbffa901da5f2e739565 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.18.0": version: 8.18.0 resolution: "@typescript-eslint/type-utils@npm:8.18.0" @@ -5158,13 +5104,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/types@npm:8.17.0" - checksum: 10c0/26b1bf9dfc3ee783c85c6f354b84c28706d5689d777f3ff2de2cb496e45f9d0189c0d561c03ccbc8b24712438be17cf63dd0871ff3ca2083e7f48749770d1893 - languageName: node - linkType: hard - "@typescript-eslint/types@npm:8.18.0": version: 8.18.0 resolution: "@typescript-eslint/types@npm:8.18.0" @@ -5172,31 +5111,37 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.17.0" +"@typescript-eslint/types@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/types@npm:8.18.1" + checksum: 10c0/0a2ca5f7cdebcc844b6bc1e5afc5d83b563f55917d20e3fea3a17ed39c54b003178e26b5ec535113f45c93c569b46628d9a67defa70c01cbdfa801573fed69a2 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.18.0": + version: 8.18.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.18.0" dependencies: - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/visitor-keys": "npm:8.17.0" + "@typescript-eslint/types": "npm:8.18.0" + "@typescript-eslint/visitor-keys": "npm:8.18.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/523013f9b5cf2c58c566868e4c3b0b9ac1b4807223a6d64e2a7c58e01e53b6587ba61f1a8241eade361f3f426d6057657515473176141ef8aebb352bc0d223ce + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/87b432b190b627314f007b17b2371898db78baaa3df67a0d9a94d080d88a7a307906b54a735084cacef37f6421e2b9c3320040617e73fe54eac2bf22c610f1ec languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.18.0" +"@typescript-eslint/typescript-estree@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.18.1" dependencies: - "@typescript-eslint/types": "npm:8.18.0" - "@typescript-eslint/visitor-keys": "npm:8.18.0" + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -5205,7 +5150,7 @@ __metadata: ts-api-utils: "npm:^1.3.0" peerDependencies: typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/87b432b190b627314f007b17b2371898db78baaa3df67a0d9a94d080d88a7a307906b54a735084cacef37f6421e2b9c3320040617e73fe54eac2bf22c610f1ec + checksum: 10c0/7ecb061dc63c729b23f4f15db5736ca93b1ae633108400e6c31cf8af782494912f25c3683f9f952dbfd10cb96031caba247a1ad406abf5d163639a00ac3ce5a3 languageName: node linkType: hard @@ -5225,29 +5170,17 @@ __metadata: linkType: hard "@typescript-eslint/utils@npm:^8.13.0": - version: 8.17.0 - resolution: "@typescript-eslint/utils@npm:8.17.0" + version: 8.18.1 + resolution: "@typescript-eslint/utils@npm:8.18.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.17.0" - "@typescript-eslint/types": "npm:8.17.0" - "@typescript-eslint/typescript-estree": "npm:8.17.0" + "@typescript-eslint/scope-manager": "npm:8.18.1" + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/typescript-estree": "npm:8.18.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/a9785ae5f7e7b51d521dc3f48b15093948e4fcd03352c0b60f39bae366cbc935947d215f91e2ae3182d52fa6affb5ccbb50feff487bd1209011f3e0da02cdf07 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.17.0": - version: 8.17.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.17.0" - dependencies: - "@typescript-eslint/types": "npm:8.17.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/9144c4e4a63034fb2031a0ee1fc77e80594f30cab3faafa9a1f7f83782695774dd32fac8986f260698b4e150b4dd52444f2611c07e4c101501f08353eb47c82c + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/1e29408bd8fbda9f3386dabdb2b7471dacff28342d5bd6521ca3b7932df0cae100030d2eac75d946a82cbefa33f78000eed4ce789128fdea069ffeabd4429d80 languageName: node linkType: hard @@ -5261,6 +5194,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.18.1" + dependencies: + "@typescript-eslint/types": "npm:8.18.1" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/68651ae1825dbd660ea39b4e1d1618f6ad0026fa3a04aecec296750977cab316564e3e2ace8edbebf1ae86bd17d86acc98cac7b6e9aad4e1c666bd26f18706ad + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.1 resolution: "@ungap/structured-clone@npm:1.2.1" @@ -6337,42 +6280,41 @@ __metadata: linkType: hard "array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a languageName: node linkType: hard "array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" dependencies: array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.3" - es-errors: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.3" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" is-array-buffer: "npm:^3.0.4" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 languageName: node linkType: hard @@ -6630,11 +6572,11 @@ __metadata: linkType: hard "bare-stream@npm:^2.0.0": - version: 2.4.2 - resolution: "bare-stream@npm:2.4.2" + version: 2.6.1 + resolution: "bare-stream@npm:2.6.1" dependencies: - streamx: "npm:^2.20.0" - checksum: 10c0/5e64d96dc32d901c317399f14fd1057882b2bd68d1f8ab54710f0e640b0d1f3a4bf4f9c238bb4c81051ef4b687cf2223e5e05dda9f6ce08bc0cc2ac98f3b52e0 + streamx: "npm:^2.21.0" + checksum: 10c0/f6fe238b4b067fc9ec99e6f9a218239413d1641dfd5bc4defa5fbd0e360ac09e7f454929f5fedd0ee1e7b84d780d32084afe3b60d369ed5f53512dd5fa8b9f8b languageName: node linkType: hard @@ -6921,16 +6863,16 @@ __metadata: linkType: hard "browserslist@npm:^4.21.5, browserslist@npm:^4.22.1, browserslist@npm:^4.23.0, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0, browserslist@npm:^4.24.2": - version: 4.24.2 - resolution: "browserslist@npm:4.24.2" + version: 4.24.3 + resolution: "browserslist@npm:4.24.3" dependencies: - caniuse-lite: "npm:^1.0.30001669" - electron-to-chromium: "npm:^1.5.41" - node-releases: "npm:^2.0.18" + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" update-browserslist-db: "npm:^1.1.1" bin: browserslist: cli.js - checksum: 10c0/d747c9fb65ed7b4f1abcae4959405707ed9a7b835639f8a9ba0da2911995a6ab9b0648fd05baf2a4d4e3cf7f9fdbad56d3753f91881e365992c1d49c8d88ff7a + checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a languageName: node linkType: hard @@ -7067,7 +7009,7 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0": +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": version: 1.0.1 resolution: "call-bind-apply-helpers@npm:1.0.1" dependencies: @@ -7077,7 +7019,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": +"call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": version: 1.0.8 resolution: "call-bind@npm:1.0.8" dependencies: @@ -7089,6 +7031,16 @@ __metadata: languageName: node linkType: hard +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/45257b8e7621067304b30dbd638e856cac913d31e8e00a80d6cf172911acd057846572d0b256b45e652d515db6601e2974a1b1a040e91b4fc36fb3dd86fa69cf + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -7110,10 +7062,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001687 - resolution: "caniuse-lite@npm:1.0.30001687" - checksum: 10c0/9ca0f6d33dccaf4692339d0fda50e03e4dd7eb7f25faabd1cb33e2099d9a76b0bc30c37be3315e91c1d990da1b5cc864eee2077494f4d0ba94d68b48fe2ea7f1 +"caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001689 + resolution: "caniuse-lite@npm:1.0.30001689" + checksum: 10c0/51cf99751dddfba24e13556ae0e0f38c062f76d49f2e24cce3d28e71a0325ca6fe04fe51b4a0e8467d601d94e72fea84f160bf577e7cbb5677f14ac673b6da20 languageName: node linkType: hard @@ -7183,7 +7135,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:4.0.1, chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": +"chokidar@npm:4.0.1": version: 4.0.1 resolution: "chokidar@npm:4.0.1" dependencies: @@ -7211,6 +7163,15 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": + version: 4.0.2 + resolution: "chokidar@npm:4.0.2" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10c0/562a3456d529ce9e16f9a6447f86a3e82a816200fed473fa0b6f84b447ce29f96210c92874a8d5e619a0b453d92a352e93252baa214e376a9a08489e96337c65 + languageName: node + linkType: hard + "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -7943,7 +7904,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -8083,7 +8044,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -8337,13 +8298,13 @@ __metadata: linkType: hard "dunder-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "dunder-proto@npm:1.0.0" + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.1" es-errors: "npm:^1.3.0" gopd: "npm:^1.2.0" - checksum: 10c0/b321e5cbf64f0a4c786b0b3dc187eb5197a83f6e05a1e11b86db25251b3ae6747c4b805d9e0a4fbf481d22a86a539dc75f82d883daeac7fc2ce4bd72ff5ef5a2 + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 languageName: node linkType: hard @@ -8422,10 +8383,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.41": - version: 1.5.71 - resolution: "electron-to-chromium@npm:1.5.71" - checksum: 10c0/f6fdeec0e1d68634cf92c267bdce3e50af947ce2c8fb1034df3e738c536b3033e311ad0fb9a6c4c35f678f10a299e4f78fdfcedbaa78d8992fedc443a7363d6d +"electron-to-chromium@npm:^1.5.73": + version: 1.5.74 + resolution: "electron-to-chromium@npm:1.5.74" + checksum: 10c0/1a93119adbdeb0bba4c29e3bad5a48e6a4626ae50fbff2bc5c207f32e67ed64a5d8db6500befb44080359be3b18be7bf830fb920d5199d935be95bb9f97deb10 languageName: node linkType: hard @@ -8538,11 +8499,14 @@ __metadata: linkType: hard "ent@npm:~2.2.0": - version: 2.2.1 - resolution: "ent@npm:2.2.1" + version: 2.2.2 + resolution: "ent@npm:2.2.2" dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" punycode: "npm:^1.4.1" - checksum: 10c0/1a8ed52210b9a688c481673a7cb82699b66bd25f6960f212a5456b635a4a9bfd42371230fe59a3134dd8c2f6ab2c8736c60cebead640d271d601c9346bed458d + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/83673cc952bb1ca01473460eb4f1289448d887ef2bfcdd142bfe83cd20a794a4393b6bca543922bf1eb913d1ae0ab69ca2d2f1f6a5e9f3de6e68464b3a3b9096 languageName: node linkType: hard @@ -8610,57 +8574,59 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": - version: 1.23.5 - resolution: "es-abstract@npm:1.23.5" +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": + version: 1.23.6 + resolution: "es-abstract@npm:1.23.6" dependencies: array-buffer-byte-length: "npm:^1.0.1" - arraybuffer.prototype.slice: "npm:^1.0.3" + arraybuffer.prototype.slice: "npm:^1.0.4" available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" data-view-buffer: "npm:^1.0.1" data-view-byte-length: "npm:^1.0.1" data-view-byte-offset: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" es-set-tostringtag: "npm:^2.0.3" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.4" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.7" + get-intrinsic: "npm:^1.2.6" get-symbol-description: "npm:^1.0.2" globalthis: "npm:^1.0.4" - gopd: "npm:^1.0.1" + gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - internal-slot: "npm:^1.0.7" + internal-slot: "npm:^1.1.0" is-array-buffer: "npm:^3.0.4" is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.1" + is-data-view: "npm:^1.0.2" is-negative-zero: "npm:^2.0.3" - is-regex: "npm:^1.1.4" + is-regex: "npm:^1.2.1" is-shared-array-buffer: "npm:^1.0.3" - is-string: "npm:^1.0.7" + is-string: "npm:^1.1.1" is-typed-array: "npm:^1.1.13" - is-weakref: "npm:^1.0.2" + is-weakref: "npm:^1.1.0" + math-intrinsics: "npm:^1.0.0" object-inspect: "npm:^1.13.3" object-keys: "npm:^1.1.1" object.assign: "npm:^4.1.5" regexp.prototype.flags: "npm:^1.5.3" - safe-array-concat: "npm:^1.1.2" - safe-regex-test: "npm:^1.0.3" - string.prototype.trim: "npm:^1.2.9" - string.prototype.trimend: "npm:^1.0.8" + safe-array-concat: "npm:^1.1.3" + safe-regex-test: "npm:^1.1.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" string.prototype.trimstart: "npm:^1.0.8" typed-array-buffer: "npm:^1.0.2" typed-array-byte-length: "npm:^1.0.1" - typed-array-byte-offset: "npm:^1.0.2" - typed-array-length: "npm:^1.0.6" + typed-array-byte-offset: "npm:^1.0.3" + typed-array-length: "npm:^1.0.7" unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10c0/1f6f91da9cf7ee2c81652d57d3046621d598654d1d1b05c1578bafe5c4c2d3d69513901679bdca2de589f620666ec21de337e4935cec108a4ed0871d5ef04a5d + which-typed-array: "npm:^1.1.16" + checksum: 10c0/87c9cd85264f42e993ee2f7157c5e49c2866651bd7ff89a0799cc5bcfb962b19814e1f58c9970101072bab2a68a4fb859f094c6e8f161ba8042569431f0c1ec4 languageName: node linkType: hard @@ -8671,7 +8637,7 @@ __metadata: languageName: node linkType: hard -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 @@ -8705,7 +8671,7 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": +"es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" dependencies: @@ -8714,7 +8680,7 @@ __metadata: languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": +"es-to-primitive@npm:^1.3.0": version: 1.3.0 resolution: "es-to-primitive@npm:1.3.0" dependencies: @@ -9815,15 +9781,16 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.7": + version: 1.1.7 + resolution: "function.prototype.name@npm:1.1.7" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" functions-have-names: "npm:^1.2.3" - checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/f369f794099a9883e8253290d84a7a3e37ed9d4e2b185bdb3034fcfe02d6ee9dd72b41ea1e6e556c49bce897c535aa373b8e31dab5b018875cf9bc0a70c5215f languageName: node linkType: hard @@ -9888,19 +9855,21 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.5 - resolution: "get-intrinsic@npm:1.2.5" +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": + version: 1.2.6 + resolution: "get-intrinsic@npm:1.2.6" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.1" dunder-proto: "npm:^1.0.0" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" function-bind: "npm:^1.1.2" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - checksum: 10c0/dcaace9fd4b4dd127b6668f580393e1a704bad308b7b88d694145e2599ee6c51b70cbfd49c6c96a5ffdb14a70824a0b3bd9b78bad84953932e5f0c5da4e508fd + math-intrinsics: "npm:^1.0.0" + checksum: 10c0/0f1ea6d807d97d074e8a31ac698213a12757fcfa9a8f4778263d2e4702c40fe83198aadd3dba2e99aabc2e4cf8a38345545dbb0518297d3df8b00b56a156c32a languageName: node linkType: hard @@ -9928,13 +9897,13 @@ __metadata: linkType: hard "get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.5" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b languageName: node linkType: hard @@ -10122,7 +10091,7 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1, gopd@npm:^1.1.0, gopd@npm:^1.2.0": +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead @@ -10252,7 +10221,7 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.3": +"has-proto@npm:^1.0.3, has-proto@npm:^1.2.0": version: 1.2.0 resolution: "has-proto@npm:1.2.0" dependencies: @@ -10740,14 +10709,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 languageName: node linkType: hard @@ -10797,12 +10766,13 @@ __metadata: linkType: hard "is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d languageName: node linkType: hard @@ -10840,13 +10810,13 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.2.0": - version: 1.2.0 - resolution: "is-boolean-object@npm:1.2.0" +"is-boolean-object@npm:^1.2.1": + version: 1.2.1 + resolution: "is-boolean-object@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.2" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/166319154c7c1fda06d164d3a25e969032d7929a1e3917ae56f6bd8870b831bbfdc608a3070fb5db94d5a2afc606683d484655777c9b62305383a8b87f1b5aa4 + checksum: 10c0/2ef601d255a39fdbde79cfe6be80c27b47430ed6712407f29b17d002e20f64c1e3d6692f1d842ba16bf1e9d8ddf1c4f13cac3ed7d9a4a21290f44879ebb4e8f5 languageName: node linkType: hard @@ -10875,30 +10845,33 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1": - version: 2.15.1 - resolution: "is-core-module@npm:2.15.1" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": + version: 2.16.0 + resolution: "is-core-module@npm:2.16.0" dependencies: hasown: "npm:^2.0.2" - checksum: 10c0/53432f10c69c40bfd2fa8914133a68709ff9498c86c3bf5fca3cdf3145a56fd2168cbf4a43b29843a6202a120a5f9c5ffba0a4322e1e3441739bc0b641682612 + checksum: 10c0/57e3b4bf3503a5ace3e61ef030a2eefa03d27827647b22968456e3e4befffed7c7aa849eea2e029f4f74a119a2d53cc391d5bad59c9352ecc9b79be3fd2acf79 languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" is-typed-array: "npm:^1.1.13" - checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 languageName: node linkType: hard -"is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f languageName: node linkType: hard @@ -10935,11 +10908,11 @@ __metadata: linkType: hard "is-finalizationregistry@npm:^1.1.0": - version: 1.1.0 - resolution: "is-finalizationregistry@npm:1.1.0" + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.7" - checksum: 10c0/1cd94236bfb6e060fe2b973c8726a2782727f7d495b3e8e1d51d3e619c5a3345413706f555956eb5b12af15eba0414118f64a1b19d793ec36b5e6767a13836ac + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 languageName: node linkType: hard @@ -11055,13 +11028,13 @@ __metadata: languageName: node linkType: hard -"is-number-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-number-object@npm:1.1.0" +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/29d575b5c54ff13f824858d8f7da4cf27131c59858744ec94e96be7b7d2de81038971c15a2636b38fa9eece3797c14bf8de898e1b30afc2f5c1df5cea9f06a8e + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 languageName: node linkType: hard @@ -11143,15 +11116,15 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.2.0 - resolution: "is-regex@npm:1.2.0" +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" - gopd: "npm:^1.1.0" + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" hasown: "npm:^2.0.2" - checksum: 10c0/a407fefb871ceedebe718c35d2f4ba75dc3360c335e99ff2f8bc4488bdcc7b0b3bb78a208d1aa896cf2745630b97752ffd40b501c10bb7afc31d23c2e0092e8d + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 languageName: node linkType: hard @@ -11162,7 +11135,7 @@ __metadata: languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": +"is-shared-array-buffer@npm:^1.0.3": version: 1.0.3 resolution: "is-shared-array-buffer@npm:1.0.3" dependencies: @@ -11185,33 +11158,33 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.7, is-string@npm:^1.1.0": - version: 1.1.0 - resolution: "is-string@npm:1.1.0" +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/2781bce7bfdb00276d000a7aafccad8038a7b5cb06abbfc638417a705dd41bca259977af78731dc8a87f170783c94c9f684bc086fc4856b623c1fd942c509b6b + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d languageName: node linkType: hard -"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.0": - version: 1.1.0 - resolution: "is-symbol@npm:1.1.0" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.7" - has-symbols: "npm:^1.0.3" - safe-regex-test: "npm:^1.0.3" - checksum: 10c0/57f63c22e00cc4990680e12035b91ed158de1030924175123b13b2188fb2d10c9a80da9a923dd6ff9e9b084afd3d2e8d7d3ad711fe971e7fb74a44644751cd52 + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e languageName: node linkType: hard "is-typed-array@npm:^1.1.13": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" + version: 1.1.14 + resolution: "is-typed-array@npm:1.1.14" dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + which-typed-array: "npm:^1.1.16" + checksum: 10c0/1dc1aee98fcdc016b941491f32327b6f651580efe8e0e0fe9a659f7f8a901c0047f9929de4fad08eb4a7f2b9ae42551c08fa054bfb6bfa16109e80b9abab66b2 languageName: node linkType: hard @@ -11243,22 +11216,22 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.0 + resolution: "is-weakref@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + call-bound: "npm:^1.0.2" + checksum: 10c0/aa835f62e29cb60132ecb3ec7d11bd0f39ec7322325abe8412b805aef47153ec2daefdb21759b049711c674f49b13202a31d8d126bcdff7d8671c78babd4ae5b languageName: node linkType: hard "is-weakset@npm:^2.0.3": - version: 2.0.3 - resolution: "is-weakset@npm:2.0.3" + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 languageName: node linkType: hard @@ -11580,7 +11553,16 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"jsesc@npm:~3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" bin: @@ -12094,7 +12076,7 @@ __metadata: languageName: node linkType: hard -"less@npm:4.2.1": +"less@npm:4.2.1, less@npm:^4.2.0": version: 4.2.1 resolution: "less@npm:4.2.1" dependencies: @@ -12129,41 +12111,6 @@ __metadata: languageName: node linkType: hard -"less@npm:^4.2.0": - version: 4.2.0 - resolution: "less@npm:4.2.0" - dependencies: - copy-anything: "npm:^2.0.1" - errno: "npm:^0.1.1" - graceful-fs: "npm:^4.1.2" - image-size: "npm:~0.5.0" - make-dir: "npm:^2.1.0" - mime: "npm:^1.4.1" - needle: "npm:^3.1.0" - parse-node-version: "npm:^1.0.1" - source-map: "npm:~0.6.0" - tslib: "npm:^2.3.0" - dependenciesMeta: - errno: - optional: true - graceful-fs: - optional: true - image-size: - optional: true - make-dir: - optional: true - mime: - optional: true - needle: - optional: true - source-map: - optional: true - bin: - lessc: bin/lessc - checksum: 10c0/8593d547a3e7651555a2c51bac8b148b37ec14e75e6e28ee4ddf27eb49cbcb4b558e50cdefa97d6942a8120fc744ace0d61c43d4c246e098c8828269b14cf5fb - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -12669,11 +12616,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": - version: 0.30.13 - resolution: "magic-string@npm:0.30.13" + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/a275faeca1564c545019b4742c38a42ca80226c8c9e0805c32d1a1cc58b0e6ff7bbd914ed885fd10043858a7da0f732cb8f49c8975c3ecebde9cad4b57db5115 + checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8 languageName: node linkType: hard @@ -12738,6 +12685,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.0.0": + version: 1.0.0 + resolution: "math-intrinsics@npm:1.0.0" + checksum: 10c0/470ee2f267b4b3698eb9faa7f0bcf88696d87e2eeab25bba867dc676c09ddbae9b6f2e8ac7a2c1f0c9c2c5299c2a89f4f1f6d0e70d682725e2e7fca7507eef9f + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -13385,10 +13339,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa languageName: node linkType: hard @@ -13460,7 +13414,7 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:12.0.1, npm-package-arg@npm:^12.0.1": +"npm-package-arg@npm:12.0.1, npm-package-arg@npm:^12.0.0, npm-package-arg@npm:^12.0.1": version: 12.0.1 resolution: "npm-package-arg@npm:12.0.1" dependencies: @@ -13472,18 +13426,6 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:^12.0.0": - version: 12.0.0 - resolution: "npm-package-arg@npm:12.0.0" - dependencies: - hosted-git-info: "npm:^8.0.0" - proc-log: "npm:^5.0.0" - semver: "npm:^7.3.5" - validate-npm-package-name: "npm:^6.0.0" - checksum: 10c0/a2e4e60b16b52715786ba854ef93c4f489b4379c54aa9179b6dac3f4e44fb6fad0a1d937e25cf04b3496bd61b90fc356b44ecd02ce98a6fe0f348e1563b7b00c - languageName: node - linkType: hard - "npm-packlist@npm:^10.0.0": version: 10.0.0 resolution: "npm-packlist@npm:10.0.0" @@ -13663,7 +13605,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": +"object-inspect@npm:^1.13.3": version: 1.13.3 resolution: "object-inspect@npm:1.13.3" checksum: 10c0/cc3f15213406be89ffdc54b525e115156086796a515410a8d390215915db9f23c8eab485a06f1297402f440a33715fe8f71a528c1dcbad6e1a3bcaf5a46921d4 @@ -14522,15 +14464,15 @@ __metadata: linkType: hard "postcss-modules-local-by-default@npm:^4.0.5": - version: 4.1.0 - resolution: "postcss-modules-local-by-default@npm:4.1.0" + version: 4.2.0 + resolution: "postcss-modules-local-by-default@npm:4.2.0" dependencies: icss-utils: "npm:^5.0.0" postcss-selector-parser: "npm:^7.0.0" postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 10c0/d6e47d2488c6fcde2c91696d15ef094e6b1cdd8d5dcdf20c6ac72567fcc4778f5f80b8381839232b37242f200b4d83e98a947bf3b3315b0bf673ea42528a3caf + checksum: 10c0/b0b83feb2a4b61f5383979d37f23116c99bc146eba1741ca3cf1acca0e4d0dbf293ac1810a6ab4eccbe1ee76440dd0a9eb2db5b3bba4f99fc1b3ded16baa6358 languageName: node linkType: hard @@ -14788,7 +14730,7 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:^6.4.0": +"proxy-agent@npm:^6.5.0": version: 6.5.0 resolution: "proxy-agent@npm:6.5.0" dependencies: @@ -14891,16 +14833,16 @@ __metadata: linkType: hard "puppeteer-core@npm:^23.2.0": - version: 23.10.1 - resolution: "puppeteer-core@npm:23.10.1" + version: 23.10.4 + resolution: "puppeteer-core@npm:23.10.4" dependencies: - "@puppeteer/browsers": "npm:2.5.0" + "@puppeteer/browsers": "npm:2.6.1" chromium-bidi: "npm:0.8.0" - debug: "npm:^4.3.7" + debug: "npm:^4.4.0" devtools-protocol: "npm:0.0.1367902" typed-query-selector: "npm:^2.12.0" ws: "npm:^8.18.0" - checksum: 10c0/e72eebd5c8eb1b74a849215960c8f87cdb002a60ad8466a00253aabb44df487d8e2da44687b89fcf687677e042b16c900b226c05f2d8741cf74ed5b258bac76a + checksum: 10c0/eb94b0760e9d7aadde11f0fb66c21202698773df6063bef2295271b409d3cf7650c5d4652cc7b39b95c309740edd34a8828fe520eba69272f43f3b011212ea7d languageName: node linkType: hard @@ -15346,28 +15288,28 @@ __metadata: linkType: hard "resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" + version: 1.22.9 + resolution: "resolve@npm:1.22.9" dependencies: - is-core-module: "npm:^2.13.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + checksum: 10c0/314cea2c47f956743f106256854203bd43a60a3ec6fb85ee6894e75cf4b16004952e4280319bfeb4c6fb1246e3ecd27f2699abb2e2b316b7c5727ec6491505c9 languageName: node linkType: hard "resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + version: 1.22.9 + resolution: "resolve@patch:resolve@npm%3A1.22.9#optional!builtin::version=1.22.9&hash=c3c19d" dependencies: - is-core-module: "npm:^2.13.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + checksum: 10c0/dadd8c85040784fdc18d6edc0cc27f7f35776c5d904b030ea67485ab9a5607568187afcfaf157e6fa9db9274481d155356bc42ca578c5578be25965b880d1e80 languageName: node linkType: hard @@ -15500,7 +15442,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.1, rollup@npm:^4.24.0": +"rollup@npm:4.28.1, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.28.1 resolution: "rollup@npm:4.28.1" dependencies: @@ -15572,75 +15514,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.23.0, rollup@npm:^4.4.0": - version: 4.27.4 - resolution: "rollup@npm:4.27.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.27.4" - "@rollup/rollup-android-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-arm64": "npm:4.27.4" - "@rollup/rollup-darwin-x64": "npm:4.27.4" - "@rollup/rollup-freebsd-arm64": "npm:4.27.4" - "@rollup/rollup-freebsd-x64": "npm:4.27.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.27.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.27.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.27.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.27.4" - "@rollup/rollup-linux-x64-musl": "npm:4.27.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.27.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.27.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.27.4" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/1442650cfea5e4617ce14743784f6f578817e31db56f9c8aaf96a82daa9bc20b6ccd66c0d677dbf302a4da3e70664dc3bef11a1aec85e6aff3cecccb945b1d35 - languageName: node - linkType: hard - "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -15673,15 +15546,16 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - has-symbols: "npm:^1.0.3" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" isarray: "npm:^2.0.5" - checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d languageName: node linkType: hard @@ -15699,14 +15573,14 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" - is-regex: "npm:^1.1.4" - checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 languageName: node linkType: hard @@ -15750,7 +15624,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.82.0, sass@npm:^1.81.0": +"sass@npm:1.82.0": version: 1.82.0 resolution: "sass@npm:1.82.0" dependencies: @@ -15767,7 +15641,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.83.0": +"sass@npm:1.83.0, sass@npm:^1.81.0": version: 1.83.0 resolution: "sass@npm:1.83.0" dependencies: @@ -15800,7 +15674,7 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": +"schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: @@ -15811,15 +15685,15 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0": - version: 4.2.0 - resolution: "schema-utils@npm:4.2.0" +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0, schema-utils@npm:^4.3.0": + version: 4.3.0 + resolution: "schema-utils@npm:4.3.0" dependencies: "@types/json-schema": "npm:^7.0.9" ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + checksum: 10c0/c23f0fa73ef71a01d4a2bb7af4c91e0d356ec640e071aa2d06ea5e67f042962bb7ac7c29a60a295bb0125878801bc3209197a2b8a833dd25bd38e37c3ed21427 languageName: node linkType: hard @@ -15973,7 +15847,7 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.1, serialize-javascript@npm:^6.0.2": +"serialize-javascript@npm:^6.0.2": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: @@ -16115,15 +15989,51 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.7" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 languageName: node linkType: hard @@ -16616,9 +16526,9 @@ __metadata: languageName: node linkType: hard -"streamx@npm:^2.15.0, streamx@npm:^2.20.0": - version: 2.21.0 - resolution: "streamx@npm:2.21.0" +"streamx@npm:^2.15.0, streamx@npm:^2.21.0": + version: 2.21.1 + resolution: "streamx@npm:2.21.1" dependencies: bare-events: "npm:^2.2.0" fast-fifo: "npm:^1.3.2" @@ -16627,7 +16537,7 @@ __metadata: dependenciesMeta: bare-events: optional: true - checksum: 10c0/4583d1585c0b5876bc623e4c31c00358d914277b649928573002577019cb41cb8e62a7b39559aa118ff8424c1d98b03eb163536f838fa21d006f274042498180 + checksum: 10c0/752297e877bdeba4a4c180335564c446636c3a33f1c8733b4773746dab6212266e97cd71be8cade9748bbb1b9e2fee61f81e46bcdaf1ff396b79c9cb9355f26e languageName: node linkType: hard @@ -16671,26 +16581,30 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.0" + es-abstract: "npm:^1.23.5" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 languageName: node linkType: hard @@ -16936,14 +16850,14 @@ __metadata: linkType: hard "terser-webpack-plugin@npm:^5.3.10": - version: 5.3.10 - resolution: "terser-webpack-plugin@npm:5.3.10" + version: 5.3.11 + resolution: "terser-webpack-plugin@npm:5.3.11" dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.20" + "@jridgewell/trace-mapping": "npm:^0.3.25" jest-worker: "npm:^27.4.5" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.1" - terser: "npm:^5.26.0" + schema-utils: "npm:^4.3.0" + serialize-javascript: "npm:^6.0.2" + terser: "npm:^5.31.1" peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -16953,11 +16867,11 @@ __metadata: optional: true uglify-js: optional: true - checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 + checksum: 10c0/4794274f445dc589f4c113c75a55ce51364ccf09bfe8a545cdb462e3f752bf300ea91f072fa28bbed291bbae03274da06fe4eca180e784fb8a43646aa7dbcaef languageName: node linkType: hard -"terser@npm:5.37.0, terser@npm:^5.26.0": +"terser@npm:5.37.0, terser@npm:^5.31.1": version: 5.37.0 resolution: "terser@npm:5.37.0" dependencies: @@ -16983,11 +16897,11 @@ __metadata: linkType: hard "text-decoder@npm:^1.1.0": - version: 1.2.2 - resolution: "text-decoder@npm:1.2.2" + version: 1.2.3 + resolution: "text-decoder@npm:1.2.3" dependencies: b4a: "npm:^1.6.4" - checksum: 10c0/20612b87d282ee07d8fba28f4b411c556a2487948de4c77610191e263e4e80fec5af1ffd9a00b58b7598c153e58127e36110be642721a197f222b58ff2aab5c2 + checksum: 10c0/569d776b9250158681c83656ef2c3e0a5d5c660c27ca69f87eedef921749a4fbf02095e5f9a0f862a25cf35258379b06e31dee9c125c9f72e273b7ca1a6d1977 languageName: node linkType: hard @@ -17356,7 +17270,7 @@ __metadata: languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.2": +"typed-array-byte-offset@npm:^1.0.3": version: 1.0.3 resolution: "typed-array-byte-offset@npm:1.0.3" dependencies: @@ -17371,7 +17285,7 @@ __metadata: languageName: node linkType: hard -"typed-array-length@npm:^1.0.6": +"typed-array-length@npm:^1.0.7": version: 1.0.7 resolution: "typed-array-length@npm:1.0.7" dependencies: @@ -17468,14 +17382,14 @@ __metadata: linkType: hard "unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" + call-bound: "npm:^1.0.3" has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 languageName: node linkType: hard @@ -18217,37 +18131,37 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.1.0 - resolution: "which-boxed-primitive@npm:1.1.0" +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: is-bigint: "npm:^1.1.0" - is-boolean-object: "npm:^1.2.0" - is-number-object: "npm:^1.1.0" - is-string: "npm:^1.1.0" - is-symbol: "npm:^1.1.0" - checksum: 10c0/ee4e4bcf0026aeeda1b28d005ddfcf1d8d6025d1cf04b2271f8dbbdd13df9357ba7da657ec2d886520bccf8d93d9535454e44f38f201c5461a2fe7c838b455de + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe languageName: node linkType: hard "which-builtin-type@npm:^1.2.0": - version: 1.2.0 - resolution: "which-builtin-type@npm:1.2.0" + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.2" function.prototype.name: "npm:^1.1.6" has-tostringtag: "npm:^1.0.2" is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.0.5" + is-date-object: "npm:^1.1.0" is-finalizationregistry: "npm:^1.1.0" is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.1.4" + is-regex: "npm:^1.2.1" is-weakref: "npm:^1.0.2" isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.0.2" + which-boxed-primitive: "npm:^1.1.0" which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10c0/7cd4a8ccfa6a3cb7c2296c716e7266b9f31a66f3e131fe7b185232c16d3ad21442046ec1798c4ec1e19dce7eb99c7751377192e5e734dc07042d14ec0f09b332 + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 languageName: node linkType: hard @@ -18270,7 +18184,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": +"which-typed-array@npm:^1.1.16": version: 1.1.16 resolution: "which-typed-array@npm:1.1.16" dependencies: @@ -18538,7 +18452,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.1, yaml@npm:^2.2.2": +"yaml@npm:2.6.1, yaml@npm:^2.2.2, yaml@npm:^2.4.1": version: 2.6.1 resolution: "yaml@npm:2.6.1" bin: @@ -18547,15 +18461,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.4.1": - version: 2.6.0 - resolution: "yaml@npm:2.6.0" - bin: - yaml: bin.mjs - checksum: 10c0/9e74cdb91cc35512a1c41f5ce509b0e93cc1d00eff0901e4ba831ee75a71ddf0845702adcd6f4ee6c811319eb9b59653248462ab94fa021ab855543a75396ceb - languageName: node - linkType: hard - "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" From f7c0a83c5d271a2a63adb150854ff599d45f6c49 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 13:54:17 +0000 Subject: [PATCH 0156/2162] refactor(@angular/ssr): mark `LINK_LOAD_SCRIPT_CONTENT` as `@PURE` This const is pure. --- packages/angular/ssr/src/utils/inline-critical-css.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/angular/ssr/src/utils/inline-critical-css.ts b/packages/angular/ssr/src/utils/inline-critical-css.ts index f79f065a8621..5a5eb011c20a 100644 --- a/packages/angular/ssr/src/utils/inline-critical-css.ts +++ b/packages/angular/ssr/src/utils/inline-critical-css.ts @@ -32,8 +32,7 @@ const CSP_MEDIA_ATTR = 'ngCspMedia'; * - Removes the event listener when all relevant `` tags have been processed. * - Uses event capturing (the `true` parameter) since load events do not bubble up the DOM. */ -const LINK_LOAD_SCRIPT_CONTENT = ` -(() => { +const LINK_LOAD_SCRIPT_CONTENT = /* @__PURE__ */ (() => `(() => { const CSP_MEDIA_ATTR = '${CSP_MEDIA_ATTR}'; const documentElement = document.documentElement; @@ -57,7 +56,7 @@ const LINK_LOAD_SCRIPT_CONTENT = ` }; documentElement.addEventListener('load', listener, true); -})();`; +})();`)(); /** Partial representation of an `HTMLElement`. */ interface PartialHTMLElement { From ad1d7d76fc6b94b8f12841fcfb331e5fb098403e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 17 Dec 2024 19:46:56 +0000 Subject: [PATCH 0157/2162] fix(@angular/ssr): ensure correct `Location` header for redirects behind a proxy Previously, when the application was served behind a proxy, server-side redirects generated an incorrect Location header, causing navigation issues. This fix updates `createRequestUrl` to use the port from the Host header, ensuring accurate in proxy environments. Additionally, the Location header now only contains the pathname, improving compliance with redirect handling in such setups. Closes #29151 --- packages/angular/ssr/node/src/request.ts | 32 ++++++++++++++++++++---- packages/angular/ssr/src/app.ts | 11 ++++---- packages/angular/ssr/test/app_spec.ts | 8 +++--- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/packages/angular/ssr/node/src/request.ts b/packages/angular/ssr/node/src/request.ts index 990a3100df05..78ec7f2ef712 100644 --- a/packages/angular/ssr/node/src/request.ts +++ b/packages/angular/ssr/node/src/request.ts @@ -83,18 +83,40 @@ function createRequestUrl(nodeRequest: IncomingMessage | Http2ServerRequest): UR originalUrl, } = nodeRequest as IncomingMessage & { originalUrl?: string }; const protocol = - headers['x-forwarded-proto'] ?? ('encrypted' in socket && socket.encrypted ? 'https' : 'http'); - const hostname = headers['x-forwarded-host'] ?? headers.host ?? headers[':authority']; - const port = headers['x-forwarded-port'] ?? socket.localPort; + getFirstHeaderValue(headers['x-forwarded-proto']) ?? + ('encrypted' in socket && socket.encrypted ? 'https' : 'http'); + const hostname = + getFirstHeaderValue(headers['x-forwarded-host']) ?? headers.host ?? headers[':authority']; if (Array.isArray(hostname)) { throw new Error('host value cannot be an array.'); } let hostnameWithPort = hostname; - if (port && !hostname?.includes(':')) { - hostnameWithPort += `:${port}`; + if (!hostname?.includes(':')) { + const port = getFirstHeaderValue(headers['x-forwarded-port']); + if (port) { + hostnameWithPort += `:${port}`; + } } return new URL(originalUrl ?? url, `${protocol}://${hostnameWithPort}`); } + +/** + * Extracts the first value from a multi-value header string. + * + * @param value - A string or an array of strings representing the header values. + * If it's a string, values are expected to be comma-separated. + * @returns The first trimmed value from the multi-value header, or `undefined` if the input is invalid or empty. + * + * @example + * ```typescript + * getFirstHeaderValue("value1, value2, value3"); // "value1" + * getFirstHeaderValue(["value1", "value2"]); // "value1" + * getFirstHeaderValue(undefined); // undefined + * ``` + */ +function getFirstHeaderValue(value: string | string[] | undefined): string | undefined { + return value?.toString().split(',', 1)[0]?.trim(); +} diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 85f1ca9818ad..10f49061a390 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -161,14 +161,15 @@ export class AngularServerApp { const { redirectTo, status, renderMode } = matchedRoute; if (redirectTo !== undefined) { - return Response.redirect( - new URL(buildPathWithParams(redirectTo, url.pathname), url), + return new Response(null, { // Note: The status code is validated during route extraction. // 302 Found is used by default for redirections // See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (status as any) ?? 302, - ); + status: status ?? 302, + headers: { + 'Location': buildPathWithParams(redirectTo, url.pathname), + }, + }); } if (renderMode === RenderMode.Prerender) { diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index 1ae6d2e3e20b..6142fbd0c7ae 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -106,25 +106,25 @@ describe('AngularServerApp', () => { it('should correctly handle top level redirects', async () => { const response = await app.handle(new Request('http://localhost/redirect')); - expect(response?.headers.get('location')).toContain('http://localhost/home'); + expect(response?.headers.get('location')).toContain('/home'); expect(response?.status).toBe(302); }); it('should correctly handle relative nested redirects', async () => { const response = await app.handle(new Request('http://localhost/redirect/relative')); - expect(response?.headers.get('location')).toContain('http://localhost/redirect/home'); + expect(response?.headers.get('location')).toContain('/redirect/home'); expect(response?.status).toBe(302); }); it('should correctly handle relative nested redirects with parameter', async () => { const response = await app.handle(new Request('http://localhost/redirect/param/relative')); - expect(response?.headers.get('location')).toContain('http://localhost/redirect/param/home'); + expect(response?.headers.get('location')).toContain('/redirect/param/home'); expect(response?.status).toBe(302); }); it('should correctly handle absolute nested redirects', async () => { const response = await app.handle(new Request('http://localhost/redirect/absolute')); - expect(response?.headers.get('location')).toContain('http://localhost/home'); + expect(response?.headers.get('location')).toContain('/home'); expect(response?.status).toBe(302); }); From fe1ae6933998104c144b2c8854f362289c8d91c6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:08:51 -0500 Subject: [PATCH 0158/2162] fix(@angular-devkit/architect): avoid Node.js resolution for relative builder schema To avoid the need to perform Node.js resolution for the typical case of a relative builder schema, a check is now performed to determine if a schema path within the build manifest appears to be relative. --- .../node/node-modules-architect-host.ts | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/packages/angular_devkit/architect/node/node-modules-architect-host.ts b/packages/angular_devkit/architect/node/node-modules-architect-host.ts index c7ee4d85f576..feb90e803b4a 100644 --- a/packages/angular_devkit/architect/node/node-modules-architect-host.ts +++ b/packages/angular_devkit/architect/node/node-modules-architect-host.ts @@ -193,28 +193,22 @@ export class WorkspaceNodeModulesArchitectHost implements ArchitectHost "${builder.schema}"`, + `Package "${packageName}" has an invalid builder schema path: "${builderName}" --> "${builder.schema}"`, ); } // The file could be either a package reference or in the local manifest directory. - // Node resolution is tried first then reading the file from the manifest directory if resolution fails. - try { - schemaPath = localRequire.resolve(schemaPath, { - paths: [buildersManifestDirectory], - }); - } catch (e) { - if ((e as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND') { - schemaPath = path.join(buildersManifestDirectory, schemaPath); - } else { - throw e; - } + if (schemaPath.startsWith('.')) { + schemaPath = path.join(buildersManifestDirectory, schemaPath); + } else { + const manifestRequire = createRequire(buildersManifestDirectory + '/'); + schemaPath = manifestRequire.resolve(schemaPath); } const schemaText = readFileSync(schemaPath, 'utf-8'); From 1aed6871fefe5c3026fdeb1a73eb315eabf5c0c9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 18 Dec 2024 17:06:06 +0000 Subject: [PATCH 0159/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +-- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 40 +++++++++--------- package.json | 6 +-- pnpm-lock.yaml | 34 +++++++-------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++------- yarn.lock | 32 +++++++------- 11 files changed, 103 insertions(+), 103 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 38e438aa39b3..f13099e27ffb 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=998127843 -pnpm-lock.yaml=-686671543 +package.json=-961871269 +pnpm-lock.yaml=2053402545 pnpm-workspace.yaml=1711114604 -yarn.lock=1099635317 +yarn.lock=-62288348 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index e9bb5ff4a653..1d2370dcce73 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + - uses: angular/dev-infra/github-actions/branch-manager@36b7540c8baf768285e55e02cb440c5e1eb658fa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b70272a23ae..950c664047fe 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - run: yarn 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 e9d8517143f5..c62135bb0c0f 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@36b7540c8baf768285e55e02cb440c5e1eb658fa 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + - uses: angular/dev-infra/github-actions/post-approval-changes@36b7540c8baf768285e55e02cb440c5e1eb658fa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 501954804500..359b8658f5e8 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + - uses: angular/dev-infra/github-actions/feature-request@36b7540c8baf768285e55e02cb440c5e1eb658fa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 9069c1869234..c28b7e0a14be 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable # 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 73f3f6b5846c..be47ada1fcd5 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/linting/licenses@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Check tooling setup run: yarn 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@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -113,13 +113,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,13 +130,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -151,13 +151,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -174,12 +174,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2e0abc2882242fac98af9e90bb05bd7f426726a7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 26f11b0d428e..89a9385e9bc1 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.3", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee", "@angular/cdk": "19.1.0-next.2", "@angular/common": "19.1.0-next.3", "@angular/compiler": "19.1.0-next.3", @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-next.3", "@angular/localize": "19.1.0-next.3", "@angular/material": "19.1.0-next.2", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408", "@angular/platform-browser": "19.1.0-next.3", "@angular/platform-browser-dynamic": "19.1.0-next.3", "@angular/platform-server": "19.1.0-next.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80be17089d5d..ac8db496b5c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/core@19.1.0-next.3) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9 - version: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297 + version: github.com/angular/bazel-builds/d9b105ada50e036455e44eb61cc218c696f50297(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800 - version: github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee + version: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.2 version: 19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1) @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-next.2 version: 19.1.0-next.2(@angular/animations@19.1.0-next.3)(@angular/cdk@19.1.0-next.2)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/forms@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb - version: github.com/angular/dev-infra-private-ng-dev-builds/1aeefede77b2ad246250324ae72fa9d70438b2cb + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408 + version: github.com/angular/dev-infra-private-ng-dev-builds/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408 '@angular/platform-browser': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) @@ -14825,15 +14825,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/b788089a8335af49adbbb4f32d238af7f0f437d9} - id: github.com/angular/bazel-builds/b788089a8335af49adbbb4f32d238af7f0f437d9 + github.com/angular/bazel-builds/d9b105ada50e036455e44eb61cc218c696f50297(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/d9b105ada50e036455e44eb61cc218c696f50297} + id: github.com/angular/bazel-builds/d9b105ada50e036455e44eb61cc218c696f50297 name: '@angular/bazel' version: 19.1.0-next.3 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.3+sha-add84dd + '@angular/compiler-cli': 19.1.0-next.3+sha-c181903 '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -14862,11 +14862,11 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/a09ac38aeae6dc96ff2073f161ace8017b7ce800} - id: github.com/angular/dev-infra-private-build-tooling-builds/a09ac38aeae6dc96ff2073f161ace8017b7ce800 + github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/23a3f5d3df3644a47fefb864aa575c6ff0044cee} + id: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee name: '@angular/build-tooling' - version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 + version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) @@ -14934,10 +14934,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/1aeefede77b2ad246250324ae72fa9d70438b2cb: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/1aeefede77b2ad246250324ae72fa9d70438b2cb} + github.com/angular/dev-infra-private-ng-dev-builds/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408} name: '@angular/ng-dev' - version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 + version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa hasBin: true dependencies: '@google-cloud/spanner': 7.16.0(supports-color@9.4.0) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index f73a6439bf61..aa2c1658e17a 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#66a65d8b59649ad376085a08088dfd8c12d74fb7", - "@angular/cdk": "github:angular/cdk-builds#696e76b821cc1c2872e3e99f6abd4ce7e5bbf735", - "@angular/common": "github:angular/common-builds#e39c94dd4e649e1722f3fa523010010549345096", - "@angular/compiler": "github:angular/compiler-builds#c6170b1dffc87c3fc66539d98a523a3e0d3a21c7", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#314bca432e53a54f7a65276122b3db3683ff9a02", - "@angular/core": "github:angular/core-builds#3d700f657cace50b9cd70b40c769b481c1603c17", - "@angular/forms": "github:angular/forms-builds#719b887c65976c3b84f1392c3ce536d46fe05f65", - "@angular/language-service": "github:angular/language-service-builds#efe394e67210024fa38e190e6b4bc76d357eab9d", - "@angular/localize": "github:angular/localize-builds#d733ef3f49229f680e358a3db1872db7c09f2934", - "@angular/material": "github:angular/material-builds#0eafbe3c8664bc3da192eecae27a971c23af4080", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#71a76b4bab80cf03a05ef845d79a97ff740a8d49", - "@angular/platform-browser": "github:angular/platform-browser-builds#b4fb153243a1ed613695b1b0c555a76c92c76ed9", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#3b278e5a48d7208e1eb724211917c174753cb400", - "@angular/platform-server": "github:angular/platform-server-builds#9f2eff3c2d577128cc000bdddb0fe2ec10a4f5a3", - "@angular/router": "github:angular/router-builds#bffd99e460843e2a14aa04db7853b30f76ff67e5", - "@angular/service-worker": "github:angular/service-worker-builds#ce0ec334bddeef58eada5b30842b9b6f845e6f43" + "@angular/animations": "github:angular/animations-builds#d4b71a8d3153f6c58087d95360c2ed5f7dd547cf", + "@angular/cdk": "github:angular/cdk-builds#e0607f309f23845bbb66bcc50efc148af7044960", + "@angular/common": "github:angular/common-builds#4fd8f796a7c567bf3391013273be329d1bfa6024", + "@angular/compiler": "github:angular/compiler-builds#b6b767faa2265e4d9162d1b00ece60e62f4e5a9e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#1facaa9fac858e9a6c19eb5b8009bb0213919a35", + "@angular/core": "github:angular/core-builds#78ebc731de201a86616b8e436b7d710e35492738", + "@angular/forms": "github:angular/forms-builds#38ebd42a340255eeeb75aa11b89d1154a820b18d", + "@angular/language-service": "github:angular/language-service-builds#bc37dd198b92babc2d991f9ca105e2eabc3ef9e8", + "@angular/localize": "github:angular/localize-builds#9a35ccc39aabe5c52024157b4006fe034d18997c", + "@angular/material": "github:angular/material-builds#3b0f5ad48933b7cf542326ab98a174cbbda88931", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#aec96028ec52794a68e40403867d3ab04f8e65fa", + "@angular/platform-browser": "github:angular/platform-browser-builds#99d2afccf283f81dadc1fee281cea34631aa55ee", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#dbafd8c9fa13b509aee73286ea0f4110ed54995c", + "@angular/platform-server": "github:angular/platform-server-builds#069232cb850b0fa7f6d2a61968a58f94e1075437", + "@angular/router": "github:angular/router-builds#baaa39cb0934978a62bad05ea0eba11a60ca1761", + "@angular/service-worker": "github:angular/service-worker-builds#cb927ff72f4a1e3244f8fecac04c508b6428a2da" } } diff --git a/yarn.lock b/yarn.lock index b500d1d0b6a6..a37f9a994752 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9": - version: 19.1.0-next.3+sha-add84dd - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=b788089a8335af49adbbb4f32d238af7f0f437d9" +"@angular/bazel@https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297": + version: 19.1.0-next.3+sha-c181903 + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=d9b105ada50e036455e44eb61cc218c696f50297" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.3+sha-add84dd + "@angular/compiler-cli": 19.1.0-next.3+sha-c181903 "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/a3354a2fe921e412f64e139e8c0ee03b7091c0f747b70fc01db3a10668c26d99fd8f19d964ac005b3dc547332e3cbd5a8564a1f7ec54d7fadf94afc713b7394a + checksum: 10c0/228f4e252d84f3573f38e24058265946032acc4963d645120b06190ee3b282be4ae9f8af4a7855b5e22e51e46df51d2ec42785419f0103f19e8c786defb8956d languageName: node linkType: hard @@ -104,9 +104,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800": - version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=a09ac38aeae6dc96ff2073f161ace8017b7ce800" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee": + version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=23a3f5d3df3644a47fefb864aa575c6ff0044cee" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.1" @@ -143,7 +143,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/c5a324c4d4d284a41fe80b63ad3ba737daca5a7ccd31250883254a865166acafd3aafbfb30c2309fbfd3d119ec41da5bb6602036341c5a2d6123b406bd3f3b8a + checksum: 10c0/76b20a583891e446185312960fb94e195d801c17a81dcc0728294b60dbba4d4923c7cd18508cc7b11e4fdc206bab52cc92a213c1a73d6a9477027581558c9d78 languageName: node linkType: hard @@ -310,8 +310,8 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.3" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#b788089a8335af49adbbb4f32d238af7f0f437d9" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a09ac38aeae6dc96ff2073f161ace8017b7ce800" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee" "@angular/cdk": "npm:19.1.0-next.2" "@angular/common": "npm:19.1.0-next.3" "@angular/compiler": "npm:19.1.0-next.3" @@ -320,7 +320,7 @@ __metadata: "@angular/forms": "npm:19.1.0-next.3" "@angular/localize": "npm:19.1.0-next.3" "@angular/material": "npm:19.1.0-next.2" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408" "@angular/platform-browser": "npm:19.1.0-next.3" "@angular/platform-browser-dynamic": "npm:19.1.0-next.3" "@angular/platform-server": "npm:19.1.0-next.3" @@ -532,9 +532,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#1aeefede77b2ad246250324ae72fa9d70438b2cb": - version: 0.0.0-2e0abc2882242fac98af9e90bb05bd7f426726a7 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=1aeefede77b2ad246250324ae72fa9d70438b2cb" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408": + version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -549,7 +549,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/3f0221d665c77635fde69c39cfb4c126e8b613951b16efda24f5d114678e776dd32f6da7a4546132a60de8e08cc275155dd692e972ba6aa25fc9b2f069ebcbe7 + checksum: 10c0/303cff54e127201c06d982374f80211763f3518a25d7aade71d2db3803f044e8c11e298556c1223768af10b44ab92df5c039308e81e0bdbd89ad63dd01742091 languageName: node linkType: hard From 938bd4ac5946efb386a235eaade572858d34c2c5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 18 Dec 2024 06:20:07 +0000 Subject: [PATCH 0160/2162] build: update actions/upload-artifact action to v4.5.0 --- .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 05e97d28f0e4..9f5ca176c68f 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@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: SARIF file path: results.sarif From d99e4ed49359632657cd170524673dd9f4e88b82 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 18 Dec 2024 13:45:01 -0800 Subject: [PATCH 0161/2162] docs: release notes for the v19.0.6 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27a449e4b7de..eb533134c3c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 19.0.6 (2024-12-18) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------ | +| [db7421231](https://github.com/angular/angular-cli/commit/db7421231c3da7bbbfde72dc35642aaf005fbeca) | fix | jasmine.clock with app builder | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------- | +| [5fbc105ed](https://github.com/angular/angular-cli/commit/5fbc105ed0cb76106916660d99fc53d7480dcbc8) | fix | force HTTP/1.1 in dev-server SSR with SSL | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [2f4df6b2b](https://github.com/angular/angular-cli/commit/2f4df6b2be458b3651df49f3bced923e8df4d547) | fix | correctly resolve pre-transform resources in Vite SSR without AppEngine | +| [0789a9e13](https://github.com/angular/angular-cli/commit/0789a9e133fed4edc29b108630b2cf91e157127e) | fix | ensure correct `Location` header for redirects behind a proxy | + + + # 19.1.0-next.1 (2024-12-12) From 86c8c5252c42985a90da068185591b0d0427b825 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 18 Dec 2024 13:51:06 -0800 Subject: [PATCH 0162/2162] release: cut the v19.1.0-next.2 release --- .../npm_translate_lock_MzA5NzUwNzMx | 2 +- CHANGELOG.md | 33 +++++++++++++++++++ package.json | 2 +- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index f13099e27ffb..97ae284e7eb8 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-961871269 +package.json=1634106874 pnpm-lock.yaml=2053402545 pnpm-workspace.yaml=1711114604 yarn.lock=-62288348 diff --git a/CHANGELOG.md b/CHANGELOG.md index eb533134c3c5..438c291a44cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,36 @@ + + +# 19.1.0-next.2 (2024-12-18) + +### @angular-devkit/architect + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [fe1ae6933](https://github.com/angular/angular-cli/commit/fe1ae6933998104c144b2c8854f362289c8d91c6) | fix | avoid Node.js resolution for relative builder schema | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------ | +| [a9a347014](https://github.com/angular/angular-cli/commit/a9a3470147aaf66ff4784a5b5c26c56d1051a5b3) | fix | jasmine.clock with app builder | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------- | +| [298b554a7](https://github.com/angular/angular-cli/commit/298b554a7a40465444b4c508e2250ecbf459ea47) | feat | enable component template hot replacement by default | +| [19bb2d480](https://github.com/angular/angular-cli/commit/19bb2d48097eaf8dcdbf584603210146b5f1b81e) | fix | force HTTP/1.1 in dev-server SSR with SSL | +| [3b7e6a8c6](https://github.com/angular/angular-cli/commit/3b7e6a8c6e2e018a85b437256040fd9c8161d537) | fix | invalidate component template updates with dev-server SSR | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [1bf9381c8](https://github.com/angular/angular-cli/commit/1bf9381c8c580321c8a473da1735839ecaf5ad76) | fix | correctly resolve pre-transform resources in Vite SSR without AppEngine | +| [ad1d7d76f](https://github.com/angular/angular-cli/commit/ad1d7d76fc6b94b8f12841fcfb331e5fb098403e) | fix | ensure correct `Location` header for redirects behind a proxy | + + + # 19.0.6 (2024-12-18) diff --git a/package.json b/package.json index 89a9385e9bc1..950677b238b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "19.1.0-next.1", + "version": "19.1.0-next.2", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 07a8bce68f2e3383cad3cc2673562d00443e98bf Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 19 Dec 2024 06:05:35 +0000 Subject: [PATCH 0163/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 30 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 276 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 206 ++++++------- 7 files changed, 283 insertions(+), 283 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 97ae284e7eb8..2cbfad2c421e 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1634106874 -pnpm-lock.yaml=2053402545 +package.json=1537147063 +pnpm-lock.yaml=-1558034193 pnpm-workspace.yaml=1711114604 -yarn.lock=-62288348 +yarn.lock=-370009616 diff --git a/package.json b/package.json index 950677b238b3..2f942f367d4d 100644 --- a/package.json +++ b/package.json @@ -42,23 +42,23 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.1.0-next.3", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297", + "@angular/animations": "19.1.0-next.4", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126", "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee", - "@angular/cdk": "19.1.0-next.2", - "@angular/common": "19.1.0-next.3", - "@angular/compiler": "19.1.0-next.3", - "@angular/compiler-cli": "19.1.0-next.3", - "@angular/core": "19.1.0-next.3", - "@angular/forms": "19.1.0-next.3", - "@angular/localize": "19.1.0-next.3", - "@angular/material": "19.1.0-next.2", + "@angular/cdk": "19.1.0-next.3", + "@angular/common": "19.1.0-next.4", + "@angular/compiler": "19.1.0-next.4", + "@angular/compiler-cli": "19.1.0-next.4", + "@angular/core": "19.1.0-next.4", + "@angular/forms": "19.1.0-next.4", + "@angular/localize": "19.1.0-next.4", + "@angular/material": "19.1.0-next.3", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408", - "@angular/platform-browser": "19.1.0-next.3", - "@angular/platform-browser-dynamic": "19.1.0-next.3", - "@angular/platform-server": "19.1.0-next.3", - "@angular/router": "19.1.0-next.3", - "@angular/service-worker": "19.1.0-next.3", + "@angular/platform-browser": "19.1.0-next.4", + "@angular/platform-browser-dynamic": "19.1.0-next.4", + "@angular/platform-server": "19.1.0-next.4", + "@angular/router": "19.1.0-next.4", + "@angular/service-worker": "19.1.0-next.4", "@babel/core": "7.26.0", "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 5fafb91b24ca..1f2247314655 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -27,12 +27,12 @@ } }, "devDependencies": { - "@angular/common": "19.1.0-next.3", - "@angular/compiler": "19.1.0-next.3", - "@angular/core": "19.1.0-next.3", - "@angular/platform-browser": "19.1.0-next.3", - "@angular/platform-server": "19.1.0-next.3", - "@angular/router": "19.1.0-next.3", + "@angular/common": "19.1.0-next.4", + "@angular/compiler": "19.1.0-next.4", + "@angular/core": "19.1.0-next.4", + "@angular/platform-browser": "19.1.0-next.4", + "@angular/platform-server": "19.1.0-next.4", + "@angular/router": "19.1.0-next.4", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index d57d7cf6c245..be6911c13ebb 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.1.0-next.3", - "@angular/compiler-cli": "19.1.0-next.3", + "@angular/compiler": "19.1.0-next.4", + "@angular/compiler-cli": "19.1.0-next.4", "typescript": "5.7.2", "webpack": "5.97.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac8db496b5c1..24e53aacc77a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,56 +17,56 @@ importers: specifier: 2.3.0 version: 2.3.0 '@angular/animations': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/core@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297 - version: github.com/angular/bazel-builds/d9b105ada50e036455e44eb61cc218c696f50297(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126 + version: github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee - version: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + version: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/common': specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) + version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/common': + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) '@angular/compiler': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/core@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/compiler-cli': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@angular/core': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) '@angular/forms': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) '@angular/localize': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4) '@angular/material': - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/animations@19.1.0-next.3)(@angular/cdk@19.1.0-next.2)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/forms@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408 version: github.com/angular/dev-infra-private-ng-dev-builds/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408 '@angular/platform-browser': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) '@angular/platform-browser-dynamic': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4) '@angular/platform-server': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4) '@angular/router': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) '@angular/service-worker': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + specifier: 19.1.0-next.4 + version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) '@babel/core': specifier: 7.26.0 version: 7.26.0 @@ -363,7 +363,7 @@ importers: version: 2.0.0 ng-packagr: specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.3)(tslib@2.8.1)(typescript@5.7.2) + version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2) npm: specifier: ^11.0.0 version: 11.0.0 @@ -555,13 +555,13 @@ packages: source-map: 0.7.4 dev: true - /@angular/animations@19.1.0-next.3(@angular/core@19.1.0-next.3): - resolution: {integrity: sha512-Uf0NbInXdT5CnpuG7bF6a9TwBrnecfIHqsfJqzzGPnx1hWssCgyvNLnWIBn3tToJtooTE669PNsHIdSDabKnaA==} + /@angular/animations@19.1.0-next.4(@angular/core@19.1.0-next.4): + resolution: {integrity: sha512-UJQVQsMSloo+1IITfE3pqQL/Gmm7nt5XtKaz+cXUGeTPS5szDFrUjmFJSWVmcj595FmqaiFBL8fuxgWv+Qmvlg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.3 + '@angular/core': 19.1.0-next.4 dependencies: - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -575,7 +575,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): resolution: {integrity: sha512-rLzY+2AxkNb82TSRp7DaZH/y0/ZdUV3g0OwJl7ajXvyIH0oJgq5mtNAO4VUreU+MR6h3tGO+XJRg6W0OUM9rzw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -607,11 +607,11 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1901.0-next.1(chokidar@4.0.1) - '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) - '@angular/localize': 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3) - '@angular/platform-server': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3) - '@angular/service-worker': 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) + '@angular/localize': 19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4) + '@angular/platform-server': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4) + '@angular/service-worker': 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-split-export-declaration': 7.24.7 @@ -654,42 +654,42 @@ packages: - yaml dev: true - /@angular/cdk@19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1): - resolution: {integrity: sha512-nXv4e3blwFPLdUMc/kTe7A6eO3fw/Ah4Eu+6rF5Pi5KHRV7XlZfRit2XbTcjzVHn3e+MYeLvh2LhKt8RLb/TnQ==} + /@angular/cdk@19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1): + resolution: {integrity: sha512-7JX7kzV3PmeXwoL7dd2xLjDvZ7w/U+vuP/IHxSv0p+ThBZraMibcSUK/OeFC2XDKMs7Z8/0YnH/OWaAkxj8gmA==} peerDependencies: '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 optionalDependencies: parse5: 7.2.1 dev: true - /@angular/common@19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1): - resolution: {integrity: sha512-vyPSuB/TD/Tba9gCPa4pUTSNAd3Fcul7Kd0prHIiJ/MpocEp+JFBeeedgFumRB2sdP5xfuvPK3cqPF/e+6AklQ==} + /@angular/common@19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1): + resolution: {integrity: sha512-D64sv7Kpz6lN3efSbajRQ9DSGdpHrylfRsuAfK8iipGAel/3UKdbAsPjf0yJa/7ITIhKPi0j922EhwA+Gfnjkw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.3 + '@angular/core': 19.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/compiler-cli@19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2): - resolution: {integrity: sha512-FtBVAG566WcpuW8c1NJiF8KVwPDrYD+ang6Npk4JCwetX6ien+4B2qM/l11YPW1Bm1uWunUvziOV6oW997t1Uw==} + /@angular/compiler-cli@19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2): + resolution: {integrity: sha512-qHe+zobrufBNdSk1qXYcHzxftaaVajjypPKL3n7ZafLHFmX5XpIbRpMM/Xbg+zOtPZwGx2lB9tpce3G+RdTktA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.3 + '@angular/compiler': 19.1.0-next.4 typescript: 5.7.2 dependencies: - '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) + '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) '@babel/core': 7.26.0 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.2 @@ -703,16 +703,16 @@ packages: - supports-color dev: true - /@angular/compiler@19.1.0-next.3(@angular/core@19.1.0-next.3): - resolution: {integrity: sha512-mzz5M+f6XXbdYNxpyp1LRtn670tE+vFsZ9JuvsNpN8+dnJFc4Y/eaMwk1+vsJkUb6EZybc5Q2soma2x1ofJMSg==} + /@angular/compiler@19.1.0-next.4(@angular/core@19.1.0-next.4): + resolution: {integrity: sha512-MZLExdvYtz9T8Zc9xbbBnV8VHwpo6KxSEeMr93KSg/xM6ZlnazlgI+zpkYfz57GaW45wtUX4Uzi/qFR41M9j4g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.3 + '@angular/core': 19.1.0-next.4 peerDependenciesMeta: '@angular/core': optional: true dependencies: - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -728,8 +728,8 @@ packages: zone.js: 0.15.0 dev: true - /@angular/core@19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0): - resolution: {integrity: sha512-WyVj9AVkEtKIGvWx1XvmZm6KFpIE8gQYuPLVAUMoX9mmxnA69LmMeYmCZEJGpH2uJDDv3kLxrgvom8sAPH3/Ng==} + /@angular/core@19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-TxgjuK2VZPSWP3Wn8EzWZphyOXz8Mwq/OKSBkPKfUkgM8fxZAZ/kORFu+Db96Ov3SgCvDYy5mmDCoCgC8IKGbg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 @@ -740,32 +740,32 @@ packages: zone.js: 0.15.0 dev: true - /@angular/forms@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1): - resolution: {integrity: sha512-4BaVb64jQ1IK0TNApcjsbni9Pm0NTuSrwy/snex6ISQlYgZxy12evb6B3TlvIsuN1MhSyDiZrAcrhGCYTRT6lA==} + /@angular/forms@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1): + resolution: {integrity: sha512-91UwWPNg4hAl5AOzQsw4JmY+aY12TVjVzdWYcRc4rkj1UwNRaLQYsMF2fospg/Mn7pmqqHzbDCOFOCnUpDhz9w==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.3 - '@angular/core': 19.1.0-next.3 - '@angular/platform-browser': 19.1.0-next.3 + '@angular/common': 19.1.0-next.4 + '@angular/core': 19.1.0-next.4 + '@angular/platform-browser': 19.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/localize@19.1.0-next.3(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3): - resolution: {integrity: sha512-7dyN9Ib+8bHN8K5lEIln+/+uM+Z0RjKFB9G9KqWzkOBwKpF41UNX2mHat1OoF9WMX4iuan+yTS+qBmLHhEtpnA==} + /@angular/localize@19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4): + resolution: {integrity: sha512-o984w7OU/QlWgT1APwe4cuZ4FbCPPLt7HLvGAMpMr29G/t/zrK95PCHueTe3r7vbXZTikY0P4hjNegOJmbc8sw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.3 - '@angular/compiler-cli': 19.1.0-next.3 + '@angular/compiler': 19.1.0-next.4 + '@angular/compiler-cli': 19.1.0-next.4 dependencies: - '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) + '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 fast-glob: 3.3.2 @@ -774,105 +774,105 @@ packages: - supports-color dev: true - /@angular/material@19.1.0-next.2(@angular/animations@19.1.0-next.3)(@angular/cdk@19.1.0-next.2)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/forms@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1): - resolution: {integrity: sha512-36bBXgaUrGh3cdfV+sgtOotlorJHBOMQ/Q9KBtCA/g6KEtK1+EaVSoV/QHiX256LpuUFRzNMQTyFl2GhfG6YhQ==} + /@angular/material@19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1): + resolution: {integrity: sha512-aq92B77YkgHSoew2aN2Fqeg9eu/DiL3c09JKul0PW7cQfMejYU1UmiiyhXS5MhxFdVofhsJdV5C8m4aMzjagVw==} peerDependencies: '@angular/animations': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - '@angular/cdk': 19.1.0-next.2 + '@angular/cdk': 19.1.0-next.3 '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/forms': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/platform-browser': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/animations': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/cdk': 19.1.0-next.2(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/forms': 19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1) - '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + '@angular/animations': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/cdk': 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/forms': 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) + '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/platform-browser-dynamic@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3): - resolution: {integrity: sha512-M9XCelWEu9sOT/TW15wK/FPWrhsfzyJq50ZSr6xGwkrIjfqTkmYcKA+9+B9DOSgnugNMjLUfJoRW0XHD7IyDCg==} + /@angular/platform-browser-dynamic@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4): + resolution: {integrity: sha512-UdXH4YuD8WaW3U2BbcqQOBPb7hVCz/8WGOHY89ivNvS9dZiygwf1UZS+9x1jo3C3qH/ZJEQlo1c2lyZk3EV9Uw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.3 - '@angular/compiler': 19.1.0-next.3 - '@angular/core': 19.1.0-next.3 - '@angular/platform-browser': 19.1.0-next.3 + '@angular/common': 19.1.0-next.4 + '@angular/compiler': 19.1.0-next.4 + '@angular/core': 19.1.0-next.4 + '@angular/platform-browser': 19.1.0-next.4 dependencies: - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) tslib: 2.8.1 dev: true - /@angular/platform-browser@19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3): - resolution: {integrity: sha512-bavvrFQmot1jXPShK5yIzJwtWzLnkQaPqIVkaF/GbzEDAHryzr17CyjecZ7HmGEebwGe8IVhYKohwF8fn9zRng==} + /@angular/platform-browser@19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4): + resolution: {integrity: sha512-1fmNr8kQzDkvtI5wzjvsSlO1niTExyLl2J5yM/kp6F8Osx/55/Y1YhPBn2ZSz2Md3PHgL4qCyq5vnMGaGVUPqA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.3 - '@angular/common': 19.1.0-next.3 - '@angular/core': 19.1.0-next.3 + '@angular/animations': 19.1.0-next.4 + '@angular/common': 19.1.0-next.4 + '@angular/core': 19.1.0-next.4 peerDependenciesMeta: '@angular/animations': optional: true dependencies: - '@angular/animations': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/animations': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true - /@angular/platform-server@19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3): - resolution: {integrity: sha512-7ceVWFYgBEFdm6vhda4StGJY2HYJkVMJv1fcX63L2NSswRtaNbFTULwGADCl+kqDFQucTdq203+l1FAMMF7W5g==} + /@angular/platform-server@19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4): + resolution: {integrity: sha512-LwAXc7KChVki/lNOgoE1dpZa8f/3sJTKLvwPyKjsc88uMtwOhSd7gf6awcVb9j3OKvJIDXYhZmmJW4b9pdtvKw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.3 - '@angular/common': 19.1.0-next.3 - '@angular/compiler': 19.1.0-next.3 - '@angular/core': 19.1.0-next.3 - '@angular/platform-browser': 19.1.0-next.3 - dependencies: - '@angular/animations': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.3(@angular/core@19.1.0-next.3) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + '@angular/animations': 19.1.0-next.4 + '@angular/common': 19.1.0-next.4 + '@angular/compiler': 19.1.0-next.4 + '@angular/core': 19.1.0-next.4 + '@angular/platform-browser': 19.1.0-next.4 + dependencies: + '@angular/animations': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) tslib: 2.8.1 xhr2: 0.2.1 dev: true - /@angular/router@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3)(@angular/platform-browser@19.1.0-next.3)(rxjs@7.8.1): - resolution: {integrity: sha512-jOY+qLvkLeg2ArPCJWjvAPYSA7dpimF+ybhjpyJ4SzB4co3y238J9MmVJE7MDid5QUfD6UOF6lvAOgx91J9R2w==} + /@angular/router@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1): + resolution: {integrity: sha512-uHfXoulijpavMvCBtcAWM2drUAWgA5Ji8m6EBZMQTEud8JuTQFwyVswlL2wdqb9QoabN2eC5P5LziVTryNJbrw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.3 - '@angular/core': 19.1.0-next.3 - '@angular/platform-browser': 19.1.0-next.3 + '@angular/common': 19.1.0-next.4 + '@angular/core': 19.1.0-next.4 + '@angular/platform-browser': 19.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.3(@angular/animations@19.1.0-next.3)(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/service-worker@19.1.0-next.3(@angular/common@19.1.0-next.3)(@angular/core@19.1.0-next.3): - resolution: {integrity: sha512-dGn5LQvgYNeJEQym91iYC74Q7JCdkPoyVfi/6IY8J31pvUydwc9FZHQAmR6fhDseFwrfZsx3tKjkcpQTOdT/sw==} + /@angular/service-worker@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4): + resolution: {integrity: sha512-lbjbK8JvtiXmtCzIEHo6f9BES15WYoSwuGE0GBCbH82MzVuMWEwso4tXXI28MfrhynAA51/6lx3QR71CZj3Z6Q==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/common': 19.1.0-next.3 - '@angular/core': 19.1.0-next.3 + '@angular/common': 19.1.0-next.4 + '@angular/core': 19.1.0-next.4 dependencies: - '@angular/common': 19.1.0-next.3(@angular/core@19.1.0-next.3)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.3(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -10690,7 +10690,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.3)(tslib@2.8.1)(typescript@5.7.2): + /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2): resolution: {integrity: sha512-kqS63grbL+WnG5AveyXmqsMHeY2w6tmApfDuvK9lEC4u1VHfgGoA8Q3RKGkz+32zSI/eiBVXB/qMeeP+1q5QZA==} engines: {node: ^18.19.1 || >=20.11.1} hasBin: true @@ -10703,7 +10703,7 @@ packages: tailwindcss: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@rollup/plugin-json': 6.1.0(rollup@4.28.1) '@rollup/wasm-node': 4.28.1 ajv: 8.17.1 @@ -14825,15 +14825,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/d9b105ada50e036455e44eb61cc218c696f50297(@angular/compiler-cli@19.1.0-next.3)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/d9b105ada50e036455e44eb61cc218c696f50297} - id: github.com/angular/bazel-builds/d9b105ada50e036455e44eb61cc218c696f50297 + github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/c79da6c15ac32645b5e85ee9e098cbf3627e2126} + id: github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126 name: '@angular/bazel' - version: 19.1.0-next.3 + version: 19.1.0-next.4 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.3+sha-c181903 + '@angular/compiler-cli': 19.1.0-next.4+sha-3d86c58 '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -14846,7 +14846,7 @@ packages: terser: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.3(@angular/compiler@19.1.0-next.3)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) @@ -14862,14 +14862,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/23a3f5d3df3644a47fefb864aa575c6ff0044cee} id: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee name: '@angular/build-tooling' version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.3)(@angular/compiler@19.1.0-next.3)(@angular/localize@19.1.0-next.3)(@angular/platform-server@19.1.0-next.3)(@angular/service-worker@19.1.0-next.3)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index aa2c1658e17a..c34a00699905 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#d4b71a8d3153f6c58087d95360c2ed5f7dd547cf", - "@angular/cdk": "github:angular/cdk-builds#e0607f309f23845bbb66bcc50efc148af7044960", - "@angular/common": "github:angular/common-builds#4fd8f796a7c567bf3391013273be329d1bfa6024", - "@angular/compiler": "github:angular/compiler-builds#b6b767faa2265e4d9162d1b00ece60e62f4e5a9e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#1facaa9fac858e9a6c19eb5b8009bb0213919a35", - "@angular/core": "github:angular/core-builds#78ebc731de201a86616b8e436b7d710e35492738", - "@angular/forms": "github:angular/forms-builds#38ebd42a340255eeeb75aa11b89d1154a820b18d", - "@angular/language-service": "github:angular/language-service-builds#bc37dd198b92babc2d991f9ca105e2eabc3ef9e8", - "@angular/localize": "github:angular/localize-builds#9a35ccc39aabe5c52024157b4006fe034d18997c", - "@angular/material": "github:angular/material-builds#3b0f5ad48933b7cf542326ab98a174cbbda88931", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#aec96028ec52794a68e40403867d3ab04f8e65fa", - "@angular/platform-browser": "github:angular/platform-browser-builds#99d2afccf283f81dadc1fee281cea34631aa55ee", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#dbafd8c9fa13b509aee73286ea0f4110ed54995c", - "@angular/platform-server": "github:angular/platform-server-builds#069232cb850b0fa7f6d2a61968a58f94e1075437", - "@angular/router": "github:angular/router-builds#baaa39cb0934978a62bad05ea0eba11a60ca1761", - "@angular/service-worker": "github:angular/service-worker-builds#cb927ff72f4a1e3244f8fecac04c508b6428a2da" + "@angular/animations": "github:angular/animations-builds#a0f4330e5267bf907f833480ccf57ddd77ca05e2", + "@angular/cdk": "github:angular/cdk-builds#ac8ee6a665162df6bc178b0e2f9aa1d7fe5f68f3", + "@angular/common": "github:angular/common-builds#39012f511384f79fadd52b0f67a0374027819b45", + "@angular/compiler": "github:angular/compiler-builds#0f5063f7863e98767bc605c6f804713d807dc2f0", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e40a52bd35495b7197cb6f368f09cf84882f39c6", + "@angular/core": "github:angular/core-builds#19ec33d7dec0854ff002ea173a3aa5acebbb8faf", + "@angular/forms": "github:angular/forms-builds#358b705e04b5a3a7d48c5131daef99a8b34c5610", + "@angular/language-service": "github:angular/language-service-builds#5876f7bc2390894eef7e62e3a3e114a28ac69721", + "@angular/localize": "github:angular/localize-builds#c6ab4c1fedc524cd51a73e85fb747b0003ebc5b8", + "@angular/material": "github:angular/material-builds#dc2b42ba8ec16c9e18009e8b28725399bed88eca", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ecacecbcfb32e323dbc8844c739c3710717b4d5e", + "@angular/platform-browser": "github:angular/platform-browser-builds#b4b7dc99911f70c979d49df5f700d09c7f834a80", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e348b5eb629a0cda1099e9cae865179204ea23db", + "@angular/platform-server": "github:angular/platform-server-builds#0dff9a1f103390afa62c3abdbfa76178d4d335e4", + "@angular/router": "github:angular/router-builds#9365ce271e89e2834229b8f6cfbeb5972cd36882", + "@angular/service-worker": "github:angular/service-worker-builds#226269eb8174039d8c60a6c57e1c75e2f2edb2ee" } } diff --git a/yarn.lock b/yarn.lock index a37f9a994752..f9d980cedc41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -54,26 +54,26 @@ __metadata: languageName: node linkType: hard -"@angular/animations@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/animations@npm:19.1.0-next.3" +"@angular/animations@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/animations@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.3 - checksum: 10c0/310cb187e92be3fa332a3097003912111d817aa1230272de76e0ec2f2eca27762cbc73e7afad0ae28ce984a0138aec99f22d8b68b54bb61ccb138f5dfaed7514 + "@angular/core": 19.1.0-next.4 + checksum: 10c0/726da7b1ed1a9b95d55ed74d164d177022e43d14aabf04a5d70d8a3d7567259842c942a854e08200e32ca4cb78993983ea8d85197bdb9bf7f0fc551a30de489f languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297": - version: 19.1.0-next.3+sha-c181903 - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=d9b105ada50e036455e44eb61cc218c696f50297" +"@angular/bazel@https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126": + version: 19.1.0-next.4+sha-3d86c58 + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=c79da6c15ac32645b5e85ee9e098cbf3627e2126" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.3+sha-c181903 + "@angular/compiler-cli": 19.1.0-next.4+sha-3d86c58 "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/228f4e252d84f3573f38e24058265946032acc4963d645120b06190ee3b282be4ae9f8af4a7855b5e22e51e46df51d2ec42785419f0103f19e8c786defb8956d + checksum: 10c0/6df923b6c847ab88682313c3eab4b5e5ad1dfe9c5e2290b62400b1cc92e20c0fd418d4d308352e305845d17e97d1b3d695a11eeea7dd74ffb013bbcdf04c3bcf languageName: node linkType: hard @@ -214,9 +214,9 @@ __metadata: languageName: node linkType: hard -"@angular/cdk@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/cdk@npm:19.1.0-next.2" +"@angular/cdk@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/cdk@npm:19.1.0-next.3" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" @@ -227,25 +227,25 @@ __metadata: dependenciesMeta: parse5: optional: true - checksum: 10c0/94842bcfb6c3e3422546f2f74d71b6d027705fc3db5fe8b8f58cdc722cfc5c2bce0c715e304472304cc674c670579aaf092a9ce6dd3e3f2402b9104a3f454641 + checksum: 10c0/2b82a6ef310975f9d7413aff848803fcfc7f18410155337f7a4705cf8bb62f3f5082517022ae3a4ef0a2dec2c42cd9c319127d75e3d4a4ea9bb17c9181329243 languageName: node linkType: hard -"@angular/common@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/common@npm:19.1.0-next.3" +"@angular/common@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/common@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.3 + "@angular/core": 19.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/0f4b39288ac9d7a7d4b519a61551f47be206dfa249352662ac69ea69f0d7776291868c4c47b08a54e16dd7f2cb7534f7fba6e8abf0a8f4912fc4d9fe2cc054da + checksum: 10c0/0ea20172950989ea9b4614c1ab1fc5101bf173d155bf66a9732a6630322bb2fc2b2677f16bc877f5fe780a1ce7f8819874a2cc76d79d222f1da4a88faffa7b98 languageName: node linkType: hard -"@angular/compiler-cli@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/compiler-cli@npm:19.1.0-next.3" +"@angular/compiler-cli@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/compiler-cli@npm:19.1.0-next.4" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -256,39 +256,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.3 + "@angular/compiler": 19.1.0-next.4 typescript: ">=5.5 <5.8" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/c5717c1c6a3839393151b861e2754a494b7796ded8048d307fa9d6b394492f49c3344b89de42602f8542daaad9f7aae80768ec553f05a1e3e78f4bbf7e1e5518 + checksum: 10c0/812212e5dc71e277428e35ca35b3d06741116527a033d43d48493015d3b3980297faf3bbbd0642a54507987cb4037533536ebec73cd8b4c6fc389a3e4900ae13 languageName: node linkType: hard -"@angular/compiler@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/compiler@npm:19.1.0-next.3" +"@angular/compiler@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/compiler@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.3 + "@angular/core": 19.1.0-next.4 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/72edfe102470b9589c0004f56bd2ff350875427c51a4a7565bb3fad659f3525e69ceb1828e74f85dc00943c3e27ae03171a6ed3b8d9c8447460408f9c2d7ae8b + checksum: 10c0/9d603cf61034865bc29c05709ff6c1f74fa507701b372aece3411766bdcc8ad4bc3bb46512a257d6e40de5f29cf4610215a21905fdb128b2e2d586e4ad0d15b2 languageName: node linkType: hard -"@angular/core@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/core@npm:19.1.0-next.3" +"@angular/core@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/core@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/eb259b2cfd16e476096d41f68782cb4acdcd14e178a138b437ce3c3612c7d970c838610fe9d0ff335c3a5c03dcb1ee594f98586c94207831bfd2f11f7a398839 + checksum: 10c0/77be843501801ffef485c8ebd15c732bccc9cfc4971c221105c0ea444d20826adeb83beedaca219fcdf6199164fb2ea8839cdd4dea4952d063ab4c716f8e371f languageName: node linkType: hard @@ -309,23 +309,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.1.0-next.3" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#d9b105ada50e036455e44eb61cc218c696f50297" + "@angular/animations": "npm:19.1.0-next.4" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126" "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee" - "@angular/cdk": "npm:19.1.0-next.2" - "@angular/common": "npm:19.1.0-next.3" - "@angular/compiler": "npm:19.1.0-next.3" - "@angular/compiler-cli": "npm:19.1.0-next.3" - "@angular/core": "npm:19.1.0-next.3" - "@angular/forms": "npm:19.1.0-next.3" - "@angular/localize": "npm:19.1.0-next.3" - "@angular/material": "npm:19.1.0-next.2" + "@angular/cdk": "npm:19.1.0-next.3" + "@angular/common": "npm:19.1.0-next.4" + "@angular/compiler": "npm:19.1.0-next.4" + "@angular/compiler-cli": "npm:19.1.0-next.4" + "@angular/core": "npm:19.1.0-next.4" + "@angular/forms": "npm:19.1.0-next.4" + "@angular/localize": "npm:19.1.0-next.4" + "@angular/material": "npm:19.1.0-next.3" "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408" - "@angular/platform-browser": "npm:19.1.0-next.3" - "@angular/platform-browser-dynamic": "npm:19.1.0-next.3" - "@angular/platform-server": "npm:19.1.0-next.3" - "@angular/router": "npm:19.1.0-next.3" - "@angular/service-worker": "npm:19.1.0-next.3" + "@angular/platform-browser": "npm:19.1.0-next.4" + "@angular/platform-browser-dynamic": "npm:19.1.0-next.4" + "@angular/platform-server": "npm:19.1.0-next.4" + "@angular/router": "npm:19.1.0-next.4" + "@angular/service-worker": "npm:19.1.0-next.4" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -482,53 +482,53 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/forms@npm:19.1.0-next.3" +"@angular/forms@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/forms@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.3 - "@angular/core": 19.1.0-next.3 - "@angular/platform-browser": 19.1.0-next.3 + "@angular/common": 19.1.0-next.4 + "@angular/core": 19.1.0-next.4 + "@angular/platform-browser": 19.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/ac112479f597f93762528f9cec284c9409fe0a031e3d49464427c3e92886fae978eb78d912f2db49bf71397f238d17cabe6ca395641cc12bfaa142ceeb7646e6 + checksum: 10c0/bb0622ae5e9db52e33ec92208bfeffccd58d01ea0df60e2bc666b9751c72a324390c49dd3b1417a0232e9adfb6d24eca7dcf4cba1bf4cd8db30736c1770e17b5 languageName: node linkType: hard -"@angular/localize@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/localize@npm:19.1.0-next.3" +"@angular/localize@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/localize@npm:19.1.0-next.4" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" fast-glob: "npm:3.3.2" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.3 - "@angular/compiler-cli": 19.1.0-next.3 + "@angular/compiler": 19.1.0-next.4 + "@angular/compiler-cli": 19.1.0-next.4 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/65a724a8e23da04d43cc2b27c04bef07c97754ee9930abae091b24075ef68e30fb2598bd69393e1a10af9ab181acfedcfb0e3076f86c076cf84fc89d20b4e630 + checksum: 10c0/084d22d19b93268655b50681a328a0b4acd829d168e83c2d70c6c1b20e750b3d56aa1192c11f7c90d726337c290913208f600366b137cc53ad00872b96061055 languageName: node linkType: hard -"@angular/material@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/material@npm:19.1.0-next.2" +"@angular/material@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "@angular/material@npm:19.1.0-next.3" dependencies: tslib: "npm:^2.3.0" peerDependencies: "@angular/animations": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/cdk": 19.1.0-next.2 + "@angular/cdk": 19.1.0-next.3 "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/forms": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/platform-browser": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/9accf511bfee4ad377a0debae338cd4e4334d74c204ad0a96c0c37cfa9384ef9da72de8bdcfc430b2473f4ffdb74299823ac1180a4466f053ac133d2b6d4ec5a + checksum: 10c0/8ff266bb6859bbee16b352c053a68dbaa64e669052030d4044022196c2279a739da0769942dff5a0fa95be41674accd4a73d96311d04ace904526312b870aa7e languageName: node linkType: hard @@ -553,77 +553,77 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.3" +"@angular/platform-browser-dynamic@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.3 - "@angular/compiler": 19.1.0-next.3 - "@angular/core": 19.1.0-next.3 - "@angular/platform-browser": 19.1.0-next.3 - checksum: 10c0/43f1785744a68bbd5f0ec1af7dcd0937fdd8baf74f5f7f5c3f60488411abcd7237fc739a355a1cda383a98929a4e44f4c36f88c8b8d23b48b252c8d477e73738 + "@angular/common": 19.1.0-next.4 + "@angular/compiler": 19.1.0-next.4 + "@angular/core": 19.1.0-next.4 + "@angular/platform-browser": 19.1.0-next.4 + checksum: 10c0/552d6db24411be186d8392197a18c43e2d6a22b9cd2a5635cdbce24cb15f8fef3b470f121fbcb00a072eda02277c7604f50cf324bf3bb9740966d6a0420a5081 languageName: node linkType: hard -"@angular/platform-browser@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/platform-browser@npm:19.1.0-next.3" +"@angular/platform-browser@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/platform-browser@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.1.0-next.3 - "@angular/common": 19.1.0-next.3 - "@angular/core": 19.1.0-next.3 + "@angular/animations": 19.1.0-next.4 + "@angular/common": 19.1.0-next.4 + "@angular/core": 19.1.0-next.4 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/f127361624fc55f3990c8c507c0f154b4bdf1904452435a2c6e500649a6fe9374f3ee284fac512774bbadf199038154e53205183266513a8223f1dc0360b1a8a + checksum: 10c0/dcbb4863978f7911e69439caa9f74f44c0f199546300e9bb083521a31faa242919ebe1a6b3b1087584d233cf36178001ba24a24e833ce7e87ad861475707a667 languageName: node linkType: hard -"@angular/platform-server@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/platform-server@npm:19.1.0-next.3" +"@angular/platform-server@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/platform-server@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.1.0-next.3 - "@angular/common": 19.1.0-next.3 - "@angular/compiler": 19.1.0-next.3 - "@angular/core": 19.1.0-next.3 - "@angular/platform-browser": 19.1.0-next.3 - checksum: 10c0/5b2f41f7bfb06fb21a97f73057b408ea638878506b24f34671ec8ffc03619ad4000dfb37f75f5ca8692fd45ddc009e21456f225035ff31d8f290d62445d556b4 + "@angular/animations": 19.1.0-next.4 + "@angular/common": 19.1.0-next.4 + "@angular/compiler": 19.1.0-next.4 + "@angular/core": 19.1.0-next.4 + "@angular/platform-browser": 19.1.0-next.4 + checksum: 10c0/3941ce98bb790f2e4bf5b388ec4e7a9a71ef0f77418e95d66d7885e9230ddc68fd3e427343f91cfbc91db671d837c8dcc7d711e4f5cc7483695e95ffd2a0c8de languageName: node linkType: hard -"@angular/router@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/router@npm:19.1.0-next.3" +"@angular/router@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/router@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.3 - "@angular/core": 19.1.0-next.3 - "@angular/platform-browser": 19.1.0-next.3 + "@angular/common": 19.1.0-next.4 + "@angular/core": 19.1.0-next.4 + "@angular/platform-browser": 19.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/0008e3d86ba6bd2c042d5c6c0d5ccba4b46ddf53b9dede9f8d410a01757217c8da84d8002f48e405c41eecb8aa2dd5290c15cb9c15e06c9fc5ffb7c612db1790 + checksum: 10c0/d922c1d34d6e685f743d956a832049d268a117708e91451195f93555fa415e7267b3b713a7a54a9c790f07bb46c05f989e9d73bce4b6fb744b6796d3263bcdab languageName: node linkType: hard -"@angular/service-worker@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/service-worker@npm:19.1.0-next.3" +"@angular/service-worker@npm:19.1.0-next.4": + version: 19.1.0-next.4 + resolution: "@angular/service-worker@npm:19.1.0-next.4" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.3 - "@angular/core": 19.1.0-next.3 + "@angular/common": 19.1.0-next.4 + "@angular/core": 19.1.0-next.4 bin: ngsw-config: ngsw-config.js - checksum: 10c0/39182dac6d953ee7743672513caccf23fdbfdec43c045a90a3a4107777639eb691855ee6cd20f1c605f8b46bf2d8206d67a6aee33e773119ab49b79cbb3a4798 + checksum: 10c0/6d4258971db4576139568cd4784ca4b87278d83722308d67e0c936011e62d3a8b77dc0ea93983a6897af48ba38d2db79b91f90765cd502504931d1c1baf09be5 languageName: node linkType: hard From 307eda17e669c3edc9e7cd5603eca1b59828a267 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 19 Dec 2024 06:29:42 +0000 Subject: [PATCH 0164/2162] test: disable WTR e2e test Temporary disable this test due to ``` Failed to launch local browser installed at /home/runner/.cache/bazel/_bazel_runner/f47b8283cc0f5922f9455b06771398a1/sandbox/processwrapper-sandbox/410/execroot/angular_cli/bazel-out/k8-fastbuild/bin/tests/legacy-cli/e2e.npm_node22.sh.runfiles/org_chromium_chromium_linux_x64/chrome-linux/chrome. This could be because of a mismatch between the version of puppeteer and Chrome or Chromium. Try updating either of them, or adjust the executablePath option to point to another browser installation. Use the --puppeteer flag to run tests with bundled compatible version of Chromium. dist/test-out/c48222bb-ca34-455e-bc1b-122521e1e71e/app.component.spec.js: ``` --- tests/legacy-cli/e2e/tests/web-test-runner/basic.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/legacy-cli/e2e/tests/web-test-runner/basic.ts b/tests/legacy-cli/e2e/tests/web-test-runner/basic.ts index 2067e382b6d9..4985f872fb18 100644 --- a/tests/legacy-cli/e2e/tests/web-test-runner/basic.ts +++ b/tests/legacy-cli/e2e/tests/web-test-runner/basic.ts @@ -2,6 +2,9 @@ import { noSilentNg } from '../../utils/process'; import { applyWtrBuilder } from '../../utils/web-test-runner'; export default async function () { + // Temporary disabled due to failure. + return; + await applyWtrBuilder(); const { stderr } = await noSilentNg('test'); From 0718e1b70c101e624cd43dc08f7c58d2bae07f1f Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 19 Dec 2024 09:07:07 +0000 Subject: [PATCH 0165/2162] test: add `--disable-dev-shm-usage` to address `WebDriverError: unknown error: Chrome failed to start: crashed` This fixes an issue where protractor integration tests are failing with ``` [07:38:37] I/direct - Using ChromeDriver directly... [07:38:39] E/launcher - unknown error: Chrome failed to start: crashed. (unknown error: DevToolsActivePort file doesn't exist) ``` --- .../testing/builder/projects/hello-world-app/protractor.conf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/testing/builder/projects/hello-world-app/protractor.conf.js b/modules/testing/builder/projects/hello-world-app/protractor.conf.js index 89b7edda6324..313f7ac7c53b 100644 --- a/modules/testing/builder/projects/hello-world-app/protractor.conf.js +++ b/modules/testing/builder/projects/hello-world-app/protractor.conf.js @@ -18,7 +18,7 @@ exports.config = { capabilities: { browserName: 'chrome', chromeOptions: { - args: ['--headless', '--disable-gpu', '--window-size=800,600'], + args: ['--headless', '--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage'], binary: require('puppeteer').executablePath(), }, }, From 83f745779fbd29d40bf500e4f420c11e648e7d56 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 19 Dec 2024 06:44:38 +0000 Subject: [PATCH 0166/2162] test: add `resolve/test/list-exports` to false positive in postinstall scripts check Added `resolve/test/list-exports/packages/tests/fixtures/resolve-1/project/test/resolver/multirepo/package.json as a false positive` --- tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts b/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts index c21294362d59..1cdcdfb38d93 100644 --- a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts +++ b/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts @@ -15,6 +15,7 @@ const POTENTIAL_SCRIPTS: ReadonlyArray = ['preinstall', 'install', 'post const FALSE_POSITIVE_PATHS: ReadonlySet = new Set([ 'jasmine-spec-reporter/examples/protractor/package.json', 'resolve/test/resolver/multirepo/package.json', + 'resolve/test/list-exports/packages/tests/fixtures/resolve-1/project/test/resolver/multirepo/package.json', ]); const INNER_NODE_MODULES_SEGMENT = '/node_modules/'; From 0b378d8a94743f2549858c2d4edd53936d150d58 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 19 Dec 2024 14:08:03 +0100 Subject: [PATCH 0167/2162] test: add false positive postinstall script `resolve/test/list-exports/packages/tests/fixtures/resolve-2/project/test/resolver/multirepo/package.json` is not a true postinstall script --- tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts b/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts index 1cdcdfb38d93..2b0ad00b62a1 100644 --- a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts +++ b/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts @@ -16,6 +16,7 @@ const FALSE_POSITIVE_PATHS: ReadonlySet = new Set([ 'jasmine-spec-reporter/examples/protractor/package.json', 'resolve/test/resolver/multirepo/package.json', 'resolve/test/list-exports/packages/tests/fixtures/resolve-1/project/test/resolver/multirepo/package.json', + 'resolve/test/list-exports/packages/tests/fixtures/resolve-2/project/test/resolver/multirepo/package.json', ]); const INNER_NODE_MODULES_SEGMENT = '/node_modules/'; From 947948434f105f336b6087373814655848ac98c6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 19 Dec 2024 15:06:06 +0000 Subject: [PATCH 0168/2162] build: update all non-major dependencies --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .github/workflows/ci.yml | 2 +- .github/workflows/pr.yml | 2 +- WORKSPACE | 6 +- package.json | 14 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- .../angular_devkit/schematics/package.json | 2 +- pnpm-lock.yaml | 363 ++++++-------- yarn.lock | 443 +++++++++--------- 11 files changed, 383 insertions(+), 463 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 2cbfad2c421e..a12ca2fea2cb 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1537147063 -pnpm-lock.yaml=-1558034193 +package.json=-617490503 +pnpm-lock.yaml=633266779 pnpm-workspace.yaml=1711114604 -yarn.lock=-370009616 +yarn.lock=-291473705 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 950c664047fe..8f7ab6000cc8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -170,7 +170,7 @@ jobs: ./scripts/saucelabs/wait-for-tunnel.sh yarn bazel test --config=saucelabs //tests/legacy-cli:e2e.saucelabs ./scripts/saucelabs/stop-tunnel.sh - - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 if: ${{ failure() }} with: name: sauce-connect-log diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index be47ada1fcd5..45bb8a180cbf 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -80,7 +80,7 @@ jobs: - name: Build release targets run: yarn ng-dev release build - name: Store PR release packages - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages path: dist/releases/*.tgz diff --git a/WORKSPACE b/WORKSPACE index ec96f8c52205..5b44f8a27c6c 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -37,9 +37,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "3388abe9b9728ef68ea8d8301f932b11b2c9a271d74741ddd5f3b34d1db843ac", - strip_prefix = "rules_js-2.1.1", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.1.1/rules_js-v2.1.1.tar.gz", + sha256 = "fbc34d815a0cc52183a1a26732fc0329e26774a51abbe0f26fc9fd2dab6133b4", + strip_prefix = "rules_js-2.1.2", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.1.2/rules_js-v2.1.2.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") diff --git a/package.json b/package.json index 2f942f367d4d..6a3c42542037 100644 --- a/package.json +++ b/package.json @@ -105,8 +105,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.18.0", - "@typescript-eslint/parser": "8.18.0", + "@typescript-eslint/eslint-plugin": "8.18.1", + "@typescript-eslint/parser": "8.18.1", "@vitejs/plugin-basic-ssl": "1.2.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", @@ -119,7 +119,7 @@ "browser-sync": "3.0.3", "browserslist": "^4.21.5", "buffer": "6.0.3", - "chokidar": "4.0.1", + "chokidar": "4.0.3", "copy-webpack-plugin": "12.0.2", "css-loader": "7.1.2", "debug": "^4.1.1", @@ -154,7 +154,7 @@ "lmdb": "3.2.0", "loader-utils": "3.3.1", "lodash": "^4.17.21", - "magic-string": "0.30.15", + "magic-string": "0.30.17", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", "ng-packagr": "19.1.0-next.2", @@ -193,11 +193,11 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.7.2", - "undici": "7.1.0", + "undici": "7.2.0", "unenv": "^1.10.0", - "verdaccio": "6.0.2", + "verdaccio": "6.0.4", "verdaccio-auth-memory": "^10.0.0", - "vite": "6.0.3", + "vite": "6.0.4", "watchpack": "2.4.2", "webpack": "5.97.1", "webpack-dev-middleware": "7.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 60980b56d7a1..988f6d927c84 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -33,7 +33,7 @@ "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "listr2": "8.2.5", - "magic-string": "0.30.15", + "magic-string": "0.30.17", "mrmime": "2.0.0", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", @@ -41,7 +41,7 @@ "rollup": "4.28.1", "sass": "1.83.0", "semver": "7.6.3", - "vite": "6.0.3", + "vite": "6.0.4", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 23d10046d397..f2156664a790 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -35,7 +35,7 @@ "npm-package-arg": "12.0.1", "npm-pick-manifest": "10.0.0", "pacote": "20.0.0", - "resolve": "1.22.8", + "resolve": "1.22.9", "semver": "7.6.3", "symbol-observable": "4.0.0", "yargs": "17.7.2" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index a2609a617433..227679f735ea 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -66,7 +66,7 @@ "esbuild": "0.24.0" }, "devDependencies": { - "undici": "7.1.0" + "undici": "7.2.0" }, "peerDependencies": { "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0", diff --git a/packages/angular_devkit/schematics/package.json b/packages/angular_devkit/schematics/package.json index d24a33cdd76f..19e19539572c 100644 --- a/packages/angular_devkit/schematics/package.json +++ b/packages/angular_devkit/schematics/package.json @@ -15,7 +15,7 @@ "dependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", "jsonc-parser": "3.3.1", - "magic-string": "0.30.15", + "magic-string": "0.30.17", "ora": "5.4.1", "rxjs": "7.8.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24e53aacc77a..afa9cc85f22c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: version: github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee - version: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + version: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) @@ -206,14 +206,14 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.18.0 - version: 8.18.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.18.1 + version: 8.18.1(@typescript-eslint/parser@8.18.1)(eslint@8.57.0)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: 8.18.0 - version: 8.18.0(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.18.1 + version: 8.18.1(eslint@8.57.0)(typescript@5.7.2) '@vitejs/plugin-basic-ssl': specifier: 1.2.0 - version: 1.2.0(vite@6.0.3) + version: 1.2.0(vite@6.0.4) '@web/test-runner': specifier: ^0.19.0 version: 0.19.0 @@ -248,8 +248,8 @@ importers: specifier: 6.0.3 version: 6.0.3 chokidar: - specifier: 4.0.1 - version: 4.0.1 + specifier: 4.0.3 + version: 4.0.3 copy-webpack-plugin: specifier: 12.0.2 version: 12.0.2(webpack@5.97.1) @@ -276,7 +276,7 @@ importers: version: 3.1.1(eslint@8.57.0) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0) + version: 2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0) express: specifier: 4.21.2 version: 4.21.2 @@ -353,8 +353,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 magic-string: - specifier: 0.30.15 - version: 0.30.15 + specifier: 0.30.17 + version: 0.30.17 mini-css-extract-plugin: specifier: 2.9.2 version: 2.9.2(webpack@5.97.1) @@ -470,20 +470,20 @@ importers: specifier: 5.7.2 version: 5.7.2 undici: - specifier: 7.1.0 - version: 7.1.0 + specifier: 7.2.0 + version: 7.2.0 unenv: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.0.2 - version: 6.0.2(typanion@3.14.0) + specifier: 6.0.4 + version: 6.0.4(typanion@3.14.0) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.2.2 vite: - specifier: 6.0.3 - version: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + specifier: 6.0.4 + version: 6.0.4(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -527,17 +527,17 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@angular-devkit/architect@0.1901.0-next.1(chokidar@4.0.1): + /@angular-devkit/architect@0.1901.0-next.1(chokidar@4.0.3): resolution: {integrity: sha512-bZS5UlLsdL5eF3JqMaheYdIBVYrEIoDs6Q5UN50cJe5gKcakDvn8ky/Dhmv8kxfq5efb9zUevTC5xqnu+cgcmg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 19.1.0-next.1(chokidar@4.0.1) + '@angular-devkit/core': 19.1.0-next.1(chokidar@4.0.3) rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@angular-devkit/core@19.1.0-next.1(chokidar@4.0.1): + /@angular-devkit/core@19.1.0-next.1(chokidar@4.0.3): resolution: {integrity: sha512-2xzT/jBSKuDO2avbB00qiuM4Moir9RcLtK++oyJm/CVQ8tUFppVvpb2MIp0TB/FuV+Tfm8APf0etY0w/fWfWZA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -548,7 +548,7 @@ packages: dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) - chokidar: 4.0.1 + chokidar: 4.0.3 jsonc-parser: 3.3.1 picomatch: 4.0.2 rxjs: 7.8.1 @@ -575,7 +575,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): resolution: {integrity: sha512-rLzY+2AxkNb82TSRp7DaZH/y0/ZdUV3g0OwJl7ajXvyIH0oJgq5mtNAO4VUreU+MR6h3tGO+XJRg6W0OUM9rzw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -606,7 +606,7 @@ packages: optional: true dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1901.0-next.1(chokidar@4.0.1) + '@angular-devkit/architect': 0.1901.0-next.1(chokidar@4.0.3) '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@angular/localize': 19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4) @@ -692,7 +692,7 @@ packages: '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) '@babel/core': 7.26.0 '@jridgewell/sourcemap-codec': 1.5.0 - chokidar: 4.0.2 + chokidar: 4.0.3 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 semver: 7.6.3 @@ -2097,8 +2097,8 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@cypress/request@3.0.5: - resolution: {integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==} + /@cypress/request@3.0.7: + resolution: {integrity: sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==} engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 @@ -2114,9 +2114,9 @@ packages: json-stringify-safe: 5.0.1 mime-types: 2.1.35 performance-now: 2.1.0 - qs: 6.13.0 + qs: 6.13.1 safe-buffer: 5.2.1 - tough-cookie: 4.1.4 + tough-cookie: 5.0.0 tunnel-agent: 0.6.0 uuid: 8.3.2 dev: true @@ -4553,8 +4553,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} + /@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1)(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -4562,11 +4562,11 @@ packages: typescript: 5.7.2 dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/type-utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/type-utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -4577,17 +4577,17 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} + /@typescript-eslint/parser@8.18.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.1 debug: 4.4.0(supports-color@9.4.0) eslint: 8.57.0 typescript: 5.7.2 @@ -4595,14 +4595,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@8.18.0: - resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/visitor-keys': 8.18.0 - dev: true - /@typescript-eslint/scope-manager@8.18.1: resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4611,15 +4603,15 @@ packages: '@typescript-eslint/visitor-keys': 8.18.1 dev: true - /@typescript-eslint/type-utils@8.18.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} + /@typescript-eslint/type-utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) debug: 4.4.0(supports-color@9.4.0) eslint: 8.57.0 ts-api-utils: 1.4.3(typescript@5.7.2) @@ -4628,35 +4620,11 @@ packages: - supports-color dev: true - /@typescript-eslint/types@8.18.0: - resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@typescript-eslint/types@8.18.1: resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2): - resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: 5.7.2 - dependencies: - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/visitor-keys': 8.18.0 - debug: 4.4.0(supports-color@9.4.0) - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2): resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4676,23 +4644,6 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.18.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: 5.7.2 - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - eslint: 8.57.0 - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4710,14 +4661,6 @@ packages: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.18.0: - resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.18.0 - eslint-visitor-keys: 4.2.0 - dev: true - /@typescript-eslint/visitor-keys@8.18.1: resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4730,18 +4673,18 @@ packages: resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} dev: true - /@verdaccio/auth@8.0.0-next-8.4: - resolution: {integrity: sha512-Bv+du+eIMK2/KU2wIjha2FHQrhBT5RuDOVi1nyRyjEyjmJrUt2RWU0Cb7ASxzQy61nkcJ3bs7kuu9dPHK/Z+jw==} + /@verdaccio/auth@8.0.0-next-8.6: + resolution: {integrity: sha512-ep42p/32xx5954pIPlGCi0sntBDQd5aQ8rlgGJ9hIOD3L/idCCTbWbOSW/JwanJaePW3kQN8UMYj47T9/QN25A==} engines: {node: '>=18'} dependencies: - '@verdaccio/config': 8.0.0-next-8.4 - '@verdaccio/core': 8.0.0-next-8.4 - '@verdaccio/loaders': 8.0.0-next-8.3 + '@verdaccio/config': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/loaders': 8.0.0-next-8.4 '@verdaccio/signature': 8.0.0-next-8.1 - '@verdaccio/utils': 8.1.0-next-8.4 + '@verdaccio/utils': 8.1.0-next-8.6 debug: 4.3.7 lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.4 + verdaccio-htpasswd: 13.0.0-next-8.6 transitivePeerDependencies: - supports-color dev: true @@ -4754,12 +4697,12 @@ packages: http-status-codes: 2.2.0 dev: true - /@verdaccio/config@8.0.0-next-8.4: - resolution: {integrity: sha512-9CTYYhaO4xrGbiYjLqRy8EMFPm0YL4a7P6ae8Zm4Dx85Dd6i8XqZ7tlU/+a6qf1g/qggYloolU8pcjaLWNDKAQ==} + /@verdaccio/config@8.0.0-next-8.6: + resolution: {integrity: sha512-7X02UWPIlzdnwP1JhIiuUkROgt0i5RQkK5pr3wS0lVi/Nw5BmRbqCytFLERFdUTgUmrdWdr13g2T+m1Jh724nQ==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.4 - '@verdaccio/utils': 8.1.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/utils': 8.1.0-next-8.6 debug: 4.3.7 js-yaml: 4.1.0 lodash: 4.17.21 @@ -4780,8 +4723,8 @@ packages: semver: 7.6.3 dev: true - /@verdaccio/core@8.0.0-next-8.4: - resolution: {integrity: sha512-TCaHwIpr97f4YQkU25E6pk1dbfWTQwYPos1tMb9Q7k6IapoxN0c1s+SyF5FBuMOIfJpTHoWJDo/z7QCouQC3lw==} + /@verdaccio/core@8.0.0-next-8.6: + resolution: {integrity: sha512-eo5EEqREboxJjsR7WJ/+iWGX56KKMQrPLT8M6NfQfB9oy0x8D84nVo6id+sZhRwr+Nc3n3VKKhdj+jO6UZrzFQ==} engines: {node: '>=18'} dependencies: ajv: 8.17.1 @@ -4806,8 +4749,8 @@ packages: lockfile: 1.0.4 dev: true - /@verdaccio/loaders@8.0.0-next-8.3: - resolution: {integrity: sha512-7bIOdi+U1xSLRu0s1XxQwrV3zzzFaVaTX7JKFgj2tQvMy9AgzlpjbW1CqaH8OTVEqq03Pwvwj5hQlcvyzCwm1A==} + /@verdaccio/loaders@8.0.0-next-8.4: + resolution: {integrity: sha512-Powlqb4SuMbe6RVgxyyOXaCjuHCcK7oZA+lygaKZDpV9NSHJtbkkV4L+rXyCfTX3b0tKsBh7FzaIdgWc1rDeGQ==} engines: {node: '>=18'} dependencies: debug: 4.3.7 @@ -4832,11 +4775,11 @@ packages: - supports-color dev: true - /@verdaccio/logger-commons@8.0.0-next-8.4: - resolution: {integrity: sha512-neDbq5IIRoidFT4Rv3zH9YydICDCJEybb06BzCGVOzlhZ7F+fBzJH1qlBhAEISfbONugDgfuUQ2jbRCKEkHezQ==} + /@verdaccio/logger-commons@8.0.0-next-8.6: + resolution: {integrity: sha512-AyixYmAw0GeH0/pc68gz2G8IsC9c3vQLRYDm4WBzhO2Pto75n9oZ69YoKAOt8Ba/Xf4MoDt1LbAuOPAEJ4p2ag==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.6 '@verdaccio/logger-prettify': 8.0.0-next-8.1 colorette: 2.0.20 debug: 4.3.7 @@ -4855,24 +4798,24 @@ packages: sonic-boom: 3.8.1 dev: true - /@verdaccio/logger@8.0.0-next-8.4: - resolution: {integrity: sha512-zJIFpKYNR/api/mxj5HqJSlEMFh9J4sVKk+3QYlPmppW68beZLLzqwchb5+c/V559lnSrGy5HvDUEGLXvp6reA==} + /@verdaccio/logger@8.0.0-next-8.6: + resolution: {integrity: sha512-JFff/UVVCgGIaw24oO+AyCldtOkI1D8zb+KcBS6I8PjaEb5t553EAADYD+XTT5lGJ49q2EogxfedlUwoaJCVpg==} engines: {node: '>=18'} dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.4 + '@verdaccio/logger-commons': 8.0.0-next-8.6 pino: 9.4.0 transitivePeerDependencies: - supports-color dev: true - /@verdaccio/middleware@8.0.0-next-8.4: - resolution: {integrity: sha512-tzpfSpeLKUeyTsQ+fvUsokgdh1NrjDJX/oz2ya8wTYSInKAt1Ld9MRzRVSHJwIQc7wfg46zSjpcKZVLA/YkJ6w==} + /@verdaccio/middleware@8.0.0-next-8.6: + resolution: {integrity: sha512-PP0FYn5fGRHaCjuVjT/r754PKORXA/cmhunxB370mwOCvjoPKBSDg6OhZKz7WTz2xTaBqL9xER826eu40SJrmg==} engines: {node: '>=18'} dependencies: - '@verdaccio/config': 8.0.0-next-8.4 - '@verdaccio/core': 8.0.0-next-8.4 - '@verdaccio/url': 13.0.0-next-8.4 - '@verdaccio/utils': 8.1.0-next-8.4 + '@verdaccio/config': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/url': 13.0.0-next-8.6 + '@verdaccio/utils': 8.1.0-next-8.6 debug: 4.3.7 express: 4.21.1 express-rate-limit: 5.5.1 @@ -4903,13 +4846,13 @@ packages: engines: {node: '>=12', npm: '>=5'} dev: true - /@verdaccio/tarball@13.0.0-next-8.4: - resolution: {integrity: sha512-zizQwACK+P9sHtArbuW5MJluRpc3lC6bilGTFNc0TLkHbwL73F8wxkKr5VLzWV7H54+sVKMDs1lCnaoHa0ygmw==} + /@verdaccio/tarball@13.0.0-next-8.6: + resolution: {integrity: sha512-hTOb3kILyBYiErw4efWCQmUKtUpSiwKVMmINPINsV+RV1zHhjOu2bky7MP9hOIbpLqZRKL50S9ATXyvdHXUo/Q==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.4 - '@verdaccio/url': 13.0.0-next-8.4 - '@verdaccio/utils': 8.1.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/url': 13.0.0-next-8.6 + '@verdaccio/utils': 8.1.0-next-8.6 debug: 4.3.7 gunzip-maybe: 1.4.2 lodash: 4.17.21 @@ -4918,15 +4861,15 @@ packages: - supports-color dev: true - /@verdaccio/ui-theme@8.0.0-next-8.4: - resolution: {integrity: sha512-j3STxUuIgvn058LqfXWv+SwRi1fQ7HapMSfVKXAhi09+f4zlD2mtvKLth0WbuzU1NqJPTGLAP9ueBf1210C1Hw==} + /@verdaccio/ui-theme@8.0.0-next-8.6: + resolution: {integrity: sha512-nMuJpQjuLkNuL6QHNry8iSN5/oEBaj8mB07ArxKwLVULAfmQI3tJemsAzqi1SE0ay3+1e719RsG85J+NuM7GGA==} dev: true - /@verdaccio/url@13.0.0-next-8.4: - resolution: {integrity: sha512-Xo+9DUcwYTBV6d0n4vjLAN2k92J33XM/9JNltWM6140oI8lz+VJKiajtejG/hRBi82RioRdWJ0RZDDY6FsbS3Q==} + /@verdaccio/url@13.0.0-next-8.6: + resolution: {integrity: sha512-gMmXe7zTtFWzSx8SK0BVno9wKamiZG1V7mlWASSMpHtTuPQIe/J9gC20m4KUhEQrf1jn4XOG+kbEytyHyNRlKQ==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.6 debug: 4.3.7 lodash: 4.17.21 validator: 13.12.0 @@ -4944,11 +4887,11 @@ packages: semver: 7.6.3 dev: true - /@verdaccio/utils@8.1.0-next-8.4: - resolution: {integrity: sha512-mAEBWV5zsjtC4e/hfj1Q/eYtMlML5wxedk7mqqmvAydjw+ycSH/D/ksU+B10h4STX2NcBlcLtgLl7OI/wFzrgA==} + /@verdaccio/utils@8.1.0-next-8.6: + resolution: {integrity: sha512-jaUWojSI6AhJhEsotUZNEpNSQoWTzg805Y3HGcrhEBqB5Ki2ixTRVaPUKPkxzkJ62eFsHEyUrnE01vaFHSYY3A==} engines: {node: '>=12'} dependencies: - '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.6 lodash: 4.17.21 minimatch: 7.4.6 semver: 7.6.3 @@ -4960,7 +4903,16 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + dev: true + + /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.4): + resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + dependencies: + vite: 6.0.4(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true /@web/browser-logs@0.4.0: @@ -4982,7 +4934,7 @@ packages: '@types/koa': 2.15.0 '@types/ws': 7.4.7 '@web/parse5-utils': 2.1.0 - chokidar: 4.0.2 + chokidar: 4.0.3 clone: 2.1.2 es-module-lexer: 1.5.4 get-stream: 6.0.1 @@ -5092,7 +5044,7 @@ packages: '@types/istanbul-reports': 3.0.4 '@web/browser-logs': 0.4.0 '@web/dev-server-core': 0.7.4 - chokidar: 4.0.2 + chokidar: 4.0.3 cli-cursor: 3.1.0 co-body: 6.2.0 convert-source-map: 2.0.0 @@ -6276,15 +6228,8 @@ packages: fsevents: 2.3.3 dev: true - /chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} - engines: {node: '>= 14.16.0'} - dependencies: - readdirp: 4.0.2 - dev: true - - /chokidar@4.0.2: - resolution: {integrity: sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==} + /chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} dependencies: readdirp: 4.0.2 @@ -7516,7 +7461,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -7537,7 +7482,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -7553,7 +7498,7 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0)(eslint@8.57.0): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -7564,7 +7509,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.18.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.3 @@ -7573,7 +7518,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.16.0 is-glob: 4.0.3 @@ -10709,7 +10654,7 @@ packages: ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.3 - chokidar: 4.0.2 + chokidar: 4.0.3 commander: 12.1.0 convert-source-map: 2.0.0 dependency-graph: 1.0.0 @@ -11974,10 +11919,6 @@ packages: engines: {node: '>=0.6'} dev: true - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -12475,7 +12416,7 @@ packages: engines: {node: '>=14.0.0'} hasBin: true dependencies: - chokidar: 4.0.2 + chokidar: 4.0.3 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: @@ -12487,7 +12428,7 @@ packages: engines: {node: '>=14.0.0'} hasBin: true dependencies: - chokidar: 4.0.2 + chokidar: 4.0.3 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: @@ -13520,6 +13461,17 @@ packages: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: true + /tldts-core@6.1.69: + resolution: {integrity: sha512-nygxy9n2PBUFQUtAXAc122gGo+04/j5qr5TGQFZTHafTKYvmARVXt2cA5rgero2/dnXUfkdPtiJoKmrd3T+wdA==} + dev: true + + /tldts@6.1.69: + resolution: {integrity: sha512-Oh/CqRQ1NXNY7cy9NkTPUauOWiTro0jEYZTioGbOmcQh6EC45oribyIMJp0OJO3677r13tO6SKdWoGZUx2BDFw==} + hasBin: true + dependencies: + tldts-core: 6.1.69 + dev: true + /tmp@0.0.30: resolution: {integrity: sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==} engines: {node: '>=0.4.0'} @@ -13559,14 +13511,11 @@ packages: punycode: 2.3.1 dev: true - /tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + /tough-cookie@5.0.0: + resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + engines: {node: '>=16'} dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 + tldts: 6.1.69 dev: true /tr46@0.0.3: @@ -13835,8 +13784,8 @@ packages: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} dev: true - /undici@7.1.0: - resolution: {integrity: sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==} + /undici@7.2.0: + resolution: {integrity: sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==} engines: {node: '>=20.18.1'} dev: true @@ -13915,11 +13864,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true - /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -13955,13 +13899,6 @@ packages: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} dev: true - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true - /urlpattern-polyfill@10.0.0: resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} dev: true @@ -14040,12 +13977,12 @@ packages: engines: {node: '>= 0.8'} dev: true - /verdaccio-audit@13.0.0-next-8.4: - resolution: {integrity: sha512-T4yi/46fLngllx5mvFtXsGcW3MxGZZ9IkHYPK1OQw9+Xj9aOuMec2eFdztTRo9SgqZfgblGSY1ESZYy19sQLvw==} + /verdaccio-audit@13.0.0-next-8.6: + resolution: {integrity: sha512-6qcYJ40spxNhybZ0WKDk4U6CCL8rzAIYnHfhm31VpWo6T9wroEACxg6+/FpPHav4ynb37oO0lulEp5whaX97HA==} engines: {node: '>=18'} dependencies: - '@verdaccio/config': 8.0.0-next-8.4 - '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/config': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.6 express: 4.21.1 https-proxy-agent: 5.0.1(supports-color@9.4.0) node-fetch: 2.6.7 @@ -14061,11 +13998,11 @@ packages: '@verdaccio/commons-api': 10.2.0 dev: true - /verdaccio-htpasswd@13.0.0-next-8.4: - resolution: {integrity: sha512-w0knjKz8SdBGSv0Kt61LoUOCYBZ2/iig3bVbGFWTj4MwCUG6eNewMoQ6nbrk+kyHNFVq75IzT1eIhXDEysx15Q==} + /verdaccio-htpasswd@13.0.0-next-8.6: + resolution: {integrity: sha512-dKU35EJQvUIwOmi5WgJqUWMkS1m1bQm4ABy+99UT5v3iuphUU7k8OgRuEz54BRihe1qI+QuO9b7hVuvUPDYNxQ==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.6 '@verdaccio/file-locking': 13.0.0-next-8.2 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -14077,33 +14014,33 @@ packages: - supports-color dev: true - /verdaccio@6.0.2(typanion@3.14.0): - resolution: {integrity: sha512-XthgJlF1hGW+GR/apRLZ7DQw26XpLI+xjMGb7dhJKxI4Pz2gSiEY1RXP9T9I/rlIBr9Zx6rYOgRk7A9Aeq/kpg==} + /verdaccio@6.0.4(typanion@3.14.0): + resolution: {integrity: sha512-E8t/1Dc7tUEtYruxDiVmQnta4wiOdefpVQn8/FsJ+/U2yT1oPZxiJR+WwbqM4k6KRbR/j39WK4Wb5d2/irQxHg==} engines: {node: '>=18'} hasBin: true dependencies: - '@cypress/request': 3.0.5 - '@verdaccio/auth': 8.0.0-next-8.4 - '@verdaccio/config': 8.0.0-next-8.4 - '@verdaccio/core': 8.0.0-next-8.4 + '@cypress/request': 3.0.7 + '@verdaccio/auth': 8.0.0-next-8.6 + '@verdaccio/config': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.6 '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.4 - '@verdaccio/middleware': 8.0.0-next-8.4 + '@verdaccio/logger': 8.0.0-next-8.6 + '@verdaccio/middleware': 8.0.0-next-8.6 '@verdaccio/search-indexer': 8.0.0-next-8.2 '@verdaccio/signature': 8.0.0-next-8.1 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.4 - '@verdaccio/ui-theme': 8.0.0-next-8.4 - '@verdaccio/url': 13.0.0-next-8.4 + '@verdaccio/tarball': 13.0.0-next-8.6 + '@verdaccio/ui-theme': 8.0.0-next-8.6 + '@verdaccio/url': 13.0.0-next-8.6 '@verdaccio/utils': 7.0.1-next-8.1 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4(typanion@3.14.0) compression: 1.7.5 cors: 2.8.5 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) envinfo: 7.14.0 - express: 4.21.1 + express: 4.21.2 express-rate-limit: 5.5.1 fast-safe-stringify: 2.1.1 handlebars: 4.7.8 @@ -14117,8 +14054,8 @@ packages: pkginfo: 0.4.1 semver: 7.6.3 validator: 13.12.0 - verdaccio-audit: 13.0.0-next-8.4 - verdaccio-htpasswd: 13.0.0-next-8.4 + verdaccio-audit: 13.0.0-next-8.6 + verdaccio-htpasswd: 13.0.0-next-8.6 transitivePeerDependencies: - encoding - supports-color @@ -14185,8 +14122,8 @@ packages: fsevents: 2.3.3 dev: true - /vite@6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): - resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} + /vite@6.0.4(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): + resolution: {integrity: sha512-zwlH6ar+6o6b4Wp+ydhtIKLrGM/LoqZzcdVmkGAFun0KHTzIzjh+h0kungEx7KJg/PYnC80I4TII9WkjciSR6Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -14862,14 +14799,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.1)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/23a3f5d3df3644a47fefb864aa575c6ff0044cee} id: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee name: '@angular/build-tooling' version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.1)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 diff --git a/yarn.lock b/yarn.lock index f9d980cedc41..9f479d29dc33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -372,8 +372,8 @@ __metadata: "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" "@types/yarnpkg__lockfile": "npm:^1.1.5" - "@typescript-eslint/eslint-plugin": "npm:8.18.0" - "@typescript-eslint/parser": "npm:8.18.0" + "@typescript-eslint/eslint-plugin": "npm:8.18.1" + "@typescript-eslint/parser": "npm:8.18.1" "@vitejs/plugin-basic-ssl": "npm:1.2.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" @@ -386,7 +386,7 @@ __metadata: browser-sync: "npm:3.0.3" browserslist: "npm:^4.21.5" buffer: "npm:6.0.3" - chokidar: "npm:4.0.1" + chokidar: "npm:4.0.3" copy-webpack-plugin: "npm:12.0.2" css-loader: "npm:7.1.2" debug: "npm:^4.1.1" @@ -421,7 +421,7 @@ __metadata: lmdb: "npm:3.2.0" loader-utils: "npm:3.3.1" lodash: "npm:^4.17.21" - magic-string: "npm:0.30.15" + magic-string: "npm:0.30.17" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" ng-packagr: "npm:19.1.0-next.2" @@ -460,11 +460,11 @@ __metadata: ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" typescript: "npm:5.7.2" - undici: "npm:7.1.0" + undici: "npm:7.2.0" unenv: "npm:^1.10.0" - verdaccio: "npm:6.0.2" + verdaccio: "npm:6.0.4" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:6.0.3" + vite: "npm:6.0.4" watchpack: "npm:2.4.2" webpack: "npm:5.97.1" webpack-dev-middleware: "npm:7.4.2" @@ -1937,9 +1937,9 @@ __metadata: languageName: node linkType: hard -"@cypress/request@npm:3.0.5": - version: 3.0.5 - resolution: "@cypress/request@npm:3.0.5" +"@cypress/request@npm:3.0.7": + version: 3.0.7 + resolution: "@cypress/request@npm:3.0.7" dependencies: aws-sign2: "npm:~0.7.0" aws4: "npm:^1.8.0" @@ -1954,12 +1954,12 @@ __metadata: json-stringify-safe: "npm:~5.0.1" mime-types: "npm:~2.1.19" performance-now: "npm:^2.1.0" - qs: "npm:6.13.0" + qs: "npm:6.13.1" safe-buffer: "npm:^5.1.2" - tough-cookie: "npm:^4.1.3" + tough-cookie: "npm:^5.0.0" tunnel-agent: "npm:^0.6.0" uuid: "npm:^8.3.2" - checksum: 10c0/3195d59cf0457fd7dff7e7f6a29fbb4f44c483f8007f236952f726f96dabe19b7c58a4d7673d544753e54e1b3b916ae2d067144bc11d72ff7155851f557e1d2c + checksum: 10c0/645328a63eb47903209ec928fd88287fad1b38beb0c40c65cd8d0af11b292e880e47ec53a29592c866ab1e21828664abe6328cd2da8eedb20719a622df37ad58 languageName: node linkType: hard @@ -5032,15 +5032,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.18.0" +"@typescript-eslint/eslint-plugin@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.18.1" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.18.0" - "@typescript-eslint/type-utils": "npm:8.18.0" - "@typescript-eslint/utils": "npm:8.18.0" - "@typescript-eslint/visitor-keys": "npm:8.18.0" + "@typescript-eslint/scope-manager": "npm:8.18.1" + "@typescript-eslint/type-utils": "npm:8.18.1" + "@typescript-eslint/utils": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5049,33 +5049,23 @@ __metadata: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/c338da1b96c41d7b94401a6711659d0fef3acb691eff7a958f9d3aa0442a858830daad67e3575288a4f4669572e2b690517a513519b404a465ad68fe0a82d3ec + checksum: 10c0/7994d323228f3fc3ec124291cd02761251bcd9a5a6356001d2cb8f68abdb400c3cfbeb343d6941d8e6b6c8d2d616a278bbb3b6d9ed839ba5148a05f60a1f67b4 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/parser@npm:8.18.0" +"@typescript-eslint/parser@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/parser@npm:8.18.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.18.0" - "@typescript-eslint/types": "npm:8.18.0" - "@typescript-eslint/typescript-estree": "npm:8.18.0" - "@typescript-eslint/visitor-keys": "npm:8.18.0" + "@typescript-eslint/scope-manager": "npm:8.18.1" + "@typescript-eslint/types": "npm:8.18.1" + "@typescript-eslint/typescript-estree": "npm:8.18.1" + "@typescript-eslint/visitor-keys": "npm:8.18.1" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/d3a062511c24dfcf522a645db1153022d49aa3bb05e288c22474cf04dc1d836f877eb9d2733947e448981ffb16e4de50d4ebe7570a268733a641f228ca6c4849 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/scope-manager@npm:8.18.0" - dependencies: - "@typescript-eslint/types": "npm:8.18.0" - "@typescript-eslint/visitor-keys": "npm:8.18.0" - checksum: 10c0/6bf6532fd43f2b55b9b47fa8b0217c5b5a03f022e869a6a21228fc3ae04c0ac6c5ae5d6026866d189ba424d2f98cc6fbd2a34f909d241c9b86c031afd808f90c + checksum: 10c0/23ab30b3f00b86108137e7df03710a088046ead3582595b0f8e17d5062770365e24e0a1ae3398bb3a1c29aa0f05a0de30887e2e0f6fb86163e878dd0eed1b25c languageName: node linkType: hard @@ -5089,25 +5079,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/type-utils@npm:8.18.0" +"@typescript-eslint/type-utils@npm:8.18.1": + version: 8.18.1 + resolution: "@typescript-eslint/type-utils@npm:8.18.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.18.0" - "@typescript-eslint/utils": "npm:8.18.0" + "@typescript-eslint/typescript-estree": "npm:8.18.1" + "@typescript-eslint/utils": "npm:8.18.1" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/c0fcf201c3b53f9374c0571198a639c81536170141caa08fd0f47094a596b1f82f839a849eac5832f954345c567dccb45b2ee1c0872c513331165f7bcb812396 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/types@npm:8.18.0" - checksum: 10c0/2dd7468c3f1c305545268b72c3a333488e6ab1b628c5f65081d895866422b9376c21634a7aac437805f84b22e352b6a8fc4dcf925ef4a8fd7d1898b8359f71be + checksum: 10c0/cfe5362a22fa5e18a2662928904da024e42c84cb58a46238b9b61edafcd046f53c9505637176c8cd1c386165c6a6ed15a2b51700495cad6c20e0e33499d483a1 languageName: node linkType: hard @@ -5118,24 +5101,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.18.0" - dependencies: - "@typescript-eslint/types": "npm:8.18.0" - "@typescript-eslint/visitor-keys": "npm:8.18.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependencies: - typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/87b432b190b627314f007b17b2371898db78baaa3df67a0d9a94d080d88a7a307906b54a735084cacef37f6421e2b9c3320040617e73fe54eac2bf22c610f1ec - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.18.1": version: 8.18.1 resolution: "@typescript-eslint/typescript-estree@npm:8.18.1" @@ -5154,22 +5119,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/utils@npm:8.18.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.18.0" - "@typescript-eslint/types": "npm:8.18.0" - "@typescript-eslint/typescript-estree": "npm:8.18.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/58a2fc1e404d1f905c2a958d995824eb4abc6e73836b186717550677f8b1d17954acc369feddb83277350915388bc3d8b721423c37777b8b8017fc29c89ec6ee - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^8.13.0": +"@typescript-eslint/utils@npm:8.18.1, @typescript-eslint/utils@npm:^8.13.0": version: 8.18.1 resolution: "@typescript-eslint/utils@npm:8.18.1" dependencies: @@ -5184,16 +5134,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.18.0": - version: 8.18.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.18.0" - dependencies: - "@typescript-eslint/types": "npm:8.18.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/d4cdc2adab553098b5be7117fb7df76fb66cfd380528881a0a8c2a9eee03bf8baddda07d15ca0bd3ed8b35c379b3f449292183df18e3e81898dbcadafcb708b8 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:8.18.1": version: 8.18.1 resolution: "@typescript-eslint/visitor-keys@npm:8.18.1" @@ -5211,19 +5151,19 @@ __metadata: languageName: node linkType: hard -"@verdaccio/auth@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/auth@npm:8.0.0-next-8.4" +"@verdaccio/auth@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/auth@npm:8.0.0-next-8.6" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.4" - "@verdaccio/core": "npm:8.0.0-next-8.4" - "@verdaccio/loaders": "npm:8.0.0-next-8.3" + "@verdaccio/config": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/loaders": "npm:8.0.0-next-8.4" "@verdaccio/signature": "npm:8.0.0-next-8.1" - "@verdaccio/utils": "npm:8.1.0-next-8.4" + "@verdaccio/utils": "npm:8.1.0-next-8.6" debug: "npm:4.3.7" lodash: "npm:4.17.21" - verdaccio-htpasswd: "npm:13.0.0-next-8.4" - checksum: 10c0/f5aaf0f27bc97ae027486b27a179e0a1655f6cc8591e0e9e67cbf4e85c3f0fa6de9d81f78e793223cd5af302d1aa4b472386ed944bf9f4f9ef774a92c704f80e + verdaccio-htpasswd: "npm:13.0.0-next-8.6" + checksum: 10c0/819357c13c577dc0cacc11b037a80489b3ccd575e9b425ff208a0f809df3c3c74447d3bfd0a7e40328e8b66044963edb3fb299c84c50483c7fa40fe48aa77d48 languageName: node linkType: hard @@ -5237,17 +5177,17 @@ __metadata: languageName: node linkType: hard -"@verdaccio/config@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/config@npm:8.0.0-next-8.4" +"@verdaccio/config@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/config@npm:8.0.0-next-8.6" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.4" - "@verdaccio/utils": "npm:8.1.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/utils": "npm:8.1.0-next-8.6" debug: "npm:4.3.7" js-yaml: "npm:4.1.0" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" - checksum: 10c0/a213694525eb550c4ecc37065b69ca31387ea6cb238c1f69020734d3a8d28b2f00dd884952ed264b8f5f12c9c07769015ec3b48dda6bfa57517ac165bcff906a + checksum: 10c0/1fafad56e33160acc059a0da08f67cfc7a5669f11678dc72bfc9dc2f360f5b51e7d54d49526d34ab7e3fed294b40ae670b362bd69451f4012a8f04ed56bbcea8 languageName: node linkType: hard @@ -5265,9 +5205,9 @@ __metadata: languageName: node linkType: hard -"@verdaccio/core@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/core@npm:8.0.0-next-8.4" +"@verdaccio/core@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/core@npm:8.0.0-next-8.6" dependencies: ajv: "npm:8.17.1" core-js: "npm:3.37.1" @@ -5275,7 +5215,7 @@ __metadata: http-status-codes: "npm:2.3.0" process-warning: "npm:1.0.0" semver: "npm:7.6.3" - checksum: 10c0/7eaca51ca651a4af3bd841a3a6e0c64a0a4cbbff197c91e656383ba6577f1c8021f18484e39ddca66b1e404eda786d588a8ef44bd55e79cdf82389e2af5f0321 + checksum: 10c0/5787dabadf46969183cb9905735c5a46a40169c0a6b13923ade706ffb43fdc21cfd160d19ad15b749862a121a656381ece0d09a26af87a9713ce7a610b4409d0 languageName: node linkType: hard @@ -5297,13 +5237,13 @@ __metadata: languageName: node linkType: hard -"@verdaccio/loaders@npm:8.0.0-next-8.3": - version: 8.0.0-next-8.3 - resolution: "@verdaccio/loaders@npm:8.0.0-next-8.3" +"@verdaccio/loaders@npm:8.0.0-next-8.4": + version: 8.0.0-next-8.4 + resolution: "@verdaccio/loaders@npm:8.0.0-next-8.4" dependencies: debug: "npm:4.3.7" lodash: "npm:4.17.21" - checksum: 10c0/553efcda30fbf42a204ec6f00cffe5ff3f500fe1d3c2ff5cb652831aa97e124b21f7dab863f212c735585322fb8abf313c34cae5cb2630c6b16b5724ab4a3429 + checksum: 10c0/a1c84de67096fec83ef9965761a200f8faab3796cfde278a15ba8340f81f0ac28cf2b752d8934fb1ec4e76a07a8b2b33ba585aa7b1e999c82799d51cefde85f0 languageName: node linkType: hard @@ -5323,15 +5263,15 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger-commons@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.4" +"@verdaccio/logger-commons@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.6" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.6" "@verdaccio/logger-prettify": "npm:8.0.0-next-8.1" colorette: "npm:2.0.20" debug: "npm:4.3.7" - checksum: 10c0/2d461ee31e395e9b5a985269a558b64ec75abce4687008f0bf109da00a9cba1ccde3f944465e43d2d5e81051a1703b91699d9fdf0f194d621f0a913045b793c2 + checksum: 10c0/8061261030c60d0561377ac596ff9518e27b6029c48bec6a38e30fb0f212791e63fde77313148b4163aa897e8fbb83e6f2f2edb4e4c659afc86408b9fe6a0551 languageName: node linkType: hard @@ -5348,31 +5288,31 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/logger@npm:8.0.0-next-8.4" +"@verdaccio/logger@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/logger@npm:8.0.0-next-8.6" dependencies: - "@verdaccio/logger-commons": "npm:8.0.0-next-8.4" + "@verdaccio/logger-commons": "npm:8.0.0-next-8.6" pino: "npm:9.4.0" - checksum: 10c0/4c29a6d93875638220f58feeaa8805122c7ac89959f90a2454a577703fae1743dd208bcb44cd2d63ebdee9411d376448e4523d9be13e1e9e2953453b700bb6b3 + checksum: 10c0/9dbdf9f1a816d10f5cb1ff07c19780dff48f96389a5957346ce5bd9a9b2d79315fb2e0bc2fa728cacc378f8c2103924387aaae4cb1a7a2987de392292e1125d4 languageName: node linkType: hard -"@verdaccio/middleware@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/middleware@npm:8.0.0-next-8.4" +"@verdaccio/middleware@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/middleware@npm:8.0.0-next-8.6" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.4" - "@verdaccio/core": "npm:8.0.0-next-8.4" - "@verdaccio/url": "npm:13.0.0-next-8.4" - "@verdaccio/utils": "npm:8.1.0-next-8.4" + "@verdaccio/config": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/url": "npm:13.0.0-next-8.6" + "@verdaccio/utils": "npm:8.1.0-next-8.6" debug: "npm:4.3.7" express: "npm:4.21.1" express-rate-limit: "npm:5.5.1" lodash: "npm:4.17.21" lru-cache: "npm:7.18.3" mime: "npm:2.6.0" - checksum: 10c0/d4d26d8abd5799b5cd59f8990cd869ce16fcbd0a821d195a8bf39280db26cdfc2dbceb6082c72dc86b7125a1dd4d9caf732051c0db0d2a54eeacdf7c71a31b2d + checksum: 10c0/ab656dcbd76fbcac894399716de7346fedf3d6b22f10c242ee7a4e17ed31bcb4323fc0e1e9d2ce31e2c78fbf20dc33c0c89f15dba6c5441973cbcab31a46b7d4 languageName: node linkType: hard @@ -5400,37 +5340,37 @@ __metadata: languageName: node linkType: hard -"@verdaccio/tarball@npm:13.0.0-next-8.4": - version: 13.0.0-next-8.4 - resolution: "@verdaccio/tarball@npm:13.0.0-next-8.4" +"@verdaccio/tarball@npm:13.0.0-next-8.6": + version: 13.0.0-next-8.6 + resolution: "@verdaccio/tarball@npm:13.0.0-next-8.6" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.4" - "@verdaccio/url": "npm:13.0.0-next-8.4" - "@verdaccio/utils": "npm:8.1.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/url": "npm:13.0.0-next-8.6" + "@verdaccio/utils": "npm:8.1.0-next-8.6" debug: "npm:4.3.7" gunzip-maybe: "npm:^1.4.2" lodash: "npm:4.17.21" tar-stream: "npm:^3.1.7" - checksum: 10c0/72c757d762c91081fc5372ae82711a1c2f40427d0fb1b95d7a39fff13c287d08dbb8306fea46e13361da75ed8293c437bf895505549f6e756405c03e05541313 + checksum: 10c0/430ff74bf1fe40000347a03174258248d4d2026df4b11b08ad3897193f11e48e39ec36643dff6f20b110906418e903a93251c4df712721eed3d000f65ee52689 languageName: node linkType: hard -"@verdaccio/ui-theme@npm:8.0.0-next-8.4": - version: 8.0.0-next-8.4 - resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.4" - checksum: 10c0/d94560d3dc21265c4dbcf168197bcf17efeff6ee4803408fd7fd00887e8453c6d95c71022e613d1c6c01483ea5b07f717eafe9337cd4d45c95deaa91c4045508 +"@verdaccio/ui-theme@npm:8.0.0-next-8.6": + version: 8.0.0-next-8.6 + resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.6" + checksum: 10c0/bf6470aa26c123c7f9af56c6896258ce4f63d5e009a594c7d337a680eb5c23aafe9ebb7769c1f16bd909dbaf20e48ee30406a39d747058117745f2e75bffab04 languageName: node linkType: hard -"@verdaccio/url@npm:13.0.0-next-8.4": - version: 13.0.0-next-8.4 - resolution: "@verdaccio/url@npm:13.0.0-next-8.4" +"@verdaccio/url@npm:13.0.0-next-8.6": + version: 13.0.0-next-8.6 + resolution: "@verdaccio/url@npm:13.0.0-next-8.6" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.6" debug: "npm:4.3.7" lodash: "npm:4.17.21" validator: "npm:13.12.0" - checksum: 10c0/a51f655dfa9169a70813f5de02e8fcdd94f039b40c95d7226cec6ac568e3de43d81dfd43edb05432d933e05d9fedf61c8ebb4cd82a5da48556a86c01b90f6e00 + checksum: 10c0/ff6de51d399d859d4630e7f4f4b142851e0a4cb4ba1ec1cbb010880820d7b88cb7953c2a290f28be2c78a9574e12033dda2be9eebf98521d13db645c1c93fa6d languageName: node linkType: hard @@ -5446,15 +5386,15 @@ __metadata: languageName: node linkType: hard -"@verdaccio/utils@npm:8.1.0-next-8.4": - version: 8.1.0-next-8.4 - resolution: "@verdaccio/utils@npm:8.1.0-next-8.4" +"@verdaccio/utils@npm:8.1.0-next-8.6": + version: 8.1.0-next-8.6 + resolution: "@verdaccio/utils@npm:8.1.0-next-8.6" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.6" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" semver: "npm:7.6.3" - checksum: 10c0/05b13601bd426a93e9ddaf5ccc1ed8cf65434c01c3bcae18867dc34eddd74a2e97c8aea99b293da022b30bae6c971ab08cad35303eaca0fb3c548474e169ffa2 + checksum: 10c0/e9998620736d9e9dadf025e9f2d700e13ad2454b2a9e42f427d26b78c64eac10b698324386e372294f6e241925f5b11a6905dcd4b2059e631b86a81bdbbf2c1c languageName: node linkType: hard @@ -7135,12 +7075,12 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:4.0.1": - version: 4.0.1 - resolution: "chokidar@npm:4.0.1" +"chokidar@npm:4.0.3": + version: 4.0.3 + resolution: "chokidar@npm:4.0.3" dependencies: readdirp: "npm:^4.0.1" - checksum: 10c0/4bb7a3adc304059810bb6c420c43261a15bb44f610d77c35547addc84faa0374265c3adc67f25d06f363d9a4571962b02679268c40de07676d260de1986efea9 + checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad languageName: node linkType: hard @@ -7904,7 +7844,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.4.0": +"debug@npm:4, debug@npm:4.4.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -12615,7 +12555,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": +"magic-string@npm:0.30.17, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.17 resolution: "magic-string@npm:0.30.17" dependencies: @@ -14760,7 +14700,7 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.28, psl@npm:^1.1.33": +"psl@npm:^1.1.28": version: 1.15.0 resolution: "psl@npm:1.15.0" dependencies: @@ -14897,7 +14837,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.5.2": +"qs@npm:6.13.1, qs@npm:^6.5.2": version: 6.13.1 resolution: "qs@npm:6.13.1" dependencies: @@ -14913,13 +14853,6 @@ __metadata: languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -16977,6 +16910,24 @@ __metadata: languageName: node linkType: hard +"tldts-core@npm:^6.1.69": + version: 6.1.69 + resolution: "tldts-core@npm:6.1.69" + checksum: 10c0/654b7ca5e349c89613b99179c5a3f55870be0b77d4ce062eaf6cdda7b160dc454a79a48e825e711f89e93588e62cbb6b166171a044a7427f5987ae9602d68328 + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.69 + resolution: "tldts@npm:6.1.69" + dependencies: + tldts-core: "npm:^6.1.69" + bin: + tldts: bin/cli.js + checksum: 10c0/47ca3c435f3fbe325a263e07417079551911afce45be0cc8b4a1c9ba14b8e9e6c493c6260dc5f34d3c4b396671fe641b2ebea9646e34c4a4d03223da848c7658 + languageName: node + linkType: hard + "tmp@npm:0.0.30": version: 0.0.30 resolution: "tmp@npm:0.0.30" @@ -17018,15 +16969,12 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.1.3": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" +"tough-cookie@npm:^5.0.0": + version: 5.0.0 + resolution: "tough-cookie@npm:5.0.0" dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 10c0/aca7ff96054f367d53d1e813e62ceb7dd2eda25d7752058a74d64b7266fd07be75908f3753a32ccf866a2f997604b414cfb1916d6e7f69bc64d9d9939b0d6c45 + tldts: "npm:^6.1.32" + checksum: 10c0/4a69c885bf6f45c5a64e60262af99e8c0d58a33bd3d0ce5da62121eeb9c00996d0128a72df8fc4614cbde59cc8b70aa3e21e4c3c98c2bbde137d7aba7fa00124 languageName: node linkType: hard @@ -17417,10 +17365,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:7.1.0": - version: 7.1.0 - resolution: "undici@npm:7.1.0" - checksum: 10c0/6fd0a63ca5e585128d67324e29cc49c903bf1752fd3b6f318627bb3765326df6f80c02f9c6fb2636ce3934706920c0b7fe4fe8ae19afe0a698f9ffbd7ef57548 +"undici@npm:7.2.0": + version: 7.2.0 + resolution: "undici@npm:7.2.0" + checksum: 10c0/97b8452bae99304b697f79e9b8c094a2c28e6b805f720187af3a01cae2d297788d7ab6fe883577ba94e48fc20f1fbf04ab4fb050c23527bf32f8ada79a26dcb2 languageName: node linkType: hard @@ -17527,13 +17475,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -17585,16 +17526,6 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 - languageName: node - linkType: hard - "urlpattern-polyfill@npm:10.0.0": version: 10.0.0 resolution: "urlpattern-polyfill@npm:10.0.0" @@ -17712,16 +17643,16 @@ __metadata: languageName: node linkType: hard -"verdaccio-audit@npm:13.0.0-next-8.4": - version: 13.0.0-next-8.4 - resolution: "verdaccio-audit@npm:13.0.0-next-8.4" +"verdaccio-audit@npm:13.0.0-next-8.6": + version: 13.0.0-next-8.6 + resolution: "verdaccio-audit@npm:13.0.0-next-8.6" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.4" - "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/config": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.6" express: "npm:4.21.1" https-proxy-agent: "npm:5.0.1" node-fetch: "npm:cjs" - checksum: 10c0/3b855cde19fca126c858a2ec4d70a988d0d86427a3c09e7994bea2b5522cfdd5087490badd7b182ece217db1e7d16f20c8a49bd261b8a981c7bfd1ed466415c6 + checksum: 10c0/b3e4526348e78f1f06535d3155ac2b116543943fa45b34652db2f3086c53285f8335ac8e4102691da01eff71a9cd265a080eb05711139bb0b377a0d6ff3783d4 languageName: node linkType: hard @@ -17734,11 +17665,11 @@ __metadata: languageName: node linkType: hard -"verdaccio-htpasswd@npm:13.0.0-next-8.4": - version: 13.0.0-next-8.4 - resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.4" +"verdaccio-htpasswd@npm:13.0.0-next-8.6": + version: 13.0.0-next-8.6 + resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.6" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.4" + "@verdaccio/core": "npm:8.0.0-next-8.6" "@verdaccio/file-locking": "npm:13.0.0-next-8.2" apache-md5: "npm:1.1.8" bcryptjs: "npm:2.4.3" @@ -17746,36 +17677,36 @@ __metadata: debug: "npm:4.3.7" http-errors: "npm:2.0.0" unix-crypt-td-js: "npm:1.1.4" - checksum: 10c0/c3f74c40744d98036026d30c60485f8e273de365e5d3b15fc25cfc2b7da97a3649ddeaf7ccf808ce27dfed310f0b275787981c51e83c25d9c9b63840811a2179 + checksum: 10c0/f80579f967870da6271c5706fffab25dcf30557c43921aaa942a44764e07f9166331ad59eac0d83f106d011752c4de2a42610c4081b195142cc4e4dcbacf78dd languageName: node linkType: hard -"verdaccio@npm:6.0.2": - version: 6.0.2 - resolution: "verdaccio@npm:6.0.2" +"verdaccio@npm:6.0.4": + version: 6.0.4 + resolution: "verdaccio@npm:6.0.4" dependencies: - "@cypress/request": "npm:3.0.5" - "@verdaccio/auth": "npm:8.0.0-next-8.4" - "@verdaccio/config": "npm:8.0.0-next-8.4" - "@verdaccio/core": "npm:8.0.0-next-8.4" + "@cypress/request": "npm:3.0.7" + "@verdaccio/auth": "npm:8.0.0-next-8.6" + "@verdaccio/config": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.6" "@verdaccio/local-storage-legacy": "npm:11.0.2" - "@verdaccio/logger": "npm:8.0.0-next-8.4" - "@verdaccio/middleware": "npm:8.0.0-next-8.4" + "@verdaccio/logger": "npm:8.0.0-next-8.6" + "@verdaccio/middleware": "npm:8.0.0-next-8.6" "@verdaccio/search-indexer": "npm:8.0.0-next-8.2" "@verdaccio/signature": "npm:8.0.0-next-8.1" "@verdaccio/streams": "npm:10.2.1" - "@verdaccio/tarball": "npm:13.0.0-next-8.4" - "@verdaccio/ui-theme": "npm:8.0.0-next-8.4" - "@verdaccio/url": "npm:13.0.0-next-8.4" + "@verdaccio/tarball": "npm:13.0.0-next-8.6" + "@verdaccio/ui-theme": "npm:8.0.0-next-8.6" + "@verdaccio/url": "npm:13.0.0-next-8.6" "@verdaccio/utils": "npm:7.0.1-next-8.1" JSONStream: "npm:1.3.5" async: "npm:3.2.6" clipanion: "npm:4.0.0-rc.4" compression: "npm:1.7.5" cors: "npm:2.8.5" - debug: "npm:4.3.7" + debug: "npm:4.4.0" envinfo: "npm:7.14.0" - express: "npm:4.21.1" + express: "npm:4.21.2" express-rate-limit: "npm:5.5.1" fast-safe-stringify: "npm:2.1.1" handlebars: "npm:4.7.8" @@ -17789,11 +17720,11 @@ __metadata: pkginfo: "npm:0.4.1" semver: "npm:7.6.3" validator: "npm:13.12.0" - verdaccio-audit: "npm:13.0.0-next-8.4" - verdaccio-htpasswd: "npm:13.0.0-next-8.4" + verdaccio-audit: "npm:13.0.0-next-8.6" + verdaccio-htpasswd: "npm:13.0.0-next-8.6" bin: verdaccio: bin/verdaccio - checksum: 10c0/e5d545341d6db5666c71def44b6e4d997c543c0f62ffffa3ddc0ccdbf1499a93f6d0eeb981ac6c94b599476a05ac1ce6f242c0606779ec992ad1127bb47718f8 + checksum: 10c0/64114626a5d4f90d1b0c1c47f96148acbe67c0a2c08247822d92d53ce4549a60c2ed980a261ccbbb1ed2df32736c316442dcd0af76ba15f12c8d837b0e430c9c languageName: node linkType: hard @@ -17860,6 +17791,58 @@ __metadata: languageName: node linkType: hard +"vite@npm:6.0.4": + version: 6.0.4 + resolution: "vite@npm:6.0.4" + dependencies: + esbuild: "npm:^0.24.0" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.49" + rollup: "npm:^4.23.0" + peerDependencies: + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/b1808f99250980bb1dc7805897ecfced4913adc7b4fd1cf7912e034f3e24e3e97a751ca3410620428bf073070f0b46071b94c4241cf9fc88b12f2d9dcafd7619 + languageName: node + linkType: hard + "void-elements@npm:^2.0.0": version: 2.0.1 resolution: "void-elements@npm:2.0.1" From 3feecddbba0d0559da10a45ad4040faf8e9d5198 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 19 Dec 2024 06:53:26 +0000 Subject: [PATCH 0169/2162] fix(@angular/ssr): disable component boostrapping when running route extraction This commit fixes an issue where the components where still being boostrapped when using `provideAppInitializer` Closes #29131 --- packages/angular/ssr/src/routes/ng-routes.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 681c8cd5c872..8e23b603ca31 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -8,14 +8,12 @@ import { APP_BASE_HREF, PlatformLocation } from '@angular/common'; import { - APP_INITIALIZER, ApplicationRef, Compiler, - ComponentRef, Injector, - inject, runInInjectionContext, ɵConsole, + ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, } from '@angular/core'; import { INITIAL_CONFIG, platformServer } from '@angular/platform-server'; import { @@ -493,16 +491,8 @@ export async function getRoutesFromAngularRouterConfig( useFactory: () => new Console(), }, { - // We cannot replace `ApplicationRef` with a different provider here due to the dependency injection (DI) hierarchy. - // This code is running at the platform level, where `ApplicationRef` is provided in the root injector. - // As a result, any attempt to replace it will cause the root provider to override the platform provider. - // TODO(alanagius): investigate exporting the app config directly which would help with: https://github.com/angular/angular/issues/59144 - provide: APP_INITIALIZER, - multi: true, - useFactory: () => () => { - const appRef = inject(ApplicationRef); - appRef.bootstrap = () => undefined as unknown as ComponentRef; - }, + provide: ɵENABLE_ROOT_COMPONENT_BOOTSTRAP, + useValue: false, }, ]); From cdf5d866886662dac3a3f6264e5648e436d6a552 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 17 Dec 2024 17:58:35 +0000 Subject: [PATCH 0170/2162] build: improve ts_project hybrid interop with node modules Currently the interop resulting target of a `ts_project` ends up not necessarily working at runtime. This may be the case because a consuming Node program may end up with mixes of `node_modules` dependencies from `rules_nodejs` (old) and `rules_js` (new). This sounds fine at first glance, but in practice can break very subtly because: * Rules NodeJS leverages the linker, creating `node_module` directories outside of Bazel, at runtime. These don't depend on symlink resolving. * Rules JS puts real node module folders via Bazel actions. These rely on `pnpm` non-hoisting layout, and symlink resolving. As we can see there is a hard conflict with symlinks. They need to be enabled with the new toolchain, but the other one doesn't enable symlink resolution, and enabling is not possible as we'd otherwise risk escaping the sandbox and cause even more subtle errors. A good compromise solution is to automatically drop the `rules_js` node module files/folder in the interop-`rules_nodejs` target and instead brining in the equivalent `@npm//` dependencies from `rules_nodejs`. This kind of keeps the logic similar to when not using `rules_js` or the interop, and enables the simplest & safest mental model; and it works compared to other solutions I tried with symlinking. Notably, we can't keep both node module variants as the linker doesn't override existing node module files from e.g. rules_js then (and would break then). --- .../angular_devkit/build_angular/BUILD.bazel | 153 +++++++++--------- .../angular_devkit/build_webpack/BUILD.bazel | 1 + .../angular_devkit/build_webpack/index.ts | 9 ++ tools/interop.bzl | 31 +++- tsconfig.json | 1 + 5 files changed, 116 insertions(+), 79 deletions(-) create mode 100644 packages/angular_devkit/build_webpack/index.ts diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index fd803c9ba7f2..e3a13c0085a0 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -6,6 +6,7 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -77,9 +78,8 @@ ts_json_schema( src = "src/builders/web-test-runner/schema.json", ) -ts_library( +ts_project( name = "build_angular", - package_name = "@angular-devkit/build-angular", srcs = glob( include = [ "src/**/*.ts", @@ -118,87 +118,88 @@ ts_library( "builders.json", "package.json", ], - module_name = "@angular-devkit/build-angular", - module_root = "src/index.d.ts", - deps = [ + interop_deps = [ "//packages/angular/build", "//packages/angular/build:private", "//packages/angular/ssr", - "//packages/angular_devkit/architect", "//packages/angular_devkit/build_webpack", "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/ngtools/webpack", - "@npm//@ampproject/remapping", - "@npm//@angular/common", - "@npm//@angular/compiler-cli", - "@npm//@angular/core", - "@npm//@angular/localize", - "@npm//@angular/platform-server", - "@npm//@angular/service-worker", - "@npm//@babel/core", - "@npm//@babel/generator", - "@npm//@babel/helper-annotate-as-pure", - "@npm//@babel/helper-split-export-declaration", - "@npm//@babel/plugin-transform-async-generator-functions", - "@npm//@babel/plugin-transform-async-to-generator", - "@npm//@babel/plugin-transform-runtime", - "@npm//@babel/preset-env", - "@npm//@babel/runtime", - "@npm//@discoveryjs/json-ext", - "@npm//@types/babel__core", - "@npm//@types/browser-sync", - "@npm//@types/karma", - "@npm//@types/less", - "@npm//@types/loader-utils", - "@npm//@types/node", - "@npm//@types/picomatch", - "@npm//@types/semver", - "@npm//@types/watchpack", - "@npm//@vitejs/plugin-basic-ssl", - "@npm//@web/test-runner", - "@npm//ajv", - "@npm//ansi-colors", - "@npm//autoprefixer", - "@npm//babel-loader", - "@npm//browserslist", - "@npm//copy-webpack-plugin", - "@npm//css-loader", - "@npm//esbuild", - "@npm//esbuild-wasm", - "@npm//fast-glob", - "@npm//http-proxy-middleware", - "@npm//istanbul-lib-instrument", - "@npm//jsonc-parser", - "@npm//karma", - "@npm//karma-source-map-support", - "@npm//less", - "@npm//less-loader", - "@npm//license-webpack-plugin", - "@npm//loader-utils", - "@npm//mini-css-extract-plugin", - "@npm//ng-packagr", - "@npm//open", - "@npm//ora", - "@npm//piscina", - "@npm//postcss", - "@npm//postcss-loader", - "@npm//resolve-url-loader", - "@npm//rxjs", - "@npm//sass", - "@npm//sass-loader", - "@npm//semver", - "@npm//source-map-loader", - "@npm//source-map-support", - "@npm//terser", - "@npm//tree-kill", - "@npm//tslib", - "@npm//typescript", - "@npm//webpack", - "@npm//webpack-dev-middleware", - "@npm//webpack-dev-server", - "@npm//webpack-merge", - "@npm//webpack-subresource-integrity", + ], + module_name = "@angular-devkit/build-angular", + deps = [ + "//:root_modules/@ampproject/remapping", + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@angular/core", + "//:root_modules/@angular/localize", + "//:root_modules/@angular/platform-server", + "//:root_modules/@angular/service-worker", + "//:root_modules/@babel/core", + "//:root_modules/@babel/generator", + "//:root_modules/@babel/helper-annotate-as-pure", + "//:root_modules/@babel/helper-split-export-declaration", + "//:root_modules/@babel/plugin-transform-async-generator-functions", + "//:root_modules/@babel/plugin-transform-async-to-generator", + "//:root_modules/@babel/plugin-transform-runtime", + "//:root_modules/@babel/preset-env", + "//:root_modules/@babel/runtime", + "//:root_modules/@discoveryjs/json-ext", + "//:root_modules/@types/babel__core", + "//:root_modules/@types/browser-sync", + "//:root_modules/@types/karma", + "//:root_modules/@types/less", + "//:root_modules/@types/loader-utils", + "//:root_modules/@types/node", + "//:root_modules/@types/picomatch", + "//:root_modules/@types/semver", + "//:root_modules/@types/watchpack", + "//:root_modules/@vitejs/plugin-basic-ssl", + "//:root_modules/@web/test-runner", + "//:root_modules/ajv", + "//:root_modules/ansi-colors", + "//:root_modules/autoprefixer", + "//:root_modules/babel-loader", + "//:root_modules/browserslist", + "//:root_modules/copy-webpack-plugin", + "//:root_modules/css-loader", + "//:root_modules/esbuild", + "//:root_modules/esbuild-wasm", + "//:root_modules/fast-glob", + "//:root_modules/http-proxy-middleware", + "//:root_modules/istanbul-lib-instrument", + "//:root_modules/jsonc-parser", + "//:root_modules/karma", + "//:root_modules/karma-source-map-support", + "//:root_modules/less", + "//:root_modules/less-loader", + "//:root_modules/license-webpack-plugin", + "//:root_modules/loader-utils", + "//:root_modules/mini-css-extract-plugin", + "//:root_modules/ng-packagr", + "//:root_modules/open", + "//:root_modules/ora", + "//:root_modules/piscina", + "//:root_modules/postcss", + "//:root_modules/postcss-loader", + "//:root_modules/resolve-url-loader", + "//:root_modules/rxjs", + "//:root_modules/sass", + "//:root_modules/sass-loader", + "//:root_modules/semver", + "//:root_modules/source-map-loader", + "//:root_modules/source-map-support", + "//:root_modules/terser", + "//:root_modules/tree-kill", + "//:root_modules/tslib", + "//:root_modules/typescript", + "//:root_modules/webpack", + "//:root_modules/webpack-dev-middleware", + "//:root_modules/webpack-dev-server", + "//:root_modules/webpack-merge", + "//:root_modules/webpack-subresource-integrity", + "//packages/angular_devkit/architect", ], ) diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index e03c86c07be1..5df72c9adf9f 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -32,6 +32,7 @@ ts_library( "src/**/*_spec.ts", ], ) + [ + "index.ts", "//packages/angular_devkit/build_webpack:src/builders/webpack-dev-server/schema.ts", "//packages/angular_devkit/build_webpack:src/builders/webpack/schema.ts", ], diff --git a/packages/angular_devkit/build_webpack/index.ts b/packages/angular_devkit/build_webpack/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/angular_devkit/build_webpack/index.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 + */ + +export * from './src/index'; diff --git a/tools/interop.bzl b/tools/interop.bzl index 01e4e00f705e..f0dd3ce765f0 100644 --- a/tools/interop.bzl +++ b/tools/interop.bzl @@ -42,6 +42,17 @@ def _ts_project_module_impl(ctx): runfiles = ctx.attr.dep[DefaultInfo].default_runfiles info = ctx.attr.dep[JsInfo] + # Filter runfiles to not `node_modules` from Aspect as this interop + # target is supposed to be used downstream by `rules_nodejs` consumers, + # and mixing pnpm-style node modules with linker node modules is incompatible. + filtered = [] + for f in runfiles.files.to_list(): + if f.short_path.startswith("node_modules/"): + continue + filtered.append(f) + + runfiles = ctx.runfiles(files = filtered) + providers = [ DefaultInfo( runfiles = runfiles, @@ -83,9 +94,21 @@ ts_project_module = rule( ) def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly = False, **kwargs): + # Pull in the `rules_nodejs` variants of dependencies we know are "hybrid". This + # is necessary as we can't mix `npm/node_modules` from RNJS with the pnpm-style + # symlink-dependent node modules. In addition, we need to extract `_rjs` interop + # dependencies so that we can forward and capture the module mappings for runtime + # execution, with regards to first-party dependency linking. + rjs_modules_to_rnjs = [] + for d in deps: + if d.startswith("//:root_modules/"): + rjs_modules_to_rnjs.append(d.replace("//:root_modules/", "@npm//")) + if d.endswith("_rjs"): + rjs_modules_to_rnjs.append(d.replace("_rjs", "")) + ts_deps_interop( name = "%s_interop_deps" % name, - deps = interop_deps, + deps = [] + interop_deps + rjs_modules_to_rnjs, testonly = testonly, ) @@ -99,7 +122,7 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly # worker for efficient, fast DX and avoiding Windows no-sandbox issues. supports_workers = 1, tsc_worker = "//tools:vanilla_ts_worker", - deps = ["%s_interop_deps" % name] + deps, + deps = [":%s_interop_deps" % name] + deps, **kwargs ) @@ -107,6 +130,8 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly name = name, testonly = testonly, dep = "%s_rjs" % name, - deps = interop_deps, + # Forwarded dependencies for linker module mapping aspect. + # RJS deps can also transitively pull in module mappings from their `interop_deps`. + deps = [] + interop_deps + deps, module_name = module_name, ) diff --git a/tsconfig.json b/tsconfig.json index c11293fd8e48..c2c25b7e5fcb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,6 +27,7 @@ "@angular-devkit/architect/*": ["./packages/angular_devkit/architect/*/index"], "@angular-devkit/build-webpack": ["./packages/angular_devkit/build_webpack"], "@angular-devkit/*": ["./packages/angular_devkit/*/src"], + "@angular/ssr": ["./packages/angular/ssr"], "@angular/*": ["./packages/angular/*/src"], "@angular/build/private": ["./packages/angular/build/src/private"], "@ngtools/webpack": ["./packages/ngtools/webpack/src"], From b6268f7a30425d0852a6da52740e10f467458a55 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 19 Dec 2024 14:06:19 +0000 Subject: [PATCH 0171/2162] build: migrate `build_angular` to `ts_project` This commit updates `build_angular` to the `rules_js` ts_project rule. Notably a few real type issues surfaced but previously didn't surface due to some unknown resolution issues that resulted in `never` types; where every possible value was assignable; so this change improves type safety and a TODO was left for the "brittle code fragment". --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 1 + .../angular_devkit/build_angular/BUILD.bazel | 137 ++++++++++-------- .../angular_devkit/build_angular/index.ts | 9 ++ .../webpack/plugins/postcss-cli-resources.ts | 14 +- .../webpack/plugins/scripts-webpack-plugin.ts | 4 +- pnpm-lock.yaml | 6 +- tsconfig.json | 1 + yarn.lock | 3 +- 9 files changed, 108 insertions(+), 73 deletions(-) create mode 100644 packages/angular_devkit/build_angular/index.ts diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index a12ca2fea2cb..11e0383be27a 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-617490503 -pnpm-lock.yaml=633266779 +package.json=-851944395 +pnpm-lock.yaml=-958480774 pnpm-workspace.yaml=1711114604 -yarn.lock=-291473705 +yarn.lock=481913197 diff --git a/package.json b/package.json index 6a3c42542037..fffa3e20e54e 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,7 @@ "@rollup/plugin-node-resolve": "^13.0.5", "@stylistic/eslint-plugin": "^2.8.0", "@types/babel__core": "7.20.5", + "@types/babel__generator": "^7.6.8", "@types/browser-sync": "^2.27.0", "@types/express": "^4.16.0", "@types/http-proxy": "^1.17.4", diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index e3a13c0085a0..e2fd430e9d1b 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -5,7 +5,7 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") @@ -93,6 +93,7 @@ ts_project( "src/testing/**/*.ts", ], ) + [ + "index.ts", "//packages/angular_devkit/build_angular:src/builders/app-shell/schema.ts", "//packages/angular_devkit/build_angular:src/builders/browser-esbuild/schema.ts", "//packages/angular_devkit/build_angular:src/builders/browser/schema.ts", @@ -147,6 +148,7 @@ ts_project( "//:root_modules/@babel/runtime", "//:root_modules/@discoveryjs/json-ext", "//:root_modules/@types/babel__core", + "//:root_modules/@types/babel__generator", "//:root_modules/@types/browser-sync", "//:root_modules/@types/karma", "//:root_modules/@types/less", @@ -203,7 +205,7 @@ ts_project( ], ) -ts_library( +ts_project( name = "build_angular_test_lib", testonly = True, srcs = glob( @@ -215,15 +217,17 @@ ts_library( ], ), data = glob(["test/**/*"]), - deps = [ - ":build_angular", - ":build_angular_test_utils", - "//packages/angular_devkit/architect/testing", + interop_deps = [ "//packages/angular_devkit/core", - "@npm//fast-glob", - "@npm//prettier", - "@npm//typescript", - "@npm//webpack", + ], + deps = [ + ":build_angular_rjs", + ":build_angular_test_utils_rjs", + "//:root_modules/fast-glob", + "//:root_modules/prettier", + "//:root_modules/typescript", + "//:root_modules/webpack", + "//packages/angular_devkit/architect/testing:testing_rjs", ], ) @@ -268,7 +272,7 @@ api_golden_test_npm_package( # Large build_angular specs -ts_library( +ts_project( name = "build_angular_test_utils", testonly = True, srcs = glob( @@ -281,17 +285,19 @@ ts_library( ], ), data = glob(["test/**/*"]), - tsconfig = "//:tsconfig-test.json", - deps = [ - ":build_angular", + interop_deps = [ "//modules/testing/builder", "//packages/angular/build", "//packages/angular/build:private", - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", + ], + deps = [ + ":build_angular_rjs", + "//:root_modules/@types/jasmine", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", "@npm//rxjs", ], ) @@ -302,12 +308,14 @@ LARGE_SPECS = { "shards": 10, "size": "large", "flaky": True, - "extra_deps": [ + "extra_interop_deps": [ "//packages/angular_devkit/build_webpack", - "@npm//@types/http-proxy", - "@npm//http-proxy", - "@npm//puppeteer", - "@npm//undici", + ], + "extra_deps": [ + "//:root_modules/@types/http-proxy", + "//:root_modules/http-proxy", + "//:root_modules/puppeteer", + "//:root_modules/undici", ], }, "extract-i18n": {}, @@ -316,21 +324,21 @@ LARGE_SPECS = { "size": "large", "flaky": True, "extra_deps": [ - "@npm//karma", - "@npm//karma-chrome-launcher", - "@npm//karma-coverage", - "@npm//karma-jasmine", - "@npm//karma-jasmine-html-reporter", - "@npm//puppeteer", - "@npm//webpack", + "//:root_modules/karma", + "//:root_modules/karma-chrome-launcher", + "//:root_modules/karma-coverage", + "//:root_modules/karma-jasmine", + "//:root_modules/karma-jasmine-html-reporter", + "//:root_modules/puppeteer", + "//:root_modules/webpack", ], }, "protractor": { "extra_deps": [ - "@npm//jasmine-spec-reporter", - "@npm//protractor", - "@npm//puppeteer", - "@npm//ts-node", + "//:root_modules/jasmine-spec-reporter", + "//:root_modules/protractor", + "//:root_modules/puppeteer", + "//:root_modules/ts-node", ], # NB: does not run on rbe because webdriver manager uses an absolute path to chromedriver "tags": ["no-remote-exec"], @@ -340,7 +348,7 @@ LARGE_SPECS = { "server": { "size": "large", "extra_deps": [ - "@npm//@angular/animations", + "//:root_modules/@angular/animations", ], }, "ng-packagr": {}, @@ -349,55 +357,60 @@ LARGE_SPECS = { "size": "large", "flaky": True, "extra_deps": [ - "@npm//@angular/animations", - "@npm//@angular/material", + "//:root_modules/@angular/animations", + "//:root_modules/@angular/material", ], }, "prerender": {}, "browser-esbuild": {}, "ssr-dev-server": { - "extra_deps": [ - "@npm//@types/browser-sync", - "@npm//browser-sync", - "@npm//express", - "@npm//undici", + "extra_interop_deps": [ "//packages/angular/ssr/node", ], + "extra_deps": [ + "//:root_modules/@types/browser-sync", + "//:root_modules/browser-sync", + "//:root_modules/express", + "//:root_modules/undici", + ], }, } [ - ts_library( + ts_project( name = "build_angular_" + spec + "_test_lib", testonly = True, srcs = glob(["src/builders/" + spec + "/**/*_spec.ts"]), - tsconfig = "//:tsconfig-test.json", - deps = [ + interop_deps = [ # Dependencies needed to compile and run the specs themselves. - ":build_angular", - ":build_angular_test_utils", + "//packages/angular_devkit/core", + "//packages/angular_devkit/core/node", "//modules/testing/builder", "//packages/angular/build", "//packages/angular/build:private", - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", + ] + LARGE_SPECS[spec].get("extra_interop_deps", []), + deps = [ + # Dependencies needed to compile and run the specs themselves. + ":build_angular_rjs", + ":build_angular_test_utils_rjs", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", # Base dependencies for the application in hello-world-app. # Some tests also require extra dependencies. - "@npm//@angular/common", - "@npm//@angular/compiler", - "@npm//@angular/compiler-cli", - "@npm//@angular/core", - "@npm//@angular/platform-browser", - "@npm//@angular/platform-browser-dynamic", - "@npm//@angular/router", - "@npm//rxjs", - "@npm//tslib", - "@npm//typescript", - "@npm//zone.js", + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-browser", + "//:root_modules/@angular/platform-browser-dynamic", + "//:root_modules/@angular/router", + "//:root_modules/rxjs", + "//:root_modules/tslib", + "//:root_modules/typescript", + "//:root_modules/zone.js", + "//:root_modules/@types/jasmine", ] + LARGE_SPECS[spec].get("extra_deps", []), ) for spec in LARGE_SPECS diff --git a/packages/angular_devkit/build_angular/index.ts b/packages/angular_devkit/build_angular/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/angular_devkit/build_angular/index.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 + */ + +export * from './src/index'; diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts index 3dde32a42cc8..a59d009072d1 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/postcss-cli-resources.ts @@ -115,10 +115,16 @@ export default function (options?: PostcssCliResourcesOptions): Plugin { return; } - let outputPath = interpolateName({ resourcePath: result }, filename(result), { - content, - context: loader.context || loader.rootContext, - }).replace(/\\|\//g, '-'); + let outputPath = interpolateName( + // TODO: Revisit. Previously due to lack of type safety, this object + // was fine, but in practice it doesn't match the type of the loader context. + { resourcePath: result } as Parameters[0], + filename(result), + { + content, + context: loader.context || loader.rootContext, + }, + ).replace(/\\|\//g, '-'); if (resourcesOutputPath) { outputPath = path.posix.join(resourcesOutputPath, outputPath); diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts index 6d3de8a51129..185cafdfb25d 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/scripts-webpack-plugin.ts @@ -194,7 +194,9 @@ export class ScriptsWebpackPlugin { const asset = compilation.getAsset(assetName); if (asset) { const interpolatedFilename = interpolateName( - { resourcePath: 'scripts.js' }, + // TODO: Revisit. Previously due to lack of type safety, this object + // was fine, but in practice it doesn't match the type of the loader context. + { resourcePath: 'scripts.js' } as Parameters[0], assetName, { content: asset.source.source() }, ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afa9cc85f22c..f522f6d4c553 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -142,6 +142,9 @@ importers: '@types/babel__core': specifier: 7.20.5 version: 7.20.5 + '@types/babel__generator': + specifier: ^7.6.8 + version: 7.6.8 '@types/browser-sync': specifier: ^2.27.0 version: 2.29.0 @@ -2063,7 +2066,6 @@ packages: /@bazel/typescript@5.8.1(typescript@5.7.2): resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} - deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement hasBin: true peerDependencies: typescript: 5.7.2 @@ -11864,7 +11866,7 @@ packages: /puppeteer@18.2.1: resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} engines: {node: '>=14.1.0'} - deprecated: < 22.8.2 is no longer supported + deprecated: < 19.4.0 is no longer supported dependencies: https-proxy-agent: 5.0.1(supports-color@9.4.0) progress: 2.0.3 diff --git a/tsconfig.json b/tsconfig.json index c2c25b7e5fcb..dbe34ec986e6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,6 +26,7 @@ "@angular-devkit/schematics/testing": ["./packages/angular_devkit/schematics/testing/index"], "@angular-devkit/architect/*": ["./packages/angular_devkit/architect/*/index"], "@angular-devkit/build-webpack": ["./packages/angular_devkit/build_webpack"], + "@angular-devkit/build-angular": ["./packages/angular_devkit/build_angular"], "@angular-devkit/*": ["./packages/angular_devkit/*/src"], "@angular/ssr": ["./packages/angular/ssr"], "@angular/*": ["./packages/angular/*/src"], diff --git a/yarn.lock b/yarn.lock index 9f479d29dc33..383259492c7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -351,6 +351,7 @@ __metadata: "@rollup/plugin-node-resolve": "npm:^13.0.5" "@stylistic/eslint-plugin": "npm:^2.8.0" "@types/babel__core": "npm:7.20.5" + "@types/babel__generator": "npm:^7.6.8" "@types/browser-sync": "npm:^2.27.0" "@types/express": "npm:^4.16.0" "@types/http-proxy": "npm:^1.17.4" @@ -4180,7 +4181,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__generator@npm:*": +"@types/babel__generator@npm:*, @types/babel__generator@npm:^7.6.8": version: 7.6.8 resolution: "@types/babel__generator@npm:7.6.8" dependencies: From 40533103cc899896d4549bb3636c63184f5ac7ef Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 19 Dec 2024 14:25:15 +0000 Subject: [PATCH 0172/2162] Revert "test: update chunk file name to reflect new name" This reverts commit 3af88fef8b3255971cc20034d31b01012b7cacb3. No longer needed because the interop lays out the node modules directory like without the interop & `ts_project` migration; so the chunk name changed back to what it was before. Good news. --- .../src/builders/browser/tests/options/named-chunks_spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts index e131303668f1..d2521c71cd98 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/tests/options/named-chunks_spec.ts @@ -11,7 +11,7 @@ import { BASE_OPTIONS, BROWSER_BUILDER_INFO, describeBuilder } from '../setup'; const MAIN_OUTPUT = 'dist/main.js'; const NAMED_LAZY_OUTPUT = 'dist/src_lazy-module_ts.js'; -const UNNAMED_LAZY_OUTPUT = 'dist/414.js'; +const UNNAMED_LAZY_OUTPUT = 'dist/358.js'; describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => { describe('Option: "namedChunks"', () => { From 46306acf0ce84e36698a4da3fb5ac806da4956bd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 19 Dec 2024 18:05:33 +0000 Subject: [PATCH 0173/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 +-- package.json | 6 +- pnpm-lock.yaml | 283 +++++++----------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 135 ++------- 11 files changed, 205 insertions(+), 353 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 11e0383be27a..ea240e1840ae 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-851944395 -pnpm-lock.yaml=-958480774 +package.json=255531279 +pnpm-lock.yaml=-626240895 pnpm-workspace.yaml=1711114604 -yarn.lock=481913197 +yarn.lock=152934478 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 1d2370dcce73..9d9daed036ff 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + - uses: angular/dev-infra/github-actions/branch-manager@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f7ab6000cc8..1c4196c02c28 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -90,13 +90,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -111,13 +111,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -132,13 +132,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -149,13 +149,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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -182,11 +182,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - run: yarn 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 c62135bb0c0f..9f0dd8bf52b5 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + - uses: angular/dev-infra/github-actions/commit-message-based-labels@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + - uses: angular/dev-infra/github-actions/post-approval-changes@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 359b8658f5e8..12ce31100ea6 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + - uses: angular/dev-infra/github-actions/feature-request@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c28b7e0a14be..0a2d2148ace7 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable # 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 45bb8a180cbf..ee06763ec16f 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/linting/licenses@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Check tooling setup run: yarn 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@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Build release targets @@ -90,11 +90,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -113,13 +113,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -130,13 +130,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -151,13 +151,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -174,12 +174,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@36b7540c8baf768285e55e02cb440c5e1eb658fa + uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 fffa3e20e54e..7ccf983b5cbb 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.4", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19", "@angular/cdk": "19.1.0-next.3", "@angular/common": "19.1.0-next.4", "@angular/compiler": "19.1.0-next.4", @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-next.4", "@angular/localize": "19.1.0-next.4", "@angular/material": "19.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43", "@angular/platform-browser": "19.1.0-next.4", "@angular/platform-browser-dynamic": "19.1.0-next.4", "@angular/platform-server": "19.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f522f6d4c553..c1033fcfaa2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126 - version: github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37 + version: github.com/angular/bazel-builds/5c693d4f8110bb65bc8635506d74ffcb374aaa37(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee - version: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19 + version: github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408 - version: github.com/angular/dev-infra-private-ng-dev-builds/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43 + version: github.com/angular/dev-infra-private-ng-dev-builds/e4435ccb1b275541908b57b02958dc453c2fed43 '@angular/platform-browser': specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) @@ -261,7 +261,7 @@ importers: version: 7.1.2(webpack@5.97.1) debug: specifier: ^4.1.1 - version: 4.4.0(supports-color@9.4.0) + version: 4.4.0(supports-color@10.0.0) esbuild: specifier: 0.24.0 version: 0.24.0 @@ -294,7 +294,7 @@ importers: version: 3.0.3 https-proxy-agent: specifier: 7.0.6 - version: 7.0.6(supports-color@9.4.0) + version: 7.0.6(supports-color@10.0.0) husky: specifier: 9.1.7 version: 9.1.7 @@ -625,7 +625,7 @@ packages: browserslist: 4.24.3 esbuild: 0.24.0 fast-glob: 3.3.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@10.0.0) istanbul-lib-instrument: 6.0.3 less: 4.2.1 listr2: 8.2.5 @@ -908,7 +908,7 @@ packages: '@babel/traverse': 7.26.4 '@babel/types': 7.26.3 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -983,7 +983,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) lodash.debounce: 4.0.8 resolve: 1.22.9 transitivePeerDependencies: @@ -1957,7 +1957,7 @@ packages: '@babel/parser': 7.26.3 '@babel/template': 7.25.9 '@babel/types': 7.26.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2066,6 +2066,7 @@ packages: /@bazel/typescript@5.8.1(typescript@5.7.2): resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} + deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement hasBin: true peerDependencies: typescript: 5.7.2 @@ -2340,7 +2341,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -2361,7 +2362,7 @@ packages: resolution: {integrity: sha512-gXi0awOZLHk3TbW55GZLCPP6O+y/b5X1pBXKBVckFONSwF1z1E5ND2BGJsghQFah+pW7pkkyFb2VhUQI2qhL5w==} dev: true - /@google-cloud/common@5.0.2(supports-color@9.4.0): + /@google-cloud/common@5.0.2(supports-color@10.0.0): resolution: {integrity: sha512-V7bmBKYQyu0eVG2BFejuUjlBt+zrya6vtsKdY+JxMM/dNntPF41vZ9+LhOshEUH01zOHEqBSvI7Dad7ZS6aUeA==} engines: {node: '>=14.0.0'} dependencies: @@ -2370,10 +2371,10 @@ packages: arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 - google-auth-library: 9.15.0(supports-color@9.4.0) + google-auth-library: 9.15.0(supports-color@10.0.0) html-entities: 2.5.2 - retry-request: 7.0.2(supports-color@9.4.0) - teeny-request: 9.0.0(supports-color@9.4.0) + retry-request: 7.0.2(supports-color@10.0.0) + teeny-request: 9.0.0(supports-color@10.0.0) transitivePeerDependencies: - encoding - supports-color @@ -2394,11 +2395,11 @@ packages: engines: {node: '>=14'} dev: true - /@google-cloud/spanner@7.16.0(supports-color@9.4.0): + /@google-cloud/spanner@7.16.0(supports-color@10.0.0): resolution: {integrity: sha512-9/rQau/WNgM1Zle9sEJm6jUp1l4sbHtiHGcktQnQc2LPs5EjMMg9eYaP4UfWgDzoxny+3hyKTyhBbAzHR8pQGA==} engines: {node: '>=14.0.0'} dependencies: - '@google-cloud/common': 5.0.2(supports-color@9.4.0) + '@google-cloud/common': 5.0.2(supports-color@10.0.0) '@google-cloud/precise-date': 4.0.0 '@google-cloud/projectify': 4.0.0 '@google-cloud/promisify': 4.0.0 @@ -2414,19 +2415,19 @@ packages: duplexify: 4.1.3 events-intercept: 2.0.0 extend: 3.0.2 - google-auth-library: 9.15.0(supports-color@9.4.0) - google-gax: 4.4.1(supports-color@9.4.0) + google-auth-library: 9.15.0(supports-color@10.0.0) + google-gax: 4.4.1(supports-color@10.0.0) grpc-gcp: 1.0.1 is: 3.3.0 lodash.snakecase: 4.1.1 merge-stream: 2.0.0 p-queue: 6.6.2 protobufjs: 7.4.0 - retry-request: 7.0.2(supports-color@9.4.0) + retry-request: 7.0.2(supports-color@10.0.0) split-array-stream: 2.0.0 stack-trace: 0.0.10 stream-events: 1.0.5 - teeny-request: 9.0.0(supports-color@9.4.0) + teeny-request: 9.0.0(supports-color@10.0.0) through2: 4.0.2 transitivePeerDependencies: - encoding @@ -2462,7 +2463,7 @@ packages: deprecated: Use @eslint/config-array instead dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2816,16 +2817,6 @@ packages: dev: true optional: true - /@microsoft/api-extractor-model@7.30.0(@types/node@18.19.68): - resolution: {integrity: sha512-26/LJZBrsWDKAkOWRiQbdVgcfd1F3nyJnAiJzsAgpouPk7LtOIj7PK9aJtBaw/pUXrkotEg27RrT+Jm/q0bbug==} - dependencies: - '@microsoft/tsdoc': 0.15.1 - '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.0(@types/node@18.19.68) - transitivePeerDependencies: - - '@types/node' - dev: true - /@microsoft/api-extractor-model@7.30.1(@types/node@18.19.68): resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} dependencies: @@ -2836,27 +2827,6 @@ packages: - '@types/node' dev: true - /@microsoft/api-extractor@7.48.0(@types/node@18.19.68): - resolution: {integrity: sha512-FMFgPjoilMUWeZXqYRlJ3gCVRhB7WU/HN88n8OLqEsmsG4zBdX/KQdtJfhq95LQTQ++zfu0Em1LLb73NqRCLYQ==} - hasBin: true - dependencies: - '@microsoft/api-extractor-model': 7.30.0(@types/node@18.19.68) - '@microsoft/tsdoc': 0.15.1 - '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.0(@types/node@18.19.68) - '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.3(@types/node@18.19.68) - '@rushstack/ts-command-line': 4.23.1(@types/node@18.19.68) - lodash: 4.17.21 - minimatch: 3.0.8 - resolve: 1.22.9 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.7.2 - transitivePeerDependencies: - - '@types/node' - dev: true - /@microsoft/api-extractor@7.48.1(@types/node@18.19.68): resolution: {integrity: sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==} hasBin: true @@ -3111,7 +3081,7 @@ packages: dependencies: agent-base: 7.1.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@10.0.0) lru-cache: 10.4.3 socks-proxy-agent: 8.0.5 transitivePeerDependencies: @@ -3501,7 +3471,7 @@ packages: engines: {node: '>=18'} hasBin: true dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 @@ -3763,25 +3733,6 @@ packages: resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true - /@rushstack/node-core-library@5.10.0(@types/node@18.19.68): - resolution: {integrity: sha512-2pPLCuS/3x7DCd7liZkqOewGM0OzLyCacdvOe8j6Yrx9LkETGnxul1t7603bIaB8nUAooORcct9fFDOQMbWAgw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 18.19.68 - ajv: 8.13.0 - ajv-draft-04: 1.0.0(ajv@8.13.0) - ajv-formats: 3.0.1(ajv@8.13.0) - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.9 - semver: 7.5.4 - dev: true - /@rushstack/node-core-library@5.10.1(@types/node@18.19.68): resolution: {integrity: sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==} peerDependencies: @@ -3808,19 +3759,6 @@ packages: strip-json-comments: 3.1.1 dev: true - /@rushstack/terminal@0.14.3(@types/node@18.19.68): - resolution: {integrity: sha512-csXbZsAdab/v8DbU1sz7WC2aNaKArcdS/FPmXMOXEj/JBBZMvDK0+1b4Qao0kkG0ciB1Qe86/Mb68GjH6/TnMw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@rushstack/node-core-library': 5.10.0(@types/node@18.19.68) - '@types/node': 18.19.68 - supports-color: 8.1.1 - dev: true - /@rushstack/terminal@0.14.4(@types/node@18.19.68): resolution: {integrity: sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==} peerDependencies: @@ -3834,17 +3772,6 @@ packages: supports-color: 8.1.1 dev: true - /@rushstack/ts-command-line@4.23.1(@types/node@18.19.68): - resolution: {integrity: sha512-40jTmYoiu/xlIpkkRsVfENtBq4CW3R4azbL0Vmda+fMwHWqss6wwf/Cy/UJmMqIzpfYc2OTnjYP1ZLD3CmyeCA==} - dependencies: - '@rushstack/terminal': 0.14.3(@types/node@18.19.68) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' - dev: true - /@rushstack/ts-command-line@4.23.2(@types/node@18.19.68): resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} dependencies: @@ -4590,7 +4517,7 @@ packages: '@typescript-eslint/types': 8.18.1 '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.18.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 typescript: 5.7.2 transitivePeerDependencies: @@ -4614,7 +4541,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 @@ -4635,7 +4562,7 @@ packages: dependencies: '@typescript-eslint/types': 8.18.1 '@typescript-eslint/visitor-keys': 8.18.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 @@ -5314,11 +5241,11 @@ packages: es6-promisify: 5.0.0 dev: true - /agent-base@6.0.2(supports-color@9.4.0): + /agent-base@6.0.2(supports-color@10.0.0): resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true @@ -6803,7 +6730,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.4.0(supports-color@9.4.0): + /debug@4.4.0(supports-color@10.0.0): resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} peerDependencies: @@ -6813,7 +6740,7 @@ packages: optional: true dependencies: ms: 2.1.3 - supports-color: 9.4.0 + supports-color: 10.0.0 dev: true /decamelize@1.2.0: @@ -7580,7 +7507,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -7823,7 +7750,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -8060,7 +7987,7 @@ packages: debug: optional: true dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) dev: true /for-each@0.3.3: @@ -8229,12 +8156,12 @@ packages: is-windows: 1.0.2 dev: true - /gaxios@6.7.1(supports-color@9.4.0): + /gaxios@6.7.1(supports-color@10.0.0): resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@10.0.0) is-stream: 2.0.1 node-fetch: 2.7.0 uuid: 9.0.1 @@ -8243,11 +8170,11 @@ packages: - supports-color dev: true - /gcp-metadata@6.1.0(supports-color@9.4.0): + /gcp-metadata@6.1.0(supports-color@10.0.0): resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} engines: {node: '>=14'} dependencies: - gaxios: 6.7.1(supports-color@9.4.0) + gaxios: 6.7.1(supports-color@10.0.0) json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -8317,7 +8244,7 @@ packages: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true @@ -8426,22 +8353,22 @@ packages: pinkie-promise: 2.0.1 dev: true - /google-auth-library@9.15.0(supports-color@9.4.0): + /google-auth-library@9.15.0(supports-color@10.0.0): resolution: {integrity: sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==} engines: {node: '>=14'} dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 6.7.1(supports-color@9.4.0) - gcp-metadata: 6.1.0(supports-color@9.4.0) - gtoken: 7.1.0(supports-color@9.4.0) + gaxios: 6.7.1(supports-color@10.0.0) + gcp-metadata: 6.1.0(supports-color@10.0.0) + gtoken: 7.1.0(supports-color@10.0.0) jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color dev: true - /google-gax@4.4.1(supports-color@9.4.0): + /google-gax@4.4.1(supports-color@10.0.0): resolution: {integrity: sha512-Phyp9fMfA00J3sZbJxbbB4jC55b7DBjE3F6poyL3wKMEBVKA79q6BGuHcTiM28yOzVql0NDbRL8MLLh8Iwk9Dg==} engines: {node: '>=14'} dependencies: @@ -8450,12 +8377,12 @@ packages: '@types/long': 4.0.2 abort-controller: 3.0.0 duplexify: 4.1.3 - google-auth-library: 9.15.0(supports-color@9.4.0) + google-auth-library: 9.15.0(supports-color@10.0.0) node-fetch: 2.7.0 object-hash: 3.0.0 proto3-json-serializer: 2.0.2 protobufjs: 7.4.0 - retry-request: 7.0.2(supports-color@9.4.0) + retry-request: 7.0.2(supports-color@10.0.0) uuid: 9.0.1 transitivePeerDependencies: - encoding @@ -8486,11 +8413,11 @@ packages: '@grpc/grpc-js': 1.12.4 dev: true - /gtoken@7.1.0(supports-color@9.4.0): + /gtoken@7.1.0(supports-color@10.0.0): resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} dependencies: - gaxios: 6.7.1(supports-color@9.4.0) + gaxios: 6.7.1(supports-color@10.0.0) jws: 4.0.0 transitivePeerDependencies: - encoding @@ -8673,13 +8600,13 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: true - /http-proxy-agent@5.0.0(supports-color@9.4.0): + /http-proxy-agent@5.0.0(supports-color@10.0.0): resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 - agent-base: 6.0.2(supports-color@9.4.0) - debug: 4.4.0(supports-color@9.4.0) + agent-base: 6.0.2(supports-color@10.0.0) + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true @@ -8689,7 +8616,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true @@ -8718,7 +8645,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/http-proxy': 1.17.15 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) http-proxy: 1.18.1(debug@4.4.0) is-glob: 4.0.3 is-plain-object: 5.0.0 @@ -8774,22 +8701,22 @@ packages: - supports-color dev: true - /https-proxy-agent@5.0.1(supports-color@9.4.0): + /https-proxy-agent@5.0.1(supports-color@10.0.0): resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: - agent-base: 6.0.2(supports-color@9.4.0) - debug: 4.4.0(supports-color@9.4.0) + agent-base: 6.0.2(supports-color@10.0.0) + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true - /https-proxy-agent@7.0.6(supports-color@9.4.0): + /https-proxy-agent@7.0.6(supports-color@10.0.0): resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true @@ -9421,7 +9348,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -9883,7 +9810,7 @@ packages: resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} engines: {node: '>= 8'} dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -9909,7 +9836,7 @@ packages: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -10178,7 +10105,7 @@ packages: engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) flatted: 3.3.2 rfdc: 1.4.1 streamroller: 3.1.5 @@ -11216,10 +11143,10 @@ packages: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) get-uri: 6.0.4 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@10.0.0) pac-resolver: 7.0.1 socks-proxy-agent: 8.0.5 transitivePeerDependencies: @@ -11769,9 +11696,9 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6(supports-color@10.0.0) lru-cache: 7.18.3 pac-proxy-agent: 7.1.0 proxy-from-env: 1.1.0 @@ -11834,7 +11761,7 @@ packages: debug: 4.3.4 devtools-protocol: 0.0.1045489 extract-zip: 2.0.1 - https-proxy-agent: 5.0.1(supports-color@9.4.0) + https-proxy-agent: 5.0.1(supports-color@10.0.0) proxy-from-env: 1.1.0 rimraf: 3.0.2 tar-fs: 2.1.1 @@ -11853,7 +11780,7 @@ packages: dependencies: '@puppeteer/browsers': 2.6.1 chromium-bidi: 0.8.0(devtools-protocol@0.0.1367902) - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) devtools-protocol: 0.0.1367902 typed-query-selector: 2.12.0 ws: 8.18.0 @@ -11866,9 +11793,9 @@ packages: /puppeteer@18.2.1: resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} engines: {node: '>=14.1.0'} - deprecated: < 19.4.0 is no longer supported + deprecated: < 22.8.2 is no longer supported dependencies: - https-proxy-agent: 5.0.1(supports-color@9.4.0) + https-proxy-agent: 5.0.1(supports-color@10.0.0) progress: 2.0.3 proxy-from-env: 1.1.0 puppeteer-core: 18.2.1 @@ -12221,13 +12148,13 @@ packages: signal-exit: 4.1.0 dev: true - /retry-request@7.0.2(supports-color@9.4.0): + /retry-request@7.0.2(supports-color@10.0.0): resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} engines: {node: '>=14'} dependencies: '@types/request': 2.48.12 extend: 3.0.2 - teeny-request: 9.0.0(supports-color@9.4.0) + teeny-request: 9.0.0(supports-color@10.0.0) transitivePeerDependencies: - encoding - supports-color @@ -12578,7 +12505,7 @@ packages: resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} engines: {node: '>= 18'} dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) destroy: 1.2.0 encodeurl: 2.0.0 escape-html: 1.0.3 @@ -12876,7 +12803,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -12992,7 +12919,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -13006,7 +12933,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -13113,7 +13040,7 @@ packages: engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -13245,6 +13172,11 @@ packages: resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} dev: true + /supports-color@10.0.0: + resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} + engines: {node: '>=18'} + dev: true + /supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -13264,11 +13196,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - dev: true - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -13354,12 +13281,12 @@ packages: yallist: 5.0.0 dev: true - /teeny-request@9.0.0(supports-color@9.4.0): + /teeny-request@9.0.0(supports-color@10.0.0): resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} dependencies: - http-proxy-agent: 5.0.0(supports-color@9.4.0) - https-proxy-agent: 5.0.1(supports-color@9.4.0) + http-proxy-agent: 5.0.0(supports-color@10.0.0) + https-proxy-agent: 5.0.1(supports-color@10.0.0) node-fetch: 2.7.0 stream-events: 1.0.5 uuid: 9.0.1 @@ -13626,7 +13553,7 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} dependencies: '@tufjs/models': 3.0.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) make-fetch-happen: 14.0.3 transitivePeerDependencies: - supports-color @@ -13986,7 +13913,7 @@ packages: '@verdaccio/config': 8.0.0-next-8.6 '@verdaccio/core': 8.0.0-next-8.6 express: 4.21.1 - https-proxy-agent: 5.0.1(supports-color@9.4.0) + https-proxy-agent: 5.0.1(supports-color@10.0.0) node-fetch: 2.6.7 transitivePeerDependencies: - encoding @@ -14040,7 +13967,7 @@ packages: clipanion: 4.0.0-rc.4(typanion@3.14.0) compression: 1.7.5 cors: 2.8.5 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0(supports-color@10.0.0) envinfo: 7.14.0 express: 4.21.2 express-rate-limit: 5.5.1 @@ -14764,15 +14691,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/c79da6c15ac32645b5e85ee9e098cbf3627e2126} - id: github.com/angular/bazel-builds/c79da6c15ac32645b5e85ee9e098cbf3627e2126 + github.com/angular/bazel-builds/5c693d4f8110bb65bc8635506d74ffcb374aaa37(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/5c693d4f8110bb65bc8635506d74ffcb374aaa37} + id: github.com/angular/bazel-builds/5c693d4f8110bb65bc8635506d74ffcb374aaa37 name: '@angular/bazel' version: 19.1.0-next.4 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.4+sha-3d86c58 + '@angular/compiler-cli': 19.1.0-next.4+sha-b97bc5b '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -14801,11 +14728,11 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/23a3f5d3df3644a47fefb864aa575c6ff0044cee} - id: github.com/angular/dev-infra-private-build-tooling-builds/23a3f5d3df3644a47fefb864aa575c6ff0044cee + github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/2dba82de08e41f38a47b088384f591f30fd9de19} + id: github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19 name: '@angular/build-tooling' - version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa + version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) @@ -14818,7 +14745,7 @@ packages: '@bazel/runfiles': 5.8.1 '@bazel/terser': 5.8.1(terser@5.37.0) '@bazel/typescript': 5.8.1(typescript@5.7.2) - '@microsoft/api-extractor': 7.48.0(@types/node@18.19.68) + '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) '@types/browser-sync': 2.29.0 '@types/minimatch': 5.1.2 '@types/node': 18.19.68 @@ -14873,20 +14800,20 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408} + github.com/angular/dev-infra-private-ng-dev-builds/e4435ccb1b275541908b57b02958dc453c2fed43: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e4435ccb1b275541908b57b02958dc453c2fed43} name: '@angular/ng-dev' - version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa + version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f hasBin: true dependencies: - '@google-cloud/spanner': 7.16.0(supports-color@9.4.0) + '@google-cloud/spanner': 7.16.0(supports-color@10.0.0) '@octokit/rest': 21.0.2 '@types/semver': 7.5.8 '@types/supports-color': 8.1.3 '@yarnpkg/lockfile': 1.1.0 chalk: 5.3.0 semver: 7.6.3 - supports-color: 9.4.0 + supports-color: 10.0.0 typed-graphqlify: 3.1.6 typescript: 5.7.2 yaml: 2.6.1 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index c34a00699905..878d17cb3e68 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#a0f4330e5267bf907f833480ccf57ddd77ca05e2", - "@angular/cdk": "github:angular/cdk-builds#ac8ee6a665162df6bc178b0e2f9aa1d7fe5f68f3", - "@angular/common": "github:angular/common-builds#39012f511384f79fadd52b0f67a0374027819b45", - "@angular/compiler": "github:angular/compiler-builds#0f5063f7863e98767bc605c6f804713d807dc2f0", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e40a52bd35495b7197cb6f368f09cf84882f39c6", - "@angular/core": "github:angular/core-builds#19ec33d7dec0854ff002ea173a3aa5acebbb8faf", - "@angular/forms": "github:angular/forms-builds#358b705e04b5a3a7d48c5131daef99a8b34c5610", - "@angular/language-service": "github:angular/language-service-builds#5876f7bc2390894eef7e62e3a3e114a28ac69721", - "@angular/localize": "github:angular/localize-builds#c6ab4c1fedc524cd51a73e85fb747b0003ebc5b8", - "@angular/material": "github:angular/material-builds#dc2b42ba8ec16c9e18009e8b28725399bed88eca", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ecacecbcfb32e323dbc8844c739c3710717b4d5e", - "@angular/platform-browser": "github:angular/platform-browser-builds#b4b7dc99911f70c979d49df5f700d09c7f834a80", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e348b5eb629a0cda1099e9cae865179204ea23db", - "@angular/platform-server": "github:angular/platform-server-builds#0dff9a1f103390afa62c3abdbfa76178d4d335e4", - "@angular/router": "github:angular/router-builds#9365ce271e89e2834229b8f6cfbeb5972cd36882", - "@angular/service-worker": "github:angular/service-worker-builds#226269eb8174039d8c60a6c57e1c75e2f2edb2ee" + "@angular/animations": "github:angular/animations-builds#ad8c43ea891d93c3bf4ad245ddb304e7ff341620", + "@angular/cdk": "github:angular/cdk-builds#0dbf7e97e42dc5018f5d2c5812982be9b168f0a6", + "@angular/common": "github:angular/common-builds#85adb6858deb4547bae6ad458ddefd4fcd675917", + "@angular/compiler": "github:angular/compiler-builds#4402782bfc8c3de25af30dbe94afa3733ffaa828", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#a1a89da15a7f5f288a9593193d1ceb232f341329", + "@angular/core": "github:angular/core-builds#b9cb5ce75193c3f0b8f88aa8349003aa29737de4", + "@angular/forms": "github:angular/forms-builds#e9d846bed8412049d01b9c45249b5a9691a4a66d", + "@angular/language-service": "github:angular/language-service-builds#1e52082884c6a9627cc7f54d33e4ca9268d94d5e", + "@angular/localize": "github:angular/localize-builds#b3a22198c0425256a96868e0918257e81e5b4dd5", + "@angular/material": "github:angular/material-builds#5c81604e94b67bd578eef762fe8a3b65419edd32", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#5afad373e385377b781947272959f009c26daff0", + "@angular/platform-browser": "github:angular/platform-browser-builds#457bddb6f71fcde61658a1eba49a215f40110fdc", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#588f35630efa506772daa127f1972cde8c30712e", + "@angular/platform-server": "github:angular/platform-server-builds#a08e274a07f231d2cbe89c777f46d595d1a074c0", + "@angular/router": "github:angular/router-builds#99ca0ebe38c5e3adfdf56e5eb23d4d8ab9193a7b", + "@angular/service-worker": "github:angular/service-worker-builds#8779277123372b2c870316d1048c2827420d7db0" } } diff --git a/yarn.lock b/yarn.lock index 383259492c7c..28ec1b25dfd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126": - version: 19.1.0-next.4+sha-3d86c58 - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=c79da6c15ac32645b5e85ee9e098cbf3627e2126" +"@angular/bazel@https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37": + version: 19.1.0-next.4+sha-b97bc5b + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=5c693d4f8110bb65bc8635506d74ffcb374aaa37" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.4+sha-3d86c58 + "@angular/compiler-cli": 19.1.0-next.4+sha-b97bc5b "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/6df923b6c847ab88682313c3eab4b5e5ad1dfe9c5e2290b62400b1cc92e20c0fd418d4d308352e305845d17e97d1b3d695a11eeea7dd74ffb013bbcdf04c3bcf + checksum: 10c0/ab706080052addf279a2e357670a646d95a5b6de93bd193474cfd3e905056be836a8e6996796acc94c21966d5085b667d9132e0d7f356978fe1cb64f2a1130aa languageName: node linkType: hard @@ -104,9 +104,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee": - version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=23a3f5d3df3644a47fefb864aa575c6ff0044cee" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19": + version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=2dba82de08e41f38a47b088384f591f30fd9de19" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.1" @@ -119,7 +119,7 @@ __metadata: "@bazel/runfiles": "npm:5.8.1" "@bazel/terser": "npm:5.8.1" "@bazel/typescript": "npm:5.8.1" - "@microsoft/api-extractor": "npm:7.48.0" + "@microsoft/api-extractor": "npm:7.48.1" "@types/browser-sync": "npm:^2.26.3" "@types/minimatch": "npm:^5.1.2" "@types/node": "npm:^18.19.21" @@ -143,7 +143,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/76b20a583891e446185312960fb94e195d801c17a81dcc0728294b60dbba4d4923c7cd18508cc7b11e4fdc206bab52cc92a213c1a73d6a9477027581558c9d78 + checksum: 10c0/da125d69aac093d46538fe6d3384b669a7a14cc5dbe1ef836b569efd547e8e137e0b40679b6d358ee473142aa30eadee8977115bdfbf9e509d3a74c893f1da8e languageName: node linkType: hard @@ -310,8 +310,8 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.4" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#c79da6c15ac32645b5e85ee9e098cbf3627e2126" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#23a3f5d3df3644a47fefb864aa575c6ff0044cee" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19" "@angular/cdk": "npm:19.1.0-next.3" "@angular/common": "npm:19.1.0-next.4" "@angular/compiler": "npm:19.1.0-next.4" @@ -320,7 +320,7 @@ __metadata: "@angular/forms": "npm:19.1.0-next.4" "@angular/localize": "npm:19.1.0-next.4" "@angular/material": "npm:19.1.0-next.3" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43" "@angular/platform-browser": "npm:19.1.0-next.4" "@angular/platform-browser-dynamic": "npm:19.1.0-next.4" "@angular/platform-server": "npm:19.1.0-next.4" @@ -533,9 +533,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408": - version: 0.0.0-36b7540c8baf768285e55e02cb440c5e1eb658fa - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=a7f5e0ca6ce8a27aae64f8d342e7fb9f557a8408" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43": + version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=e4435ccb1b275541908b57b02958dc453c2fed43" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -544,13 +544,13 @@ __metadata: "@yarnpkg/lockfile": "npm:^1.1.0" chalk: "npm:^5.0.1" semver: "npm:^7.5.4" - supports-color: "npm:9.4.0" + supports-color: "npm:10.0.0" typed-graphqlify: "npm:^3.1.1" typescript: "npm:~4.9.0" yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/303cff54e127201c06d982374f80211763f3518a25d7aade71d2db3803f044e8c11e298556c1223768af10b44ab92df5c039308e81e0bdbd89ad63dd01742091 + checksum: 10c0/56f1c3f0d2ca8152c79fcc7d2e1f26783bc2f6f780c961a22108533c439a8c5ec75214b82eaa1280755b3f06f04a6f598e9b898926057e52f35d239550aba112 languageName: node linkType: hard @@ -2712,17 +2712,6 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor-model@npm:7.30.0": - version: 7.30.0 - resolution: "@microsoft/api-extractor-model@npm:7.30.0" - dependencies: - "@microsoft/tsdoc": "npm:~0.15.1" - "@microsoft/tsdoc-config": "npm:~0.17.1" - "@rushstack/node-core-library": "npm:5.10.0" - checksum: 10c0/845ef107a88de9918e23a22cda95597401751512672c832d6d8a4cc63134e2415ee960d7d4ba7409d1a81569bc1d40f8dbbda76e2655f743a3e7c0595f07c118 - languageName: node - linkType: hard - "@microsoft/api-extractor-model@npm:7.30.1": version: 7.30.1 resolution: "@microsoft/api-extractor-model@npm:7.30.1" @@ -2734,30 +2723,7 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor@npm:7.48.0": - version: 7.48.0 - resolution: "@microsoft/api-extractor@npm:7.48.0" - dependencies: - "@microsoft/api-extractor-model": "npm:7.30.0" - "@microsoft/tsdoc": "npm:~0.15.1" - "@microsoft/tsdoc-config": "npm:~0.17.1" - "@rushstack/node-core-library": "npm:5.10.0" - "@rushstack/rig-package": "npm:0.5.3" - "@rushstack/terminal": "npm:0.14.3" - "@rushstack/ts-command-line": "npm:4.23.1" - lodash: "npm:~4.17.15" - minimatch: "npm:~3.0.3" - resolve: "npm:~1.22.1" - semver: "npm:~7.5.4" - source-map: "npm:~0.6.1" - typescript: "npm:5.4.2" - bin: - api-extractor: bin/api-extractor - checksum: 10c0/cc7e582c8b98156033064cb0363d40f4f9bd3bae57506358ce878deefa15655e93502f908e6d697356f3a50207787a874de56c6a357e2964adaebada4d4898cc - languageName: node - linkType: hard - -"@microsoft/api-extractor@npm:^7.24.2": +"@microsoft/api-extractor@npm:7.48.1, @microsoft/api-extractor@npm:^7.24.2": version: 7.48.1 resolution: "@microsoft/api-extractor@npm:7.48.1" dependencies: @@ -3893,27 +3859,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/node-core-library@npm:5.10.0": - version: 5.10.0 - resolution: "@rushstack/node-core-library@npm:5.10.0" - dependencies: - ajv: "npm:~8.13.0" - ajv-draft-04: "npm:~1.0.0" - ajv-formats: "npm:~3.0.1" - fs-extra: "npm:~7.0.1" - import-lazy: "npm:~4.0.0" - jju: "npm:~1.4.0" - resolve: "npm:~1.22.1" - semver: "npm:~7.5.4" - peerDependencies: - "@types/node": "*" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 10c0/ef379432f1aeea1b19047a3e347e90b03e04331012e5df9cc8233fd6400bdcf801ed4e50ab3e36c211cd3266bbe4c3224205645b5909872a1f29a04a8d8ff3fd - languageName: node - linkType: hard - "@rushstack/node-core-library@npm:5.10.1": version: 5.10.1 resolution: "@rushstack/node-core-library@npm:5.10.1" @@ -3945,21 +3890,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/terminal@npm:0.14.3": - version: 0.14.3 - resolution: "@rushstack/terminal@npm:0.14.3" - dependencies: - "@rushstack/node-core-library": "npm:5.10.0" - supports-color: "npm:~8.1.1" - peerDependencies: - "@types/node": "*" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 10c0/0eba093d22c6a4d43b3ed9088ee8c354b63f5f28c059f5872251009231bf521ef1a415d33fed0a6572f52a450264de7d73313b0a41c65ab3b5e8c7baf5a82c1e - languageName: node - linkType: hard - "@rushstack/terminal@npm:0.14.4": version: 0.14.4 resolution: "@rushstack/terminal@npm:0.14.4" @@ -3975,18 +3905,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/ts-command-line@npm:4.23.1": - version: 4.23.1 - resolution: "@rushstack/ts-command-line@npm:4.23.1" - dependencies: - "@rushstack/terminal": "npm:0.14.3" - "@types/argparse": "npm:1.0.38" - argparse: "npm:~1.0.9" - string-argv: "npm:~0.3.1" - checksum: 10c0/dc69f502cd3ffbce190e5d6a9a1b85054680d3622933aecd9ef0e81de0aeabb44adcf193586b305733950afa6c36a84a9bacf4382adafd42ba48cb0f003687e7 - languageName: node - linkType: hard - "@rushstack/ts-command-line@npm:4.23.2": version: 4.23.2 resolution: "@rushstack/ts-command-line@npm:4.23.2" @@ -16626,10 +16544,10 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:9.4.0, supports-color@npm:^9.4.0": - version: 9.4.0 - resolution: "supports-color@npm:9.4.0" - checksum: 10c0/6c24e6b2b64c6a60e5248490cfa50de5924da32cf09ae357ad8ebbf305cc5d2717ba705a9d4cb397d80bbf39417e8fdc8d7a0ce18bd0041bf7b5b456229164e4 +"supports-color@npm:10.0.0": + version: 10.0.0 + resolution: "supports-color@npm:10.0.0" + checksum: 10c0/0e7884dfd02a07b3c6e0b235346f58c19f0201f1e44f7807583581761b354688c8577378785b5a4e3b03110809786c4c808e0e086cd91911f7b8bc59132703a8 languageName: node linkType: hard @@ -16658,6 +16576,13 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^9.4.0": + version: 9.4.0 + resolution: "supports-color@npm:9.4.0" + checksum: 10c0/6c24e6b2b64c6a60e5248490cfa50de5924da32cf09ae357ad8ebbf305cc5d2717ba705a9d4cb397d80bbf39417e8fdc8d7a0ce18bd0041bf7b5b456229164e4 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" From 5cc62d4a30d8353fc56aaa6dfb9c58e51cd092f5 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 19 Dec 2024 19:52:13 -0500 Subject: [PATCH 0174/2162] fix(@angular/build): mitigate JS transformer worker execArgv errors Node.js workers will currently fail to initialize if the `execArgv` option is used and it contains v8 specific options. This is currently problematic for the JS transformer worker because it contains a workaround to remove the SSR `--import` argument that is used to add a loader hook for SSR purposes. The filtering of the argument and subsequent use of the `execArgv` array had the potential to pass custom Node.js options to the worker and cause it to fail. These options can be passed by developers on the command line when invoking the Angular CLI. To mitigate this problem, the `execArgv` option is now only filtered and used if the SSR import argument is present in the array. Otherwise, no value is passed which allows the default Node.js behavior to be used. While this does not fully solve the problem for all projects, it does remove the problem from non-SSR projects. --- .../src/tools/esbuild/javascript-transformer.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/angular/build/src/tools/esbuild/javascript-transformer.ts b/packages/angular/build/src/tools/esbuild/javascript-transformer.ts index 202d922f40ea..8e2d8e31ab8f 100644 --- a/packages/angular/build/src/tools/esbuild/javascript-transformer.ts +++ b/packages/angular/build/src/tools/esbuild/javascript-transformer.ts @@ -9,7 +9,7 @@ import { createHash } from 'node:crypto'; import { readFile } from 'node:fs/promises'; import { IMPORT_EXEC_ARGV } from '../../utils/server-rendering/esm-in-memory-loader/utils'; -import { WorkerPool } from '../../utils/worker-pool'; +import { WorkerPool, WorkerPoolOptions } from '../../utils/worker-pool'; import { Cache } from './cache'; /** @@ -56,12 +56,18 @@ export class JavaScriptTransformer { } #ensureWorkerPool(): WorkerPool { - this.#workerPool ??= new WorkerPool({ + const workerPoolOptions: WorkerPoolOptions = { filename: require.resolve('./javascript-transformer-worker'), maxThreads: this.maxThreads, - // Prevent passing `--import` (loader-hooks) from parent to child worker. - execArgv: process.execArgv.filter((v) => v !== IMPORT_EXEC_ARGV), - }); + }; + + // Prevent passing SSR `--import` (loader-hooks) from parent to child worker. + const filteredExecArgv = process.execArgv.filter((v) => v !== IMPORT_EXEC_ARGV); + if (process.execArgv.length !== filteredExecArgv.length) { + workerPoolOptions.execArgv = filteredExecArgv; + } + + this.#workerPool ??= new WorkerPool(workerPoolOptions); return this.#workerPool; } From 13e233a942f6da05c5c8001f2ad1a5a3d549e0f8 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 20 Dec 2024 16:36:20 +0000 Subject: [PATCH 0175/2162] build: set a mnemonic for template expand and file write Set the mnemonic to determine if it allows us to reduce the number of RBE queries executed --- .bazelrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.bazelrc b/.bazelrc index caa0491048d0..c85e52261bf8 100644 --- a/.bazelrc +++ b/.bazelrc @@ -174,3 +174,7 @@ try-import .bazelrc.user # Enable runfiles even on Windows. # Architect resolves output files from data files, and this isn't possible without runfile support. build --enable_runfiles + +# TODO: Determine if this is a permanent solution or not. +build --strategy=TemplateExpand=local +build --strategy=FileWrite=local From 673388ad8fc832dbe6ebbb5b62590a27d501fafc Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:10:29 -0500 Subject: [PATCH 0176/2162] ci: ensure passing build before rest of CI jobs --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c4196c02c28..4084b73464dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,6 +53,7 @@ jobs: run: yarn ng-dev release build test: + needs: build runs-on: ubuntu-latest steps: - name: Initialize environment @@ -69,6 +70,7 @@ jobs: ASPECT_RULES_JS_FROZEN_PNPM_LOCK: '1' e2e: + needs: build strategy: fail-fast: false matrix: @@ -101,6 +103,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-package-managers: + needs: build strategy: fail-fast: false matrix: @@ -122,6 +125,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-snapshots: + needs: build strategy: fail-fast: false matrix: @@ -143,6 +147,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} browsers: + needs: build runs-on: ubuntu-latest name: Browser Compatibility Tests env: @@ -177,6 +182,7 @@ jobs: path: ${{ env.SAUCE_CONNECT_DIR_IN_HOST }}/sauce-connect.log publish-snapshots: + needs: build runs-on: ubuntu-latest env: CIRCLE_BRANCH: ${{ github.ref_name }} From d581c54534c83131ba0fccea013cc402a6b7f866 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 20 Dec 2024 17:12:38 +0000 Subject: [PATCH 0177/2162] Revert "build: set a mnemonic for template expand and file write" This reverts commit d17174b799715618853d6dbdad44196df5182a5b. --- .bazelrc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.bazelrc b/.bazelrc index c85e52261bf8..caa0491048d0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -174,7 +174,3 @@ try-import .bazelrc.user # Enable runfiles even on Windows. # Architect resolves output files from data files, and this isn't possible without runfile support. build --enable_runfiles - -# TODO: Determine if this is a permanent solution or not. -build --strategy=TemplateExpand=local -build --strategy=FileWrite=local From 916979c8a74a90788cf8c2379e08e05d48eb777e Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Thu, 19 Dec 2024 11:52:04 -0800 Subject: [PATCH 0178/2162] fix(@angular-devkit/build-angular): preserve css type for jasmine.css We should only force the type for files that we know are JavaScript. Otherwise we risk breaking the magic type detection done by Karma. The previous code broke for `jasmine.css`. Fixes https://github.com/angular/angular-cli/issues/29190 --- .../build_angular/src/builders/karma/application_builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts index c30bbbd5539a..3096dcb18e99 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/application_builder.ts @@ -156,7 +156,7 @@ class AngularPolyfillsPlugin { // page load. `type` won't affect them. continue; } - if ('js' === (f.type ?? 'js')) { + if (f.pattern.endsWith('.js') && 'js' === (f.type ?? 'js')) { f.type = 'module'; } } From f139a0225640c671b932571f9ebf95406d4be21f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:34:52 -0500 Subject: [PATCH 0179/2162] ci: ensure passing test job before E2E jobs --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4084b73464dd..a647a6b8f755 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: ASPECT_RULES_JS_FROZEN_PNPM_LOCK: '1' e2e: - needs: build + needs: test strategy: fail-fast: false matrix: @@ -103,7 +103,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-package-managers: - needs: build + needs: test strategy: fail-fast: false matrix: @@ -125,7 +125,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-snapshots: - needs: build + needs: test strategy: fail-fast: false matrix: From ac97292ebd15858337df3dc524b2da7014ab7bb7 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 20 Dec 2024 18:05:38 +0000 Subject: [PATCH 0180/2162] build: update all non-major dependencies --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 6 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 298 ++++++++++++++++-- yarn.lock | 285 ++++++++++++++++- 7 files changed, 549 insertions(+), 56 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index ea240e1840ae..2a0a65e271d1 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=255531279 -pnpm-lock.yaml=-626240895 +package.json=-303224142 +pnpm-lock.yaml=342794697 pnpm-workspace.yaml=1711114604 -yarn.lock=152934478 +yarn.lock=1329456794 diff --git a/package.json b/package.json index 7ccf983b5cbb..178110aa6f9a 100644 --- a/package.json +++ b/package.json @@ -124,8 +124,8 @@ "copy-webpack-plugin": "12.0.2", "css-loader": "7.1.2", "debug": "^4.1.1", - "esbuild": "0.24.0", - "esbuild-wasm": "0.24.0", + "esbuild": "0.24.2", + "esbuild-wasm": "0.24.2", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-header": "3.1.1", @@ -198,7 +198,7 @@ "unenv": "^1.10.0", "verdaccio": "6.0.4", "verdaccio-auth-memory": "^10.0.0", - "vite": "6.0.4", + "vite": "6.0.5", "watchpack": "2.4.2", "webpack": "5.97.1", "webpack-dev-middleware": "7.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 988f6d927c84..140498f59319 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -28,7 +28,7 @@ "@vitejs/plugin-basic-ssl": "1.2.0", "beasties": "0.2.0", "browserslist": "^4.23.0", - "esbuild": "0.24.0", + "esbuild": "0.24.2", "fast-glob": "3.3.2", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", @@ -41,7 +41,7 @@ "rollup": "4.28.1", "sass": "1.83.0", "semver": "7.6.3", - "vite": "6.0.4", + "vite": "6.0.5", "watchpack": "2.4.2" }, "optionalDependencies": { diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index f2156664a790..8fdfa2941ba2 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -35,7 +35,7 @@ "npm-package-arg": "12.0.1", "npm-pick-manifest": "10.0.0", "pacote": "20.0.0", - "resolve": "1.22.9", + "resolve": "1.22.10", "semver": "7.6.3", "symbol-observable": "4.0.0", "yargs": "17.7.2" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 227679f735ea..bcc3ec67add9 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": "12.0.2", "css-loader": "7.1.2", - "esbuild-wasm": "0.24.0", + "esbuild-wasm": "0.24.2", "fast-glob": "3.3.2", "http-proxy-middleware": "3.0.3", "istanbul-lib-instrument": "6.0.3", @@ -63,7 +63,7 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.24.0" + "esbuild": "0.24.2" }, "devDependencies": { "undici": "7.2.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1033fcfaa2f..b807994134aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -216,7 +216,7 @@ importers: version: 8.18.1(eslint@8.57.0)(typescript@5.7.2) '@vitejs/plugin-basic-ssl': specifier: 1.2.0 - version: 1.2.0(vite@6.0.4) + version: 1.2.0(vite@6.0.5) '@web/test-runner': specifier: ^0.19.0 version: 0.19.0 @@ -263,11 +263,11 @@ importers: specifier: ^4.1.1 version: 4.4.0(supports-color@10.0.0) esbuild: - specifier: 0.24.0 - version: 0.24.0 + specifier: 0.24.2 + version: 0.24.2 esbuild-wasm: - specifier: 0.24.0 - version: 0.24.0 + specifier: 0.24.2 + version: 0.24.2 eslint: specifier: 8.57.0 version: 8.57.0 @@ -485,14 +485,14 @@ importers: specifier: ^10.0.0 version: 10.2.2 vite: - specifier: 6.0.4 - version: 6.0.4(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + specifier: 6.0.5 + version: 6.0.5(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 webpack: specifier: 5.97.1 - version: 5.97.1(esbuild@0.24.0) + version: 5.97.1(esbuild@0.24.2) webpack-dev-middleware: specifier: 7.4.2 version: 7.4.2(webpack@5.97.1) @@ -2137,6 +2137,14 @@ packages: dev: true optional: true + /@esbuild/aix-ppc64@0.24.2: + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + dev: true + optional: true + /@esbuild/android-arm64@0.24.0: resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} @@ -2145,6 +2153,14 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.24.2: + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + dev: true + optional: true + /@esbuild/android-arm@0.24.0: resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} @@ -2153,6 +2169,14 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.24.2: + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + dev: true + optional: true + /@esbuild/android-x64@0.24.0: resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} @@ -2161,6 +2185,14 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.24.2: + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + dev: true + optional: true + /@esbuild/darwin-arm64@0.24.0: resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} @@ -2169,6 +2201,14 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.24.2: + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + /@esbuild/darwin-x64@0.24.0: resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} @@ -2177,6 +2217,14 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.24.2: + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + dev: true + optional: true + /@esbuild/freebsd-arm64@0.24.0: resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} @@ -2185,6 +2233,14 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.24.2: + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + dev: true + optional: true + /@esbuild/freebsd-x64@0.24.0: resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} @@ -2193,6 +2249,14 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.24.2: + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + /@esbuild/linux-arm64@0.24.0: resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} @@ -2201,6 +2265,14 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.24.2: + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + dev: true + optional: true + /@esbuild/linux-arm@0.24.0: resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} @@ -2209,6 +2281,14 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.24.2: + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + dev: true + optional: true + /@esbuild/linux-ia32@0.24.0: resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} @@ -2217,6 +2297,14 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.24.2: + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + dev: true + optional: true + /@esbuild/linux-loong64@0.24.0: resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} @@ -2225,6 +2313,14 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.24.2: + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + dev: true + optional: true + /@esbuild/linux-mips64el@0.24.0: resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} @@ -2233,6 +2329,14 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.24.2: + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + dev: true + optional: true + /@esbuild/linux-ppc64@0.24.0: resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} @@ -2241,6 +2345,14 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.24.2: + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + /@esbuild/linux-riscv64@0.24.0: resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} @@ -2249,6 +2361,14 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.24.2: + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + /@esbuild/linux-s390x@0.24.0: resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} @@ -2257,6 +2377,14 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.24.2: + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + dev: true + optional: true + /@esbuild/linux-x64@0.24.0: resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} @@ -2265,6 +2393,22 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.24.2: + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + dev: true + optional: true + + /@esbuild/netbsd-arm64@0.24.2: + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + dev: true + optional: true + /@esbuild/netbsd-x64@0.24.0: resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} @@ -2273,6 +2417,14 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.24.2: + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + dev: true + optional: true + /@esbuild/openbsd-arm64@0.24.0: resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} @@ -2281,6 +2433,14 @@ packages: dev: true optional: true + /@esbuild/openbsd-arm64@0.24.2: + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + dev: true + optional: true + /@esbuild/openbsd-x64@0.24.0: resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} @@ -2289,6 +2449,14 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.24.2: + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + dev: true + optional: true + /@esbuild/sunos-x64@0.24.0: resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} @@ -2297,6 +2465,14 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.24.2: + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + dev: true + optional: true + /@esbuild/win32-arm64@0.24.0: resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} @@ -2305,6 +2481,14 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.24.2: + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + dev: true + optional: true + /@esbuild/win32-ia32@0.24.0: resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} @@ -2313,6 +2497,14 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.24.2: + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + dev: true + optional: true + /@esbuild/win32-x64@0.24.0: resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} @@ -2321,6 +2513,14 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.24.2: + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.1(eslint@8.57.0): resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4835,13 +5035,13 @@ packages: vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.4): + /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.5): resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} engines: {node: '>=14.21.3'} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.4(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.5(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true /@web/browser-logs@0.4.0: @@ -5655,7 +5855,7 @@ packages: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.3.0 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): @@ -6505,7 +6705,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /core-js-compat@3.39.0: @@ -6599,7 +6799,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /css-select@5.1.0: @@ -7303,8 +7503,8 @@ packages: es6-promise: 4.2.8 dev: true - /esbuild-wasm@0.24.0: - resolution: {integrity: sha512-xhNn5tL1AhkPg4ft59yXT6FkwKXiPSYyz1IeinJHUJpjvOHOIPvdmFQc0pGdjxlKSbzZc2mNmtVOWAR1EF/JAg==} + /esbuild-wasm@0.24.2: + resolution: {integrity: sha512-03/7Z1gD+ohDnScFztvI4XddTAbKVmMEzCvvkBpQdWKEXJ+73dTyeNrmdxP1Q0zpDMFjzUJwtK4rLjqwiHbzkw==} engines: {node: '>=18'} hasBin: true dev: true @@ -7340,6 +7540,38 @@ packages: '@esbuild/win32-x64': 0.24.0 dev: true + /esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + dev: true + /escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -9879,7 +10111,7 @@ packages: optional: true dependencies: less: 4.2.1 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /less@4.2.1: @@ -9916,7 +10148,7 @@ packages: webpack: optional: true dependencies: - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) webpack-sources: 3.2.3 dev: true @@ -10320,7 +10552,7 @@ packages: dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /minimalistic-assert@1.0.1: @@ -10587,7 +10819,7 @@ packages: commander: 12.1.0 convert-source-map: 2.0.0 dependency-graph: 1.0.0 - esbuild: 0.24.0 + esbuild: 0.24.2 fast-glob: 3.3.2 find-cache-dir: 3.3.2 injection-js: 2.4.0 @@ -11488,7 +11720,7 @@ packages: jiti: 1.21.6 postcss: 8.4.49 semver: 7.6.3 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) transitivePeerDependencies: - typescript dev: true @@ -12337,7 +12569,7 @@ packages: dependencies: neo-async: 2.6.2 sass: 1.83.0 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /sass@1.82.0: @@ -12842,7 +13074,7 @@ packages: dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /source-map-resolve@0.6.0: @@ -13295,7 +13527,7 @@ packages: - supports-color dev: true - /terser-webpack-plugin@5.3.11(esbuild@0.24.0)(webpack@5.97.1): + /terser-webpack-plugin@5.3.11(esbuild@0.24.2)(webpack@5.97.1): resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -13312,12 +13544,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.25 - esbuild: 0.24.0 + esbuild: 0.24.2 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /terser@5.37.0: @@ -14041,7 +14273,7 @@ packages: optional: true dependencies: '@types/node': 18.19.68 - esbuild: 0.24.0 + esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 rollup: 4.28.1 @@ -14051,8 +14283,8 @@ packages: fsevents: 2.3.3 dev: true - /vite@6.0.4(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): - resolution: {integrity: sha512-zwlH6ar+6o6b4Wp+ydhtIKLrGM/LoqZzcdVmkGAFun0KHTzIzjh+h0kungEx7KJg/PYnC80I4TII9WkjciSR6Q==} + /vite@6.0.5(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): + resolution: {integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -14186,7 +14418,7 @@ packages: on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.0 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true /webpack-dev-server@5.2.0(debug@4.4.0)(webpack@5.97.1): @@ -14227,7 +14459,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) webpack-dev-middleware: 7.4.2(webpack@5.97.1) ws: 8.18.0 transitivePeerDependencies: @@ -14262,10 +14494,10 @@ packages: optional: true dependencies: typed-assert: 1.0.9 - webpack: 5.97.1(esbuild@0.24.0) + webpack: 5.97.1(esbuild@0.24.2) dev: true - /webpack@5.97.1(esbuild@0.24.0): + /webpack@5.97.1(esbuild@0.24.2): resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} engines: {node: '>=10.13.0'} hasBin: true @@ -14295,7 +14527,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(esbuild@0.24.0)(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(esbuild@0.24.2)(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/yarn.lock b/yarn.lock index 28ec1b25dfd5..2d782c1c39cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -391,8 +391,8 @@ __metadata: copy-webpack-plugin: "npm:12.0.2" css-loader: "npm:7.1.2" debug: "npm:^4.1.1" - esbuild: "npm:0.24.0" - esbuild-wasm: "npm:0.24.0" + esbuild: "npm:0.24.2" + esbuild-wasm: "npm:0.24.2" eslint: "npm:8.57.0" eslint-config-prettier: "npm:9.1.0" eslint-plugin-header: "npm:3.1.1" @@ -465,7 +465,7 @@ __metadata: unenv: "npm:^1.10.0" verdaccio: "npm:6.0.4" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:6.0.4" + vite: "npm:6.0.5" watchpack: "npm:2.4.2" webpack: "npm:5.97.1" webpack-dev-middleware: "npm:7.4.2" @@ -1978,6 +1978,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/android-arm64@npm:0.24.0" @@ -1985,6 +1992,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/android-arm@npm:0.24.0" @@ -1992,6 +2006,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/android-x64@npm:0.24.0" @@ -1999,6 +2020,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/darwin-arm64@npm:0.24.0" @@ -2006,6 +2034,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/darwin-x64@npm:0.24.0" @@ -2013,6 +2048,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/freebsd-arm64@npm:0.24.0" @@ -2020,6 +2062,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/freebsd-x64@npm:0.24.0" @@ -2027,6 +2076,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-arm64@npm:0.24.0" @@ -2034,6 +2090,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-arm@npm:0.24.0" @@ -2041,6 +2104,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-ia32@npm:0.24.0" @@ -2048,6 +2118,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-loong64@npm:0.24.0" @@ -2055,6 +2132,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-mips64el@npm:0.24.0" @@ -2062,6 +2146,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-ppc64@npm:0.24.0" @@ -2069,6 +2160,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-riscv64@npm:0.24.0" @@ -2076,6 +2174,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-s390x@npm:0.24.0" @@ -2083,6 +2188,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/linux-x64@npm:0.24.0" @@ -2090,6 +2202,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/netbsd-x64@npm:0.24.0" @@ -2097,6 +2223,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/openbsd-arm64@npm:0.24.0" @@ -2104,6 +2237,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/openbsd-x64@npm:0.24.0" @@ -2111,6 +2251,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/sunos-x64@npm:0.24.0" @@ -2118,6 +2265,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/win32-arm64@npm:0.24.0" @@ -2125,6 +2279,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/win32-ia32@npm:0.24.0" @@ -2132,6 +2293,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/win32-x64@npm:0.24.0" @@ -2139,6 +2307,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.1 resolution: "@eslint-community/eslint-utils@npm:4.4.1" @@ -8566,12 +8741,12 @@ __metadata: languageName: node linkType: hard -"esbuild-wasm@npm:0.24.0": - version: 0.24.0 - resolution: "esbuild-wasm@npm:0.24.0" +"esbuild-wasm@npm:0.24.2": + version: 0.24.2 + resolution: "esbuild-wasm@npm:0.24.2" bin: esbuild: bin/esbuild - checksum: 10c0/168917909d5f6714843f218fc722c113c1f53b6c9f4f315f3d55dad1a9b6b8d3194a5f4dfdd67405927b308a72aa5ba175b44d2f1b95c993a943a674eea1e1ad + checksum: 10c0/91fa81a320c542e435886ebaa556cbdda3a18bf71bf9a6505a16d3c0eb20c991119932d33bce78198aacaf6fe1cedfb57de97d22ddf4c681517c7ef8fbec4216 languageName: node linkType: hard @@ -8658,6 +8833,92 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:0.24.2": + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.2" + "@esbuild/android-arm": "npm:0.24.2" + "@esbuild/android-arm64": "npm:0.24.2" + "@esbuild/android-x64": "npm:0.24.2" + "@esbuild/darwin-arm64": "npm:0.24.2" + "@esbuild/darwin-x64": "npm:0.24.2" + "@esbuild/freebsd-arm64": "npm:0.24.2" + "@esbuild/freebsd-x64": "npm:0.24.2" + "@esbuild/linux-arm": "npm:0.24.2" + "@esbuild/linux-arm64": "npm:0.24.2" + "@esbuild/linux-ia32": "npm:0.24.2" + "@esbuild/linux-loong64": "npm:0.24.2" + "@esbuild/linux-mips64el": "npm:0.24.2" + "@esbuild/linux-ppc64": "npm:0.24.2" + "@esbuild/linux-riscv64": "npm:0.24.2" + "@esbuild/linux-s390x": "npm:0.24.2" + "@esbuild/linux-x64": "npm:0.24.2" + "@esbuild/netbsd-arm64": "npm:0.24.2" + "@esbuild/netbsd-x64": "npm:0.24.2" + "@esbuild/openbsd-arm64": "npm:0.24.2" + "@esbuild/openbsd-x64": "npm:0.24.2" + "@esbuild/sunos-x64": "npm:0.24.2" + "@esbuild/win32-arm64": "npm:0.24.2" + "@esbuild/win32-ia32": "npm:0.24.2" + "@esbuild/win32-x64": "npm:0.24.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/5a25bb08b6ba23db6e66851828d848bd3ff87c005a48c02d83e38879058929878a6baa5a414e1141faee0d1dece3f32b5fbc2a87b82ed6a7aa857cf40359aeb5 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -17717,11 +17978,11 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.4": - version: 6.0.4 - resolution: "vite@npm:6.0.4" +"vite@npm:6.0.5": + version: 6.0.5 + resolution: "vite@npm:6.0.5" dependencies: - esbuild: "npm:^0.24.0" + esbuild: "npm:0.24.0" fsevents: "npm:~2.3.3" postcss: "npm:^8.4.49" rollup: "npm:^4.23.0" @@ -17765,7 +18026,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/b1808f99250980bb1dc7805897ecfced4913adc7b4fd1cf7912e034f3e24e3e97a751ca3410620428bf073070f0b46071b94c4241cf9fc88b12f2d9dcafd7619 + checksum: 10c0/d6927e1795abf0bffbf9183c3c3338c7cc1060bcfbfcd951aa4464c1e5478216f26c95077a2bbd29edbaebc079c1f08a37c7daac8f07c0a6bb53e79d502c70ef languageName: node linkType: hard From af629c5c92ea8a120fceed4861960f966a58cad6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 20 Dec 2024 09:50:54 -0500 Subject: [PATCH 0181/2162] build: migrate `@ngtools/webpack` to `ts_project` The `@ngtools/webpack` package has been migrated to the `rules_js` ts_project rule. Other than the `index.ts` addition, no code changes were needed. --- packages/ngtools/webpack/BUILD.bazel | 38 +++++++++++++--------------- packages/ngtools/webpack/index.ts | 9 +++++++ tsconfig.json | 2 +- 3 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 packages/ngtools/webpack/index.ts diff --git a/packages/ngtools/webpack/BUILD.bazel b/packages/ngtools/webpack/BUILD.bazel index c96527f207c9..470fcec06919 100644 --- a/packages/ngtools/webpack/BUILD.bazel +++ b/packages/ngtools/webpack/BUILD.bazel @@ -5,15 +5,15 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "webpack", - package_name = "@ngtools/webpack", srcs = glob( include = [ "src/**/*.ts", @@ -22,21 +22,22 @@ ts_library( "src/**/*_spec.ts", "src/**/*_spec_helpers.ts", ], - ), + ) + [ + "index.ts", + ], data = [ "package.json", ], module_name = "@ngtools/webpack", - module_root = "src/index.d.ts", deps = [ - "@npm//@angular/compiler-cli", - "@npm//@types/node", - "@npm//typescript", - "@npm//webpack", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@types/node", + "//:root_modules/typescript", + "//:root_modules/webpack", ], ) -ts_library( +ts_project( name = "webpack_test_lib", testonly = True, srcs = glob( @@ -45,23 +46,20 @@ ts_library( "src/**/*_spec_helpers.ts", ], ), - deps = [ - ":webpack", + interop_deps = [ "//packages/angular_devkit/core", - "@npm//@angular/compiler", - "@npm//jasmine", - "@npm//typescript", + ], + deps = [ + ":webpack_rjs", + "//:root_modules/@angular/compiler", + "//:root_modules/@types/jasmine", + "//:root_modules/typescript", ], ) jasmine_node_test( name = "webpack_test", srcs = [":webpack_test_lib"], - deps = [ - "@npm//jasmine", - "@npm//source-map", - "@npm//tslib", - ], ) genrule( diff --git a/packages/ngtools/webpack/index.ts b/packages/ngtools/webpack/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/ngtools/webpack/index.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 + */ + +export * from './src/index'; diff --git a/tsconfig.json b/tsconfig.json index dbe34ec986e6..7ce6cd5a6e6f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -31,7 +31,7 @@ "@angular/ssr": ["./packages/angular/ssr"], "@angular/*": ["./packages/angular/*/src"], "@angular/build/private": ["./packages/angular/build/src/private"], - "@ngtools/webpack": ["./packages/ngtools/webpack/src"], + "@ngtools/webpack": ["./packages/ngtools/webpack/index"], "@schematics/angular": ["./packages/schematics/angular"] } }, From 74fffbaa4d36f33a57edb602da97c34a942aad1f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 21 Dec 2024 06:06:03 +0000 Subject: [PATCH 0182/2162] build: update github/codeql-action action to v3.28.0 --- .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 9f5ca176c68f..4f7c0d713afc 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@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: sarif_file: results.sarif From 4bef5a25ae14e319be0ce84c1a15544cf0fc3aa8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 21 Dec 2024 00:06:56 +0000 Subject: [PATCH 0183/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 ++-- package.json | 2 +- pnpm-lock.yaml | 12 +++---- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++++---------- yarn.lock | 12 +++---- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 2a0a65e271d1..d2858836dc13 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-303224142 -pnpm-lock.yaml=342794697 +package.json=1728992596 +pnpm-lock.yaml=1882019845 pnpm-workspace.yaml=1711114604 -yarn.lock=1329456794 +yarn.lock=-817896934 diff --git a/package.json b/package.json index 178110aa6f9a..a5acd676b537 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.4", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e", "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19", "@angular/cdk": "19.1.0-next.3", "@angular/common": "19.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b807994134aa..7bb897faa239 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,8 +20,8 @@ importers: specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37 - version: github.com/angular/bazel-builds/5c693d4f8110bb65bc8635506d74ffcb374aaa37(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e + version: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19 version: github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -14923,15 +14923,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/5c693d4f8110bb65bc8635506d74ffcb374aaa37(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/5c693d4f8110bb65bc8635506d74ffcb374aaa37} - id: github.com/angular/bazel-builds/5c693d4f8110bb65bc8635506d74ffcb374aaa37 + github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/722eb514ccf42aaca1642c42ec2d1b70a632142e} + id: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e name: '@angular/bazel' version: 19.1.0-next.4 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.4+sha-b97bc5b + '@angular/compiler-cli': 19.1.0-next.4+sha-8c5db3c '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 878d17cb3e68..0253cd92d466 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#ad8c43ea891d93c3bf4ad245ddb304e7ff341620", - "@angular/cdk": "github:angular/cdk-builds#0dbf7e97e42dc5018f5d2c5812982be9b168f0a6", - "@angular/common": "github:angular/common-builds#85adb6858deb4547bae6ad458ddefd4fcd675917", - "@angular/compiler": "github:angular/compiler-builds#4402782bfc8c3de25af30dbe94afa3733ffaa828", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#a1a89da15a7f5f288a9593193d1ceb232f341329", - "@angular/core": "github:angular/core-builds#b9cb5ce75193c3f0b8f88aa8349003aa29737de4", - "@angular/forms": "github:angular/forms-builds#e9d846bed8412049d01b9c45249b5a9691a4a66d", - "@angular/language-service": "github:angular/language-service-builds#1e52082884c6a9627cc7f54d33e4ca9268d94d5e", - "@angular/localize": "github:angular/localize-builds#b3a22198c0425256a96868e0918257e81e5b4dd5", - "@angular/material": "github:angular/material-builds#5c81604e94b67bd578eef762fe8a3b65419edd32", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#5afad373e385377b781947272959f009c26daff0", - "@angular/platform-browser": "github:angular/platform-browser-builds#457bddb6f71fcde61658a1eba49a215f40110fdc", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#588f35630efa506772daa127f1972cde8c30712e", - "@angular/platform-server": "github:angular/platform-server-builds#a08e274a07f231d2cbe89c777f46d595d1a074c0", - "@angular/router": "github:angular/router-builds#99ca0ebe38c5e3adfdf56e5eb23d4d8ab9193a7b", - "@angular/service-worker": "github:angular/service-worker-builds#8779277123372b2c870316d1048c2827420d7db0" + "@angular/animations": "github:angular/animations-builds#0e6c3f5644b7b0f97ad2e6211421ecb7476d5905", + "@angular/cdk": "github:angular/cdk-builds#3c51feec2732e4516cfe3187df8aa7db8b86ee57", + "@angular/common": "github:angular/common-builds#44ce4602e2f64c5f6dc4e54d2424b451769ef1e7", + "@angular/compiler": "github:angular/compiler-builds#195d16ab2d6283b67533b03432860110e9ceb213", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e1b18f50153f959187918ab99ad537bc54969e77", + "@angular/core": "github:angular/core-builds#dcf469f32f04f0063a7679ad46bbeb1bba12c80b", + "@angular/forms": "github:angular/forms-builds#1ba071c30003d9d34eb793a681ad003be02e2c80", + "@angular/language-service": "github:angular/language-service-builds#ca1790860b2113156242a82e898860074de8faf1", + "@angular/localize": "github:angular/localize-builds#8e43647069a7df3cc486ad27fe39c1317aceebb3", + "@angular/material": "github:angular/material-builds#8b8e8e63a192adf73e77e8d3d6c6392525d16ce4", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#42a654895bac1e77aa20c1847c392857dd87c9f7", + "@angular/platform-browser": "github:angular/platform-browser-builds#20a349f2cd0136f939f1b3f2ec5bc86bb3e880f7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#566f6f3757df8c7cc4850acf4f7871f4995c58b6", + "@angular/platform-server": "github:angular/platform-server-builds#6cd4d80d65b31c486361bcfa2f968109d9cea20b", + "@angular/router": "github:angular/router-builds#5e82f4225d34a6969d9769715702463de325b680", + "@angular/service-worker": "github:angular/service-worker-builds#8c475038672a782f422d9cdcf6439e99e20a1eb2" } } diff --git a/yarn.lock b/yarn.lock index 2d782c1c39cb..3c0db4206515 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37": - version: 19.1.0-next.4+sha-b97bc5b - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=5c693d4f8110bb65bc8635506d74ffcb374aaa37" +"@angular/bazel@https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e": + version: 19.1.0-next.4+sha-8c5db3c + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=722eb514ccf42aaca1642c42ec2d1b70a632142e" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.4+sha-b97bc5b + "@angular/compiler-cli": 19.1.0-next.4+sha-8c5db3c "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/ab706080052addf279a2e357670a646d95a5b6de93bd193474cfd3e905056be836a8e6996796acc94c21966d5085b667d9132e0d7f356978fe1cb64f2a1130aa + checksum: 10c0/afe235b4df58719f358ccf432638128d6ebf7ba0a2f5282344f9e654b6e21ac21d3bf2c8a87bc865319f47a14fd18142910aed84faabc33426812508c43dd415 languageName: node linkType: hard @@ -310,7 +310,7 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.4" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#5c693d4f8110bb65bc8635506d74ffcb374aaa37" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e" "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19" "@angular/cdk": "npm:19.1.0-next.3" "@angular/common": "npm:19.1.0-next.4" From b4e9a2af9e50e7b65167d0fdbd4012023135e875 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 20 Dec 2024 14:11:47 -0500 Subject: [PATCH 0184/2162] build: migrate `@angular-devkit/build-webpack` to `ts_project` The `@angular-devkit/build-webpack` package has been migrated to the `rules_js` ts_project rule. --- .../angular_devkit/build_webpack/BUILD.bazel | 59 +++++++++---------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index 5df72c9adf9f..6fee76a7f02c 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -5,7 +5,8 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -22,14 +23,13 @@ ts_json_schema( src = "src/builders/webpack-dev-server/schema.json", ) -ts_library( +ts_project( name = "build_webpack", - package_name = "@angular-devkit/build-webpack", srcs = glob( include = ["src/**/*.ts"], exclude = [ "src/test-utils.ts", - "src/**/*_spec.ts", + "**/*_spec.ts", ], ) + [ "index.ts", @@ -42,18 +42,19 @@ ts_library( "src/builders/webpack-dev-server/schema.json", "src/builders/webpack/schema.json", ], + interop_deps = [ + "//packages/angular_devkit/architect", + ], module_name = "@angular-devkit/build-webpack", - module_root = "src/index.d.ts", deps = [ - "//packages/angular_devkit/architect", - "@npm//@types/node", - "@npm//rxjs", - "@npm//webpack", - "@npm//webpack-dev-server", + "//:root_modules/@types/node", + "//:root_modules/rxjs", + "//:root_modules/webpack", + "//:root_modules/webpack-dev-server", ], ) -ts_library( +ts_project( name = "build_webpack_test_lib", testonly = True, srcs = glob( @@ -66,34 +67,32 @@ ts_library( "test/**/*", ], ), - deps = [ - ":build_webpack", - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/ngtools/webpack", - "@npm//@angular/common", - "@npm//@angular/compiler", - "@npm//@angular/compiler-cli", - "@npm//@angular/core", - "@npm//@angular/platform-browser", - "@npm//@angular/platform-browser-dynamic", - "@npm//tslib", - "@npm//zone.js", + "//packages/angular_devkit/architect", + "//packages/angular_devkit/architect/node", + "//packages/angular_devkit/architect/testing", + ], + deps = [ + ":build_webpack_rjs", + "//:root_modules/@types/jasmine", ], ) jasmine_node_test( name = "build_webpack_test", srcs = [":build_webpack_test_lib"], - # Turns off nodejs require patches and turns on the linker, which sets up up node_modules - # so that standard node module resolution work. - templated_args = ["--nobazel_patch_module_resolver"], - deps = [ - "@npm//jasmine", - "@npm//source-map", + data = [ + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-browser", + "//:root_modules/@angular/platform-browser-dynamic", + "//:root_modules/tslib", + "//:root_modules/zone.js", ], ) From dfe9c6a3cc486945fd4dd2bdff015ae7ff51a5c3 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Mon, 23 Dec 2024 07:44:23 +0000 Subject: [PATCH 0185/2162] build: migrate `angular_devkit/core` to `ts_project` Migrates `@angular-devkit/core` to `ts_project`. --- packages/angular_devkit/core/BUILD.bazel | 34 +++++++++---------- packages/angular_devkit/core/index.ts | 9 +++++ packages/angular_devkit/core/node/BUILD.bazel | 22 ++++++------ .../core/node/testing/BUILD.bazel | 15 ++++---- 4 files changed, 44 insertions(+), 36 deletions(-) create mode 100644 packages/angular_devkit/core/index.ts diff --git a/packages/angular_devkit/core/BUILD.bazel b/packages/angular_devkit/core/BUILD.bazel index f736dfe0230b..e577e15d589f 100644 --- a/packages/angular_devkit/core/BUILD.bazel +++ b/packages/angular_devkit/core/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -12,15 +13,14 @@ licenses(["notice"]) # @angular-devkit/core -ts_library( +ts_project( name = "core", - package_name = "@angular-devkit/core", srcs = glob( include = ["src/**/*.ts"], exclude = [ "src/**/*_spec.ts", ], - ), + ) + ["index.ts"], data = glob( include = ["**/*.json"], # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces @@ -30,16 +30,16 @@ ts_library( ], ), module_name = "@angular-devkit/core", - module_root = "src/index.d.ts", deps = [ - "@npm//@types/node", - "@npm//@types/picomatch", - "@npm//ajv", - "@npm//ajv-formats", - "@npm//jsonc-parser", - "@npm//picomatch", - "@npm//rxjs", - "@npm//source-map", + "//:root_modules/@types/node", + "//:root_modules/@types/picomatch", + "//:root_modules/@types/jasmine", + "//:root_modules/ajv", + "//:root_modules/ajv-formats", + "//:root_modules/jsonc-parser", + "//:root_modules/picomatch", + "//:root_modules/rxjs", + "//:root_modules/source-map", # @node_module: typescript:es2015.proxy # @node_module: typescript:es2015.reflect # @node_module: typescript:es2015.symbol.wellknown @@ -49,15 +49,15 @@ ts_library( # @external_begin -ts_library( +ts_project( name = "core_test_lib", testonly = True, srcs = glob(["src/**/*_spec.ts"]), data = glob(["src/workspace/json/test/**/*.json"]), deps = [ - ":core", - "//packages/angular_devkit/core/node", - "@npm//rxjs", + ":core_rjs", + "//:root_modules/rxjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) diff --git a/packages/angular_devkit/core/index.ts b/packages/angular_devkit/core/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/angular_devkit/core/index.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 + */ + +export * from './src/index'; diff --git a/packages/angular_devkit/core/node/BUILD.bazel b/packages/angular_devkit/core/node/BUILD.bazel index a52feab8f771..6e2d05567ef2 100644 --- a/packages/angular_devkit/core/node/BUILD.bazel +++ b/packages/angular_devkit/core/node/BUILD.bazel @@ -4,13 +4,13 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "node", srcs = glob( include = ["**/*.ts"], @@ -20,18 +20,17 @@ ts_library( ], ), module_name = "@angular-devkit/core/node", - module_root = "index.d.ts", deps = [ - "//packages/angular_devkit/core", - "@npm//@types/node", - "@npm//chokidar", - "@npm//rxjs", + "//:root_modules/@types/node", + "//:root_modules/chokidar", + "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", ], ) # @external_begin -ts_library( +ts_project( name = "node_test_lib", testonly = True, srcs = glob( @@ -43,9 +42,10 @@ ts_library( ], ), deps = [ - ":node", - "//packages/angular_devkit/core", - "@npm//rxjs", + ":node_rjs", + "//:root_modules/@types/jasmine", + "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", ], ) diff --git a/packages/angular_devkit/core/node/testing/BUILD.bazel b/packages/angular_devkit/core/node/testing/BUILD.bazel index cd8e7d01b0b8..89870c7f876d 100644 --- a/packages/angular_devkit/core/node/testing/BUILD.bazel +++ b/packages/angular_devkit/core/node/testing/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,7 +8,7 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "testing", srcs = glob( include = ["**/*.ts"], @@ -17,12 +17,11 @@ ts_library( ], ), module_name = "@angular-devkit/core/node/testing", - module_root = "index.d.ts", deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//rxjs", + "//:root_modules/@types/jasmine", + "//:root_modules/@types/node", + "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) From 5f04d6863384dbd7d1186cc61ae66b8316ad8f9b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 08:02:03 -0500 Subject: [PATCH 0186/2162] build: migrate `@angular/create` to `ts_project` The `@angular/create` package has been migrated to the `rules_js` ts_project rule. --- packages/angular/create/BUILD.bazel | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/angular/create/BUILD.bazel b/packages/angular/create/BUILD.bazel index e65dbcb98d1c..6c8979aaf7ea 100644 --- a/packages/angular/create/BUILD.bazel +++ b/packages/angular/create/BUILD.bazel @@ -3,17 +3,18 @@ # 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 -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") licenses(["notice"]) -ts_library( +ts_project( name = "create", - package_name = "@angular/create", srcs = ["src/index.ts"], + module_name = "@angular/create", deps = [ + "//:root_modules/@types/node", "//packages/angular/cli:angular-cli", - "@npm//@types/node", ], ) From 099b5a7d53cce1ed2b815205dc8251724d122bb8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 21 Dec 2024 14:04:45 +0000 Subject: [PATCH 0187/2162] build: update all non-major dependencies --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 8 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 2 +- .../schematics_cli/package.json | 2 +- pnpm-lock.yaml | 584 ++++++++++------ yarn.lock | 655 ++++++++++++------ 7 files changed, 805 insertions(+), 456 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index d2858836dc13..1652b6e5be5c 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1728992596 -pnpm-lock.yaml=1882019845 +package.json=1733430966 +pnpm-lock.yaml=-703346517 pnpm-workspace.yaml=1711114604 -yarn.lock=-817896934 +yarn.lock=-931254131 diff --git a/package.json b/package.json index a5acd676b537..af7effcfcf16 100644 --- a/package.json +++ b/package.json @@ -76,8 +76,8 @@ "@bazel/rollup": "^5.8.1", "@bazel/runfiles": "^5.8.1", "@discoveryjs/json-ext": "0.6.3", - "@inquirer/confirm": "5.1.0", - "@inquirer/prompts": "7.2.0", + "@inquirer/confirm": "5.1.1", + "@inquirer/prompts": "7.2.1", "@listr2/prompt-adapter-inquirer": "2.0.18", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", @@ -176,7 +176,7 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.28.1", + "rollup": "4.29.1", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", @@ -196,7 +196,7 @@ "typescript": "5.7.2", "undici": "7.2.0", "unenv": "^1.10.0", - "verdaccio": "6.0.4", + "verdaccio": "6.0.5", "verdaccio-auth-memory": "^10.0.0", "vite": "6.0.5", "watchpack": "2.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 140498f59319..b296df93b4f6 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.0", + "@inquirer/confirm": "5.1.1", "@vitejs/plugin-basic-ssl": "1.2.0", "beasties": "0.2.0", "browserslist": "^4.23.0", @@ -38,7 +38,7 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.8.0", - "rollup": "4.28.1", + "rollup": "4.29.1", "sass": "1.83.0", "semver": "7.6.3", "vite": "6.0.5", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 8fdfa2941ba2..73d8eabb6795 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -25,7 +25,7 @@ "@angular-devkit/architect": "0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.2.0", + "@inquirer/prompts": "7.2.1", "@listr2/prompt-adapter-inquirer": "2.0.18", "@schematics/angular": "0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index cbc7c1ee78f4..b8d86d69e86b 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": "0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.2.0", + "@inquirer/prompts": "7.2.1", "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 7bb897faa239..4889ad23251f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e - version: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19 version: github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -111,7 +111,7 @@ importers: version: 5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0) '@bazel/rollup': specifier: ^5.8.1 - version: 5.8.1(rollup@4.28.1) + version: 5.8.1(rollup@4.29.1) '@bazel/runfiles': specifier: ^5.8.1 version: 5.8.1 @@ -119,23 +119,23 @@ importers: specifier: 0.6.3 version: 0.6.3 '@inquirer/confirm': - specifier: 5.1.0 - version: 5.1.0(@types/node@18.19.68) + specifier: 5.1.1 + version: 5.1.1(@types/node@18.19.68) '@inquirer/prompts': - specifier: 7.2.0 - version: 7.2.0(@types/node@18.19.68) + specifier: 7.2.1 + version: 7.2.1(@types/node@18.19.68) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 - version: 2.0.18(@inquirer/prompts@7.2.0) + version: 2.0.18(@inquirer/prompts@7.2.1) '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.28.1) + version: 5.1.1(rollup@4.29.1) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.2(rollup@4.28.1) + version: 28.0.2(rollup@4.29.1) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.28.1) + version: 13.3.0(rollup@4.29.1) '@stylistic/eslint-plugin': specifier: ^2.8.0 version: 2.12.1(eslint@8.57.0)(typescript@5.7.2) @@ -419,14 +419,14 @@ importers: specifier: 5.0.0 version: 5.0.0 rollup: - specifier: 4.28.1 - version: 4.28.1 + specifier: 4.29.1 + version: 4.29.1 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.1 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@18.19.68)(rollup@4.28.1) + version: 0.6.3(@types/node@18.19.68)(rollup@4.29.1) rxjs: specifier: 7.8.1 version: 7.8.1 @@ -479,8 +479,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.0.4 - version: 6.0.4(typanion@3.14.0) + specifier: 6.0.5 + version: 6.0.5(typanion@3.14.0) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.2.2 @@ -2037,14 +2037,14 @@ packages: protractor: 7.0.0 dev: true - /@bazel/rollup@5.8.1(rollup@4.28.1): + /@bazel/rollup@5.8.1(rollup@4.29.1): resolution: {integrity: sha512-Ys+UWbRp1TY2j+z15N+SZgID/nuqAtJTgJDsz0NZVjm8F8KzmgXxLDnBb/cUKFVk83pNOAi84G/bq1tINjMSNA==} hasBin: true peerDependencies: rollup: '>=2.3.0 <3.0.0' dependencies: '@bazel/worker': 5.8.1 - rollup: 4.28.1 + rollup: 4.29.1 dev: true /@bazel/runfiles@5.8.1: @@ -2679,15 +2679,15 @@ packages: deprecated: Use @eslint/object-schema instead dev: true - /@inquirer/checkbox@4.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-CEt9B4e8zFOGtc/LYeQx5m8nfqQeG/4oNNv0PUvXGG0mys+wR/WbJ3B4KfSQ4Fcr3AQfpiuFOi3fVvmPfvNbxw==} + /@inquirer/checkbox@4.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-fYAKCAcGNMdfjL6hZTRUwkIByQ8EIZCXKrIQZH7XjADnN/xvRUhj8UdBbpC4zoUzvChhkSC/zRKaP/tDs3dZpg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/figures': 1.0.9 + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 @@ -2699,17 +2699,28 @@ packages: peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) + '@types/node': 18.19.68 + dev: true + + /@inquirer/confirm@5.1.1(@types/node@18.19.68): + resolution: {integrity: sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + dependencies: + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 dev: true - /@inquirer/core@10.1.1(@types/node@18.19.68): - resolution: {integrity: sha512-rmZVXy9iZvO3ZStEe/ayuuwIJ23LSF13aPMlLMTQARX6lGUBDHGV8UB5i9MRrfy0+mZwt5/9bdy8llszSD3NQA==} + /@inquirer/core@10.1.2(@types/node@18.19.68): + resolution: {integrity: sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==} engines: {node: '>=18'} dependencies: - '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/figures': 1.0.9 + '@inquirer/type': 3.0.2(@types/node@18.19.68) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2721,122 +2732,122 @@ packages: - '@types/node' dev: true - /@inquirer/editor@4.2.0(@types/node@18.19.68): - resolution: {integrity: sha512-Z3LeGsD3WlItDqLxTPciZDbGtm0wrz7iJGS/uUxSiQxef33ZrBq7LhsXg30P7xrWz1kZX4iGzxxj5SKZmJ8W+w==} + /@inquirer/editor@4.2.1(@types/node@18.19.68): + resolution: {integrity: sha512-xn9aDaiP6nFa432i68JCaL302FyL6y/6EG97nAtfIPnWZ+mWPgCMLGc4XZ2QQMsZtu9q3Jd5AzBPjXh10aX9kA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 external-editor: 3.1.0 dev: true - /@inquirer/expand@4.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-MDszqW4HYBpVMmAoy/FA9laLrgo899UAga0itEjsYrBthKieDZNc0e16gdn7N3cQ0DSf/6zsTBZMuDYDQU4ktg==} + /@inquirer/expand@4.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-GYocr+BPyxKPxQ4UZyNMqZFSGKScSUc0Vk17II3J+0bDcgGsQm0KYQNooN1Q5iBfXsy3x/VWmHGh20QnzsaHwg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/figures@1.0.8: - resolution: {integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==} + /@inquirer/figures@1.0.9: + resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==} engines: {node: '>=18'} dev: true - /@inquirer/input@4.1.0(@types/node@18.19.68): - resolution: {integrity: sha512-16B8A9hY741yGXzd8UJ9R8su/fuuyO2e+idd7oVLYjP23wKJ6ILRIIHcnXe8/6AoYgwRS2zp4PNsW/u/iZ24yg==} + /@inquirer/input@4.1.1(@types/node@18.19.68): + resolution: {integrity: sha512-nAXAHQndZcXB+7CyjIW3XuQZZHbQQ0q8LX6miY6bqAWwDzNa9JUioDBYrFmOUNIsuF08o1WT/m2gbBXvBhYVxg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 dev: true - /@inquirer/number@3.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-HA/W4YV+5deKCehIutfGBzNxWH1nhvUC67O4fC9ufSijn72yrYnRmzvC61dwFvlXIG1fQaYWi+cqNE9PaB9n6Q==} + /@inquirer/number@3.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-DX7a6IXRPU0j8kr2ovf+QaaDiIf+zEKaZVzCWdLOTk7XigqSXvoh4cul7x68xp54WTQrgSnW7P1WBJDbyY3GhA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 dev: true - /@inquirer/password@4.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-3qWjk6hS0iabG9xx0U1plwQLDBc/HA/hWzLFFatADpR6XfE62LqPr9GpFXBkLU0KQUaIXZ996bNG+2yUvocH8w==} + /@inquirer/password@4.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-wiliQOWdjM8FnBmdIHtQV2Ca3S1+tMBUerhyjkRCv1g+4jSvEweGu9GCcvVEgKDhTBT15nrxvk5/bVrGUqSs1w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 ansi-escapes: 4.3.2 dev: true - /@inquirer/prompts@7.2.0(@types/node@18.19.68): - resolution: {integrity: sha512-ZXYZ5oGVrb+hCzcglPeVerJ5SFwennmDOPfXq1WyeZIrPGySLbl4W6GaSsBFvu3WII36AOK5yB8RMIEEkBjf8w==} + /@inquirer/prompts@7.2.1(@types/node@18.19.68): + resolution: {integrity: sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/checkbox': 4.0.3(@types/node@18.19.68) - '@inquirer/confirm': 5.1.0(@types/node@18.19.68) - '@inquirer/editor': 4.2.0(@types/node@18.19.68) - '@inquirer/expand': 4.0.3(@types/node@18.19.68) - '@inquirer/input': 4.1.0(@types/node@18.19.68) - '@inquirer/number': 3.0.3(@types/node@18.19.68) - '@inquirer/password': 4.0.3(@types/node@18.19.68) - '@inquirer/rawlist': 4.0.3(@types/node@18.19.68) - '@inquirer/search': 3.0.3(@types/node@18.19.68) - '@inquirer/select': 4.0.3(@types/node@18.19.68) + '@inquirer/checkbox': 4.0.4(@types/node@18.19.68) + '@inquirer/confirm': 5.1.1(@types/node@18.19.68) + '@inquirer/editor': 4.2.1(@types/node@18.19.68) + '@inquirer/expand': 4.0.4(@types/node@18.19.68) + '@inquirer/input': 4.1.1(@types/node@18.19.68) + '@inquirer/number': 3.0.4(@types/node@18.19.68) + '@inquirer/password': 4.0.4(@types/node@18.19.68) + '@inquirer/rawlist': 4.0.4(@types/node@18.19.68) + '@inquirer/search': 3.0.4(@types/node@18.19.68) + '@inquirer/select': 4.0.4(@types/node@18.19.68) '@types/node': 18.19.68 dev: true - /@inquirer/rawlist@4.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-5MhinSzfmOiZlRoPezfbJdfVCZikZs38ja3IOoWe7H1dxL0l3Z2jAUgbBldeyhhOkELdGvPlBfQaNbeLslib1w==} + /@inquirer/rawlist@4.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-IsVN2EZdNHsmFdKWx9HaXb8T/s3FlR/U1QPt9dwbSyPtjFbMTlW9CRFvnn0bm/QIsrMRD2oMZqrQpSWPQVbXXg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/search@3.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-mQTCbdNolTGvGGVCJSI6afDwiSGTV+fMLPEIMDJgIV6L/s3+RYRpxt6t0DYnqMQmemnZ/Zq0vTIRwoHT1RgcTg==} + /@inquirer/search@3.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-tSkJk2SDmC2MEdTIjknXWmCnmPr5owTs9/xjfa14ol1Oh95n6xW7SYn5fiPk4/vrJPys0ggSWiISdPze4LTa7A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/figures': 1.0.9 + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/select@4.0.3(@types/node@18.19.68): - resolution: {integrity: sha512-OZfKDtDE8+J54JYAFTUGZwvKNfC7W/gFCjDkcsO7HnTH/wljsZo9y/FJquOxMy++DY0+9l9o/MOZ8s5s1j5wmw==} + /@inquirer/select@4.0.4(@types/node@18.19.68): + resolution: {integrity: sha512-ZzYLuLoUzTIW9EJm++jBpRiTshGqS3Q1o5qOEQqgzaBlmdsjQr6pA4TUNkwu6OBYgM2mIRbCz6mUhFDfl/GF+w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.1(@types/node@18.19.68) - '@inquirer/figures': 1.0.8 - '@inquirer/type': 3.0.1(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/figures': 1.0.9 + '@inquirer/type': 3.0.2(@types/node@18.19.68) '@types/node': 18.19.68 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 @@ -2849,8 +2860,8 @@ packages: mute-stream: 1.0.0 dev: true - /@inquirer/type@3.0.1(@types/node@18.19.68): - resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==} + /@inquirer/type@3.0.2(@types/node@18.19.68): + resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2965,13 +2976,13 @@ packages: resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} dev: true - /@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.2.0): + /@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.2.1): resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==} engines: {node: '>=18.0.0'} peerDependencies: '@inquirer/prompts': '>= 3 < 8' dependencies: - '@inquirer/prompts': 7.2.0(@types/node@18.19.68) + '@inquirer/prompts': 7.2.1(@types/node@18.19.68) '@inquirer/type': 1.5.5 dev: true @@ -3683,7 +3694,7 @@ packages: - supports-color dev: true - /@rollup/plugin-alias@5.1.1(rollup@4.28.1): + /@rollup/plugin-alias@5.1.1(rollup@4.29.1): resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3692,10 +3703,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.28.1 + rollup: 4.29.1 dev: true - /@rollup/plugin-commonjs@28.0.2(rollup@4.28.1): + /@rollup/plugin-commonjs@28.0.2(rollup@4.29.1): resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: @@ -3704,17 +3715,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.17 picomatch: 4.0.2 - rollup: 4.28.1 + rollup: 4.29.1 dev: true - /@rollup/plugin-json@6.1.0(rollup@4.28.1): + /@rollup/plugin-json@6.1.0(rollup@4.29.1): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3723,26 +3734,26 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.28.1) - rollup: 4.28.1 + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + rollup: 4.29.1 dev: true - /@rollup/plugin-node-resolve@13.3.0(rollup@4.28.1): + /@rollup/plugin-node-resolve@13.3.0(rollup@4.29.1): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.28.1) + '@rollup/pluginutils': 3.1.0(rollup@4.29.1) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.9 - rollup: 4.28.1 + rollup: 4.29.1 dev: true - /@rollup/plugin-node-resolve@15.3.1(rollup@4.28.1): + /@rollup/plugin-node-resolve@15.3.1(rollup@4.29.1): resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3751,15 +3762,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.9 - rollup: 4.28.1 + rollup: 4.29.1 dev: true - /@rollup/pluginutils@3.1.0(rollup@4.28.1): + /@rollup/pluginutils@3.1.0(rollup@4.29.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -3768,10 +3779,10 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.28.1 + rollup: 4.29.1 dev: true - /@rollup/pluginutils@5.1.4(rollup@4.28.1): + /@rollup/pluginutils@5.1.4(rollup@4.29.1): resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3783,7 +3794,7 @@ packages: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 - rollup: 4.28.1 + rollup: 4.29.1 dev: true /@rollup/rollup-android-arm-eabi@4.28.1: @@ -3793,6 +3804,13 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm-eabi@4.29.1: + resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} + cpu: [arm] + os: [android] + dev: true + optional: true + /@rollup/rollup-android-arm64@4.28.1: resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} cpu: [arm64] @@ -3800,6 +3818,13 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm64@4.29.1: + resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} + cpu: [arm64] + os: [android] + dev: true + optional: true + /@rollup/rollup-darwin-arm64@4.28.1: resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} cpu: [arm64] @@ -3807,6 +3832,13 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-arm64@4.29.1: + resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + /@rollup/rollup-darwin-x64@4.28.1: resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} cpu: [x64] @@ -3814,6 +3846,13 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-x64@4.29.1: + resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + /@rollup/rollup-freebsd-arm64@4.28.1: resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} cpu: [arm64] @@ -3821,6 +3860,13 @@ packages: dev: true optional: true + /@rollup/rollup-freebsd-arm64@4.29.1: + resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} + cpu: [arm64] + os: [freebsd] + dev: true + optional: true + /@rollup/rollup-freebsd-x64@4.28.1: resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} cpu: [x64] @@ -3828,6 +3874,13 @@ packages: dev: true optional: true + /@rollup/rollup-freebsd-x64@4.29.1: + resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} + cpu: [x64] + os: [freebsd] + dev: true + optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.28.1: resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} cpu: [arm] @@ -3835,6 +3888,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.29.1: + resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} + cpu: [arm] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-arm-musleabihf@4.28.1: resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} cpu: [arm] @@ -3842,6 +3902,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm-musleabihf@4.29.1: + resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} + cpu: [arm] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-arm64-gnu@4.28.1: resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} cpu: [arm64] @@ -3849,6 +3916,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-gnu@4.29.1: + resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-arm64-musl@4.28.1: resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} cpu: [arm64] @@ -3856,6 +3930,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-musl@4.29.1: + resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-loongarch64-gnu@4.28.1: resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} cpu: [loong64] @@ -3863,6 +3944,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-loongarch64-gnu@4.29.1: + resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} + cpu: [loong64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-powerpc64le-gnu@4.28.1: resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} cpu: [ppc64] @@ -3870,6 +3958,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-powerpc64le-gnu@4.29.1: + resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} + cpu: [ppc64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-riscv64-gnu@4.28.1: resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} cpu: [riscv64] @@ -3877,6 +3972,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-riscv64-gnu@4.29.1: + resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} + cpu: [riscv64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-s390x-gnu@4.28.1: resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} cpu: [s390x] @@ -3884,6 +3986,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-s390x-gnu@4.29.1: + resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} + cpu: [s390x] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-x64-gnu@4.28.1: resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} cpu: [x64] @@ -3891,6 +4000,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-gnu@4.29.1: + resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} + cpu: [x64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-linux-x64-musl@4.28.1: resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} cpu: [x64] @@ -3898,6 +4014,13 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-musl@4.29.1: + resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} + cpu: [x64] + os: [linux] + dev: true + optional: true + /@rollup/rollup-win32-arm64-msvc@4.28.1: resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} cpu: [arm64] @@ -3905,6 +4028,13 @@ packages: dev: true optional: true + /@rollup/rollup-win32-arm64-msvc@4.29.1: + resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} + cpu: [arm64] + os: [win32] + dev: true + optional: true + /@rollup/rollup-win32-ia32-msvc@4.28.1: resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} cpu: [ia32] @@ -3912,6 +4042,13 @@ packages: dev: true optional: true + /@rollup/rollup-win32-ia32-msvc@4.29.1: + resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} + cpu: [ia32] + os: [win32] + dev: true + optional: true + /@rollup/rollup-win32-x64-msvc@4.28.1: resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} cpu: [x64] @@ -3919,6 +4056,13 @@ packages: dev: true optional: true + /@rollup/rollup-win32-x64-msvc@4.29.1: + resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} + cpu: [x64] + os: [win32] + dev: true + optional: true + /@rollup/wasm-node@4.28.1: resolution: {integrity: sha512-t4ckEC09V3wbe0r6T4fGjq85lEbvGcGxn7QYYgjHyKNzZaQU5kFqr4FsavXYHRiVNYq8m+dRhdGjpfcC9UzzPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4802,18 +4946,18 @@ packages: resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} dev: true - /@verdaccio/auth@8.0.0-next-8.6: - resolution: {integrity: sha512-ep42p/32xx5954pIPlGCi0sntBDQd5aQ8rlgGJ9hIOD3L/idCCTbWbOSW/JwanJaePW3kQN8UMYj47T9/QN25A==} + /@verdaccio/auth@8.0.0-next-8.7: + resolution: {integrity: sha512-CSLBAsCJT1oOpJ4OWnVGmN6o/ZilDNa7Aa5+AU1LI2lbRblqgr4BVRn07GFqimJ//6+tPzl8BHgyiCbBhh1ZiA==} engines: {node: '>=18'} dependencies: - '@verdaccio/config': 8.0.0-next-8.6 - '@verdaccio/core': 8.0.0-next-8.6 + '@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.6 - debug: 4.3.7 + '@verdaccio/utils': 8.1.0-next-8.7 + debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.6 + verdaccio-htpasswd: 13.0.0-next-8.7 transitivePeerDependencies: - supports-color dev: true @@ -4826,13 +4970,13 @@ packages: http-status-codes: 2.2.0 dev: true - /@verdaccio/config@8.0.0-next-8.6: - resolution: {integrity: sha512-7X02UWPIlzdnwP1JhIiuUkROgt0i5RQkK5pr3wS0lVi/Nw5BmRbqCytFLERFdUTgUmrdWdr13g2T+m1Jh724nQ==} + /@verdaccio/config@8.0.0-next-8.7: + resolution: {integrity: sha512-pA0WCWvvWY6vPRav+X0EuFmuK6M08zIpRzTKkqSriCWk6JUCZ07TDnN054AS8TSSOy6EaWgHxnUw3nTd34Z4Sg==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.6 - '@verdaccio/utils': 8.1.0-next-8.6 - debug: 4.3.7 + '@verdaccio/core': 8.0.0-next-8.7 + '@verdaccio/utils': 8.1.0-next-8.7 + debug: 4.4.0(supports-color@10.0.0) js-yaml: 4.1.0 lodash: 4.17.21 minimatch: 7.4.6 @@ -4852,8 +4996,8 @@ packages: semver: 7.6.3 dev: true - /@verdaccio/core@8.0.0-next-8.6: - resolution: {integrity: sha512-eo5EEqREboxJjsR7WJ/+iWGX56KKMQrPLT8M6NfQfB9oy0x8D84nVo6id+sZhRwr+Nc3n3VKKhdj+jO6UZrzFQ==} + /@verdaccio/core@8.0.0-next-8.7: + resolution: {integrity: sha512-pf8M2Z5EI/5Zdhdcm3aadb9Q9jiDsIredPD3+cIoDum8x3di2AIYvQD7i5BEramfzZlLXVICmFAulU7nUY11qg==} engines: {node: '>=18'} dependencies: ajv: 8.17.1 @@ -4904,14 +5048,14 @@ packages: - supports-color dev: true - /@verdaccio/logger-commons@8.0.0-next-8.6: - resolution: {integrity: sha512-AyixYmAw0GeH0/pc68gz2G8IsC9c3vQLRYDm4WBzhO2Pto75n9oZ69YoKAOt8Ba/Xf4MoDt1LbAuOPAEJ4p2ag==} + /@verdaccio/logger-commons@8.0.0-next-8.7: + resolution: {integrity: sha512-sXNx57G1LVp81xF4qHer3AOcMEZ90W4FjxtYF0vmULcVg3ybdtStKAT/9ocZtVMvLWTPAauhqylfnXoRZYf32A==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.7 '@verdaccio/logger-prettify': 8.0.0-next-8.1 colorette: 2.0.20 - debug: 4.3.7 + debug: 4.4.0(supports-color@10.0.0) transitivePeerDependencies: - supports-color dev: true @@ -4927,26 +5071,26 @@ packages: sonic-boom: 3.8.1 dev: true - /@verdaccio/logger@8.0.0-next-8.6: - resolution: {integrity: sha512-JFff/UVVCgGIaw24oO+AyCldtOkI1D8zb+KcBS6I8PjaEb5t553EAADYD+XTT5lGJ49q2EogxfedlUwoaJCVpg==} + /@verdaccio/logger@8.0.0-next-8.7: + resolution: {integrity: sha512-5EMPdZhz2V08BP2rjhtN/Fz5KxCfPJBkYDitbk/eo+FCZ9nVdMCQE3WRbHEaXyJQcIso/LJ6RnL/zKN20E/rPg==} engines: {node: '>=18'} dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.6 - pino: 9.4.0 + '@verdaccio/logger-commons': 8.0.0-next-8.7 + pino: 9.5.0 transitivePeerDependencies: - supports-color dev: true - /@verdaccio/middleware@8.0.0-next-8.6: - resolution: {integrity: sha512-PP0FYn5fGRHaCjuVjT/r754PKORXA/cmhunxB370mwOCvjoPKBSDg6OhZKz7WTz2xTaBqL9xER826eu40SJrmg==} + /@verdaccio/middleware@8.0.0-next-8.7: + resolution: {integrity: sha512-Zad7KcdOsI1DUBt1TjQb08rIi/IFFaJKdPhj7M6oy5BX9l/4OM0TtbBueHFNS1+aU+t5eo8ue7ZHbqmjDY/6VQ==} engines: {node: '>=18'} dependencies: - '@verdaccio/config': 8.0.0-next-8.6 - '@verdaccio/core': 8.0.0-next-8.6 - '@verdaccio/url': 13.0.0-next-8.6 - '@verdaccio/utils': 8.1.0-next-8.6 - debug: 4.3.7 - express: 4.21.1 + '@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 + debug: 4.4.0(supports-color@10.0.0) + express: 4.21.2 express-rate-limit: 5.5.1 lodash: 4.17.21 lru-cache: 7.18.3 @@ -4975,14 +5119,14 @@ packages: engines: {node: '>=12', npm: '>=5'} dev: true - /@verdaccio/tarball@13.0.0-next-8.6: - resolution: {integrity: sha512-hTOb3kILyBYiErw4efWCQmUKtUpSiwKVMmINPINsV+RV1zHhjOu2bky7MP9hOIbpLqZRKL50S9ATXyvdHXUo/Q==} + /@verdaccio/tarball@13.0.0-next-8.7: + resolution: {integrity: sha512-EWRuEOLgb3UETxUsYg6+Mml6DDRiwQqKIEsE4Ys6y6rcH2vgW6XMnTt+s/v5pFI+zlbi6fxjOgQB1e6IJAwxVA==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.6 - '@verdaccio/url': 13.0.0-next-8.6 - '@verdaccio/utils': 8.1.0-next-8.6 - debug: 4.3.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 + debug: 4.4.0(supports-color@10.0.0) gunzip-maybe: 1.4.2 lodash: 4.17.21 tar-stream: 3.1.7 @@ -4990,16 +5134,16 @@ packages: - supports-color dev: true - /@verdaccio/ui-theme@8.0.0-next-8.6: - resolution: {integrity: sha512-nMuJpQjuLkNuL6QHNry8iSN5/oEBaj8mB07ArxKwLVULAfmQI3tJemsAzqi1SE0ay3+1e719RsG85J+NuM7GGA==} + /@verdaccio/ui-theme@8.0.0-next-8.7: + resolution: {integrity: sha512-+7f7XqqIU+TVCHjsP6lWzCdsD4sM7MEhn4cu3mLW1kJZ7eenWKEltoqixQnoXJzaBjCiz+yXW1WkjMyEFLNbpg==} dev: true - /@verdaccio/url@13.0.0-next-8.6: - resolution: {integrity: sha512-gMmXe7zTtFWzSx8SK0BVno9wKamiZG1V7mlWASSMpHtTuPQIe/J9gC20m4KUhEQrf1jn4XOG+kbEytyHyNRlKQ==} + /@verdaccio/url@13.0.0-next-8.7: + resolution: {integrity: sha512-biFvwH3zIXYicA+SXNGvjMAe8oIQ5VddsfbO0ZXWlFs0lIz8cgI7QYPeSiCkU2VKpGzZ8pEKgqkxFsfFkU5kGA==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.6 - debug: 4.3.7 + '@verdaccio/core': 8.0.0-next-8.7 + debug: 4.4.0(supports-color@10.0.0) lodash: 4.17.21 validator: 13.12.0 transitivePeerDependencies: @@ -5016,11 +5160,11 @@ packages: semver: 7.6.3 dev: true - /@verdaccio/utils@8.1.0-next-8.6: - resolution: {integrity: sha512-jaUWojSI6AhJhEsotUZNEpNSQoWTzg805Y3HGcrhEBqB5Ki2ixTRVaPUKPkxzkJ62eFsHEyUrnE01vaFHSYY3A==} + /@verdaccio/utils@8.1.0-next-8.7: + resolution: {integrity: sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==} engines: {node: '>=12'} dependencies: - '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.7 lodash: 4.17.21 minimatch: 7.4.6 semver: 7.6.3 @@ -5088,11 +5232,11 @@ packages: resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.28.1) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.29.1) '@web/dev-server-core': 0.7.4 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.28.1 + rollup: 4.29.1 whatwg-url: 14.1.0 transitivePeerDependencies: - bufferutil @@ -7886,45 +8030,6 @@ packages: resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} dev: true - /express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -10810,7 +10915,7 @@ packages: optional: true dependencies: '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) - '@rollup/plugin-json': 6.1.0(rollup@4.28.1) + '@rollup/plugin-json': 6.1.0(rollup@4.29.1) '@rollup/wasm-node': 4.28.1 ajv: 8.17.1 ansi-colors: 4.1.3 @@ -10833,7 +10938,7 @@ packages: tslib: 2.8.1 typescript: 5.7.2 optionalDependencies: - rollup: 4.28.1 + rollup: 4.29.1 dev: true /node-addon-api@6.1.0: @@ -11541,10 +11646,6 @@ packages: minipass: 7.1.2 dev: true - /path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - dev: true - /path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} dev: true @@ -11628,18 +11729,24 @@ packages: split2: 4.2.0 dev: true + /pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + dependencies: + split2: 4.2.0 + dev: true + /pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} dev: true - /pino@9.4.0: - resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} + /pino@9.5.0: + resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.2.0 + pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 process-warning: 4.0.0 quick-format-unescaped: 4.0.4 @@ -12443,7 +12550,7 @@ packages: spdx-expression-validate: 2.0.0 dev: true - /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.68)(rollup@4.28.1): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.68)(rollup@4.29.1): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12453,9 +12560,9 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.28.1) + '@rollup/pluginutils': 3.1.0(rollup@4.29.1) '@types/node': 18.19.68 - rollup: 4.28.1 + rollup: 4.29.1 source-map-resolve: 0.6.0 dev: true @@ -12488,6 +12595,35 @@ packages: fsevents: 2.3.3 dev: true + /rollup@4.29.1: + resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.29.1 + '@rollup/rollup-android-arm64': 4.29.1 + '@rollup/rollup-darwin-arm64': 4.29.1 + '@rollup/rollup-darwin-x64': 4.29.1 + '@rollup/rollup-freebsd-arm64': 4.29.1 + '@rollup/rollup-freebsd-x64': 4.29.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 + '@rollup/rollup-linux-arm-musleabihf': 4.29.1 + '@rollup/rollup-linux-arm64-gnu': 4.29.1 + '@rollup/rollup-linux-arm64-musl': 4.29.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 + '@rollup/rollup-linux-riscv64-gnu': 4.29.1 + '@rollup/rollup-linux-s390x-gnu': 4.29.1 + '@rollup/rollup-linux-x64-gnu': 4.29.1 + '@rollup/rollup-linux-x64-musl': 4.29.1 + '@rollup/rollup-win32-arm64-msvc': 4.29.1 + '@rollup/rollup-win32-ia32-msvc': 4.29.1 + '@rollup/rollup-win32-x64-msvc': 4.29.1 + fsevents: 2.3.3 + dev: true + /run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -14138,13 +14274,13 @@ packages: engines: {node: '>= 0.8'} dev: true - /verdaccio-audit@13.0.0-next-8.6: - resolution: {integrity: sha512-6qcYJ40spxNhybZ0WKDk4U6CCL8rzAIYnHfhm31VpWo6T9wroEACxg6+/FpPHav4ynb37oO0lulEp5whaX97HA==} + /verdaccio-audit@13.0.0-next-8.7: + resolution: {integrity: sha512-kd6YdrDztkP1/GDZT7Ue2u41iGPvM9y+5aaUbIBUPvTY/YVv57K6MaCMfn9C/I+ZL4R7XOTSxTtWvz3JK4QrNg==} engines: {node: '>=18'} dependencies: - '@verdaccio/config': 8.0.0-next-8.6 - '@verdaccio/core': 8.0.0-next-8.6 - express: 4.21.1 + '@verdaccio/config': 8.0.0-next-8.7 + '@verdaccio/core': 8.0.0-next-8.7 + express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.0.0) node-fetch: 2.6.7 transitivePeerDependencies: @@ -14159,40 +14295,40 @@ packages: '@verdaccio/commons-api': 10.2.0 dev: true - /verdaccio-htpasswd@13.0.0-next-8.6: - resolution: {integrity: sha512-dKU35EJQvUIwOmi5WgJqUWMkS1m1bQm4ABy+99UT5v3iuphUU7k8OgRuEz54BRihe1qI+QuO9b7hVuvUPDYNxQ==} + /verdaccio-htpasswd@13.0.0-next-8.7: + resolution: {integrity: sha512-znyFnwt59mLKTAu6eHJrfWP07iaHUlYiQN7QoBo8KMAOT1AecUYreBqs93oKHdIOzjTI8j6tQLg57DpeVS5vgg==} engines: {node: '>=18'} dependencies: - '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/core': 8.0.0-next-8.7 '@verdaccio/file-locking': 13.0.0-next-8.2 apache-md5: 1.1.8 bcryptjs: 2.4.3 core-js: 3.37.1 - debug: 4.3.7 + debug: 4.4.0(supports-color@10.0.0) http-errors: 2.0.0 unix-crypt-td-js: 1.1.4 transitivePeerDependencies: - supports-color dev: true - /verdaccio@6.0.4(typanion@3.14.0): - resolution: {integrity: sha512-E8t/1Dc7tUEtYruxDiVmQnta4wiOdefpVQn8/FsJ+/U2yT1oPZxiJR+WwbqM4k6KRbR/j39WK4Wb5d2/irQxHg==} + /verdaccio@6.0.5(typanion@3.14.0): + resolution: {integrity: sha512-hv+v4mtG/rcNidGUHXAtNuVySiPE3/PM+7dYye5jCDrhCUmRJYOtnvDe/Ym1ZE/twti39g6izVRxEkjnSp52gA==} engines: {node: '>=18'} hasBin: true dependencies: '@cypress/request': 3.0.7 - '@verdaccio/auth': 8.0.0-next-8.6 - '@verdaccio/config': 8.0.0-next-8.6 - '@verdaccio/core': 8.0.0-next-8.6 + '@verdaccio/auth': 8.0.0-next-8.7 + '@verdaccio/config': 8.0.0-next-8.7 + '@verdaccio/core': 8.0.0-next-8.7 '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.6 - '@verdaccio/middleware': 8.0.0-next-8.6 + '@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/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.6 - '@verdaccio/ui-theme': 8.0.0-next-8.6 - '@verdaccio/url': 13.0.0-next-8.6 + '@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 JSONStream: 1.3.5 async: 3.2.6 @@ -14215,8 +14351,8 @@ packages: pkginfo: 0.4.1 semver: 7.6.3 validator: 13.12.0 - verdaccio-audit: 13.0.0-next-8.6 - verdaccio-htpasswd: 13.0.0-next-8.6 + verdaccio-audit: 13.0.0-next-8.7 + verdaccio-htpasswd: 13.0.0-next-8.7 transitivePeerDependencies: - encoding - supports-color @@ -14276,7 +14412,7 @@ packages: esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 - rollup: 4.28.1 + rollup: 4.29.1 sass: 1.82.0 terser: 5.37.0 optionalDependencies: @@ -14327,7 +14463,7 @@ packages: esbuild: 0.24.0 less: 4.2.1 postcss: 8.4.49 - rollup: 4.28.1 + rollup: 4.29.1 sass: 1.83.0 terser: 5.37.0 optionalDependencies: @@ -14923,7 +15059,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.28.1)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/722eb514ccf42aaca1642c42ec2d1b70a632142e} id: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e name: '@angular/bazel' @@ -14948,11 +15084,11 @@ packages: '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.28.1) - '@rollup/plugin-node-resolve': 13.3.0(rollup@4.28.1) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.29.1) + '@rollup/plugin-node-resolve': 13.3.0(rollup@4.29.1) magic-string: 0.30.17 - rollup: 4.28.1 - rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.68)(rollup@4.28.1) + rollup: 4.29.1 + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.68)(rollup@4.29.1) terser: 5.37.0 tslib: 2.8.1 typescript: 5.7.2 diff --git a/yarn.lock b/yarn.lock index 3c0db4206515..23a9a1078c87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -343,8 +343,8 @@ __metadata: "@bazel/rollup": "npm:^5.8.1" "@bazel/runfiles": "npm:^5.8.1" "@discoveryjs/json-ext": "npm:0.6.3" - "@inquirer/confirm": "npm:5.1.0" - "@inquirer/prompts": "npm:7.2.0" + "@inquirer/confirm": "npm:5.1.1" + "@inquirer/prompts": "npm:7.2.1" "@listr2/prompt-adapter-inquirer": "npm:2.0.18" "@rollup/plugin-alias": "npm:^5.1.1" "@rollup/plugin-commonjs": "npm:^28.0.0" @@ -443,7 +443,7 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.28.1" + rollup: "npm:4.29.1" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" @@ -463,7 +463,7 @@ __metadata: typescript: "npm:5.7.2" undici: "npm:7.2.0" unenv: "npm:^1.10.0" - verdaccio: "npm:6.0.4" + verdaccio: "npm:6.0.5" verdaccio-auth-memory: "npm:^10.0.0" vite: "npm:6.0.5" watchpack: "npm:2.4.2" @@ -2495,22 +2495,22 @@ __metadata: languageName: node linkType: hard -"@inquirer/checkbox@npm:^4.0.3": - version: 4.0.3 - resolution: "@inquirer/checkbox@npm:4.0.3" +"@inquirer/checkbox@npm:^4.0.4": + version: 4.0.4 + resolution: "@inquirer/checkbox@npm:4.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/figures": "npm:^1.0.8" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/figures": "npm:^1.0.9" + "@inquirer/type": "npm:^3.0.2" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/fe4084e0abac1e7c9efa88cb57e54213d49e4158c72a1c4f3bb45b6ea535d7b1177ae9defc8f62203c53c88a6fe2c30b30a826287f89e59d6e06ef50a2785176 + checksum: 10c0/b88a09769901b4ccad238af7637d19dab956a2f625f9a58756e98a9a7efaeb9ddfa9864c34f964e360812bfc71275d80d063d69b1c57731d65709016a7641317 languageName: node linkType: hard -"@inquirer/confirm@npm:5.1.0, @inquirer/confirm@npm:^5.1.0": +"@inquirer/confirm@npm:5.1.0": version: 5.1.0 resolution: "@inquirer/confirm@npm:5.1.0" dependencies: @@ -2522,6 +2522,18 @@ __metadata: languageName: node linkType: hard +"@inquirer/confirm@npm:5.1.1, @inquirer/confirm@npm:^5.1.1": + version: 5.1.1 + resolution: "@inquirer/confirm@npm:5.1.1" + dependencies: + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/acca658c2b0a4546560d4c22e405aa7a94644a1126fd0ca895c7d2d11a3a5c836e85ffb45b7b2f9c955c5c0cc44975dbefa17d66e82de01b545e73d6f8de5c80 + languageName: node + linkType: hard + "@inquirer/core@npm:^10.1.1": version: 10.1.1 resolution: "@inquirer/core@npm:10.1.1" @@ -2539,29 +2551,46 @@ __metadata: languageName: node linkType: hard -"@inquirer/editor@npm:^4.2.0": - version: 4.2.0 - resolution: "@inquirer/editor@npm:4.2.0" +"@inquirer/core@npm:^10.1.2": + version: 10.1.2 + resolution: "@inquirer/core@npm:10.1.2" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/figures": "npm:^1.0.9" + "@inquirer/type": "npm:^3.0.2" + ansi-escapes: "npm:^4.3.2" + cli-width: "npm:^4.1.0" + mute-stream: "npm:^2.0.0" + signal-exit: "npm:^4.1.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + yoctocolors-cjs: "npm:^2.1.2" + checksum: 10c0/95eeb5955a85026ae947d52d5c9b3c116954567fd7b989fad76e8908aca836eb63a3ce463e12690a05fb467d60dec732f831ba19493bc80cb0ab3a55990567a5 + languageName: node + linkType: hard + +"@inquirer/editor@npm:^4.2.1": + version: 4.2.1 + resolution: "@inquirer/editor@npm:4.2.1" + dependencies: + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" external-editor: "npm:^3.1.0" peerDependencies: "@types/node": ">=18" - checksum: 10c0/ed56c675b9ffdc4bb62e53ab0c64e435d64fcbfd157b04db0ee5f9f31f88ad9d2ecd6fee45a15c09ab2e794db231607198d4d0772712311392f3e91d4363efa1 + checksum: 10c0/b8a85c139537ecebe6120588b2e9faa3ca27beeeed593187264e9c2b62df652e02cd661bd9cb8815478416a65ff8ceaf0a6607c852ec5f1a1c59327ecae831e8 languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.3": - version: 4.0.3 - resolution: "@inquirer/expand@npm:4.0.3" +"@inquirer/expand@npm:^4.0.4": + version: 4.0.4 + resolution: "@inquirer/expand@npm:4.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/37fb3fb2a483ec6873b9dffc36f1a9316d75a490c9c30edfb877e0118316e093289a646686a569b5fc4bab688506c1df418f8ecb5d8fcace127c745c4f9bc945 + checksum: 10c0/364802c6ce4691b663333d73cfdd22b16925055b7d355137023f781cc5b16ebd8f0d24f79785e5fd9c17f850369d0e39c4e031d69ffaab885fcdff62886e78bf languageName: node linkType: hard @@ -2572,102 +2601,109 @@ __metadata: languageName: node linkType: hard -"@inquirer/input@npm:^4.1.0": - version: 4.1.0 - resolution: "@inquirer/input@npm:4.1.0" +"@inquirer/figures@npm:^1.0.9": + version: 1.0.9 + resolution: "@inquirer/figures@npm:1.0.9" + checksum: 10c0/21e1a7c902b2b77f126617b501e0fe0d703fae680a9df472afdae18a3e079756aee85690cef595a14e91d18630118f4a3893aab6832b9232fefc6ab31c804a68 + languageName: node + linkType: hard + +"@inquirer/input@npm:^4.1.1": + version: 4.1.1 + resolution: "@inquirer/input@npm:4.1.1" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/1dbbdb4edc6ed17970c18e049d59c536068ca35de848093230fc547e8202b2fc632fcdcc6f534887e9b4ed114c7b3f4501a05145d2efa694b3a2f31b410ba503 + checksum: 10c0/8e574f4de2d5c28cb71a24ac338df3d89762fada1e6f71b2f34ee6e3861ec571aee0b2ee77b88059cbebc7cbcfbfc0492e663ae87ab61b4e5c5538a6997ad17e languageName: node linkType: hard -"@inquirer/number@npm:^3.0.3": - version: 3.0.3 - resolution: "@inquirer/number@npm:3.0.3" +"@inquirer/number@npm:^3.0.4": + version: 3.0.4 + resolution: "@inquirer/number@npm:3.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/443d6ee1abd9d6970a43e91232c4df1b70f96db5b7f0f8a0594d2af232ad16d17c77c52c74c69c7dbb8af3d64df19462fc9fb1990cacfeae64d9ac4f39a10527 + checksum: 10c0/76c1e13af59620f8105efdadf30061caa7448c74c1c2de9ee04dbd78f831f09d9ca5463a2433071c131d0a0a7d12418b180e6a24653d2b34f4dbf8add2b60dfa languageName: node linkType: hard -"@inquirer/password@npm:^4.0.3": - version: 4.0.3 - resolution: "@inquirer/password@npm:4.0.3" +"@inquirer/password@npm:^4.0.4": + version: 4.0.4 + resolution: "@inquirer/password@npm:4.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" ansi-escapes: "npm:^4.3.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/5ebd6e5d1d5bc5898873111035fee023ee2cdd55c3860526db4c732450c4795ee5b4e2fd9826616391afc9375ecdffcbc1e8054bb61fbe87e94df4849c2e5e6c + checksum: 10c0/ab7b28b7e424fa56b6c0da49231ac59a9a348fcd6492add27b7aac2f018a8ef3fafb054368efe49476d60b44a723188513328bcda66c8ebe59cb57e2d95eb89b languageName: node linkType: hard -"@inquirer/prompts@npm:7.2.0": - version: 7.2.0 - resolution: "@inquirer/prompts@npm:7.2.0" - dependencies: - "@inquirer/checkbox": "npm:^4.0.3" - "@inquirer/confirm": "npm:^5.1.0" - "@inquirer/editor": "npm:^4.2.0" - "@inquirer/expand": "npm:^4.0.3" - "@inquirer/input": "npm:^4.1.0" - "@inquirer/number": "npm:^3.0.3" - "@inquirer/password": "npm:^4.0.3" - "@inquirer/rawlist": "npm:^4.0.3" - "@inquirer/search": "npm:^3.0.3" - "@inquirer/select": "npm:^4.0.3" +"@inquirer/prompts@npm:7.2.1": + version: 7.2.1 + resolution: "@inquirer/prompts@npm:7.2.1" + dependencies: + "@inquirer/checkbox": "npm:^4.0.4" + "@inquirer/confirm": "npm:^5.1.1" + "@inquirer/editor": "npm:^4.2.1" + "@inquirer/expand": "npm:^4.0.4" + "@inquirer/input": "npm:^4.1.1" + "@inquirer/number": "npm:^3.0.4" + "@inquirer/password": "npm:^4.0.4" + "@inquirer/rawlist": "npm:^4.0.4" + "@inquirer/search": "npm:^3.0.4" + "@inquirer/select": "npm:^4.0.4" peerDependencies: "@types/node": ">=18" - checksum: 10c0/df400acd7a02dabe95702ceb7fbc467dc38550263692e07c6f97ba6b0d0aa89d93c51db69688f5f6775d02c2611e3db1936ab5df103c1082a671398719396347 + checksum: 10c0/a548f560f0c5edf941ecf536ad405b73935f6892699e41b221ffdab9dcaf2396be57d74cbd5d833edaeae31aa787f6fe5144b18468f2bbe8d19e591c0dd06743 languageName: node linkType: hard -"@inquirer/rawlist@npm:^4.0.3": - version: 4.0.3 - resolution: "@inquirer/rawlist@npm:4.0.3" +"@inquirer/rawlist@npm:^4.0.4": + version: 4.0.4 + resolution: "@inquirer/rawlist@npm:4.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/type": "npm:^3.0.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/e2cfb79a13132b3480464a5b6c75a9823f8449ca7ecb50a3c5d8ec040bb0c29b3fc23e3ad2a7cf393e00ef9c2f1806b3511d02ba94cfd6586db72962dd8c6739 + checksum: 10c0/92eff5e59508bac677eda479b3324dbb7cb512540ca5b76bd1ad309316a6f68d21ce98e6485ba4deb503764dfa6eb2742bdd64e23391bd8f8e06073e6d527510 languageName: node linkType: hard -"@inquirer/search@npm:^3.0.3": - version: 3.0.3 - resolution: "@inquirer/search@npm:3.0.3" +"@inquirer/search@npm:^3.0.4": + version: 3.0.4 + resolution: "@inquirer/search@npm:3.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/figures": "npm:^1.0.8" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/figures": "npm:^1.0.9" + "@inquirer/type": "npm:^3.0.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/080a2bf28b4c9fa7f9d07096c70c47868a1b57acfb31bb3eff16335bb2e71eb5b9cd22d091e56292d887a720f3ffa7ce79843298b238db567694b0d120b11706 + checksum: 10c0/15a91edf12f966bc269838fd4b037aed4b5164b7bf2eb814cab6ddeb18a9937746bbd44cda6dfb59408e5d9ae41286952150f2e134af08b2892ceaacac2591a7 languageName: node linkType: hard -"@inquirer/select@npm:^4.0.3": - version: 4.0.3 - resolution: "@inquirer/select@npm:4.0.3" +"@inquirer/select@npm:^4.0.4": + version: 4.0.4 + resolution: "@inquirer/select@npm:4.0.4" dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/figures": "npm:^1.0.8" - "@inquirer/type": "npm:^3.0.1" + "@inquirer/core": "npm:^10.1.2" + "@inquirer/figures": "npm:^1.0.9" + "@inquirer/type": "npm:^3.0.2" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" peerDependencies: "@types/node": ">=18" - checksum: 10c0/7c8d7b2e4aed99e2bb826ba11717190b80aaf2c90999203b0b1bae26104cc03613bdd6de58440a6b3a254c93d2882de103be9972bb71b3d85ce9f62da21deac7 + checksum: 10c0/c77ef1292483e4f2f3239b87c50177608e0a62895a37598ba37d48e1a3e544459d31687e6b8f2383b263a42a9f437b8a056da2f170352fc67541a40ff9282265 languageName: node linkType: hard @@ -2689,6 +2725,15 @@ __metadata: languageName: node linkType: hard +"@inquirer/type@npm:^3.0.2": + version: 3.0.2 + resolution: "@inquirer/type@npm:3.0.2" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/fe348db2977fff92cad0ade05b36ec40714326fccd4a174be31663f8923729b4276f1736d892a449627d7fb03235ff44e8aac5aa72b09036d993593b813ef313 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3886,6 +3931,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.29.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-android-arm64@npm:4.28.1" @@ -3893,6 +3945,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-android-arm64@npm:4.29.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" @@ -3900,6 +3959,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.29.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" @@ -3907,6 +3973,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.29.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" @@ -3914,6 +3987,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.29.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" @@ -3921,6 +4001,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.29.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" @@ -3928,6 +4015,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.29.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" @@ -3935,6 +4029,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.29.1" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" @@ -3942,6 +4043,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.29.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" @@ -3949,6 +4057,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.29.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" @@ -3956,6 +4071,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-loongarch64-gnu@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.29.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" @@ -3963,6 +4085,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.29.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" @@ -3970,6 +4099,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.29.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" @@ -3977,6 +4113,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.29.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" @@ -3984,6 +4127,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.29.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" @@ -3991,6 +4141,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.29.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" @@ -3998,6 +4155,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.29.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" @@ -4005,6 +4169,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.29.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" @@ -4012,6 +4183,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.29.1": + version: 4.29.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.29.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/wasm-node@npm:^4.24.0": version: 4.28.1 resolution: "@rollup/wasm-node@npm:4.28.1" @@ -5245,19 +5423,19 @@ __metadata: languageName: node linkType: hard -"@verdaccio/auth@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/auth@npm:8.0.0-next-8.6" +"@verdaccio/auth@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/auth@npm:8.0.0-next-8.7" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.6" - "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/config": "npm:8.0.0-next-8.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" "@verdaccio/loaders": "npm:8.0.0-next-8.4" "@verdaccio/signature": "npm:8.0.0-next-8.1" - "@verdaccio/utils": "npm:8.1.0-next-8.6" - debug: "npm:4.3.7" + "@verdaccio/utils": "npm:8.1.0-next-8.7" + debug: "npm:4.4.0" lodash: "npm:4.17.21" - verdaccio-htpasswd: "npm:13.0.0-next-8.6" - checksum: 10c0/819357c13c577dc0cacc11b037a80489b3ccd575e9b425ff208a0f809df3c3c74447d3bfd0a7e40328e8b66044963edb3fb299c84c50483c7fa40fe48aa77d48 + verdaccio-htpasswd: "npm:13.0.0-next-8.7" + checksum: 10c0/c4560d2136a98c89588e540241bea6bac33785365346a123fc1487f4dccc3e8658580e8e73639b83d99e61308be1445734688aebc3145e93987346a85a265204 languageName: node linkType: hard @@ -5271,17 +5449,17 @@ __metadata: languageName: node linkType: hard -"@verdaccio/config@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/config@npm:8.0.0-next-8.6" +"@verdaccio/config@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/config@npm:8.0.0-next-8.7" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.6" - "@verdaccio/utils": "npm:8.1.0-next-8.6" - debug: "npm:4.3.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" + "@verdaccio/utils": "npm:8.1.0-next-8.7" + debug: "npm:4.4.0" js-yaml: "npm:4.1.0" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" - checksum: 10c0/1fafad56e33160acc059a0da08f67cfc7a5669f11678dc72bfc9dc2f360f5b51e7d54d49526d34ab7e3fed294b40ae670b362bd69451f4012a8f04ed56bbcea8 + checksum: 10c0/85011fdac28ddfcd85c408686bd1d7f7701371bd51cb31e2ba3e5ea0bc4057af619c92b14756e4e95b66e0bd4b205ca18f0044ffd8f246d679f78f8c74d44ef5 languageName: node linkType: hard @@ -5299,9 +5477,9 @@ __metadata: languageName: node linkType: hard -"@verdaccio/core@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/core@npm:8.0.0-next-8.6" +"@verdaccio/core@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/core@npm:8.0.0-next-8.7" dependencies: ajv: "npm:8.17.1" core-js: "npm:3.37.1" @@ -5309,7 +5487,7 @@ __metadata: http-status-codes: "npm:2.3.0" process-warning: "npm:1.0.0" semver: "npm:7.6.3" - checksum: 10c0/5787dabadf46969183cb9905735c5a46a40169c0a6b13923ade706ffb43fdc21cfd160d19ad15b749862a121a656381ece0d09a26af87a9713ce7a610b4409d0 + checksum: 10c0/23b7f98145518935aa3f1c2cc6e1261f5f0abd82e05d7bc55c37a6af10efef43fa863f93e11570c160fc5ecb31f5cce6b3d78069e63f486fef352e0c8bee20f0 languageName: node linkType: hard @@ -5357,15 +5535,15 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger-commons@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.6" +"@verdaccio/logger-commons@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/logger-commons@npm:8.0.0-next-8.7" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.7" "@verdaccio/logger-prettify": "npm:8.0.0-next-8.1" colorette: "npm:2.0.20" - debug: "npm:4.3.7" - checksum: 10c0/8061261030c60d0561377ac596ff9518e27b6029c48bec6a38e30fb0f212791e63fde77313148b4163aa897e8fbb83e6f2f2edb4e4c659afc86408b9fe6a0551 + debug: "npm:4.4.0" + checksum: 10c0/6731abbbe80e4f812c4546b49c8908d5f7adf3035a3291526e8bb533a1cb51a82e4af3c900c2b98f630eb4b036305d771bb5d26a01456279f579c5c246156481 languageName: node linkType: hard @@ -5382,31 +5560,31 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/logger@npm:8.0.0-next-8.6" +"@verdaccio/logger@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/logger@npm:8.0.0-next-8.7" dependencies: - "@verdaccio/logger-commons": "npm:8.0.0-next-8.6" - pino: "npm:9.4.0" - checksum: 10c0/9dbdf9f1a816d10f5cb1ff07c19780dff48f96389a5957346ce5bd9a9b2d79315fb2e0bc2fa728cacc378f8c2103924387aaae4cb1a7a2987de392292e1125d4 + "@verdaccio/logger-commons": "npm:8.0.0-next-8.7" + pino: "npm:9.5.0" + checksum: 10c0/e0704c7f332397cce4b4f0f27cc48dee4422b331397ac96e7cc1a48f31e22d1d2684e6284ffedfb8d227cbc0f5499981cf534ed3be81b605ba2eb83958c4395e languageName: node linkType: hard -"@verdaccio/middleware@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/middleware@npm:8.0.0-next-8.6" +"@verdaccio/middleware@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/middleware@npm:8.0.0-next-8.7" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.6" - "@verdaccio/core": "npm:8.0.0-next-8.6" - "@verdaccio/url": "npm:13.0.0-next-8.6" - "@verdaccio/utils": "npm:8.1.0-next-8.6" - debug: "npm:4.3.7" - express: "npm:4.21.1" + "@verdaccio/config": "npm:8.0.0-next-8.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" + "@verdaccio/url": "npm:13.0.0-next-8.7" + "@verdaccio/utils": "npm:8.1.0-next-8.7" + debug: "npm:4.4.0" + express: "npm:4.21.2" express-rate-limit: "npm:5.5.1" lodash: "npm:4.17.21" lru-cache: "npm:7.18.3" mime: "npm:2.6.0" - checksum: 10c0/ab656dcbd76fbcac894399716de7346fedf3d6b22f10c242ee7a4e17ed31bcb4323fc0e1e9d2ce31e2c78fbf20dc33c0c89f15dba6c5441973cbcab31a46b7d4 + checksum: 10c0/f5bc2d1dec02aa92730bdb66ec5436a42a90c5cd07bfb4be5faed64134dd6455f9f90bd4b4bf805d2b712954556a0c4ab863e4addf028612841c9ca4529712e2 languageName: node linkType: hard @@ -5434,37 +5612,37 @@ __metadata: languageName: node linkType: hard -"@verdaccio/tarball@npm:13.0.0-next-8.6": - version: 13.0.0-next-8.6 - resolution: "@verdaccio/tarball@npm:13.0.0-next-8.6" +"@verdaccio/tarball@npm:13.0.0-next-8.7": + version: 13.0.0-next-8.7 + resolution: "@verdaccio/tarball@npm:13.0.0-next-8.7" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.6" - "@verdaccio/url": "npm:13.0.0-next-8.6" - "@verdaccio/utils": "npm:8.1.0-next-8.6" - debug: "npm:4.3.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" + "@verdaccio/url": "npm:13.0.0-next-8.7" + "@verdaccio/utils": "npm:8.1.0-next-8.7" + debug: "npm:4.4.0" gunzip-maybe: "npm:^1.4.2" lodash: "npm:4.17.21" tar-stream: "npm:^3.1.7" - checksum: 10c0/430ff74bf1fe40000347a03174258248d4d2026df4b11b08ad3897193f11e48e39ec36643dff6f20b110906418e903a93251c4df712721eed3d000f65ee52689 + checksum: 10c0/652af20829607de9a892b3b698ec09f5297c833e50f20dad1ddeab0c5de6e973858620886516bb1fc648afa01ff7222dd67e4a01eb13919e1e4d548f3c526b76 languageName: node linkType: hard -"@verdaccio/ui-theme@npm:8.0.0-next-8.6": - version: 8.0.0-next-8.6 - resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.6" - checksum: 10c0/bf6470aa26c123c7f9af56c6896258ce4f63d5e009a594c7d337a680eb5c23aafe9ebb7769c1f16bd909dbaf20e48ee30406a39d747058117745f2e75bffab04 +"@verdaccio/ui-theme@npm:8.0.0-next-8.7": + version: 8.0.0-next-8.7 + resolution: "@verdaccio/ui-theme@npm:8.0.0-next-8.7" + checksum: 10c0/07b6c0542b48b621c75d55b712c5dd685dfc26465c90dc36a24787567246fb008e961792c75a0f751a691a67bff418fa0764ffa7e3bd98f5a4444ee6521ca9e3 languageName: node linkType: hard -"@verdaccio/url@npm:13.0.0-next-8.6": - version: 13.0.0-next-8.6 - resolution: "@verdaccio/url@npm:13.0.0-next-8.6" +"@verdaccio/url@npm:13.0.0-next-8.7": + version: 13.0.0-next-8.7 + resolution: "@verdaccio/url@npm:13.0.0-next-8.7" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.6" - debug: "npm:4.3.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" + debug: "npm:4.4.0" lodash: "npm:4.17.21" validator: "npm:13.12.0" - checksum: 10c0/ff6de51d399d859d4630e7f4f4b142851e0a4cb4ba1ec1cbb010880820d7b88cb7953c2a290f28be2c78a9574e12033dda2be9eebf98521d13db645c1c93fa6d + checksum: 10c0/7e86d03cfe29e7950219cb8c7a68fbef5b7d4f42956704203bae4390dd3abcf3aa47e234f58ea3af41c1505b0390e215524671c1dc6734d0aa04da5a84064eee languageName: node linkType: hard @@ -5480,15 +5658,15 @@ __metadata: languageName: node linkType: hard -"@verdaccio/utils@npm:8.1.0-next-8.6": - version: 8.1.0-next-8.6 - resolution: "@verdaccio/utils@npm:8.1.0-next-8.6" +"@verdaccio/utils@npm:8.1.0-next-8.7": + version: 8.1.0-next-8.7 + resolution: "@verdaccio/utils@npm:8.1.0-next-8.7" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.7" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" semver: "npm:7.6.3" - checksum: 10c0/e9998620736d9e9dadf025e9f2d700e13ad2454b2a9e42f427d26b78c64eac10b698324386e372294f6e241925f5b11a6905dcd4b2059e631b86a81bdbbf2c1c + checksum: 10c0/6501fa5d2300a13e7f69f2b1653d7684d63aa72a40df7aa15ffc233408668f491814f28665dd1597098c75e7cc4fea7188aeec848116096e87d66fd8bd289e7c languageName: node linkType: hard @@ -9284,45 +9462,6 @@ __metadata: languageName: node linkType: hard -"express@npm:4.21.1": - version: 4.21.1 - resolution: "express@npm:4.21.1" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.7.1" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.10" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.13.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 10c0/0c287867e5f6129d3def1edd9b63103a53c40d4dc8628839d4b6827e35eb8f0de5a4656f9d85f4457eba584f9871ebb2ad26c750b36bd75d9bbb8bcebdc4892c - languageName: node - linkType: hard - "express@npm:4.21.2, express@npm:^4.21.2": version: 4.21.2 resolution: "express@npm:4.21.2" @@ -14319,13 +14458,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.10": - version: 0.1.10 - resolution: "path-to-regexp@npm:0.1.10" - checksum: 10c0/34196775b9113ca6df88e94c8d83ba82c0e1a2063dd33bfe2803a980da8d49b91db8104f49d5191b44ea780d46b8670ce2b7f4a5e349b0c48c6779b653f1afe4 - languageName: node - linkType: hard - "path-to-regexp@npm:0.1.12": version: 0.1.12 resolution: "path-to-regexp@npm:0.1.12" @@ -14437,7 +14569,7 @@ __metadata: languageName: node linkType: hard -"pino-abstract-transport@npm:1.2.0, pino-abstract-transport@npm:^1.2.0": +"pino-abstract-transport@npm:1.2.0": version: 1.2.0 resolution: "pino-abstract-transport@npm:1.2.0" dependencies: @@ -14447,6 +14579,15 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:^2.0.0": + version: 2.0.0 + resolution: "pino-abstract-transport@npm:2.0.0" + dependencies: + split2: "npm:^4.0.0" + checksum: 10c0/02c05b8f2ffce0d7c774c8e588f61e8b77de8ccb5f8125afd4a7325c9ea0e6af7fb78168999657712ae843e4462bb70ac550dfd6284f930ee57f17f486f25a9f + languageName: node + linkType: hard + "pino-std-serializers@npm:^7.0.0": version: 7.0.0 resolution: "pino-std-serializers@npm:7.0.0" @@ -14454,14 +14595,14 @@ __metadata: languageName: node linkType: hard -"pino@npm:9.4.0": - version: 9.4.0 - resolution: "pino@npm:9.4.0" +"pino@npm:9.5.0": + version: 9.5.0 + resolution: "pino@npm:9.5.0" dependencies: atomic-sleep: "npm:^1.0.0" fast-redact: "npm:^3.1.1" on-exit-leak-free: "npm:^2.1.0" - pino-abstract-transport: "npm:^1.2.0" + pino-abstract-transport: "npm:^2.0.0" pino-std-serializers: "npm:^7.0.0" process-warning: "npm:^4.0.0" quick-format-unescaped: "npm:^4.0.3" @@ -14471,7 +14612,7 @@ __metadata: thread-stream: "npm:^3.0.0" bin: pino: bin.js - checksum: 10c0/12a3d74968964d92b18ca7d6095a3c5b86478dc22264a37486d64e102085ed08820fcbe75e640acc3542fdf2937a34e5050b624f98e6ac62dd10f5e1328058a2 + checksum: 10c0/b06590c5f4da43df59905af1aac344432b43154c4c1569ebea168e7ae7fd0a4181ccabb769a6568cf3e781e1d1b9df13d65b3603e25ebb05539bcb02ea04215e languageName: node linkType: hard @@ -15627,6 +15768,78 @@ __metadata: languageName: node linkType: hard +"rollup@npm:4.29.1": + version: 4.29.1 + resolution: "rollup@npm:4.29.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.29.1" + "@rollup/rollup-android-arm64": "npm:4.29.1" + "@rollup/rollup-darwin-arm64": "npm:4.29.1" + "@rollup/rollup-darwin-x64": "npm:4.29.1" + "@rollup/rollup-freebsd-arm64": "npm:4.29.1" + "@rollup/rollup-freebsd-x64": "npm:4.29.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.29.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.29.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.29.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.29.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.29.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.29.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.29.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.29.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.29.1" + "@rollup/rollup-linux-x64-musl": "npm:4.29.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.29.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.29.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.29.1" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/fcd0321df78fdc74b36858e92c4b73ebf5aa8f0b9cf7c446f008e0dc3c5c4ed855d662dc44e5a09c7794bbe91017b4dd7be88b619c239f0494f9f0fbfa67c557 + languageName: node + linkType: hard + "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -17830,16 +18043,16 @@ __metadata: languageName: node linkType: hard -"verdaccio-audit@npm:13.0.0-next-8.6": - version: 13.0.0-next-8.6 - resolution: "verdaccio-audit@npm:13.0.0-next-8.6" +"verdaccio-audit@npm:13.0.0-next-8.7": + version: 13.0.0-next-8.7 + resolution: "verdaccio-audit@npm:13.0.0-next-8.7" dependencies: - "@verdaccio/config": "npm:8.0.0-next-8.6" - "@verdaccio/core": "npm:8.0.0-next-8.6" - express: "npm:4.21.1" + "@verdaccio/config": "npm:8.0.0-next-8.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" + express: "npm:4.21.2" https-proxy-agent: "npm:5.0.1" node-fetch: "npm:cjs" - checksum: 10c0/b3e4526348e78f1f06535d3155ac2b116543943fa45b34652db2f3086c53285f8335ac8e4102691da01eff71a9cd265a080eb05711139bb0b377a0d6ff3783d4 + checksum: 10c0/a1dee87b217b8c13f32f9946956574cfcfab1c24fd91d7e37914d436b30915cfe5fd036285b52252b2d6d2da4a9508b9dcc2443336f120a9709baa78a17240f1 languageName: node linkType: hard @@ -17852,39 +18065,39 @@ __metadata: languageName: node linkType: hard -"verdaccio-htpasswd@npm:13.0.0-next-8.6": - version: 13.0.0-next-8.6 - resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.6" +"verdaccio-htpasswd@npm:13.0.0-next-8.7": + version: 13.0.0-next-8.7 + resolution: "verdaccio-htpasswd@npm:13.0.0-next-8.7" dependencies: - "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/core": "npm:8.0.0-next-8.7" "@verdaccio/file-locking": "npm:13.0.0-next-8.2" apache-md5: "npm:1.1.8" bcryptjs: "npm:2.4.3" core-js: "npm:3.37.1" - debug: "npm:4.3.7" + debug: "npm:4.4.0" http-errors: "npm:2.0.0" unix-crypt-td-js: "npm:1.1.4" - checksum: 10c0/f80579f967870da6271c5706fffab25dcf30557c43921aaa942a44764e07f9166331ad59eac0d83f106d011752c4de2a42610c4081b195142cc4e4dcbacf78dd + checksum: 10c0/3d5e6fc6f2e72c2aa6f39bad39c037bb975a1d7d461a3215542698ba1a03bdd5d42f84d378e31e9be4b04ff6719bdabf39312806b29fd697fa9e8e45c7fa7456 languageName: node linkType: hard -"verdaccio@npm:6.0.4": - version: 6.0.4 - resolution: "verdaccio@npm:6.0.4" +"verdaccio@npm:6.0.5": + version: 6.0.5 + resolution: "verdaccio@npm:6.0.5" dependencies: "@cypress/request": "npm:3.0.7" - "@verdaccio/auth": "npm:8.0.0-next-8.6" - "@verdaccio/config": "npm:8.0.0-next-8.6" - "@verdaccio/core": "npm:8.0.0-next-8.6" + "@verdaccio/auth": "npm:8.0.0-next-8.7" + "@verdaccio/config": "npm:8.0.0-next-8.7" + "@verdaccio/core": "npm:8.0.0-next-8.7" "@verdaccio/local-storage-legacy": "npm:11.0.2" - "@verdaccio/logger": "npm:8.0.0-next-8.6" - "@verdaccio/middleware": "npm:8.0.0-next-8.6" + "@verdaccio/logger": "npm:8.0.0-next-8.7" + "@verdaccio/middleware": "npm:8.0.0-next-8.7" "@verdaccio/search-indexer": "npm:8.0.0-next-8.2" "@verdaccio/signature": "npm:8.0.0-next-8.1" "@verdaccio/streams": "npm:10.2.1" - "@verdaccio/tarball": "npm:13.0.0-next-8.6" - "@verdaccio/ui-theme": "npm:8.0.0-next-8.6" - "@verdaccio/url": "npm:13.0.0-next-8.6" + "@verdaccio/tarball": "npm:13.0.0-next-8.7" + "@verdaccio/ui-theme": "npm:8.0.0-next-8.7" + "@verdaccio/url": "npm:13.0.0-next-8.7" "@verdaccio/utils": "npm:7.0.1-next-8.1" JSONStream: "npm:1.3.5" async: "npm:3.2.6" @@ -17907,11 +18120,11 @@ __metadata: pkginfo: "npm:0.4.1" semver: "npm:7.6.3" validator: "npm:13.12.0" - verdaccio-audit: "npm:13.0.0-next-8.6" - verdaccio-htpasswd: "npm:13.0.0-next-8.6" + verdaccio-audit: "npm:13.0.0-next-8.7" + verdaccio-htpasswd: "npm:13.0.0-next-8.7" bin: verdaccio: bin/verdaccio - checksum: 10c0/64114626a5d4f90d1b0c1c47f96148acbe67c0a2c08247822d92d53ce4549a60c2ed980a261ccbbb1ed2df32736c316442dcd0af76ba15f12c8d837b0e430c9c + checksum: 10c0/216ba1ddbde83febff6470744761f628140f0499f73e49f8e1e2f8e15cf6254cf70d8708b258710ffb94e98dff85f35d3dac59a707a9932f2f2707c7558da87f languageName: node linkType: hard From adae1e8ea569825cedcda2aef74e1c5ac25b4fd2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Sat, 21 Dec 2024 09:15:16 -0500 Subject: [PATCH 0188/2162] ci: ensure passing build before rest of PR jobs --- .github/workflows/pr.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ee06763ec16f..2d048b3fe523 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -87,6 +87,7 @@ jobs: retention-days: 14 test: + needs: build runs-on: ubuntu-latest steps: - name: Initialize environment @@ -103,6 +104,7 @@ jobs: ASPECT_RULES_JS_FROZEN_PNPM_LOCK: '1' e2e: + needs: build strategy: fail-fast: false matrix: @@ -124,6 +126,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-windows-subset: + needs: build runs-on: windows-latest steps: # Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968. @@ -141,6 +144,7 @@ jobs: run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" e2e-package-managers: + needs: build strategy: fail-fast: false matrix: @@ -162,7 +166,7 @@ jobs: run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-snapshots: - needs: analyze + needs: [analyze, build] if: needs.analyze.outputs.snapshots == 'true' strategy: fail-fast: false From 2888673ca219b1c0ebac55b32f0d940bd95825fb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 09:27:44 -0500 Subject: [PATCH 0189/2162] build: migrate modules/testing to ts_project The `modules/testing/builder` target used for builder integration testing has been migrated to the `rules_js` ts_project rule. --- modules/testing/builder/BUILD.bazel | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/testing/builder/BUILD.bazel b/modules/testing/builder/BUILD.bazel index bcc6d347cbec..1e0cbcbf33cb 100644 --- a/modules/testing/builder/BUILD.bazel +++ b/modules/testing/builder/BUILD.bazel @@ -1,9 +1,9 @@ load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "builder", testonly = True, srcs = glob( @@ -16,16 +16,16 @@ ts_library( ), data = glob(["projects/**/*"]), deps = [ - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "@npm//rxjs", + "//:root_modules/rxjs", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) -ts_library( +ts_project( name = "unit_test_lib", testonly = True, srcs = glob( @@ -34,8 +34,8 @@ ts_library( ], ), deps = [ - ":builder", - "//packages/angular_devkit/architect/testing", + ":builder_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", ], ) From d4a4bc859aa1f69e7405601132aaabfe10b141c9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 10:47:22 -0500 Subject: [PATCH 0190/2162] build: migrate `@schematics/angular` to `ts_project` The `@schematics/angular` package has been migrated to the `rules_js` ts_project rule. --- packages/schematics/angular/BUILD.bazel | 50 +++++++++---------- .../Microsoft/TypeScript/BUILD.bazel | 7 +-- tsconfig.json | 3 +- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index 1cfba5801f09..809695369968 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -4,7 +4,8 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -35,9 +36,8 @@ ALL_SCHEMA_TARGETS = [ for (src, name) in ALL_SCHEMA_TARGETS ] -ts_library( +ts_project( name = "angular", - package_name = "@schematics/angular", srcs = glob( include = ["**/*.ts"], exclude = [ @@ -78,16 +78,18 @@ ts_library( "node_modules/**", ], ), - module_name = "@schematics/angular", - deps = [ - "//packages/angular_devkit/core", + interop_deps = [ "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", - "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", - "@npm//@inquirer/prompts", - "@npm//@types/node", - "@npm//browserslist", - "@npm//jsonc-parser", + ], + module_name = "@schematics/angular", + deps = [ + "//:root_modules/@inquirer/prompts", + "//:root_modules/@types/node", + "//:root_modules/browserslist", + "//:root_modules/jsonc-parser", + "//packages/angular_devkit/core:core_rjs", + "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript:TypeScript_rjs", ], ) @@ -96,11 +98,11 @@ jasmine_node_test( srcs = ["no_typescript_runtime_dep_spec.js"], deps = [ ":angular", - "@npm//jasmine", + "//:root_modules/@types/jasmine", ], ) -ts_library( +ts_project( name = "angular_test_lib", testonly = True, srcs = glob( @@ -113,28 +115,24 @@ ts_library( "node_modules/**", ], ), - # @external_begin - deps = [ - ":angular", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node/testing", + interop_deps = [ "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/testing", - "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", - "@npm//jsonc-parser", ], - # @external_end + deps = [ + ":angular_rjs", + "//:root_modules/@types/jasmine", + "//:root_modules/jsonc-parser", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node/testing:testing_rjs", + "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript:TypeScript_rjs", + ], ) jasmine_node_test( name = "angular_test", srcs = [":angular_test_lib"], - deps = [ - "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", - "@npm//jasmine", - "@npm//source-map", - ], ) genrule( diff --git a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel index 0da24bacd4ff..6e9deb1c7742 100644 --- a/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel +++ b/packages/schematics/angular/third_party/github.com/Microsoft/TypeScript/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # files fetched on 2024-11-28 from # https://github.com/microsoft/TypeScript/releases/tag/v5.7.2 @@ -9,13 +9,14 @@ load("//tools:defaults.bzl", "ts_library") licenses(["notice"]) # Apache 2.0 +package(default_visibility = ["//packages/schematics/angular:__subpackages__"]) + exports_files([ "LICENSE", ]) -ts_library( +ts_project( name = "TypeScript", srcs = ["lib/typescript.d.ts"], data = ["lib/typescript.js"], - visibility = ["//packages/schematics/angular:__subpackages__"], ) diff --git a/tsconfig.json b/tsconfig.json index 7ce6cd5a6e6f..1f9176a73881 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,7 +32,8 @@ "@angular/*": ["./packages/angular/*/src"], "@angular/build/private": ["./packages/angular/build/src/private"], "@ngtools/webpack": ["./packages/ngtools/webpack/index"], - "@schematics/angular": ["./packages/schematics/angular"] + "@schematics/angular": ["./packages/schematics/angular"], + "@schematics/angular/utility": ["./packages/schematics/angular/utility/index"] } }, "exclude": [ From 0d9a8359cbb039ef106585951caff2da069fcefe Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:08:10 -0500 Subject: [PATCH 0191/2162] build: migrate `@angular-devkit/schematics-cli` to `ts_project` The `@angular-devkit/schematics-cli` package has been migrated to the `rules_js` ts_project rule. --- .../angular_devkit/schematics_cli/BUILD.bazel | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index 1dc9d73b3590..605c6092233c 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -1,5 +1,6 @@ load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") # Copyright Google Inc. All Rights Reserved. @@ -11,9 +12,8 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) # @angular-devkit/schematics-cli -ts_library( +ts_project( name = "schematics_cli", - package_name = "@angular-devkit/schematics-cli", srcs = glob( include = ["**/*.ts"], exclude = [ @@ -25,11 +25,9 @@ ts_library( "node_modules/**", ], ) + [ - # @external_begin # These files are generated from the JSON schema "//packages/angular_devkit/schematics_cli:blank/schema.ts", "//packages/angular_devkit/schematics_cli:schematic/schema.ts", - # @external_end ], data = [ "blank/schema.json", @@ -43,24 +41,25 @@ ts_library( "schematic/files/**/*", ], ), - module_name = "@angular-devkit/schematics-cli", - module_root = "bin/schematics.d.ts", - deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", + interop_deps = [ "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/tools", - "@npm//@inquirer/prompts", - "@npm//@types/node", - "@npm//@types/yargs-parser", - "@npm//ansi-colors", - "@npm//symbol-observable", - "@npm//yargs-parser", + ], + module_name = "@angular-devkit/schematics-cli", + deps = [ + "//:root_modules/@inquirer/prompts", + "//:root_modules/@types/node", + "//:root_modules/@types/yargs-parser", + "//:root_modules/ansi-colors", + "//:root_modules/symbol-observable", + "//:root_modules/yargs-parser", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) -ts_library( +ts_project( name = "schematics_cli_test_lib", testonly = True, srcs = glob( @@ -69,13 +68,17 @@ ts_library( ], ), deps = [ - ":schematics_cli", + ":schematics_cli_rjs", ], ) jasmine_node_test( name = "schematics_cli_test", srcs = [":schematics_cli_test_lib"], + data = [ + # The package is loaded at runtime within the tests + ":schematics_cli", + ], ) ts_json_schema( From 8a87ff810bf72c7f36e713582789483a166b3783 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 12:39:40 -0500 Subject: [PATCH 0192/2162] build: migrate `@angular/cli` to `ts_project` The `@angular/cli` package has been migrated to the `rules_js` ts_project rule. --- packages/angular/cli/BUILD.bazel | 80 ++++++++++++++++---------------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index 3eafc989623f..15cf4e64008c 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -4,7 +4,8 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ng_cli_schema_generator.bzl", "cli_json_schema") load("//tools:ts_json_schema.bzl", "ts_json_schema") @@ -12,9 +13,8 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "angular-cli", - package_name = "@angular/cli", srcs = glob( include = [ "lib/**/*.ts", @@ -24,11 +24,9 @@ ts_library( "**/*_spec.ts", ], ) + [ - # @external_begin # These files are generated from the JSON schema "//packages/angular/cli:lib/config/workspace-schema.ts", "//packages/angular/cli:src/commands/update/schematic/schema.ts", - # @external_end ], data = glob( include = [ @@ -40,43 +38,42 @@ ts_library( "lib/config/workspace-schema.json", ], ) + [ - # @external_begin "//packages/angular/cli:lib/config/schema.json", - # @external_end ], - module_name = "@angular/cli", - deps = [ - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", + interop_deps = [ "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/tools", - "@npm//@angular/core", - "@npm//@inquirer/prompts", - "@npm//@listr2/prompt-adapter-inquirer", - "@npm//@types/ini", - "@npm//@types/node", - "@npm//@types/npm-package-arg", - "@npm//@types/pacote", - "@npm//@types/resolve", - "@npm//@types/semver", - "@npm//@types/yargs", - "@npm//@types/yarnpkg__lockfile", - "@npm//@yarnpkg/lockfile", - "@npm//ini", - "@npm//jsonc-parser", - "@npm//listr2", - "@npm//npm-package-arg", - "@npm//npm-pick-manifest", - "@npm//pacote", - "@npm//semver", - "@npm//yargs", + ], + module_name = "@angular/cli", + deps = [ + "//:root_modules/@angular/core", + "//:root_modules/@inquirer/prompts", + "//:root_modules/@listr2/prompt-adapter-inquirer", + "//:root_modules/@types/ini", + "//:root_modules/@types/node", + "//:root_modules/@types/npm-package-arg", + "//:root_modules/@types/pacote", + "//:root_modules/@types/resolve", + "//:root_modules/@types/semver", + "//:root_modules/@types/yargs", + "//:root_modules/@types/yarnpkg__lockfile", + "//:root_modules/@yarnpkg/lockfile", + "//:root_modules/ini", + "//:root_modules/jsonc-parser", + "//:root_modules/listr2", + "//:root_modules/npm-package-arg", + "//:root_modules/npm-pick-manifest", + "//:root_modules/pacote", + "//:root_modules/semver", + "//:root_modules/yargs", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) -# @external_begin CLI_SCHEMA_DATA = [ "//packages/angular/build:src/builders/application/schema.json", "//packages/angular/build:src/builders/dev-server/schema.json", @@ -131,7 +128,7 @@ ts_json_schema( src = "src/commands/update/schematic/schema.json", ) -ts_library( +ts_project( name = "angular-cli_test_lib", testonly = True, srcs = glob( @@ -141,13 +138,15 @@ ts_library( "node_modules/**", ], ), - deps = [ - ":angular-cli", - "//packages/angular_devkit/core", + interop_deps = [ "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/testing", - "@npm//@types/semver", - "@npm//@types/yargs", + ], + deps = [ + ":angular-cli_rjs", + "//:root_modules/@types/semver", + "//:root_modules/@types/yargs", + "//packages/angular_devkit/core:core_rjs", ], ) @@ -182,4 +181,3 @@ pkg_npm( ":src/commands/update/schematic/schema.json", ], ) -# @external_end From 7348e8c2f17ff8819141e7e49ab75cbbd0a167ab Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:26:47 -0500 Subject: [PATCH 0193/2162] build: migrate `@angular/pwa` to `ts_project` The `@angular/pwa` package has been migrated to the `rules_js` ts_project rule. --- packages/angular/pwa/BUILD.bazel | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/angular/pwa/BUILD.bazel b/packages/angular/pwa/BUILD.bazel index 5a8a3ecd3cca..7c3a21974eb1 100644 --- a/packages/angular/pwa/BUILD.bazel +++ b/packages/angular/pwa/BUILD.bazel @@ -4,16 +4,16 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "pwa", - package_name = "@angular/pwa", srcs = [ "pwa/index.ts", "//packages/angular/pwa:pwa/schema.ts", @@ -26,11 +26,14 @@ ts_library( "pwa/files/**/*", ], ), - deps = [ + interop_deps = [ "//packages/angular_devkit/schematics", - "//packages/schematics/angular", - "@npm//@types/node", - "@npm//parse5-html-rewriting-stream", + ], + module_name = "@angular/pwa", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/parse5-html-rewriting-stream", + "//packages/schematics/angular:angular_rjs", ], ) @@ -39,14 +42,17 @@ ts_json_schema( src = "pwa/schema.json", ) -ts_library( +ts_project( name = "pwa_test_lib", testonly = True, srcs = glob(["pwa/**/*_spec.ts"]), - deps = [ - ":pwa", + interop_deps = [ "//packages/angular_devkit/schematics/testing", ], + deps = [ + ":pwa_rjs", + "//:root_modules/@types/jasmine", + ], ) jasmine_node_test( From 9b883fe28862c96720c7899b431174e9b47ad7e4 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 24 Dec 2024 08:41:06 +0000 Subject: [PATCH 0194/2162] build: migrate `@angular/build` to `ts_project` This commit migrates `@angular/build` to `ts_project`. --- packages/angular/build/BUILD.bazel | 171 +++++++++--------- packages/angular/build/index.ts | 9 + packages/angular/build/private/BUILD.bazel | 12 ++ packages/angular/build/private/index.ts | 9 + .../angular_devkit/build_angular/BUILD.bazel | 12 +- tsconfig.json | 1 + 6 files changed, 119 insertions(+), 95 deletions(-) create mode 100644 packages/angular/build/index.ts create mode 100644 packages/angular/build/private/BUILD.bazel create mode 100644 packages/angular/build/private/index.ts diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 1aa140f21887..b6b0c4e26077 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -22,9 +23,8 @@ ts_json_schema( src = "src/builders/extract-i18n/schema.json", ) -ts_library( +ts_project( name = "build", - package_name = "@angular/build", srcs = glob( include = [ "src/**/*.ts", @@ -34,9 +34,9 @@ ts_library( "src/**/*_spec.ts", "src/**/tests/**/*.ts", "src/testing/**/*.ts", - "src/private.ts", ], ) + [ + "index.ts", "//packages/angular/build:src/builders/application/schema.ts", "//packages/angular/build:src/builders/dev-server/schema.ts", "//packages/angular/build:src/builders/extract-i18n/schema.ts", @@ -52,67 +52,59 @@ ts_library( "builders.json", "package.json", ], - module_name = "@angular/build", - module_root = "src/index.d.ts", - deps = [ + interop_deps = [ "//packages/angular/ssr", "//packages/angular/ssr/node", "//packages/angular_devkit/architect", - "@npm//@ampproject/remapping", - "@npm//@angular/common", - "@npm//@angular/compiler", - "@npm//@angular/compiler-cli", - "@npm//@angular/core", - "@npm//@angular/localize", - "@npm//@angular/platform-server", - "@npm//@angular/service-worker", - "@npm//@babel/core", - "@npm//@babel/helper-annotate-as-pure", - "@npm//@babel/helper-split-export-declaration", - "@npm//@babel/plugin-syntax-import-attributes", - "@npm//@inquirer/confirm", - "@npm//@types/babel__core", - "@npm//@types/less", - "@npm//@types/node", - "@npm//@types/picomatch", - "@npm//@types/semver", - "@npm//@types/watchpack", - "@npm//@vitejs/plugin-basic-ssl", - "@npm//beasties", - "@npm//browserslist", - "@npm//esbuild", - "@npm//esbuild-wasm", - "@npm//fast-glob", - "@npm//https-proxy-agent", - "@npm//listr2", - "@npm//lmdb", - "@npm//magic-string", - "@npm//mrmime", - "@npm//parse5-html-rewriting-stream", - "@npm//picomatch", - "@npm//piscina", - "@npm//postcss", - "@npm//rollup", - "@npm//sass", - "@npm//semver", - "@npm//tslib", - "@npm//typescript", - "@npm//vite", - "@npm//watchpack", ], -) - -ts_library( - name = "private", - srcs = ["src/private.ts"], - module_name = "@angular/build/private", - module_root = "src/private.d.ts", + module_name = "@angular/build", deps = [ - "//packages/angular/build", + "//:root_modules/@ampproject/remapping", + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@angular/core", + "//:root_modules/@angular/localize", + "//:root_modules/@angular/platform-server", + "//:root_modules/@angular/service-worker", + "//:root_modules/@babel/core", + "//:root_modules/@babel/helper-annotate-as-pure", + "//:root_modules/@babel/helper-split-export-declaration", + "//:root_modules/@babel/plugin-syntax-import-attributes", + "//:root_modules/@inquirer/confirm", + "//:root_modules/@types/babel__core", + "//:root_modules/@types/less", + "//:root_modules/@types/node", + "//:root_modules/@types/picomatch", + "//:root_modules/@types/semver", + "//:root_modules/@types/watchpack", + "//:root_modules/@vitejs/plugin-basic-ssl", + "//:root_modules/beasties", + "//:root_modules/browserslist", + "//:root_modules/esbuild", + "//:root_modules/esbuild-wasm", + "//:root_modules/fast-glob", + "//:root_modules/https-proxy-agent", + "//:root_modules/jsonc-parser", + "//:root_modules/listr2", + "//:root_modules/lmdb", + "//:root_modules/magic-string", + "//:root_modules/mrmime", + "//:root_modules/parse5-html-rewriting-stream", + "//:root_modules/picomatch", + "//:root_modules/piscina", + "//:root_modules/postcss", + "//:root_modules/rollup", + "//:root_modules/sass", + "//:root_modules/semver", + "//:root_modules/tslib", + "//:root_modules/typescript", + "//:root_modules/vite", + "//:root_modules/watchpack", ], ) -ts_library( +ts_project( name = "unit_test_lib", testonly = True, srcs = glob( @@ -120,14 +112,15 @@ ts_library( exclude = ["src/builders/**/tests/**"], ), deps = [ - ":build", - ":private", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "@npm//@angular/compiler-cli", - "@npm//@babel/core", - "@npm//prettier", - "@npm//typescript", + ":build_rjs", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@babel/core", + "//:root_modules/@types/jasmine", + "//:root_modules/prettier", + "//:root_modules/typescript", + "//packages/angular/build/private:private_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) @@ -136,38 +129,38 @@ jasmine_node_test( deps = [":unit_test_lib"], ) -ts_library( +ts_project( name = "integration_test_lib", testonly = True, srcs = glob(include = ["src/builders/**/tests/**/*.ts"]), deps = [ - ":build", - ":private", - "//modules/testing/builder", - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", + ":build_rjs", + "//packages/angular/build/private:private_rjs", + "//modules/testing/builder:builder_rjs", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", # dev server only test deps - "@npm//@types/http-proxy", - "@npm//http-proxy", - "@npm//puppeteer", + "//:root_modules/@types/http-proxy", + "//:root_modules/http-proxy", + "//:root_modules/puppeteer", # Base dependencies for the application in hello-world-app. - "@npm//@angular/common", - "@npm//@angular/compiler", - "@npm//@angular/compiler-cli", - "@npm//@angular/core", - "@npm//@angular/platform-browser", - "@npm//@angular/platform-browser-dynamic", - "@npm//@angular/router", - "@npm//rxjs", - "@npm//tslib", - "@npm//typescript", - "@npm//zone.js", - "@npm//buffer", + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-browser", + "//:root_modules/@angular/platform-browser-dynamic", + "//:root_modules/@angular/router", + "//:root_modules/rxjs", + "//:root_modules/tslib", + "//:root_modules/typescript", + "//:root_modules/zone.js", + "//:root_modules/buffer", ], ) diff --git a/packages/angular/build/index.ts b/packages/angular/build/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/angular/build/index.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 + */ + +export * from './src/index'; diff --git a/packages/angular/build/private/BUILD.bazel b/packages/angular/build/private/BUILD.bazel new file mode 100644 index 000000000000..4d3cf2ab9fda --- /dev/null +++ b/packages/angular/build/private/BUILD.bazel @@ -0,0 +1,12 @@ +load("//tools:interop.bzl", "ts_project") + +package(default_visibility = ["//visibility:public"]) + +ts_project( + name = "private", + srcs = ["index.ts"], + module_name = "@angular/build/private", + deps = [ + "//packages/angular/build:build_rjs", + ], +) diff --git a/packages/angular/build/private/index.ts b/packages/angular/build/private/index.ts new file mode 100644 index 000000000000..1c2b76656baf --- /dev/null +++ b/packages/angular/build/private/index.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 + */ + +export * from '../src/private'; diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index e2fd430e9d1b..04adc5af89be 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -120,8 +120,6 @@ ts_project( "package.json", ], interop_deps = [ - "//packages/angular/build", - "//packages/angular/build:private", "//packages/angular/ssr", "//packages/angular_devkit/build_webpack", "//packages/angular_devkit/core", @@ -201,6 +199,8 @@ ts_project( "//:root_modules/webpack-dev-server", "//:root_modules/webpack-merge", "//:root_modules/webpack-subresource-integrity", + "//packages/angular/build:build_rjs", + "//packages/angular/build/private:private_rjs", "//packages/angular_devkit/architect", ], ) @@ -287,14 +287,14 @@ ts_project( data = glob(["test/**/*"]), interop_deps = [ "//modules/testing/builder", - "//packages/angular/build", - "//packages/angular/build:private", "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", ], deps = [ ":build_angular_rjs", "//:root_modules/@types/jasmine", + "//packages/angular/build:build_rjs", + "//packages/angular/build/private:private_rjs", "//packages/angular_devkit/architect:architect_rjs", "//packages/angular_devkit/architect/node:node_rjs", "//packages/angular_devkit/architect/testing:testing_rjs", @@ -386,13 +386,13 @@ LARGE_SPECS = { "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//modules/testing/builder", - "//packages/angular/build", - "//packages/angular/build:private", ] + LARGE_SPECS[spec].get("extra_interop_deps", []), deps = [ # Dependencies needed to compile and run the specs themselves. ":build_angular_rjs", ":build_angular_test_utils_rjs", + "//packages/angular/build:build_rjs", + "//packages/angular/build/private:private_rjs", "//packages/angular_devkit/architect:architect_rjs", "//packages/angular_devkit/architect/node:node_rjs", "//packages/angular_devkit/architect/testing:testing_rjs", diff --git a/tsconfig.json b/tsconfig.json index 1f9176a73881..7bce041288f8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,6 +29,7 @@ "@angular-devkit/build-angular": ["./packages/angular_devkit/build_angular"], "@angular-devkit/*": ["./packages/angular_devkit/*/src"], "@angular/ssr": ["./packages/angular/ssr"], + "@angular/ssr/node": ["./packages/angular/ssr/node"], "@angular/*": ["./packages/angular/*/src"], "@angular/build/private": ["./packages/angular/build/src/private"], "@ngtools/webpack": ["./packages/ngtools/webpack/index"], From c40d726218cc9e43eeace9891c6c9be0c4dcd730 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 15:25:06 -0500 Subject: [PATCH 0195/2162] build: migrate E2E tests to `ts_project` The E2E tests have been migrated to the `rules_js` ts_project rule. --- tests/legacy-cli/BUILD.bazel | 14 +++++----- tests/legacy-cli/e2e/initialize/BUILD.bazel | 9 ++++--- tests/legacy-cli/e2e/setup/BUILD.bazel | 9 ++++--- tests/legacy-cli/e2e/tests/BUILD.bazel | 19 ++++++------- tests/legacy-cli/e2e/utils/BUILD.bazel | 30 +++++++++++---------- tsconfig.json | 3 +-- 6 files changed, 44 insertions(+), 40 deletions(-) diff --git a/tests/legacy-cli/BUILD.bazel b/tests/legacy-cli/BUILD.bazel index c154ea3f5387..e5e19bdc87a4 100644 --- a/tests/legacy-cli/BUILD.bazel +++ b/tests/legacy-cli/BUILD.bazel @@ -1,7 +1,7 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") load(":e2e.bzl", "e2e_suites") -ts_library( +ts_project( name = "runner", testonly = True, srcs = [ @@ -12,11 +12,11 @@ ts_library( "verdaccio_auth.yaml", ], deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//tests/legacy-cli/e2e/utils", - "@npm//ansi-colors", - "@npm//fast-glob", + "//:root_modules/ansi-colors", + "//:root_modules/fast-glob", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//tests/legacy-cli/e2e/utils:utils_rjs", ], ) diff --git a/tests/legacy-cli/e2e/initialize/BUILD.bazel b/tests/legacy-cli/e2e/initialize/BUILD.bazel index 4694790879b4..1a5c5c1ffe41 100644 --- a/tests/legacy-cli/e2e/initialize/BUILD.bazel +++ b/tests/legacy-cli/e2e/initialize/BUILD.bazel @@ -1,14 +1,15 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ts_library( +package(default_visibility = ["//visibility:public"]) + +ts_project( name = "initialize", testonly = True, srcs = glob(["**/*.ts"]), data = [ "//:config-files", ], - visibility = ["//visibility:public"], deps = [ - "//tests/legacy-cli/e2e/utils", + "//tests/legacy-cli/e2e/utils:utils_rjs", ], ) diff --git a/tests/legacy-cli/e2e/setup/BUILD.bazel b/tests/legacy-cli/e2e/setup/BUILD.bazel index ed2b51101e41..f75ce1c7ab46 100644 --- a/tests/legacy-cli/e2e/setup/BUILD.bazel +++ b/tests/legacy-cli/e2e/setup/BUILD.bazel @@ -1,11 +1,12 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ts_library( +package(default_visibility = ["//visibility:public"]) + +ts_project( name = "setup", testonly = True, srcs = glob(["**/*.ts"]), - visibility = ["//visibility:public"], deps = [ - "//tests/legacy-cli/e2e/utils", + "//tests/legacy-cli/e2e/utils:utils_rjs", ], ) diff --git a/tests/legacy-cli/e2e/tests/BUILD.bazel b/tests/legacy-cli/e2e/tests/BUILD.bazel index 8bc0303a8af3..1dc0fa8ec9dc 100644 --- a/tests/legacy-cli/e2e/tests/BUILD.bazel +++ b/tests/legacy-cli/e2e/tests/BUILD.bazel @@ -1,19 +1,20 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ts_library( +package(default_visibility = ["//visibility:public"]) + +ts_project( name = "tests", testonly = True, srcs = glob(["**/*.ts"]), data = [ "//tests/legacy-cli/e2e/ng-snapshot", ], - visibility = ["//visibility:public"], deps = [ - "//tests/legacy-cli/e2e/utils", - "@npm//@types/express", - "@npm//@types/semver", - "@npm//express", - "@npm//fast-glob", - "@npm//semver", + "//:root_modules/@types/express", + "//:root_modules/@types/semver", + "//:root_modules/express", + "//:root_modules/fast-glob", + "//:root_modules/semver", + "//tests/legacy-cli/e2e/utils:utils_rjs", ], ) diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index a813bdcc2735..100f5df0f966 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -1,24 +1,26 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ts_library( +package(default_visibility = ["//visibility:public"]) + +ts_project( name = "utils", testonly = True, srcs = glob(["**/*.ts"]), data = [ "//tests/legacy-cli/e2e/ng-snapshot", ], - visibility = ["//visibility:public"], deps = [ - "@npm//@types/semver", - "@npm//ansi-colors", - "@npm//fast-glob", - "@npm//npm", - "@npm//protractor", - "@npm//rxjs", - "@npm//semver", - "@npm//tar", - "@npm//tree-kill", - "@npm//verdaccio", - "@npm//verdaccio-auth-memory", + "//:root_modules/@types/jasmine", + "//:root_modules/@types/semver", + "//:root_modules/ansi-colors", + "//:root_modules/fast-glob", + "//:root_modules/npm", + "//:root_modules/protractor", + "//:root_modules/rxjs", + "//:root_modules/semver", + "//:root_modules/tar", + "//:root_modules/tree-kill", + "//:root_modules/verdaccio", + "//:root_modules/verdaccio-auth-memory", ], ) diff --git a/tsconfig.json b/tsconfig.json index 7bce041288f8..e2b7ab4082b8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -43,7 +43,6 @@ "**/node_modules/**/*", "**/third_party/**/*", "packages/angular_devkit/schematics_cli/schematic/files/**/*", - "packages/angular_devkit/*/test/**/*", - "tests/**/*" + "packages/angular_devkit/*/test/**/*" ] } From ecf8f587d789c28081c0361f0e636d72dfb73759 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 4 Jan 2025 09:05:31 +0000 Subject: [PATCH 0196/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++----- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 ++++----- package.json | 6 +- pnpm-lock.yaml | 76 +++++++---------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++---- yarn.lock | 83 ++++++++----------- 11 files changed, 135 insertions(+), 164 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 1652b6e5be5c..4ba56252ba86 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1733430966 -pnpm-lock.yaml=-703346517 +package.json=-1012460294 +pnpm-lock.yaml=-970801766 pnpm-workspace.yaml=1711114604 -yarn.lock=-931254131 +yarn.lock=-667501959 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 9d9daed036ff..b1083fdba07e 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + - uses: angular/dev-infra/github-actions/branch-manager@f0a9343aa86aac0222d035814dc919282fbdaa19 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a647a6b8f755..7fd89c63fd8e 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -92,13 +92,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -114,13 +114,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -136,13 +136,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -154,13 +154,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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -188,11 +188,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - run: yarn 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 9f0dd8bf52b5..5a942141b187 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@f0a9343aa86aac0222d035814dc919282fbdaa19 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + - uses: angular/dev-infra/github-actions/post-approval-changes@f0a9343aa86aac0222d035814dc919282fbdaa19 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 12ce31100ea6..9554113f980b 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + - uses: angular/dev-infra/github-actions/feature-request@f0a9343aa86aac0222d035814dc919282fbdaa19 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 0a2d2148ace7..cf501db841d9 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable # 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 2d048b3fe523..2ff8f4eb34e9 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/linting/licenses@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Check tooling setup run: yarn 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - 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@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -133,13 +133,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -155,13 +155,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -178,12 +178,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@e8ee8c5c247dc83e161ab8cf2281d0f6569ee626 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 af7effcfcf16..15be3be70e5f 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.4", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6", "@angular/cdk": "19.1.0-next.3", "@angular/common": "19.1.0-next.4", "@angular/compiler": "19.1.0-next.4", @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-next.4", "@angular/localize": "19.1.0-next.4", "@angular/material": "19.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94", "@angular/platform-browser": "19.1.0-next.4", "@angular/platform-browser-dynamic": "19.1.0-next.4", "@angular/platform-server": "19.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4889ad23251f..fe7530702c5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e - version: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a + version: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19 - version: github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6 + version: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43 - version: github.com/angular/dev-infra-private-ng-dev-builds/e4435ccb1b275541908b57b02958dc453c2fed43 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94 + version: github.com/angular/dev-infra-private-ng-dev-builds/fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94 '@angular/platform-browser': specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) @@ -530,18 +530,18 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@angular-devkit/architect@0.1901.0-next.1(chokidar@4.0.3): - resolution: {integrity: sha512-bZS5UlLsdL5eF3JqMaheYdIBVYrEIoDs6Q5UN50cJe5gKcakDvn8ky/Dhmv8kxfq5efb9zUevTC5xqnu+cgcmg==} + /@angular-devkit/architect@0.1901.0-next.2(chokidar@4.0.3): + resolution: {integrity: sha512-LJH2kZ6zGgWqCg4l42n/x+1jxUtcgJFrhBR11jXtkQperDvxRmhWpCEbjx0e9frGJbDe3vBlPdPy2PMYimwAvQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 19.1.0-next.1(chokidar@4.0.3) + '@angular-devkit/core': 19.1.0-next.2(chokidar@4.0.3) rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@angular-devkit/core@19.1.0-next.1(chokidar@4.0.3): - resolution: {integrity: sha512-2xzT/jBSKuDO2avbB00qiuM4Moir9RcLtK++oyJm/CVQ8tUFppVvpb2MIp0TB/FuV+Tfm8APf0etY0w/fWfWZA==} + /@angular-devkit/core@19.1.0-next.2(chokidar@4.0.3): + resolution: {integrity: sha512-e02oakLxYszcpltPhZDuQ2AKGWXblJLU2Ua7xD57BtjQtZt5c10bvePOvU4M5KnD5KqZUzjYQZtC6nqKOVvkMA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -578,8 +578,8 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): - resolution: {integrity: sha512-rLzY+2AxkNb82TSRp7DaZH/y0/ZdUV3g0OwJl7ajXvyIH0oJgq5mtNAO4VUreU+MR6h3tGO+XJRg6W0OUM9rzw==} + /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + resolution: {integrity: sha512-HDyPsyyqbMpUQXA3VBcfFcGu6sj0vxKL/DEKxnxIgbC9dZ/01yNDMTPIszpGg16fRPt10xEefx3hUFMMgYzWJQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^19.0.0 || ^19.1.0-next.0 @@ -587,7 +587,7 @@ packages: '@angular/localize': ^19.0.0 || ^19.1.0-next.0 '@angular/platform-server': ^19.0.0 || ^19.1.0-next.0 '@angular/service-worker': ^19.0.0 || ^19.1.0-next.0 - '@angular/ssr': ^19.1.0-next.1 + '@angular/ssr': ^19.1.0-next.2 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -609,7 +609,7 @@ packages: optional: true dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1901.0-next.1(chokidar@4.0.3) + '@angular-devkit/architect': 0.1901.0-next.2(chokidar@4.0.3) '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@angular/localize': 19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4) @@ -636,10 +636,10 @@ packages: piscina: 4.8.0 postcss: 8.4.49 rollup: 4.28.1 - sass: 1.82.0 + sass: 1.83.0 semver: 7.6.3 typescript: 5.7.2 - vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: lmdb: 3.2.0 @@ -5176,7 +5176,7 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.5): @@ -12708,18 +12708,6 @@ packages: webpack: 5.97.1(esbuild@0.24.2) dev: true - /sass@1.82.0: - resolution: {integrity: sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 4.0.3 - immutable: 5.0.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.0 - dev: true - /sass@1.83.0: resolution: {integrity: sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==} engines: {node: '>=14.0.0'} @@ -14368,7 +14356,7 @@ packages: extsprintf: 1.4.1 dev: true - /vite@6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.82.0)(terser@5.37.0): + /vite@6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -14413,7 +14401,7 @@ packages: less: 4.2.1 postcss: 8.4.49 rollup: 4.29.1 - sass: 1.82.0 + sass: 1.83.0 terser: 5.37.0 optionalDependencies: fsevents: 2.3.3 @@ -15059,15 +15047,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/722eb514ccf42aaca1642c42ec2d1b70a632142e} - id: github.com/angular/bazel-builds/722eb514ccf42aaca1642c42ec2d1b70a632142e + github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/8cd573656c96422cd30c7290361a539df9b02b1a} + id: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a name: '@angular/bazel' version: 19.1.0-next.4 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.4+sha-8c5db3c + '@angular/compiler-cli': 19.1.0-next.4+sha-f8d22a9 '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -15096,14 +15084,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/2dba82de08e41f38a47b088384f591f30fd9de19} - id: github.com/angular/dev-infra-private-build-tooling-builds/2dba82de08e41f38a47b088384f591f30fd9de19 + github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/e025d180b28460375d9f2292dc86e7c6a459b5b6} + id: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6 name: '@angular/build-tooling' - version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f + version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.1(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -15168,10 +15156,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/e4435ccb1b275541908b57b02958dc453c2fed43: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e4435ccb1b275541908b57b02958dc453c2fed43} + github.com/angular/dev-infra-private-ng-dev-builds/fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94} name: '@angular/ng-dev' - version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f + version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 hasBin: true dependencies: '@google-cloud/spanner': 7.16.0(supports-color@10.0.0) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 0253cd92d466..40e185642d19 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#0e6c3f5644b7b0f97ad2e6211421ecb7476d5905", - "@angular/cdk": "github:angular/cdk-builds#3c51feec2732e4516cfe3187df8aa7db8b86ee57", - "@angular/common": "github:angular/common-builds#44ce4602e2f64c5f6dc4e54d2424b451769ef1e7", - "@angular/compiler": "github:angular/compiler-builds#195d16ab2d6283b67533b03432860110e9ceb213", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e1b18f50153f959187918ab99ad537bc54969e77", - "@angular/core": "github:angular/core-builds#dcf469f32f04f0063a7679ad46bbeb1bba12c80b", - "@angular/forms": "github:angular/forms-builds#1ba071c30003d9d34eb793a681ad003be02e2c80", - "@angular/language-service": "github:angular/language-service-builds#ca1790860b2113156242a82e898860074de8faf1", - "@angular/localize": "github:angular/localize-builds#8e43647069a7df3cc486ad27fe39c1317aceebb3", - "@angular/material": "github:angular/material-builds#8b8e8e63a192adf73e77e8d3d6c6392525d16ce4", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#42a654895bac1e77aa20c1847c392857dd87c9f7", - "@angular/platform-browser": "github:angular/platform-browser-builds#20a349f2cd0136f939f1b3f2ec5bc86bb3e880f7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#566f6f3757df8c7cc4850acf4f7871f4995c58b6", - "@angular/platform-server": "github:angular/platform-server-builds#6cd4d80d65b31c486361bcfa2f968109d9cea20b", - "@angular/router": "github:angular/router-builds#5e82f4225d34a6969d9769715702463de325b680", - "@angular/service-worker": "github:angular/service-worker-builds#8c475038672a782f422d9cdcf6439e99e20a1eb2" + "@angular/animations": "github:angular/animations-builds#41e8092809a0d7efdb02551d555a2f73e521b0a5", + "@angular/cdk": "github:angular/cdk-builds#63f3eb1aa946a849a61b9a80e15bd408eec38950", + "@angular/common": "github:angular/common-builds#e40981466ea13c59863f7170ca0a383b87ee3124", + "@angular/compiler": "github:angular/compiler-builds#7e05e4aced9bfc78eb42af22e73bd1f745e3c8f5", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#8e1b6d6a97260cc984f738e1f809a8272ff78a66", + "@angular/core": "github:angular/core-builds#6e63df3c89551d4f62ad66f3ba05c149f68c9320", + "@angular/forms": "github:angular/forms-builds#b675eaa5b2c42f8cbdbec5a3b29518546d5ebf47", + "@angular/language-service": "github:angular/language-service-builds#c654684c0162f6e4afc3a8ec308a4398fbb2a3f8", + "@angular/localize": "github:angular/localize-builds#98da5cfeac886253fa1aa617751bfaf5c5e69bb3", + "@angular/material": "github:angular/material-builds#962e6716342a2a35670dd1c5cb6a2edfa31da5f3", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#297dd44046bc794b0e3972dc44a2d378e1398014", + "@angular/platform-browser": "github:angular/platform-browser-builds#a5e46f6a2b64a71b984703c23a40f45aca0afaf4", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0c664599ca3a6f1baf96b83334905613531201eb", + "@angular/platform-server": "github:angular/platform-server-builds#a399f52e659aa95e026d61adf1dd5356c9b16c1d", + "@angular/router": "github:angular/router-builds#a7c8973ad45df6fbc0f6f88b954b4f352c5fbdf2", + "@angular/service-worker": "github:angular/service-worker-builds#006b26723dd587d7db04e44e168631fe4bb9efc4" } } diff --git a/yarn.lock b/yarn.lock index 23a9a1078c87..d87e0e1b7ac6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,24 +15,24 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.1901.0-next.1": - version: 0.1901.0-next.1 - resolution: "@angular-devkit/architect@npm:0.1901.0-next.1" +"@angular-devkit/architect@npm:0.1901.0-next.2": + version: 0.1901.0-next.2 + resolution: "@angular-devkit/architect@npm:0.1901.0-next.2" dependencies: - "@angular-devkit/core": "npm:19.1.0-next.1" + "@angular-devkit/core": "npm:19.1.0-next.2" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/48f17401b12437f656d737ee1d190a1399543562f92852558be4aa51941dd12f4777d4b508f8985b7507f120356df126c7980d907d3759a2615d2f97a5dca3d4 + checksum: 10c0/c1b80a98aa65ec0d24f85a3d066d25b64f2489a4adef4c96c3116ca252e92d2c6a1cf6ce348124a6a2cea200e882d78a375aa285bd7cb6c88c805ef5c3f933a2 languageName: node linkType: hard -"@angular-devkit/core@npm:19.1.0-next.1": - version: 19.1.0-next.1 - resolution: "@angular-devkit/core@npm:19.1.0-next.1" +"@angular-devkit/core@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular-devkit/core@npm:19.1.0-next.2" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -50,7 +50,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/fd2935068827cc3bf4331f21d1511e9c80c15c0833793ef58c8bb1b9d258ff3e34fc2222f9d3a72b8f04f3904271ccc32aaa53dfa42d95293f0bdd1b7884cdbb + checksum: 10c0/71c53b72eeec570cf45a0909587ccdfd54874435bf8d17ce0260aa2a45529e8bd47feb64db1664e8accbec15baa94e10568ca434e24b700ed8099bbefd10d9ce languageName: node linkType: hard @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e": - version: 19.1.0-next.4+sha-8c5db3c - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=722eb514ccf42aaca1642c42ec2d1b70a632142e" +"@angular/bazel@https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a": + version: 19.1.0-next.4+sha-f8d22a9 + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=8cd573656c96422cd30c7290361a539df9b02b1a" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.4+sha-8c5db3c + "@angular/compiler-cli": 19.1.0-next.4+sha-f8d22a9 "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/afe235b4df58719f358ccf432638128d6ebf7ba0a2f5282344f9e654b6e21ac21d3bf2c8a87bc865319f47a14fd18142910aed84faabc33426812508c43dd415 + checksum: 10c0/86502169d9082ab4c3656e90d07cf3533a753a91f2a03d59d6a478424c62ab67c4a7813f581c47634c44b5b72d3df22ff67526e4d7a7be702389b1a0eff3f513 languageName: node linkType: hard @@ -104,12 +104,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19": - version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=2dba82de08e41f38a47b088384f591f30fd9de19" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6": + version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=e025d180b28460375d9f2292dc86e7c6a459b5b6" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.1.0-next.1" + "@angular/build": "npm:19.1.0-next.2" "@babel/core": "npm:^7.16.0" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" "@bazel/buildifier": "npm:6.3.3" @@ -143,16 +143,16 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/da125d69aac093d46538fe6d3384b669a7a14cc5dbe1ef836b569efd547e8e137e0b40679b6d358ee473142aa30eadee8977115bdfbf9e509d3a74c893f1da8e + checksum: 10c0/a7998c6a7343edf4645f233f4f18f3227e3d104a9a6cf8f29da2b86d20437c068d8ac02f60fb685c2825cd5d15fe247770a60f13f80c04f26e6c44aba5867965 languageName: node linkType: hard -"@angular/build@npm:19.1.0-next.1": - version: 19.1.0-next.1 - resolution: "@angular/build@npm:19.1.0-next.1" +"@angular/build@npm:19.1.0-next.2": + version: 19.1.0-next.2 + resolution: "@angular/build@npm:19.1.0-next.2" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1901.0-next.1" + "@angular-devkit/architect": "npm:0.1901.0-next.2" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" @@ -173,7 +173,7 @@ __metadata: picomatch: "npm:4.0.2" piscina: "npm:4.8.0" rollup: "npm:4.28.1" - sass: "npm:1.82.0" + sass: "npm:1.83.0" semver: "npm:7.6.3" vite: "npm:6.0.3" watchpack: "npm:2.4.2" @@ -183,7 +183,7 @@ __metadata: "@angular/localize": ^19.0.0 || ^19.1.0-next.0 "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 - "@angular/ssr": ^19.1.0-next.1 + "@angular/ssr": ^19.1.0-next.2 less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 @@ -210,7 +210,7 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10c0/033071f252bea38a6e8488a50decbc9733eec00d916501cbbd31286f75cbab4b590b7d88bd4423039371cac1aa53331fb36c270070e68fddc8c632ea9e455183 + checksum: 10c0/292fe2717afb3b2f94bccd3c8b0036ade8227e7646c841b54fcd00e4b989e69d25b511a3f96c6ccc6d2ff86022943d73522a0016585a0813babb831f453b42da languageName: node linkType: hard @@ -310,8 +310,8 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.4" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#722eb514ccf42aaca1642c42ec2d1b70a632142e" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#2dba82de08e41f38a47b088384f591f30fd9de19" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6" "@angular/cdk": "npm:19.1.0-next.3" "@angular/common": "npm:19.1.0-next.4" "@angular/compiler": "npm:19.1.0-next.4" @@ -320,7 +320,7 @@ __metadata: "@angular/forms": "npm:19.1.0-next.4" "@angular/localize": "npm:19.1.0-next.4" "@angular/material": "npm:19.1.0-next.3" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94" "@angular/platform-browser": "npm:19.1.0-next.4" "@angular/platform-browser-dynamic": "npm:19.1.0-next.4" "@angular/platform-server": "npm:19.1.0-next.4" @@ -533,9 +533,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#e4435ccb1b275541908b57b02958dc453c2fed43": - version: 0.0.0-8e8bf8fcb2b720d1f78c89c0791475f54b3d0b7f - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=e4435ccb1b275541908b57b02958dc453c2fed43" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94": + version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94" dependencies: "@google-cloud/spanner": "npm:7.16.0" "@octokit/rest": "npm:21.0.2" @@ -550,7 +550,7 @@ __metadata: yaml: "npm:2.6.1" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/56f1c3f0d2ca8152c79fcc7d2e1f26783bc2f6f780c961a22108533c439a8c5ec75214b82eaa1280755b3f06f04a6f598e9b898926057e52f35d239550aba112 + checksum: 10c0/67776db29d3ead971f8e3360c60b52bbbe61f807aff55b358a0abd13b2572ffe8c5bee20b4300376a22ca36d8a3bc022e2c2ca3d9ba227e6a3b2631d9243088a languageName: node linkType: hard @@ -15950,23 +15950,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.82.0": - version: 1.82.0 - resolution: "sass@npm:1.82.0" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" - source-map-js: "npm:>=0.6.2 <2.0.0" - dependenciesMeta: - "@parcel/watcher": - optional: true - bin: - sass: sass.js - checksum: 10c0/7f86fe6ade4f6018862c448ed69d5c52f485b0125c9dab24e63f679739a04cc7c56562d588e3cf16b5efb4d2c4d0530e62740e1cfd273e2e3707d04d11011736 - languageName: node - linkType: hard - "sass@npm:1.83.0, sass@npm:^1.81.0": version: 1.83.0 resolution: "sass@npm:1.83.0" From ccf3650665d103387ed61c12e9b5b6e39e1728bf Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Sun, 5 Jan 2025 19:18:04 +0100 Subject: [PATCH 0197/2162] refactor(@angular/ssr): clean up comment. The double JSDoc start sequence was visible in the docs (https://angular.dev/api/ssr/provideServerRoutesConfig). This commit fixes it. --- packages/angular/ssr/src/routes/route-config.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index a60a3ed3619a..b0b85fffbe34 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -192,7 +192,6 @@ export interface ServerRoutesConfig extends ServerRoutesConfigOptions { */ 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 From a5618693a12daf28fdfc1f791dd36889eeff6095 Mon Sep 17 00:00:00 2001 From: Julien Saguet Date: Sun, 5 Jan 2025 19:38:51 +0100 Subject: [PATCH 0198/2162] fix(@angular/build): do not mark Babel _defineProperty helper function as pure Fixes #29145 --- .../babel/plugins/pure-toplevel-functions.ts | 21 ++++++++++++++++--- .../plugins/pure-toplevel-functions_spec.ts | 12 +++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts index ec209e64850b..ce47977a74e3 100644 --- a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts +++ b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts @@ -32,6 +32,18 @@ function isTslibHelperName(name: string): boolean { return tslibHelpers.has(originalName); } +const babelHelpers = new Set(['_defineProperty']); + +/** + * Determinates whether an identifier name matches one of the Babel helper function names. + * + * @param name The identifier name to check. + * @returns True, if the name matches a Babel helper name; otherwise, false. + */ +function isBabelHelperName(name: string): boolean { + return babelHelpers.has(name); +} + /** * A babel plugin factory function for adding the PURE annotation to top-level new and call expressions. * @@ -53,9 +65,12 @@ export default function (): PluginObj { ) { return; } - // Do not annotate TypeScript helpers emitted by the TypeScript compiler. - // TypeScript helpers are intended to cause side effects. - if (callee.isIdentifier() && isTslibHelperName(callee.node.name)) { + // Do not annotate TypeScript helpers emitted by the TypeScript compiler or Babel helpers. + // They are intended to cause side effects. + if ( + callee.isIdentifier() && + (isTslibHelperName(callee.node.name) || isBabelHelperName(callee.node.name)) + ) { return; } diff --git a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts index 2852d30821c0..891f794f43d5 100644 --- a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts +++ b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts @@ -130,6 +130,18 @@ describe('pure-toplevel-functions Babel plugin', () => { `), ); + it( + 'does not annotate _defineProperty function', + testCaseNoChange(` + class LanguageState {} + _defineProperty( + LanguageState, + 'property', + 'value' + ); + `), + ); + it( 'does not annotate object literal methods', testCaseNoChange(` From e648be602d7c01f7828ace462747bdb596e4cadf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 23 Dec 2024 09:41:59 -0500 Subject: [PATCH 0199/2162] test: remove several outdated E2E tests Two tests related to the protractor builder have been removed (e2e-host & http-headers). Two tests with existing integration tests have been removed (http-headers & proxy-config). --- tests/legacy-cli/e2e/tests/misc/e2e-host.ts | 24 ----------- tests/legacy-cli/e2e/tests/misc/fallback.ts | 35 --------------- .../legacy-cli/e2e/tests/misc/http-headers.ts | 42 ------------------ .../legacy-cli/e2e/tests/misc/proxy-config.ts | 43 ------------------- 4 files changed, 144 deletions(-) delete mode 100644 tests/legacy-cli/e2e/tests/misc/e2e-host.ts delete mode 100644 tests/legacy-cli/e2e/tests/misc/fallback.ts delete mode 100644 tests/legacy-cli/e2e/tests/misc/http-headers.ts delete mode 100644 tests/legacy-cli/e2e/tests/misc/proxy-config.ts diff --git a/tests/legacy-cli/e2e/tests/misc/e2e-host.ts b/tests/legacy-cli/e2e/tests/misc/e2e-host.ts deleted file mode 100644 index 398beb0599e5..000000000000 --- a/tests/legacy-cli/e2e/tests/misc/e2e-host.ts +++ /dev/null @@ -1,24 +0,0 @@ -import * as os from 'os'; -import { ng } from '../../utils/process'; -import { updateJsonFile } from '../../utils/project'; - -export default async function () { - const interfaces = Object.values(os.networkInterfaces()).flat() as os.NetworkInterfaceInfo[]; - let host = ''; - for (const { family, address, internal } of interfaces) { - if (family === 'IPv4' && !internal) { - host = address; - break; - } - } - - await updateJsonFile('angular.json', (workspaceJson) => { - const appArchitect = workspaceJson.projects['test-project'].architect; - appArchitect.serve.options = appArchitect.serve.options || {}; - appArchitect.serve.options.port = 8888; - appArchitect.serve.options.host = host; - }); - - await ng('e2e'); - await ng('e2e', '--host', host); -} diff --git a/tests/legacy-cli/e2e/tests/misc/fallback.ts b/tests/legacy-cli/e2e/tests/misc/fallback.ts deleted file mode 100644 index 3d12e50cc3c1..000000000000 --- a/tests/legacy-cli/e2e/tests/misc/fallback.ts +++ /dev/null @@ -1,35 +0,0 @@ -import * as assert from 'assert'; -import { killAllProcesses } from '../../utils/process'; -import { ngServe } from '../../utils/project'; -import { updateJsonFile } from '../../utils/project'; -import { moveFile } from '../../utils/fs'; - -export default function () { - // TODO(architect): Delete this test. It is now in devkit/build-angular. - - // should fallback to config.app[0].index (index.html by default) - return ( - Promise.resolve() - .then(() => ngServe()) - .then((port) => fetch(`http://localhost:${port}/`, { headers: { 'Accept': 'text/html' } })) - .then(async (response) => { - assert.strictEqual(response.status, 200); - assert.match(await response.text(), /<\/app-root>/); - }) - .finally(() => killAllProcesses()) - // should correctly fallback to a changed index - .then(() => moveFile('src/index.html', 'src/not-index.html')) - .then(() => - updateJsonFile('angular.json', (workspaceJson) => { - const appArchitect = workspaceJson.projects['test-project'].architect; - appArchitect.build.options.index = 'src/not-index.html'; - }), - ) - .then(() => ngServe()) - .then((port) => fetch(`http://localhost:${port}/`, { headers: { 'Accept': 'text/html' } })) - .then(async (response) => { - assert.strictEqual(response.status, 200); - assert.match(await response.text(), /<\/app-root>/); - }) - ); -} diff --git a/tests/legacy-cli/e2e/tests/misc/http-headers.ts b/tests/legacy-cli/e2e/tests/misc/http-headers.ts deleted file mode 100644 index 3e04cfd0caf8..000000000000 --- a/tests/legacy-cli/e2e/tests/misc/http-headers.ts +++ /dev/null @@ -1,42 +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 { ng } from '../../utils/process'; -import { updateJsonFile } from '../../utils/project'; - -export default async function () { - // This test ensures that ng e2e serves the HTTP headers that are configured - // in the 'headers' field of the serve options. We do this by serving the - // strictest possible CSP headers (default-src 'none') which blocks loading of - // any resources (including scripts, styles and images) and should cause ng - // e2e to fail with a CSP-related error, which is asserted below. - - await updateJsonFile('angular.json', (json) => { - const serve = json['projects']['test-project']['architect']['serve']; - if (!serve['options']) serve['options'] = {}; - serve['options']['headers'] = { - 'Content-Security-Policy': "default-src 'none'", - }; - }); - - let errorMessage: string | null = null; - try { - await ng('e2e'); - } catch (error) { - errorMessage = error instanceof Error ? error.message : null; - } - - if (!errorMessage) { - throw new Error( - 'Application loaded successfully, indicating that the CSP headers were not served.', - ); - } - if (!errorMessage.match(/Refused to load/)) { - throw new Error('Expected to see CSP loading failure in error logs.'); - } -} diff --git a/tests/legacy-cli/e2e/tests/misc/proxy-config.ts b/tests/legacy-cli/e2e/tests/misc/proxy-config.ts deleted file mode 100644 index 0f27d8617871..000000000000 --- a/tests/legacy-cli/e2e/tests/misc/proxy-config.ts +++ /dev/null @@ -1,43 +0,0 @@ -import express from 'express'; -import * as http from 'http'; - -import { writeFile } from '../../utils/fs'; -import { ngServe } from '../../utils/project'; -import { AddressInfo } from 'net'; -import * as assert from 'assert'; - -export default function () { - // TODO(architect): Delete this test. It is now in devkit/build-angular. - - // Create an express app that serves as a proxy. - const app = express(); - const server = http.createServer(app); - server.listen(0); - - app.set('port', (server.address() as AddressInfo).port); - app.get('/api/test', function (req, res) { - res.send('TEST_API_RETURN'); - }); - - const backendHost = 'localhost'; - const backendPort = (server.address() as AddressInfo).port; - const proxyServerUrl = `http://${backendHost}:${backendPort}`; - const proxyConfigFile = 'proxy.config.json'; - const proxyConfig = { - '/api/*': { - target: proxyServerUrl, - }, - }; - - return Promise.resolve() - .then(() => writeFile(proxyConfigFile, JSON.stringify(proxyConfig, null, 2))) - .then(() => ngServe('--proxy-config', proxyConfigFile)) - .then((port) => fetch(`http://localhost:${port}/api/test`)) - .then(async (response) => { - assert.strictEqual(response.status, 200); - assert.match(await response.text(), /TEST_API_RETURN/); - }) - .finally(() => { - server.close(); - }); -} From ba16ad6b56e9a1ae0f380141bc1e1253a75fcf6b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:54:31 -0500 Subject: [PATCH 0200/2162] fix(@angular/build): support incremental build file results in watch mode When the application build is in watch mode, incremental build results will now be generated. This allows fine-grained updates of the files in the output directory and supports removal of stale application code files. Note that stale assets will not currently be removed from the output directory. More complex asset change analysis will be evaluated for inclusion in the future to address this asset output behavior. --- .../src/builders/application/build-action.ts | 102 ++++++++++++++++-- .../src/builders/application/execute-build.ts | 2 +- .../build/src/builders/application/index.ts | 70 ++++++++---- .../build/src/builders/application/options.ts | 7 ++ .../build/src/builders/application/results.ts | 2 +- .../tools/esbuild/bundler-execution-result.ts | 12 ++- tests/legacy-cli/e2e.bzl | 1 + .../e2e/tests/build/incremental-watch.ts | 60 +++++++++++ 8 files changed, 217 insertions(+), 39 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/build/incremental-watch.ts diff --git a/packages/angular/build/src/builders/application/build-action.ts b/packages/angular/build/src/builders/application/build-action.ts index c9089eed4ede..e006dce6afb7 100644 --- a/packages/angular/build/src/builders/application/build-action.ts +++ b/packages/angular/build/src/builders/application/build-action.ts @@ -16,7 +16,14 @@ import { logMessages, withNoProgress, withSpinner } from '../../tools/esbuild/ut import { shouldWatchRoot } from '../../utils/environment-options'; import { NormalizedCachedOptions } from '../../utils/normalize-cache'; import { NormalizedApplicationBuildOptions, NormalizedOutputOptions } from './options'; -import { ComponentUpdateResult, FullResult, Result, ResultKind, ResultMessage } from './results'; +import { + ComponentUpdateResult, + FullResult, + IncrementalResult, + Result, + ResultKind, + ResultMessage, +} from './results'; // Watch workspace for package manager changes const packageWatchFiles = [ @@ -49,6 +56,7 @@ export async function* runEsBuildBuildAction( clearScreen?: boolean; colors?: boolean; jsonLogs?: boolean; + incrementalResults?: boolean; }, ): AsyncIterable { const { @@ -65,6 +73,7 @@ export async function* runEsBuildBuildAction( preserveSymlinks, colors, jsonLogs, + incrementalResults, } = options; const withProgress: typeof withSpinner = progress ? withSpinner : withNoProgress; @@ -135,7 +144,7 @@ export async function* runEsBuildBuildAction( // Output the first build results after setting up the watcher to ensure that any code executed // higher in the iterator call stack will trigger the watcher. This is particularly relevant for // unit tests which execute the builder and modify the file system programmatically. - yield await emitOutputResult(result, outputOptions); + yield emitOutputResult(result, outputOptions); // Finish if watch mode is not enabled if (!watcher) { @@ -162,9 +171,8 @@ export async function* runEsBuildBuildAction( // Clear removed files from current watch files changes.removed.forEach((removedPath) => currentWatchFiles.delete(removedPath)); - result = await withProgress('Changes detected. Rebuilding...', () => - action(result.createRebuildState(changes)), - ); + const rebuildState = result.createRebuildState(changes); + result = await withProgress('Changes detected. Rebuilding...', () => action(rebuildState)); // Log all diagnostic (error/warning/logs) messages await logMessages(logger, result, colors, jsonLogs); @@ -188,7 +196,11 @@ export async function* runEsBuildBuildAction( watcher.remove([...staleWatchFiles]); } - yield await emitOutputResult(result, outputOptions); + yield emitOutputResult( + result, + outputOptions, + incrementalResults ? rebuildState.previousOutputInfo : undefined, + ); } } finally { // Stop the watcher and cleanup incremental rebuild state @@ -198,7 +210,7 @@ export async function* runEsBuildBuildAction( } } -async function emitOutputResult( +function emitOutputResult( { outputFiles, assetFiles, @@ -210,7 +222,8 @@ async function emitOutputResult( templateUpdates, }: ExecutionResult, outputOptions: NormalizedApplicationBuildOptions['outputOptions'], -): Promise { + previousOutputInfo?: ReadonlyMap, +): Result { if (errors.length > 0) { return { kind: ResultKind.Failure, @@ -222,11 +235,12 @@ async function emitOutputResult( }; } - // Template updates only exist if no other changes have occurred - if (templateUpdates?.size) { + // Template updates only exist if no other JS changes have occurred + const hasTemplateUpdates = !!templateUpdates?.size; + if (hasTemplateUpdates) { const updateResult: ComponentUpdateResult = { kind: ResultKind.ComponentUpdate, - updates: Array.from(templateUpdates).map(([id, content]) => ({ + updates: Array.from(templateUpdates, ([id, content]) => ({ type: 'template', id, content, @@ -236,6 +250,72 @@ async function emitOutputResult( return updateResult; } + // Use an incremental result if previous output information is available + if (previousOutputInfo) { + const incrementalResult: IncrementalResult = { + kind: ResultKind.Incremental, + warnings: warnings as ResultMessage[], + added: [], + removed: [], + modified: [], + files: {}, + detail: { + externalMetadata, + htmlIndexPath, + htmlBaseHref, + outputOptions, + }, + }; + + // Initially assume all previous output files have been removed + const removedOutputFiles = new Map(previousOutputInfo); + + for (const file of outputFiles) { + removedOutputFiles.delete(file.path); + + const previousHash = previousOutputInfo.get(file.path)?.hash; + let needFile = false; + if (previousHash === undefined) { + needFile = true; + incrementalResult.added.push(file.path); + } else if (previousHash !== file.hash) { + needFile = true; + incrementalResult.modified.push(file.path); + } + + if (needFile) { + incrementalResult.files[file.path] = { + type: file.type, + contents: file.contents, + origin: 'memory', + hash: file.hash, + }; + } + } + + // Include the removed output files + incrementalResult.removed.push( + ...Array.from(removedOutputFiles, ([file, { type }]) => ({ + path: file, + type, + })), + ); + + // Always consider asset files as added to ensure new/modified assets are available. + // TODO: Consider more comprehensive asset analysis. + for (const file of assetFiles) { + incrementalResult.added.push(file.destination); + incrementalResult.files[file.destination] = { + type: BuildOutputFileType.Browser, + inputPath: file.source, + origin: 'disk', + }; + } + + return incrementalResult; + } + + // Otherwise, use a full result const result: FullResult = { kind: ResultKind.Full, warnings: warnings as ResultMessage[], diff --git a/packages/angular/build/src/builders/application/execute-build.ts b/packages/angular/build/src/builders/application/execute-build.ts index 10d0e297522f..43cbf41d52a6 100644 --- a/packages/angular/build/src/builders/application/execute-build.ts +++ b/packages/angular/build/src/builders/application/execute-build.ts @@ -182,7 +182,7 @@ export async function executeBuild( executionResult.outputFiles.push(...outputFiles); const changedFiles = - rebuildState && executionResult.findChangedFiles(rebuildState.previousOutputHashes); + rebuildState && executionResult.findChangedFiles(rebuildState.previousOutputInfo); // Analyze files for bundle budget failures if present let budgetFailures: BudgetCalculatorResult[] | undefined; diff --git a/packages/angular/build/src/builders/application/index.ts b/packages/angular/build/src/builders/application/index.ts index 27d0c03bee77..a8a68d96b88a 100644 --- a/packages/angular/build/src/builders/application/index.ts +++ b/packages/angular/build/src/builders/application/index.ts @@ -126,6 +126,7 @@ export async function* buildApplicationInternal( clearScreen: normalizedOptions.clearScreen, colors: normalizedOptions.colors, jsonLogs: normalizedOptions.jsonLogs, + incrementalResults: normalizedOptions.incrementalResults, logger, signal, }, @@ -157,7 +158,8 @@ export async function* buildApplication( extensions?: ApplicationBuilderExtensions, ): AsyncIterable { let initial = true; - for await (const result of buildApplicationInternal(options, context, extensions)) { + const internalOptions = { ...options, incrementalResults: true }; + for await (const result of buildApplicationInternal(internalOptions, context, extensions)) { const outputOptions = result.detail?.['outputOptions'] as NormalizedOutputOptions | undefined; if (initial) { @@ -179,7 +181,10 @@ export async function* buildApplication( } assert(outputOptions, 'Application output options are required for builder usage.'); - assert(result.kind === ResultKind.Full, 'Application build did not provide a full output.'); + assert( + result.kind === ResultKind.Full || result.kind === ResultKind.Incremental, + 'Application build did not provide a file result output.', + ); // TODO: Restructure output logging to better handle stdout JSON piping if (!useJSONBuildLogs) { @@ -197,26 +202,7 @@ export async function* buildApplication( return; } - let typeDirectory: string; - switch (file.type) { - case BuildOutputFileType.Browser: - case BuildOutputFileType.Media: - typeDirectory = outputOptions.browser; - break; - case BuildOutputFileType.ServerApplication: - case BuildOutputFileType.ServerRoot: - typeDirectory = outputOptions.server; - break; - case BuildOutputFileType.Root: - typeDirectory = ''; - break; - default: - throw new Error( - `Unhandled write for file "${filePath}" with type "${BuildOutputFileType[file.type]}".`, - ); - } - // NOTE: 'base' is a fully resolved path at this point - const fullFilePath = path.join(outputOptions.base, typeDirectory, filePath); + const fullFilePath = generateFullPath(filePath, file.type, outputOptions); // Ensure output subdirectories exist const fileBasePath = path.dirname(fullFilePath); @@ -234,8 +220,48 @@ export async function* buildApplication( } }); + // Delete any removed files if incremental + if (result.kind === ResultKind.Incremental && result.removed?.length) { + await Promise.all( + result.removed.map((file) => { + const fullFilePath = generateFullPath(file.path, file.type, outputOptions); + + return fs.rm(fullFilePath, { force: true, maxRetries: 3 }); + }), + ); + } + yield { success: true }; } } +function generateFullPath( + filePath: string, + type: BuildOutputFileType, + outputOptions: NormalizedOutputOptions, +) { + let typeDirectory: string; + switch (type) { + case BuildOutputFileType.Browser: + case BuildOutputFileType.Media: + typeDirectory = outputOptions.browser; + break; + case BuildOutputFileType.ServerApplication: + case BuildOutputFileType.ServerRoot: + typeDirectory = outputOptions.server; + break; + case BuildOutputFileType.Root: + typeDirectory = ''; + break; + default: + throw new Error( + `Unhandled write for file "${filePath}" with type "${BuildOutputFileType[type]}".`, + ); + } + // NOTE: 'base' is a fully resolved path at this point + const fullFilePath = path.join(outputOptions.base, typeDirectory, filePath); + + return fullFilePath; +} + export default createBuilder(buildApplication); diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 13adfa354d40..fd69191ca969 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -107,6 +107,12 @@ interface InternalOptions { */ templateUpdates?: boolean; + /** + * Enables emitting incremental build results when in watch mode. A full build result will only be emitted + * for the initial build. This option also requires watch to be enabled to have an effect. + */ + incrementalResults?: boolean; + /** * Enables instrumentation to collect code coverage data for specific files. * @@ -475,6 +481,7 @@ export async function normalizeOptions( instrumentForCoverage, security, templateUpdates: !!options.templateUpdates, + incrementalResults: !!options.incrementalResults, }; } diff --git a/packages/angular/build/src/builders/application/results.ts b/packages/angular/build/src/builders/application/results.ts index 842af17dda3f..077237967425 100644 --- a/packages/angular/build/src/builders/application/results.ts +++ b/packages/angular/build/src/builders/application/results.ts @@ -37,7 +37,7 @@ export interface FullResult extends BaseResult { export interface IncrementalResult extends BaseResult { kind: ResultKind.Incremental; added: string[]; - removed: string[]; + removed: { path: string; type: BuildOutputFileType }[]; modified: string[]; files: Record; } diff --git a/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts b/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts index d6d2d2a01fd8..61e9c860faef 100644 --- a/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts +++ b/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts @@ -27,7 +27,7 @@ export interface RebuildState { componentStyleBundler: ComponentStylesheetBundler; codeBundleCache?: SourceFileCache; fileChanges: ChangedFiles; - previousOutputHashes: Map; + previousOutputInfo: Map; templateUpdates?: Map; } @@ -167,15 +167,19 @@ export class ExecutionResult { codeBundleCache: this.codeBundleCache, componentStyleBundler: this.componentStyleBundler, fileChanges, - previousOutputHashes: new Map(this.outputFiles.map((file) => [file.path, file.hash])), + previousOutputInfo: new Map( + this.outputFiles.map(({ path, hash, type }) => [path, { hash, type }]), + ), templateUpdates: this.templateUpdates, }; } - findChangedFiles(previousOutputHashes: Map): Set { + findChangedFiles( + previousOutputHashes: Map, + ): Set { const changed = new Set(); for (const file of this.outputFiles) { - const previousHash = previousOutputHashes.get(file.path); + const previousHash = previousOutputHashes.get(file.path)?.hash; if (previousHash === undefined || previousHash !== file.hash) { changed.add(file.path); } diff --git a/tests/legacy-cli/e2e.bzl b/tests/legacy-cli/e2e.bzl index 040c143cc2f6..74402064f961 100644 --- a/tests/legacy-cli/e2e.bzl +++ b/tests/legacy-cli/e2e.bzl @@ -51,6 +51,7 @@ WEBPACK_IGNORE_TESTS = [ "tests/build/server-rendering/server-routes-*", "tests/build/wasm-esm.js", "tests/build/auto-csp*", + "tests/build/incremental-watch.js", ] def _to_glob(patterns): diff --git a/tests/legacy-cli/e2e/tests/build/incremental-watch.ts b/tests/legacy-cli/e2e/tests/build/incremental-watch.ts new file mode 100644 index 000000000000..b2d1662469bb --- /dev/null +++ b/tests/legacy-cli/e2e/tests/build/incremental-watch.ts @@ -0,0 +1,60 @@ +import assert from 'node:assert/strict'; +import { readdir } from 'node:fs/promises'; +import { setTimeout } from 'node:timers/promises'; +import { getGlobalVariable } from '../../utils/env'; +import { appendToFile, readFile, writeFile } from '../../utils/fs'; +import { execAndWaitForOutputToMatch, waitForAnyProcessOutputToMatch } from '../../utils/process'; + +const buildReadyRegEx = /Application bundle generation complete\./; + +export default async function () { + const usingApplicationBuilder = getGlobalVariable('argv')['esbuild']; + assert( + usingApplicationBuilder, + 'Incremental watch E2E test should not be executed with Webpack.', + ); + + // Perform an initial build in watch mode + await execAndWaitForOutputToMatch( + 'ng', + ['build', '--watch', '--configuration=development'], + buildReadyRegEx, + ); + await setTimeout(500); + const initialOutputFiles = await readdir('dist/test-project/browser'); + + const originalMain = await readFile('src/main.ts'); + + // Add a dynamic import to create an additional output chunk + await Promise.all([ + waitForAnyProcessOutputToMatch(buildReadyRegEx), + await writeFile( + 'src/a.ts', + ` + export function sayHi() { + console.log('hi'); + } + `, + ), + appendToFile('src/main.ts', `\nimport('./a').then((m) => m.sayHi());`), + ]); + await setTimeout(500); + const intermediateOutputFiles = await readdir('dist/test-project/browser'); + assert( + initialOutputFiles.length < intermediateOutputFiles.length, + 'Additional chunks should be present', + ); + + // Remove usage of dynamic import which should remove the additional output chunk + await Promise.all([ + waitForAnyProcessOutputToMatch(buildReadyRegEx), + writeFile('src/main.ts', originalMain), + ]); + await setTimeout(500); + const finalOutputFiles = await readdir('dist/test-project/browser'); + assert.equal( + initialOutputFiles.length, + finalOutputFiles.length, + 'Final chunk count should be equal to initial chunk count.', + ); +} From 9b57ff0552736e6fef44c0ff7e6535f9ed832c6b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 6 Jan 2025 10:06:08 +0000 Subject: [PATCH 0201/2162] build: update all non-major dependencies --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 14 +- packages/angular/build/package.json | 10 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 426 +++++++++++------- yarn.lock | 401 ++++++++++++----- 6 files changed, 556 insertions(+), 305 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 4ba56252ba86..f0e174f14c69 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-1012460294 -pnpm-lock.yaml=-970801766 +package.json=921023999 +pnpm-lock.yaml=-1451571958 pnpm-workspace.yaml=1711114604 -yarn.lock=-667501959 +yarn.lock=-2102002357 diff --git a/package.json b/package.json index 15be3be70e5f..964d049379d5 100644 --- a/package.json +++ b/package.json @@ -106,8 +106,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.18.1", - "@typescript-eslint/parser": "8.18.1", + "@typescript-eslint/eslint-plugin": "8.19.0", + "@typescript-eslint/parser": "8.19.0", "@vitejs/plugin-basic-ssl": "1.2.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", @@ -131,7 +131,7 @@ "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", "express": "4.21.2", - "fast-glob": "3.3.2", + "fast-glob": "3.3.3", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.3", "https-proxy-agent": "7.0.6", @@ -152,7 +152,7 @@ "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "listr2": "8.2.5", - "lmdb": "3.2.0", + "lmdb": "3.2.2", "loader-utils": "3.3.1", "lodash": "^4.17.21", "magic-string": "0.30.17", @@ -176,11 +176,11 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.29.1", + "rollup": "4.30.0", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", - "sass": "1.83.0", + "sass": "1.83.1", "sass-loader": "16.0.4", "semver": "7.6.3", "shelljs": "^0.8.5", @@ -198,7 +198,7 @@ "unenv": "^1.10.0", "verdaccio": "6.0.5", "verdaccio-auth-memory": "^10.0.0", - "vite": "6.0.5", + "vite": "6.0.7", "watchpack": "2.4.2", "webpack": "5.97.1", "webpack-dev-middleware": "7.4.2", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index b296df93b4f6..a0249d6ebbdf 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -29,7 +29,7 @@ "beasties": "0.2.0", "browserslist": "^4.23.0", "esbuild": "0.24.2", - "fast-glob": "3.3.2", + "fast-glob": "3.3.3", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "listr2": "8.2.5", @@ -38,14 +38,14 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.8.0", - "rollup": "4.29.1", - "sass": "1.83.0", + "rollup": "4.30.0", + "sass": "1.83.1", "semver": "7.6.3", - "vite": "6.0.5", + "vite": "6.0.7", "watchpack": "2.4.2" }, "optionalDependencies": { - "lmdb": "3.2.0" + "lmdb": "3.2.2" }, "peerDependencies": { "@angular/compiler": "^19.0.0 || ^19.1.0-next.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index bcc3ec67add9..a9132d5b1cb1 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -30,7 +30,7 @@ "copy-webpack-plugin": "12.0.2", "css-loader": "7.1.2", "esbuild-wasm": "0.24.2", - "fast-glob": "3.3.2", + "fast-glob": "3.3.3", "http-proxy-middleware": "3.0.3", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -48,7 +48,7 @@ "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.83.0", + "sass": "1.83.1", "sass-loader": "16.0.4", "semver": "7.6.3", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe7530702c5f..cb9fe80bcefc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a - version: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6 version: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -111,7 +111,7 @@ importers: version: 5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0) '@bazel/rollup': specifier: ^5.8.1 - version: 5.8.1(rollup@4.29.1) + version: 5.8.1(rollup@4.30.0) '@bazel/runfiles': specifier: ^5.8.1 version: 5.8.1 @@ -129,13 +129,13 @@ importers: version: 2.0.18(@inquirer/prompts@7.2.1) '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.29.1) + version: 5.1.1(rollup@4.30.0) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.2(rollup@4.29.1) + version: 28.0.2(rollup@4.30.0) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.29.1) + version: 13.3.0(rollup@4.30.0) '@stylistic/eslint-plugin': specifier: ^2.8.0 version: 2.12.1(eslint@8.57.0)(typescript@5.7.2) @@ -209,14 +209,14 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.18.1 - version: 8.18.1(@typescript-eslint/parser@8.18.1)(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.19.0 + version: 8.19.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: 8.18.1 - version: 8.18.1(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.19.0 + version: 8.19.0(eslint@8.57.0)(typescript@5.7.2) '@vitejs/plugin-basic-ssl': specifier: 1.2.0 - version: 1.2.0(vite@6.0.5) + version: 1.2.0(vite@6.0.7) '@web/test-runner': specifier: ^0.19.0 version: 0.19.0 @@ -279,13 +279,13 @@ importers: version: 3.1.1(eslint@8.57.0) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0) + version: 2.31.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0) express: specifier: 4.21.2 version: 4.21.2 fast-glob: - specifier: 3.3.2 - version: 3.3.2 + specifier: 3.3.3 + version: 3.3.3 http-proxy: specifier: ^1.18.1 version: 1.18.1(debug@4.4.0) @@ -347,8 +347,8 @@ importers: specifier: 8.2.5 version: 8.2.5 lmdb: - specifier: 3.2.0 - version: 3.2.0 + specifier: 3.2.2 + version: 3.2.2 loader-utils: specifier: 3.3.1 version: 3.3.1 @@ -419,23 +419,23 @@ importers: specifier: 5.0.0 version: 5.0.0 rollup: - specifier: 4.29.1 - version: 4.29.1 + specifier: 4.30.0 + version: 4.30.0 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.1 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@18.19.68)(rollup@4.29.1) + version: 0.6.3(@types/node@18.19.68)(rollup@4.30.0) rxjs: specifier: 7.8.1 version: 7.8.1 sass: - specifier: 1.83.0 - version: 1.83.0 + specifier: 1.83.1 + version: 1.83.1 sass-loader: specifier: 16.0.4 - version: 16.0.4(sass@1.83.0)(webpack@5.97.1) + version: 16.0.4(sass@1.83.1)(webpack@5.97.1) semver: specifier: 7.6.3 version: 7.6.3 @@ -485,8 +485,8 @@ importers: specifier: ^10.0.0 version: 10.2.2 vite: - specifier: 6.0.5 - version: 6.0.5(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + specifier: 6.0.7 + version: 6.0.7(@types/node@18.19.68)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -2037,14 +2037,14 @@ packages: protractor: 7.0.0 dev: true - /@bazel/rollup@5.8.1(rollup@4.29.1): + /@bazel/rollup@5.8.1(rollup@4.30.0): resolution: {integrity: sha512-Ys+UWbRp1TY2j+z15N+SZgID/nuqAtJTgJDsz0NZVjm8F8KzmgXxLDnBb/cUKFVk83pNOAi84G/bq1tINjMSNA==} hasBin: true peerDependencies: rollup: '>=2.3.0 <3.0.0' dependencies: '@bazel/worker': 5.8.1 - rollup: 4.29.1 + rollup: 4.30.0 dev: true /@bazel/runfiles@5.8.1: @@ -2993,6 +2993,13 @@ packages: dev: true optional: true + /@lmdb/lmdb-darwin-arm64@3.2.2: + resolution: {integrity: sha512-WBSJT9Z7DTol5viq+DZD2TapeWOw7mlwXxiSBHgAzqVwsaVb0h/ekMD9iu/jDD8MUA20tO9N0WEdnT06fsUp+g==} + cpu: [arm64] + os: [darwin] + dev: true + optional: true + /@lmdb/lmdb-darwin-x64@3.2.0: resolution: {integrity: sha512-s/MXLuRXxJjQpg0aM/yN3FJh34tqEPo6Zg+FJvc9+gUNpzXzZwBB9MOTYA05WVrvxwtIKxMg7ocLjAH1LQUT3A==} cpu: [x64] @@ -3000,6 +3007,13 @@ packages: dev: true optional: true + /@lmdb/lmdb-darwin-x64@3.2.2: + resolution: {integrity: sha512-4S13kUtR7c/j/MzkTIBJCXv52hQ41LG2ukeaqw4Eng9K0pNKLFjo1sDSz96/yKhwykxrWDb13ddJ/ZqD3rAhUA==} + cpu: [x64] + os: [darwin] + dev: true + optional: true + /@lmdb/lmdb-linux-arm64@3.2.0: resolution: {integrity: sha512-XRkaZok4AkzMXKLfsdJYVBXYJ/6idDpuLIPGiVjelxKLbZIKB7F+Xp2BDfeelAPdjRbW/qhzF7FNA0u1blz/Og==} cpu: [arm64] @@ -3007,6 +3021,13 @@ packages: dev: true optional: true + /@lmdb/lmdb-linux-arm64@3.2.2: + resolution: {integrity: sha512-4hdgZtWI1idQlWRp+eleWXD9KLvObgboRaVoBj2POdPEYvsKANllvMW0El8tEQwtw74yB9NT6P8ENBB5UJf5+g==} + cpu: [arm64] + os: [linux] + dev: true + optional: true + /@lmdb/lmdb-linux-arm@3.2.0: resolution: {integrity: sha512-e9pljI8rZk1UAaDdi7sGiY0zkqsNAS3a4llOuk2UslAH4UP9vGZfjfCR5D+HKPUPbSEk28adOiNmIUT4N2lTBw==} cpu: [arm] @@ -3014,6 +3035,13 @@ packages: dev: true optional: true + /@lmdb/lmdb-linux-arm@3.2.2: + resolution: {integrity: sha512-uW31JmfuPAaLUYW7NsEU8gzwgDAzpGPwjvkxnKlcWd8iDutoPKDJi8Wk9lFmPEZRxVSB0j1/wDQ7N2qliR9UFA==} + cpu: [arm] + os: [linux] + dev: true + optional: true + /@lmdb/lmdb-linux-x64@3.2.0: resolution: {integrity: sha512-c8HMb044qzMT/wvk4HzBesRv3wQNeFkUFz6laH3FKVs0+ztM7snuT3izPWdeYhgCLkAiIqshqlcbvzQfPDeg2Q==} cpu: [x64] @@ -3021,6 +3049,13 @@ packages: dev: true optional: true + /@lmdb/lmdb-linux-x64@3.2.2: + resolution: {integrity: sha512-A0zjf4a2vM4B4GAx78ncuOTZ8Ka1DbTaG1Axf1e00Sa7f5coqlWiLg1PX7Gxvyibc2YqtqB+8tg1KKrE8guZVw==} + cpu: [x64] + os: [linux] + dev: true + optional: true + /@lmdb/lmdb-win32-x64@3.2.0: resolution: {integrity: sha512-xcrdSOPtpZ4ScWJM2x4g+eWCOctINOcaEWGSvZbmXPFD69SAFywyhqNsB3snAY3assYV0B52PWmiAwXWfijd+g==} cpu: [x64] @@ -3028,6 +3063,13 @@ packages: dev: true optional: true + /@lmdb/lmdb-win32-x64@3.2.2: + resolution: {integrity: sha512-Y0qoSCAja+xZE7QQ0LCHoYAuyI1n9ZqukQJa8lv9X3yCvWahFF7OYHAgVH1ejp43XWstj3U89/PAAzcowgF/uQ==} + cpu: [x64] + os: [win32] + dev: true + optional: true + /@microsoft/api-extractor-model@7.30.1(@types/node@18.19.68): resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} dependencies: @@ -3694,7 +3736,7 @@ packages: - supports-color dev: true - /@rollup/plugin-alias@5.1.1(rollup@4.29.1): + /@rollup/plugin-alias@5.1.1(rollup@4.30.0): resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3703,10 +3745,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.29.1 + rollup: 4.30.0 dev: true - /@rollup/plugin-commonjs@28.0.2(rollup@4.29.1): + /@rollup/plugin-commonjs@28.0.2(rollup@4.30.0): resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: @@ -3715,17 +3757,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.17 picomatch: 4.0.2 - rollup: 4.29.1 + rollup: 4.30.0 dev: true - /@rollup/plugin-json@6.1.0(rollup@4.29.1): + /@rollup/plugin-json@6.1.0(rollup@4.30.0): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3734,26 +3776,26 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) - rollup: 4.29.1 + '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + rollup: 4.30.0 dev: true - /@rollup/plugin-node-resolve@13.3.0(rollup@4.29.1): + /@rollup/plugin-node-resolve@13.3.0(rollup@4.30.0): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.29.1) + '@rollup/pluginutils': 3.1.0(rollup@4.30.0) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.9 - rollup: 4.29.1 + rollup: 4.30.0 dev: true - /@rollup/plugin-node-resolve@15.3.1(rollup@4.29.1): + /@rollup/plugin-node-resolve@15.3.1(rollup@4.30.0): resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3762,15 +3804,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.30.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.9 - rollup: 4.29.1 + rollup: 4.30.0 dev: true - /@rollup/pluginutils@3.1.0(rollup@4.29.1): + /@rollup/pluginutils@3.1.0(rollup@4.30.0): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -3779,10 +3821,10 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.29.1 + rollup: 4.30.0 dev: true - /@rollup/pluginutils@5.1.4(rollup@4.29.1): + /@rollup/pluginutils@5.1.4(rollup@4.30.0): resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3794,7 +3836,7 @@ packages: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 - rollup: 4.29.1 + rollup: 4.30.0 dev: true /@rollup/rollup-android-arm-eabi@4.28.1: @@ -3804,8 +3846,8 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm-eabi@4.29.1: - resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} + /@rollup/rollup-android-arm-eabi@4.30.0: + resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==} cpu: [arm] os: [android] dev: true @@ -3818,8 +3860,8 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm64@4.29.1: - resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} + /@rollup/rollup-android-arm64@4.30.0: + resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==} cpu: [arm64] os: [android] dev: true @@ -3832,8 +3874,8 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.29.1: - resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} + /@rollup/rollup-darwin-arm64@4.30.0: + resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==} cpu: [arm64] os: [darwin] dev: true @@ -3846,8 +3888,8 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-x64@4.29.1: - resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} + /@rollup/rollup-darwin-x64@4.30.0: + resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==} cpu: [x64] os: [darwin] dev: true @@ -3860,8 +3902,8 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-arm64@4.29.1: - resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} + /@rollup/rollup-freebsd-arm64@4.30.0: + resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==} cpu: [arm64] os: [freebsd] dev: true @@ -3874,8 +3916,8 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-x64@4.29.1: - resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} + /@rollup/rollup-freebsd-x64@4.30.0: + resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==} cpu: [x64] os: [freebsd] dev: true @@ -3888,8 +3930,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.29.1: - resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} + /@rollup/rollup-linux-arm-gnueabihf@4.30.0: + resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==} cpu: [arm] os: [linux] dev: true @@ -3902,8 +3944,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.29.1: - resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} + /@rollup/rollup-linux-arm-musleabihf@4.30.0: + resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==} cpu: [arm] os: [linux] dev: true @@ -3916,8 +3958,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.29.1: - resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} + /@rollup/rollup-linux-arm64-gnu@4.30.0: + resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==} cpu: [arm64] os: [linux] dev: true @@ -3930,8 +3972,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.29.1: - resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} + /@rollup/rollup-linux-arm64-musl@4.30.0: + resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==} cpu: [arm64] os: [linux] dev: true @@ -3944,8 +3986,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-loongarch64-gnu@4.29.1: - resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} + /@rollup/rollup-linux-loongarch64-gnu@4.30.0: + resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==} cpu: [loong64] os: [linux] dev: true @@ -3958,8 +4000,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.29.1: - resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} + /@rollup/rollup-linux-powerpc64le-gnu@4.30.0: + resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==} cpu: [ppc64] os: [linux] dev: true @@ -3972,8 +4014,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.29.1: - resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} + /@rollup/rollup-linux-riscv64-gnu@4.30.0: + resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==} cpu: [riscv64] os: [linux] dev: true @@ -3986,8 +4028,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.29.1: - resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} + /@rollup/rollup-linux-s390x-gnu@4.30.0: + resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==} cpu: [s390x] os: [linux] dev: true @@ -4000,8 +4042,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.29.1: - resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} + /@rollup/rollup-linux-x64-gnu@4.30.0: + resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==} cpu: [x64] os: [linux] dev: true @@ -4014,8 +4056,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.29.1: - resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} + /@rollup/rollup-linux-x64-musl@4.30.0: + resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==} cpu: [x64] os: [linux] dev: true @@ -4028,8 +4070,8 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.29.1: - resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} + /@rollup/rollup-win32-arm64-msvc@4.30.0: + resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==} cpu: [arm64] os: [win32] dev: true @@ -4042,8 +4084,8 @@ packages: dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.29.1: - resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} + /@rollup/rollup-win32-ia32-msvc@4.30.0: + resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==} cpu: [ia32] os: [win32] dev: true @@ -4056,8 +4098,8 @@ packages: dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.29.1: - resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} + /@rollup/rollup-win32-x64-msvc@4.30.0: + resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==} cpu: [x64] os: [win32] dev: true @@ -4192,7 +4234,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) eslint: 8.57.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -4826,8 +4868,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1)(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==} + /@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -4835,11 +4877,11 @@ packages: typescript: 5.7.2 dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/type-utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/parser': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -4850,17 +4892,17 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.18.1(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==} + /@typescript-eslint/parser@8.19.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 typescript: 5.7.2 @@ -4868,23 +4910,23 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@8.18.1: - resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} + /@typescript-eslint/scope-manager@8.19.0: + resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 dev: true - /@typescript-eslint/type-utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==} + /@typescript-eslint/type-utils@8.19.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 ts-api-utils: 1.4.3(typescript@5.7.2) @@ -4893,21 +4935,21 @@ packages: - supports-color dev: true - /@typescript-eslint/types@8.18.1: - resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} + /@typescript-eslint/types@8.19.0: + resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2): - resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} + /@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2): + resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.7.2 dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0(supports-color@10.0.0) - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -4917,28 +4959,28 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} + /@typescript-eslint/utils@8.19.0(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) eslint: 8.57.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.18.1: - resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} + /@typescript-eslint/visitor-keys@8.19.0: + resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 dev: true @@ -5179,13 +5221,13 @@ packages: vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.5): + /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.7): resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} engines: {node: '>=14.21.3'} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.5(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.7(@types/node@18.19.68)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) dev: true /@web/browser-logs@0.4.0: @@ -5232,11 +5274,11 @@ packages: resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.29.1) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.30.0) '@web/dev-server-core': 0.7.4 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.29.1 + rollup: 4.30.0 whatwg-url: 14.1.0 transitivePeerDependencies: - bufferutil @@ -6843,7 +6885,7 @@ packages: peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 globby: 14.0.2 normalize-path: 3.0.0 @@ -7766,7 +7808,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -7787,7 +7829,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.0(eslint@8.57.0)(typescript@5.7.2) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -7803,7 +7845,7 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -7814,7 +7856,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.0(eslint@8.57.0)(typescript@5.7.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.3 @@ -7823,7 +7865,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.16.0 is-glob: 4.0.3 @@ -8125,6 +8167,17 @@ packages: micromatch: 4.0.8 dev: true + /fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + dev: true + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true @@ -8660,7 +8713,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -8671,7 +8724,7 @@ packages: engines: {node: '>=18'} dependencies: '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 path-type: 5.0.0 slash: 5.1.0 @@ -10309,6 +10362,25 @@ packages: '@lmdb/lmdb-linux-x64': 3.2.0 '@lmdb/lmdb-win32-x64': 3.2.0 dev: true + optional: true + + /lmdb@3.2.2: + resolution: {integrity: sha512-LriG93la4PbmPMwI7Hbv8W+0ncLK7549w4sbZSi4QGDjnnxnmNMgxUkaQTEMzH8TpwsfFvgEjpLX7V8B/I9e3g==} + hasBin: true + dependencies: + msgpackr: 1.11.2 + node-addon-api: 6.1.0 + node-gyp-build-optional-packages: 5.2.2 + ordered-binary: 1.5.3 + weak-lru-cache: 1.2.2 + optionalDependencies: + '@lmdb/lmdb-darwin-arm64': 3.2.2 + '@lmdb/lmdb-darwin-x64': 3.2.2 + '@lmdb/lmdb-linux-arm': 3.2.2 + '@lmdb/lmdb-linux-arm64': 3.2.2 + '@lmdb/lmdb-linux-x64': 3.2.2 + '@lmdb/lmdb-win32-x64': 3.2.2 + dev: true /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} @@ -10915,7 +10987,7 @@ packages: optional: true dependencies: '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) - '@rollup/plugin-json': 6.1.0(rollup@4.29.1) + '@rollup/plugin-json': 6.1.0(rollup@4.30.0) '@rollup/wasm-node': 4.28.1 ajv: 8.17.1 ansi-colors: 4.1.3 @@ -10925,7 +10997,7 @@ packages: convert-source-map: 2.0.0 dependency-graph: 1.0.0 esbuild: 0.24.2 - fast-glob: 3.3.2 + fast-glob: 3.3.3 find-cache-dir: 3.3.2 injection-js: 2.4.0 jsonc-parser: 3.3.1 @@ -10934,11 +11006,11 @@ packages: piscina: 4.8.0 postcss: 8.4.49 rxjs: 7.8.1 - sass: 1.83.0 + sass: 1.83.1 tslib: 2.8.1 typescript: 5.7.2 optionalDependencies: - rollup: 4.29.1 + rollup: 4.30.0 dev: true /node-addon-api@6.1.0: @@ -12550,7 +12622,7 @@ packages: spdx-expression-validate: 2.0.0 dev: true - /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.68)(rollup@4.29.1): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.68)(rollup@4.30.0): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12560,9 +12632,9 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.29.1) + '@rollup/pluginutils': 3.1.0(rollup@4.30.0) '@types/node': 18.19.68 - rollup: 4.29.1 + rollup: 4.30.0 source-map-resolve: 0.6.0 dev: true @@ -12595,32 +12667,32 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.29.1: - resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} + /rollup@4.30.0: + resolution: {integrity: sha512-sDnr1pcjTgUT69qBksNF1N1anwfbyYG6TBQ22b03bII8EdiUQ7J0TlozVaTMjT/eEJAO49e1ndV7t+UZfL1+vA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.29.1 - '@rollup/rollup-android-arm64': 4.29.1 - '@rollup/rollup-darwin-arm64': 4.29.1 - '@rollup/rollup-darwin-x64': 4.29.1 - '@rollup/rollup-freebsd-arm64': 4.29.1 - '@rollup/rollup-freebsd-x64': 4.29.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 - '@rollup/rollup-linux-arm-musleabihf': 4.29.1 - '@rollup/rollup-linux-arm64-gnu': 4.29.1 - '@rollup/rollup-linux-arm64-musl': 4.29.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 - '@rollup/rollup-linux-riscv64-gnu': 4.29.1 - '@rollup/rollup-linux-s390x-gnu': 4.29.1 - '@rollup/rollup-linux-x64-gnu': 4.29.1 - '@rollup/rollup-linux-x64-musl': 4.29.1 - '@rollup/rollup-win32-arm64-msvc': 4.29.1 - '@rollup/rollup-win32-ia32-msvc': 4.29.1 - '@rollup/rollup-win32-x64-msvc': 4.29.1 + '@rollup/rollup-android-arm-eabi': 4.30.0 + '@rollup/rollup-android-arm64': 4.30.0 + '@rollup/rollup-darwin-arm64': 4.30.0 + '@rollup/rollup-darwin-x64': 4.30.0 + '@rollup/rollup-freebsd-arm64': 4.30.0 + '@rollup/rollup-freebsd-x64': 4.30.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.30.0 + '@rollup/rollup-linux-arm-musleabihf': 4.30.0 + '@rollup/rollup-linux-arm64-gnu': 4.30.0 + '@rollup/rollup-linux-arm64-musl': 4.30.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.30.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.30.0 + '@rollup/rollup-linux-riscv64-gnu': 4.30.0 + '@rollup/rollup-linux-s390x-gnu': 4.30.0 + '@rollup/rollup-linux-x64-gnu': 4.30.0 + '@rollup/rollup-linux-x64-musl': 4.30.0 + '@rollup/rollup-win32-arm64-msvc': 4.30.0 + '@rollup/rollup-win32-ia32-msvc': 4.30.0 + '@rollup/rollup-win32-x64-msvc': 4.30.0 fsevents: 2.3.3 dev: true @@ -12682,7 +12754,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@16.0.4(sass@1.83.0)(webpack@5.97.1): + /sass-loader@16.0.4(sass@1.83.1)(webpack@5.97.1): resolution: {integrity: sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -12704,7 +12776,7 @@ packages: optional: true dependencies: neo-async: 2.6.2 - sass: 1.83.0 + sass: 1.83.1 webpack: 5.97.1(esbuild@0.24.2) dev: true @@ -12720,6 +12792,18 @@ packages: '@parcel/watcher': 2.5.0 dev: true + /sass@1.83.1: + resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 4.0.3 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + dev: true + /saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} dependencies: @@ -14400,15 +14484,15 @@ packages: esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 - rollup: 4.29.1 + rollup: 4.30.0 sass: 1.83.0 terser: 5.37.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@6.0.5(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): - resolution: {integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==} + /vite@6.0.7(@types/node@18.19.68)(less@4.2.1)(sass@1.83.1)(terser@5.37.0): + resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -14448,11 +14532,11 @@ packages: optional: true dependencies: '@types/node': 18.19.68 - esbuild: 0.24.0 + esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 - rollup: 4.29.1 - sass: 1.83.0 + rollup: 4.30.0 + sass: 1.83.1 terser: 5.37.0 optionalDependencies: fsevents: 2.3.3 @@ -15047,7 +15131,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.29.1)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/8cd573656c96422cd30c7290361a539df9b02b1a} id: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a name: '@angular/bazel' @@ -15072,11 +15156,11 @@ packages: '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.29.1) - '@rollup/plugin-node-resolve': 13.3.0(rollup@4.29.1) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.0) + '@rollup/plugin-node-resolve': 13.3.0(rollup@4.30.0) magic-string: 0.30.17 - rollup: 4.29.1 - rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.68)(rollup@4.29.1) + rollup: 4.30.0 + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.68)(rollup@4.30.0) terser: 5.37.0 tslib: 2.8.1 typescript: 5.7.2 diff --git a/yarn.lock b/yarn.lock index d87e0e1b7ac6..0248c5286139 100644 --- a/yarn.lock +++ b/yarn.lock @@ -373,8 +373,8 @@ __metadata: "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" "@types/yarnpkg__lockfile": "npm:^1.1.5" - "@typescript-eslint/eslint-plugin": "npm:8.18.1" - "@typescript-eslint/parser": "npm:8.18.1" + "@typescript-eslint/eslint-plugin": "npm:8.19.0" + "@typescript-eslint/parser": "npm:8.19.0" "@vitejs/plugin-basic-ssl": "npm:1.2.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" @@ -398,7 +398,7 @@ __metadata: eslint-plugin-header: "npm:3.1.1" eslint-plugin-import: "npm:2.31.0" express: "npm:4.21.2" - fast-glob: "npm:3.3.2" + fast-glob: "npm:3.3.3" http-proxy: "npm:^1.18.1" http-proxy-middleware: "npm:3.0.3" https-proxy-agent: "npm:7.0.6" @@ -419,7 +419,7 @@ __metadata: less-loader: "npm:12.2.0" license-webpack-plugin: "npm:4.0.2" listr2: "npm:8.2.5" - lmdb: "npm:3.2.0" + lmdb: "npm:3.2.2" loader-utils: "npm:3.3.1" lodash: "npm:^4.17.21" magic-string: "npm:0.30.17" @@ -443,11 +443,11 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.29.1" + rollup: "npm:4.30.0" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" - sass: "npm:1.83.0" + sass: "npm:1.83.1" sass-loader: "npm:16.0.4" semver: "npm:7.6.3" shelljs: "npm:^0.8.5" @@ -465,7 +465,7 @@ __metadata: unenv: "npm:^1.10.0" verdaccio: "npm:6.0.5" verdaccio-auth-memory: "npm:^10.0.0" - vite: "npm:6.0.5" + vite: "npm:6.0.7" watchpack: "npm:2.4.2" webpack: "npm:5.97.1" webpack-dev-middleware: "npm:7.4.2" @@ -2897,6 +2897,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-darwin-arm64@npm:3.2.2": + version: 3.2.2 + resolution: "@lmdb/lmdb-darwin-arm64@npm:3.2.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@lmdb/lmdb-darwin-x64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.0" @@ -2904,6 +2911,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-darwin-x64@npm:3.2.2": + version: 3.2.2 + resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@lmdb/lmdb-linux-arm64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.0" @@ -2911,6 +2925,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-linux-arm64@npm:3.2.2": + version: 3.2.2 + resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@lmdb/lmdb-linux-arm@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-linux-arm@npm:3.2.0" @@ -2918,6 +2939,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-linux-arm@npm:3.2.2": + version: 3.2.2 + resolution: "@lmdb/lmdb-linux-arm@npm:3.2.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@lmdb/lmdb-linux-x64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-linux-x64@npm:3.2.0" @@ -2925,6 +2953,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-linux-x64@npm:3.2.2": + version: 3.2.2 + resolution: "@lmdb/lmdb-linux-x64@npm:3.2.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@lmdb/lmdb-win32-x64@npm:3.2.0": version: 3.2.0 resolution: "@lmdb/lmdb-win32-x64@npm:3.2.0" @@ -2932,6 +2967,13 @@ __metadata: languageName: node linkType: hard +"@lmdb/lmdb-win32-x64@npm:3.2.2": + version: 3.2.2 + resolution: "@lmdb/lmdb-win32-x64@npm:3.2.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@microsoft/api-extractor-model@npm:7.30.1": version: 7.30.1 resolution: "@microsoft/api-extractor-model@npm:7.30.1" @@ -3931,9 +3973,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.29.1" +"@rollup/rollup-android-arm-eabi@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.30.0" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -3945,9 +3987,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-android-arm64@npm:4.29.1" +"@rollup/rollup-android-arm64@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-android-arm64@npm:4.30.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -3959,9 +4001,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.29.1" +"@rollup/rollup-darwin-arm64@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.30.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -3973,9 +4015,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.29.1" +"@rollup/rollup-darwin-x64@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.30.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -3987,9 +4029,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.29.1" +"@rollup/rollup-freebsd-arm64@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.30.0" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -4001,9 +4043,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-freebsd-x64@npm:4.29.1" +"@rollup/rollup-freebsd-x64@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.30.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -4015,9 +4057,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.29.1" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.30.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard @@ -4029,9 +4071,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.29.1" +"@rollup/rollup-linux-arm-musleabihf@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.30.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard @@ -4043,9 +4085,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.29.1" +"@rollup/rollup-linux-arm64-gnu@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.30.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -4057,9 +4099,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.29.1" +"@rollup/rollup-linux-arm64-musl@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.30.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -4071,9 +4113,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.29.1" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.30.0" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard @@ -4085,9 +4127,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.29.1" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard @@ -4099,9 +4141,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.29.1" +"@rollup/rollup-linux-riscv64-gnu@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.30.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard @@ -4113,9 +4155,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.29.1" +"@rollup/rollup-linux-s390x-gnu@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.30.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -4127,9 +4169,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.29.1" +"@rollup/rollup-linux-x64-gnu@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.30.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -4141,9 +4183,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.29.1" +"@rollup/rollup-linux-x64-musl@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.30.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -4155,9 +4197,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.29.1" +"@rollup/rollup-win32-arm64-msvc@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.30.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -4169,9 +4211,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.29.1" +"@rollup/rollup-win32-ia32-msvc@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.30.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -4183,9 +4225,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.29.1": - version: 4.29.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.29.1" +"@rollup/rollup-win32-x64-msvc@npm:4.30.0": + version: 4.30.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.30.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -5304,15 +5346,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.18.1" +"@typescript-eslint/eslint-plugin@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.19.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.18.1" - "@typescript-eslint/type-utils": "npm:8.18.1" - "@typescript-eslint/utils": "npm:8.18.1" - "@typescript-eslint/visitor-keys": "npm:8.18.1" + "@typescript-eslint/scope-manager": "npm:8.19.0" + "@typescript-eslint/type-utils": "npm:8.19.0" + "@typescript-eslint/utils": "npm:8.19.0" + "@typescript-eslint/visitor-keys": "npm:8.19.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5321,23 +5363,23 @@ __metadata: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/7994d323228f3fc3ec124291cd02761251bcd9a5a6356001d2cb8f68abdb400c3cfbeb343d6941d8e6b6c8d2d616a278bbb3b6d9ed839ba5148a05f60a1f67b4 + checksum: 10c0/ceaa5063b68684b5608950b5e69f0caf1eadfc356cba82625240d6aae55f769faff599c38d35252dcb77a40d92e6fbf6d6264bc0c577d5c549da25061c3bd796 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/parser@npm:8.18.1" +"@typescript-eslint/parser@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/parser@npm:8.19.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.18.1" - "@typescript-eslint/types": "npm:8.18.1" - "@typescript-eslint/typescript-estree": "npm:8.18.1" - "@typescript-eslint/visitor-keys": "npm:8.18.1" + "@typescript-eslint/scope-manager": "npm:8.19.0" + "@typescript-eslint/types": "npm:8.19.0" + "@typescript-eslint/typescript-estree": "npm:8.19.0" + "@typescript-eslint/visitor-keys": "npm:8.19.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/23ab30b3f00b86108137e7df03710a088046ead3582595b0f8e17d5062770365e24e0a1ae3398bb3a1c29aa0f05a0de30887e2e0f6fb86163e878dd0eed1b25c + checksum: 10c0/064b0997963060490fc3f92c90cebc7c694f47a7657f7882ce9eb314786e0cf3e917bfccfad614d23038439d84e69a978bdc7054515b23201001dd427e524e64 languageName: node linkType: hard @@ -5351,18 +5393,28 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/type-utils@npm:8.18.1" +"@typescript-eslint/scope-manager@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/scope-manager@npm:8.19.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.18.1" - "@typescript-eslint/utils": "npm:8.18.1" + "@typescript-eslint/types": "npm:8.19.0" + "@typescript-eslint/visitor-keys": "npm:8.19.0" + checksum: 10c0/5052863d00db7ae939de27e91dc6c92df3c37a877e1ff44015ae9aa754d419b44d97d98b25fbb30a80dc58cf92606dad599e27f32b86d20c13b77ac12b4f2abc + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/type-utils@npm:8.19.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.19.0" + "@typescript-eslint/utils": "npm:8.19.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/cfe5362a22fa5e18a2662928904da024e42c84cb58a46238b9b61edafcd046f53c9505637176c8cd1c386165c6a6ed15a2b51700495cad6c20e0e33499d483a1 + checksum: 10c0/5a460b4d26fd68ded3567390cbac310500e94e9c69583fda3fb9930877663719e6831699bb6d85de6b940bcb7951a51ab1ef67c5fea8b76a13ea3a3783bbae28 languageName: node linkType: hard @@ -5373,6 +5425,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/types@npm:8.19.0" + checksum: 10c0/0062e7dce5f374e293c97f1f50fe450187f6b0eaf4971c818e18ef2f6baf4e9aa4e8605fba8d8fc464a504ee1130527b71ecb39d31687c31825942b9f569d902 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.18.1": version: 8.18.1 resolution: "@typescript-eslint/typescript-estree@npm:8.18.1" @@ -5391,7 +5450,40 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.18.1, @typescript-eslint/utils@npm:^8.13.0": +"@typescript-eslint/typescript-estree@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.19.0" + dependencies: + "@typescript-eslint/types": "npm:8.19.0" + "@typescript-eslint/visitor-keys": "npm:8.19.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^1.3.0" + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/ff47004588e8ff585af740b3e0bda07dc52310dbfeb2317eb4a723935740cf0c1953fc9ba57f14cf192bcfe373c46be833ba29d3303df8b501181bb852c7b822 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/utils@npm:8.19.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.19.0" + "@typescript-eslint/types": "npm:8.19.0" + "@typescript-eslint/typescript-estree": "npm:8.19.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10c0/7731f7fb66d54491769ca68fd04728138ceb6b785778ad491f8e9b2147802fa0ff480e520f6ea5fb73c8484d13a2ed3e35d44635f5bf4cfbdb04c313154097a9 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^8.13.0": version: 8.18.1 resolution: "@typescript-eslint/utils@npm:8.18.1" dependencies: @@ -5416,6 +5508,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.19.0" + dependencies: + "@typescript-eslint/types": "npm:8.19.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/a293def05018bb2259506e23cd8f14349f4386d0e51231893fbddf96ef73c219d5f9fe17b82e3c104f5c23956dbd9b87af3cff5e84b887af243139a3b4bbbe0d + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.1 resolution: "@ungap/structured-clone@npm:1.2.1" @@ -9011,7 +9113,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.24.2": +"esbuild@npm:0.24.2, esbuild@npm:^0.24.2": version: 0.24.2 resolution: "esbuild@npm:0.24.2" dependencies: @@ -9577,6 +9679,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:3.3.3": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -12599,6 +12714,41 @@ __metadata: languageName: node linkType: hard +"lmdb@npm:3.2.2": + version: 3.2.2 + resolution: "lmdb@npm:3.2.2" + dependencies: + "@lmdb/lmdb-darwin-arm64": "npm:3.2.2" + "@lmdb/lmdb-darwin-x64": "npm:3.2.2" + "@lmdb/lmdb-linux-arm": "npm:3.2.2" + "@lmdb/lmdb-linux-arm64": "npm:3.2.2" + "@lmdb/lmdb-linux-x64": "npm:3.2.2" + "@lmdb/lmdb-win32-x64": "npm:3.2.2" + msgpackr: "npm:^1.11.2" + node-addon-api: "npm:^6.1.0" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.2.2" + ordered-binary: "npm:^1.5.3" + weak-lru-cache: "npm:^1.2.2" + dependenciesMeta: + "@lmdb/lmdb-darwin-arm64": + optional: true + "@lmdb/lmdb-darwin-x64": + optional: true + "@lmdb/lmdb-linux-arm": + optional: true + "@lmdb/lmdb-linux-arm64": + optional: true + "@lmdb/lmdb-linux-x64": + optional: true + "@lmdb/lmdb-win32-x64": + optional: true + bin: + download-lmdb-prebuilds: bin/download-prebuilds.js + checksum: 10c0/fc903c525e1e6ca70fbbd30a43f0bc2924ff442f12289f32c5998bb3af768d36725065f6d879c78c16680a57f36f4cc25f70398a83fd408cd3e0fb761e092c63 + languageName: node + linkType: hard + "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" @@ -15768,29 +15918,29 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.29.1": - version: 4.29.1 - resolution: "rollup@npm:4.29.1" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.29.1" - "@rollup/rollup-android-arm64": "npm:4.29.1" - "@rollup/rollup-darwin-arm64": "npm:4.29.1" - "@rollup/rollup-darwin-x64": "npm:4.29.1" - "@rollup/rollup-freebsd-arm64": "npm:4.29.1" - "@rollup/rollup-freebsd-x64": "npm:4.29.1" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.29.1" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.29.1" - "@rollup/rollup-linux-arm64-gnu": "npm:4.29.1" - "@rollup/rollup-linux-arm64-musl": "npm:4.29.1" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.29.1" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.29.1" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.29.1" - "@rollup/rollup-linux-s390x-gnu": "npm:4.29.1" - "@rollup/rollup-linux-x64-gnu": "npm:4.29.1" - "@rollup/rollup-linux-x64-musl": "npm:4.29.1" - "@rollup/rollup-win32-arm64-msvc": "npm:4.29.1" - "@rollup/rollup-win32-ia32-msvc": "npm:4.29.1" - "@rollup/rollup-win32-x64-msvc": "npm:4.29.1" +"rollup@npm:4.30.0": + version: 4.30.0 + resolution: "rollup@npm:4.30.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.30.0" + "@rollup/rollup-android-arm64": "npm:4.30.0" + "@rollup/rollup-darwin-arm64": "npm:4.30.0" + "@rollup/rollup-darwin-x64": "npm:4.30.0" + "@rollup/rollup-freebsd-arm64": "npm:4.30.0" + "@rollup/rollup-freebsd-x64": "npm:4.30.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.30.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.30.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.30.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.30.0" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.30.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.30.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.30.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.30.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.30.0" + "@rollup/rollup-linux-x64-musl": "npm:4.30.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.30.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.30.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.30.0" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -15836,7 +15986,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/fcd0321df78fdc74b36858e92c4b73ebf5aa8f0b9cf7c446f008e0dc3c5c4ed855d662dc44e5a09c7794bbe91017b4dd7be88b619c239f0494f9f0fbfa67c557 + checksum: 10c0/72d01bda640ca075d98c52fa103af05091366377433b1e5be481472e3ef9b5c656aef9f0118d4187ece9c26d998557786523f228fae75caf02e0330624e793a9 languageName: node linkType: hard @@ -15967,6 +16117,23 @@ __metadata: languageName: node linkType: hard +"sass@npm:1.83.1": + version: 1.83.1 + resolution: "sass@npm:1.83.1" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + chokidar: "npm:^4.0.0" + immutable: "npm:^5.0.2" + source-map-js: "npm:>=0.6.2 <2.0.0" + dependenciesMeta: + "@parcel/watcher": + optional: true + bin: + sass: sass.js + checksum: 10c0/9772506cd8290df7b5e800055098e91a8a65100840fd9e90c660deb74b248b3ddbbd1a274b8f7f09777d472d2c873575357bd87939a40fb5a80bdf654985486f + languageName: node + linkType: hard + "saucelabs@npm:^1.5.0": version: 1.5.0 resolution: "saucelabs@npm:1.5.0" @@ -18174,11 +18341,11 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.5": - version: 6.0.5 - resolution: "vite@npm:6.0.5" +"vite@npm:6.0.7": + version: 6.0.7 + resolution: "vite@npm:6.0.7" dependencies: - esbuild: "npm:0.24.0" + esbuild: "npm:^0.24.2" fsevents: "npm:~2.3.3" postcss: "npm:^8.4.49" rollup: "npm:^4.23.0" @@ -18222,7 +18389,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/d6927e1795abf0bffbf9183c3c3338c7cc1060bcfbfcd951aa4464c1e5478216f26c95077a2bbd29edbaebc079c1f08a37c7daac8f07c0a6bb53e79d502c70ef + checksum: 10c0/ae81047b4290a7206b9394a39a782d509e9610462e7946422ba22d5bc615b5a322c07e33d7bf9dd0b3312ec3f5c63353b725913d1519324bfdf539b4f1e03f52 languageName: node linkType: hard From a0b4ea23c45ce048fcd9c8fa9d7ef74107a5d07d Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 6 Jan 2025 09:02:36 +0000 Subject: [PATCH 0202/2162] fix(@angular/build): handle relative URLs when constructing new URLs during server fetch Ensures proper handling of relative URLs to prevent errors in server-side fetch operations. Closes #29236 --- .../angular/build/src/utils/server-rendering/fetch-patch.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/fetch-patch.ts b/packages/angular/build/src/utils/server-rendering/fetch-patch.ts index 7216f732e732..c099d7dd902c 100644 --- a/packages/angular/build/src/utils/server-rendering/fetch-patch.ts +++ b/packages/angular/build/src/utils/server-rendering/fetch-patch.ts @@ -28,9 +28,9 @@ export function patchFetchToLoadInMemoryAssets(baseURL: URL): void { if (input instanceof URL) { url = input; } else if (typeof input === 'string') { - url = new URL(input); + url = new URL(input, baseURL); } else if (typeof input === 'object' && 'url' in input) { - url = new URL(input.url); + url = new URL(input.url, baseURL); } else { return originalFetch(input, init); } From aa6bf07f35fd0eab9e319ddedadafa06d027da47 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 6 Jan 2025 11:55:23 +0000 Subject: [PATCH 0203/2162] fix(@angular-devkit/architect): provide better error when builder is not defined When a builder is not defined a more actionable error message is now displayed. Closes #29226 --- .../architect/node/node-modules-architect-host.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/architect/node/node-modules-architect-host.ts b/packages/angular_devkit/architect/node/node-modules-architect-host.ts index feb90e803b4a..232b6503308e 100644 --- a/packages/angular_devkit/architect/node/node-modules-architect-host.ts +++ b/packages/angular_devkit/architect/node/node-modules-architect-host.ts @@ -55,6 +55,10 @@ function findProjectTarget( throw new Error('Project target does not exist.'); } + if (!targetDefinition.builder) { + throw new Error(`A builder is not set for target '${target}' in project '${project}'.`); + } + return targetDefinition; } @@ -74,9 +78,9 @@ export class WorkspaceNodeModulesArchitectHost implements ArchitectHost Date: Mon, 6 Jan 2025 13:32:22 +0000 Subject: [PATCH 0204/2162] refactor(@angular/build): normalize source path for windows compatibility This update resolves an issue that prevents SSR from functioning correctly on Windows when using the latest Vite. --- .../src/tools/vite/plugins/angular-memory-plugin.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts index 201ce171b3ea..47bfebb8ca15 100644 --- a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts @@ -47,27 +47,28 @@ export async function createAngularMemoryPlugin( } if (importer) { - if (source[0] === '.' && normalizePath(importer).startsWith(virtualProjectRoot)) { + const normalizedImporter = normalizePath(importer); + if (source[0] === '.' && normalizedImporter.startsWith(virtualProjectRoot)) { // Remove query if present - const [importerFile] = importer.split('?', 1); + const [importerFile] = normalizedImporter.split('?', 1); source = '/' + join(dirname(relative(virtualProjectRoot, importerFile)), source); } else if ( !ssr && source[0] === '/' && importer.endsWith('index.html') && - normalizePath(importer).startsWith(virtualProjectRoot) + normalizedImporter.startsWith(virtualProjectRoot) ) { // This is only needed when using SSR and `angularSsrMiddleware` (old style) to correctly resolve // .js files when using lazy-loading. // Remove query if present - const [importerFile] = importer.split('?', 1); + const [importerFile] = normalizedImporter.split('?', 1); source = '/' + join(dirname(relative(virtualProjectRoot, importerFile)), basename(source)); } } const [file] = source.split('?', 1); - if (outputFiles.has(file)) { + if (outputFiles.has(normalizePath(file))) { return join(virtualProjectRoot, source); } }, From 0581c4502cb468cbca4e99ab1e354f4412dba6d9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:30:06 -0500 Subject: [PATCH 0205/2162] refactor(@angular/build): support application incremental build result in dev-server The dev-server will now leverage the incremental build result data from the application builder. This removes the need to directly analyze all the newly built files within the dev-server to determine what type of update is needed. Incremental build results also only contain the files that are new and/or modified and removes the need to pass a potentially large amount of file content between the application build and the dev-server. --- .../src/builders/dev-server/vite-server.ts | 168 ++++++++++-------- 1 file changed, 92 insertions(+), 76 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 fb70e6f964d5..bc8f0cae28b0 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -147,6 +147,8 @@ export async function* serveWithVite( browserOptions.templateUpdates = serverOptions.liveReload && serverOptions.hmr && useComponentTemplateHmr; + browserOptions.incrementalResults = true; + // Setup the prebundling transformer that will be shared across Vite prebundling requests const prebundleTransformer = new JavaScriptTransformer( // Always enable JIT linking to support applications built with and without AOT. @@ -225,10 +227,25 @@ export async function* serveWithVite( } assetFiles.clear(); - for (const [outputPath, file] of Object.entries(result.files)) { + componentStyles.clear(); + generatedFiles.clear(); + for (const entry of Object.entries(result.files)) { + const [outputPath, file] = entry; if (file.origin === 'disk') { assetFiles.set('/' + normalizePath(outputPath), normalizePath(file.inputPath)); + continue; } + + updateResultRecord( + outputPath, + file, + normalizePath, + htmlIndexPath, + generatedFiles, + componentStyles, + // The initial build will not yet have a server setup + !server, + ); } // Invalidate SSR module graph to ensure that only new rebuild is used and not stale component updates @@ -239,18 +256,36 @@ export async function* serveWithVite( // Clear stale template updates on code rebuilds templateUpdates.clear(); - // Analyze result files for changes - analyzeResultFiles( - normalizePath, - htmlIndexPath, - result.files, - generatedFiles, - componentStyles, - ); break; case ResultKind.Incremental: assert(server, 'Builder must provide an initial full build before incremental results.'); - // TODO: Implement support -- application builder currently does not use + + for (const removed of result.removed) { + const filePath = '/' + normalizePath(removed.path); + generatedFiles.delete(filePath); + assetFiles.delete(filePath); + } + for (const modified of result.modified) { + updateResultRecord( + modified, + result.files[modified], + normalizePath, + htmlIndexPath, + generatedFiles, + componentStyles, + ); + } + for (const added of result.added) { + updateResultRecord( + added, + result.files[added], + normalizePath, + htmlIndexPath, + generatedFiles, + componentStyles, + ); + } + break; case ResultKind.ComponentUpdate: assert(serverOptions.hmr, 'Component updates are only supported with HMR enabled.'); @@ -444,12 +479,13 @@ async function handleUpdate( let destroyAngularServerAppCalled = false; // Invalidate any updated files - for (const [file, { updated, type }] of generatedFiles) { - if (!updated) { + for (const [file, record] of generatedFiles) { + if (!record.updated) { continue; } + record.updated = false; - if (type === BuildOutputFileType.ServerApplication && !destroyAngularServerAppCalled) { + if (record.type === BuildOutputFileType.ServerApplication && !destroyAngularServerAppCalled) { // Clear the server app cache // This must be done before module invalidation. const { ɵdestroyAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { @@ -541,85 +577,65 @@ async function handleUpdate( } } -function analyzeResultFiles( +function updateResultRecord( + outputPath: string, + file: ResultFile, normalizePath: (id: string) => string, htmlIndexPath: string, - resultFiles: Record, generatedFiles: Map, componentStyles: Map, -) { - const seen = new Set(['/index.html']); - for (const [outputPath, file] of Object.entries(resultFiles)) { - if (file.origin === 'disk') { - continue; - } - let filePath; - if (outputPath === htmlIndexPath) { - // Convert custom index output path to standard index path for dev-server usage. - // This mimics the Webpack dev-server behavior. - filePath = '/index.html'; - } else { - filePath = '/' + normalizePath(outputPath); - } - - seen.add(filePath); - - const servable = - file.type === BuildOutputFileType.Browser || file.type === BuildOutputFileType.Media; - - // Skip analysis of sourcemaps - if (filePath.endsWith('.map')) { - generatedFiles.set(filePath, { - contents: file.contents, - servable, - size: file.contents.byteLength, - hash: file.hash, - type: file.type, - updated: false, - }); + initial = false, +): void { + if (file.origin === 'disk') { + return; + } - continue; - } + let filePath; + if (outputPath === htmlIndexPath) { + // Convert custom index output path to standard index path for dev-server usage. + // This mimics the Webpack dev-server behavior. + filePath = '/index.html'; + } else { + filePath = '/' + normalizePath(outputPath); + } - const existingRecord = generatedFiles.get(filePath); - if ( - existingRecord && - existingRecord.size === file.contents.byteLength && - existingRecord.hash === file.hash - ) { - // Same file - existingRecord.updated = false; - continue; - } + const servable = + file.type === BuildOutputFileType.Browser || file.type === BuildOutputFileType.Media; - // New or updated file + // Skip analysis of sourcemaps + if (filePath.endsWith('.map')) { generatedFiles.set(filePath, { contents: file.contents, + servable, size: file.contents.byteLength, hash: file.hash, - updated: true, type: file.type, - servable, + updated: false, }); - // Record any external component styles - if (filePath.endsWith('.css') && /^\/[a-f0-9]{64}\.css$/.test(filePath)) { - const componentStyle = componentStyles.get(filePath); - if (componentStyle) { - componentStyle.rawContent = file.contents; - } else { - componentStyles.set(filePath, { - rawContent: file.contents, - }); - } - } + return; } - // Clear stale output files - for (const file of generatedFiles.keys()) { - if (!seen.has(file)) { - generatedFiles.delete(file); - componentStyles.delete(file); + // New or updated file + generatedFiles.set(filePath, { + contents: file.contents, + size: file.contents.byteLength, + hash: file.hash, + // Consider the files updated except on the initial build result + updated: !initial, + type: file.type, + servable, + }); + + // Record any external component styles + if (filePath.endsWith('.css') && /^\/[a-f0-9]{64}\.css$/.test(filePath)) { + const componentStyle = componentStyles.get(filePath); + if (componentStyle) { + componentStyle.rawContent = file.contents; + } else { + componentStyles.set(filePath, { + rawContent: file.contents, + }); } } } From 8b68d9fe7c82c88fd9c77384b81895b72ad2f9e8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 3 Jan 2025 11:43:03 -0500 Subject: [PATCH 0206/2162] build: migrate `@angular-devkit/schematics` to `ts_project` The `@angular-devkit/schematics` package has been migrated to the `rules_js` ts_project rule. The tsconfig path mappings for the `@angular-devkit` scope have also been cleaned up now that all the packages within this scope have been migrated. --- .../angular_devkit/schematics/BUILD.bazel | 43 +++++++++---------- packages/angular_devkit/schematics/index.ts | 9 ++++ .../schematics/tasks/BUILD.bazel | 18 ++++---- .../schematics/tasks/node/BUILD.bazel | 15 ++++--- .../schematics/testing/BUILD.bazel | 15 +++---- .../schematics/tools/BUILD.bazel | 37 ++++++++-------- tsconfig.json | 11 +---- 7 files changed, 71 insertions(+), 77 deletions(-) create mode 100644 packages/angular_devkit/schematics/index.ts diff --git a/packages/angular_devkit/schematics/BUILD.bazel b/packages/angular_devkit/schematics/BUILD.bazel index faad7db6d491..3ae57303c3a7 100644 --- a/packages/angular_devkit/schematics/BUILD.bazel +++ b/packages/angular_devkit/schematics/BUILD.bazel @@ -1,6 +1,7 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -12,52 +13,49 @@ licenses(["notice"]) # @angular-devkit/schematics -ts_library( +ts_project( name = "schematics", - package_name = "@angular-devkit/schematics", srcs = glob( include = ["src/**/*.ts"], exclude = [ "src/**/*_spec.ts", ], - ), + ) + ["index.ts"], data = [ "package.json", ], - module_name = "@angular-devkit/schematics", - module_root = "src/index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", # TODO: get rid of this for 6.0 - "@npm//@types/node", - "@npm//jsonc-parser", - "@npm//magic-string", - "@npm//rxjs", + ], + module_name = "@angular-devkit/schematics", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/jsonc-parser", + "//:root_modules/magic-string", + "//:root_modules/rxjs", ], ) -# @external_begin - -ts_library( +ts_project( name = "schematics_test_lib", testonly = True, srcs = glob(["src/**/*_spec.ts"]), - deps = [ - ":schematics", + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/angular_devkit/schematics/testing", - "@npm//rxjs", + ], + deps = [ + ":schematics_rjs", + "//:root_modules/@types/jasmine", + "//:root_modules/rxjs", ], ) jasmine_node_test( name = "schematics_test", - srcs = [":schematics_test_lib"], - deps = [ - "@npm//jasmine", - "@npm//source-map", - ], + deps = [":schematics_test_lib"], ) genrule( @@ -96,4 +94,3 @@ api_golden_test_npm_package( npm_package = "angular_cli/packages/angular_devkit/schematics/npm_package", types = ["@npm//@types/node"], ) -# @external_end diff --git a/packages/angular_devkit/schematics/index.ts b/packages/angular_devkit/schematics/index.ts new file mode 100644 index 000000000000..e6da94cc7ded --- /dev/null +++ b/packages/angular_devkit/schematics/index.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 + */ + +export * from './src/index'; diff --git a/packages/angular_devkit/schematics/tasks/BUILD.bazel b/packages/angular_devkit/schematics/tasks/BUILD.bazel index 1d5e505e8965..32498fd38bad 100644 --- a/packages/angular_devkit/schematics/tasks/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,7 +8,7 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "tasks", srcs = glob( include = ["**/*.ts"], @@ -18,15 +18,15 @@ ts_library( ], ), data = ["package.json"], - module_name = "@angular-devkit/schematics/tasks", - module_root = "index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/angular_devkit/schematics", - "@npm//@types/node", - "@npm//ora", - "@npm//rxjs", - "@npm//typescript", + ], + module_name = "@angular-devkit/schematics/tasks", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/ora", + "//:root_modules/rxjs", ], ) diff --git a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel index 3745f800ef56..a84516b4f6de 100644 --- a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,7 +8,7 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "node", srcs = glob( include = ["**/*.ts"], @@ -16,14 +16,15 @@ ts_library( "**/*_spec.ts", ], ), - module_name = "@angular-devkit/schematics/tasks/node", - module_root = "index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", - "@npm//@types/node", - "@npm//rxjs", + ], + module_name = "@angular-devkit/schematics/tasks/node", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/rxjs", ], ) diff --git a/packages/angular_devkit/schematics/testing/BUILD.bazel b/packages/angular_devkit/schematics/testing/BUILD.bazel index 058aa3df6d47..cb1227cb11b3 100644 --- a/packages/angular_devkit/schematics/testing/BUILD.bazel +++ b/packages/angular_devkit/schematics/testing/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,21 +8,20 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "testing", srcs = glob( include = ["**/*.ts"], ), data = ["package.json"], - module_name = "@angular-devkit/schematics/testing", - module_root = "index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/tasks/node", "//packages/angular_devkit/schematics/tools", - "@npm//@types/node", - "@npm//rxjs", + ], + module_name = "@angular-devkit/schematics/testing", + deps = [ + "//:root_modules/rxjs", ], ) diff --git a/packages/angular_devkit/schematics/tools/BUILD.bazel b/packages/angular_devkit/schematics/tools/BUILD.bazel index 887fa5a8aa8a..28491235a34b 100644 --- a/packages/angular_devkit/schematics/tools/BUILD.bazel +++ b/packages/angular_devkit/schematics/tools/BUILD.bazel @@ -1,5 +1,5 @@ load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -9,7 +9,7 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "tools", srcs = glob( include = ["**/*.ts"], @@ -19,23 +19,22 @@ ts_library( ], ), data = ["package.json"], - module_name = "@angular-devkit/schematics/tools", - module_root = "index.d.ts", - deps = [ + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics/tasks", "//packages/angular_devkit/schematics/tasks/node", - "@npm//@types/node", - "@npm//jsonc-parser", - "@npm//rxjs", + ], + module_name = "@angular-devkit/schematics/tools", + deps = [ + "//:root_modules/@types/node", + "//:root_modules/jsonc-parser", + "//:root_modules/rxjs", ], ) -# @external_begin - -ts_library( +ts_project( name = "tools_test_lib", testonly = True, srcs = glob( @@ -44,24 +43,22 @@ ts_library( "test/**/*.ts", ], ), - deps = [ - ":tools", + interop_deps = [ "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", "//packages/angular_devkit/schematics", "//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", - "@npm//rxjs", + ], + deps = [ + ":tools_rjs", + "//:root_modules/@types/jasmine", + "//:root_modules/rxjs", ], ) jasmine_node_test( name = "tools_test", - srcs = [":tools_test_lib"], - deps = [ - "@npm//jasmine", - "@npm//source-map", - ], + deps = [":tools_test_lib"], ) -# @external_end diff --git a/tsconfig.json b/tsconfig.json index e2b7ab4082b8..259b92b6e5dc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,18 +16,9 @@ "rootDir": ".", "rootDirs": [".", "./dist-schema/bin/"], "paths": { - "@angular-devkit/core/node": ["./packages/angular_devkit/core/node/index"], - "@angular-devkit/core/node/testing": ["./packages/angular_devkit/core/node/testing/index"], - "@angular-devkit/schematics/tasks": ["./packages/angular_devkit/schematics/tasks/index"], - "@angular-devkit/schematics/tasks/node": [ - "./packages/angular_devkit/schematics/tasks/node/index" - ], - "@angular-devkit/schematics/tools": ["./packages/angular_devkit/schematics/tools/index"], - "@angular-devkit/schematics/testing": ["./packages/angular_devkit/schematics/testing/index"], - "@angular-devkit/architect/*": ["./packages/angular_devkit/architect/*/index"], "@angular-devkit/build-webpack": ["./packages/angular_devkit/build_webpack"], "@angular-devkit/build-angular": ["./packages/angular_devkit/build_angular"], - "@angular-devkit/*": ["./packages/angular_devkit/*/src"], + "@angular-devkit/*": ["./packages/angular_devkit/*/index"], "@angular/ssr": ["./packages/angular/ssr"], "@angular/ssr/node": ["./packages/angular/ssr/node"], "@angular/*": ["./packages/angular/*/src"], From 7b15a15af85918f9802685a463ccdfc0f920b35c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 2 Jan 2025 10:16:45 -0500 Subject: [PATCH 0207/2162] build: migrate tests infrastructure to `ts_project` The miscellaneous test infrastructure targets within `tests/` have been migrated to the `rules_js` ts_project rule. --- .../architect/node/jobs/BUILD.bazel | 8 ++++---- .../tools/file-system-engine-host/BUILD.bazel | 17 +++++++---------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/tests/angular_devkit/architect/node/jobs/BUILD.bazel b/tests/angular_devkit/architect/node/jobs/BUILD.bazel index c2a823009340..912028a0b1cb 100644 --- a/tests/angular_devkit/architect/node/jobs/BUILD.bazel +++ b/tests/angular_devkit/architect/node/jobs/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,7 +8,7 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) -ts_library( +ts_project( name = "jobs_test_lib", srcs = glob( include = [ @@ -16,7 +16,7 @@ ts_library( ], ), deps = [ - "//packages/angular_devkit/architect", - "@npm//@types/node", + "//:root_modules/@types/node", + "//packages/angular_devkit/architect:architect_rjs", ], ) diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel b/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel index 2042fdb3a2a1..b7736f06a4a8 100644 --- a/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel +++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") # Copyright Google Inc. All Rights Reserved. # @@ -8,7 +8,7 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) -ts_library( +ts_project( name = "file_system_engine_host_test_lib", srcs = glob( include = [ @@ -21,14 +21,11 @@ ts_library( "**/*.js", ], ), - deps = [ + interop_deps = [ "//packages/angular_devkit/schematics", - # ":testing", - # "//packages/angular_devkit/core", - # "//packages/angular_devkit/core/node", - # "@npm//rxjs", - # - "@npm//@types/jasmine", - "@npm//@types/node", + ], + deps = [ + "//:root_modules/@types/jasmine", + "//:root_modules/@types/node", ], ) From 783cc7f9720a5b526a4e2b6a9ab2d2dc60eee3e2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 6 Jan 2025 23:04:52 +0000 Subject: [PATCH 0208/2162] build: lock file maintenance --- .../npm_translate_lock_MzA5NzUwNzMx | 4 +- pnpm-lock.yaml | 952 ++++++++++-------- yarn.lock | 846 ++++++++-------- 3 files changed, 988 insertions(+), 814 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index f0e174f14c69..ab50318a3a24 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -3,6 +3,6 @@ # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 package.json=921023999 -pnpm-lock.yaml=-1451571958 +pnpm-lock.yaml=-398883266 pnpm-workspace.yaml=1711114604 -yarn.lock=-2102002357 +yarn.lock=-602836965 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb9fe80bcefc..d8f3c05b3e9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a - version: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6 version: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -120,10 +120,10 @@ importers: version: 0.6.3 '@inquirer/confirm': specifier: 5.1.1 - version: 5.1.1(@types/node@18.19.68) + version: 5.1.1(@types/node@18.19.70) '@inquirer/prompts': specifier: 7.2.1 - version: 7.2.1(@types/node@18.19.68) + version: 7.2.1(@types/node@18.19.70) '@listr2/prompt-adapter-inquirer': specifier: 2.0.18 version: 2.0.18(@inquirer/prompts@7.2.1) @@ -171,10 +171,10 @@ importers: version: 2.0.6 '@types/lodash': specifier: ^4.17.0 - version: 4.17.13 + version: 4.17.14 '@types/node': specifier: ^18.13.0 - version: 18.19.68 + version: 18.19.70 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -426,7 +426,7 @@ importers: version: 3.0.1 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@18.19.68)(rollup@4.30.0) + version: 0.6.3(@types/node@18.19.70)(rollup@4.30.0) rxjs: specifier: 7.8.1 version: 7.8.1 @@ -465,7 +465,7 @@ importers: version: 1.2.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@18.19.68)(typescript@5.7.2) + version: 10.9.2(@types/node@18.19.70)(typescript@5.7.2) tslib: specifier: 2.8.1 version: 2.8.1 @@ -486,7 +486,7 @@ importers: version: 10.2.2 vite: specifier: 6.0.7 - version: 6.0.7(@types/node@18.19.68)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) + version: 6.0.7(@types/node@18.19.70)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) watchpack: specifier: 2.4.2 version: 2.4.2 @@ -578,7 +578,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): resolution: {integrity: sha512-HDyPsyyqbMpUQXA3VBcfFcGu6sj0vxKL/DEKxnxIgbC9dZ/01yNDMTPIszpGg16fRPt10xEefx3hUFMMgYzWJQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -619,7 +619,7 @@ packages: '@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/core@7.26.0) - '@inquirer/confirm': 5.1.0(@types/node@18.19.68) + '@inquirer/confirm': 5.1.0(@types/node@18.19.70) '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.3) beasties: 0.2.0 browserslist: 4.24.3 @@ -639,7 +639,7 @@ packages: sass: 1.83.0 semver: 7.6.3 typescript: 5.7.2 - vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: lmdb: 3.2.0 @@ -985,7 +985,7 @@ packages: '@babel/helper-plugin-utils': 7.25.9 debug: 4.4.0(supports-color@10.0.0) lodash.debounce: 4.0.8 - resolve: 1.22.9 + resolve: 1.22.10 transitivePeerDependencies: - supports-color dev: true @@ -2605,7 +2605,7 @@ packages: '@google-cloud/promisify': 4.0.0 '@grpc/proto-loader': 0.7.13 '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 1.30.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 @@ -2634,8 +2634,8 @@ packages: - supports-color dev: true - /@grpc/grpc-js@1.12.4: - resolution: {integrity: sha512-NBhrxEWnFh0FxeA0d//YP95lRFsSx2TNLEUQg4/W+5f/BMxcCjgOOIT24iD+ZB/tZw057j44DaIxja7w4XMrhg==} + /@grpc/grpc-js@1.12.5: + resolution: {integrity: sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==} engines: {node: '>=12.10.0'} dependencies: '@grpc/proto-loader': 0.7.13 @@ -2679,48 +2679,48 @@ packages: deprecated: Use @eslint/object-schema instead dev: true - /@inquirer/checkbox@4.0.4(@types/node@18.19.68): + /@inquirer/checkbox@4.0.4(@types/node@18.19.70): resolution: {integrity: sha512-fYAKCAcGNMdfjL6hZTRUwkIByQ8EIZCXKrIQZH7XjADnN/xvRUhj8UdBbpC4zoUzvChhkSC/zRKaP/tDs3dZpg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.70) '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/confirm@5.1.0(@types/node@18.19.68): + /@inquirer/confirm@5.1.0(@types/node@18.19.70): resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 dev: true - /@inquirer/confirm@5.1.1(@types/node@18.19.68): + /@inquirer/confirm@5.1.1(@types/node@18.19.70): resolution: {integrity: sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 dev: true - /@inquirer/core@10.1.2(@types/node@18.19.68): + /@inquirer/core@10.1.2(@types/node@18.19.70): resolution: {integrity: sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==} engines: {node: '>=18'} dependencies: '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@18.19.68) + '@inquirer/type': 3.0.2(@types/node@18.19.70) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2732,27 +2732,27 @@ packages: - '@types/node' dev: true - /@inquirer/editor@4.2.1(@types/node@18.19.68): + /@inquirer/editor@4.2.1(@types/node@18.19.70): resolution: {integrity: sha512-xn9aDaiP6nFa432i68JCaL302FyL6y/6EG97nAtfIPnWZ+mWPgCMLGc4XZ2QQMsZtu9q3Jd5AzBPjXh10aX9kA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 external-editor: 3.1.0 dev: true - /@inquirer/expand@4.0.4(@types/node@18.19.68): + /@inquirer/expand@4.0.4(@types/node@18.19.70): resolution: {integrity: sha512-GYocr+BPyxKPxQ4UZyNMqZFSGKScSUc0Vk17II3J+0bDcgGsQm0KYQNooN1Q5iBfXsy3x/VWmHGh20QnzsaHwg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 yoctocolors-cjs: 2.1.2 dev: true @@ -2761,94 +2761,94 @@ packages: engines: {node: '>=18'} dev: true - /@inquirer/input@4.1.1(@types/node@18.19.68): + /@inquirer/input@4.1.1(@types/node@18.19.70): resolution: {integrity: sha512-nAXAHQndZcXB+7CyjIW3XuQZZHbQQ0q8LX6miY6bqAWwDzNa9JUioDBYrFmOUNIsuF08o1WT/m2gbBXvBhYVxg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 dev: true - /@inquirer/number@3.0.4(@types/node@18.19.68): + /@inquirer/number@3.0.4(@types/node@18.19.70): resolution: {integrity: sha512-DX7a6IXRPU0j8kr2ovf+QaaDiIf+zEKaZVzCWdLOTk7XigqSXvoh4cul7x68xp54WTQrgSnW7P1WBJDbyY3GhA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 dev: true - /@inquirer/password@4.0.4(@types/node@18.19.68): + /@inquirer/password@4.0.4(@types/node@18.19.70): resolution: {integrity: sha512-wiliQOWdjM8FnBmdIHtQV2Ca3S1+tMBUerhyjkRCv1g+4jSvEweGu9GCcvVEgKDhTBT15nrxvk5/bVrGUqSs1w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 ansi-escapes: 4.3.2 dev: true - /@inquirer/prompts@7.2.1(@types/node@18.19.68): + /@inquirer/prompts@7.2.1(@types/node@18.19.70): resolution: {integrity: sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/checkbox': 4.0.4(@types/node@18.19.68) - '@inquirer/confirm': 5.1.1(@types/node@18.19.68) - '@inquirer/editor': 4.2.1(@types/node@18.19.68) - '@inquirer/expand': 4.0.4(@types/node@18.19.68) - '@inquirer/input': 4.1.1(@types/node@18.19.68) - '@inquirer/number': 3.0.4(@types/node@18.19.68) - '@inquirer/password': 4.0.4(@types/node@18.19.68) - '@inquirer/rawlist': 4.0.4(@types/node@18.19.68) - '@inquirer/search': 3.0.4(@types/node@18.19.68) - '@inquirer/select': 4.0.4(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/checkbox': 4.0.4(@types/node@18.19.70) + '@inquirer/confirm': 5.1.1(@types/node@18.19.70) + '@inquirer/editor': 4.2.1(@types/node@18.19.70) + '@inquirer/expand': 4.0.4(@types/node@18.19.70) + '@inquirer/input': 4.1.1(@types/node@18.19.70) + '@inquirer/number': 3.0.4(@types/node@18.19.70) + '@inquirer/password': 4.0.4(@types/node@18.19.70) + '@inquirer/rawlist': 4.0.4(@types/node@18.19.70) + '@inquirer/search': 3.0.4(@types/node@18.19.70) + '@inquirer/select': 4.0.4(@types/node@18.19.70) + '@types/node': 18.19.70 dev: true - /@inquirer/rawlist@4.0.4(@types/node@18.19.68): + /@inquirer/rawlist@4.0.4(@types/node@18.19.70): resolution: {integrity: sha512-IsVN2EZdNHsmFdKWx9HaXb8T/s3FlR/U1QPt9dwbSyPtjFbMTlW9CRFvnn0bm/QIsrMRD2oMZqrQpSWPQVbXXg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/core': 10.1.2(@types/node@18.19.70) + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/search@3.0.4(@types/node@18.19.68): + /@inquirer/search@3.0.4(@types/node@18.19.70): resolution: {integrity: sha512-tSkJk2SDmC2MEdTIjknXWmCnmPr5owTs9/xjfa14ol1Oh95n6xW7SYn5fiPk4/vrJPys0ggSWiISdPze4LTa7A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.70) '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/select@4.0.4(@types/node@18.19.68): + /@inquirer/select@4.0.4(@types/node@18.19.70): resolution: {integrity: sha512-ZzYLuLoUzTIW9EJm++jBpRiTshGqS3Q1o5qOEQqgzaBlmdsjQr6pA4TUNkwu6OBYgM2mIRbCz6mUhFDfl/GF+w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.68) + '@inquirer/core': 10.1.2(@types/node@18.19.70) '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@18.19.68) - '@types/node': 18.19.68 + '@inquirer/type': 3.0.2(@types/node@18.19.70) + '@types/node': 18.19.70 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 dev: true @@ -2860,13 +2860,13 @@ packages: mute-stream: 1.0.0 dev: true - /@inquirer/type@3.0.2(@types/node@18.19.68): + /@inquirer/type@3.0.2(@types/node@18.19.70): resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' dependencies: - '@types/node': 18.19.68 + '@types/node': 18.19.70 dev: true /@isaacs/cliui@8.0.2: @@ -2982,7 +2982,7 @@ packages: peerDependencies: '@inquirer/prompts': '>= 3 < 8' dependencies: - '@inquirer/prompts': 7.2.1(@types/node@18.19.68) + '@inquirer/prompts': 7.2.1(@types/node@18.19.70) '@inquirer/type': 1.5.5 dev: true @@ -3070,30 +3070,30 @@ packages: dev: true optional: true - /@microsoft/api-extractor-model@7.30.1(@types/node@18.19.68): + /@microsoft/api-extractor-model@7.30.1(@types/node@18.19.70): resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.1(@types/node@18.19.68) + '@rushstack/node-core-library': 5.10.1(@types/node@18.19.70) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.48.1(@types/node@18.19.68): + /@microsoft/api-extractor@7.48.1(@types/node@18.19.70): resolution: {integrity: sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.30.1(@types/node@18.19.68) + '@microsoft/api-extractor-model': 7.30.1(@types/node@18.19.70) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.1(@types/node@18.19.68) + '@rushstack/node-core-library': 5.10.1(@types/node@18.19.70) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.4(@types/node@18.19.68) - '@rushstack/ts-command-line': 4.23.2(@types/node@18.19.68) + '@rushstack/terminal': 0.14.4(@types/node@18.19.70) + '@rushstack/ts-command-line': 4.23.2(@types/node@18.19.70) lodash: 4.17.21 minimatch: 3.0.8 - resolve: 1.22.9 + resolve: 1.22.10 semver: 7.5.4 source-map: 0.6.1 typescript: 5.7.2 @@ -3107,7 +3107,7 @@ packages: '@microsoft/tsdoc': 0.15.1 ajv: 8.12.0 jju: 1.4.0 - resolve: 1.22.9 + resolve: 1.22.10 dev: true /@microsoft/tsdoc@0.15.1: @@ -3325,7 +3325,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fastq: 1.18.0 dev: true /@npmcli/agent@3.0.0: @@ -3426,32 +3426,32 @@ packages: engines: {node: '>= 18'} dev: true - /@octokit/core@6.1.2: - resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==} + /@octokit/core@6.1.3: + resolution: {integrity: sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==} engines: {node: '>= 18'} dependencies: '@octokit/auth-token': 5.1.1 - '@octokit/graphql': 8.1.1 - '@octokit/request': 9.1.3 - '@octokit/request-error': 6.1.5 + '@octokit/graphql': 8.1.2 + '@octokit/request': 9.1.4 + '@octokit/request-error': 6.1.6 '@octokit/types': 13.6.2 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 dev: true - /@octokit/endpoint@10.1.1: - resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==} + /@octokit/endpoint@10.1.2: + resolution: {integrity: sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==} engines: {node: '>= 18'} dependencies: '@octokit/types': 13.6.2 universal-user-agent: 7.0.2 dev: true - /@octokit/graphql@8.1.1: - resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==} + /@octokit/graphql@8.1.2: + resolution: {integrity: sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==} engines: {node: '>= 18'} dependencies: - '@octokit/request': 9.1.3 + '@octokit/request': 9.1.4 '@octokit/types': 13.6.2 universal-user-agent: 7.0.2 dev: true @@ -3460,49 +3460,50 @@ packages: resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} dev: true - /@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.2): + /@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.3): resolution: {integrity: sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' dependencies: - '@octokit/core': 6.1.2 + '@octokit/core': 6.1.3 '@octokit/types': 13.6.2 dev: true - /@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.2): + /@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.3): resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' dependencies: - '@octokit/core': 6.1.2 + '@octokit/core': 6.1.3 dev: true - /@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2): + /@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.3): resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' dependencies: - '@octokit/core': 6.1.2 + '@octokit/core': 6.1.3 '@octokit/types': 13.6.2 dev: true - /@octokit/request-error@6.1.5: - resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==} + /@octokit/request-error@6.1.6: + resolution: {integrity: sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==} engines: {node: '>= 18'} dependencies: '@octokit/types': 13.6.2 dev: true - /@octokit/request@9.1.3: - resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==} + /@octokit/request@9.1.4: + resolution: {integrity: sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==} engines: {node: '>= 18'} dependencies: - '@octokit/endpoint': 10.1.1 - '@octokit/request-error': 6.1.5 + '@octokit/endpoint': 10.1.2 + '@octokit/request-error': 6.1.6 '@octokit/types': 13.6.2 + fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 dev: true @@ -3510,10 +3511,10 @@ packages: resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==} engines: {node: '>= 18'} dependencies: - '@octokit/core': 6.1.2 - '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) - '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.2) - '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2) + '@octokit/core': 6.1.3 + '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.3) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.3) + '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.3) dev: true /@octokit/types@13.6.2: @@ -3527,8 +3528,8 @@ packages: engines: {node: '>=8.0.0'} dev: true - /@opentelemetry/context-async-hooks@1.29.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-TKT91jcFXgHyIDF1lgJF3BHGIakn6x0Xp7Tq3zoS3TMPzT9IlP0xEavWP8C1zGjU9UmZP2VR1tJhW9Az1A3w8Q==} + /@opentelemetry/context-async-hooks@1.30.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-roCetrG/cz0r/gugQm/jFo75UxblVvHaNSRoR0kSSRSzXFAiIBqFCZuH458BHBNRtRe+0yJdIJ21L9t94bw7+g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -3791,7 +3792,7 @@ packages: deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.9 + resolve: 1.22.10 rollup: 4.30.0 dev: true @@ -3808,7 +3809,7 @@ packages: '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.9 + resolve: 1.22.10 rollup: 4.30.0 dev: true @@ -4105,8 +4106,8 @@ packages: dev: true optional: true - /@rollup/wasm-node@4.28.1: - resolution: {integrity: sha512-t4ckEC09V3wbe0r6T4fGjq85lEbvGcGxn7QYYgjHyKNzZaQU5kFqr4FsavXYHRiVNYq8m+dRhdGjpfcC9UzzPg==} + /@rollup/wasm-node@4.30.0: + resolution: {integrity: sha512-fRkB9VoRK/rWFVMw3eaBz8x3I74xoX9HXM01yM4qmm7Uptzq/jM8TJZEJPBGqyMZtEhU6HORUAOPX38wmXJj1g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: @@ -4119,7 +4120,7 @@ packages: resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true - /@rushstack/node-core-library@5.10.1(@types/node@18.19.68): + /@rushstack/node-core-library@5.10.1(@types/node@18.19.70): resolution: {integrity: sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==} peerDependencies: '@types/node': '*' @@ -4127,25 +4128,25 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 18.19.68 + '@types/node': 18.19.70 ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) ajv-formats: 3.0.1(ajv@8.13.0) fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.9 + resolve: 1.22.10 semver: 7.5.4 dev: true /@rushstack/rig-package@0.5.3: resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} dependencies: - resolve: 1.22.9 + resolve: 1.22.10 strip-json-comments: 3.1.1 dev: true - /@rushstack/terminal@0.14.4(@types/node@18.19.68): + /@rushstack/terminal@0.14.4(@types/node@18.19.70): resolution: {integrity: sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==} peerDependencies: '@types/node': '*' @@ -4153,15 +4154,15 @@ packages: '@types/node': optional: true dependencies: - '@rushstack/node-core-library': 5.10.1(@types/node@18.19.68) - '@types/node': 18.19.68 + '@rushstack/node-core-library': 5.10.1(@types/node@18.19.70) + '@types/node': 18.19.70 supports-color: 8.1.1 dev: true - /@rushstack/ts-command-line@4.23.2(@types/node@18.19.68): + /@rushstack/ts-command-line@4.23.2(@types/node@18.19.70): resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} dependencies: - '@rushstack/terminal': 0.14.4(@types/node@18.19.68) + '@rushstack/terminal': 0.14.4(@types/node@18.19.70) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -4234,7 +4235,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) eslint: 8.57.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -4286,7 +4287,7 @@ packages: /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/argparse@1.0.38: @@ -4334,20 +4335,20 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/browser-sync@2.29.0: resolution: {integrity: sha512-d2V8FDX/LbDCSm343N2VChzDxvll0h76I8oSigYpdLgPDmcdcR6fywTggKBkUiDM3qAbHOq7NZvepj/HJM5e2g==} dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/serve-static': 1.15.7 chokidar: 3.6.0 dev: true @@ -4359,7 +4360,7 @@ packages: /@types/co-body@6.1.3: resolution: {integrity: sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/qs': 6.9.17 dev: true @@ -4370,14 +4371,14 @@ packages: /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: - '@types/express-serve-static-core': 5.0.2 - '@types/node': 22.10.2 + '@types/express-serve-static-core': 5.0.3 + '@types/node': 22.10.5 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/content-disposition@0.5.8: @@ -4398,13 +4399,13 @@ packages: '@types/connect': 3.4.38 '@types/express': 5.0.0 '@types/keygrip': 1.0.6 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/debounce@1.2.4: @@ -4414,7 +4415,7 @@ packages: /@types/duplexify@3.6.4: resolution: {integrity: sha512-2eahVPsd+dy3CL6FugAzJcxoraWhUghZGEQJns1kTKfCXWKJ5iG/VkaB05wRVrDKHfOFKqb0X0kXh91eE99RZg==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/eslint-scope@3.7.7: @@ -4442,16 +4443,16 @@ packages: /@types/express-serve-static-core@4.19.6: resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true - /@types/express-serve-static-core@5.0.2: - resolution: {integrity: sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==} + /@types/express-serve-static-core@5.0.3: + resolution: {integrity: sha512-JEhMNwUJt7bw728CydvYzntD0XJeTmDnvwLlbfbAhE7Tbslm/ax6bdIiUwTgeVlZTsJQPwZwKpAkyDtIjsvx3g==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4470,7 +4471,7 @@ packages: resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 5.0.2 + '@types/express-serve-static-core': 5.0.3 '@types/qs': 6.9.17 '@types/serve-static': 1.15.7 dev: true @@ -4479,13 +4480,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/http-assert@1.5.6: @@ -4499,7 +4500,7 @@ packages: /@types/http-proxy@1.17.15: resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/ini@4.1.1: @@ -4541,7 +4542,7 @@ packages: /@types/karma@6.3.9: resolution: {integrity: sha512-sjE/MHnoAZAQYAKRXAbjTOiBKyGGErEM725bruRcmDdMa2vp1bjWPhApI7/i564PTyHlzc3vIGXLL6TFIpAxFg==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -4567,7 +4568,7 @@ packages: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/less@3.0.7: @@ -4577,12 +4578,12 @@ packages: /@types/loader-utils@2.0.6: resolution: {integrity: sha512-cgu0Xefgq9O5FjFR78jgI6X31aPjDWCaJ6LCfRtlj6BtyVVWiXagysSYlPACwGKAzRwsFLjKXcj4iGfcVt6cLw==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/webpack': 4.41.40 dev: true - /@types/lodash@4.17.13: - resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + /@types/lodash@4.17.14: + resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} dev: true /@types/long@4.0.2: @@ -4612,21 +4613,21 @@ packages: /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/node@10.17.60: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true - /@types/node@18.19.68: - resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} + /@types/node@18.19.70: + resolution: {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} dependencies: undici-types: 5.26.5 dev: true - /@types/node@22.10.2: - resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + /@types/node@22.10.5: + resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} dependencies: undici-types: 6.20.0 dev: true @@ -4638,7 +4639,7 @@ packages: /@types/npm-registry-fetch@8.0.7: resolution: {integrity: sha512-db9iBh7kDDg4lRT4k4XZ6IiecTEgFCID4qk+VDVPbtzU855q3KZLCn08ATr4H27ntRJVhulQ7GWjl24H42x96w==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/node-fetch': 3.0.2 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -4648,13 +4649,13 @@ packages: /@types/npmlog@7.0.0: resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/pacote@11.1.8: resolution: {integrity: sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/npm-registry-fetch': 8.0.7 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -4675,14 +4676,14 @@ packages: /@types/progress@2.0.7: resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/pumpify@1.4.4: resolution: {integrity: sha512-+cWbQUecD04MQYkjNBhPmcUIP368aloYmqm+ImdMKA8rMpxRNAhZAD6gIj+sAVTF1DliqrT/qUp6aGNi/9U3tw==} dependencies: '@types/duplexify': 3.6.4 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/q@0.0.32: @@ -4701,7 +4702,7 @@ packages: resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} dependencies: '@types/caseless': 0.12.5 - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/tough-cookie': 4.0.5 form-data: 2.5.2 dev: true @@ -4709,7 +4710,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/resolve@1.20.2: @@ -4731,7 +4732,7 @@ packages: /@types/selenium-webdriver@4.1.27: resolution: {integrity: sha512-ALqsj8D7Swb6MnBQuAQ58J3KC3yh6fLGtAmpBmnZX8j+0kmP7NaLt56CuzBw2W2bXPrvHFTgn8iekOQFUKXEQA==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/ws': 8.5.13 dev: true @@ -4743,7 +4744,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/serve-index@1.9.4: @@ -4756,7 +4757,7 @@ packages: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/send': 0.17.4 dev: true @@ -4764,13 +4765,13 @@ packages: resolution: {integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==} dependencies: '@types/glob': 7.2.0 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/source-list-map@0.1.6: @@ -4780,7 +4781,7 @@ packages: /@types/ssri@7.1.5: resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/stack-trace@0.0.33: @@ -4813,13 +4814,13 @@ packages: resolution: {integrity: sha512-SbuSavsPxfOPZwVHBgQUVuzYBe6+8KL7dwiJLXaj5rmv3DxktOMwX5WP1J6UontwUbewjVoc7pCgZvqy6rPn+A==} dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/webpack-sources@3.2.3: resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/source-list-map': 0.1.6 source-map: 0.7.4 dev: true @@ -4827,7 +4828,7 @@ packages: /@types/webpack@4.41.40: resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -4838,13 +4839,13 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/ws@8.5.13: resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true /@types/yargs-parser@21.0.3: @@ -4864,7 +4865,7 @@ packages: /@types/yauzl@2.10.3: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 dev: true optional: true @@ -4918,6 +4919,14 @@ packages: '@typescript-eslint/visitor-keys': 8.19.0 dev: true + /@typescript-eslint/scope-manager@8.19.1: + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 + dev: true + /@typescript-eslint/type-utils@8.19.0(eslint@8.57.0)(typescript@5.7.2): resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4940,6 +4949,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true + /@typescript-eslint/types@8.19.1: + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2): resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4959,6 +4973,25 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2): + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: 5.7.2 + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.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.6.3 + ts-api-utils: 2.0.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@8.19.0(eslint@8.57.0)(typescript@5.7.2): resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4976,6 +5009,23 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@8.19.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: 5.7.2 + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + eslint: 8.57.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/visitor-keys@8.19.0: resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4984,6 +5034,14 @@ packages: eslint-visitor-keys: 4.2.0 dev: true + /@typescript-eslint/visitor-keys@8.19.1: + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.19.1 + eslint-visitor-keys: 4.2.0 + dev: true + /@ungap/structured-clone@1.2.1: resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} dev: true @@ -5218,7 +5276,7 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) dev: true /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.7): @@ -5227,11 +5285,11 @@ packages: peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - vite: 6.0.7(@types/node@18.19.68)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) + vite: 6.0.7(@types/node@18.19.70)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) dev: true - /@web/browser-logs@0.4.0: - resolution: {integrity: sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==} + /@web/browser-logs@0.4.1: + resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} engines: {node: '>=18.0.0'} dependencies: errorstacks: 2.4.1 @@ -5242,8 +5300,8 @@ packages: engines: {node: '>=18.0.0'} dev: true - /@web/dev-server-core@0.7.4: - resolution: {integrity: sha512-nHSNrJ1J9GjmSceKNHpWRMjvpfE2NTV9EYUffPIr7j0sIV59gK7NI/4+9slotJ/ODXw0+e1gSeJshTOhjjVNxQ==} + /@web/dev-server-core@0.7.5: + resolution: {integrity: sha512-Da65zsiN6iZPMRuj4Oa6YPwvsmZmo5gtPWhW2lx3GTUf5CAEapjVpZVlUXnKPL7M7zRuk72jSsIl8lo+XpTCtw==} engines: {node: '>=18.0.0'} dependencies: '@types/koa': 2.15.0 @@ -5251,7 +5309,7 @@ packages: '@web/parse5-utils': 2.1.0 chokidar: 4.0.3 clone: 2.1.2 - es-module-lexer: 1.5.4 + es-module-lexer: 1.6.0 get-stream: 6.0.1 is-stream: 2.0.1 isbinaryfile: 5.0.4 @@ -5275,7 +5333,7 @@ packages: engines: {node: '>=18.0.0'} dependencies: '@rollup/plugin-node-resolve': 15.3.1(rollup@4.30.0) - '@web/dev-server-core': 0.7.4 + '@web/dev-server-core': 0.7.5 nanocolors: 0.2.13 parse5: 6.0.1 rollup: 4.30.0 @@ -5294,7 +5352,7 @@ packages: '@babel/code-frame': 7.26.2 '@types/command-line-args': 5.2.3 '@web/config-loader': 0.3.2 - '@web/dev-server-core': 0.7.4 + '@web/dev-server-core': 0.7.5 '@web/dev-server-rollup': 0.6.4 camelcase: 6.3.0 command-line-args: 5.2.1 @@ -5327,7 +5385,7 @@ packages: '@web/test-runner-coverage-v8': 0.8.0 async-mutex: 0.4.0 chrome-launcher: 0.15.2 - puppeteer-core: 23.10.4 + puppeteer-core: 23.11.1 transitivePeerDependencies: - bufferutil - supports-color @@ -5357,8 +5415,8 @@ packages: '@types/debounce': 1.2.4 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@web/browser-logs': 0.4.0 - '@web/dev-server-core': 0.7.4 + '@web/browser-logs': 0.4.1 + '@web/dev-server-core': 0.7.5 chokidar: 4.0.3 cli-cursor: 3.1.0 co-body: 6.2.0 @@ -5413,7 +5471,7 @@ packages: engines: {node: '>=18.0.0'} hasBin: true dependencies: - '@web/browser-logs': 0.4.0 + '@web/browser-logs': 0.4.1 '@web/config-loader': 0.3.2 '@web/dev-server': 0.4.6 '@web/test-runner-chrome': 0.17.0 @@ -5733,7 +5791,7 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.0.5 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 dev: true @@ -5832,11 +5890,11 @@ packages: engines: {node: '>=12.17'} dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + /array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 is-array-buffer: 3.0.5 dev: true @@ -5850,9 +5908,9 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 is-string: 1.1.1 dev: true @@ -5879,7 +5937,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -5891,7 +5949,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 dev: true @@ -5901,7 +5959,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 dev: true @@ -5909,12 +5967,12 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 is-array-buffer: 3.0.5 dev: true @@ -6004,7 +6062,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.24.3 - caniuse-lite: 1.0.30001689 + caniuse-lite: 1.0.30001690 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -6084,15 +6142,15 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /bare-events@2.5.0: - resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + /bare-events@2.5.2: + resolution: {integrity: sha512-KSdMqLj1ZERZMP1PTmnLK7SqJu9z9/SbwUUPZly2puMtfVcytC+jl6mb/9XYiqq0PXcx1rNDS+Qvl1g54Lho6A==} dev: true optional: true /bare-fs@2.3.5: resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} dependencies: - bare-events: 2.5.0 + bare-events: 2.5.2 bare-path: 2.1.3 bare-stream: 2.6.1 dev: true @@ -6307,7 +6365,7 @@ packages: serve-static: 1.16.2 server-destroy: 1.0.1 socket.io: 4.8.1 - ua-parser-js: 1.0.39 + ua-parser-js: 1.0.40 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -6327,8 +6385,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001689 - electron-to-chromium: 1.5.74 + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.77 node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) dev: true @@ -6448,7 +6506,7 @@ packages: dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 set-function-length: 1.2.2 dev: true @@ -6457,7 +6515,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 dev: true /callsites@3.1.0: @@ -6475,8 +6533,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001689: - resolution: {integrity: sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==} + /caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} dev: true /caseless@0.12.0: @@ -6509,8 +6567,8 @@ packages: supports-color: 7.2.0 dev: true - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + /chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -6569,7 +6627,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -6582,14 +6640,13 @@ packages: engines: {node: '>=6.0'} dev: true - /chromium-bidi@0.8.0(devtools-protocol@0.0.1367902): - resolution: {integrity: sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==} + /chromium-bidi@0.11.0(devtools-protocol@0.0.1367902): + resolution: {integrity: sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==} peerDependencies: devtools-protocol: '*' dependencies: devtools-protocol: 0.0.1367902 mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 zod: 3.23.8 dev: true @@ -6826,8 +6883,8 @@ packages: - supports-color dev: true - /consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + /consola@3.3.3: + resolution: {integrity: sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==} engines: {node: ^14.18.0 || >=16.10.0} dev: true @@ -6948,8 +7005,8 @@ packages: - encoding dev: true - /cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + /cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} dependencies: node-fetch: 2.7.0 transitivePeerDependencies: @@ -6994,7 +7051,7 @@ packages: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 nth-check: 2.1.1 dev: true @@ -7030,29 +7087,29 @@ packages: engines: {node: '>= 14'} dev: true - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + /data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + /data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + /data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 dev: true @@ -7366,8 +7423,8 @@ packages: domelementtype: 2.3.0 dev: true - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + /domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -7436,8 +7493,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.5.74: - resolution: {integrity: sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==} + /electron-to-chromium@1.5.77: + resolution: {integrity: sha512-AnJSrt5JpRVgY6dgd5yccguLc5A7oMSF0Kt3fcW+Hp5WTuFbl5upeSFZbMZYy2o7jhmIhU8Ekrd82GhyXUqUUg==} dev: true /emoji-regex@10.4.0: @@ -7505,7 +7562,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.10.2 + '@types/node': 22.10.5 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -7519,8 +7576,8 @@ packages: - utf-8-validate dev: true - /enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + /enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -7580,25 +7637,26 @@ packages: resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} dev: true - /es-abstract@1.23.6: - resolution: {integrity: sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==} + /es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 call-bound: 1.0.3 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 - function.prototype.name: 1.1.7 - get-intrinsic: 1.2.6 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 get-symbol-description: 1.1.0 globalthis: 1.0.4 gopd: 1.2.0 @@ -7610,28 +7668,30 @@ packages: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 - is-negative-zero: 2.0.3 is-regex: 1.2.1 - is-shared-array-buffer: 1.0.3 + is-shared-array-buffer: 1.0.4 is-string: 1.1.1 - is-typed-array: 1.1.14 + is-typed-array: 1.1.15 is-weakref: 1.1.0 - math-intrinsics: 1.0.0 + math-intrinsics: 1.1.0 object-inspect: 1.13.3 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 + set-proto: 1.0.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.3 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 dev: true /es-define-property@1.0.1: @@ -7644,8 +7704,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + /es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} dev: true /es-object-atoms@1.0.0: @@ -7655,11 +7715,12 @@ packages: es-errors: 1.3.0 dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + /es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.6 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 has-tostringtag: 1.0.2 hasown: 2.0.2 dev: true @@ -7802,8 +7863,8 @@ packages: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.16.0 - resolve: 1.22.9 + is-core-module: 2.16.1 + resolve: 1.22.10 transitivePeerDependencies: - supports-color dev: true @@ -7867,12 +7928,12 @@ packages: eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.16.0 + is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 - object.values: 1.2.0 + object.values: 1.2.1 semver: 6.3.1 string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 @@ -8148,6 +8209,10 @@ packages: engines: {'0': node >=0.6.0} dev: true + /fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -8195,12 +8260,12 @@ packages: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: true - /fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + /fast-uri@3.0.5: + resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} dev: true - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + /fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} dependencies: reusify: 1.0.4 dev: true @@ -8524,11 +8589,12 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.7: - resolution: {integrity: sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==} + /function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 functions-have-names: 1.2.3 hasown: 2.0.2 @@ -8586,20 +8652,20 @@ packages: engines: {node: '>=18'} dev: true - /get-intrinsic@1.2.6: - resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + /get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 function-bind: 1.1.2 + get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 - math-intrinsics: 1.0.0 + math-intrinsics: 1.1.0 dev: true /get-npm-tarball-url@2.1.0: @@ -8607,6 +8673,14 @@ packages: engines: {node: '>=12.17'} dev: true + /get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.0.0 + dev: true + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -8625,7 +8699,7 @@ packages: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 dev: true /get-uri@6.0.4: @@ -8762,7 +8836,7 @@ packages: resolution: {integrity: sha512-Phyp9fMfA00J3sZbJxbbB4jC55b7DBjE3F6poyL3wKMEBVKA79q6BGuHcTiM28yOzVql0NDbRL8MLLh8Iwk9Dg==} engines: {node: '>=14'} dependencies: - '@grpc/grpc-js': 1.12.4 + '@grpc/grpc-js': 1.12.5 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 @@ -8800,7 +8874,7 @@ packages: resolution: {integrity: sha512-06r73IoGaAIpzT+DRPnw7V5BXvZ5mjy1OcKqSPX+ZHOgbLxT+lJfz8IN83z/sbA3t55ZX88MfDaaCjDGdveVIA==} engines: {node: '>=12'} dependencies: - '@grpc/grpc-js': 1.12.4 + '@grpc/grpc-js': 1.12.5 dev: true /gtoken@7.1.0(supports-color@10.0.0): @@ -8864,8 +8938,9 @@ packages: ansi-regex: 2.1.1 dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + /has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} dev: true /has-flag@4.0.0: @@ -8934,7 +9009,7 @@ packages: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 entities: 4.5.0 dev: true @@ -9293,25 +9368,28 @@ packages: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + /is-async-function@2.1.0: + resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 dev: true /is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 dev: true /is-binary-path@2.1.0: @@ -9341,8 +9419,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.16.0: - resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} + /is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 @@ -9353,8 +9431,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - get-intrinsic: 1.2.6 - is-typed-array: 1.1.14 + get-intrinsic: 1.2.7 + is-typed-array: 1.1.15 dev: true /is-date-object@1.1.0: @@ -9410,11 +9488,14 @@ packages: get-east-asian-width: 1.3.0 dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + /is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 dev: true /is-glob@4.0.3: @@ -9458,11 +9539,6 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true - /is-network-error@1.1.0: resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} engines: {node: '>=16'} @@ -9553,11 +9629,11 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + /is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 dev: true /is-stream-ended@0.1.4: @@ -9586,11 +9662,11 @@ packages: safe-regex-test: 1.1.0 dev: true - /is-typed-array@1.1.14: - resolution: {integrity: sha512-lQUsHzcTb7rH57dajbOuZEuMDXjs9f04ZloER4QOpjpKcaw4f98BRUrs8aiO9Z4G7i7B0Xhgarg6SCgYcYi8Nw==} + /is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 dev: true /is-typedarray@1.0.0: @@ -9623,7 +9699,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 dev: true /is-what@3.14.1: @@ -9812,13 +9888,13 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + /jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true dev: true @@ -9896,11 +9972,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-stable-stringify@1.1.1: - resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} + /json-stable-stringify@1.2.1: + resolution: {integrity: sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 isarray: 2.0.5 jsonify: 0.0.1 object-keys: 1.1.1 @@ -10140,7 +10217,7 @@ packages: socket.io: 4.8.1 source-map: 0.6.1 tmp: 0.2.3 - ua-parser-js: 0.7.39 + ua-parser-js: 0.7.40 yargs: 16.2.0 transitivePeerDependencies: - bufferutil @@ -10235,7 +10312,7 @@ packages: fresh: 0.5.2 http-assert: 1.5.0 http-errors: 1.8.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 koa-compose: 4.1.0 koa-convert: 2.0.0 on-finished: 2.4.1 @@ -10630,8 +10707,8 @@ packages: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} dev: true - /math-intrinsics@1.0.0: - resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} + /math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} dev: true @@ -10640,8 +10717,8 @@ packages: engines: {node: '>= 0.6'} dev: true - /memfs@4.15.0: - resolution: {integrity: sha512-q9MmZXd2rRWHS6GU3WEm3HyiXZyyoA1DqdOhEq0lxPBmKb5S7IAOwX0RgUCwJfqjelDCySa5h8ujOy24LqsWcw==} + /memfs@4.15.3: + resolution: {integrity: sha512-vR/g1SgqvKJgAyYla+06G4p/EOcEmwhYuVb1yc1ixcKf8o/sh7Zngv63957ZSNd1xrZJoinmNyDf2LzuP8WJXw==} engines: {node: '>= 4.0.0'} dependencies: '@jsonjoy.com/json-pack': 1.1.1(tslib@2.8.1) @@ -10988,7 +11065,7 @@ packages: dependencies: '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@rollup/plugin-json': 6.1.0(rollup@4.30.0) - '@rollup/wasm-node': 4.28.1 + '@rollup/wasm-node': 4.30.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.3 @@ -11298,12 +11375,14 @@ packages: engines: {node: '>= 0.4'} dev: true - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + /object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 + es-object-atoms: 1.0.0 has-symbols: 1.1.0 object-keys: 1.1.1 dev: true @@ -11314,7 +11393,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 dev: true @@ -11324,14 +11403,15 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + /object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 dev: true @@ -11458,6 +11538,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.7 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + dev: true + /p-event@4.2.0: resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} engines: {node: '>=8'} @@ -11671,7 +11760,7 @@ packages: cross-spawn: 7.0.6 find-yarn-workspace-root: 2.0.0 fs-extra: 9.1.0 - json-stable-stringify: 1.1.1 + json-stable-stringify: 1.2.1 klaw-sync: 6.0.0 minimist: 1.2.8 open: 7.4.2 @@ -11679,7 +11768,7 @@ packages: semver: 7.6.3 slash: 2.0.0 tmp: 0.0.33 - yaml: 2.6.1 + yaml: 2.7.0 dev: true /path-exists@4.0.0: @@ -11797,7 +11886,7 @@ packages: /pino-abstract-transport@1.2.0: resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} dependencies: - readable-stream: 4.5.2 + readable-stream: 4.6.0 split2: 4.2.0 dev: true @@ -11820,7 +11909,7 @@ packages: on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 - process-warning: 4.0.0 + process-warning: 4.0.1 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.5.0 @@ -11896,7 +11985,7 @@ packages: optional: true dependencies: cosmiconfig: 9.0.0(typescript@5.7.2) - jiti: 1.21.6 + jiti: 1.21.7 postcss: 8.4.49 semver: 7.6.3 webpack: 5.97.1(esbuild@0.24.2) @@ -11994,8 +12083,8 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: true - /process-warning@4.0.0: - resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} + /process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} dev: true /process@0.11.10: @@ -12065,7 +12154,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.10.2 + '@types/node': 22.10.5 long: 5.2.3 dev: true @@ -12185,12 +12274,12 @@ packages: - utf-8-validate dev: true - /puppeteer-core@23.10.4: - resolution: {integrity: sha512-pQAY7+IFAndWDkDodsQGguW1/ifV5OMlGXJDspwtK49Asb7poJZ/V5rXJxVSpq57bWrJasjQBZ1X27z1oWVq4Q==} + /puppeteer-core@23.11.1: + resolution: {integrity: sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==} engines: {node: '>=18'} dependencies: '@puppeteer/browsers': 2.6.1 - chromium-bidi: 0.8.0(devtools-protocol@0.0.1367902) + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) debug: 4.4.0(supports-color@10.0.0) devtools-protocol: 0.0.1367902 typed-query-selector: 2.12.0 @@ -12277,7 +12366,7 @@ packages: '@glideapps/ts-necessities': 2.2.3 browser-or-node: 3.0.0 collection-utils: 1.0.1 - cross-fetch: 4.0.0 + cross-fetch: 4.1.0 is-url: 1.2.4 js-base64: 3.7.7 lodash: 4.17.21 @@ -12287,7 +12376,7 @@ packages: unicode-properties: 1.4.1 urijs: 1.19.11 wordwrap: 1.0.0 - yaml: 2.6.1 + yaml: 2.7.0 transitivePeerDependencies: - encoding dev: true @@ -12345,6 +12434,17 @@ packages: string_decoder: 1.3.0 dev: true + /readable-stream@4.6.0: + resolution: {integrity: sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -12366,7 +12466,7 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.9 + resolve: 1.22.10 dev: true /reflect-metadata@0.1.14: @@ -12377,17 +12477,17 @@ packages: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} dev: true - /reflect.getprototypeof@1.0.8: - resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} + /reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dunder-proto: 1.0.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.6 - gopd: 1.2.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 which-builtin-type: 1.2.1 dev: true @@ -12416,13 +12516,15 @@ packages: resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} dev: true - /regexp.prototype.flags@1.5.3: - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + /regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 set-function-name: 2.0.2 dev: true @@ -12524,11 +12626,12 @@ packages: source-map: 0.6.1 dev: true - /resolve@1.22.9: - resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==} + /resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true dependencies: - is-core-module: 2.16.0 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -12622,7 +12725,7 @@ packages: spdx-expression-validate: 2.0.0 dev: true - /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.68)(rollup@4.30.0): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.70)(rollup@4.30.0): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12633,7 +12736,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 3.1.0(rollup@4.30.0) - '@types/node': 18.19.68 + '@types/node': 18.19.70 rollup: 4.30.0 source-map-resolve: 0.6.0 dev: true @@ -12723,7 +12826,7 @@ packages: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 has-symbols: 1.1.0 isarray: 2.0.5 dev: true @@ -12736,6 +12839,14 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + dev: true + /safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -13009,7 +13120,7 @@ packages: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 gopd: 1.2.0 has-property-descriptors: 1.0.2 dev: true @@ -13024,6 +13135,15 @@ packages: has-property-descriptors: 1.0.2 dev: true + /set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + dev: true + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true @@ -13084,7 +13204,7 @@ packages: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 object-inspect: 1.13.3 dev: true @@ -13094,7 +13214,7 @@ packages: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 object-inspect: 1.13.3 side-channel-map: 1.0.1 dev: true @@ -13493,7 +13613,7 @@ packages: queue-tick: 1.0.1 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.5.0 + bare-events: 2.5.2 dev: true /string-argv@0.3.2: @@ -13536,7 +13656,7 @@ packages: call-bound: 1.0.3 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 has-property-descriptors: 1.0.2 dev: true @@ -13830,15 +13950,15 @@ packages: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: true - /tldts-core@6.1.69: - resolution: {integrity: sha512-nygxy9n2PBUFQUtAXAc122gGo+04/j5qr5TGQFZTHafTKYvmARVXt2cA5rgero2/dnXUfkdPtiJoKmrd3T+wdA==} + /tldts-core@6.1.71: + resolution: {integrity: sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==} dev: true - /tldts@6.1.69: - resolution: {integrity: sha512-Oh/CqRQ1NXNY7cy9NkTPUauOWiTro0jEYZTioGbOmcQh6EC45oribyIMJp0OJO3677r13tO6SKdWoGZUx2BDFw==} + /tldts@6.1.71: + resolution: {integrity: sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==} hasBin: true dependencies: - tldts-core: 6.1.69 + tldts-core: 6.1.71 dev: true /tmp@0.0.30: @@ -13884,7 +14004,7 @@ packages: resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} engines: {node: '>=16'} dependencies: - tldts: 6.1.69 + tldts: 6.1.71 dev: true /tr46@0.0.3: @@ -13925,7 +14045,16 @@ packages: typescript: 5.7.2 dev: true - /ts-node@10.9.2(@types/node@18.19.68)(typescript@5.7.2): + /ts-api-utils@2.0.0(typescript@5.7.2): + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: 5.7.2 + dependencies: + typescript: 5.7.2 + dev: true + + /ts-node@10.9.2(@types/node@18.19.70)(typescript@5.7.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -13944,7 +14073,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.68 + '@types/node': 18.19.70 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -14038,28 +14167,28 @@ packages: mime-types: 2.1.35 dev: true - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + /typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-typed-array: 1.1.14 + is-typed-array: 1.1.15 dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + /typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.14 + is-typed-array: 1.1.15 dev: true - /typed-array-byte-offset@1.0.3: - resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} + /typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 @@ -14067,8 +14196,8 @@ packages: for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.14 - reflect.getprototypeof: 1.0.8 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 dev: true /typed-array-length@1.0.7: @@ -14078,9 +14207,9 @@ packages: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 - is-typed-array: 1.1.14 + is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.8 + reflect.getprototypeof: 1.0.10 dev: true /typed-assert@1.0.9: @@ -14111,13 +14240,13 @@ packages: engines: {node: '>=12.17'} dev: true - /ua-parser-js@0.7.39: - resolution: {integrity: sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==} + /ua-parser-js@0.7.40: + resolution: {integrity: sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==} hasBin: true dev: true - /ua-parser-js@1.0.39: - resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} + /ua-parser-js@1.0.40: + resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} hasBin: true dev: true @@ -14133,7 +14262,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - has-bigints: 1.0.2 + has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 dev: true @@ -14161,7 +14290,7 @@ packages: /unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} dependencies: - consola: 3.2.3 + consola: 3.3.3 defu: 6.1.4 mime: 3.0.0 node-fetch-native: 1.6.4 @@ -14268,10 +14397,6 @@ packages: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} dev: true - /urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - dev: true - /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true @@ -14281,8 +14406,8 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /uuid@11.0.3: - resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} + /uuid@11.0.4: + resolution: {integrity: sha512-IzL6VtTTYcAhA/oghbFJ1Dkmqev+FpQWnCBaKq/gUluLxliWvO8DPFWfIviRmYbtaavtSQe4WBL++rFjdcGWEg==} hasBin: true dev: true @@ -14440,7 +14565,7 @@ packages: extsprintf: 1.4.1 dev: true - /vite@6.0.3(@types/node@18.19.68)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): + /vite@6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -14480,7 +14605,7 @@ packages: yaml: optional: true dependencies: - '@types/node': 18.19.68 + '@types/node': 18.19.70 esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 @@ -14491,7 +14616,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@6.0.7(@types/node@18.19.68)(less@4.2.1)(sass@1.83.1)(terser@5.37.0): + /vite@6.0.7(@types/node@18.19.70)(less@4.2.1)(sass@1.83.1)(terser@5.37.0): resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -14531,7 +14656,7 @@ packages: yaml: optional: true dependencies: - '@types/node': 18.19.68 + '@types/node': 18.19.70 esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 @@ -14621,7 +14746,7 @@ packages: optional: true dependencies: colorette: 2.0.20 - memfs: 4.15.0 + memfs: 4.15.3 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 @@ -14723,8 +14848,8 @@ packages: acorn: 8.14.0 browserslist: 4.24.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 + enhanced-resolve: 5.18.0 + es-module-lexer: 1.6.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -14789,18 +14914,18 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.3 - function.prototype.name: 1.1.7 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 + is-async-function: 2.1.0 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 is-regex: 1.2.1 is-weakref: 1.1.0 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 dev: true /which-collection@1.0.2: @@ -14817,12 +14942,13 @@ packages: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true - /which-typed-array@1.1.16: - resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} + /which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 + call-bound: 1.0.3 for-each: 0.3.3 gopd: 1.2.0 has-tostringtag: 1.0.2 @@ -15030,6 +15156,12 @@ packages: hasBin: true dev: true + /yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + dev: true + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -15131,7 +15263,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.68)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/8cd573656c96422cd30c7290361a539df9b02b1a} id: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a name: '@angular/bazel' @@ -15155,12 +15287,12 @@ packages: '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 - '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) + '@microsoft/api-extractor': 7.48.1(@types/node@18.19.70) '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.0) '@rollup/plugin-node-resolve': 13.3.0(rollup@4.30.0) magic-string: 0.30.17 rollup: 4.30.0 - rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.68)(rollup@4.30.0) + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.70)(rollup@4.30.0) terser: 5.37.0 tslib: 2.8.1 typescript: 5.7.2 @@ -15175,7 +15307,7 @@ packages: version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.68)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -15185,10 +15317,10 @@ packages: '@bazel/runfiles': 5.8.1 '@bazel/terser': 5.8.1(terser@5.37.0) '@bazel/typescript': 5.8.1(typescript@5.7.2) - '@microsoft/api-extractor': 7.48.1(@types/node@18.19.68) + '@microsoft/api-extractor': 7.48.1(@types/node@18.19.70) '@types/browser-sync': 2.29.0 '@types/minimatch': 5.1.2 - '@types/node': 18.19.68 + '@types/node': 18.19.70 '@types/selenium-webdriver': 4.1.27 '@types/send': 0.17.4 '@types/tmp': 0.2.6 @@ -15204,7 +15336,7 @@ packages: true-case-path: 2.2.1 tslib: 2.8.1 typescript: 5.7.2 - uuid: 11.0.3 + uuid: 11.0.4 yargs: 17.7.2 transitivePeerDependencies: - '@angular/compiler' @@ -15251,7 +15383,7 @@ packages: '@types/semver': 7.5.8 '@types/supports-color': 8.1.3 '@yarnpkg/lockfile': 1.1.0 - chalk: 5.3.0 + chalk: 5.4.1 semver: 7.6.3 supports-color: 10.0.0 typed-graphqlify: 3.1.6 diff --git a/yarn.lock b/yarn.lock index 0248c5286139..d3b51d5b191a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2440,12 +2440,12 @@ __metadata: linkType: hard "@grpc/grpc-js@npm:^1.10.9, @grpc/grpc-js@npm:^1.7.0": - version: 1.12.4 - resolution: "@grpc/grpc-js@npm:1.12.4" + version: 1.12.5 + resolution: "@grpc/grpc-js@npm:1.12.5" dependencies: "@grpc/proto-loader": "npm:^0.7.13" "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/008a3bbf65a754e4d5a3bf373e0866e4fd91628001e0329c60dfb9ecdf200cd26e9a1dc25ed45be59776990027674904c9cb2e6bbf5dbb14081b5c748b15b770 + checksum: 10c0/1e539d98951e6ff6611e3cedc8eec343625fdab76c7683aa7fca605b3de17d8aabaf2f78d7e95400e68dc8e249cda498781e9a3481bb6b713fc167da3fe59a8e languageName: node linkType: hard @@ -2534,24 +2534,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/core@npm:^10.1.1": - version: 10.1.1 - resolution: "@inquirer/core@npm:10.1.1" - dependencies: - "@inquirer/figures": "npm:^1.0.8" - "@inquirer/type": "npm:^3.0.1" - ansi-escapes: "npm:^4.3.2" - cli-width: "npm:^4.1.0" - mute-stream: "npm:^2.0.0" - signal-exit: "npm:^4.1.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^6.2.0" - yoctocolors-cjs: "npm:^2.1.2" - checksum: 10c0/7c3b50b5a8c673d2b978684c39b8d65249145cbc859b598d4d0be9af1d2f30731228996ff8143a8fca1b776f76040d83ae241807291144f6205c23b93e33d408 - languageName: node - linkType: hard - -"@inquirer/core@npm:^10.1.2": +"@inquirer/core@npm:^10.1.1, @inquirer/core@npm:^10.1.2": version: 10.1.2 resolution: "@inquirer/core@npm:10.1.2" dependencies: @@ -2594,13 +2577,6 @@ __metadata: languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.8": - version: 1.0.8 - resolution: "@inquirer/figures@npm:1.0.8" - checksum: 10c0/34d287ff1fd16476c58bbd5b169db315f8319b5ffb09f81a1bb9aabd4165114e7406b1f418d021fd9cd48923008446e3eec274bb818f378ea132a0450bbc91d4 - languageName: node - linkType: hard - "@inquirer/figures@npm:^1.0.9": version: 1.0.9 resolution: "@inquirer/figures@npm:1.0.9" @@ -2716,16 +2692,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^3.0.1": - version: 3.0.1 - resolution: "@inquirer/type@npm:3.0.1" - peerDependencies: - "@types/node": ">=18" - checksum: 10c0/c8612362d382114a318dbb523de7b1f54dc6bc6d3016c6eaf299b6a32486b92b0dfb1b4cfc6fe9d99496d15fbb721873a1bd66819f796c8bb09853a3b808812d - languageName: node - linkType: hard - -"@inquirer/type@npm:^3.0.2": +"@inquirer/type@npm:^3.0.1, @inquirer/type@npm:^3.0.2": version: 3.0.2 resolution: "@inquirer/type@npm:3.0.2" peerDependencies: @@ -3477,38 +3444,38 @@ __metadata: linkType: hard "@octokit/core@npm:^6.1.2": - version: 6.1.2 - resolution: "@octokit/core@npm:6.1.2" + version: 6.1.3 + resolution: "@octokit/core@npm:6.1.3" dependencies: "@octokit/auth-token": "npm:^5.0.0" - "@octokit/graphql": "npm:^8.0.0" - "@octokit/request": "npm:^9.0.0" - "@octokit/request-error": "npm:^6.0.1" - "@octokit/types": "npm:^13.0.0" + "@octokit/graphql": "npm:^8.1.2" + "@octokit/request": "npm:^9.1.4" + "@octokit/request-error": "npm:^6.1.6" + "@octokit/types": "npm:^13.6.2" before-after-hook: "npm:^3.0.2" universal-user-agent: "npm:^7.0.0" - checksum: 10c0/f73be16a8013f69197b7744de75537d869f3a2061dda25dcde746d23b87f305bbdc7adbfe044ab0755eec32e6d54d61c73f4ca788d214eba8e88648a3133733e + checksum: 10c0/d02506dfb2771b18d0ee620b92deb75f0458cbf92b975b04c9ad3e50b06813d4c98a598bf1a1cae5757d31166c52a1ef55c30b17f2359f30309731e264ea20d0 languageName: node linkType: hard "@octokit/endpoint@npm:^10.0.0": - version: 10.1.1 - resolution: "@octokit/endpoint@npm:10.1.1" + version: 10.1.2 + resolution: "@octokit/endpoint@npm:10.1.2" dependencies: - "@octokit/types": "npm:^13.0.0" + "@octokit/types": "npm:^13.6.2" universal-user-agent: "npm:^7.0.2" - checksum: 10c0/946517241b33db075e7b3fd8abc6952b9e32be312197d07d415dbefb35b93d26afd508f64315111de7cabc2638d4790a9b0b366cf6cc201de5ec6997c7944c8b + checksum: 10c0/36335c46137c401ffaf949a49c268559076600bc4a6a92b9737b748b554c5fa9c7cd275a4ab0d580f4b877bd1ed36095e6132d979c5ab49002b61f0a94ac16e9 languageName: node linkType: hard -"@octokit/graphql@npm:^8.0.0": - version: 8.1.1 - resolution: "@octokit/graphql@npm:8.1.1" +"@octokit/graphql@npm:^8.1.2": + version: 8.1.2 + resolution: "@octokit/graphql@npm:8.1.2" dependencies: - "@octokit/request": "npm:^9.0.0" - "@octokit/types": "npm:^13.0.0" + "@octokit/request": "npm:^9.1.4" + "@octokit/types": "npm:^13.6.2" universal-user-agent: "npm:^7.0.0" - checksum: 10c0/fe68b89b21416f56bc9c0d19bba96a9a8ee567312b6fb764b05ea0649a5e44bec71665a0013e7c34304eb77c20ad7e7a7cf43b87ea27c280350229d71034c131 + checksum: 10c0/58f08ddbb85e334b5dc07c75ca746781484cb63e0d64edfa8205cd69a2d99c87a9279251a2d24bbdf9a3d45708474eb8d834858cd8f4959da726dbffe96e9e4e languageName: node linkType: hard @@ -3550,24 +3517,25 @@ __metadata: languageName: node linkType: hard -"@octokit/request-error@npm:^6.0.1": - version: 6.1.5 - resolution: "@octokit/request-error@npm:6.1.5" +"@octokit/request-error@npm:^6.0.1, @octokit/request-error@npm:^6.1.6": + version: 6.1.6 + resolution: "@octokit/request-error@npm:6.1.6" dependencies: - "@octokit/types": "npm:^13.0.0" - checksum: 10c0/37afef6c072d987ddf50b3438bcc974741a22ee7f788172876f92b5228ed43f5c4c1556a1d73153508d6c8d3a3d2344c7fefb6cde8678c7f63c2115b8629c49b + "@octokit/types": "npm:^13.6.2" + checksum: 10c0/cbbed77ddd1d40a1bed36224667c2fac4c20ce375a78d4648745ad1fedc8c2b1d01343b5908979d5b6557736245637eb58efc65d0cd1ef047ea6be74b46c47d2 languageName: node linkType: hard -"@octokit/request@npm:^9.0.0": - version: 9.1.3 - resolution: "@octokit/request@npm:9.1.3" +"@octokit/request@npm:^9.1.4": + version: 9.1.4 + resolution: "@octokit/request@npm:9.1.4" dependencies: "@octokit/endpoint": "npm:^10.0.0" "@octokit/request-error": "npm:^6.0.1" - "@octokit/types": "npm:^13.1.0" + "@octokit/types": "npm:^13.6.2" + fast-content-type-parse: "npm:^2.0.0" universal-user-agent: "npm:^7.0.2" - checksum: 10c0/41c26387ca9b5b3081a17eebea0c7d6b0122f6b2cb21c2fd7ef63ca587a828448e40b33973416f615fed139c659598f2ae7a1370cc103738f0f6f3297b5fc4ab + checksum: 10c0/a5ebfeb1ed185aed5422f5d407153f9c43450051cf99b7da0c4d185926af84efc5ff9b3338a58c7229b4e69b9b4c951045212ef13516433e5e2c21cb1a4cbb54 languageName: node linkType: hard @@ -3583,7 +3551,7 @@ __metadata: languageName: node linkType: hard -"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0, @octokit/types@npm:^13.6.1, @octokit/types@npm:^13.6.2": +"@octokit/types@npm:^13.6.1, @octokit/types@npm:^13.6.2": version: 13.6.2 resolution: "@octokit/types@npm:13.6.2" dependencies: @@ -3600,11 +3568,11 @@ __metadata: linkType: hard "@opentelemetry/context-async-hooks@npm:^1.26.0": - version: 1.29.0 - resolution: "@opentelemetry/context-async-hooks@npm:1.29.0" + version: 1.30.0 + resolution: "@opentelemetry/context-async-hooks@npm:1.30.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10c0/f7b5c6b4cad60021a0f7815016fda1b4b8d364348ecfa7e04fe07dfe9af90caaf4065fa5f9169a65f28b71aaf961672eed3849c42cd6484a9051dec0e5c9de5c + checksum: 10c0/46fef8f3af37227c16cf4e3d9264bfc7cfbe7357cb4266fa10ef32aa3256da6782110bea997d7a6b6815afb540da0a937fb5ecbaaed248c0234f8872bf25e8df languageName: node linkType: hard @@ -4233,8 +4201,8 @@ __metadata: linkType: hard "@rollup/wasm-node@npm:^4.24.0": - version: 4.28.1 - resolution: "@rollup/wasm-node@npm:4.28.1" + version: 4.30.0 + resolution: "@rollup/wasm-node@npm:4.30.0" dependencies: "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" @@ -4243,7 +4211,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/65b3780573884b4fe491406c79879a8a2da19cbadb87090627a1e156dc9bb3ecffec0089a5fc7e2bc0adaca842b50cd0d68831a6e431e97b8011bcdac8015ee9 + checksum: 10c0/5beaac0100795db4e8e44fa55795a577420cfad27a67e93704c59e9e7aa89905b215758a6b1afe079717328ec7fec20606b70a0a7ba4f7e235a4ffac906f7f29 languageName: node linkType: hard @@ -4696,14 +4664,14 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": - version: 5.0.2 - resolution: "@types/express-serve-static-core@npm:5.0.2" + version: 5.0.3 + resolution: "@types/express-serve-static-core@npm:5.0.3" dependencies: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 10c0/9f6ee50bd81f0aa6cc9df6ad2c2d221a3a63249da944db58ec8bb8681e77a5b3b3fdb1931bda73beb13cfaf9125731f835fe5256afb6a6da35b0eb08ccbdbfdf + checksum: 10c0/47cacb12d393f4272f46e5c95d7b06f9c32c528ba1cca31b7ee883f6f6ab7e8f40b92fac2333dea6c1f8130e098793f775441f048067514794662944e900189c languageName: node linkType: hard @@ -4905,9 +4873,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.17.0": - version: 4.17.13 - resolution: "@types/lodash@npm:4.17.13" - checksum: 10c0/c3d0b7efe7933ac0369b99f2f7bff9240d960680fdb74b41ed4bd1b3ca60cca1e31fe4046d9abbde778f941a41bc2a75eb629abf8659fa6c27b66efbbb0802a9 + version: 4.17.14 + resolution: "@types/lodash@npm:4.17.14" + checksum: 10c0/343c6f722e0b39969036a885ad5aad6578479ead83987128c9b994e6b7f2fb9808244d802d4d332396bb09096f720a6c7060de16a492f5460e06a44560360322 languageName: node linkType: hard @@ -4960,11 +4928,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=13.7.0": - version: 22.10.2 - resolution: "@types/node@npm:22.10.2" + version: 22.10.5 + resolution: "@types/node@npm:22.10.5" dependencies: undici-types: "npm:~6.20.0" - checksum: 10c0/2c7b71a040f1ef5320938eca8ebc946e6905caa9bbf3d5665d9b3774a8d15ea9fab1582b849a6d28c7fc80756a62c5666bc66b69f42f4d5dafd1ccb193cdb4ac + checksum: 10c0/6a0e7d1fe6a86ef6ee19c3c6af4c15542e61aea2f4cee655b6252efb356795f1f228bc8299921e82924e80ff8eca29b74d9dd0dd5cc1a90983f892f740b480df languageName: node linkType: hard @@ -4976,11 +4944,11 @@ __metadata: linkType: hard "@types/node@npm:^18.13.0, @types/node@npm:^18.19.21": - version: 18.19.68 - resolution: "@types/node@npm:18.19.68" + version: 18.19.70 + resolution: "@types/node@npm:18.19.70" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/8c7f01be218c6e3c1e643173662af27e9a2b568f36c0fe83e4295cf7674fe2a0abb4a1c5d7c7abd3345b9114581387dfd3f14b6d0338daebdce9273cd7ba59ab + checksum: 10c0/68866e53b92be60d8840f5c93232d3ae39c71663101decc1d4f1870d9236c3c89e74177b616c2a2cabce116b1356f3e89c57df3e969c9f9b0e0b5c59b5f790f7 languageName: node linkType: hard @@ -5383,16 +5351,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/scope-manager@npm:8.18.1" - dependencies: - "@typescript-eslint/types": "npm:8.18.1" - "@typescript-eslint/visitor-keys": "npm:8.18.1" - checksum: 10c0/97c503b2ece79b6c99ca8e6a5f1f40855cf72f17fbf05e42e62d19c2666e7e6f5df9bf71f13dbc4720c5ee0397670ba8052482a90441fbffa901da5f2e739565 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:8.19.0": version: 8.19.0 resolution: "@typescript-eslint/scope-manager@npm:8.19.0" @@ -5403,6 +5361,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/scope-manager@npm:8.19.1" + dependencies: + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" + checksum: 10c0/7dca0c28ad27a0c7e26499e0f584f98efdcf34087f46aadc661b36c310484b90655e83818bafd249b5a28c7094a69c54d553f6cd403869bf134f95a9148733f5 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.19.0": version: 8.19.0 resolution: "@typescript-eslint/type-utils@npm:8.19.0" @@ -5418,13 +5386,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/types@npm:8.18.1" - checksum: 10c0/0a2ca5f7cdebcc844b6bc1e5afc5d83b563f55917d20e3fea3a17ed39c54b003178e26b5ec535113f45c93c569b46628d9a67defa70c01cbdfa801573fed69a2 - languageName: node - linkType: hard - "@typescript-eslint/types@npm:8.19.0": version: 8.19.0 resolution: "@typescript-eslint/types@npm:8.19.0" @@ -5432,12 +5393,19 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.18.1" +"@typescript-eslint/types@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/types@npm:8.19.1" + checksum: 10c0/e907bf096d5ed7a812a1e537a98dd881ab5d2d47e072225bfffaa218c1433115a148b27a15744db8374b46dac721617c6d13a1da255fdeb369cf193416533f6e + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.19.0": + version: 8.19.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.19.0" dependencies: - "@typescript-eslint/types": "npm:8.18.1" - "@typescript-eslint/visitor-keys": "npm:8.18.1" + "@typescript-eslint/types": "npm:8.19.0" + "@typescript-eslint/visitor-keys": "npm:8.19.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -5446,25 +5414,25 @@ __metadata: ts-api-utils: "npm:^1.3.0" peerDependencies: typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/7ecb061dc63c729b23f4f15db5736ca93b1ae633108400e6c31cf8af782494912f25c3683f9f952dbfd10cb96031caba247a1ad406abf5d163639a00ac3ce5a3 + checksum: 10c0/ff47004588e8ff585af740b3e0bda07dc52310dbfeb2317eb4a723935740cf0c1953fc9ba57f14cf192bcfe373c46be833ba29d3303df8b501181bb852c7b822 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.19.0" +"@typescript-eslint/typescript-estree@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.19.1" dependencies: - "@typescript-eslint/types": "npm:8.19.0" - "@typescript-eslint/visitor-keys": "npm:8.19.0" + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" + ts-api-utils: "npm:^2.0.0" peerDependencies: typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/ff47004588e8ff585af740b3e0bda07dc52310dbfeb2317eb4a723935740cf0c1953fc9ba57f14cf192bcfe373c46be833ba29d3303df8b501181bb852c7b822 + checksum: 10c0/549d9d565a58a25fc8397a555506f2e8d29a740f5b6ed9105479e22de5aab89d9d535959034a8e9d4115adb435de09ee6987d28e8922052eea577842ddce1a7a languageName: node linkType: hard @@ -5484,27 +5452,17 @@ __metadata: linkType: hard "@typescript-eslint/utils@npm:^8.13.0": - version: 8.18.1 - resolution: "@typescript-eslint/utils@npm:8.18.1" + version: 8.19.1 + resolution: "@typescript-eslint/utils@npm:8.19.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.18.1" - "@typescript-eslint/types": "npm:8.18.1" - "@typescript-eslint/typescript-estree": "npm:8.18.1" + "@typescript-eslint/scope-manager": "npm:8.19.1" + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/typescript-estree": "npm:8.19.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/1e29408bd8fbda9f3386dabdb2b7471dacff28342d5bd6521ca3b7932df0cae100030d2eac75d946a82cbefa33f78000eed4ce789128fdea069ffeabd4429d80 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.18.1": - version: 8.18.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.18.1" - dependencies: - "@typescript-eslint/types": "npm:8.18.1" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/68651ae1825dbd660ea39b4e1d1618f6ad0026fa3a04aecec296750977cab316564e3e2ace8edbebf1ae86bd17d86acc98cac7b6e9aad4e1c666bd26f18706ad + checksum: 10c0/f7d2fe9a2bd8cb3ae6fafe5e465882a6784b2acf81d43d194c579381b92651c2ffc0fca69d2a35eee119f539622752a0e9ec063aaec7576d5d2bfe68b441980d languageName: node linkType: hard @@ -5518,6 +5476,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.19.1" + dependencies: + "@typescript-eslint/types": "npm:8.19.1" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/117537450a099f51f3f0d39186f248ae370bdc1b7f6975dbdbffcfc89e6e1aa47c1870db790d4f778a48f2c1f6cd9c269b63867c12afaa424367c63dabee8fd0 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.1 resolution: "@ungap/structured-clone@npm:1.2.1" @@ -5782,11 +5750,11 @@ __metadata: linkType: hard "@web/browser-logs@npm:^0.4.0": - version: 0.4.0 - resolution: "@web/browser-logs@npm:0.4.0" + version: 0.4.1 + resolution: "@web/browser-logs@npm:0.4.1" dependencies: - errorstacks: "npm:^2.2.0" - checksum: 10c0/5e03c29ddca52060194e9973d1752575f3d9af15168e28f6c6aac97c64c9aec07df843fc643c011ea2183b4987160e241b7cee9f404b3753053ea3a6dc1cfaa6 + errorstacks: "npm:^2.4.1" + checksum: 10c0/64f66392a2054c485dded4622c60967634f976b3d49e2ee7cfcd840896e41c19d2832ac9510409236fafaa768a5cab383ec48991a8805e88eb3374400418aa2a languageName: node linkType: hard @@ -5798,8 +5766,8 @@ __metadata: linkType: hard "@web/dev-server-core@npm:^0.7.2, @web/dev-server-core@npm:^0.7.3": - version: 0.7.4 - resolution: "@web/dev-server-core@npm:0.7.4" + version: 0.7.5 + resolution: "@web/dev-server-core@npm:0.7.5" dependencies: "@types/koa": "npm:^2.11.6" "@types/ws": "npm:^7.4.0" @@ -5819,7 +5787,7 @@ __metadata: parse5: "npm:^6.0.1" picomatch: "npm:^2.2.2" ws: "npm:^7.5.10" - checksum: 10c0/64e9dd0a25a554c07ba880b05a4fafae8231a3d6199642c87fe029e8506610f3a04761a26aa06a55dc277307c75dd3a3364029c1e6ab463fef6888362a417ddc + checksum: 10c0/8162bab8be3612a458a188554a9c3d3008e5d7a6ea33e33ec4b7f016eeab2dd4421a0a4f88c98133e93d336e3a1b62cf62f7ce2fd6647ba57e41ff81efe70877 languageName: node linkType: hard @@ -6525,13 +6493,13 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.4" - checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d languageName: node linkType: hard @@ -6852,9 +6820,9 @@ __metadata: linkType: hard "bare-events@npm:^2.0.0, bare-events@npm:^2.2.0": - version: 2.5.0 - resolution: "bare-events@npm:2.5.0" - checksum: 10c0/afbeec4e8be4d93fb4a3be65c3b4a891a2205aae30b5a38fafd42976cc76cf30dad348963fe330a0d70186e15dc507c11af42c89af5dddab2a54e5aff02e2896 + version: 2.5.2 + resolution: "bare-events@npm:2.5.2" + checksum: 10c0/eb7b269be6acda053a08ab1b18fe057fbf1983c3d4d9ce412b4f5d596aa8231c7fba9caadf7b80915b9e0750cc6babdf6763496b9b65e932046c274b2d4e9f06 languageName: node linkType: hard @@ -7333,7 +7301,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": version: 1.0.8 resolution: "call-bind@npm:1.0.8" dependencies: @@ -7377,9 +7345,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001689 - resolution: "caniuse-lite@npm:1.0.30001689" - checksum: 10c0/51cf99751dddfba24e13556ae0e0f38c062f76d49f2e24cce3d28e71a0325ca6fe04fe51b4a0e8467d601d94e72fea84f160bf577e7cbb5677f14ac673b6da20 + version: 1.0.30001690 + resolution: "caniuse-lite@npm:1.0.30001690" + checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347 languageName: node linkType: hard @@ -7423,9 +7391,9 @@ __metadata: linkType: hard "chalk@npm:^5.0.1, chalk@npm:^5.3.0": - version: 5.3.0 - resolution: "chalk@npm:5.3.0" - checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef languageName: node linkType: hard @@ -7449,7 +7417,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:4.0.3": +"chokidar@npm:4.0.3, chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -7477,15 +7445,6 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": - version: 4.0.2 - resolution: "chokidar@npm:4.0.2" - dependencies: - readdirp: "npm:^4.0.1" - checksum: 10c0/562a3456d529ce9e16f9a6447f86a3e82a816200fed473fa0b6f84b447ce29f96210c92874a8d5e619a0b453d92a352e93252baa214e376a9a08489e96337c65 - languageName: node - linkType: hard - "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -7528,16 +7487,15 @@ __metadata: languageName: node linkType: hard -"chromium-bidi@npm:0.8.0": - version: 0.8.0 - resolution: "chromium-bidi@npm:0.8.0" +"chromium-bidi@npm:0.11.0": + version: 0.11.0 + resolution: "chromium-bidi@npm:0.11.0" dependencies: mitt: "npm:3.0.1" - urlpattern-polyfill: "npm:10.0.0" zod: "npm:3.23.8" peerDependencies: devtools-protocol: "*" - checksum: 10c0/d69bcf6eebe8026aae19ef383a7ba35e84bed38be00c5f4cd9700542653e628c528b21b68da10c4de76fc46ee18d186765843b0eb428428eb7e360ff3a6641c8 + checksum: 10c0/7155b1b78bc07371cc750f5a431fb7120fb96e412d24895e5107efe21056a2406f4d051c26be89d2a7355258d6322d203e6d1c4e82f4b30f9b02923de50ba6c9 languageName: node linkType: hard @@ -7887,9 +7845,9 @@ __metadata: linkType: hard "consola@npm:^3.2.3": - version: 3.2.3 - resolution: "consola@npm:3.2.3" - checksum: 10c0/c606220524ec88a05bb1baf557e9e0e04a0c08a9c35d7a08652d99de195c4ddcb6572040a7df57a18ff38bbc13ce9880ad032d56630cef27bef72768ef0ac078 + version: 3.3.3 + resolution: "consola@npm:3.3.3" + checksum: 10c0/9f6f457f3d83fbb339b9f2ff4f5c2776a1a05fad7ce3939d8dc41765431d5f52401b5a632f4b10ed9145b2aadec1e84cea78c30178479d3a2fd4880894592fa5 languageName: node linkType: hard @@ -8053,11 +8011,11 @@ __metadata: linkType: hard "cross-fetch@npm:^4.0.0": - version: 4.0.0 - resolution: "cross-fetch@npm:4.0.0" + version: 4.1.0 + resolution: "cross-fetch@npm:4.1.0" dependencies: - node-fetch: "npm:^2.6.12" - checksum: 10c0/386727dc4c6b044746086aced959ff21101abb85c43df5e1d151547ccb6f338f86dec3f28b9dbddfa8ff5b9ec8662ed2263ad4607a93b2dc354fb7fe3bbb898a + node-fetch: "npm:^2.7.0" + checksum: 10c0/628b134ea27cfcada67025afe6ef1419813fffc5d63d175553efa75a2334522d450300a0f3f0719029700da80e96327930709d5551cf6deb39bb62f1d536642e languageName: node linkType: hard @@ -8155,36 +8113,36 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" is-data-view: "npm:^1.0.1" - checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 languageName: node linkType: hard @@ -8601,17 +8559,17 @@ __metadata: linkType: hard "domutils@npm:^3.0.1, domutils@npm:^3.1.0": - version: 3.1.0 - resolution: "domutils@npm:3.1.0" + version: 3.2.2 + resolution: "domutils@npm:3.2.2" dependencies: dom-serializer: "npm:^2.0.0" domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 + checksum: 10c0/47938f473b987ea71cd59e59626eb8666d3aa8feba5266e45527f3b636c7883cca7e582d901531961f742c519d7514636b7973353b648762b2e3bedbf235fada languageName: node linkType: hard -"dunder-proto@npm:^1.0.0": +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1" dependencies: @@ -8698,9 +8656,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.73": - version: 1.5.74 - resolution: "electron-to-chromium@npm:1.5.74" - checksum: 10c0/1a93119adbdeb0bba4c29e3bad5a48e6a4626ae50fbff2bc5c207f32e67ed64a5d8db6500befb44080359be3b18be7bf830fb920d5199d935be95bb9f97deb10 + version: 1.5.77 + resolution: "electron-to-chromium@npm:1.5.77" + checksum: 10c0/876df02d1cbc55627eb4120e2dbea249bf826ab8eeaa563c543070f6c6015cd6c845c91bd04a86b1e1d8cf819bcc4d4c92a1254fac9aa33705d9c89100724021 languageName: node linkType: hard @@ -8803,12 +8761,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.17.1": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" + version: 5.18.0 + resolution: "enhanced-resolve@npm:5.18.0" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370 + checksum: 10c0/5fcc264a6040754ab5b349628cac2bb5f89cee475cbe340804e657a5b9565f70e6aafb338d5895554eb0ced9f66c50f38a255274a0591dcb64ee17c549c459ce languageName: node linkType: hard @@ -8881,33 +8839,34 @@ __metadata: languageName: node linkType: hard -"errorstacks@npm:^2.2.0": +"errorstacks@npm:^2.4.1": version: 2.4.1 resolution: "errorstacks@npm:2.4.1" checksum: 10c0/5721d0fcc2f4b2f3bcedb71a767d19ea2dc04c7598ffcc547d5ad61187a36133b6b833922aadd449ebb12d7d1e68706eab0b9d1218409034e39bff48d8642df3 languageName: node linkType: hard -"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": - version: 1.23.6 - resolution: "es-abstract@npm:1.23.6" +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" dependencies: - array-buffer-byte-length: "npm:^1.0.1" + array-buffer-byte-length: "npm:^1.0.2" arraybuffer.prototype.slice: "npm:^1.0.4" available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" call-bound: "npm:^1.0.3" - data-view-buffer: "npm:^1.0.1" - data-view-byte-length: "npm:^1.0.1" - data-view-byte-offset: "npm:^1.0.0" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.0.3" + es-set-tostringtag: "npm:^2.1.0" es-to-primitive: "npm:^1.3.0" - function.prototype.name: "npm:^1.1.7" - get-intrinsic: "npm:^1.2.6" - get-symbol-description: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.0" + get-symbol-description: "npm:^1.1.0" globalthis: "npm:^1.0.4" gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" @@ -8915,32 +8874,34 @@ __metadata: has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" internal-slot: "npm:^1.1.0" - is-array-buffer: "npm:^3.0.4" + is-array-buffer: "npm:^3.0.5" is-callable: "npm:^1.2.7" is-data-view: "npm:^1.0.2" - is-negative-zero: "npm:^2.0.3" is-regex: "npm:^1.2.1" - is-shared-array-buffer: "npm:^1.0.3" + is-shared-array-buffer: "npm:^1.0.4" is-string: "npm:^1.1.1" - is-typed-array: "npm:^1.1.13" + is-typed-array: "npm:^1.1.15" is-weakref: "npm:^1.1.0" - math-intrinsics: "npm:^1.0.0" + math-intrinsics: "npm:^1.1.0" object-inspect: "npm:^1.13.3" object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.5" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" regexp.prototype.flags: "npm:^1.5.3" safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" string.prototype.trim: "npm:^1.2.10" string.prototype.trimend: "npm:^1.0.9" string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.2" - typed-array-byte-length: "npm:^1.0.1" - typed-array-byte-offset: "npm:^1.0.3" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" typed-array-length: "npm:^1.0.7" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.16" - checksum: 10c0/87c9cd85264f42e993ee2f7157c5e49c2866651bd7ff89a0799cc5bcfb962b19814e1f58c9970101072bab2a68a4fb859f094c6e8f161ba8042569431f0c1ec4 + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.18" + checksum: 10c0/1de229c9e08fe13c17fe5abaec8221545dfcd57e51f64909599a6ae896df84b8fd2f7d16c60cb00d7bf495b9298ca3581aded19939d4b7276854a4b066f8422b languageName: node linkType: hard @@ -8959,9 +8920,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.0.0, es-module-lexer@npm:^1.2.1": - version: 1.5.4 - resolution: "es-module-lexer@npm:1.5.4" - checksum: 10c0/300a469488c2f22081df1e4c8398c78db92358496e639b0df7f89ac6455462aaf5d8893939087c1a1cbcbf20eed4610c70e0bcb8f3e4b0d80a5d2611c539408c + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10c0/667309454411c0b95c476025929881e71400d74a746ffa1ff4cb450bd87f8e33e8eef7854d68e401895039ac0bac64e7809acbebb6253e055dd49ea9e3ea9212 languageName: node linkType: hard @@ -8974,14 +8935,15 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" dependencies: - get-intrinsic: "npm:^1.2.4" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.1" - checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af languageName: node linkType: hard @@ -9030,7 +8992,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.24.0, esbuild@npm:^0.24.0": +"esbuild@npm:0.24.0": version: 0.24.0 resolution: "esbuild@npm:0.24.0" dependencies: @@ -9113,7 +9075,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.24.2, esbuild@npm:^0.24.2": +"esbuild@npm:0.24.2, esbuild@npm:^0.24.0, esbuild@npm:^0.24.2": version: 0.24.2 resolution: "esbuild@npm:0.24.2" dependencies: @@ -9652,6 +9614,13 @@ __metadata: languageName: node linkType: hard +"fast-content-type-parse@npm:^2.0.0": + version: 2.0.1 + resolution: "fast-content-type-parse@npm:2.0.1" + checksum: 10c0/e5ff87d75a35ae4cf377df1dca46ec49e7abbdc8513689676ecdef548b94900b50e66e516e64470035d79b9f7010ef15d98c24d8ae803a881363cc59e0715e19 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -9666,7 +9635,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": +"fast-glob@npm:3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -9679,7 +9648,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:3.3.3": +"fast-glob@npm:3.3.3, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -9721,9 +9690,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.3 - resolution: "fast-uri@npm:3.0.3" - checksum: 10c0/4b2c5ce681a062425eae4f15cdc8fc151fd310b2f69b1f96680677820a8b49c3cd6e80661a406e19d50f0c40a3f8bffdd458791baf66f4a879d80be28e10a320 + version: 3.0.5 + resolution: "fast-uri@npm:3.0.5" + checksum: 10c0/f5501fd849e02f16f1730d2c8628078718c492b5bc00198068bc5c2880363ae948287fdc8cebfff47465229b517dbeaf668866fbabdff829b4138a899e5c2ba3 languageName: node linkType: hard @@ -9735,11 +9704,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" + version: 1.18.0 + resolution: "fastq@npm:1.18.0" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + checksum: 10c0/7be87ecc41762adbddf558d24182f50a4b1a3ef3ee807d33b7623da7aee5faecdcc94fce5aa13fe91df93e269f383232bbcdb2dc5338cd1826503d6063221f36 languageName: node linkType: hard @@ -10155,16 +10124,17 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.7": - version: 1.1.7 - resolution: "function.prototype.name@npm:1.1.7" +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" dependencies: call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" functions-have-names: "npm:^1.2.3" hasown: "npm:^2.0.2" is-callable: "npm:^1.2.7" - checksum: 10c0/f369f794099a9883e8253290d84a7a3e37ed9d4e2b185bdb3034fcfe02d6ee9dd72b41ea1e6e556c49bce897c535aa373b8e31dab5b018875cf9bc0a70c5215f + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 languageName: node linkType: hard @@ -10229,21 +10199,21 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": - version: 1.2.6 - resolution: "get-intrinsic@npm:1.2.6" +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7": + version: 1.2.7 + resolution: "get-intrinsic@npm:1.2.7" dependencies: call-bind-apply-helpers: "npm:^1.0.1" - dunder-proto: "npm:^1.0.0" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.0" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.0.0" - checksum: 10c0/0f1ea6d807d97d074e8a31ac698213a12757fcfa9a8f4778263d2e4702c40fe83198aadd3dba2e99aabc2e4cf8a38345545dbb0518297d3df8b00b56a156c32a + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/b475dec9f8bff6f7422f51ff4b7b8d0b68e6776ee83a753c1d627e3008c3442090992788038b37eff72e93e43dceed8c1acbdf2d6751672687ec22127933080d languageName: node linkType: hard @@ -10254,6 +10224,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + "get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -10270,7 +10250,7 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.2": +"get-symbol-description@npm:^1.1.0": version: 1.1.0 resolution: "get-symbol-description@npm:1.1.0" dependencies: @@ -10573,9 +10553,9 @@ __metadata: linkType: hard "has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 languageName: node linkType: hard @@ -10595,7 +10575,7 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.3, has-proto@npm:^1.2.0": +"has-proto@npm:^1.2.0": version: 1.2.0 resolution: "has-proto@npm:1.2.0" dependencies: @@ -10611,7 +10591,7 @@ __metadata: languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -10620,7 +10600,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.0, hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -11139,7 +11119,7 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": version: 3.0.5 resolution: "is-array-buffer@npm:3.0.5" dependencies: @@ -11158,11 +11138,14 @@ __metadata: linkType: hard "is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" + version: 2.1.0 + resolution: "is-async-function@npm:2.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/5209b858c6d18d88a9fb56dea202a050d53d4b722448cc439fdca859b36e23edf27ee8c18958ba49330f1a71b8846576273f4581e1c0bb9d403738129d852fdb languageName: node linkType: hard @@ -11220,11 +11203,11 @@ __metadata: linkType: hard "is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": - version: 2.16.0 - resolution: "is-core-module@npm:2.16.0" + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" dependencies: hasown: "npm:^2.0.2" - checksum: 10c0/57e3b4bf3503a5ace3e61ef030a2eefa03d27827647b22968456e3e4befffed7c7aa849eea2e029f4f74a119a2d53cc391d5bad59c9352ecc9b79be3fd2acf79 + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd languageName: node linkType: hard @@ -11314,11 +11297,14 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a languageName: node linkType: hard @@ -11379,13 +11365,6 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e - languageName: node - linkType: hard - "is-network-error@npm:^1.0.0": version: 1.1.0 resolution: "is-network-error@npm:1.1.0" @@ -11509,12 +11488,12 @@ __metadata: languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: - call-bind: "npm:^1.0.7" - checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db languageName: node linkType: hard @@ -11553,12 +11532,12 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.13": - version: 1.1.14 - resolution: "is-typed-array@npm:1.1.14" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" dependencies: which-typed-array: "npm:^1.1.16" - checksum: 10c0/1dc1aee98fcdc016b941491f32327b6f651580efe8e0e0fe9a659f7f8a901c0047f9929de4fad08eb4a7f2b9ae42551c08fa054bfb6bfa16109e80b9abab66b2 + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 languageName: node linkType: hard @@ -11873,11 +11852,11 @@ __metadata: linkType: hard "jiti@npm:^1.20.0": - version: 1.21.6 - resolution: "jiti@npm:1.21.6" + version: 1.21.7 + resolution: "jiti@npm:1.21.7" bin: jiti: bin/jiti.js - checksum: 10c0/05b9ed58cd30d0c3ccd3c98209339e74f50abd9a17e716f65db46b6a35812103f6bde6e134be7124d01745586bca8cc5dae1d0d952267c3ebe55171949c32e56 + checksum: 10c0/77b61989c758ff32407cdae8ddc77f85e18e1a13fc4977110dbd2e05fc761842f5f71bce684d9a01316e1c4263971315a111385759951080bbfe17cbb5de8f7a languageName: node linkType: hard @@ -12004,14 +11983,15 @@ __metadata: linkType: hard "json-stable-stringify@npm:^1.0.2": - version: 1.1.1 - resolution: "json-stable-stringify@npm:1.1.1" + version: 1.2.1 + resolution: "json-stable-stringify@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" isarray: "npm:^2.0.5" jsonify: "npm:^0.0.1" object-keys: "npm:^1.1.1" - checksum: 10c0/3801e3eeccbd030afb970f54bea690a079cfea7d9ed206a1b17ca9367f4b7772c764bf77a48f03e56b50e5f7ee7d11c52339fe20d8d7ccead003e4ca69e4cfde + checksum: 10c0/e623e7ce89282f089d56454087edb717357e8572089b552fbc6980fb7814dc3943f7d0e4f1a19429a36ce9f4428b6c8ee6883357974457aaaa98daba5adebeea languageName: node linkType: hard @@ -13094,10 +13074,10 @@ __metadata: languageName: node linkType: hard -"math-intrinsics@npm:^1.0.0": - version: 1.0.0 - resolution: "math-intrinsics@npm:1.0.0" - checksum: 10c0/470ee2f267b4b3698eb9faa7f0bcf88696d87e2eeab25bba867dc676c09ddbae9b6f2e8ac7a2c1f0c9c2c5299c2a89f4f1f6d0e70d682725e2e7fca7507eef9f +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f languageName: node linkType: hard @@ -13109,14 +13089,14 @@ __metadata: linkType: hard "memfs@npm:^4.6.0": - version: 4.15.0 - resolution: "memfs@npm:4.15.0" + version: 4.15.3 + resolution: "memfs@npm:4.15.3" dependencies: "@jsonjoy.com/json-pack": "npm:^1.0.3" "@jsonjoy.com/util": "npm:^1.3.0" tree-dump: "npm:^1.0.1" tslib: "npm:^2.0.0" - checksum: 10c0/be161036983ad517b8a6cb5e4493e6e0f1cc44024bc2135d51d9b28e823bb6a68bb00233900a1e9b93e942e8f581747f432b2224eb26c0045d97f8c84d25bd27 + checksum: 10c0/95bab707edcc86ac5acdb3ca53b420be34aa04167d0f03398b702bfadb44b72a6a27198b93593e7d9094cf911d70a0d679301fbc0e309f7ac43fa04a676b1b60 languageName: node linkType: hard @@ -13694,7 +13674,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0": +"node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -14028,15 +14008,17 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" +"object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" dependencies: - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" object-keys: "npm:^1.1.1" - checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc languageName: node linkType: hard @@ -14064,13 +14046,14 @@ __metadata: linkType: hard "object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" + version: 1.2.1 + resolution: "object.values@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 + checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 languageName: node linkType: hard @@ -14234,6 +14217,17 @@ __metadata: languageName: node linkType: hard +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + "p-event@npm:^4.2.0": version: 4.2.0 resolution: "p-event@npm:4.2.0" @@ -14985,9 +14979,9 @@ __metadata: linkType: hard "process-warning@npm:^4.0.0": - version: 4.0.0 - resolution: "process-warning@npm:4.0.0" - checksum: 10c0/5312a72b69d37a1b82ad03f3dfa0090dab3804a8fd995d06c28e3c002852bd82f5584217d9f4a3f197892bb2afc22d57e2c662c7e906b5abb48c0380c7b0880d + version: 4.0.1 + resolution: "process-warning@npm:4.0.1" + checksum: 10c0/577a268b9fd5c3d9f6dbb4348220099391d830905642845d591e7ee8b1e45043d98b7b9826a3c1379bdd1686cdfe0f6cf349cb812affc5853b662e6a9896579e languageName: node linkType: hard @@ -15244,16 +15238,16 @@ __metadata: linkType: hard "puppeteer-core@npm:^23.2.0": - version: 23.10.4 - resolution: "puppeteer-core@npm:23.10.4" + version: 23.11.1 + resolution: "puppeteer-core@npm:23.11.1" dependencies: "@puppeteer/browsers": "npm:2.6.1" - chromium-bidi: "npm:0.8.0" + chromium-bidi: "npm:0.11.0" debug: "npm:^4.4.0" devtools-protocol: "npm:0.0.1367902" typed-query-selector: "npm:^2.12.0" ws: "npm:^8.18.0" - checksum: 10c0/eb94b0760e9d7aadde11f0fb66c21202698773df6063bef2295271b409d3cf7650c5d4652cc7b39b95c309740edd34a8828fe520eba69272f43f3b011212ea7d + checksum: 10c0/6512a3dca8c7bea620219332b84c4442754fead6c5021c26ea395ddc2f84610a54accf185ba1450e02885cb063c2d12f96eb5f18e7e1b6795f3e32a4b8a2102e languageName: node linkType: hard @@ -15432,7 +15426,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:4.5.2, readable-stream@npm:^4.0.0": +"readable-stream@npm:4.5.2": version: 4.5.2 resolution: "readable-stream@npm:4.5.2" dependencies: @@ -15460,6 +15454,19 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^4.0.0": + version: 4.6.0 + resolution: "readable-stream@npm:4.6.0" + dependencies: + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10c0/0dcc6fdb433c0e6c4b03950f72e43b94c2aead42367ae5453997ffffcdcee2277003da545175ee11db08917e97ec709c9d19c6576e0888d0315b239da0f9913a + languageName: node + linkType: hard + "readdirp@npm:^4.0.1": version: 4.0.2 resolution: "readdirp@npm:4.0.2" @@ -15506,19 +15513,19 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.6": - version: 1.0.8 - resolution: "reflect.getprototypeof@npm:1.0.8" +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" - dunder-proto: "npm:^1.0.0" - es-abstract: "npm:^1.23.5" + es-abstract: "npm:^1.23.9" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.2.0" - which-builtin-type: "npm:^1.2.0" - checksum: 10c0/720479dd7a72a20d66efaca507ed7c7e18403d24ce764f436130464d4a516a12ed8a9a2714dcabc3e1296f9a31f914ba1095e2371619df23d3ac56c4f8c8bae1 + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac languageName: node linkType: hard @@ -15562,14 +15569,16 @@ __metadata: linkType: hard "regexp.prototype.flags@npm:^1.5.3": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" set-function-name: "npm:^2.0.2" - checksum: 10c0/e1a7c7dc42cc91abf73e47a269c4b3a8f225321b7f617baa25821f6a123a91d23a73b5152f21872c566e699207e1135d075d2251cd3e84cc96d82a910adf6020 + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 languageName: node linkType: hard @@ -15692,28 +15701,28 @@ __metadata: linkType: hard "resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": - version: 1.22.9 - resolution: "resolve@npm:1.22.9" + version: 1.22.10 + resolution: "resolve@npm:1.22.10" dependencies: is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/314cea2c47f956743f106256854203bd43a60a3ec6fb85ee6894e75cf4b16004952e4280319bfeb4c6fb1246e3ecd27f2699abb2e2b316b7c5727ec6491505c9 + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 languageName: node linkType: hard "resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": - version: 1.22.9 - resolution: "resolve@patch:resolve@npm%3A1.22.9#optional!builtin::version=1.22.9&hash=c3c19d" + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/dadd8c85040784fdc18d6edc0cc27f7f35776c5d904b030ea67485ab9a5607568187afcfaf157e6fa9db9274481d155356bc42ca578c5578be25965b880d1e80 + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 languageName: node linkType: hard @@ -15846,7 +15855,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.1, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.28.1": version: 4.28.1 resolution: "rollup@npm:4.28.1" dependencies: @@ -15918,7 +15927,7 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.30.0": +"rollup@npm:4.30.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.30.0 resolution: "rollup@npm:4.30.0" dependencies: @@ -16049,6 +16058,16 @@ __metadata: languageName: node linkType: hard +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 + languageName: node + linkType: hard + "safe-regex-test@npm:^1.1.0": version: 1.1.0 resolution: "safe-regex-test@npm:1.1.0" @@ -16100,7 +16119,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.83.0, sass@npm:^1.81.0": +"sass@npm:1.83.0": version: 1.83.0 resolution: "sass@npm:1.83.0" dependencies: @@ -16117,7 +16136,7 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.83.1": +"sass@npm:1.83.1, sass@npm:^1.81.0": version: 1.83.1 resolution: "sass@npm:1.83.1" dependencies: @@ -16399,6 +16418,17 @@ __metadata: languageName: node linkType: hard +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + "setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" @@ -17460,21 +17490,21 @@ __metadata: languageName: node linkType: hard -"tldts-core@npm:^6.1.69": - version: 6.1.69 - resolution: "tldts-core@npm:6.1.69" - checksum: 10c0/654b7ca5e349c89613b99179c5a3f55870be0b77d4ce062eaf6cdda7b160dc454a79a48e825e711f89e93588e62cbb6b166171a044a7427f5987ae9602d68328 +"tldts-core@npm:^6.1.71": + version: 6.1.71 + resolution: "tldts-core@npm:6.1.71" + checksum: 10c0/68c4e9ea7f02f14f811f5be5b50b176b099bc8385cae177b8265c1bb0c45215efecf54195a267326848024a24e204bba6d9f47cb899da1d81fd00da0c7f661b7 languageName: node linkType: hard "tldts@npm:^6.1.32": - version: 6.1.69 - resolution: "tldts@npm:6.1.69" + version: 6.1.71 + resolution: "tldts@npm:6.1.71" dependencies: - tldts-core: "npm:^6.1.69" + tldts-core: "npm:^6.1.71" bin: tldts: bin/cli.js - checksum: 10c0/47ca3c435f3fbe325a263e07417079551911afce45be0cc8b4a1c9ba14b8e9e6c493c6260dc5f34d3c4b396671fe641b2ebea9646e34c4a4d03223da848c7658 + checksum: 10c0/fb1bfb6ec78ce334b9d7b0c8813ab553a9f9f8759d681e6f109dd55caced45f901a19d162d8bc2f12b37afc366e438154248ae1dab67ad091565146b8e57d217 languageName: node linkType: hard @@ -17595,6 +17625,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "ts-api-utils@npm:2.0.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/6165e29a5b75bd0218e3cb0f9ee31aa893dbd819c2e46dbb086c841121eb0436ed47c2c18a20cb3463d74fd1fb5af62e2604ba5971cc48e5b38ebbdc56746dfc + languageName: node + linkType: hard + "ts-node@npm:^10.9.1": version: 10.9.2 resolution: "ts-node@npm:10.9.2" @@ -17744,42 +17783,42 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.13" - checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 languageName: node linkType: hard -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-byte-offset@npm:1.0.3" +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/5da29585f96671c0521475226d3227000b3e01d1e99208b66bb05b75c7c8f4d0e9cc2e79920f3bfbc792a00102df1daa2608a2753e3f291b671d5a80245bde5b + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 languageName: node linkType: hard @@ -17853,20 +17892,20 @@ __metadata: linkType: hard "ua-parser-js@npm:^0.7.30": - version: 0.7.39 - resolution: "ua-parser-js@npm:0.7.39" + version: 0.7.40 + resolution: "ua-parser-js@npm:0.7.40" bin: ua-parser-js: script/cli.js - checksum: 10c0/5d28deda5e04589c90e67e033136c2ecec38ac6e89e32fd5eab9ef7255af5839c4310c5bbf7361020bba17e85ac56dcb094077be7b6d45a8d776cd3ffe148a8c + checksum: 10c0/d114f0b71b5b0106dcc0cb7cc26a44690073e886fa1444f8c03131d4f57b3f6645f9fb7b308b0aaaa5a2774461f9e8fe1a2a1c3ff69aa531316fcf14cd44dbe3 languageName: node linkType: hard "ua-parser-js@npm:^1.0.33": - version: 1.0.39 - resolution: "ua-parser-js@npm:1.0.39" + version: 1.0.40 + resolution: "ua-parser-js@npm:1.0.40" bin: ua-parser-js: script/cli.js - checksum: 10c0/c6452b0c683000f10975cb0a7e74cb1119ea95d4522ae85f396fa53b0b17884358a24ffdd86a66030c6b2981bdc502109a618c79fdaa217ee9032c9e46fcc78a + checksum: 10c0/2b6ac642c74323957dae142c31f72287f2420c12dced9603d989b96c132b80232779c429b296d7de4012ef8b64e0d8fadc53c639ef06633ce13d785a78b5be6c languageName: node linkType: hard @@ -17879,7 +17918,7 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": +"unbox-primitive@npm:^1.1.0": version: 1.1.0 resolution: "unbox-primitive@npm:1.1.0" dependencies: @@ -18076,13 +18115,6 @@ __metadata: languageName: node linkType: hard -"urlpattern-polyfill@npm:10.0.0": - version: 10.0.0 - resolution: "urlpattern-polyfill@npm:10.0.0" - checksum: 10c0/43593f2a89bd54f2d5b5105ef4896ac5c5db66aef723759fbd15cd5eb1ea6cdae9d112e257eda9bbc3fb0cd90be6ac6e9689abe4ca69caa33114f42a27363531 - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -18098,11 +18130,11 @@ __metadata: linkType: hard "uuid@npm:^11.0.0": - version: 11.0.3 - resolution: "uuid@npm:11.0.3" + version: 11.0.4 + resolution: "uuid@npm:11.0.4" bin: uuid: dist/esm/bin/uuid - checksum: 10c0/cee762fc76d949a2ff9205770334699e0043d52bb766472593a25f150077c9deed821230251ea3d6ab3943a5ea137d2826678797f1d5f6754c7ce5ce27e9f7a6 + checksum: 10c0/3c13591c4dedaa3741f925e284df5974e3d6e0b1cb0f6f75f98c36f9c01d2a414350364fd067613ef600a21c6973dab0506530d4f499ff878f32a06f84569ead languageName: node linkType: hard @@ -18677,7 +18709,7 @@ __metadata: languageName: node linkType: hard -"which-builtin-type@npm:^1.2.0": +"which-builtin-type@npm:^1.2.1": version: 1.2.1 resolution: "which-builtin-type@npm:1.2.1" dependencies: @@ -18717,16 +18749,17 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16": - version: 1.1.16 - resolution: "which-typed-array@npm:1.1.16" +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" + gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/a9075293200db4fbce7c24d52731843542c5a19edfc66e31aa2cbefa788b5caa7ef05008f6e60d2c38d8198add6b92d0ddc2937918c5c308be398b1ebd8721af + checksum: 10c0/0412f4a91880ca1a2a63056187c2e3de6b129b2b5b6c17bc3729f0f7041047ae48fb7424813e51506addb2c97320003ee18b8c57469d2cde37983ef62126143c languageName: node linkType: hard @@ -18985,7 +19018,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.1, yaml@npm:^2.2.2, yaml@npm:^2.4.1": +"yaml@npm:2.6.1": version: 2.6.1 resolution: "yaml@npm:2.6.1" bin: @@ -18994,6 +19027,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.2.2, yaml@npm:^2.4.1": + version: 2.7.0 + resolution: "yaml@npm:2.7.0" + bin: + yaml: bin.mjs + checksum: 10c0/886a7d2abbd70704b79f1d2d05fe9fb0aa63aefb86e1cb9991837dced65193d300f5554747a872b4b10ae9a12bc5d5327e4d04205f70336e863e35e89d8f4ea9 + languageName: node + linkType: hard + "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" From 1c011a25b1f6c0d80fa486fdadcaf9d5f8571409 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 6 Jan 2025 22:02:34 +0000 Subject: [PATCH 0209/2162] ci: run less jobs per executor for RBE Use less jobs per bazel run to reduce the rate at which we perform API calls for RBE --- .bazelrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index caa0491048d0..50e3f41e94a6 100644 --- a/.bazelrc +++ b/.bazelrc @@ -129,7 +129,7 @@ build:remote --define=EXECUTOR=remote build:remote --remote_cache=remotebuildexecution.googleapis.com build:remote --remote_executor=remotebuildexecution.googleapis.com build:remote --remote_timeout=600 -build:remote --jobs=150 +build:remote --jobs=10 # Setup the toolchain and platform for the remote build execution. The platform # is provided by the shared dev-infra package and targets k8 remote containers. From 3b5afbb52c464de867403f908bdc65883dfe76dc Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:05:04 -0500 Subject: [PATCH 0210/2162] test(@angular/build): separate application and dev-server integration test targets The integration tests for the application and dev-server targets within `@angular/build` have been separated into two bazel targets. This allows more fine-grained control of test options for each builder as well as reducing the overall size of each target. --- packages/angular/build/BUILD.bazel | 46 +++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index b6b0c4e26077..01c16f6436f2 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -130,9 +130,39 @@ jasmine_node_test( ) ts_project( - name = "integration_test_lib", + name = "application_integration_test_lib", testonly = True, - srcs = glob(include = ["src/builders/**/tests/**/*.ts"]), + srcs = glob(include = ["src/builders/application/tests/**/*.ts"]), + deps = [ + ":build_rjs", + "//packages/angular/build/private:private_rjs", + "//modules/testing/builder:builder_rjs", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + + # Base dependencies for the application in hello-world-app. + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler", + "//:root_modules/@angular/compiler-cli", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-browser", + "//:root_modules/@angular/platform-browser-dynamic", + "//:root_modules/@angular/router", + "//:root_modules/rxjs", + "//:root_modules/tslib", + "//:root_modules/typescript", + "//:root_modules/zone.js", + "//:root_modules/buffer", + ], +) + +ts_project( + name = "dev-server_integration_test_lib", + testonly = True, + srcs = glob(include = ["src/builders/dev-server/tests/**/*.ts"]), deps = [ ":build_rjs", "//packages/angular/build/private:private_rjs", @@ -165,11 +195,19 @@ ts_project( ) jasmine_node_test( - name = "integration_tests", + name = "application_integration_tests", + size = "large", + flaky = True, + shard_count = 10, + deps = [":application_integration_test_lib"], +) + +jasmine_node_test( + name = "dev-server_integration_tests", size = "large", flaky = True, shard_count = 10, - deps = [":integration_test_lib"], + deps = [":dev-server_integration_test_lib"], ) genrule( From 4d88743b028d554709c1344c40efd05da206d6e7 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 7 Jan 2025 10:59:20 +0000 Subject: [PATCH 0211/2162] test: lower `debounceTime` in browser builder tests The current `debounceTime` values are unnecessarily high, resulting in slow test execution. Reducing these times will improve efficiency. --- .../src/builders/browser/specs/lazy-module_spec.ts | 2 +- .../build_angular/src/builders/browser/specs/rebuild_spec.ts | 2 +- .../src/builders/browser/specs/service-worker_spec.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 d432339bcbf1..d970f6ea1465 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 @@ -98,7 +98,7 @@ describe('Browser Builder lazy modules', () => { const run = await architect.scheduleTarget(target, overrides); await run.output .pipe( - debounceTime(1500), + debounceTime(1000), tap((buildEvent) => { buildNumber++; switch (buildNumber) { 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 26b24392e20e..9a89c4d5a04c 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 @@ -22,7 +22,7 @@ describe('Browser Builder rebuilds', () => { const target = { project: 'app', target: 'build' }; // Rebuild tests are especially sensitive to time between writes due to file watcher // behaviour. Give them a while. - const rebuildDebounceTime = 3000; + const rebuildDebounceTime = 1000; let architect: Architect; beforeEach(async () => { diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts index 7643a0a07e74..9f00c7f73092 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/service-worker_spec.ts @@ -147,7 +147,7 @@ describe('Browser Builder service worker', () => { await run.output .pipe( - debounceTime(3000), + debounceTime(1000), tap((buildEvent) => { expect(buildEvent.success).toBeTrue(); From b78ccb073a1fd133ae5b25e7582cc40c10afa57f Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 7 Jan 2025 11:26:22 +0000 Subject: [PATCH 0212/2162] test: remove browser builder AOT tests These cases are covered in other spec files. --- .../src/builders/browser/specs/aot_spec.ts | 65 ------------------- .../browser/specs/no-entry-module_spec.ts | 29 --------- 2 files changed, 94 deletions(-) delete mode 100644 packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts delete mode 100644 packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts deleted file mode 100644 index 87d46e9a919e..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/aot_spec.ts +++ /dev/null @@ -1,65 +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 { Architect } from '@angular-devkit/architect'; -import { BrowserBuilderOutput } from '@angular-devkit/build-angular'; -import { join, logging, normalize, virtualFs } from '@angular-devkit/core'; -import { lastValueFrom } from 'rxjs'; -import { createArchitect, host } from '../../../testing/test-utils'; - -describe('Browser Builder AOT', () => { - const targetSpec = { project: 'app', target: 'build' }; - let architect: Architect; - - beforeEach(async () => { - await host.initialize().toPromise(); - architect = (await createArchitect(host.root())).architect; - }); - afterEach(async () => host.restore().toPromise()); - - it('works', async () => { - const overrides = { aot: true }; - - const run = await architect.scheduleTarget(targetSpec, overrides); - const output = (await run.result) as BrowserBuilderOutput; - - expect(output.success).toBeTrue(); - - const fileName = join(normalize(output.outputs[0].path), 'main.js'); - const content = virtualFs.fileBufferToString( - await lastValueFrom(host.read(normalize(fileName))), - ); - expect(content).toContain('AppComponent_Factory'); - - await run.stop(); - }); - - it('shows error when component stylesheet contains SCSS syntax error', async () => { - const overrides = { - aot: true, - }; - - host.replaceInFile('src/app/app.component.ts', 'app.component.css', 'app.component.scss'); - - host.writeMultipleFiles({ - 'src/app/app.component.scss': ` - .foo { - `, - }); - - const logger = new logging.Logger(''); - const logs: string[] = []; - logger.subscribe((e) => logs.push(e.message)); - - const run = await architect.scheduleTarget(targetSpec, overrides, { logger }); - const output = await run.result; - expect(output.success).toBe(false); - expect(logs.join()).toContain('expected "}".'); - await run.stop(); - }); -}); diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts deleted file mode 100644 index edb9e1a0d39d..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/no-entry-module_spec.ts +++ /dev/null @@ -1,29 +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 { Architect } from '@angular-devkit/architect'; -import { browserBuild, createArchitect, host } from '../../../testing/test-utils'; - -describe('Browser Builder no entry module', () => { - const target = { project: 'app', target: 'build' }; - let architect: Architect; - - beforeEach(async () => { - await host.initialize().toPromise(); - architect = (await createArchitect(host.root())).architect; - }); - afterEach(async () => host.restore().toPromise()); - - it('works', async () => { - // Remove the bootstrap but keep a reference to AppModule so the import is not elided. - host.replaceInFile('src/main.ts', /platformBrowserDynamic.*?bootstrapModule.*?;/, ''); - host.appendToFile('src/main.ts', 'console.log(AppModule);'); - - await browserBuild(architect, host, target, { baseHref: '/myUrl' }); - }); -}); From f3c6dfed91fea310ba10b74a6c6d05ab84636039 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 7 Jan 2025 10:45:18 +0000 Subject: [PATCH 0213/2162] refactor(@angular/build): remove no longer correct type `buildApplication` no longer yields the `outputFiles` and `assetFiles`. --- goldens/public-api/angular/build/index.api.md | 13 +------------ .../angular/build/src/builders/application/index.ts | 9 ++------- packages/angular/build/src/index.ts | 6 +----- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 7286bd784bcc..d09f6bf40a6a 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -71,19 +71,8 @@ export interface ApplicationBuilderOptions { webWorkerTsConfig?: string; } -// @public (undocumented) -export interface ApplicationBuilderOutput extends BuilderOutput { - // (undocumented) - assetFiles?: { - source: string; - destination: string; - }[]; - // (undocumented) - outputFiles?: BuildOutputFile[]; -} - // @public -export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): AsyncIterable; +export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): AsyncIterable; // @public (undocumented) export interface BuildOutputAsset { diff --git a/packages/angular/build/src/builders/application/index.ts b/packages/angular/build/src/builders/application/index.ts index a8a68d96b88a..118f54c2013f 100644 --- a/packages/angular/build/src/builders/application/index.ts +++ b/packages/angular/build/src/builders/application/index.ts @@ -10,7 +10,7 @@ import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/ar import assert from 'node:assert'; import fs from 'node:fs/promises'; import path from 'node:path'; -import { BuildOutputFile, BuildOutputFileType } from '../../tools/esbuild/bundler-context'; +import { BuildOutputFileType } from '../../tools/esbuild/bundler-context'; import { createJsonBuildManifest, emitFilesToDisk } from '../../tools/esbuild/utils'; import { colors as ansiColors } from '../../utils/color'; import { deleteOutputDir } from '../../utils/delete-output-dir'; @@ -133,11 +133,6 @@ export async function* buildApplicationInternal( ); } -export interface ApplicationBuilderOutput extends BuilderOutput { - outputFiles?: BuildOutputFile[]; - assetFiles?: { source: string; destination: string }[]; -} - /** * Builds an application using the `application` builder with the provided * options. @@ -156,7 +151,7 @@ export async function* buildApplication( options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions, -): AsyncIterable { +): AsyncIterable { let initial = true; const internalOptions = { ...options, incrementalResults: true }; for await (const result of buildApplicationInternal(internalOptions, context, extensions)) { diff --git a/packages/angular/build/src/index.ts b/packages/angular/build/src/index.ts index 0ec392cf581d..64c5fc2f3b32 100644 --- a/packages/angular/build/src/index.ts +++ b/packages/angular/build/src/index.ts @@ -6,11 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -export { - buildApplication, - type ApplicationBuilderOptions, - type ApplicationBuilderOutput, -} from './builders/application'; +export { buildApplication, type ApplicationBuilderOptions } from './builders/application'; export type { ApplicationBuilderExtensions } from './builders/application/options'; export { type BuildOutputFile, BuildOutputFileType } from './tools/esbuild/bundler-context'; export type { BuildOutputAsset } from './tools/esbuild/bundler-execution-result'; From ef3dc2ed02cd997ccb0cb7ab6ff563eec31c5d9e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 7 Jan 2025 14:13:17 +0000 Subject: [PATCH 0214/2162] fix(@angular/build): enable serving files with bundle-like names Ensure files with names resembling bundles, such as `main.js`, can be served correctly. This resolves issues where specific filenames were mistakenly treated as generated bundles, preventing them from being accessed directly. Closes #29232 --- .../tests/behavior/build-assets_spec.ts | 21 +++++++++++++++++++ .../vite/plugins/angular-memory-plugin.ts | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/packages/angular/build/src/builders/dev-server/tests/behavior/build-assets_spec.ts b/packages/angular/build/src/builders/dev-server/tests/behavior/build-assets_spec.ts index 57679680ddb6..ef33e9e5ec0c 100644 --- a/packages/angular/build/src/builders/dev-server/tests/behavior/build-assets_spec.ts +++ b/packages/angular/build/src/builders/dev-server/tests/behavior/build-assets_spec.ts @@ -141,5 +141,26 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT expect(await response?.status).toBe(301); expect(await response?.headers.get('Location')).toBe('/login/'); }); + + it('serves a JavaScript asset named as a bundle', async () => { + await harness.writeFile('public/test/main.js', javascriptFileContent); + + setupTarget(harness, { + assets: [ + { + glob: '**/*', + input: 'public', + }, + ], + }); + + harness.useTarget('serve', { + ...BASE_OPTIONS, + }); + + const { result, response } = await executeOnceAndFetch(harness, 'test/main.js'); + expect(result?.success).toBeTrue(); + expect(await response?.text()).toContain(javascriptFileContent); + }); }); }); diff --git a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts index 47bfebb8ca15..734b3bc7e60e 100644 --- a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts @@ -22,6 +22,7 @@ interface AngularMemoryPluginOptions { } const ANGULAR_PREFIX = '/@ng/'; +const VITE_FS_PREFIX = '/@fs/'; export async function createAngularMemoryPlugin( options: AngularMemoryPluginOptions, @@ -34,6 +35,10 @@ export async function createAngularMemoryPlugin( // Ensures plugin hooks run before built-in Vite hooks enforce: 'pre', async resolveId(source, importer, { ssr }) { + if (source.startsWith(VITE_FS_PREFIX)) { + return; + } + // For SSR with component HMR, pass through as a virtual module if (ssr && source.startsWith(ANGULAR_PREFIX)) { return '\0' + source; From 2f921219f99c846e04d699ba099928e5fbbd8629 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 7 Jan 2025 10:19:10 +0000 Subject: [PATCH 0215/2162] fix(@angular/build): add asset tracking to application builder watch files This commit updates the application builder to include assets in the watch process, triggering file re-copying when changes are detected. Closes #28415 --- .../tests/behavior/rebuild-assets_spec.ts | 65 +++++++++++++++++++ .../tools/esbuild/bundler-execution-result.ts | 22 ++++--- 2 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 packages/angular/build/src/builders/application/tests/behavior/rebuild-assets_spec.ts diff --git a/packages/angular/build/src/builders/application/tests/behavior/rebuild-assets_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/rebuild-assets_spec.ts new file mode 100644 index 000000000000..6bf7763d2e4b --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/behavior/rebuild-assets_spec.ts @@ -0,0 +1,65 @@ +/** + * @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 { concatMap, count, take, timeout } from 'rxjs'; +import { buildApplication } from '../../index'; +import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setup'; + +/** + * Maximum time in milliseconds for single build/rebuild + * This accounts for CI variability. + */ +const BUILD_TIMEOUT = 10_000; + +describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { + describe('Behavior: "Rebuilds when input asset changes"', () => { + beforeEach(async () => { + // Application code is not needed for styles tests + await harness.writeFile('src/main.ts', 'console.log("TEST");'); + await harness.writeFile('public/asset.txt', 'foo'); + }); + + it('emits updated asset', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + assets: [ + { + glob: '**/*', + input: 'public', + }, + ], + watch: true, + }); + + const buildCount = await harness + .execute({ outputLogsOnFailure: false }) + .pipe( + timeout(BUILD_TIMEOUT), + concatMap(async ({ result }, index) => { + switch (index) { + case 0: + expect(result?.success).toBeTrue(); + harness.expectFile('dist/browser/asset.txt').content.toContain('foo'); + + await harness.writeFile('public/asset.txt', 'bar'); + break; + case 1: + expect(result?.success).toBeTrue(); + harness.expectFile('dist/browser/asset.txt').content.toContain('bar'); + break; + } + }), + take(2), + count(), + ) + .toPromise(); + + expect(buildCount).toBe(2); + }); + }); +}); diff --git a/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts b/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts index 61e9c860faef..60fe2966c5c7 100644 --- a/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts +++ b/packages/angular/build/src/tools/esbuild/bundler-execution-result.ts @@ -147,18 +147,20 @@ export class ExecutionResult { }; } - get watchFiles() { - // Bundler contexts internally normalize file dependencies - const files = this.rebuildContexts.typescriptContexts - .flatMap((context) => [...context.watchFiles]) - .concat(this.rebuildContexts.otherContexts.flatMap((context) => [...context.watchFiles])); - if (this.codeBundleCache?.referencedFiles) { + get watchFiles(): Readonly { + const { typescriptContexts, otherContexts } = this.rebuildContexts; + + return [ + // Bundler contexts internally normalize file dependencies. + ...typescriptContexts.flatMap((context) => [...context.watchFiles]), + ...otherContexts.flatMap((context) => [...context.watchFiles]), // These files originate from TS/NG and can have POSIX path separators even on Windows. // To ensure path comparisons are valid, all these paths must be normalized. - files.push(...this.codeBundleCache.referencedFiles.map(normalize)); - } - - return files.concat(this.extraWatchFiles); + ...(this.codeBundleCache?.referencedFiles?.map(normalize) ?? []), + // The assets source files. + ...this.assetFiles.map(({ source }) => source), + ...this.extraWatchFiles, + ]; } createRebuildState(fileChanges: ChangedFiles): RebuildState { From 9795a9e50b178166b24882e070ca8e86d92cfe51 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 7 Jan 2025 06:05:43 +0000 Subject: [PATCH 0216/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++------ .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 +++++------ package.json | 6 +- pnpm-lock.yaml | 59 ++++++++-------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++----- yarn.lock | 69 ++++++++++--------- 11 files changed, 138 insertions(+), 130 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index ab50318a3a24..88667f0a1be1 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=921023999 -pnpm-lock.yaml=-398883266 +package.json=-55906873 +pnpm-lock.yaml=230973314 pnpm-workspace.yaml=1711114604 -yarn.lock=-602836965 +yarn.lock=-1814415069 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index b1083fdba07e..eba180452bbc 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + - uses: angular/dev-infra/github-actions/branch-manager@359350bbc10aab1bac85d0eec61a53377078ab82 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fd89c63fd8e..840c863717c6 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -92,13 +92,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -114,13 +114,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -136,13 +136,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -154,13 +154,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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -188,11 +188,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - run: yarn 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 5a942141b187..dd34d23a46cc 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@359350bbc10aab1bac85d0eec61a53377078ab82 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + - uses: angular/dev-infra/github-actions/post-approval-changes@359350bbc10aab1bac85d0eec61a53377078ab82 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 9554113f980b..9a9c289b6259 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + - uses: angular/dev-infra/github-actions/feature-request@359350bbc10aab1bac85d0eec61a53377078ab82 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index cf501db841d9..c45957078372 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable # 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 2ff8f4eb34e9..7792b124659b 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/linting/licenses@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Check tooling setup run: yarn 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - 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@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -133,13 +133,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -155,13 +155,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -178,12 +178,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f0a9343aa86aac0222d035814dc919282fbdaa19 + uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 964d049379d5..1ee9e6c04f6d 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.4", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768", "@angular/cdk": "19.1.0-next.3", "@angular/common": "19.1.0-next.4", "@angular/compiler": "19.1.0-next.4", @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-next.4", "@angular/localize": "19.1.0-next.4", "@angular/material": "19.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492", "@angular/platform-browser": "19.1.0-next.4", "@angular/platform-browser-dynamic": "19.1.0-next.4", "@angular/platform-server": "19.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8f3c05b3e9f..bccf9bb547b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a - version: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2 + version: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6 - version: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768 + version: github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94 - version: github.com/angular/dev-infra-private-ng-dev-builds/fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492 + version: github.com/angular/dev-infra-private-ng-dev-builds/34c97ca953ce02abc95287e350351802ba74b492 '@angular/platform-browser': specifier: 19.1.0-next.4 version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) @@ -2595,8 +2595,8 @@ packages: engines: {node: '>=14'} dev: true - /@google-cloud/spanner@7.16.0(supports-color@10.0.0): - resolution: {integrity: sha512-9/rQau/WNgM1Zle9sEJm6jUp1l4sbHtiHGcktQnQc2LPs5EjMMg9eYaP4UfWgDzoxny+3hyKTyhBbAzHR8pQGA==} + /@google-cloud/spanner@7.17.1(supports-color@10.0.0): + resolution: {integrity: sha512-+dTR6wvb2jANVxNe2bF048QCOVRGbesHe8Tm0OFRhvCgv3ot31JFGPyRKukD7y3jAFSBqyX0bIUV9GVNk4oRPQ==} engines: {node: '>=14.0.0'} dependencies: '@google-cloud/common': 5.0.2(supports-color@10.0.0) @@ -2606,6 +2606,7 @@ packages: '@grpc/proto-loader': 0.7.13 '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 @@ -3537,6 +3538,16 @@ packages: '@opentelemetry/api': 1.9.0 dev: true + /@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.28.0 + dev: true + /@opentelemetry/semantic-conventions@1.28.0: resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} @@ -15150,12 +15161,6 @@ packages: engines: {node: '>=18'} dev: true - /yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} - engines: {node: '>= 14'} - hasBin: true - dev: true - /yaml@2.7.0: resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} @@ -15263,15 +15268,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/8cd573656c96422cd30c7290361a539df9b02b1a} - id: github.com/angular/bazel-builds/8cd573656c96422cd30c7290361a539df9b02b1a + github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/cfd7a06c2f972fcef59262995d232e2846b536a2} + id: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2 name: '@angular/bazel' version: 19.1.0-next.4 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.4+sha-f8d22a9 + '@angular/compiler-cli': 19.1.0-next.4+sha-b22677d '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -15300,11 +15305,11 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/e025d180b28460375d9f2292dc86e7c6a459b5b6} - id: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6 + github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/d0c8ad886b60c5abca85db6a8741cbf494169768} + id: github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768 name: '@angular/build-tooling' - version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 + version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) @@ -15372,13 +15377,13 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94} + github.com/angular/dev-infra-private-ng-dev-builds/34c97ca953ce02abc95287e350351802ba74b492: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/34c97ca953ce02abc95287e350351802ba74b492} name: '@angular/ng-dev' - version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 + version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 hasBin: true dependencies: - '@google-cloud/spanner': 7.16.0(supports-color@10.0.0) + '@google-cloud/spanner': 7.17.1(supports-color@10.0.0) '@octokit/rest': 21.0.2 '@types/semver': 7.5.8 '@types/supports-color': 8.1.3 @@ -15388,7 +15393,7 @@ packages: supports-color: 10.0.0 typed-graphqlify: 3.1.6 typescript: 5.7.2 - yaml: 2.6.1 + yaml: 2.7.0 transitivePeerDependencies: - encoding dev: true diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 40e185642d19..f22969ebcf31 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#41e8092809a0d7efdb02551d555a2f73e521b0a5", - "@angular/cdk": "github:angular/cdk-builds#63f3eb1aa946a849a61b9a80e15bd408eec38950", - "@angular/common": "github:angular/common-builds#e40981466ea13c59863f7170ca0a383b87ee3124", - "@angular/compiler": "github:angular/compiler-builds#7e05e4aced9bfc78eb42af22e73bd1f745e3c8f5", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#8e1b6d6a97260cc984f738e1f809a8272ff78a66", - "@angular/core": "github:angular/core-builds#6e63df3c89551d4f62ad66f3ba05c149f68c9320", - "@angular/forms": "github:angular/forms-builds#b675eaa5b2c42f8cbdbec5a3b29518546d5ebf47", - "@angular/language-service": "github:angular/language-service-builds#c654684c0162f6e4afc3a8ec308a4398fbb2a3f8", - "@angular/localize": "github:angular/localize-builds#98da5cfeac886253fa1aa617751bfaf5c5e69bb3", - "@angular/material": "github:angular/material-builds#962e6716342a2a35670dd1c5cb6a2edfa31da5f3", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#297dd44046bc794b0e3972dc44a2d378e1398014", - "@angular/platform-browser": "github:angular/platform-browser-builds#a5e46f6a2b64a71b984703c23a40f45aca0afaf4", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0c664599ca3a6f1baf96b83334905613531201eb", - "@angular/platform-server": "github:angular/platform-server-builds#a399f52e659aa95e026d61adf1dd5356c9b16c1d", - "@angular/router": "github:angular/router-builds#a7c8973ad45df6fbc0f6f88b954b4f352c5fbdf2", - "@angular/service-worker": "github:angular/service-worker-builds#006b26723dd587d7db04e44e168631fe4bb9efc4" + "@angular/animations": "github:angular/animations-builds#02b9062c0c9c8f60e66685f323c1462aac381ed3", + "@angular/cdk": "github:angular/cdk-builds#cc02bb3d92c2e358d07725125bb0c9cc566901b8", + "@angular/common": "github:angular/common-builds#76efb05a4ce4259527cc4140e3e2017c076e4fc4", + "@angular/compiler": "github:angular/compiler-builds#ed3a836240c8c57f5e0b48f7738a43c6760ec807", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#8099a8844dd89456ac55d9f4ac738d30f57feb9b", + "@angular/core": "github:angular/core-builds#7876e9eba9785d724e6473130950aff9b971f7d6", + "@angular/forms": "github:angular/forms-builds#899090779931fad4ec241f28e778ab6bc16155e0", + "@angular/language-service": "github:angular/language-service-builds#3dae05c6f369063720e6abe8b049939dd3a8624a", + "@angular/localize": "github:angular/localize-builds#052a2f25ff45df90951c911854f03ca0836cc712", + "@angular/material": "github:angular/material-builds#9d6e61ab53b864aa084ad382e309445728d5adc2", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3bf09333c3c5ad5c80b2ae36ec9bc944b89d693e", + "@angular/platform-browser": "github:angular/platform-browser-builds#b48e676a6ea985d03f6747627e3daf00a20ce003", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e1c6e91ee26b0dc0e433a8e47945893b21799669", + "@angular/platform-server": "github:angular/platform-server-builds#737586fc6bcf478e75e58786cad3a4baa0584f16", + "@angular/router": "github:angular/router-builds#bd057fc80804b5d16059ca5a5a89a0193a957588", + "@angular/service-worker": "github:angular/service-worker-builds#140d9c8e2dd236e9493f570c986adc782423acd3" } } diff --git a/yarn.lock b/yarn.lock index d3b51d5b191a..07bf9ac6f73a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a": - version: 19.1.0-next.4+sha-f8d22a9 - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=8cd573656c96422cd30c7290361a539df9b02b1a" +"@angular/bazel@https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2": + version: 19.1.0-next.4+sha-b22677d + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=cfd7a06c2f972fcef59262995d232e2846b536a2" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.4+sha-f8d22a9 + "@angular/compiler-cli": 19.1.0-next.4+sha-b22677d "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/86502169d9082ab4c3656e90d07cf3533a753a91f2a03d59d6a478424c62ab67c4a7813f581c47634c44b5b72d3df22ff67526e4d7a7be702389b1a0eff3f513 + checksum: 10c0/8d1d1d9570ffa467282ad7c440600aa8f0f22194851b3e53fa02c859f4d7ea2577397c0b7474cbfad81cfe9e7c50832888ee5af5d65ebf49745d9c088c7366ef languageName: node linkType: hard @@ -104,9 +104,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6": - version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=e025d180b28460375d9f2292dc86e7c6a459b5b6" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768": + version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=d0c8ad886b60c5abca85db6a8741cbf494169768" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.2" @@ -143,7 +143,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/a7998c6a7343edf4645f233f4f18f3227e3d104a9a6cf8f29da2b86d20437c068d8ac02f60fb685c2825cd5d15fe247770a60f13f80c04f26e6c44aba5867965 + checksum: 10c0/b815c7ec0e5e22d04a321d94b8e9e20af20024e503301c05268407404e23349e18719d738588036e3a9f10e8db054b2afe040a9e02cc407e70e282f881f0cfcc languageName: node linkType: hard @@ -310,8 +310,8 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-next.4" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#8cd573656c96422cd30c7290361a539df9b02b1a" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768" "@angular/cdk": "npm:19.1.0-next.3" "@angular/common": "npm:19.1.0-next.4" "@angular/compiler": "npm:19.1.0-next.4" @@ -320,7 +320,7 @@ __metadata: "@angular/forms": "npm:19.1.0-next.4" "@angular/localize": "npm:19.1.0-next.4" "@angular/material": "npm:19.1.0-next.3" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492" "@angular/platform-browser": "npm:19.1.0-next.4" "@angular/platform-browser-dynamic": "npm:19.1.0-next.4" "@angular/platform-server": "npm:19.1.0-next.4" @@ -533,11 +533,11 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94": - version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=fa6e7711e45d4a10fddc5ed0d661e2c6a4cf2a94" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492": + version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=34c97ca953ce02abc95287e350351802ba74b492" dependencies: - "@google-cloud/spanner": "npm:7.16.0" + "@google-cloud/spanner": "npm:7.17.1" "@octokit/rest": "npm:21.0.2" "@types/semver": "npm:^7.3.6" "@types/supports-color": "npm:^8.1.1" @@ -547,10 +547,10 @@ __metadata: supports-color: "npm:10.0.0" typed-graphqlify: "npm:^3.1.1" typescript: "npm:~4.9.0" - yaml: "npm:2.6.1" + yaml: "npm:2.7.0" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/67776db29d3ead971f8e3360c60b52bbbe61f807aff55b358a0abd13b2572ffe8c5bee20b4300376a22ca36d8a3bc022e2c2ca3d9ba227e6a3b2631d9243088a + checksum: 10c0/a571dc76f4da47ca8b1d6a9a217ea156132b13b96dc7d5b55e076fb7445e2b263496b99ad42e0403ff975ed215df9bee9a62eadfaf98a192bbb4333cdede41db languageName: node linkType: hard @@ -2401,9 +2401,9 @@ __metadata: languageName: node linkType: hard -"@google-cloud/spanner@npm:7.16.0": - version: 7.16.0 - resolution: "@google-cloud/spanner@npm:7.16.0" +"@google-cloud/spanner@npm:7.17.1": + version: 7.17.1 + resolution: "@google-cloud/spanner@npm:7.17.1" dependencies: "@google-cloud/common": "npm:^5.0.0" "@google-cloud/precise-date": "npm:^4.0.0" @@ -2412,6 +2412,7 @@ __metadata: "@grpc/proto-loader": "npm:^0.7.0" "@opentelemetry/api": "npm:^1.9.0" "@opentelemetry/context-async-hooks": "npm:^1.26.0" + "@opentelemetry/core": "npm:^1.27.0" "@opentelemetry/semantic-conventions": "npm:^1.25.1" "@types/big.js": "npm:^6.0.0" "@types/stack-trace": "npm:0.0.33" @@ -2435,7 +2436,7 @@ __metadata: stream-events: "npm:^1.0.4" teeny-request: "npm:^9.0.0" through2: "npm:^4.0.0" - checksum: 10c0/a89355806a5712374fac8a7011e7f501c8955515885d3cdcac1db76098ceef5f9d59ae7eba4592dbdd57364a26ab0e8fa392942c1523e8b6bbb91f7f3dfe6641 + checksum: 10c0/a08a330c42281553d4787bc938dc722c0a8508ec37db6cfc1729cb9c2932ad8fb5731e85c8169d4b82e16cecb846da963ec7e77b0dc318baf37b25872638af3f languageName: node linkType: hard @@ -3576,7 +3577,18 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:^1.25.1": +"@opentelemetry/core@npm:^1.27.0": + version: 1.30.0 + resolution: "@opentelemetry/core@npm:1.30.0" + dependencies: + "@opentelemetry/semantic-conventions": "npm:1.28.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10c0/52d17b5ddb06ab4241b977ff89b81f69f140edb5c2a78b2188d95fa7bdfdd1aa2dcafb1e2830ab77d557876682ab8f08727ba8f165ea3c39fbb6bf3b86ef33c8 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.28.0, @opentelemetry/semantic-conventions@npm:^1.25.1": version: 1.28.0 resolution: "@opentelemetry/semantic-conventions@npm:1.28.0" checksum: 10c0/deb8a0f744198071e70fea27143cf7c9f7ecb7e4d7b619488c917834ea09b31543c1c2bcea4ec5f3cf68797f0ef3549609c14e859013d9376400ac1499c2b9cb @@ -19018,16 +19030,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.6.1": - version: 2.6.1 - resolution: "yaml@npm:2.6.1" - bin: - yaml: bin.mjs - checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 - languageName: node - linkType: hard - -"yaml@npm:^2.2.2, yaml@npm:^2.4.1": +"yaml@npm:2.7.0, yaml@npm:^2.2.2, yaml@npm:^2.4.1": version: 2.7.0 resolution: "yaml@npm:2.7.0" bin: From 0826b30125e7cf5329d8ce7671eed9d5a73e3cc9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 7 Jan 2025 16:19:08 +0000 Subject: [PATCH 0217/2162] build: update all non-major dependencies --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 8 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 340 +++++++---------- yarn.lock | 352 ++++++++++++------ 5 files changed, 389 insertions(+), 319 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 88667f0a1be1..dc00e895d52a 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-55906873 -pnpm-lock.yaml=230973314 +package.json=857732709 +pnpm-lock.yaml=252219114 pnpm-workspace.yaml=1711114604 -yarn.lock=-1814415069 +yarn.lock=-46638791 diff --git a/package.json b/package.json index 1ee9e6c04f6d..a2a4f4aba7d2 100644 --- a/package.json +++ b/package.json @@ -106,8 +106,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.19.0", - "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/eslint-plugin": "8.19.1", + "@typescript-eslint/parser": "8.19.1", "@vitejs/plugin-basic-ssl": "1.2.0", "@web/test-runner": "^0.19.0", "@yarnpkg/lockfile": "1.1.0", @@ -158,7 +158,7 @@ "magic-string": "0.30.17", "mini-css-extract-plugin": "2.9.2", "mrmime": "2.0.0", - "ng-packagr": "19.1.0-next.2", + "ng-packagr": "19.1.0-next.3", "npm": "^11.0.0", "npm-package-arg": "12.0.1", "npm-pick-manifest": "10.0.0", @@ -176,7 +176,7 @@ "puppeteer": "18.2.1", "quicktype-core": "23.0.170", "resolve-url-loader": "5.0.0", - "rollup": "4.30.0", + "rollup": "4.30.1", "rollup-license-plugin": "~3.0.1", "rollup-plugin-sourcemaps": "^0.6.0", "rxjs": "7.8.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index a0249d6ebbdf..8b0b6a950849 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,7 +38,7 @@ "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", "piscina": "4.8.0", - "rollup": "4.30.0", + "rollup": "4.30.1", "sass": "1.83.1", "semver": "7.6.3", "vite": "6.0.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bccf9bb547b8..fa1e3878e6ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: 19.1.0-next.4(@angular/core@19.1.0-next.4) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2 - version: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768 version: github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -111,7 +111,7 @@ importers: version: 5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0) '@bazel/rollup': specifier: ^5.8.1 - version: 5.8.1(rollup@4.30.0) + version: 5.8.1(rollup@4.30.1) '@bazel/runfiles': specifier: ^5.8.1 version: 5.8.1 @@ -129,13 +129,13 @@ importers: version: 2.0.18(@inquirer/prompts@7.2.1) '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.30.0) + version: 5.1.1(rollup@4.30.1) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.2(rollup@4.30.0) + version: 28.0.2(rollup@4.30.1) '@rollup/plugin-node-resolve': specifier: ^13.0.5 - version: 13.3.0(rollup@4.30.0) + version: 13.3.0(rollup@4.30.1) '@stylistic/eslint-plugin': specifier: ^2.8.0 version: 2.12.1(eslint@8.57.0)(typescript@5.7.2) @@ -209,11 +209,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.19.0 - version: 8.19.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.19.1 + version: 8.19.1(@typescript-eslint/parser@8.19.1)(eslint@8.57.0)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: 8.19.0 - version: 8.19.0(eslint@8.57.0)(typescript@5.7.2) + specifier: 8.19.1 + version: 8.19.1(eslint@8.57.0)(typescript@5.7.2) '@vitejs/plugin-basic-ssl': specifier: 1.2.0 version: 1.2.0(vite@6.0.7) @@ -279,7 +279,7 @@ importers: version: 3.1.1(eslint@8.57.0) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0) + version: 2.31.0(@typescript-eslint/parser@8.19.1)(eslint@8.57.0) express: specifier: 4.21.2 version: 4.21.2 @@ -365,8 +365,8 @@ importers: specifier: 2.0.0 version: 2.0.0 ng-packagr: - specifier: 19.1.0-next.2 - version: 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2) + specifier: 19.1.0-next.3 + version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2) npm: specifier: ^11.0.0 version: 11.0.0 @@ -419,14 +419,14 @@ importers: specifier: 5.0.0 version: 5.0.0 rollup: - specifier: 4.30.0 - version: 4.30.0 + specifier: 4.30.1 + version: 4.30.1 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.1 rollup-plugin-sourcemaps: specifier: ^0.6.0 - version: 0.6.3(@types/node@18.19.70)(rollup@4.30.0) + version: 0.6.3(@types/node@18.19.70)(rollup@4.30.1) rxjs: specifier: 7.8.1 version: 7.8.1 @@ -2037,14 +2037,14 @@ packages: protractor: 7.0.0 dev: true - /@bazel/rollup@5.8.1(rollup@4.30.0): + /@bazel/rollup@5.8.1(rollup@4.30.1): resolution: {integrity: sha512-Ys+UWbRp1TY2j+z15N+SZgID/nuqAtJTgJDsz0NZVjm8F8KzmgXxLDnBb/cUKFVk83pNOAi84G/bq1tINjMSNA==} hasBin: true peerDependencies: rollup: '>=2.3.0 <3.0.0' dependencies: '@bazel/worker': 5.8.1 - rollup: 4.30.0 + rollup: 4.30.1 dev: true /@bazel/runfiles@5.8.1: @@ -3748,7 +3748,7 @@ packages: - supports-color dev: true - /@rollup/plugin-alias@5.1.1(rollup@4.30.0): + /@rollup/plugin-alias@5.1.1(rollup@4.30.1): resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3757,10 +3757,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.30.0 + rollup: 4.30.1 dev: true - /@rollup/plugin-commonjs@28.0.2(rollup@4.30.0): + /@rollup/plugin-commonjs@28.0.2(rollup@4.30.1): resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: @@ -3769,17 +3769,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.17 picomatch: 4.0.2 - rollup: 4.30.0 + rollup: 4.30.1 dev: true - /@rollup/plugin-json@6.1.0(rollup@4.30.0): + /@rollup/plugin-json@6.1.0(rollup@4.30.1): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3788,26 +3788,26 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) - rollup: 4.30.0 + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) + rollup: 4.30.1 dev: true - /@rollup/plugin-node-resolve@13.3.0(rollup@4.30.0): + /@rollup/plugin-node-resolve@13.3.0(rollup@4.30.1): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.30.0) + '@rollup/pluginutils': 3.1.0(rollup@4.30.1) '@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.30.0 + rollup: 4.30.1 dev: true - /@rollup/plugin-node-resolve@15.3.1(rollup@4.30.0): + /@rollup/plugin-node-resolve@15.3.1(rollup@4.30.1): resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3816,15 +3816,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.0) + '@rollup/pluginutils': 5.1.4(rollup@4.30.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 - rollup: 4.30.0 + rollup: 4.30.1 dev: true - /@rollup/pluginutils@3.1.0(rollup@4.30.0): + /@rollup/pluginutils@3.1.0(rollup@4.30.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -3833,10 +3833,10 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 4.30.0 + rollup: 4.30.1 dev: true - /@rollup/pluginutils@5.1.4(rollup@4.30.0): + /@rollup/pluginutils@5.1.4(rollup@4.30.1): resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3848,7 +3848,7 @@ packages: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 - rollup: 4.30.0 + rollup: 4.30.1 dev: true /@rollup/rollup-android-arm-eabi@4.28.1: @@ -3858,8 +3858,8 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm-eabi@4.30.0: - resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==} + /@rollup/rollup-android-arm-eabi@4.30.1: + resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} cpu: [arm] os: [android] dev: true @@ -3872,8 +3872,8 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm64@4.30.0: - resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==} + /@rollup/rollup-android-arm64@4.30.1: + resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} cpu: [arm64] os: [android] dev: true @@ -3886,8 +3886,8 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.30.0: - resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==} + /@rollup/rollup-darwin-arm64@4.30.1: + resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} cpu: [arm64] os: [darwin] dev: true @@ -3900,8 +3900,8 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-x64@4.30.0: - resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==} + /@rollup/rollup-darwin-x64@4.30.1: + resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} cpu: [x64] os: [darwin] dev: true @@ -3914,8 +3914,8 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-arm64@4.30.0: - resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==} + /@rollup/rollup-freebsd-arm64@4.30.1: + resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} cpu: [arm64] os: [freebsd] dev: true @@ -3928,8 +3928,8 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-x64@4.30.0: - resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==} + /@rollup/rollup-freebsd-x64@4.30.1: + resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} cpu: [x64] os: [freebsd] dev: true @@ -3942,8 +3942,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.30.0: - resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==} + /@rollup/rollup-linux-arm-gnueabihf@4.30.1: + resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} cpu: [arm] os: [linux] dev: true @@ -3956,8 +3956,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.30.0: - resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==} + /@rollup/rollup-linux-arm-musleabihf@4.30.1: + resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} cpu: [arm] os: [linux] dev: true @@ -3970,8 +3970,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.30.0: - resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==} + /@rollup/rollup-linux-arm64-gnu@4.30.1: + resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} cpu: [arm64] os: [linux] dev: true @@ -3984,8 +3984,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.30.0: - resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==} + /@rollup/rollup-linux-arm64-musl@4.30.1: + resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} cpu: [arm64] os: [linux] dev: true @@ -3998,8 +3998,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-loongarch64-gnu@4.30.0: - resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==} + /@rollup/rollup-linux-loongarch64-gnu@4.30.1: + resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} cpu: [loong64] os: [linux] dev: true @@ -4012,8 +4012,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.30.0: - resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==} + /@rollup/rollup-linux-powerpc64le-gnu@4.30.1: + resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} cpu: [ppc64] os: [linux] dev: true @@ -4026,8 +4026,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.30.0: - resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==} + /@rollup/rollup-linux-riscv64-gnu@4.30.1: + resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} cpu: [riscv64] os: [linux] dev: true @@ -4040,8 +4040,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.30.0: - resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==} + /@rollup/rollup-linux-s390x-gnu@4.30.1: + resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} cpu: [s390x] os: [linux] dev: true @@ -4054,8 +4054,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.30.0: - resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==} + /@rollup/rollup-linux-x64-gnu@4.30.1: + resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} cpu: [x64] os: [linux] dev: true @@ -4068,8 +4068,8 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.30.0: - resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==} + /@rollup/rollup-linux-x64-musl@4.30.1: + resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} cpu: [x64] os: [linux] dev: true @@ -4082,8 +4082,8 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.30.0: - resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==} + /@rollup/rollup-win32-arm64-msvc@4.30.1: + resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} cpu: [arm64] os: [win32] dev: true @@ -4096,8 +4096,8 @@ packages: dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.30.0: - resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==} + /@rollup/rollup-win32-ia32-msvc@4.30.1: + resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} cpu: [ia32] os: [win32] dev: true @@ -4110,8 +4110,8 @@ packages: dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.30.0: - resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==} + /@rollup/rollup-win32-x64-msvc@4.30.1: + resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} cpu: [x64] os: [win32] dev: true @@ -4880,8 +4880,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} + /@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1)(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -4889,32 +4889,32 @@ packages: typescript: 5.7.2 dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@8.19.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} + /@typescript-eslint/parser@8.19.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 typescript: 5.7.2 @@ -4922,14 +4922,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@8.19.0: - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 - dev: true - /@typescript-eslint/scope-manager@8.19.1: resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4938,52 +4930,28 @@ packages: '@typescript-eslint/visitor-keys': 8.19.1 dev: true - /@typescript-eslint/type-utils@8.19.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} + /@typescript-eslint/type-utils@8.19.1(eslint@8.57.0)(typescript@5.7.2): + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.7.2 dependencies: - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@8.19.0: - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@typescript-eslint/types@8.19.1: resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2): - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: 5.7.2 - dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.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.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2): resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5003,23 +4971,6 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.19.0(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: 5.7.2 - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - eslint: 8.57.0 - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/utils@8.19.1(eslint@8.57.0)(typescript@5.7.2): resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5037,14 +4988,6 @@ packages: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.19.0: - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.19.0 - eslint-visitor-keys: 4.2.0 - dev: true - /@typescript-eslint/visitor-keys@8.19.1: resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5343,11 +5286,11 @@ packages: resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.30.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.30.1) '@web/dev-server-core': 0.7.5 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.30.0 + rollup: 4.30.1 whatwg-url: 14.1.0 transitivePeerDependencies: - bufferutil @@ -6817,8 +6760,8 @@ packages: typical: 7.3.0 dev: true - /commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + /commander@13.0.0: + resolution: {integrity: sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==} engines: {node: '>=18'} dev: true @@ -7880,7 +7823,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -7901,7 +7844,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.2) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -7917,7 +7860,7 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.0)(eslint@8.57.0): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1)(eslint@8.57.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -7928,7 +7871,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.19.0(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.3 @@ -7937,7 +7880,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11061,8 +11004,8 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /ng-packagr@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2): - resolution: {integrity: sha512-kqS63grbL+WnG5AveyXmqsMHeY2w6tmApfDuvK9lEC4u1VHfgGoA8Q3RKGkz+32zSI/eiBVXB/qMeeP+1q5QZA==} + /ng-packagr@19.1.0-next.3(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2): + resolution: {integrity: sha512-D/2axZFTpc0z/tH4Okgbc++0h6DnarNX0+aPWjDKAN3nPURpj6nrj997ee5GmBFeivcGu3gepVHoICAII7YOyg==} engines: {node: ^18.19.1 || >=20.11.1} hasBin: true peerDependencies: @@ -11075,13 +11018,13 @@ packages: optional: true dependencies: '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) - '@rollup/plugin-json': 6.1.0(rollup@4.30.0) + '@rollup/plugin-json': 6.1.0(rollup@4.30.1) '@rollup/wasm-node': 4.30.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.24.3 chokidar: 4.0.3 - commander: 12.1.0 + commander: 13.0.0 convert-source-map: 2.0.0 dependency-graph: 1.0.0 esbuild: 0.24.2 @@ -11098,7 +11041,7 @@ packages: tslib: 2.8.1 typescript: 5.7.2 optionalDependencies: - rollup: 4.30.0 + rollup: 4.30.1 dev: true /node-addon-api@6.1.0: @@ -12736,7 +12679,7 @@ packages: spdx-expression-validate: 2.0.0 dev: true - /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.70)(rollup@4.30.0): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.19.70)(rollup@4.30.1): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12746,9 +12689,9 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.30.0) + '@rollup/pluginutils': 3.1.0(rollup@4.30.1) '@types/node': 18.19.70 - rollup: 4.30.0 + rollup: 4.30.1 source-map-resolve: 0.6.0 dev: true @@ -12781,32 +12724,32 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.30.0: - resolution: {integrity: sha512-sDnr1pcjTgUT69qBksNF1N1anwfbyYG6TBQ22b03bII8EdiUQ7J0TlozVaTMjT/eEJAO49e1ndV7t+UZfL1+vA==} + /rollup@4.30.1: + resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.30.0 - '@rollup/rollup-android-arm64': 4.30.0 - '@rollup/rollup-darwin-arm64': 4.30.0 - '@rollup/rollup-darwin-x64': 4.30.0 - '@rollup/rollup-freebsd-arm64': 4.30.0 - '@rollup/rollup-freebsd-x64': 4.30.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.30.0 - '@rollup/rollup-linux-arm-musleabihf': 4.30.0 - '@rollup/rollup-linux-arm64-gnu': 4.30.0 - '@rollup/rollup-linux-arm64-musl': 4.30.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.30.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.30.0 - '@rollup/rollup-linux-riscv64-gnu': 4.30.0 - '@rollup/rollup-linux-s390x-gnu': 4.30.0 - '@rollup/rollup-linux-x64-gnu': 4.30.0 - '@rollup/rollup-linux-x64-musl': 4.30.0 - '@rollup/rollup-win32-arm64-msvc': 4.30.0 - '@rollup/rollup-win32-ia32-msvc': 4.30.0 - '@rollup/rollup-win32-x64-msvc': 4.30.0 + '@rollup/rollup-android-arm-eabi': 4.30.1 + '@rollup/rollup-android-arm64': 4.30.1 + '@rollup/rollup-darwin-arm64': 4.30.1 + '@rollup/rollup-darwin-x64': 4.30.1 + '@rollup/rollup-freebsd-arm64': 4.30.1 + '@rollup/rollup-freebsd-x64': 4.30.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 + '@rollup/rollup-linux-arm-musleabihf': 4.30.1 + '@rollup/rollup-linux-arm64-gnu': 4.30.1 + '@rollup/rollup-linux-arm64-musl': 4.30.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 + '@rollup/rollup-linux-riscv64-gnu': 4.30.1 + '@rollup/rollup-linux-s390x-gnu': 4.30.1 + '@rollup/rollup-linux-x64-gnu': 4.30.1 + '@rollup/rollup-linux-x64-musl': 4.30.1 + '@rollup/rollup-win32-arm64-msvc': 4.30.1 + '@rollup/rollup-win32-ia32-msvc': 4.30.1 + '@rollup/rollup-win32-x64-msvc': 4.30.1 fsevents: 2.3.3 dev: true @@ -14047,15 +13990,6 @@ packages: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} dev: true - /ts-api-utils@1.4.3(typescript@5.7.2): - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: 5.7.2 - dependencies: - typescript: 5.7.2 - dev: true - /ts-api-utils@2.0.0(typescript@5.7.2): resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} engines: {node: '>=18.12'} @@ -14620,7 +14554,7 @@ packages: esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 - rollup: 4.30.0 + rollup: 4.30.1 sass: 1.83.0 terser: 5.37.0 optionalDependencies: @@ -14671,7 +14605,7 @@ packages: esbuild: 0.24.2 less: 4.2.1 postcss: 8.4.49 - rollup: 4.30.0 + rollup: 4.30.1 sass: 1.83.1 terser: 5.37.0 optionalDependencies: @@ -15268,7 +15202,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.0)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/cfd7a06c2f972fcef59262995d232e2846b536a2} id: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2 name: '@angular/bazel' @@ -15293,11 +15227,11 @@ packages: '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.48.1(@types/node@18.19.70) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.0) - '@rollup/plugin-node-resolve': 13.3.0(rollup@4.30.0) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.1) + '@rollup/plugin-node-resolve': 13.3.0(rollup@4.30.1) magic-string: 0.30.17 - rollup: 4.30.0 - rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.70)(rollup@4.30.0) + rollup: 4.30.1 + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.70)(rollup@4.30.1) terser: 5.37.0 tslib: 2.8.1 typescript: 5.7.2 diff --git a/yarn.lock b/yarn.lock index 07bf9ac6f73a..fa3dfe0f7cc0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -373,8 +373,8 @@ __metadata: "@types/yargs": "npm:^17.0.20" "@types/yargs-parser": "npm:^21.0.0" "@types/yarnpkg__lockfile": "npm:^1.1.5" - "@typescript-eslint/eslint-plugin": "npm:8.19.0" - "@typescript-eslint/parser": "npm:8.19.0" + "@typescript-eslint/eslint-plugin": "npm:8.19.1" + "@typescript-eslint/parser": "npm:8.19.1" "@vitejs/plugin-basic-ssl": "npm:1.2.0" "@web/test-runner": "npm:^0.19.0" "@yarnpkg/lockfile": "npm:1.1.0" @@ -425,7 +425,7 @@ __metadata: magic-string: "npm:0.30.17" mini-css-extract-plugin: "npm:2.9.2" mrmime: "npm:2.0.0" - ng-packagr: "npm:19.1.0-next.2" + ng-packagr: "npm:19.1.0-next.3" npm: "npm:^11.0.0" npm-package-arg: "npm:12.0.1" npm-pick-manifest: "npm:10.0.0" @@ -443,7 +443,7 @@ __metadata: puppeteer: "npm:18.2.1" quicktype-core: "npm:23.0.170" resolve-url-loader: "npm:5.0.0" - rollup: "npm:4.30.0" + rollup: "npm:4.30.1" rollup-license-plugin: "npm:~3.0.1" rollup-plugin-sourcemaps: "npm:^0.6.0" rxjs: "npm:7.8.1" @@ -3960,6 +3960,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.30.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-android-arm64@npm:4.28.1" @@ -3974,6 +3981,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-android-arm64@npm:4.30.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" @@ -3988,6 +4002,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.30.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" @@ -4002,6 +4023,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.30.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" @@ -4016,6 +4044,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.30.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" @@ -4030,6 +4065,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.30.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" @@ -4044,6 +4086,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.30.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" @@ -4058,6 +4107,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.30.1" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" @@ -4072,6 +4128,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.30.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" @@ -4086,6 +4149,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.30.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" @@ -4100,6 +4170,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-loongarch64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.30.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" @@ -4114,6 +4191,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" @@ -4128,6 +4212,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.30.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" @@ -4142,6 +4233,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.30.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" @@ -4156,6 +4254,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.30.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" @@ -4170,6 +4275,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.30.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" @@ -4184,6 +4296,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.30.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" @@ -4198,6 +4317,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.30.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" @@ -4212,6 +4338,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.30.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rollup/wasm-node@npm:^4.24.0": version: 4.30.0 resolution: "@rollup/wasm-node@npm:4.30.0" @@ -5326,50 +5459,40 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.19.0" +"@typescript-eslint/eslint-plugin@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.19.1" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.19.0" - "@typescript-eslint/type-utils": "npm:8.19.0" - "@typescript-eslint/utils": "npm:8.19.0" - "@typescript-eslint/visitor-keys": "npm:8.19.0" + "@typescript-eslint/scope-manager": "npm:8.19.1" + "@typescript-eslint/type-utils": "npm:8.19.1" + "@typescript-eslint/utils": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^1.3.0" + ts-api-utils: "npm:^2.0.0" peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/ceaa5063b68684b5608950b5e69f0caf1eadfc356cba82625240d6aae55f769faff599c38d35252dcb77a40d92e6fbf6d6264bc0c577d5c549da25061c3bd796 + checksum: 10c0/993784b04533b13c3f3919c793cfc3a369fa61692e1a2d72de6fba27df247c275d852cdcbc4e393c310b73fce8d34d210a9b632b66f4d761a1a3b4781f8fa93f languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/parser@npm:8.19.0" +"@typescript-eslint/parser@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/parser@npm:8.19.1" dependencies: - "@typescript-eslint/scope-manager": "npm:8.19.0" - "@typescript-eslint/types": "npm:8.19.0" - "@typescript-eslint/typescript-estree": "npm:8.19.0" - "@typescript-eslint/visitor-keys": "npm:8.19.0" + "@typescript-eslint/scope-manager": "npm:8.19.1" + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/typescript-estree": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/064b0997963060490fc3f92c90cebc7c694f47a7657f7882ce9eb314786e0cf3e917bfccfad614d23038439d84e69a978bdc7054515b23201001dd427e524e64 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/scope-manager@npm:8.19.0" - dependencies: - "@typescript-eslint/types": "npm:8.19.0" - "@typescript-eslint/visitor-keys": "npm:8.19.0" - checksum: 10c0/5052863d00db7ae939de27e91dc6c92df3c37a877e1ff44015ae9aa754d419b44d97d98b25fbb30a80dc58cf92606dad599e27f32b86d20c13b77ac12b4f2abc + checksum: 10c0/1afbd2d0a25f439943bdc94637417429574eb3889a2a1ce24bd425721713aca213808a975bb518a6616171783bc04fa973167f05fc6a96cfd88c1d1666077ad4 languageName: node linkType: hard @@ -5383,25 +5506,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/type-utils@npm:8.19.0" +"@typescript-eslint/type-utils@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/type-utils@npm:8.19.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.19.0" - "@typescript-eslint/utils": "npm:8.19.0" + "@typescript-eslint/typescript-estree": "npm:8.19.1" + "@typescript-eslint/utils": "npm:8.19.1" debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.3.0" + ts-api-utils: "npm:^2.0.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/5a460b4d26fd68ded3567390cbac310500e94e9c69583fda3fb9930877663719e6831699bb6d85de6b940bcb7951a51ab1ef67c5fea8b76a13ea3a3783bbae28 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/types@npm:8.19.0" - checksum: 10c0/0062e7dce5f374e293c97f1f50fe450187f6b0eaf4971c818e18ef2f6baf4e9aa4e8605fba8d8fc464a504ee1130527b71ecb39d31687c31825942b9f569d902 + checksum: 10c0/757592b515beec58c079c605aa648ba94d985ae48ba40460034e849c7bc2b603b1da6113e59688e284608c9d5ccaa27adf0a14fb032cb1782200c6acae51ddd2 languageName: node linkType: hard @@ -5412,24 +5528,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.19.0" - dependencies: - "@typescript-eslint/types": "npm:8.19.0" - "@typescript-eslint/visitor-keys": "npm:8.19.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependencies: - typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/ff47004588e8ff585af740b3e0bda07dc52310dbfeb2317eb4a723935740cf0c1953fc9ba57f14cf192bcfe373c46be833ba29d3303df8b501181bb852c7b822 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.19.1": version: 8.19.1 resolution: "@typescript-eslint/typescript-estree@npm:8.19.1" @@ -5448,22 +5546,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/utils@npm:8.19.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.19.0" - "@typescript-eslint/types": "npm:8.19.0" - "@typescript-eslint/typescript-estree": "npm:8.19.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.8.0" - checksum: 10c0/7731f7fb66d54491769ca68fd04728138ceb6b785778ad491f8e9b2147802fa0ff480e520f6ea5fb73c8484d13a2ed3e35d44635f5bf4cfbdb04c313154097a9 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^8.13.0": +"@typescript-eslint/utils@npm:8.19.1, @typescript-eslint/utils@npm:^8.13.0": version: 8.19.1 resolution: "@typescript-eslint/utils@npm:8.19.1" dependencies: @@ -5478,16 +5561,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.19.0": - version: 8.19.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.19.0" - dependencies: - "@typescript-eslint/types": "npm:8.19.0" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/a293def05018bb2259506e23cd8f14349f4386d0e51231893fbddf96ef73c219d5f9fe17b82e3c104f5c23956dbd9b87af3cff5e84b887af243139a3b4bbbe0d - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:8.19.1": version: 8.19.1 resolution: "@typescript-eslint/visitor-keys@npm:8.19.1" @@ -7752,10 +7825,10 @@ __metadata: languageName: node linkType: hard -"commander@npm:^12.1.0": - version: 12.1.0 - resolution: "commander@npm:12.1.0" - checksum: 10c0/6e1996680c083b3b897bfc1cfe1c58dfbcd9842fd43e1aaf8a795fbc237f65efcc860a3ef457b318e73f29a4f4a28f6403c3d653d021d960e4632dd45bde54a9 +"commander@npm:^13.0.0": + version: 13.0.0 + resolution: "commander@npm:13.0.0" + checksum: 10c0/8ba1e2b83bfdbcefd967aa505f5f5dc58202aa5f8e10437f61f6980dd8a69f868dba439a261f9fb72fc543c5f6fe58140e37b001a4c70b92ae22527abe94dfe1 languageName: node linkType: hard @@ -13587,9 +13660,9 @@ __metadata: languageName: node linkType: hard -"ng-packagr@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "ng-packagr@npm:19.1.0-next.2" +"ng-packagr@npm:19.1.0-next.3": + version: 19.1.0-next.3 + resolution: "ng-packagr@npm:19.1.0-next.3" dependencies: "@rollup/plugin-json": "npm:^6.1.0" "@rollup/wasm-node": "npm:^4.24.0" @@ -13597,7 +13670,7 @@ __metadata: ansi-colors: "npm:^4.1.3" browserslist: "npm:^4.22.1" chokidar: "npm:^4.0.1" - commander: "npm:^12.1.0" + commander: "npm:^13.0.0" convert-source-map: "npm:^2.0.0" dependency-graph: "npm:^1.0.0" esbuild: "npm:^0.24.0" @@ -13625,7 +13698,7 @@ __metadata: optional: true bin: ng-packagr: cli/main.js - checksum: 10c0/0d3bfa91b00a7b097fb43d8a4e5a8cb6dcc58b6c93bc5de5d5f8938e1ad4a6d04e798f5f9ee5a5901a1c0e8662614d3e4ef9eb0bb671376da0f7aeb8593210e9 + checksum: 10c0/abf0a026e518eca1dd628cdaa2068b9c0b2f116d1daeef7301520d8e415c8442b183bbbf3adba85d5a40b96c6b741d808396524b9e2a8dd5f28ee97dd6891c44 languageName: node linkType: hard @@ -15939,7 +16012,79 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.30.0, rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": +"rollup@npm:4.30.1": + version: 4.30.1 + resolution: "rollup@npm:4.30.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.30.1" + "@rollup/rollup-android-arm64": "npm:4.30.1" + "@rollup/rollup-darwin-arm64": "npm:4.30.1" + "@rollup/rollup-darwin-x64": "npm:4.30.1" + "@rollup/rollup-freebsd-arm64": "npm:4.30.1" + "@rollup/rollup-freebsd-x64": "npm:4.30.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.30.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.30.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.30.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.30.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.30.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-x64-musl": "npm:4.30.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.30.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.30.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.30.1" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/a318c57e2ca9741e1503bcd75483949c6e83edd72234a468010a3098a34248f523e44f7ad4fde90dc5c2da56abc1b78ac42a9329e1dbd708682728adbd8df7cc + languageName: node + linkType: hard + +"rollup@npm:^4.23.0, rollup@npm:^4.24.0, rollup@npm:^4.4.0": version: 4.30.0 resolution: "rollup@npm:4.30.0" dependencies: @@ -17628,15 +17773,6 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.3.0": - version: 1.4.3 - resolution: "ts-api-utils@npm:1.4.3" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a - languageName: node - linkType: hard - "ts-api-utils@npm:^2.0.0": version: 2.0.0 resolution: "ts-api-utils@npm:2.0.0" From 34e703196c0f3260cf4deff8de73f5d6bf51291a Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Tue, 7 Jan 2025 18:09:37 +0000 Subject: [PATCH 0218/2162] Revert "ci: run less jobs per executor for RBE" This reverts commit 1c011a25b1f6c0d80fa486fdadcaf9d5f8571409. --- .bazelrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index 50e3f41e94a6..caa0491048d0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -129,7 +129,7 @@ build:remote --define=EXECUTOR=remote build:remote --remote_cache=remotebuildexecution.googleapis.com build:remote --remote_executor=remotebuildexecution.googleapis.com build:remote --remote_timeout=600 -build:remote --jobs=10 +build:remote --jobs=150 # Setup the toolchain and platform for the remote build execution. The platform # is provided by the shared dev-infra package and targets k8 remote containers. From 4000959af8c05de554d037488514d0cdf8745e5e Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Tue, 7 Jan 2025 18:11:28 +0000 Subject: [PATCH 0219/2162] ci: add flag for preventing NpmPackageExtract from executing on RBE Prevent NpmPackageExtract from running on RBE and overwhelming our quota --- .bazelrc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.bazelrc b/.bazelrc index caa0491048d0..084f8fb56026 100644 --- a/.bazelrc +++ b/.bazelrc @@ -162,6 +162,18 @@ build:remote-cache --google_default_credentials # Fixes use of npm paths with spaces such as some within the puppeteer module build --experimental_inprocess_symlink_creation +# Enable runfiles even on Windows. +# Architect resolves output files from data files, and this isn't possible without runfile support. +build --enable_runfiles + +#################################################### +# rules_js specific flags +#################################################### + +# TODO(josephperrott): investigate if this can be removed eventually. +# Prevents the npm package extract from occuring on RBE which overwhelms our quota +build --modify_execution_info=NpmPackageExtract=+no-remote-exec + #################################################### # User bazel configuration # NOTE: This needs to be the *last* entry in the config. @@ -170,7 +182,3 @@ build --experimental_inprocess_symlink_creation # Load any settings which are specific to the current user. Needs to be *last* statement # in this config, as the user configuration should be able to overwrite flags from this file. try-import .bazelrc.user - -# Enable runfiles even on Windows. -# Architect resolves output files from data files, and this isn't possible without runfile support. -build --enable_runfiles From 7519593275f65569017da6479a85a89cea1bec01 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 11:03:48 +0000 Subject: [PATCH 0220/2162] docs: update license year to include current year Include 2025. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 9017f114edfc..48adc1eb1829 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2010-2024 Google LLC. https://angular.dev/license +Copyright (c) 2010-2025 Google LLC. https://angular.dev/license Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From ceec32f9cbb7c5425d12bd4594cbebcce115dee6 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 8 Jan 2025 08:44:37 +0000 Subject: [PATCH 0221/2162] ci: enable `rules_js` interop mode for ng-dev release tool This ensures that the Bazel lock files are automatically updated. See: https://github.com/angular/dev-infra/commit/289aa644e65a557bcb21adcf75ad60605a9c9859 --- .ng-dev/release.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.ng-dev/release.mjs b/.ng-dev/release.mjs index 3d097ea80b11..9b54dfea2052 100644 --- a/.ng-dev/release.mjs +++ b/.ng-dev/release.mjs @@ -31,6 +31,8 @@ export const release = { '@angular-devkit/schematics-cli', ], }, + // TODO: Remove after `rules_js` migration. + rulesJsInteropMode: true, publishRegistry: 'https://wombat-dressing-room.appspot.com', releasePrLabels: ['action: merge'], }; From e66b24bfa94fdd6ed9ba9deba81a2f2b57a1d9fd Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 12:11:26 +0000 Subject: [PATCH 0222/2162] build: resolve issue with uncompiled `@angular/build/private` being included Reference: https://github.com/angular/angular-build-builds/commit/3735297d21181b5885cf9a3625cb554c46efb8b3 --- packages/angular/build/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 01c16f6436f2..91868fb61cfd 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -227,7 +227,7 @@ pkg_npm( ":README.md", ":build", ":license", - ":private", + "//packages/angular/build/private", ], ) From 04b818436e81b53cf61239c9eec559c407d7fb69 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 8 Jan 2025 12:45:46 +0000 Subject: [PATCH 0223/2162] build: do not include tsconfig files in npm archives `rules_js` includes `tsconfig.json` files in the `DeclarationInfo` provider. This ends up causing these files to be part of the npm archives. --- tools/interop.bzl | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tools/interop.bzl b/tools/interop.bzl index f0dd3ce765f0..c6d8c0a117af 100644 --- a/tools/interop.bzl +++ b/tools/interop.bzl @@ -45,13 +45,12 @@ def _ts_project_module_impl(ctx): # Filter runfiles to not `node_modules` from Aspect as this interop # target is supposed to be used downstream by `rules_nodejs` consumers, # and mixing pnpm-style node modules with linker node modules is incompatible. - filtered = [] + filtered_runfiles = [] for f in runfiles.files.to_list(): if f.short_path.startswith("node_modules/"): continue - filtered.append(f) - - runfiles = ctx.runfiles(files = filtered) + filtered_runfiles.append(f) + runfiles = ctx.runfiles(files = filtered_runfiles) providers = [ DefaultInfo( @@ -62,8 +61,8 @@ def _ts_project_module_impl(ctx): sources = depset(transitive = [info.transitive_sources]), ), DeclarationInfo( - declarations = info.types, - transitive_declarations = info.transitive_types, + declarations = _filter_types_depset(info.types), + transitive_declarations = _filter_types_depset(info.transitive_types), type_blocklisted_declarations = depset(), ), ] @@ -135,3 +134,17 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly deps = [] + interop_deps + deps, module_name = module_name, ) + +# Filter type provider to not include `.json` files. `ts_config` +# targets are included in `ts_project` and their tsconfig json file +# is included as type. See: +# https://github.com/aspect-build/rules_ts/blob/main/ts/private/ts_config.bzl#L55C63-L55C68. +def _filter_types_depset(types_depset): + types = [] + + for t in types_depset.to_list(): + if t.short_path.endswith(".json"): + continue + types.append(t) + + return depset(types) From aab42488e91e3f340252417bc77290d956024487 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 3 Jan 2025 09:50:01 -0500 Subject: [PATCH 0224/2162] refactor(@angular/build): support multiple results per application build action The `application` builder may now return more than one build result per rebuild action. This will typically occur when using the development server with HMR enabled. In this scenario, component template update results may be sent to the development server in addition to incremental updates for global styles. TailwindCSS, for instance, may update the global stylesheet for an application based on the usage of styles within a given template. --- .../src/builders/application/build-action.ts | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/angular/build/src/builders/application/build-action.ts b/packages/angular/build/src/builders/application/build-action.ts index e006dce6afb7..f5726746825c 100644 --- a/packages/angular/build/src/builders/application/build-action.ts +++ b/packages/angular/build/src/builders/application/build-action.ts @@ -144,7 +144,7 @@ export async function* runEsBuildBuildAction( // Output the first build results after setting up the watcher to ensure that any code executed // higher in the iterator call stack will trigger the watcher. This is particularly relevant for // unit tests which execute the builder and modify the file system programmatically. - yield emitOutputResult(result, outputOptions); + yield* emitOutputResults(result, outputOptions); // Finish if watch mode is not enabled if (!watcher) { @@ -196,11 +196,13 @@ export async function* runEsBuildBuildAction( watcher.remove([...staleWatchFiles]); } - yield emitOutputResult( + for (const outputResult of emitOutputResults( result, outputOptions, incrementalResults ? rebuildState.previousOutputInfo : undefined, - ); + )) { + yield outputResult; + } } } finally { // Stop the watcher and cleanup incremental rebuild state @@ -210,7 +212,7 @@ export async function* runEsBuildBuildAction( } } -function emitOutputResult( +function* emitOutputResults( { outputFiles, assetFiles, @@ -223,9 +225,9 @@ function emitOutputResult( }: ExecutionResult, outputOptions: NormalizedApplicationBuildOptions['outputOptions'], previousOutputInfo?: ReadonlyMap, -): Result { +): Iterable { if (errors.length > 0) { - return { + yield { kind: ResultKind.Failure, errors: errors as ResultMessage[], warnings: warnings as ResultMessage[], @@ -233,6 +235,8 @@ function emitOutputResult( outputOptions, }, }; + + return; } // Template updates only exist if no other JS changes have occurred @@ -247,7 +251,7 @@ function emitOutputResult( })), }; - return updateResult; + yield updateResult; } // Use an incremental result if previous output information is available @@ -273,6 +277,13 @@ function emitOutputResult( for (const file of outputFiles) { removedOutputFiles.delete(file.path); + // Temporarily ignore JS files until Angular compiler plugin refactor to allow + // bypassing application code bundling for template affecting only changes. + // TODO: Remove once refactor is complete. + if (hasTemplateUpdates && /\.js(?:\.map)?$/.test(file.path)) { + continue; + } + const previousHash = previousOutputInfo.get(file.path)?.hash; let needFile = false; if (previousHash === undefined) { @@ -312,7 +323,9 @@ function emitOutputResult( }; } - return incrementalResult; + yield incrementalResult; + + return; } // Otherwise, use a full result @@ -343,5 +356,5 @@ function emitOutputResult( }; } - return result; + yield result; } From ebc3cc80037379eeda5f40653060087742f2a9b3 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 12:42:29 +0000 Subject: [PATCH 0225/2162] refactor(@angular/build): remove redundant ESLint disabling comments Remove comments --- .../angular/build/src/builders/dev-server/vite-server.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 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 bc8f0cae28b0..c8f97eba7504 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -796,15 +796,14 @@ export async function setupServer( if (serverOptions.ssl) { if (serverOptions.sslCert && serverOptions.sslKey) { + configuration.server ??= {}; // server configuration is defined above - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - configuration.server!.https = { + configuration.server.https = { cert: await readFile(serverOptions.sslCert), key: await readFile(serverOptions.sslKey), }; } else { const { default: basicSslPlugin } = await import('@vitejs/plugin-basic-ssl'); - // eslint-disable-next-line @typescript-eslint/no-floating-promises configuration.plugins ??= []; configuration.plugins.push(basicSslPlugin()); } From 48cae815cfd0124217c1b5bc8c92dfdb0b150101 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 10:26:48 +0000 Subject: [PATCH 0226/2162] fix(@angular/build): skip vite SSR warmup file configuration when SSR is disabled This change addresses recent updates in Vite that trigger pre-transform errors when SSR files (`/server.mjs`, `/main.server.mjs`) are missing. Skipping the configuration prevents unnecessary errors during the build process. --- .../build/src/builders/dev-server/vite-server.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 c8f97eba7504..e3c97805bd9a 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -670,6 +670,17 @@ export async function setupServer( join(serverOptions.workspaceRoot, `.angular/vite-root`, serverOptions.buildTarget.project), ); + // Files used for SSR warmup. + let ssrFiles: string[] | undefined; + switch (ssrMode) { + case ServerSsrMode.InternalSsrMiddleware: + ssrFiles = ['./main.server.mjs']; + break; + case ServerSsrMode.ExternalSsrMiddleware: + ssrFiles = ['./main.server.mjs', './server.mjs']; + break; + } + const cacheDir = join(serverOptions.cacheOptions.path, serverOptions.buildTarget.project, 'vite'); const configuration: InlineConfig = { configFile: false, @@ -701,7 +712,7 @@ export async function setupServer( }, server: { warmup: { - ssrFiles: ['./main.server.mjs', './server.mjs'], + ssrFiles, }, port: serverOptions.port, strictPort: true, From 8639a3b6d981ddef84c0f4d70b6a941fc866b82b Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 12:01:53 +0000 Subject: [PATCH 0227/2162] fix(@angular/build): pass `define` option defined in application builder to Vite prebundling This update ensures that the `define` option is correctly passed to Vite during the prebundling phase of the application builder, improving compatibility and optimization of the build process. Closes #29278 --- packages/angular/build/src/builders/dev-server/vite-server.ts | 4 ++++ packages/angular/build/src/tools/vite/utils.ts | 3 +++ 2 files changed, 7 insertions(+) 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 e3c97805bd9a..8521b9af6674 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -422,6 +422,7 @@ export async function* serveWithVite( componentStyles, templateUpdates, browserOptions.loader as EsbuildLoaderOption | undefined, + browserOptions.define, extensions?.middleware, transformers?.indexHtml, thirdPartySourcemaps, @@ -653,6 +654,7 @@ export async function setupServer( componentStyles: Map, templateUpdates: Map, prebundleLoaderExtensions: EsbuildLoaderOption | undefined, + define: ApplicationBuilderInternalOptions['define'], extensionMiddleware?: Connect.NextHandleFunction[], indexHtmlTransformer?: (content: string) => Promise, thirdPartySourcemaps = false, @@ -765,6 +767,7 @@ export async function setupServer( target, loader: prebundleLoaderExtensions, thirdPartySourcemaps, + define, }), }, plugins: [ @@ -802,6 +805,7 @@ export async function setupServer( zoneless, loader: prebundleLoaderExtensions, thirdPartySourcemaps, + define, }), }; diff --git a/packages/angular/build/src/tools/vite/utils.ts b/packages/angular/build/src/tools/vite/utils.ts index 83085d910f60..fc0d82c2ce62 100644 --- a/packages/angular/build/src/tools/vite/utils.ts +++ b/packages/angular/build/src/tools/vite/utils.ts @@ -57,6 +57,7 @@ export function getDepOptimizationConfig({ ssr, loader, thirdPartySourcemaps, + define = {}, }: { disabled: boolean; exclude: string[]; @@ -67,6 +68,7 @@ export function getDepOptimizationConfig({ zoneless: boolean; loader?: EsbuildLoaderOption; thirdPartySourcemaps: boolean; + define: Record | undefined; }): DepOptimizationConfig { const plugins: ViteEsBuildPlugin[] = [ { @@ -99,6 +101,7 @@ export function getDepOptimizationConfig({ plugins, loader, define: { + ...define, 'ngServerMode': `${ssr}`, }, resolveExtensions: ['.mjs', '.js', '.cjs'], From 6edb90883733040d77647cf24dea7f53b1b6ceaa Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 14:41:00 +0000 Subject: [PATCH 0228/2162] fix(@angular/ssr): throw error when using route matchers Route matchers are not currently supported in Angular SSR. This commit ensures an error is issued when a route matcher is detected. --- packages/angular/ssr/src/routes/ng-routes.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 8e23b603ca31..137a14604b18 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -144,9 +144,25 @@ async function* traverseRoutesConfig(options: { for (const route of routes) { try { - const { path = '', redirectTo, loadChildren, loadComponent, children, ɵentryName } = route; + const { + path = '', + matcher, + redirectTo, + loadChildren, + loadComponent, + children, + ɵentryName, + } = route; const currentRoutePath = joinUrlParts(parentRoute, path); + if (matcher) { + yield { + error: `The route '${stripLeadingSlash(currentRoutePath)}' uses a route matcher which is not supported.`, + }; + + continue; + } + // Get route metadata from the server config route tree, if available let matchedMetaData: ServerConfigRouteTreeNodeMetadata | undefined; if (serverConfigRouteTree) { From e76800ce54abf388fd8762fc7a298729fb58650f Mon Sep 17 00:00:00 2001 From: Santosh Yadav Date: Wed, 8 Jan 2025 10:48:00 +0100 Subject: [PATCH 0229/2162] fix(@angular/build): fix incorrect budget calculation This PR makes change to kB value which was incorrect earlier Fixes angular#29040 --- .../build/src/utils/bundle-calculator.ts | 8 +- .../build/src/utils/bundle-calculator_spec.ts | 81 ++++++++++++++----- 2 files changed, 64 insertions(+), 25 deletions(-) diff --git a/packages/angular/build/src/utils/bundle-calculator.ts b/packages/angular/build/src/utils/bundle-calculator.ts index 839355e5c06f..46558484e39a 100644 --- a/packages/angular/build/src/utils/bundle-calculator.ts +++ b/packages/angular/build/src/utils/bundle-calculator.ts @@ -12,6 +12,8 @@ import { formatSize } from './format-bytes'; // Re-export to avoid direct schema importing throughout code export { type BudgetEntry, BudgetType }; +export const BYTES_IN_KILOBYTE = 1000; + interface Size { size: number; label?: string; @@ -306,13 +308,13 @@ function calculateBytes(input: string, baseline?: string, factor: 1 | -1 = 1): n value = (baselineBytes * value) / 100; break; case 'kb': - value *= 1024; + value *= BYTES_IN_KILOBYTE; break; case 'mb': - value *= 1024 * 1024; + value *= BYTES_IN_KILOBYTE * BYTES_IN_KILOBYTE; break; case 'gb': - value *= 1024 * 1024 * 1024; + value *= BYTES_IN_KILOBYTE * BYTES_IN_KILOBYTE * BYTES_IN_KILOBYTE; break; } diff --git a/packages/angular/build/src/utils/bundle-calculator_spec.ts b/packages/angular/build/src/utils/bundle-calculator_spec.ts index 899249cd4acd..9bb44394496b 100644 --- a/packages/angular/build/src/utils/bundle-calculator_spec.ts +++ b/packages/angular/build/src/utils/bundle-calculator_spec.ts @@ -6,9 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import { BudgetEntry, BudgetType, ThresholdSeverity, checkBudgets } from './bundle-calculator'; - -const kB = 1000; +import { + BYTES_IN_KILOBYTE, + BudgetEntry, + BudgetType, + ThresholdSeverity, + checkBudgets, +} from './bundle-calculator'; describe('bundle-calculator', () => { describe('checkBudgets()', () => { @@ -24,11 +28,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 1.5 * kB, + size: 1.5 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.5 * kB, + size: 0.5 * BYTES_IN_KILOBYTE, }, ], }; @@ -55,11 +59,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 1.5 * kB, + size: 1.5 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.5 * kB, + size: 0.5 * BYTES_IN_KILOBYTE, }, ], }; @@ -93,11 +97,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, ], }; @@ -131,11 +135,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 0.5 * kB, + size: 0.5 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, ], }; @@ -169,15 +173,15 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, { name: 'baz.css', - size: 1.5 * kB, + size: 1.5 * BYTES_IN_KILOBYTE, }, ], }; @@ -211,11 +215,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, { name: 'bar.css', - size: 0.75 * kB, + size: 0.75 * BYTES_IN_KILOBYTE, }, ], }; @@ -249,11 +253,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.css', - size: 1.5 * kB, + size: 1.5 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.5 * kB, + size: 0.5 * BYTES_IN_KILOBYTE, }, ], }; @@ -282,11 +286,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.js', - size: 1.5 * kB, + size: 1.5 * BYTES_IN_KILOBYTE, }, { name: 'bar.js', - size: 0.5 * kB, + size: 0.5 * BYTES_IN_KILOBYTE, }, ], }; @@ -320,11 +324,11 @@ describe('bundle-calculator', () => { assets: [ { name: 'foo.ext', - size: 1.5 * kB, + size: 1.5 * BYTES_IN_KILOBYTE, }, { name: 'bar.ext', - size: 0.5 * kB, + size: 0.5 * BYTES_IN_KILOBYTE, }, ], }; @@ -338,5 +342,38 @@ describe('bundle-calculator', () => { message: jasmine.stringMatching('foo.ext exceeded maximum budget.'), }); }); + + it('does not exceed the individual file budget limit', () => { + const budgets: BudgetEntry[] = [ + { + type: BudgetType.Bundle, + maximumError: '1000kb', + }, + ]; + const stats = { + chunks: [ + { + id: 0, + initial: true, + names: ['main'], + files: ['main.ext', 'bar.ext'], + }, + ], + assets: [ + { + name: 'main.ext', + size: 1 * BYTES_IN_KILOBYTE, + }, + { + name: 'bar.ext', + size: 0.5 * BYTES_IN_KILOBYTE, + }, + ], + }; + + const failures = Array.from(checkBudgets(budgets, stats)); + + expect(failures).toHaveSize(0); + }); }); }); From 8c94d22469d005a943a82733f92384e53206d904 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 7 Jan 2025 13:01:54 +0000 Subject: [PATCH 0230/2162] build: migrate `@angular/ssr` to `ts_project` Migrates `@angular/ssr` to `ts_project`. Possible after various upstream fixes for `ng_package` and interop changes. --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +-- BUILD.bazel | 9 ++++ WORKSPACE | 6 +-- package.json | 2 +- packages/angular/ssr/BUILD.bazel | 30 +++++++----- packages/angular/ssr/node/BUILD.bazel | 18 ++++--- packages/angular/ssr/node/test/BUILD.bazel | 20 ++++++-- packages/angular/ssr/schematics/BUILD.bazel | 19 ++++---- packages/angular/ssr/test/BUILD.bazel | 47 +++++-------------- .../angular/ssr/test/npm_package/BUILD.bazel | 6 +-- .../ssr/third_party/beasties/BUILD.bazel | 15 ++++-- ...tch => @angular+bazel+19.1.0-next.4.patch} | 2 +- pnpm-lock.yaml | 15 +++--- tools/interop.bzl | 16 +++++-- tsconfig-build-ng.json | 2 +- yarn.lock | 10 ++-- 16 files changed, 126 insertions(+), 97 deletions(-) rename patches/{@angular+bazel+19.0.0-next.7.patch => @angular+bazel+19.1.0-next.4.patch} (87%) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index dc00e895d52a..051b30ee861e 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=857732709 -pnpm-lock.yaml=252219114 +package.json=-1906330915 +pnpm-lock.yaml=1589673671 pnpm-workspace.yaml=1711114604 -yarn.lock=-46638791 +yarn.lock=-1108538115 diff --git a/BUILD.bazel b/BUILD.bazel index b22de2e3b10b..9555ade0455e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -35,11 +35,20 @@ rules_js_tsconfig( ], ) +rules_js_tsconfig( + name = "build-tsconfig-angular", + src = "tsconfig-build-ng.json", + deps = [ + "tsconfig.json", + ], +) + rules_js_tsconfig( name = "test-tsconfig", src = "tsconfig-test.json", deps = [ "tsconfig.json", + "//:root_modules/@types/jasmine", "//:root_modules/@types/node", ], ) diff --git a/WORKSPACE b/WORKSPACE index 5b44f8a27c6c..3fb75fb4f3d0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -136,7 +136,7 @@ yarn_install( data = [ "//:.yarn/releases/yarn-4.5.0.cjs", "//:.yarnrc.yml", - "//:patches/@angular+bazel+19.0.0-next.7.patch", + "//:patches/@angular+bazel+19.1.0-next.4.patch", "//:patches/@bazel+concatjs+5.8.1.patch", "//:patches/@bazel+jasmine+5.8.1.patch", ], @@ -222,6 +222,6 @@ rules_ts_dependencies( http_file( name = "tsc_worker", - sha256 = "", - urls = ["https://raw.githubusercontent.com/devversion/rules_angular/a270a74d1e64577bddba96a5484c7c5d2c5d2770/dist/worker.mjs"], + sha256 = "5a5c46846ecda83e05b9da26f1672ad51c59bce08fed88419850d0e29c993b30", + urls = ["https://raw.githubusercontent.com/devversion/rules_angular/4b7532ba2b29078d005899cd15b415593d03cceb/dist/worker.mjs"], ) diff --git a/package.json b/package.json index a2a4f4aba7d2..c13beaa04ccf 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-next.4", "@angular/bazel": "https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6", "@angular/cdk": "19.1.0-next.3", "@angular/common": "19.1.0-next.4", "@angular/compiler": "19.1.0-next.4", diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index 6c50d6896238..219efba32c96 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -1,12 +1,12 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@rules_pkg//:pkg.bzl", "pkg_tar") -load("//tools:defaults.bzl", "ng_package", "ts_library") +load("//tools:defaults.bzl", "ng_package") +load("//tools:interop.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "ssr", - package_name = "@angular/ssr", srcs = glob( include = [ "*.ts", @@ -16,15 +16,23 @@ ts_library( "**/*_spec.ts", ], ), + args = [ + "--lib", + "dom,es2020", + ], + data = [ + "//packages/angular/ssr/third_party/beasties:beasties_bundled", + ], module_name = "@angular/ssr", - tsconfig = "//:tsconfig-build-ng", + source_map = True, + tsconfig = "//:build-tsconfig-angular", deps = [ - "//packages/angular/ssr/third_party/beasties:bundled_beasties_lib", - "@npm//@angular/common", - "@npm//@angular/core", - "@npm//@angular/platform-server", - "@npm//@angular/router", - "@npm//tslib", + "//:root_modules/@angular/common", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-server", + "//:root_modules/@angular/router", + "//:root_modules/tslib", + "//packages/angular/ssr/third_party/beasties:beasties_dts", ], ) @@ -33,7 +41,7 @@ ng_package( package_name = "@angular/ssr", srcs = [ ":package.json", - "//packages/angular/ssr/third_party/beasties:bundled_beasties_lib", + "//packages/angular/ssr/third_party/beasties:beasties_bundled", ], externals = [ "@angular/ssr", diff --git a/packages/angular/ssr/node/BUILD.bazel b/packages/angular/ssr/node/BUILD.bazel index c3cbf2ae6cef..6623c0b78530 100644 --- a/packages/angular/ssr/node/BUILD.bazel +++ b/packages/angular/ssr/node/BUILD.bazel @@ -1,8 +1,8 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "node", srcs = glob( [ @@ -10,11 +10,17 @@ ts_library( "src/**/*.ts", ], ), + args = [ + "--types", + "node", + ], module_name = "@angular/ssr/node", + source_map = True, + tsconfig = "//:build-tsconfig-angular", deps = [ - "//packages/angular/ssr", - "@npm//@angular/core", - "@npm//@angular/platform-server", - "@npm//@types/node", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-server", + "//:root_modules/@types/node", + "//packages/angular/ssr:ssr_rjs", ], ) diff --git a/packages/angular/ssr/node/test/BUILD.bazel b/packages/angular/ssr/node/test/BUILD.bazel index db5d52b6359b..2154a5f22127 100644 --- a/packages/angular/ssr/node/test/BUILD.bazel +++ b/packages/angular/ssr/node/test/BUILD.bazel @@ -1,18 +1,30 @@ +load("@npm//@angular/build-tooling/bazel/spec-bundling:index.bzl", "spec_bundle") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ts_library( +ts_project( name = "unit_test_lib", testonly = True, srcs = glob(["**/*_spec.ts"]), deps = [ - "//packages/angular/ssr/node", + "//packages/angular/ssr/node:node_rjs", + ], +) + +# TODO: Clean this up when this repo runs ESM consistently. +spec_bundle( + name = "esm_tests_bundled", + downlevel_async_await = False, + platform = "node", + run_angular_linker = False, + deps = [ + ":unit_test_lib", ], ) jasmine_node_test( name = "test", deps = [ - ":unit_test_lib", + ":esm_tests_bundled", ], ) diff --git a/packages/angular/ssr/schematics/BUILD.bazel b/packages/angular/ssr/schematics/BUILD.bazel index d4663546d000..4d65b563351f 100644 --- a/packages/angular/ssr/schematics/BUILD.bazel +++ b/packages/angular/ssr/schematics/BUILD.bazel @@ -4,7 +4,8 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm", "ts_library") +load("//tools:defaults.bzl", "pkg_npm") +load("//tools:interop.bzl", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -44,9 +45,8 @@ filegroup( ), ) -ts_library( +ts_project( name = "schematics", - package_name = "@angular/ssr/schematics", srcs = glob( include = ["**/*.ts"], exclude = [ @@ -59,13 +59,14 @@ ts_library( for (src, _) in ALL_SCHEMA_TARGETS ], data = [":schematics_assets"], + module_name = "@angular/ssr/schematics", deps = [ - "//packages/angular_devkit/schematics", - "//packages/schematics/angular", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/schematics/angular:angular_rjs", ], ) -ts_library( +ts_project( name = "ssr_schematics_test_lib", testonly = True, srcs = glob( @@ -77,12 +78,10 @@ ts_library( "node_modules/**", ], ), - # @external_begin deps = [ - ":schematics", - "//packages/angular_devkit/schematics/testing", + ":schematics_rjs", + "//packages/angular_devkit/schematics/testing:testing_rjs", ], - # @external_end ) jasmine_node_test( diff --git a/packages/angular/ssr/test/BUILD.bazel b/packages/angular/ssr/test/BUILD.bazel index 948e558c9bc7..0d232a66981b 100644 --- a/packages/angular/ssr/test/BUILD.bazel +++ b/packages/angular/ssr/test/BUILD.bazel @@ -1,56 +1,35 @@ load("@npm//@angular/build-tooling/bazel/spec-bundling:index.bzl", "spec_bundle") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ESM_TESTS = [ - "app_spec.ts", - "app-engine_spec.ts", - "routes/router_spec.ts", - "routes/route-tree_spec.ts", - "routes/ng-routes_spec.ts", -] - -ts_library( +ts_project( name = "unit_test_lib", testonly = True, srcs = glob( - include = ["**/*_spec.ts"], - exclude = ESM_TESTS + ["npm_package/**"], + include = ["**/*.ts"], ), deps = [ - "//packages/angular/ssr", - ], -) - -ts_library( - name = "unit_test_with_esm_deps_lib", - testonly = True, - srcs = ESM_TESTS + ["testing-utils.ts"], - deps = [ - "//packages/angular/ssr", - "@npm//@angular/common", - "@npm//@angular/compiler", - "@npm//@angular/core", - "@npm//@angular/platform-browser", - "@npm//@angular/platform-server", - "@npm//@angular/router", + "//:root_modules/@angular/common", + "//:root_modules/@angular/compiler", + "//:root_modules/@angular/core", + "//:root_modules/@angular/platform-browser", + "//:root_modules/@angular/platform-server", + "//:root_modules/@angular/router", + "//packages/angular/ssr:ssr_rjs", ], ) spec_bundle( - name = "unit_test_with_esm_deps_lib_bundled", + name = "esm_tests_bundled", downlevel_async_await = False, platform = "node", run_angular_linker = False, deps = [ - ":unit_test_with_esm_deps_lib", + ":unit_test_lib", ], ) jasmine_node_test( name = "test", - deps = [ - ":unit_test_lib", - ":unit_test_with_esm_deps_lib_bundled", - ], + deps = [":esm_tests_bundled"], ) diff --git a/packages/angular/ssr/test/npm_package/BUILD.bazel b/packages/angular/ssr/test/npm_package/BUILD.bazel index ec38d50697f9..a30cc33e155a 100644 --- a/packages/angular/ssr/test/npm_package/BUILD.bazel +++ b/packages/angular/ssr/test/npm_package/BUILD.bazel @@ -1,14 +1,14 @@ load("@bazel_skylib//rules:diff_test.bzl", "diff_test") load("@bazel_skylib//rules:write_file.bzl", "write_file") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "ts_library") +load("//tools:interop.bzl", "ts_project") -ts_library( +ts_project( name = "unit_test_lib", testonly = True, srcs = glob(["**/*.ts"]), deps = [ - "@npm//@bazel/runfiles", + "//:root_modules/@bazel/runfiles", ], ) diff --git a/packages/angular/ssr/third_party/beasties/BUILD.bazel b/packages/angular/ssr/third_party/beasties/BUILD.bazel index c202f9fda845..cebfaffa1639 100644 --- a/packages/angular/ssr/third_party/beasties/BUILD.bazel +++ b/packages/angular/ssr/third_party/beasties/BUILD.bazel @@ -1,16 +1,25 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") load("@npm//@bazel/rollup:index.bzl", "rollup_bundle") -load("//tools:defaults.bzl", "js_library") package(default_visibility = ["//visibility:public"]) js_library( - name = "bundled_beasties_lib", + name = "beasties_dts", srcs = [ "index.d.ts", + ], + deps = [ + "//:root_modules/beasties", + ], +) + +js_library( + name = "beasties_bundled", + srcs = [ ":bundled_beasties_files", ], deps = [ - "@npm//beasties", + "//:root_modules/beasties", ], ) diff --git a/patches/@angular+bazel+19.0.0-next.7.patch b/patches/@angular+bazel+19.1.0-next.4.patch similarity index 87% rename from patches/@angular+bazel+19.0.0-next.7.patch rename to patches/@angular+bazel+19.1.0-next.4.patch index 09c60fbf87b7..1f08cfc5b83a 100644 --- a/patches/@angular+bazel+19.0.0-next.7.patch +++ b/patches/@angular+bazel+19.1.0-next.4.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@angular/bazel/src/ng_package/packager.mjs b/node_modules/@angular/bazel/src/ng_package/packager.mjs -index 5c1f3a2c72e28a90b666c96b2fe9755cdafd5259..47034ceeb0b9ab9c1e9bee50239723a51d2e2e19 100755 +index 7184fd910a6ecaa817d5078a1fb17f78aee9113b..ef3e508cfa8f309ca298a21c0546bba60fae095c 100755 --- a/node_modules/@angular/bazel/src/ng_package/packager.mjs +++ b/node_modules/@angular/bazel/src/ng_package/packager.mjs @@ -7,7 +7,7 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa1e3878e6ad..12331f55e5aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2 version: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#d0c8ad886b60c5abca85db6a8741cbf494169768 - version: github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6 + version: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.3 version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) @@ -2066,7 +2066,6 @@ packages: /@bazel/typescript@5.8.1(typescript@5.7.2): resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} - deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement hasBin: true peerDependencies: typescript: 5.7.2 @@ -12247,7 +12246,7 @@ packages: /puppeteer@18.2.1: resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} engines: {node: '>=14.1.0'} - deprecated: < 22.8.2 is no longer supported + deprecated: < 19.4.0 is no longer supported dependencies: https-proxy-agent: 5.0.1(supports-color@10.0.0) progress: 2.0.3 @@ -15239,11 +15238,11 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/d0c8ad886b60c5abca85db6a8741cbf494169768} - id: github.com/angular/dev-infra-private-build-tooling-builds/d0c8ad886b60c5abca85db6a8741cbf494169768 + github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/e025d180b28460375d9f2292dc86e7c6a459b5b6} + id: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6 name: '@angular/build-tooling' - version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 + version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) diff --git a/tools/interop.bzl b/tools/interop.bzl index c6d8c0a117af..36795984621b 100644 --- a/tools/interop.bzl +++ b/tools/interop.bzl @@ -1,6 +1,6 @@ load("@aspect_rules_js//js:providers.bzl", "JsInfo", "js_info") load("@aspect_rules_ts//ts:defs.bzl", _ts_project = "ts_project") -load("@rules_nodejs//nodejs:providers.bzl", "DeclarationInfo", "JSModuleInfo", "LinkablePackageInfo") +load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo", "JSEcmaScriptModuleInfo", "JSModuleInfo", "LinkablePackageInfo") def _ts_deps_interop_impl(ctx): types = [] @@ -42,7 +42,7 @@ def _ts_project_module_impl(ctx): runfiles = ctx.attr.dep[DefaultInfo].default_runfiles info = ctx.attr.dep[JsInfo] - # Filter runfiles to not `node_modules` from Aspect as this interop + # Filter runfiles to not include `node_modules` from Aspect as this interop # target is supposed to be used downstream by `rules_nodejs` consumers, # and mixing pnpm-style node modules with linker node modules is incompatible. filtered_runfiles = [] @@ -60,6 +60,10 @@ def _ts_project_module_impl(ctx): direct_sources = info.sources, sources = depset(transitive = [info.transitive_sources]), ), + JSEcmaScriptModuleInfo( + direct_sources = info.sources, + sources = depset(transitive = [info.transitive_sources]), + ), DeclarationInfo( declarations = _filter_types_depset(info.types), transitive_declarations = _filter_types_depset(info.transitive_types), @@ -89,10 +93,11 @@ ts_project_module = rule( # Note: The module aspect from consuming `ts_library` targets will # consume the module mappings automatically. "module_name": attr.string(), + "module_root": attr.string(), }, ) -def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly = False, **kwargs): +def ts_project(name, module_name = None, interop_deps = [], deps = [], tsconfig = None, testonly = False, **kwargs): # Pull in the `rules_nodejs` variants of dependencies we know are "hybrid". This # is necessary as we can't mix `npm/node_modules` from RNJS with the pnpm-style # symlink-dependent node modules. In addition, we need to extract `_rjs` interop @@ -105,6 +110,9 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly if d.endswith("_rjs"): rjs_modules_to_rnjs.append(d.replace("_rjs", "")) + if tsconfig == None: + tsconfig = "//:test-tsconfig" if testonly else "//:build-tsconfig" + ts_deps_interop( name = "%s_interop_deps" % name, deps = [] + interop_deps + rjs_modules_to_rnjs, @@ -114,8 +122,8 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], testonly _ts_project( name = "%s_rjs" % name, testonly = testonly, - tsconfig = "//:test-tsconfig" if testonly else "//:build-tsconfig", declaration = True, + tsconfig = tsconfig, # Use the worker from our own Angular rules, as the default worker # from `rules_ts` is incompatible with TS5+ and abandoned. We need # worker for efficient, fast DX and avoiding Windows no-sandbox issues. diff --git a/tsconfig-build-ng.json b/tsconfig-build-ng.json index 746d77208378..5a548be0a88f 100644 --- a/tsconfig-build-ng.json +++ b/tsconfig-build-ng.json @@ -8,7 +8,7 @@ "compilerOptions": { "module": "esnext", "target": "es2022", - "lib": ["es2020", "dom"], + "lib": ["es2020"], // don't auto-discover @types/node, it results in a /// Date: Wed, 8 Jan 2025 15:34:11 +0000 Subject: [PATCH 0231/2162] ci: prevent NpmPackageExtract from being placed remote cache Placing all of the node_modules files into remote cache is too much --- .bazelrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.bazelrc b/.bazelrc index 084f8fb56026..6944b4807a3d 100644 --- a/.bazelrc +++ b/.bazelrc @@ -171,8 +171,8 @@ build --enable_runfiles #################################################### # TODO(josephperrott): investigate if this can be removed eventually. -# Prevents the npm package extract from occuring on RBE which overwhelms our quota -build --modify_execution_info=NpmPackageExtract=+no-remote-exec +# Prevents the npm package extract from occuring or caching on RBE which overwhelms our quota +build --modify_execution_info=NpmPackageExtract=+no-remote #################################################### # User bazel configuration From bfe9ee36cc4666deca60add57e793242d671b735 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Jan 2025 15:54:41 +0000 Subject: [PATCH 0232/2162] fix(@angular/build): warn when `@angular/localize/init` is imported directly Importing `@angular/localize/init` directly can cause unpredictable behavior, as highlighted in multiple reports: - https://github.com/angular/angular/issues/59422 - https://github.com/angular/angular/issues/48545 - https://github.com/angular/angular/issues/59405 This update introduces a warning to alert developers of the potential risks associated with direct imports. --- .../angular-localize-init-warning-plugin.ts | 53 +++++++++++++++++++ .../tools/esbuild/application-code-bundle.ts | 4 ++ 2 files changed, 57 insertions(+) create mode 100644 packages/angular/build/src/tools/esbuild/angular-localize-init-warning-plugin.ts diff --git a/packages/angular/build/src/tools/esbuild/angular-localize-init-warning-plugin.ts b/packages/angular/build/src/tools/esbuild/angular-localize-init-warning-plugin.ts new file mode 100644 index 000000000000..341d40b00541 --- /dev/null +++ b/packages/angular/build/src/tools/esbuild/angular-localize-init-warning-plugin.ts @@ -0,0 +1,53 @@ +/** + * @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 { Plugin } from 'esbuild'; + +const NG_LOCALIZE_RESOLUTION = Symbol('NG_LOCALIZE_RESOLUTION'); + +/** + * This plugin addresses an issue where '@angular/localize/init' is directly imported, + * potentially resulting in undefined behavior. By detecting such imports, the plugin + * issues a warning and suggests including '@angular/localize/init' as a polyfill. + * + * @returns An esbuild plugin. + */ +export function createAngularLocalizeInitWarningPlugin(): Plugin { + return { + name: 'angular-localize-init-warning', + setup(build) { + build.onResolve({ filter: /^@angular\/localize\/init/ }, async (args) => { + if (args.pluginData?.[NG_LOCALIZE_RESOLUTION]) { + return null; + } + + const { importer, kind, resolveDir, namespace, pluginData = {} } = args; + pluginData[NG_LOCALIZE_RESOLUTION] = true; + + const result = await build.resolve(args.path, { + importer, + kind, + namespace, + pluginData, + resolveDir, + }); + + return { + ...result, + warnings: [ + ...result.warnings, + { + text: `Direct import of '@angular/localize/init' detected. This may lead to undefined behavior.`, + notes: [{ text: `Include '@angular/localize/init' as a polyfill instead.` }], + }, + ], + }; + }); + }, + }; +} 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 30f6b750a1a0..34d3d8aab915 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -20,6 +20,7 @@ import { import { createCompilerPlugin } from './angular/compiler-plugin'; import { ComponentStylesheetBundler } from './angular/component-stylesheets'; import { SourceFileCache } from './angular/source-file-cache'; +import { createAngularLocalizeInitWarningPlugin } from './angular-localize-init-warning-plugin'; import { BundlerOptionsFactory } from './bundler-context'; import { createCompilerPluginOptions } from './compiler-plugin-options'; import { createExternalPackagesPlugin } from './external-packages-plugin'; @@ -68,6 +69,7 @@ export function createBrowserCodeBundleOptions( createLoaderImportAttributePlugin(), createWasmPlugin({ allowAsync: zoneless, cache: loadCache }), createSourcemapIgnorelistPlugin(), + createAngularLocalizeInitWarningPlugin(), createCompilerPlugin( // JS/TS options pluginOptions, @@ -288,6 +290,7 @@ export function createServerMainCodeBundleOptions( plugins: [ createWasmPlugin({ allowAsync: zoneless, cache: loadResultCache }), createSourcemapIgnorelistPlugin(), + createAngularLocalizeInitWarningPlugin(), createCompilerPlugin( // JS/TS options { ...pluginOptions, noopTypeScriptCompilation: true }, @@ -427,6 +430,7 @@ export function createSsrEntryCodeBundleOptions( supported: getFeatureSupport(target, true), plugins: [ createSourcemapIgnorelistPlugin(), + createAngularLocalizeInitWarningPlugin(), createCompilerPlugin( // JS/TS options { ...pluginOptions, noopTypeScriptCompilation: true }, From 2c9d7368fc30f3488152e35ac468db5f2a9432f2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Jan 2025 11:30:50 -0500 Subject: [PATCH 0233/2162] feat(@angular/build): add ng-packagr builder to the package To support migration to the `@angular/build` package which contains the `application` builder that is used by all new projects, the `ng-packagr` builder used to build Angular libraries is also now available within this package. This removes the need for projects that are using the application builder but also would like to build a library from having to install the Webpack related `@angular-devkit/build-angular` package. This can result in a significant reduction in overall Node.js packages installed within the project. --- goldens/public-api/angular/build/index.api.md | 11 +++ packages/angular/build/BUILD.bazel | 8 ++ packages/angular/build/builders.json | 5 ++ packages/angular/build/package.json | 4 + .../build/src/builders/ng-packagr/builder.ts | 86 +++++++++++++++++++ .../build/src/builders/ng-packagr/index.ts | 14 +++ .../build/src/builders/ng-packagr/schema.json | 27 ++++++ packages/angular/build/src/index.ts | 5 ++ packages/angular/cli/BUILD.bazel | 1 + .../cli/lib/config/workspace-schema.json | 23 +++++ 10 files changed, 184 insertions(+) create mode 100644 packages/angular/build/src/builders/ng-packagr/builder.ts create mode 100644 packages/angular/build/src/builders/ng-packagr/index.ts create mode 100644 packages/angular/build/src/builders/ng-packagr/schema.json diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index d09f6bf40a6a..9e35cbe6b158 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -149,6 +149,9 @@ export function executeDevServerBuilder(options: DevServerBuilderOptions, contex // @public export function executeExtractI18nBuilder(options: ExtractI18nBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): Promise; +// @public +export function executeNgPackagrBuilder(options: NgPackagrBuilderOptions, context: BuilderContext): AsyncIterableIterator; + // @public export interface ExtractI18nBuilderOptions { buildTarget?: string; @@ -158,6 +161,14 @@ export interface ExtractI18nBuilderOptions { progress?: boolean; } +// @public +export interface NgPackagrBuilderOptions { + poll?: number; + project: string; + tsConfig?: string; + watch?: boolean; +} + // (No @packageDocumentation comment for this package) ``` diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 91868fb61cfd..ba11626610e7 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -23,6 +23,11 @@ ts_json_schema( src = "src/builders/extract-i18n/schema.json", ) +ts_json_schema( + name = "ng_packagr_schema", + src = "src/builders/ng-packagr/schema.json", +) + ts_project( name = "build", srcs = glob( @@ -40,6 +45,7 @@ ts_project( "//packages/angular/build:src/builders/application/schema.ts", "//packages/angular/build:src/builders/dev-server/schema.ts", "//packages/angular/build:src/builders/extract-i18n/schema.ts", + "//packages/angular/build:src/builders/ng-packagr/schema.ts", ], data = glob( include = [ @@ -90,6 +96,7 @@ ts_project( "//:root_modules/lmdb", "//:root_modules/magic-string", "//:root_modules/mrmime", + "//:root_modules/ng-packagr", "//:root_modules/parse5-html-rewriting-stream", "//:root_modules/picomatch", "//:root_modules/piscina", @@ -186,6 +193,7 @@ ts_project( "//:root_modules/@angular/platform-browser", "//:root_modules/@angular/platform-browser-dynamic", "//:root_modules/@angular/router", + "//:root_modules/ng-packagr", "//:root_modules/rxjs", "//:root_modules/tslib", "//:root_modules/typescript", diff --git a/packages/angular/build/builders.json b/packages/angular/build/builders.json index b0174fc3fee9..ef98f535c16c 100644 --- a/packages/angular/build/builders.json +++ b/packages/angular/build/builders.json @@ -14,6 +14,11 @@ "implementation": "./src/builders/extract-i18n/index", "schema": "./src/builders/extract-i18n/schema.json", "description": "Extract i18n messages from an application." + }, + "ng-packagr": { + "implementation": "./src/builders/ng-packagr/index", + "schema": "./src/builders/ng-packagr/schema.json", + "description": "Build a library with ng-packagr." } } } diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 8b0b6a950849..9f0b998a476f 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -55,6 +55,7 @@ "@angular/service-worker": "^19.0.0 || ^19.1.0-next.0", "@angular/ssr": "^0.0.0-PLACEHOLDER", "less": "^4.2.0", + "ng-packagr": "^19.0.0 || ^19.1.0-next.0", "postcss": "^8.4.0", "tailwindcss": "^2.0.0 || ^3.0.0", "typescript": ">=5.5 <5.8" @@ -75,6 +76,9 @@ "less": { "optional": true }, + "ng-packagr": { + "optional": true + }, "postcss": { "optional": true }, diff --git a/packages/angular/build/src/builders/ng-packagr/builder.ts b/packages/angular/build/src/builders/ng-packagr/builder.ts new file mode 100644 index 000000000000..f2dc60ebf30c --- /dev/null +++ b/packages/angular/build/src/builders/ng-packagr/builder.ts @@ -0,0 +1,86 @@ +/** + * @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 { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; +import type { NgPackagrOptions } from 'ng-packagr'; +import { join, resolve } from 'node:path'; +import { assertIsError } from '../../utils/error'; +import { normalizeCacheOptions } from '../../utils/normalize-cache'; +import { purgeStaleBuildCache } from '../../utils/purge-cache'; +import type { Schema as NgPackagrBuilderOptions } from './schema'; + +/** + * A Builder that executes the `ng-packagr` tool to build an Angular library. + * + * @param options The builder options as defined by the JSON schema. + * @param context A BuilderContext instance. + * @returns A BuilderOutput object. + * + * @experimental Direct usage of this function is considered experimental. + */ +export async function* execute( + options: NgPackagrBuilderOptions, + context: BuilderContext, +): AsyncIterableIterator { + // Purge old build disk cache. + await purgeStaleBuildCache(context); + + const root = context.workspaceRoot; + let packager; + try { + packager = (await import('ng-packagr')).ngPackagr(); + } catch (error) { + assertIsError(error); + if (error.code === 'MODULE_NOT_FOUND') { + return { + success: false, + error: + 'The "ng-packagr" package was not found. To correct this error, ensure this package is installed in the project.', + }; + } + + 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 { enabled: cacheEnabled, path: cacheDirectory } = normalizeCacheOptions( + metadata, + context.workspaceRoot, + ); + + const ngPackagrOptions: NgPackagrOptions = { + cacheEnabled, + poll: options.poll, + cacheDirectory: join(cacheDirectory, 'ng-packagr'), + }; + + try { + if (options.watch) { + await packager.watch(ngPackagrOptions).toPromise(); + } else { + await packager.build(ngPackagrOptions); + } + + yield { success: true }; + } catch (error) { + assertIsError(error); + + yield { success: false, error: error.message }; + } +} diff --git a/packages/angular/build/src/builders/ng-packagr/index.ts b/packages/angular/build/src/builders/ng-packagr/index.ts new file mode 100644 index 000000000000..df32d691aa43 --- /dev/null +++ b/packages/angular/build/src/builders/ng-packagr/index.ts @@ -0,0 +1,14 @@ +/** + * @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 { createBuilder } from '@angular-devkit/architect'; +import { execute } from './builder'; +import type { Schema as NgPackagrBuilderOptions } from './schema'; + +export { type NgPackagrBuilderOptions, execute }; +export default createBuilder(execute); diff --git a/packages/angular/build/src/builders/ng-packagr/schema.json b/packages/angular/build/src/builders/ng-packagr/schema.json new file mode 100644 index 000000000000..da76255f092a --- /dev/null +++ b/packages/angular/build/src/builders/ng-packagr/schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "title": "ng-packagr Target", + "description": "ng-packagr target options for Build Architect. Use to build library projects.", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The file path for the ng-packagr configuration file, relative to the current workspace." + }, + "tsConfig": { + "type": "string", + "description": "The full path for the TypeScript configuration file, relative to the current workspace." + }, + "watch": { + "type": "boolean", + "description": "Run build when files change.", + "default": false + }, + "poll": { + "type": "number", + "description": "Enable and define the file watching poll time period in milliseconds." + } + }, + "additionalProperties": false, + "required": ["project"] +} diff --git a/packages/angular/build/src/index.ts b/packages/angular/build/src/index.ts index 64c5fc2f3b32..a27e1f5ae9d2 100644 --- a/packages/angular/build/src/index.ts +++ b/packages/angular/build/src/index.ts @@ -21,3 +21,8 @@ export { execute as executeExtractI18nBuilder, type ExtractI18nBuilderOptions, } from './builders/extract-i18n'; + +export { + execute as executeNgPackagrBuilder, + type NgPackagrBuilderOptions, +} from './builders/ng-packagr'; diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index 15cf4e64008c..abee3d62b711 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -78,6 +78,7 @@ CLI_SCHEMA_DATA = [ "//packages/angular/build:src/builders/application/schema.json", "//packages/angular/build:src/builders/dev-server/schema.json", "//packages/angular/build:src/builders/extract-i18n/schema.json", + "//packages/angular/build:src/builders/ng-packagr/schema.json", "//packages/angular_devkit/build_angular:src/builders/app-shell/schema.json", "//packages/angular_devkit/build_angular:src/builders/browser/schema.json", "//packages/angular_devkit/build_angular:src/builders/browser-esbuild/schema.json", diff --git a/packages/angular/cli/lib/config/workspace-schema.json b/packages/angular/cli/lib/config/workspace-schema.json index 402ad662cf09..edffabf285ef 100644 --- a/packages/angular/cli/lib/config/workspace-schema.json +++ b/packages/angular/cli/lib/config/workspace-schema.json @@ -407,6 +407,7 @@ "@angular/build:application", "@angular/build:dev-server", "@angular/build:extract-i18n", + "@angular/build:ng-packagr", "@angular-devkit/build-angular:application", "@angular-devkit/build-angular:app-shell", "@angular-devkit/build-angular:browser", @@ -792,6 +793,28 @@ } } } + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "builder": { + "const": "@angular/build:ng-packagr" + }, + "defaultConfiguration": { + "type": "string", + "description": "A default named configuration to use when a target configuration is not provided." + }, + "options": { + "$ref": "../../../../angular/build/src/builders/ng-packagr/schema.json" + }, + "configurations": { + "type": "object", + "additionalProperties": { + "$ref": "../../../../angular/build/src/builders/ng-packagr/schema.json" + } + } + } } ] } From 02825eec53456384ba5b9c19f25dde3cfc95d796 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Jan 2025 12:06:24 -0500 Subject: [PATCH 0234/2162] feat(@schematics/angular): use `@angular/build` package in library generation schematic The newly introduced `ng-packagr` builder within the `@angular/build` package is now used when generating a new library with `ng generate library`. This builder provides the same functionality as the `ng-packagr` builder found within the `@angular-devkit/build-angular` package but removes the need for projects to install `@angular-devkit/build-angular` if using the `application` builder from `@angular/build`. --- packages/schematics/angular/library/index.ts | 6 +++--- packages/schematics/angular/library/index_spec.ts | 4 +--- packages/schematics/angular/utility/latest-versions.ts | 2 ++ packages/schematics/angular/utility/workspace-models.ts | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index ab471db6367a..715a84361bf9 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -53,8 +53,8 @@ function addDependenciesToPackageJson() { }, { type: NodeDependencyType.Dev, - name: '@angular-devkit/build-angular', - version: latestVersions.DevkitBuildAngular, + name: '@angular/build', + version: latestVersions.AngularBuild, }, { type: NodeDependencyType.Dev, @@ -91,7 +91,7 @@ function addLibToWorkspaceFile( prefix: options.prefix, targets: { build: { - builder: Builders.NgPackagr, + builder: Builders.BuildNgPackagr, defaultConfiguration: 'production', options: { project: `${projectRoot}/ng-package.json`, diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index d08b44d605d5..800839ef2b90 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -388,9 +388,7 @@ describe('Library Schematic', () => { const tree = await schematicRunner.runSchematic('library', defaultOptions, workspaceTree); const workspace = JSON.parse(tree.readContent('/angular.json')); - expect(workspace.projects.foo.architect.build.builder).toBe( - '@angular-devkit/build-angular:ng-packagr', - ); + expect(workspace.projects.foo.architect.build.builder).toBe('@angular/build:ng-packagr'); }); describe('standalone=false', () => { diff --git a/packages/schematics/angular/utility/latest-versions.ts b/packages/schematics/angular/utility/latest-versions.ts index a95ebc11e9c7..38a7cb2cbb13 100644 --- a/packages/schematics/angular/utility/latest-versions.ts +++ b/packages/schematics/angular/utility/latest-versions.ts @@ -13,6 +13,7 @@ const dependencies = require('./latest-versions/package.json')['dependencies']; export const latestVersions: Record & { Angular: string; DevkitBuildAngular: string; + AngularBuild: string; AngularSSR: string; } = { ...dependencies, @@ -21,5 +22,6 @@ export const latestVersions: Record & { Angular: dependencies['@angular/core'], DevkitBuildAngular: '^0.0.0-PLACEHOLDER', + AngularBuild: '^0.0.0-PLACEHOLDER', AngularSSR: '^0.0.0-PLACEHOLDER', }; diff --git a/packages/schematics/angular/utility/workspace-models.ts b/packages/schematics/angular/utility/workspace-models.ts index 41c41345f736..fd7eaf4d60f4 100644 --- a/packages/schematics/angular/utility/workspace-models.ts +++ b/packages/schematics/angular/utility/workspace-models.ts @@ -28,6 +28,7 @@ export enum Builders { Karma = '@angular-devkit/build-angular:karma', TsLint = '@angular-devkit/build-angular:tslint', NgPackagr = '@angular-devkit/build-angular:ng-packagr', + BuildNgPackagr = '@angular/build:ng-packagr', DevServer = '@angular-devkit/build-angular:dev-server', ExtractI18n = '@angular-devkit/build-angular:extract-i18n', Protractor = '@angular-devkit/build-angular:private-protractor', From 88431b7564d6757898744597a67fcdc178413128 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Jan 2025 12:16:16 -0500 Subject: [PATCH 0235/2162] fix(@schematics/angular): application migration should migrate ng-packagr builder package The `use-application-builder` update migration will now attempt to migrate the `ng-packagr` builder to use the `@angular/build` package if no other `@angular-devkit/build-angular` usage is present. --- .../angular/migrations/use-application-builder/migration.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/schematics/angular/migrations/use-application-builder/migration.ts b/packages/schematics/angular/migrations/use-application-builder/migration.ts index aed15549fbbe..40f2740e9463 100644 --- a/packages/schematics/angular/migrations/use-application-builder/migration.ts +++ b/packages/schematics/angular/migrations/use-application-builder/migration.ts @@ -215,6 +215,7 @@ function updateProjects(tree: Tree, context: SchematicContext) { case Builders.Application: case Builders.DevServer: case Builders.ExtractI18n: + case Builders.NgPackagr: // Ignore application, dev server, and i18n extraction for devkit usage check. // Both will be replaced if no other usage is found. continue; @@ -239,6 +240,9 @@ function updateProjects(tree: Tree, context: SchematicContext) { case Builders.ExtractI18n: target.builder = '@angular/build:extract-i18n'; break; + case Builders.NgPackagr: + target.builder = '@angular/build:ng-packagr'; + break; } } From 2c14d4616b3f15168383a6a21e7eefd865735f40 Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Wed, 8 Jan 2025 10:34:04 -0800 Subject: [PATCH 0236/2162] docs: release notes for the v19.0.7 release --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 438c291a44cd..dfb97aa7394c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ + + +# 19.0.7 (2025-01-08) + +### @angular-devkit/architect + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | +| [95c22aeff](https://github.com/angular/angular-cli/commit/95c22aeff4560a199416a20c3622301c5c690119) | fix | provide better error when builder is not defined | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | +| [028652992](https://github.com/angular/angular-cli/commit/028652992f0f9cc6fec5de35be7ecf74ec3947c5) | fix | preserve css type for jasmine.css | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [f7522342a](https://github.com/angular/angular-cli/commit/f7522342a8dd99543422629db6dcf1228c5d7279) | fix | add asset tracking to application builder watch files | +| [e973643bf](https://github.com/angular/angular-cli/commit/e973643bfbe47447ca522ca59b07a94fe6c03e0b) | fix | do not mark Babel \_defineProperty helper function as pure | +| [881095eec](https://github.com/angular/angular-cli/commit/881095eec5cdc80fe79de8fdbe05ba985bf8210a) | fix | enable serving files with bundle-like names | +| [db10af0b3](https://github.com/angular/angular-cli/commit/db10af0b3a775619ac71acdd0258cc58e96e948c) | fix | fix incorrect budget calculation | +| [c822f8f15](https://github.com/angular/angular-cli/commit/c822f8f154b75a8b8e48e32953bee7ec2763fd13) | fix | handle relative URLs when constructing new URLs during server fetch | +| [b43c648b0](https://github.com/angular/angular-cli/commit/b43c648b02c181c1d98cd3293d89ad8b131a3f51) | fix | mitigate JS transformer worker execArgv errors | +| [1f2481a4f](https://github.com/angular/angular-cli/commit/1f2481a4f5155368aa571fc6679e3ef8af0ce56f) | fix | pass `define` option defined in application builder to Vite prebundling | +| [c94f568a4](https://github.com/angular/angular-cli/commit/c94f568a412384bb8e4b66928f41b60220c8b7f4) | fix | warn when `@angular/localize/init` is imported directly | + + + # 19.1.0-next.2 (2024-12-18) From 6fc31fd348bcb3477d037264987d322fa49b648c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Jan 2025 19:06:08 +0000 Subject: [PATCH 0237/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 +-- package.json | 30 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 297 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 233 +++++++------- 13 files changed, 367 insertions(+), 343 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 051b30ee861e..f281d209239c 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-1906330915 -pnpm-lock.yaml=1589673671 +package.json=-1326094533 +pnpm-lock.yaml=-117820973 pnpm-workspace.yaml=1711114604 -yarn.lock=-1108538115 +yarn.lock=1901884029 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index eba180452bbc..0b4c1c6f9df3 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@359350bbc10aab1bac85d0eec61a53377078ab82 + - uses: angular/dev-infra/github-actions/branch-manager@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 840c863717c6..517af28ca3ec 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -92,13 +92,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -114,13 +114,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -136,13 +136,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -154,13 +154,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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -188,11 +188,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - run: yarn 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 dd34d23a46cc..3f1170b5af9f 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@359350bbc10aab1bac85d0eec61a53377078ab82 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 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@359350bbc10aab1bac85d0eec61a53377078ab82 + - uses: angular/dev-infra/github-actions/post-approval-changes@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 9a9c289b6259..ee9b3a5a2363 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@359350bbc10aab1bac85d0eec61a53377078ab82 + - uses: angular/dev-infra/github-actions/feature-request@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c45957078372..72741933e1cf 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable # 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 7792b124659b..197f84a44179 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/linting/licenses@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Check tooling setup run: yarn 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - 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@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -133,13 +133,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -155,13 +155,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -178,12 +178,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@359350bbc10aab1bac85d0eec61a53377078ab82 + uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 c13beaa04ccf..4ae7970549b4 100644 --- a/package.json +++ b/package.json @@ -42,23 +42,23 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@ampproject/remapping": "2.3.0", - "@angular/animations": "19.1.0-next.4", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6", + "@angular/animations": "19.1.0-rc.0", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa", "@angular/cdk": "19.1.0-next.3", - "@angular/common": "19.1.0-next.4", - "@angular/compiler": "19.1.0-next.4", - "@angular/compiler-cli": "19.1.0-next.4", - "@angular/core": "19.1.0-next.4", - "@angular/forms": "19.1.0-next.4", - "@angular/localize": "19.1.0-next.4", + "@angular/common": "19.1.0-rc.0", + "@angular/compiler": "19.1.0-rc.0", + "@angular/compiler-cli": "19.1.0-rc.0", + "@angular/core": "19.1.0-rc.0", + "@angular/forms": "19.1.0-rc.0", + "@angular/localize": "19.1.0-rc.0", "@angular/material": "19.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492", - "@angular/platform-browser": "19.1.0-next.4", - "@angular/platform-browser-dynamic": "19.1.0-next.4", - "@angular/platform-server": "19.1.0-next.4", - "@angular/router": "19.1.0-next.4", - "@angular/service-worker": "19.1.0-next.4", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1", + "@angular/platform-browser": "19.1.0-rc.0", + "@angular/platform-browser-dynamic": "19.1.0-rc.0", + "@angular/platform-server": "19.1.0-rc.0", + "@angular/router": "19.1.0-rc.0", + "@angular/service-worker": "19.1.0-rc.0", "@babel/core": "7.26.0", "@babel/generator": "7.26.3", "@babel/helper-annotate-as-pure": "7.25.9", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 1f2247314655..158dfc453a38 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -27,12 +27,12 @@ } }, "devDependencies": { - "@angular/common": "19.1.0-next.4", - "@angular/compiler": "19.1.0-next.4", - "@angular/core": "19.1.0-next.4", - "@angular/platform-browser": "19.1.0-next.4", - "@angular/platform-server": "19.1.0-next.4", - "@angular/router": "19.1.0-next.4", + "@angular/common": "19.1.0-rc.0", + "@angular/compiler": "19.1.0-rc.0", + "@angular/core": "19.1.0-rc.0", + "@angular/platform-browser": "19.1.0-rc.0", + "@angular/platform-server": "19.1.0-rc.0", + "@angular/router": "19.1.0-rc.0", "@bazel/runfiles": "^5.8.1" }, "sideEffects": false, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index be6911c13ebb..5808c8fa35eb 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -27,8 +27,8 @@ }, "devDependencies": { "@angular-devkit/core": "0.0.0-PLACEHOLDER", - "@angular/compiler": "19.1.0-next.4", - "@angular/compiler-cli": "19.1.0-next.4", + "@angular/compiler": "19.1.0-rc.0", + "@angular/compiler-cli": "19.1.0-rc.0", "typescript": "5.7.2", "webpack": "5.97.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12331f55e5aa..d6eb69d7ca16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,56 +17,56 @@ importers: specifier: 2.3.0 version: 2.3.0 '@angular/animations': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/core@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2 - version: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) + specifier: https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55 + version: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6 - version: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa + version: github.com/angular/dev-infra-private-build-tooling-builds/67627d22c2fef6e3cb128f65723e19eb35e02eaa(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + version: 19.1.0-next.3(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) '@angular/common': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) '@angular/compiler': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/core@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@angular/compiler-cli': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) '@angular/core': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/forms': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) '@angular/localize': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0) '@angular/material': specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) + version: 19.1.0-next.3(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492 - version: github.com/angular/dev-infra-private-ng-dev-builds/34c97ca953ce02abc95287e350351802ba74b492 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1 + version: github.com/angular/dev-infra-private-ng-dev-builds/ff93dd98d8d10bfab0f94495fe631485a6a772e1 '@angular/platform-browser': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) '@angular/platform-browser-dynamic': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0) '@angular/platform-server': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0) '@angular/router': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) '@angular/service-worker': - specifier: 19.1.0-next.4 - version: 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) '@babel/core': specifier: 7.26.0 version: 7.26.0 @@ -366,7 +366,7 @@ importers: version: 2.0.0 ng-packagr: specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2) + version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.2) npm: specifier: ^11.0.0 version: 11.0.0 @@ -558,13 +558,13 @@ packages: source-map: 0.7.4 dev: true - /@angular/animations@19.1.0-next.4(@angular/core@19.1.0-next.4): - resolution: {integrity: sha512-UJQVQsMSloo+1IITfE3pqQL/Gmm7nt5XtKaz+cXUGeTPS5szDFrUjmFJSWVmcj595FmqaiFBL8fuxgWv+Qmvlg==} + /@angular/animations@19.1.0-rc.0(@angular/core@19.1.0-rc.0): + resolution: {integrity: sha512-CAbv8Zr7RLYUFh6afw/3k7OHXvpxJvXDl5YeXWw5gBC7j1zHWochCVcEZVqBnrumGllVhxctM7L6gCI0x+EG/g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.4 + '@angular/core': 19.1.0-rc.0 dependencies: - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -578,7 +578,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): resolution: {integrity: sha512-HDyPsyyqbMpUQXA3VBcfFcGu6sj0vxKL/DEKxnxIgbC9dZ/01yNDMTPIszpGg16fRPt10xEefx3hUFMMgYzWJQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -610,11 +610,11 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1901.0-next.2(chokidar@4.0.3) - '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) - '@angular/localize': 19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4) - '@angular/platform-server': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4) - '@angular/service-worker': 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) + '@angular/localize': 19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0) + '@angular/platform-server': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0) + '@angular/service-worker': 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-split-export-declaration': 7.24.7 @@ -657,42 +657,42 @@ packages: - yaml dev: true - /@angular/cdk@19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1): + /@angular/cdk@19.1.0-next.3(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1): resolution: {integrity: sha512-7JX7kzV3PmeXwoL7dd2xLjDvZ7w/U+vuP/IHxSv0p+ThBZraMibcSUK/OeFC2XDKMs7Z8/0YnH/OWaAkxj8gmA==} peerDependencies: '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 optionalDependencies: parse5: 7.2.1 dev: true - /@angular/common@19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1): - resolution: {integrity: sha512-D64sv7Kpz6lN3efSbajRQ9DSGdpHrylfRsuAfK8iipGAel/3UKdbAsPjf0yJa/7ITIhKPi0j922EhwA+Gfnjkw==} + /@angular/common@19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1): + resolution: {integrity: sha512-kDo8El2h4I90Cai2lI7hIV4vMMqEfPz/sM9FmogwzJZ2t5ao5PtutbaoInF3w1xyQj9cnVx2UH5Q0in04uwS4g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.4 + '@angular/core': 19.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/compiler-cli@19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2): - resolution: {integrity: sha512-qHe+zobrufBNdSk1qXYcHzxftaaVajjypPKL3n7ZafLHFmX5XpIbRpMM/Xbg+zOtPZwGx2lB9tpce3G+RdTktA==} + /@angular/compiler-cli@19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2): + resolution: {integrity: sha512-7D0jLS/qooH782rgE5SbWJUpSsqR9/qlbhYvcyLosr1YjH3dsaZV8j4h2r+qJ+qwjKLWxRr2XLtVzVxPyeyKIQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.4 + '@angular/compiler': 19.1.0-rc.0 typescript: 5.7.2 dependencies: - '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) + '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@babel/core': 7.26.0 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 @@ -706,16 +706,16 @@ packages: - supports-color dev: true - /@angular/compiler@19.1.0-next.4(@angular/core@19.1.0-next.4): - resolution: {integrity: sha512-MZLExdvYtz9T8Zc9xbbBnV8VHwpo6KxSEeMr93KSg/xM6ZlnazlgI+zpkYfz57GaW45wtUX4Uzi/qFR41M9j4g==} + /@angular/compiler@19.1.0-rc.0(@angular/core@19.1.0-rc.0): + resolution: {integrity: sha512-bQb8+l+7IntSLoEkrdA8xghgOMPth0Kuv5ywSw0uh/TmbF82K/g6IiRdRwqTordeSWy0G8RZlh3fKrSm8vRvNw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.0-next.4 + '@angular/core': 19.1.0-rc.0 peerDependenciesMeta: '@angular/core': optional: true dependencies: - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -731,8 +731,8 @@ packages: zone.js: 0.15.0 dev: true - /@angular/core@19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0): - resolution: {integrity: sha512-TxgjuK2VZPSWP3Wn8EzWZphyOXz8Mwq/OKSBkPKfUkgM8fxZAZ/kORFu+Db96Ov3SgCvDYy5mmDCoCgC8IKGbg==} + /@angular/core@19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0): + resolution: {integrity: sha512-t4zWPx+EyKi7qIjBo+dBhmkk8nZVB88YBj+et5oklG1CNL8//w7q/b8bmmirT+/JGHsB9E044skeMohhayCJ3A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 @@ -743,41 +743,41 @@ packages: zone.js: 0.15.0 dev: true - /@angular/forms@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1): - resolution: {integrity: sha512-91UwWPNg4hAl5AOzQsw4JmY+aY12TVjVzdWYcRc4rkj1UwNRaLQYsMF2fospg/Mn7pmqqHzbDCOFOCnUpDhz9w==} + /@angular/forms@19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1): + resolution: {integrity: sha512-XrBUbZiQBzsD6li0RO5i1xcPTFln1NTtOHKT1Qga35zmFg+jPgz1/asPghEQs7WMKrXVoZer2tKNiRRdhKv7/A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.4 - '@angular/core': 19.1.0-next.4 - '@angular/platform-browser': 19.1.0-next.4 + '@angular/common': 19.1.0-rc.0 + '@angular/core': 19.1.0-rc.0 + '@angular/platform-browser': 19.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/localize@19.1.0-next.4(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4): - resolution: {integrity: sha512-o984w7OU/QlWgT1APwe4cuZ4FbCPPLt7HLvGAMpMr29G/t/zrK95PCHueTe3r7vbXZTikY0P4hjNegOJmbc8sw==} + /@angular/localize@19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0): + resolution: {integrity: sha512-2CYgwuv9rzwWuPFrg6+q8oQMdtR/NrXmSkulA39JyggkmArZzqCOKBMYM5CEkPDJyvBdX1iPP8LJtqKNe5sJEQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.1.0-next.4 - '@angular/compiler-cli': 19.1.0-next.4 + '@angular/compiler': 19.1.0-rc.0 + '@angular/compiler-cli': 19.1.0-rc.0 dependencies: - '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) + '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 - fast-glob: 3.3.2 + fast-glob: 3.3.3 yargs: 17.7.2 transitivePeerDependencies: - supports-color dev: true - /@angular/material@19.1.0-next.3(@angular/animations@19.1.0-next.4)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/forms@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1): + /@angular/material@19.1.0-next.3(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1): resolution: {integrity: sha512-aq92B77YkgHSoew2aN2Fqeg9eu/DiL3c09JKul0PW7cQfMejYU1UmiiyhXS5MhxFdVofhsJdV5C8m4aMzjagVw==} peerDependencies: '@angular/animations': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 @@ -788,94 +788,94 @@ packages: '@angular/platform-browser': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/animations': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/cdk': 19.1.0-next.3(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/forms': 19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1) - '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + '@angular/animations': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/cdk': 19.1.0-next.3(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/forms': 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/platform-browser': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/platform-browser-dynamic@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4): - resolution: {integrity: sha512-UdXH4YuD8WaW3U2BbcqQOBPb7hVCz/8WGOHY89ivNvS9dZiygwf1UZS+9x1jo3C3qH/ZJEQlo1c2lyZk3EV9Uw==} + /@angular/platform-browser-dynamic@19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0): + resolution: {integrity: sha512-sUDbSeHS5uVWNT5cFcDFCZVOAIBa9ZaRUN504FJ2psPv0vBtMBDdA67rSz9xa8e/GRm/EOX+a7izEVKeU48M5Q==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.4 - '@angular/compiler': 19.1.0-next.4 - '@angular/core': 19.1.0-next.4 - '@angular/platform-browser': 19.1.0-next.4 + '@angular/common': 19.1.0-rc.0 + '@angular/compiler': 19.1.0-rc.0 + '@angular/core': 19.1.0-rc.0 + '@angular/platform-browser': 19.1.0-rc.0 dependencies: - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) tslib: 2.8.1 dev: true - /@angular/platform-browser@19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4): - resolution: {integrity: sha512-1fmNr8kQzDkvtI5wzjvsSlO1niTExyLl2J5yM/kp6F8Osx/55/Y1YhPBn2ZSz2Md3PHgL4qCyq5vnMGaGVUPqA==} + /@angular/platform-browser@19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0): + resolution: {integrity: sha512-IwAO/oNUYe3zWunIyJsdzV/Nq4Yu6KxognJGCEUKkxj++Yu2pwaUnheNm/+L++yx5bYPMVcIURgseRqpwJt55g==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.4 - '@angular/common': 19.1.0-next.4 - '@angular/core': 19.1.0-next.4 + '@angular/animations': 19.1.0-rc.0 + '@angular/common': 19.1.0-rc.0 + '@angular/core': 19.1.0-rc.0 peerDependenciesMeta: '@angular/animations': optional: true dependencies: - '@angular/animations': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/animations': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true - /@angular/platform-server@19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4): - resolution: {integrity: sha512-LwAXc7KChVki/lNOgoE1dpZa8f/3sJTKLvwPyKjsc88uMtwOhSd7gf6awcVb9j3OKvJIDXYhZmmJW4b9pdtvKw==} + /@angular/platform-server@19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0): + resolution: {integrity: sha512-kPdNLnBMxLc32Rq76qHdpMufZ7l6w7K2TOTlXGj5nWDymhLJhg19TvYHWH2PgbIY/11bAwejw9TI4756enIEAQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/animations': 19.1.0-next.4 - '@angular/common': 19.1.0-next.4 - '@angular/compiler': 19.1.0-next.4 - '@angular/core': 19.1.0-next.4 - '@angular/platform-browser': 19.1.0-next.4 - dependencies: - '@angular/animations': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/compiler': 19.1.0-next.4(@angular/core@19.1.0-next.4) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + '@angular/animations': 19.1.0-rc.0 + '@angular/common': 19.1.0-rc.0 + '@angular/compiler': 19.1.0-rc.0 + '@angular/core': 19.1.0-rc.0 + '@angular/platform-browser': 19.1.0-rc.0 + dependencies: + '@angular/animations': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) tslib: 2.8.1 xhr2: 0.2.1 dev: true - /@angular/router@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4)(@angular/platform-browser@19.1.0-next.4)(rxjs@7.8.1): - resolution: {integrity: sha512-uHfXoulijpavMvCBtcAWM2drUAWgA5Ji8m6EBZMQTEud8JuTQFwyVswlL2wdqb9QoabN2eC5P5LziVTryNJbrw==} + /@angular/router@19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1): + resolution: {integrity: sha512-GYrTk2Me7nVfSGMlAh/IcKX2Fxan+ZXSCIx9y/BHGhG4SxUtTitqnj0oXsJy6DXibn6G2FkJqByC7ceZOD0OoA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/common': 19.1.0-next.4 - '@angular/core': 19.1.0-next.4 - '@angular/platform-browser': 19.1.0-next.4 + '@angular/common': 19.1.0-rc.0 + '@angular/core': 19.1.0-rc.0 + '@angular/platform-browser': 19.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/platform-browser': 19.1.0-next.4(@angular/animations@19.1.0-next.4)(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/platform-browser': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) rxjs: 7.8.1 tslib: 2.8.1 dev: true - /@angular/service-worker@19.1.0-next.4(@angular/common@19.1.0-next.4)(@angular/core@19.1.0-next.4): - resolution: {integrity: sha512-lbjbK8JvtiXmtCzIEHo6f9BES15WYoSwuGE0GBCbH82MzVuMWEwso4tXXI28MfrhynAA51/6lx3QR71CZj3Z6Q==} + /@angular/service-worker@19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0): + resolution: {integrity: sha512-ApYISgyN8mOefdf/enWGRln9J9D+qsNwQ5v67mLT5LzYaw2q+KJBKFTLgRdPWPHSstttuLCrVmJmEzeyIyleZA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/common': 19.1.0-next.4 - '@angular/core': 19.1.0-next.4 + '@angular/common': 19.1.0-rc.0 + '@angular/core': 19.1.0-rc.0 dependencies: - '@angular/common': 19.1.0-next.4(@angular/core@19.1.0-next.4)(rxjs@7.8.1) - '@angular/core': 19.1.0-next.4(rxjs@7.8.1)(zone.js@0.15.0) + '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) tslib: 2.8.1 dev: true @@ -2066,6 +2066,7 @@ packages: /@bazel/typescript@5.8.1(typescript@5.7.2): resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} + deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement hasBin: true peerDependencies: typescript: 5.7.2 @@ -3080,8 +3081,8 @@ packages: - '@types/node' dev: true - /@microsoft/api-extractor@7.48.1(@types/node@18.19.70): - resolution: {integrity: sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==} + /@microsoft/api-extractor@7.49.0(@types/node@18.19.70): + resolution: {integrity: sha512-X5b462k0/yl8qWdGx3siq5vyI8fTDU9fRnwqTMlGHqFhLxpASmLWA2EU6nft+ZG8cQM2HRZlr4HSo62UqiAnug==} hasBin: true dependencies: '@microsoft/api-extractor-model': 7.30.1(@types/node@18.19.70) @@ -11003,7 +11004,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /ng-packagr@19.1.0-next.3(@angular/compiler-cli@19.1.0-next.4)(tslib@2.8.1)(typescript@5.7.2): + /ng-packagr@19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.2): resolution: {integrity: sha512-D/2axZFTpc0z/tH4Okgbc++0h6DnarNX0+aPWjDKAN3nPURpj6nrj997ee5GmBFeivcGu3gepVHoICAII7YOyg==} engines: {node: ^18.19.1 || >=20.11.1} hasBin: true @@ -11016,7 +11017,7 @@ packages: tailwindcss: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) '@rollup/plugin-json': 6.1.0(rollup@4.30.1) '@rollup/wasm-node': 4.30.0 ajv: 8.17.1 @@ -12246,7 +12247,7 @@ packages: /puppeteer@18.2.1: resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} engines: {node: '>=14.1.0'} - deprecated: < 19.4.0 is no longer supported + deprecated: < 22.8.2 is no longer supported dependencies: https-proxy-agent: 5.0.1(supports-color@10.0.0) progress: 2.0.3 @@ -15201,15 +15202,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2(@angular/compiler-cli@19.1.0-next.4)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/cfd7a06c2f972fcef59262995d232e2846b536a2} - id: github.com/angular/bazel-builds/cfd7a06c2f972fcef59262995d232e2846b536a2 + github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/169e71f64fa706648c60d77abb8d4cab1ca22f55} + id: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55 name: '@angular/bazel' - version: 19.1.0-next.4 + version: 19.2.0-next.0 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.1.0-next.4+sha-b22677d + '@angular/compiler-cli': 19.2.0-next.0+sha-e689aae '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -15222,10 +15223,10 @@ packages: terser: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-next.4(@angular/compiler@19.1.0-next.4)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) '@bazel/worker': 5.8.1 - '@microsoft/api-extractor': 7.48.1(@types/node@18.19.70) + '@microsoft/api-extractor': 7.49.0(@types/node@18.19.70) '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.1) '@rollup/plugin-node-resolve': 13.3.0(rollup@4.30.1) magic-string: 0.30.17 @@ -15238,14 +15239,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/e025d180b28460375d9f2292dc86e7c6a459b5b6} - id: github.com/angular/dev-infra-private-build-tooling-builds/e025d180b28460375d9f2292dc86e7c6a459b5b6 + github.com/angular/dev-infra-private-build-tooling-builds/67627d22c2fef6e3cb128f65723e19eb35e02eaa(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/67627d22c2fef6e3cb128f65723e19eb35e02eaa} + id: github.com/angular/dev-infra-private-build-tooling-builds/67627d22c2fef6e3cb128f65723e19eb35e02eaa name: '@angular/build-tooling' - version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 + version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-next.4)(@angular/compiler@19.1.0-next.4)(@angular/localize@19.1.0-next.4)(@angular/platform-server@19.1.0-next.4)(@angular/service-worker@19.1.0-next.4)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -15255,7 +15256,7 @@ packages: '@bazel/runfiles': 5.8.1 '@bazel/terser': 5.8.1(terser@5.37.0) '@bazel/typescript': 5.8.1(typescript@5.7.2) - '@microsoft/api-extractor': 7.48.1(@types/node@18.19.70) + '@microsoft/api-extractor': 7.49.0(@types/node@18.19.70) '@types/browser-sync': 2.29.0 '@types/minimatch': 5.1.2 '@types/node': 18.19.70 @@ -15310,10 +15311,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/34c97ca953ce02abc95287e350351802ba74b492: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/34c97ca953ce02abc95287e350351802ba74b492} + github.com/angular/dev-infra-private-ng-dev-builds/ff93dd98d8d10bfab0f94495fe631485a6a772e1: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ff93dd98d8d10bfab0f94495fe631485a6a772e1} name: '@angular/ng-dev' - version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 + version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 hasBin: true dependencies: '@google-cloud/spanner': 7.17.1(supports-color@10.0.0) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index f22969ebcf31..c2a0441891e0 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#02b9062c0c9c8f60e66685f323c1462aac381ed3", - "@angular/cdk": "github:angular/cdk-builds#cc02bb3d92c2e358d07725125bb0c9cc566901b8", - "@angular/common": "github:angular/common-builds#76efb05a4ce4259527cc4140e3e2017c076e4fc4", - "@angular/compiler": "github:angular/compiler-builds#ed3a836240c8c57f5e0b48f7738a43c6760ec807", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#8099a8844dd89456ac55d9f4ac738d30f57feb9b", - "@angular/core": "github:angular/core-builds#7876e9eba9785d724e6473130950aff9b971f7d6", - "@angular/forms": "github:angular/forms-builds#899090779931fad4ec241f28e778ab6bc16155e0", - "@angular/language-service": "github:angular/language-service-builds#3dae05c6f369063720e6abe8b049939dd3a8624a", - "@angular/localize": "github:angular/localize-builds#052a2f25ff45df90951c911854f03ca0836cc712", - "@angular/material": "github:angular/material-builds#9d6e61ab53b864aa084ad382e309445728d5adc2", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3bf09333c3c5ad5c80b2ae36ec9bc944b89d693e", - "@angular/platform-browser": "github:angular/platform-browser-builds#b48e676a6ea985d03f6747627e3daf00a20ce003", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e1c6e91ee26b0dc0e433a8e47945893b21799669", - "@angular/platform-server": "github:angular/platform-server-builds#737586fc6bcf478e75e58786cad3a4baa0584f16", - "@angular/router": "github:angular/router-builds#bd057fc80804b5d16059ca5a5a89a0193a957588", - "@angular/service-worker": "github:angular/service-worker-builds#140d9c8e2dd236e9493f570c986adc782423acd3" + "@angular/animations": "github:angular/animations-builds#4c103ca52a38ff728a0ab1c5f9578f70e83643d6", + "@angular/cdk": "github:angular/cdk-builds#5ba6ad089f2b28e71013d357acc41bf91421dd43", + "@angular/common": "github:angular/common-builds#3b597d6b01a9d867223e4e48acd5a2eb52d1862c", + "@angular/compiler": "github:angular/compiler-builds#1a3c02c4b9ade87bc7d89ba19dad6532570402b0", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#dce1169334901520116d091267428f21d18a6d12", + "@angular/core": "github:angular/core-builds#f343af04c17a9213bed8cea4bb18e3a1f94141cb", + "@angular/forms": "github:angular/forms-builds#6c50dd915e48100439ee6ca60e20dcb44f41377c", + "@angular/language-service": "github:angular/language-service-builds#f6bf914f3641748556c9dff229ebf54cc521499c", + "@angular/localize": "github:angular/localize-builds#a5031b5263ad5ab76e8a439405b2fe84e68d3659", + "@angular/material": "github:angular/material-builds#95804188fe01f8df9911764f3e692a0bba4dd75c", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a86bb7b8cfc2ffe4b1eb4ca4113799b0aca697b8", + "@angular/platform-browser": "github:angular/platform-browser-builds#d887b36fc98633c76c414c6a8a88ef032d89ee99", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b760ddf810b5e75500d71ba0852b5b60e732506c", + "@angular/platform-server": "github:angular/platform-server-builds#49db5ed6df6f325f47bc6a1891131e120c1af3c9", + "@angular/router": "github:angular/router-builds#eb1b93897c195e93a5e73fb7402b575b00d9f4f1", + "@angular/service-worker": "github:angular/service-worker-builds#14960de212e5ee468bcee4320b6f12116fdc7ab9" } } diff --git a/yarn.lock b/yarn.lock index de2a07853e7a..a93328fdc121 100644 --- a/yarn.lock +++ b/yarn.lock @@ -54,26 +54,26 @@ __metadata: languageName: node linkType: hard -"@angular/animations@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/animations@npm:19.1.0-next.4" +"@angular/animations@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/animations@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.4 - checksum: 10c0/726da7b1ed1a9b95d55ed74d164d177022e43d14aabf04a5d70d8a3d7567259842c942a854e08200e32ca4cb78993983ea8d85197bdb9bf7f0fc551a30de489f + "@angular/core": 19.1.0-rc.0 + checksum: 10c0/f8a896468dfd749714f92b21948876e3a5a1cf785415911e0b15ec68cbd8765fbe1ba31504dc495eb5ed9e3f570839e1918e4afd35c8f327247557d61e7fd079 languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2": - version: 19.1.0-next.4+sha-b22677d - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=cfd7a06c2f972fcef59262995d232e2846b536a2" +"@angular/bazel@https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55": + version: 19.2.0-next.0+sha-e689aae + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=169e71f64fa706648c60d77abb8d4cab1ca22f55" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.1.0-next.4+sha-b22677d + "@angular/compiler-cli": 19.2.0-next.0+sha-e689aae "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/8d1d1d9570ffa467282ad7c440600aa8f0f22194851b3e53fa02c859f4d7ea2577397c0b7474cbfad81cfe9e7c50832888ee5af5d65ebf49745d9c088c7366ef + checksum: 10c0/747258852f159d48bcd87dc3914257dabd9d77c3df0033203c52bfd2bba7e4065f39ee9b3dafb76d4b097a79b2acdb60737427dedcb9b7a4320175ae2316a302 languageName: node linkType: hard @@ -104,9 +104,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6": - version: 0.0.0-f0a9343aa86aac0222d035814dc919282fbdaa19 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=e025d180b28460375d9f2292dc86e7c6a459b5b6" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa": + version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=67627d22c2fef6e3cb128f65723e19eb35e02eaa" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.2" @@ -119,7 +119,7 @@ __metadata: "@bazel/runfiles": "npm:5.8.1" "@bazel/terser": "npm:5.8.1" "@bazel/typescript": "npm:5.8.1" - "@microsoft/api-extractor": "npm:7.48.1" + "@microsoft/api-extractor": "npm:7.49.0" "@types/browser-sync": "npm:^2.26.3" "@types/minimatch": "npm:^5.1.2" "@types/node": "npm:^18.19.21" @@ -143,7 +143,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/a7998c6a7343edf4645f233f4f18f3227e3d104a9a6cf8f29da2b86d20437c068d8ac02f60fb685c2825cd5d15fe247770a60f13f80c04f26e6c44aba5867965 + checksum: 10c0/9f048309c950920d5745d55a7dac932faf1112555e1b6fdf6b78999d49e6543ae81457e7454ccb7dd4bf4620cc398dfeb08378b64eb04c40df7fc437f70eae6e languageName: node linkType: hard @@ -231,21 +231,21 @@ __metadata: languageName: node linkType: hard -"@angular/common@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/common@npm:19.1.0-next.4" +"@angular/common@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/common@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.4 + "@angular/core": 19.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/0ea20172950989ea9b4614c1ab1fc5101bf173d155bf66a9732a6630322bb2fc2b2677f16bc877f5fe780a1ce7f8819874a2cc76d79d222f1da4a88faffa7b98 + checksum: 10c0/5e8abf6cdd5838fcf1b8369e123d6865b8d17454f1717899c2c35f0a440da587d7b80b73c3b5ff049ec487351620c3f90cd91badf0fa5cddcac396aabf025bb7 languageName: node linkType: hard -"@angular/compiler-cli@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/compiler-cli@npm:19.1.0-next.4" +"@angular/compiler-cli@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/compiler-cli@npm:19.1.0-rc.0" dependencies: "@babel/core": "npm:7.26.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" @@ -256,39 +256,39 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.4 + "@angular/compiler": 19.1.0-rc.0 typescript: ">=5.5 <5.8" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js ngcc: bundles/ngcc/index.js - checksum: 10c0/812212e5dc71e277428e35ca35b3d06741116527a033d43d48493015d3b3980297faf3bbbd0642a54507987cb4037533536ebec73cd8b4c6fc389a3e4900ae13 + checksum: 10c0/6c40833ff8a48e499a4726f792d6543f4c17ff3d27c52919d09e4b20905c4041cbad3230873d7b5578e54e516a1440d1078299e04f6ae08076bb5774c1084d54 languageName: node linkType: hard -"@angular/compiler@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/compiler@npm:19.1.0-next.4" +"@angular/compiler@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/compiler@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 19.1.0-next.4 + "@angular/core": 19.1.0-rc.0 peerDependenciesMeta: "@angular/core": optional: true - checksum: 10c0/9d603cf61034865bc29c05709ff6c1f74fa507701b372aece3411766bdcc8ad4bc3bb46512a257d6e40de5f29cf4610215a21905fdb128b2e2d586e4ad0d15b2 + checksum: 10c0/73916162c238c3987bfdd7309c7d19a9b8f8f969c3c7c1588bf469d21aa810f4f9587a2849da14c34ec58b8e24a843fabdbfe75d11213693986bf26889d162cb languageName: node linkType: hard -"@angular/core@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/core@npm:19.1.0-next.4" +"@angular/core@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/core@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 - checksum: 10c0/77be843501801ffef485c8ebd15c732bccc9cfc4971c221105c0ea444d20826adeb83beedaca219fcdf6199164fb2ea8839cdd4dea4952d063ab4c716f8e371f + checksum: 10c0/c505d10e6d0deb9ca5ab6bf27239dbaed17bcebf61173de18f047508551a4c46336c89263d6b03d38bba46865e17ae9c1db23399d4f744f49b1cb5bb1e7a7728 languageName: node linkType: hard @@ -309,23 +309,23 @@ __metadata: resolution: "@angular/devkit-repo@workspace:." dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular/animations": "npm:19.1.0-next.4" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#cfd7a06c2f972fcef59262995d232e2846b536a2" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#e025d180b28460375d9f2292dc86e7c6a459b5b6" + "@angular/animations": "npm:19.1.0-rc.0" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa" "@angular/cdk": "npm:19.1.0-next.3" - "@angular/common": "npm:19.1.0-next.4" - "@angular/compiler": "npm:19.1.0-next.4" - "@angular/compiler-cli": "npm:19.1.0-next.4" - "@angular/core": "npm:19.1.0-next.4" - "@angular/forms": "npm:19.1.0-next.4" - "@angular/localize": "npm:19.1.0-next.4" + "@angular/common": "npm:19.1.0-rc.0" + "@angular/compiler": "npm:19.1.0-rc.0" + "@angular/compiler-cli": "npm:19.1.0-rc.0" + "@angular/core": "npm:19.1.0-rc.0" + "@angular/forms": "npm:19.1.0-rc.0" + "@angular/localize": "npm:19.1.0-rc.0" "@angular/material": "npm:19.1.0-next.3" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492" - "@angular/platform-browser": "npm:19.1.0-next.4" - "@angular/platform-browser-dynamic": "npm:19.1.0-next.4" - "@angular/platform-server": "npm:19.1.0-next.4" - "@angular/router": "npm:19.1.0-next.4" - "@angular/service-worker": "npm:19.1.0-next.4" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1" + "@angular/platform-browser": "npm:19.1.0-rc.0" + "@angular/platform-browser-dynamic": "npm:19.1.0-rc.0" + "@angular/platform-server": "npm:19.1.0-rc.0" + "@angular/router": "npm:19.1.0-rc.0" + "@angular/service-worker": "npm:19.1.0-rc.0" "@babel/core": "npm:7.26.0" "@babel/generator": "npm:7.26.3" "@babel/helper-annotate-as-pure": "npm:7.25.9" @@ -483,36 +483,36 @@ __metadata: languageName: unknown linkType: soft -"@angular/forms@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/forms@npm:19.1.0-next.4" +"@angular/forms@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/forms@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.4 - "@angular/core": 19.1.0-next.4 - "@angular/platform-browser": 19.1.0-next.4 + "@angular/common": 19.1.0-rc.0 + "@angular/core": 19.1.0-rc.0 + "@angular/platform-browser": 19.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/bb0622ae5e9db52e33ec92208bfeffccd58d01ea0df60e2bc666b9751c72a324390c49dd3b1417a0232e9adfb6d24eca7dcf4cba1bf4cd8db30736c1770e17b5 + checksum: 10c0/eeec912f74407f551953fc95f2c864890cc4bd67b2a76e2e25b738a1109e5e48214ebbd2a51b546d6a61301456992e4a5ce92036a70421de2beea9d82cf2f079 languageName: node linkType: hard -"@angular/localize@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/localize@npm:19.1.0-next.4" +"@angular/localize@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/localize@npm:19.1.0-rc.0" dependencies: "@babel/core": "npm:7.26.0" "@types/babel__core": "npm:7.20.5" - fast-glob: "npm:3.3.2" + fast-glob: "npm:3.3.3" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 19.1.0-next.4 - "@angular/compiler-cli": 19.1.0-next.4 + "@angular/compiler": 19.1.0-rc.0 + "@angular/compiler-cli": 19.1.0-rc.0 bin: localize-extract: tools/bundles/src/extract/cli.js localize-migrate: tools/bundles/src/migrate/cli.js localize-translate: tools/bundles/src/translate/cli.js - checksum: 10c0/084d22d19b93268655b50681a328a0b4acd829d168e83c2d70c6c1b20e750b3d56aa1192c11f7c90d726337c290913208f600366b137cc53ad00872b96061055 + checksum: 10c0/76e4df41cfaa39a93c661f673a53931ce6accc1714ef005ddb4ed4ba02894f59d4c80eaa0cb3fe12499b53369d397080eb1b5e29f0a1d1e93303fc715816e48e languageName: node linkType: hard @@ -533,9 +533,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#34c97ca953ce02abc95287e350351802ba74b492": - version: 0.0.0-359350bbc10aab1bac85d0eec61a53377078ab82 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=34c97ca953ce02abc95287e350351802ba74b492" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1": + version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=ff93dd98d8d10bfab0f94495fe631485a6a772e1" dependencies: "@google-cloud/spanner": "npm:7.17.1" "@octokit/rest": "npm:21.0.2" @@ -550,81 +550,81 @@ __metadata: yaml: "npm:2.7.0" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/a571dc76f4da47ca8b1d6a9a217ea156132b13b96dc7d5b55e076fb7445e2b263496b99ad42e0403ff975ed215df9bee9a62eadfaf98a192bbb4333cdede41db + checksum: 10c0/6ea884a0e72d395fca8074d58803265d3ad474f0673b4060353022ba4d55bce789cfb1f6debca51f56e71d80563e626fb8fc7e25c5fbf911d01b208f86fa9a32 languageName: node linkType: hard -"@angular/platform-browser-dynamic@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/platform-browser-dynamic@npm:19.1.0-next.4" +"@angular/platform-browser-dynamic@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/platform-browser-dynamic@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.4 - "@angular/compiler": 19.1.0-next.4 - "@angular/core": 19.1.0-next.4 - "@angular/platform-browser": 19.1.0-next.4 - checksum: 10c0/552d6db24411be186d8392197a18c43e2d6a22b9cd2a5635cdbce24cb15f8fef3b470f121fbcb00a072eda02277c7604f50cf324bf3bb9740966d6a0420a5081 + "@angular/common": 19.1.0-rc.0 + "@angular/compiler": 19.1.0-rc.0 + "@angular/core": 19.1.0-rc.0 + "@angular/platform-browser": 19.1.0-rc.0 + checksum: 10c0/1fc6ada0a6f4c0471a7d822af89a71d3b7849a0b9966984980d494bd2c1fdbfacf6267ee392d0c5bf9c79a354d9ef9959dd59a92968c44c27e609ed30bdabbbb languageName: node linkType: hard -"@angular/platform-browser@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/platform-browser@npm:19.1.0-next.4" +"@angular/platform-browser@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/platform-browser@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 19.1.0-next.4 - "@angular/common": 19.1.0-next.4 - "@angular/core": 19.1.0-next.4 + "@angular/animations": 19.1.0-rc.0 + "@angular/common": 19.1.0-rc.0 + "@angular/core": 19.1.0-rc.0 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10c0/dcbb4863978f7911e69439caa9f74f44c0f199546300e9bb083521a31faa242919ebe1a6b3b1087584d233cf36178001ba24a24e833ce7e87ad861475707a667 + checksum: 10c0/7b611a3e4fbdca8def42241b7995f6fcec43b73a20fc0d061e9b39d82b2025972362a3cf4a33b1306cad7c3f2f9dcf7e0d89ab7e208874fde037c0fc8250d31f languageName: node linkType: hard -"@angular/platform-server@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/platform-server@npm:19.1.0-next.4" +"@angular/platform-server@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/platform-server@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" xhr2: "npm:^0.2.0" peerDependencies: - "@angular/animations": 19.1.0-next.4 - "@angular/common": 19.1.0-next.4 - "@angular/compiler": 19.1.0-next.4 - "@angular/core": 19.1.0-next.4 - "@angular/platform-browser": 19.1.0-next.4 - checksum: 10c0/3941ce98bb790f2e4bf5b388ec4e7a9a71ef0f77418e95d66d7885e9230ddc68fd3e427343f91cfbc91db671d837c8dcc7d711e4f5cc7483695e95ffd2a0c8de + "@angular/animations": 19.1.0-rc.0 + "@angular/common": 19.1.0-rc.0 + "@angular/compiler": 19.1.0-rc.0 + "@angular/core": 19.1.0-rc.0 + "@angular/platform-browser": 19.1.0-rc.0 + checksum: 10c0/631bb750f1a7ffbadf5617a267b25cab1f0abdeefb2834226f89dbe038eaf45e97c6b79b9ab42f99fbabbddba0784fa45a594ab5a40e1f9bae09295423864420 languageName: node linkType: hard -"@angular/router@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/router@npm:19.1.0-next.4" +"@angular/router@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/router@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.4 - "@angular/core": 19.1.0-next.4 - "@angular/platform-browser": 19.1.0-next.4 + "@angular/common": 19.1.0-rc.0 + "@angular/core": 19.1.0-rc.0 + "@angular/platform-browser": 19.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/d922c1d34d6e685f743d956a832049d268a117708e91451195f93555fa415e7267b3b713a7a54a9c790f07bb46c05f989e9d73bce4b6fb744b6796d3263bcdab + checksum: 10c0/6cb9e94c0453b6d5f8dc8f68a5b2a584cd708c3dbdc5c0df64177204dda7c2a42f7b7a9be4b39102ea47d1e18cfe78464388330a65aa249c238c1500afbfb07c languageName: node linkType: hard -"@angular/service-worker@npm:19.1.0-next.4": - version: 19.1.0-next.4 - resolution: "@angular/service-worker@npm:19.1.0-next.4" +"@angular/service-worker@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/service-worker@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 19.1.0-next.4 - "@angular/core": 19.1.0-next.4 + "@angular/common": 19.1.0-rc.0 + "@angular/core": 19.1.0-rc.0 bin: ngsw-config: ngsw-config.js - checksum: 10c0/6d4258971db4576139568cd4784ca4b87278d83722308d67e0c936011e62d3a8b77dc0ea93983a6897af48ba38d2db79b91f90765cd502504931d1c1baf09be5 + checksum: 10c0/a424475617dbb149433c0120683cb2b205dc0e5a579e1f9021175a95c44cb3887271a733bb4f2028ed8a5ca4cba11bb537a1be8ebf8f075d031534f18e91698f languageName: node linkType: hard @@ -2953,7 +2953,30 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor@npm:7.48.1, @microsoft/api-extractor@npm:^7.24.2": +"@microsoft/api-extractor@npm:7.49.0": + version: 7.49.0 + resolution: "@microsoft/api-extractor@npm:7.49.0" + dependencies: + "@microsoft/api-extractor-model": "npm:7.30.1" + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.1" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.14.4" + "@rushstack/ts-command-line": "npm:4.23.2" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.7.2" + bin: + api-extractor: bin/api-extractor + checksum: 10c0/2682251c81e2576de05afcdaeba4a2dc7a43125b7fb547104cb2446c5070566ebf43e0a929f9f04d141984c025ef181870b6bec9255916fd0a5ae3888bbd3311 + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:^7.24.2": version: 7.48.1 resolution: "@microsoft/api-extractor@npm:7.48.1" dependencies: From 45618dcf752b17fea47e4afa453a7c9c199b9099 Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Wed, 8 Jan 2025 11:56:49 -0800 Subject: [PATCH 0238/2162] release: bump the next branch to v19.2.0-next.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4ae7970549b4..7b9c915496c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "19.1.0-next.2", + "version": "19.2.0-next.0", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From bbcb26664ffb44646a15f013769e264449937059 Mon Sep 17 00:00:00 2001 From: Jan Krems Date: Wed, 8 Jan 2025 11:56:52 -0800 Subject: [PATCH 0239/2162] docs: release notes for the v19.1.0-rc.0 release --- .../npm_translate_lock_MzA5NzUwNzMx | 2 +- CHANGELOG.md | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index f281d209239c..d0f805d16352 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-1326094533 +package.json=-1836327528 pnpm-lock.yaml=-117820973 pnpm-workspace.yaml=1711114604 yarn.lock=1901884029 diff --git a/CHANGELOG.md b/CHANGELOG.md index dfb97aa7394c..ae1d385fede4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,51 @@ + + +# 19.1.0-rc.0 (2025-01-08) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | +| [02825eec5](https://github.com/angular/angular-cli/commit/02825eec53456384ba5b9c19f25dde3cfc95d796) | feat | use `@angular/build` package in library generation schematic | +| [88431b756](https://github.com/angular/angular-cli/commit/88431b7564d6757898744597a67fcdc178413128) | fix | application migration should migrate ng-packagr builder package | + +### @angular-devkit/architect + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | +| [aa6bf07f3](https://github.com/angular/angular-cli/commit/aa6bf07f35fd0eab9e319ddedadafa06d027da47) | fix | provide better error when builder is not defined | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | +| [916979c8a](https://github.com/angular/angular-cli/commit/916979c8a74a90788cf8c2379e08e05d48eb777e) | fix | preserve css type for jasmine.css | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [2c9d7368f](https://github.com/angular/angular-cli/commit/2c9d7368fc30f3488152e35ac468db5f2a9432f2) | feat | add ng-packagr builder to the package | +| [2f921219f](https://github.com/angular/angular-cli/commit/2f921219f99c846e04d699ba099928e5fbbd8629) | fix | add asset tracking to application builder watch files | +| [a5618693a](https://github.com/angular/angular-cli/commit/a5618693a12daf28fdfc1f791dd36889eeff6095) | fix | do not mark Babel \_defineProperty helper function as pure | +| [ef3dc2ed0](https://github.com/angular/angular-cli/commit/ef3dc2ed02cd997ccb0cb7ab6ff563eec31c5d9e) | fix | enable serving files with bundle-like names | +| [e76800ce5](https://github.com/angular/angular-cli/commit/e76800ce54abf388fd8762fc7a298729fb58650f) | fix | fix incorrect budget calculation | +| [a0b4ea23c](https://github.com/angular/angular-cli/commit/a0b4ea23c45ce048fcd9c8fa9d7ef74107a5d07d) | fix | handle relative URLs when constructing new URLs during server fetch | +| [5cc62d4a3](https://github.com/angular/angular-cli/commit/5cc62d4a30d8353fc56aaa6dfb9c58e51cd092f5) | fix | mitigate JS transformer worker execArgv errors | +| [8639a3b6d](https://github.com/angular/angular-cli/commit/8639a3b6d981ddef84c0f4d70b6a941fc866b82b) | fix | pass `define` option defined in application builder to Vite prebundling | +| [48cae815c](https://github.com/angular/angular-cli/commit/48cae815cfd0124217c1b5bc8c92dfdb0b150101) | fix | skip vite SSR warmup file configuration when SSR is disabled | +| [ba16ad6b5](https://github.com/angular/angular-cli/commit/ba16ad6b56e9a1ae0f380141bc1e1253a75fcf6b) | fix | support incremental build file results in watch mode | +| [bfe9ee36c](https://github.com/angular/angular-cli/commit/bfe9ee36cc4666deca60add57e793242d671b735) | fix | warn when `@angular/localize/init` is imported directly | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| [3feecddbb](https://github.com/angular/angular-cli/commit/3feecddbba0d0559da10a45ad4040faf8e9d5198) | fix | disable component boostrapping when running route extraction | +| [6edb90883](https://github.com/angular/angular-cli/commit/6edb90883733040d77647cf24dea7f53b1b6ceaa) | fix | throw error when using route matchers | + + + # 19.0.7 (2025-01-08) From 18abc3f9adde299aa6ffa8a96f9bcc866b294d02 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Jan 2025 22:00:01 +0000 Subject: [PATCH 0240/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +-- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 40 +++++++++--------- package.json | 8 ++-- pnpm-lock.yaml | 42 +++++++++---------- yarn.lock | 42 +++++++++---------- 10 files changed, 97 insertions(+), 97 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index d0f805d16352..a81f3b52db0f 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-1836327528 -pnpm-lock.yaml=-117820973 +package.json=1333979268 +pnpm-lock.yaml=1328654014 pnpm-workspace.yaml=1711114604 -yarn.lock=1901884029 +yarn.lock=1482441272 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 0b4c1c6f9df3..f95a9d0ec326 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + - uses: angular/dev-infra/github-actions/branch-manager@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 517af28ca3ec..3862f869ba3e 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -92,13 +92,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -114,13 +114,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -136,13 +136,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -154,13 +154,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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -188,11 +188,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - run: yarn 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 3f1170b5af9f..be194e388f0c 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + - uses: angular/dev-infra/github-actions/post-approval-changes@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index ee9b3a5a2363..4e047efd5308 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + - uses: angular/dev-infra/github-actions/feature-request@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 72741933e1cf..3a759750a73d 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable # 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 197f84a44179..3cb8c8d8ab2a 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/linting/licenses@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Check tooling setup run: yarn 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - 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@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -133,13 +133,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -155,13 +155,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -178,12 +178,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 7b9c915496c5..255adb5a9ecb 100644 --- a/package.json +++ b/package.json @@ -44,16 +44,16 @@ "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-rc.0", "@angular/bazel": "https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa", - "@angular/cdk": "19.1.0-next.3", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832", + "@angular/cdk": "19.1.0-rc.0", "@angular/common": "19.1.0-rc.0", "@angular/compiler": "19.1.0-rc.0", "@angular/compiler-cli": "19.1.0-rc.0", "@angular/core": "19.1.0-rc.0", "@angular/forms": "19.1.0-rc.0", "@angular/localize": "19.1.0-rc.0", - "@angular/material": "19.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1", + "@angular/material": "19.1.0-rc.0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b", "@angular/platform-browser": "19.1.0-rc.0", "@angular/platform-browser-dynamic": "19.1.0-rc.0", "@angular/platform-server": "19.1.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6eb69d7ca16..84e48eb92693 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,11 +23,11 @@ importers: specifier: https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55 version: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa - version: github.com/angular/dev-infra-private-build-tooling-builds/67627d22c2fef6e3cb128f65723e19eb35e02eaa(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832 + version: github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) '@angular/common': specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) @@ -47,11 +47,11 @@ importers: specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0) '@angular/material': - specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) + specifier: 19.1.0-rc.0 + version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1 - version: github.com/angular/dev-infra-private-ng-dev-builds/ff93dd98d8d10bfab0f94495fe631485a6a772e1 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b + version: github.com/angular/dev-infra-private-ng-dev-builds/8214e3156e6c9eb06089f7c50bec735a2cb73c3b '@angular/platform-browser': specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) @@ -657,8 +657,8 @@ packages: - yaml dev: true - /@angular/cdk@19.1.0-next.3(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1): - resolution: {integrity: sha512-7JX7kzV3PmeXwoL7dd2xLjDvZ7w/U+vuP/IHxSv0p+ThBZraMibcSUK/OeFC2XDKMs7Z8/0YnH/OWaAkxj8gmA==} + /@angular/cdk@19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1): + resolution: {integrity: sha512-uU//V0eUFoC9m1iJX6np3z+Ss+uww/iEl+Qsfi1WnTWALt0lE2v+vyF9OmFJz6LnEZRTczcG+K/Aj1DcJE0CtA==} peerDependencies: '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 @@ -777,11 +777,11 @@ packages: - supports-color dev: true - /@angular/material@19.1.0-next.3(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-next.3)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1): - resolution: {integrity: sha512-aq92B77YkgHSoew2aN2Fqeg9eu/DiL3c09JKul0PW7cQfMejYU1UmiiyhXS5MhxFdVofhsJdV5C8m4aMzjagVw==} + /@angular/material@19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1): + resolution: {integrity: sha512-mLobhkm2Cc6+QqiNQbZ/k8yfSyES02FXv/CoeZgrFINsmYHDuBTVbe0KsR4Xhs1lNYqalyLMvbypJ5WzWT3TYw==} peerDependencies: '@angular/animations': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - '@angular/cdk': 19.1.0-next.3 + '@angular/cdk': 19.1.0-rc.0 '@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 '@angular/forms': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 @@ -789,7 +789,7 @@ packages: rxjs: ^6.5.3 || ^7.4.0 dependencies: '@angular/animations': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) - '@angular/cdk': 19.1.0-next.3(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) + '@angular/cdk': 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) '@angular/common': 19.1.0-rc.0(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) '@angular/core': 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/forms': 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) @@ -15239,11 +15239,11 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/67627d22c2fef6e3cb128f65723e19eb35e02eaa(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/67627d22c2fef6e3cb128f65723e19eb35e02eaa} - id: github.com/angular/dev-infra-private-build-tooling-builds/67627d22c2fef6e3cb128f65723e19eb35e02eaa + github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/35cd77732ab88b0280d4fb1187728e4c8533c832} + id: github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832 name: '@angular/build-tooling' - version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) @@ -15311,10 +15311,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/ff93dd98d8d10bfab0f94495fe631485a6a772e1: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ff93dd98d8d10bfab0f94495fe631485a6a772e1} + github.com/angular/dev-infra-private-ng-dev-builds/8214e3156e6c9eb06089f7c50bec735a2cb73c3b: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8214e3156e6c9eb06089f7c50bec735a2cb73c3b} name: '@angular/ng-dev' - version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 + version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c hasBin: true dependencies: '@google-cloud/spanner': 7.17.1(supports-color@10.0.0) diff --git a/yarn.lock b/yarn.lock index a93328fdc121..56598c0c2392 100644 --- a/yarn.lock +++ b/yarn.lock @@ -104,9 +104,9 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa": - version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=67627d22c2fef6e3cb128f65723e19eb35e02eaa" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832": + version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=35cd77732ab88b0280d4fb1187728e4c8533c832" dependencies: "@angular/benchpress": "npm:0.3.0" "@angular/build": "npm:19.1.0-next.2" @@ -143,7 +143,7 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/9f048309c950920d5745d55a7dac932faf1112555e1b6fdf6b78999d49e6543ae81457e7454ccb7dd4bf4620cc398dfeb08378b64eb04c40df7fc437f70eae6e + checksum: 10c0/15805287cb7d4d2ad088a8424debb992fcc4df0cbd7e17a78d92dafc60ed8b149ce7160b18c1682959183c2fb46fe022f9d653b6ab5a365f89ad65af0110ceaa languageName: node linkType: hard @@ -214,9 +214,9 @@ __metadata: languageName: node linkType: hard -"@angular/cdk@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/cdk@npm:19.1.0-next.3" +"@angular/cdk@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/cdk@npm:19.1.0-rc.0" dependencies: parse5: "npm:^7.1.2" tslib: "npm:^2.3.0" @@ -227,7 +227,7 @@ __metadata: dependenciesMeta: parse5: optional: true - checksum: 10c0/2b82a6ef310975f9d7413aff848803fcfc7f18410155337f7a4705cf8bb62f3f5082517022ae3a4ef0a2dec2c42cd9c319127d75e3d4a4ea9bb17c9181329243 + checksum: 10c0/62bd88e0ce3a2f2e4b77c2d37b7a02b680e309e9365dfcadce48152d1fe3804c1a3efe706e007c42e0508a36ba96373811fdedc5117dd4cc3567d7b08d43a50e languageName: node linkType: hard @@ -311,16 +311,16 @@ __metadata: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-rc.0" "@angular/bazel": "https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#67627d22c2fef6e3cb128f65723e19eb35e02eaa" - "@angular/cdk": "npm:19.1.0-next.3" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832" + "@angular/cdk": "npm:19.1.0-rc.0" "@angular/common": "npm:19.1.0-rc.0" "@angular/compiler": "npm:19.1.0-rc.0" "@angular/compiler-cli": "npm:19.1.0-rc.0" "@angular/core": "npm:19.1.0-rc.0" "@angular/forms": "npm:19.1.0-rc.0" "@angular/localize": "npm:19.1.0-rc.0" - "@angular/material": "npm:19.1.0-next.3" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1" + "@angular/material": "npm:19.1.0-rc.0" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b" "@angular/platform-browser": "npm:19.1.0-rc.0" "@angular/platform-browser-dynamic": "npm:19.1.0-rc.0" "@angular/platform-server": "npm:19.1.0-rc.0" @@ -516,26 +516,26 @@ __metadata: languageName: node linkType: hard -"@angular/material@npm:19.1.0-next.3": - version: 19.1.0-next.3 - resolution: "@angular/material@npm:19.1.0-next.3" +"@angular/material@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/material@npm:19.1.0-rc.0" dependencies: tslib: "npm:^2.3.0" peerDependencies: "@angular/animations": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 - "@angular/cdk": 19.1.0-next.3 + "@angular/cdk": 19.1.0-rc.0 "@angular/common": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/core": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/forms": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 "@angular/platform-browser": ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10c0/8ff266bb6859bbee16b352c053a68dbaa64e669052030d4044022196c2279a739da0769942dff5a0fa95be41674accd4a73d96311d04ace904526312b870aa7e + checksum: 10c0/1c10cd0a3082de2c7b2709596190fad149d144335f10161be68e7a2e074102366da89f12d92c208e5ef964f5997804aeb875e8d5b9b2bad7adffe2446e65fa84 languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff93dd98d8d10bfab0f94495fe631485a6a772e1": - version: 0.0.0-33ed0671560a851374f6f61ba4f7f5dcc1b284f8 - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=ff93dd98d8d10bfab0f94495fe631485a6a772e1" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b": + version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=8214e3156e6c9eb06089f7c50bec735a2cb73c3b" dependencies: "@google-cloud/spanner": "npm:7.17.1" "@octokit/rest": "npm:21.0.2" @@ -550,7 +550,7 @@ __metadata: yaml: "npm:2.7.0" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/6ea884a0e72d395fca8074d58803265d3ad474f0673b4060353022ba4d55bce789cfb1f6debca51f56e71d80563e626fb8fc7e25c5fbf911d01b208f86fa9a32 + checksum: 10c0/4fa4d6b9aebbf07b7372523b5d2333787141b42129e3be6c854711e5d1fd0efb15b5bef403cefdeb4d557ae80b91e12858d90ccd39180bc7abc62c1712ee29d0 languageName: node linkType: hard From c40e263d8c9f7df67e1684bb54ed022b07f5ba2f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Jan 2025 23:05:01 +0000 Subject: [PATCH 0241/2162] build: update dependency typescript to v5.7.3 --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- package.json | 4 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 172 +++++++++--------- yarn.lock | 18 +- 5 files changed, 101 insertions(+), 101 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index a81f3b52db0f..640102094a2c 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=1333979268 -pnpm-lock.yaml=1328654014 +package.json=182854500 +pnpm-lock.yaml=1962865885 pnpm-workspace.yaml=1711114604 -yarn.lock=1482441272 +yarn.lock=-531923388 diff --git a/package.json b/package.json index 255adb5a9ecb..bd32640408c4 100644 --- a/package.json +++ b/package.json @@ -193,7 +193,7 @@ "tree-kill": "1.2.2", "ts-node": "^10.9.1", "tslib": "2.8.1", - "typescript": "5.7.2", + "typescript": "5.7.3", "undici": "7.2.0", "unenv": "^1.10.0", "verdaccio": "6.0.5", @@ -221,6 +221,6 @@ "onlyBuiltDependencies": [] }, "resolutions": { - "typescript": "5.7.2" + "typescript": "5.7.3" } } diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 5808c8fa35eb..989a11514e5e 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -29,7 +29,7 @@ "@angular-devkit/core": "0.0.0-PLACEHOLDER", "@angular/compiler": "19.1.0-rc.0", "@angular/compiler-cli": "19.1.0-rc.0", - "typescript": "5.7.2", + "typescript": "5.7.3", "webpack": "5.97.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84e48eb92693..63ef88e8c458 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: onlyBuiltDependencies: [] overrides: - typescript: 5.7.2 + typescript: 5.7.3 importers: @@ -21,7 +21,7 @@ importers: version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@angular/bazel': specifier: https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55 - version: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2) + version: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3) '@angular/build-tooling': specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832 version: github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) @@ -36,7 +36,7 @@ importers: version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@angular/compiler-cli': specifier: 19.1.0-rc.0 - version: 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) + version: 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3) '@angular/core': specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(rxjs@7.8.1)(zone.js@0.15.0) @@ -105,7 +105,7 @@ importers: version: 7.3.1 '@bazel/concatjs': specifier: 5.8.1 - version: 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) + version: 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.3) '@bazel/jasmine': specifier: 5.8.1 version: 5.8.1(jasmine-core@5.5.0)(jasmine@5.5.0) @@ -138,7 +138,7 @@ importers: version: 13.3.0(rollup@4.30.1) '@stylistic/eslint-plugin': specifier: ^2.8.0 - version: 2.12.1(eslint@8.57.0)(typescript@5.7.2) + version: 2.12.1(eslint@8.57.0)(typescript@5.7.3) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -210,10 +210,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.19.1 - version: 8.19.1(@typescript-eslint/parser@8.19.1)(eslint@8.57.0)(typescript@5.7.2) + version: 8.19.1(@typescript-eslint/parser@8.19.1)(eslint@8.57.0)(typescript@5.7.3) '@typescript-eslint/parser': specifier: 8.19.1 - version: 8.19.1(eslint@8.57.0)(typescript@5.7.2) + version: 8.19.1(eslint@8.57.0)(typescript@5.7.3) '@vitejs/plugin-basic-ssl': specifier: 1.2.0 version: 1.2.0(vite@6.0.7) @@ -366,7 +366,7 @@ importers: version: 2.0.0 ng-packagr: specifier: 19.1.0-next.3 - version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.2) + version: 19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.3) npm: specifier: ^11.0.0 version: 11.0.0 @@ -402,7 +402,7 @@ importers: version: 8.4.49 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1) + version: 8.1.1(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1) prettier: specifier: ^3.0.0 version: 3.4.2 @@ -465,13 +465,13 @@ importers: version: 1.2.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@18.19.70)(typescript@5.7.2) + version: 10.9.2(@types/node@18.19.70)(typescript@5.7.3) tslib: specifier: 2.8.1 version: 2.8.1 typescript: - specifier: 5.7.2 - version: 5.7.2 + specifier: 5.7.3 + version: 5.7.3 undici: specifier: 7.2.0 version: 7.2.0 @@ -578,7 +578,7 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2): + /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3): resolution: {integrity: sha512-HDyPsyyqbMpUQXA3VBcfFcGu6sj0vxKL/DEKxnxIgbC9dZ/01yNDMTPIszpGg16fRPt10xEefx3hUFMMgYzWJQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -591,7 +591,7 @@ packages: less: ^4.2.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 - typescript: 5.7.2 + typescript: 5.7.3 peerDependenciesMeta: '@angular/localize': optional: true @@ -611,7 +611,7 @@ packages: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1901.0-next.2(chokidar@4.0.3) '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) - '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3) '@angular/localize': 19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0) '@angular/platform-server': 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0) '@angular/service-worker': 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) @@ -638,7 +638,7 @@ packages: rollup: 4.28.1 sass: 1.83.0 semver: 7.6.3 - typescript: 5.7.2 + typescript: 5.7.3 vite: 6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: @@ -684,13 +684,13 @@ packages: tslib: 2.8.1 dev: true - /@angular/compiler-cli@19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2): + /@angular/compiler-cli@19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3): resolution: {integrity: sha512-7D0jLS/qooH782rgE5SbWJUpSsqR9/qlbhYvcyLosr1YjH3dsaZV8j4h2r+qJ+qwjKLWxRr2XLtVzVxPyeyKIQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: '@angular/compiler': 19.1.0-rc.0 - typescript: 5.7.2 + typescript: 5.7.3 dependencies: '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@babel/core': 7.26.0 @@ -700,7 +700,7 @@ packages: reflect-metadata: 0.2.2 semver: 7.6.3 tslib: 2.8.1 - typescript: 5.7.2 + typescript: 5.7.3 yargs: 17.7.2 transitivePeerDependencies: - supports-color @@ -768,7 +768,7 @@ packages: '@angular/compiler-cli': 19.1.0-rc.0 dependencies: '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) - '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3) '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 fast-glob: 3.3.3 @@ -1986,7 +1986,7 @@ packages: hasBin: true dev: true - /@bazel/concatjs@5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2): + /@bazel/concatjs@5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.3): resolution: {integrity: sha512-TkARsNUxgi3bjFeGwIGlffmQglNhuR9qK9uE7uKhdBZvQE5caAWVCjYiMTzo3viKDhwKn5QNRcHY5huuJMVFfA==} hasBin: true peerDependencies: @@ -2007,7 +2007,7 @@ packages: karma-sourcemap-loader: 0.4.0 protobufjs: 6.8.8 source-map-support: 0.5.9 - tsutils: 3.21.0(typescript@5.7.2) + tsutils: 3.21.0(typescript@5.7.3) transitivePeerDependencies: - typescript dev: true @@ -2064,18 +2064,18 @@ packages: terser: 5.37.0 dev: true - /@bazel/typescript@5.8.1(typescript@5.7.2): + /@bazel/typescript@5.8.1(typescript@5.7.3): resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==} deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement hasBin: true peerDependencies: - typescript: 5.7.2 + typescript: 5.7.3 dependencies: '@bazel/worker': 5.8.1 semver: 5.6.0 source-map-support: 0.5.9 - tsutils: 3.21.0(typescript@5.7.2) - typescript: 5.7.2 + tsutils: 3.21.0(typescript@5.7.3) + typescript: 5.7.3 dev: true /@bazel/worker@5.8.1: @@ -3097,7 +3097,7 @@ packages: resolve: 1.22.10 semver: 7.5.4 source-map: 0.6.1 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - '@types/node' dev: true @@ -4240,13 +4240,13 @@ packages: resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: true - /@stylistic/eslint-plugin@2.12.1(eslint@8.57.0)(typescript@5.7.2): + /@stylistic/eslint-plugin@2.12.1(eslint@8.57.0)(typescript@5.7.3): resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' dependencies: - '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.3) eslint: 8.57.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -4880,44 +4880,44 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1)(eslint@8.57.0)(typescript@5.7.2): + /@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1)(eslint@8.57.0)(typescript@5.7.3): resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} 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.7.2 + typescript: 5.7.3 dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.19.1(eslint@8.57.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@8.19.1(eslint@8.57.0)(typescript@5.7.2): + /@typescript-eslint/parser@8.19.1(eslint@8.57.0)(typescript@5.7.3): resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.7.2 + typescript: 5.7.3 dependencies: '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color dev: true @@ -4930,19 +4930,19 @@ packages: '@typescript-eslint/visitor-keys': 8.19.1 dev: true - /@typescript-eslint/type-utils@8.19.1(eslint@8.57.0)(typescript@5.7.2): + /@typescript-eslint/type-utils@8.19.1(eslint@8.57.0)(typescript@5.7.3): resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.7.2 + typescript: 5.7.3 dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@8.57.0)(typescript@5.7.3) debug: 4.4.0(supports-color@10.0.0) eslint: 8.57.0 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color dev: true @@ -4952,11 +4952,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2): + /@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3): resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.7.2 + typescript: 5.7.3 dependencies: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 @@ -4965,25 +4965,25 @@ packages: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@8.19.1(eslint@8.57.0)(typescript@5.7.2): + /@typescript-eslint/utils@8.19.1(eslint@8.57.0)(typescript@5.7.3): resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.7.2 + typescript: 5.7.3 dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) eslint: 8.57.0 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color dev: true @@ -6931,11 +6931,11 @@ packages: vary: 1.1.2 dev: true - /cosmiconfig@9.0.0(typescript@5.7.2): + /cosmiconfig@9.0.0(typescript@5.7.3): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: - typescript: 5.7.2 + typescript: 5.7.3 peerDependenciesMeta: typescript: optional: true @@ -6944,7 +6944,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.7.2 + typescript: 5.7.3 dev: true /create-require@1.1.1: @@ -7844,7 +7844,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.3) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -7871,7 +7871,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@8.57.0)(typescript@5.7.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.3 @@ -11004,7 +11004,7 @@ packages: engines: {node: '>= 0.4.0'} dev: true - /ng-packagr@19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.2): + /ng-packagr@19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.3): resolution: {integrity: sha512-D/2axZFTpc0z/tH4Okgbc++0h6DnarNX0+aPWjDKAN3nPURpj6nrj997ee5GmBFeivcGu3gepVHoICAII7YOyg==} engines: {node: ^18.19.1 || >=20.11.1} hasBin: true @@ -11012,12 +11012,12 @@ packages: '@angular/compiler-cli': ^19.0.0 || ^19.1.0-next.0 tailwindcss: ^2.0.0 || ^3.0.0 tslib: ^2.3.0 - typescript: 5.7.2 + typescript: 5.7.3 peerDependenciesMeta: tailwindcss: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3) '@rollup/plugin-json': 6.1.0(rollup@4.30.1) '@rollup/wasm-node': 4.30.0 ajv: 8.17.1 @@ -11039,7 +11039,7 @@ packages: rxjs: 7.8.1 sass: 1.83.1 tslib: 2.8.1 - typescript: 5.7.2 + typescript: 5.7.3 optionalDependencies: rollup: 4.30.1 dev: true @@ -11925,7 +11925,7 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1): + /postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1): resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -11938,7 +11938,7 @@ packages: webpack: optional: true dependencies: - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 1.21.7 postcss: 8.4.49 semver: 7.6.3 @@ -13990,23 +13990,23 @@ packages: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} dev: true - /ts-api-utils@2.0.0(typescript@5.7.2): + /ts-api-utils@2.0.0(typescript@5.7.3): resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} engines: {node: '>=18.12'} peerDependencies: - typescript: 5.7.2 + typescript: 5.7.3 dependencies: - typescript: 5.7.2 + typescript: 5.7.3 dev: true - /ts-node@10.9.2(@types/node@18.19.70)(typescript@5.7.2): + /ts-node@10.9.2(@types/node@18.19.70)(typescript@5.7.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' '@swc/wasm': '>=1.2.50' '@types/node': '*' - typescript: 5.7.2 + typescript: 5.7.3 peerDependenciesMeta: '@swc/core': optional: true @@ -14025,7 +14025,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.2 + typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -14052,14 +14052,14 @@ packages: engines: {node: '>=0.6.x'} dev: true - /tsutils@3.21.0(typescript@5.7.2): + /tsutils@3.21.0(typescript@5.7.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: - typescript: 5.7.2 + typescript: 5.7.3 dependencies: tslib: 1.14.1 - typescript: 5.7.2 + typescript: 5.7.3 dev: true /tuf-js@3.0.1: @@ -14169,8 +14169,8 @@ packages: resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} dev: true - /typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + /typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -15202,7 +15202,7 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.2): + github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3): resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/169e71f64fa706648c60d77abb8d4cab1ca22f55} id: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55 name: '@angular/bazel' @@ -15218,13 +15218,13 @@ packages: rollup: ^2.56.3 rollup-plugin-sourcemaps: ^0.6.3 terser: ^5.9.0 - typescript: 5.7.2 + typescript: 5.7.3 peerDependenciesMeta: terser: optional: true dependencies: - '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.2) - '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) + '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3) + '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.3) '@bazel/worker': 5.8.1 '@microsoft/api-extractor': 7.49.0(@types/node@18.19.70) '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.1) @@ -15234,7 +15234,7 @@ packages: rollup-plugin-sourcemaps: 0.6.3(@types/node@18.19.70)(rollup@4.30.1) terser: 5.37.0 tslib: 2.8.1 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - '@types/node' dev: true @@ -15246,16 +15246,16 @@ packages: version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.2) + '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 - '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.2) + '@bazel/concatjs': 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.3) '@bazel/esbuild': 5.8.1 '@bazel/protractor': 5.8.1(protractor@7.0.0) '@bazel/runfiles': 5.8.1 '@bazel/terser': 5.8.1(terser@5.37.0) - '@bazel/typescript': 5.8.1(typescript@5.7.2) + '@bazel/typescript': 5.8.1(typescript@5.7.3) '@microsoft/api-extractor': 7.49.0(@types/node@18.19.70) '@types/browser-sync': 2.29.0 '@types/minimatch': 5.1.2 @@ -15274,7 +15274,7 @@ packages: tmp: 0.2.3 true-case-path: 2.2.1 tslib: 2.8.1 - typescript: 5.7.2 + typescript: 5.7.3 uuid: 11.0.4 yargs: 17.7.2 transitivePeerDependencies: @@ -15326,7 +15326,7 @@ packages: semver: 7.6.3 supports-color: 10.0.0 typed-graphqlify: 3.1.6 - typescript: 5.7.2 + typescript: 5.7.3 yaml: 2.7.0 transitivePeerDependencies: - encoding diff --git a/yarn.lock b/yarn.lock index 56598c0c2392..6b1949ce61e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -460,7 +460,7 @@ __metadata: tree-kill: "npm:1.2.2" ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" undici: "npm:7.2.0" unenv: "npm:^1.10.0" verdaccio: "npm:6.0.5" @@ -18028,23 +18028,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.7.2": - version: 5.7.2 - resolution: "typescript@npm:5.7.2" +"typescript@npm:5.7.3": + version: 5.7.3 + resolution: "typescript@npm:5.7.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 + checksum: 10c0/b7580d716cf1824736cc6e628ab4cd8b51877408ba2be0869d2866da35ef8366dd6ae9eb9d0851470a39be17cbd61df1126f9e211d8799d764ea7431d5435afa languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.7.2#optional!builtin": - version: 5.7.2 - resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=8c6c40" +"typescript@patch:typescript@npm%3A5.7.3#optional!builtin": + version: 5.7.3 + resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/c891ccf04008bc1305ba34053db951f8a4584b4a1bf2f68fd972c4a354df3dc5e62c8bfed4f6ac2d12e5b3b1c49af312c83a651048f818cd5b4949d17baacd79 + checksum: 10c0/3b56d6afa03d9f6172d0b9cdb10e6b1efc9abc1608efd7a3d2f38773d5d8cfb9bbc68dfb72f0a7de5e8db04fc847f4e4baeddcd5ad9c9feda072234f0d788896 languageName: node linkType: hard From 8aa2382935d407aa7e262eb49b9e62a9f96f9a87 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Jan 2025 22:02:56 +0000 Subject: [PATCH 0242/2162] build: update dependency aspect_rules_ts to v3.4.0 --- WORKSPACE | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 3fb75fb4f3d0..a1de5e2f5f22 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -206,9 +206,9 @@ http_archive( name = "aspect_rules_ts", patch_args = ["-p1"], patches = ["//tools:rules_ts_windows.patch"], - sha256 = "cff3137b043ff6bf1a2542fd9691dc762432370cd39eb4bb0756d288de52067d", - strip_prefix = "rules_ts-3.3.2", - url = "https://github.com/aspect-build/rules_ts/releases/download/v3.3.2/rules_ts-v3.3.2.tar.gz", + sha256 = "013a10b2b457add73b081780e604778eb50a141709f9194298f97761acdcc169", + strip_prefix = "rules_ts-3.4.0", + url = "https://github.com/aspect-build/rules_ts/releases/download/v3.4.0/rules_ts-v3.4.0.tar.gz", ) load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") From a8335cf950510eec70c77e541ca996431931b00f Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 8 Jan 2025 14:57:42 +0000 Subject: [PATCH 0243/2162] build: never use interop targets for ts compilations * Removes `interop_deps` from the `ts_project` interop macro. * Keeps `_rjs` suffix for now as we still need the interop targets for e.g. `jasmine_node_test` and the `rules_nodejs` linker. In follow-ups we can remove the suffix, and interop layer. --- packages/angular/build/BUILD.bazel | 8 ++-- packages/angular/cli/BUILD.bazel | 14 +++---- packages/angular/pwa/BUILD.bazel | 8 +--- packages/angular_devkit/architect/BUILD.bazel | 10 ++--- .../angular_devkit/architect/node/BUILD.bazel | 10 ++--- .../architect/testing/BUILD.bazel | 8 ++-- .../angular_devkit/architect_cli/BUILD.bazel | 6 +-- .../angular_devkit/build_angular/BUILD.bazel | 41 +++++++------------ .../angular_devkit/build_webpack/BUILD.bazel | 18 ++++---- .../angular_devkit/schematics/BUILD.bazel | 16 +++----- .../schematics/tasks/BUILD.bazel | 8 ++-- .../schematics/tasks/node/BUILD.bazel | 10 ++--- .../schematics/testing/BUILD.bazel | 10 ++--- .../schematics/tools/BUILD.bazel | 26 +++++------- .../angular_devkit/schematics_cli/BUILD.bazel | 8 ++-- packages/ngtools/webpack/BUILD.bazel | 4 +- packages/schematics/angular/BUILD.bazel | 14 +++---- .../tools/file-system-engine-host/BUILD.bazel | 4 +- tools/defaults.bzl | 39 ------------------ tools/interop.bzl | 6 ++- 20 files changed, 84 insertions(+), 184 deletions(-) diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index ba11626610e7..e7be210f97e3 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -58,11 +58,6 @@ ts_project( "builders.json", "package.json", ], - interop_deps = [ - "//packages/angular/ssr", - "//packages/angular/ssr/node", - "//packages/angular_devkit/architect", - ], module_name = "@angular/build", deps = [ "//:root_modules/@ampproject/remapping", @@ -108,6 +103,9 @@ ts_project( "//:root_modules/typescript", "//:root_modules/vite", "//:root_modules/watchpack", + "//packages/angular/ssr:ssr_rjs", + "//packages/angular/ssr/node:node_rjs", + "//packages/angular_devkit/architect:architect_rjs", ], ) diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index abee3d62b711..259b82cbeba8 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -40,11 +40,6 @@ ts_project( ) + [ "//packages/angular/cli:lib/config/schema.json", ], - interop_deps = [ - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", - "//packages/angular_devkit/schematics/tools", - ], module_name = "@angular/cli", deps = [ "//:root_modules/@angular/core", @@ -71,6 +66,9 @@ ts_project( "//packages/angular_devkit/architect/node:node_rjs", "//packages/angular_devkit/core:core_rjs", "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", + "//packages/angular_devkit/schematics/tools:tools_rjs", ], ) @@ -139,15 +137,13 @@ ts_project( "node_modules/**", ], ), - interop_deps = [ - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/testing", - ], deps = [ ":angular-cli_rjs", "//:root_modules/@types/semver", "//:root_modules/@types/yargs", "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/testing:testing_rjs", ], ) diff --git a/packages/angular/pwa/BUILD.bazel b/packages/angular/pwa/BUILD.bazel index 7c3a21974eb1..345104673c7e 100644 --- a/packages/angular/pwa/BUILD.bazel +++ b/packages/angular/pwa/BUILD.bazel @@ -26,13 +26,11 @@ ts_project( "pwa/files/**/*", ], ), - interop_deps = [ - "//packages/angular_devkit/schematics", - ], module_name = "@angular/pwa", deps = [ "//:root_modules/@types/node", "//:root_modules/parse5-html-rewriting-stream", + "//packages/angular_devkit/schematics:schematics_rjs", "//packages/schematics/angular:angular_rjs", ], ) @@ -46,12 +44,10 @@ ts_project( name = "pwa_test_lib", testonly = True, srcs = glob(["pwa/**/*_spec.ts"]), - interop_deps = [ - "//packages/angular_devkit/schematics/testing", - ], deps = [ ":pwa_rjs", "//:root_modules/@types/jasmine", + "//packages/angular_devkit/schematics/testing:testing_rjs", ], ) diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 78418fcbc081..af9a6beba333 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -64,14 +64,12 @@ ts_project( "node_modules/**", ], ), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - ], module_name = "@angular-devkit/architect", deps = [ "//:root_modules/@types/node", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) @@ -79,14 +77,12 @@ ts_project( name = "architect_test_lib", testonly = True, srcs = glob(["src/**/*_spec.ts"]), - interop_deps = [ - "//packages/angular_devkit/core", - ], deps = [ ":architect_rjs", "//:root_modules/@types/jasmine", "//:root_modules/rxjs", "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", ], ) diff --git a/packages/angular_devkit/architect/node/BUILD.bazel b/packages/angular_devkit/architect/node/BUILD.bazel index 1dcb60002064..6b5440ade444 100644 --- a/packages/angular_devkit/architect/node/BUILD.bazel +++ b/packages/angular_devkit/architect/node/BUILD.bazel @@ -16,15 +16,13 @@ ts_project( include = ["**/*.ts"], exclude = ["**/*_spec.ts"], ), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - ], module_name = "@angular-devkit/architect/node", deps = [ "//:root_modules/@types/node", "//:root_modules/rxjs", "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) @@ -36,14 +34,12 @@ ts_project( "**/*_spec.ts", ], ), - interop_deps = [ - "//tests/angular_devkit/architect/node/jobs:jobs_test_lib", - ], deps = [ ":node_rjs", "//:root_modules/@types/jasmine", "//:root_modules/rxjs", "//packages/angular_devkit/architect:architect_rjs", + "//tests/angular_devkit/architect/node/jobs:jobs_test_lib_rjs", ], ) diff --git a/packages/angular_devkit/architect/testing/BUILD.bazel b/packages/angular_devkit/architect/testing/BUILD.bazel index aae4a586f472..ffe76eb63200 100644 --- a/packages/angular_devkit/architect/testing/BUILD.bazel +++ b/packages/angular_devkit/architect/testing/BUILD.bazel @@ -15,14 +15,12 @@ ts_project( include = ["**/*.ts"], exclude = ["**/*_spec.ts"], ), - interop_deps = [ - "//packages/angular_devkit/architect", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - ], module_name = "@angular-devkit/architect/testing", deps = [ "//:root_modules/@types/node", "//:root_modules/rxjs", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index f5894c1c9ef9..2abecea4a525 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -14,10 +14,6 @@ ts_project( srcs = [ "bin/architect.ts", ] + glob(["src/**/*.ts"]), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - ], module_name = "@angular-devkit/architect-cli", deps = [ "//:root_modules/@types/node", @@ -26,6 +22,8 @@ ts_project( "//:root_modules/ansi-colors", "//packages/angular_devkit/architect:architect_rjs", "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", ], ) diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 04adc5af89be..e3a43d3ab6b9 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -119,13 +119,6 @@ ts_project( "builders.json", "package.json", ], - interop_deps = [ - "//packages/angular/ssr", - "//packages/angular_devkit/build_webpack", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/ngtools/webpack", - ], module_name = "@angular-devkit/build-angular", deps = [ "//:root_modules/@ampproject/remapping", @@ -201,7 +194,12 @@ ts_project( "//:root_modules/webpack-subresource-integrity", "//packages/angular/build:build_rjs", "//packages/angular/build/private:private_rjs", + "//packages/angular/ssr:ssr_rjs", "//packages/angular_devkit/architect", + "//packages/angular_devkit/build_webpack:build_webpack_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/ngtools/webpack:webpack_rjs", ], ) @@ -217,9 +215,6 @@ ts_project( ], ), data = glob(["test/**/*"]), - interop_deps = [ - "//packages/angular_devkit/core", - ], deps = [ ":build_angular_rjs", ":build_angular_test_utils_rjs", @@ -228,6 +223,7 @@ ts_project( "//:root_modules/typescript", "//:root_modules/webpack", "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", ], ) @@ -285,19 +281,17 @@ ts_project( ], ), data = glob(["test/**/*"]), - interop_deps = [ - "//modules/testing/builder", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - ], deps = [ ":build_angular_rjs", "//:root_modules/@types/jasmine", + "//modules/testing/builder:builder_rjs", "//packages/angular/build:build_rjs", "//packages/angular/build/private:private_rjs", "//packages/angular_devkit/architect:architect_rjs", "//packages/angular_devkit/architect/node:node_rjs", "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", "@npm//rxjs", ], ) @@ -308,10 +302,8 @@ LARGE_SPECS = { "shards": 10, "size": "large", "flaky": True, - "extra_interop_deps": [ - "//packages/angular_devkit/build_webpack", - ], "extra_deps": [ + "//packages/angular_devkit/build_webpack:build_webpack_rjs", "//:root_modules/@types/http-proxy", "//:root_modules/http-proxy", "//:root_modules/puppeteer", @@ -364,10 +356,8 @@ LARGE_SPECS = { "prerender": {}, "browser-esbuild": {}, "ssr-dev-server": { - "extra_interop_deps": [ - "//packages/angular/ssr/node", - ], "extra_deps": [ + "//packages/angular/ssr/node:node_rjs", "//:root_modules/@types/browser-sync", "//:root_modules/browser-sync", "//:root_modules/express", @@ -381,15 +371,12 @@ LARGE_SPECS = { name = "build_angular_" + spec + "_test_lib", testonly = True, srcs = glob(["src/builders/" + spec + "/**/*_spec.ts"]), - interop_deps = [ - # Dependencies needed to compile and run the specs themselves. - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//modules/testing/builder", - ] + LARGE_SPECS[spec].get("extra_interop_deps", []), deps = [ # Dependencies needed to compile and run the specs themselves. ":build_angular_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//modules/testing/builder:builder_rjs", ":build_angular_test_utils_rjs", "//packages/angular/build:build_rjs", "//packages/angular/build/private:private_rjs", diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index 6fee76a7f02c..9d0c0df8e1ad 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -42,15 +42,13 @@ ts_project( "src/builders/webpack-dev-server/schema.json", "src/builders/webpack/schema.json", ], - interop_deps = [ - "//packages/angular_devkit/architect", - ], module_name = "@angular-devkit/build-webpack", deps = [ "//:root_modules/@types/node", "//:root_modules/rxjs", "//:root_modules/webpack", "//:root_modules/webpack-dev-server", + "//packages/angular_devkit/architect:architect_rjs", ], ) @@ -67,17 +65,15 @@ ts_project( "test/**/*", ], ), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/ngtools/webpack", - "//packages/angular_devkit/architect", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", - ], deps = [ ":build_webpack_rjs", "//:root_modules/@types/jasmine", + "//packages/angular_devkit/architect:architect_rjs", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/ngtools/webpack:webpack_rjs", ], ) diff --git a/packages/angular_devkit/schematics/BUILD.bazel b/packages/angular_devkit/schematics/BUILD.bazel index 3ae57303c3a7..3c75cad4c266 100644 --- a/packages/angular_devkit/schematics/BUILD.bazel +++ b/packages/angular_devkit/schematics/BUILD.bazel @@ -24,16 +24,14 @@ ts_project( data = [ "package.json", ], - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", # TODO: get rid of this for 6.0 - ], module_name = "@angular-devkit/schematics", deps = [ "//:root_modules/@types/node", "//:root_modules/jsonc-parser", "//:root_modules/magic-string", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", # TODO: get rid of this for 6.0 ], ) @@ -41,15 +39,13 @@ ts_project( name = "schematics_test_lib", testonly = True, srcs = glob(["src/**/*_spec.ts"]), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/angular_devkit/schematics/testing", - ], deps = [ - ":schematics_rjs", + ":schematics", "//:root_modules/@types/jasmine", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics/testing:testing_rjs", ], ) diff --git a/packages/angular_devkit/schematics/tasks/BUILD.bazel b/packages/angular_devkit/schematics/tasks/BUILD.bazel index 32498fd38bad..719558038aeb 100644 --- a/packages/angular_devkit/schematics/tasks/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/BUILD.bazel @@ -18,15 +18,13 @@ ts_project( ], ), data = ["package.json"], - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/angular_devkit/schematics", - ], module_name = "@angular-devkit/schematics/tasks", deps = [ "//:root_modules/@types/node", "//:root_modules/ora", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", ], ) diff --git a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel index a84516b4f6de..1680791ae90e 100644 --- a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel @@ -16,15 +16,13 @@ ts_project( "**/*_spec.ts", ], ), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", - ], module_name = "@angular-devkit/schematics/tasks/node", deps = [ "//:root_modules/@types/node", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", ], ) diff --git a/packages/angular_devkit/schematics/testing/BUILD.bazel b/packages/angular_devkit/schematics/testing/BUILD.bazel index cb1227cb11b3..815fa49935d0 100644 --- a/packages/angular_devkit/schematics/testing/BUILD.bazel +++ b/packages/angular_devkit/schematics/testing/BUILD.bazel @@ -14,14 +14,12 @@ ts_project( include = ["**/*.ts"], ), data = ["package.json"], - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks/node", - "//packages/angular_devkit/schematics/tools", - ], module_name = "@angular-devkit/schematics/testing", deps = [ "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks/node:node_rjs", + "//packages/angular_devkit/schematics/tools:tools_rjs", ], ) diff --git a/packages/angular_devkit/schematics/tools/BUILD.bazel b/packages/angular_devkit/schematics/tools/BUILD.bazel index 28491235a34b..2cad66f7adbc 100644 --- a/packages/angular_devkit/schematics/tools/BUILD.bazel +++ b/packages/angular_devkit/schematics/tools/BUILD.bazel @@ -19,18 +19,16 @@ ts_project( ], ), data = ["package.json"], - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", - "//packages/angular_devkit/schematics/tasks/node", - ], module_name = "@angular-devkit/schematics/tools", deps = [ "//:root_modules/@types/node", "//:root_modules/jsonc-parser", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", + "//packages/angular_devkit/schematics/tasks/node:node_rjs", ], ) @@ -43,18 +41,16 @@ ts_project( "test/**/*.ts", ], ), - interop_deps = [ - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//packages/angular_devkit/schematics", - "//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", - ], deps = [ ":tools_rjs", "//:root_modules/@types/jasmine", "//:root_modules/rxjs", + "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", + "//packages/angular_devkit/schematics/testing:testing_rjs", + "//tests/angular_devkit/schematics/tools/file-system-engine-host:file_system_engine_host_test_lib_rjs", ], ) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index 605c6092233c..55cc0dfd9fd0 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -41,11 +41,6 @@ ts_project( "schematic/files/**/*", ], ), - interop_deps = [ - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", - "//packages/angular_devkit/schematics/tools", - ], module_name = "@angular-devkit/schematics-cli", deps = [ "//:root_modules/@inquirer/prompts", @@ -56,6 +51,9 @@ ts_project( "//:root_modules/yargs-parser", "//packages/angular_devkit/core:core_rjs", "//packages/angular_devkit/core/node:node_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", + "//packages/angular_devkit/schematics/tools:tools_rjs", ], ) diff --git a/packages/ngtools/webpack/BUILD.bazel b/packages/ngtools/webpack/BUILD.bazel index 470fcec06919..79084af72181 100644 --- a/packages/ngtools/webpack/BUILD.bazel +++ b/packages/ngtools/webpack/BUILD.bazel @@ -46,14 +46,12 @@ ts_project( "src/**/*_spec_helpers.ts", ], ), - interop_deps = [ - "//packages/angular_devkit/core", - ], deps = [ ":webpack_rjs", "//:root_modules/@angular/compiler", "//:root_modules/@types/jasmine", "//:root_modules/typescript", + "//packages/angular_devkit/core:core_rjs", ], ) diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index 809695369968..e3e68c3061bf 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -78,10 +78,6 @@ ts_project( "node_modules/**", ], ), - interop_deps = [ - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", - ], module_name = "@schematics/angular", deps = [ "//:root_modules/@inquirer/prompts", @@ -89,6 +85,8 @@ ts_project( "//:root_modules/browserslist", "//:root_modules/jsonc-parser", "//packages/angular_devkit/core:core_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript:TypeScript_rjs", ], ) @@ -115,17 +113,15 @@ ts_project( "node_modules/**", ], ), - interop_deps = [ - "//packages/angular_devkit/schematics", - "//packages/angular_devkit/schematics/tasks", - "//packages/angular_devkit/schematics/testing", - ], deps = [ ":angular_rjs", "//:root_modules/@types/jasmine", "//:root_modules/jsonc-parser", "//packages/angular_devkit/core:core_rjs", "//packages/angular_devkit/core/node/testing:testing_rjs", + "//packages/angular_devkit/schematics:schematics_rjs", + "//packages/angular_devkit/schematics/tasks:tasks_rjs", + "//packages/angular_devkit/schematics/testing:testing_rjs", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript:TypeScript_rjs", ], ) diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel b/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel index b7736f06a4a8..7994ff7a530f 100644 --- a/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel +++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel @@ -21,11 +21,9 @@ ts_project( "**/*.js", ], ), - interop_deps = [ - "//packages/angular_devkit/schematics", - ], deps = [ "//:root_modules/@types/jasmine", "//:root_modules/@types/node", + "//packages/angular_devkit/schematics:schematics_rjs", ], ) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index dee0e6197edf..598c3c667ceb 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -7,13 +7,11 @@ load("@aspect_bazel_lib//lib:utils.bzl", "to_label") load("@build_bazel_rules_nodejs//:index.bzl", _js_library = "js_library", _pkg_npm = "pkg_npm") load("@npm//@angular/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") load("@npm//@angular/build-tooling/bazel:extract_js_module_output.bzl", "extract_js_module_output") -load("@npm//@bazel/concatjs:index.bzl", _ts_library = "ts_library") load("@rules_pkg//:pkg.bzl", "pkg_tar") load("//:constants.bzl", "RELEASE_ENGINES_NODE", "RELEASE_ENGINES_NPM", "RELEASE_ENGINES_YARN") load("//tools:link_package_json_to_tarballs.bzl", "link_package_json_to_tarballs") load("//tools:snapshot_repo_filter.bzl", "SNAPSHOT_REPO_JQ_FILTER") -_DEFAULT_TSCONFIG = "//:tsconfig-build.json" _DEFAULT_TSCONFIG_NG = "//:tsconfig-build-ng" _DEFAULT_TSCONFIG_TEST = "//:tsconfig-test.json" @@ -53,43 +51,6 @@ def _default_module_name(testonly): return None -def ts_library( - name, - tsconfig = None, - testonly = False, - deps = [], - devmode_module = None, - devmode_target = None, - **kwargs): - """Default values for ts_library""" - if testonly: - # Match the types[] in //packages:tsconfig-test.json - deps.append("@npm//@types/jasmine") - deps.append("@npm//@types/node") - if not tsconfig: - if testonly: - tsconfig = _DEFAULT_TSCONFIG_TEST - else: - tsconfig = _DEFAULT_TSCONFIG - - if not devmode_module: - devmode_module = "commonjs" - if not devmode_target: - devmode_target = "es2022" - - _ts_library( - name = name, - testonly = testonly, - deps = deps, - # @external_begin - tsconfig = tsconfig, - devmode_module = devmode_module, - devmode_target = devmode_target, - prodmode_target = "es2022", - # @external_end - **kwargs - ) - js_library = _js_library def pkg_npm(name, pkg_deps = [], use_prodmode_output = False, **kwargs): diff --git a/tools/interop.bzl b/tools/interop.bzl index 36795984621b..61bc929b0a85 100644 --- a/tools/interop.bzl +++ b/tools/interop.bzl @@ -97,7 +97,9 @@ ts_project_module = rule( }, ) -def ts_project(name, module_name = None, interop_deps = [], deps = [], tsconfig = None, testonly = False, **kwargs): +def ts_project(name, module_name = None, deps = [], tsconfig = None, testonly = False, **kwargs): + interop_deps = [] + # Pull in the `rules_nodejs` variants of dependencies we know are "hybrid". This # is necessary as we can't mix `npm/node_modules` from RNJS with the pnpm-style # symlink-dependent node modules. In addition, we need to extract `_rjs` interop @@ -139,7 +141,7 @@ def ts_project(name, module_name = None, interop_deps = [], deps = [], tsconfig dep = "%s_rjs" % name, # Forwarded dependencies for linker module mapping aspect. # RJS deps can also transitively pull in module mappings from their `interop_deps`. - deps = [] + interop_deps + deps, + deps = [] + ["%s_interop_deps" % name] + deps, module_name = module_name, ) From adf9359ad1646166bf808958cca56b730e15623c Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 9 Jan 2025 10:14:09 +0000 Subject: [PATCH 0244/2162] fix(@angular-devkit/core): handle Windows drive letter case insensitivity in path functions This update ensures that path-related functions in account for the case-insensitivity of drive letters on Windows systems. By addressing this inconsistency, the functionality becomes more robust and aligned with Windows filesystem behavior. Closes #27029 --- packages/angular_devkit/core/src/virtual-fs/path.ts | 2 +- packages/angular_devkit/core/src/virtual-fs/path_spec.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/angular_devkit/core/src/virtual-fs/path.ts b/packages/angular_devkit/core/src/virtual-fs/path.ts index 266e097ff791..8fd0a9fbc02a 100644 --- a/packages/angular_devkit/core/src/virtual-fs/path.ts +++ b/packages/angular_devkit/core/src/virtual-fs/path.ts @@ -233,7 +233,7 @@ export function noCacheNormalize(path: string): Path { // Match absolute windows path. const original = path; if (path.match(/^[A-Z]:[/\\]/i)) { - path = '\\' + path[0] + '\\' + path.slice(3); + path = '\\' + path[0].toUpperCase() + '\\' + path.slice(3); } // We convert Windows paths as well here. diff --git a/packages/angular_devkit/core/src/virtual-fs/path_spec.ts b/packages/angular_devkit/core/src/virtual-fs/path_spec.ts index a37d5796cf4c..4e416a1ff12e 100644 --- a/packages/angular_devkit/core/src/virtual-fs/path_spec.ts +++ b/packages/angular_devkit/core/src/virtual-fs/path_spec.ts @@ -73,7 +73,7 @@ describe('path', () => { expect(normalize('\\a\\b\\c')).toBe('/a/b/c'); expect(normalize('.\\a\\b\\c')).toBe('a/b/c'); expect(normalize('C:\\a\\b\\c')).toBe('/C/a/b/c'); - expect(normalize('c:\\a\\b\\c')).toBe('/c/a/b/c'); + expect(normalize('c:\\a\\b\\c')).toBe('/C/a/b/c'); expect(normalize('A:\\a\\b\\c')).toBe('/A/a/b/c'); expect(() => normalize('A:\\..\\..')).toThrow(new InvalidPathException('A:\\..\\..')); expect(normalize('\\.\\a\\b\\c')).toBe('/a/b/c'); @@ -131,6 +131,7 @@ describe('path', () => { ['/src/app/sub1/test1', '/src/app/sub2/test2', '../../sub2/test2'], ['/', '/a/b/c', 'a/b/c'], ['/a/b/c', '/d', '../../../d'], + ['E:\\abc', 'e:\\abc\\def', 'def'], ]; for (const [from, to, result] of tests) { @@ -161,8 +162,8 @@ describe('path', () => { }); it('asWindowsPath', () => { - expect(asWindowsPath(normalize('c:/'))).toBe('c:\\'); - expect(asWindowsPath(normalize('c:/b/'))).toBe('c:\\b'); - expect(asWindowsPath(normalize('c:/b/c'))).toBe('c:\\b\\c'); + expect(asWindowsPath(normalize('c:/'))).toBe('C:\\'); + expect(asWindowsPath(normalize('c:/b/'))).toBe('C:\\b'); + expect(asWindowsPath(normalize('c:/b/c'))).toBe('C:\\b\\c'); }); }); From 134f5fe6363644a0bdcfc65c900ec23f6df8b1ff Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 9 Jan 2025 09:51:08 +0000 Subject: [PATCH 0245/2162] fix(@angular/build): handle loaders correctly in SSR bundles for external packages This update ensures proper handling of loaders in SSR bundles when packages are marked as external dependencies. Closes #29235 --- .../tools/esbuild/application-code-bundle.ts | 57 +++++++++++-------- 1 file changed, 33 insertions(+), 24 deletions(-) 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 34d3d8aab915..ff54f980b100 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -83,24 +83,7 @@ export function createBrowserCodeBundleOptions( buildOptions.plugins?.push(...options.plugins); } - if (options.externalPackages) { - // Package files affected by a customized loader should not be implicitly marked as external - if ( - options.loaderExtensions || - options.plugins || - typeof options.externalPackages === 'object' - ) { - // Plugin must be added after custom plugins to ensure any added loader options are considered - buildOptions.plugins?.push( - createExternalPackagesPlugin( - options.externalPackages !== true ? options.externalPackages : undefined, - ), - ); - } else { - // Safe to use the packages external option directly - buildOptions.packages = 'external'; - } - } + appendOptionsForExternalPackages(options, buildOptions); return buildOptions; }; @@ -302,9 +285,7 @@ export function createServerMainCodeBundleOptions( buildOptions.plugins ??= []; - if (externalPackages) { - buildOptions.packages = 'external'; - } else { + if (!externalPackages) { buildOptions.plugins.push(createRxjsEsmResolutionPlugin()); } @@ -381,6 +362,8 @@ export function createServerMainCodeBundleOptions( buildOptions.plugins.push(...options.plugins); } + appendOptionsForExternalPackages(options, buildOptions); + return buildOptions; }; } @@ -442,9 +425,7 @@ export function createSsrEntryCodeBundleOptions( buildOptions.plugins ??= []; - if (externalPackages) { - buildOptions.packages = 'external'; - } else { + if (!externalPackages) { buildOptions.plugins.push(createRxjsEsmResolutionPlugin()); } @@ -516,6 +497,8 @@ export function createSsrEntryCodeBundleOptions( buildOptions.plugins.push(...options.plugins); } + appendOptionsForExternalPackages(options, buildOptions); + return buildOptions; }; } @@ -721,3 +704,29 @@ function entryFileToWorkspaceRelative(workspaceRoot: string, entryFile: string): .replace(/\\/g, '/') ); } + +function appendOptionsForExternalPackages( + options: NormalizedApplicationBuildOptions, + buildOptions: BuildOptions, +): void { + if (!options.externalPackages) { + return; + } + + buildOptions.plugins ??= []; + + // Package files affected by a customized loader should not be implicitly marked as external + if (options.loaderExtensions || options.plugins || typeof options.externalPackages === 'object') { + // Plugin must be added after custom plugins to ensure any added loader options are considered + buildOptions.plugins.push( + createExternalPackagesPlugin( + options.externalPackages !== true ? options.externalPackages : undefined, + ), + ); + + buildOptions.packages = undefined; + } else { + // Safe to use the packages external option directly + buildOptions.packages = 'external'; + } +} From ba51e72b5138735b42a4057ad60635b95d11381a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 8 Jan 2025 22:22:40 -0500 Subject: [PATCH 0246/2162] fix(@angular/build): use component updates for component style HMR The newly stable template HMR support has also been improved to support hot replacement of component stylesheets. While this is not as fast during a rebuild as external stylesheet based HMR, it does currently avoid some edge cases with the current implementation. Once these cases are resolved, the default may be reverted to the previous setup. If the previous behavior is preferred, the `NG_HMR_CSTYLES=1` environment variable can be used. --- packages/angular/build/src/builders/dev-server/vite-server.ts | 2 +- packages/angular/build/src/utils/environment-options.ts | 2 +- 2 files changed, 2 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 8521b9af6674..89df08e7404f 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -138,7 +138,7 @@ export async function* serveWithVite( process.setSourceMapsEnabled(true); } - // Enable to support link-based component style hot reloading (`NG_HMR_CSTYLES=0` can be used to disable selectively) + // Enable to support link-based component style hot reloading (`NG_HMR_CSTYLES=1` can be used to enable) browserOptions.externalRuntimeStyles = serverOptions.liveReload && serverOptions.hmr && useComponentStyleHmr; diff --git a/packages/angular/build/src/utils/environment-options.ts b/packages/angular/build/src/utils/environment-options.ts index 63abd82af46e..ea06fea2d09f 100644 --- a/packages/angular/build/src/utils/environment-options.ts +++ b/packages/angular/build/src/utils/environment-options.ts @@ -103,7 +103,7 @@ export const shouldOptimizeChunks = const hmrComponentStylesVariable = process.env['NG_HMR_CSTYLES']; export const useComponentStyleHmr = - !isPresent(hmrComponentStylesVariable) || !isDisabled(hmrComponentStylesVariable); + isPresent(hmrComponentStylesVariable) && isEnabled(hmrComponentStylesVariable); const hmrComponentTemplateVariable = process.env['NG_HMR_TEMPLATES']; export const useComponentTemplateHmr = From d79c373a96ab2e11dcb10c022a8aa1df5b478a4b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Jan 2025 16:05:20 +0000 Subject: [PATCH 0247/2162] build: update angular --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 42 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 +- package.json | 6 +- pnpm-lock.yaml | 665 ++------------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- yarn.lock | 781 ++---------------- 11 files changed, 214 insertions(+), 1372 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 640102094a2c..3fe69359b587 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=182854500 -pnpm-lock.yaml=1962865885 +package.json=-678390875 +pnpm-lock.yaml=1227558702 pnpm-workspace.yaml=1711114604 -yarn.lock=-531923388 +yarn.lock=-530061578 diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index f95a9d0ec326..9178d4101d1f 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + - uses: angular/dev-infra/github-actions/branch-manager@5b4b2a6258dece411626435f680d2818769f469a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3862f869ba3e..7a18c839408c 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Run module and package tests @@ -92,13 +92,13 @@ jobs: - run: choco install gzip if: ${{matrix.os == 'windows-latest'}} - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -114,13 +114,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -136,13 +136,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} @@ -154,13 +154,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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} @@ -188,11 +188,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - run: yarn 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 be194e388f0c..3dac4b9d0c59 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + - uses: angular/dev-infra/github-actions/commit-message-based-labels@5b4b2a6258dece411626435f680d2818769f469a 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + - uses: angular/dev-infra/github-actions/post-approval-changes@5b4b2a6258dece411626435f680d2818769f469a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 4e047efd5308..3276319276fd 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + - uses: angular/dev-infra/github-actions/feature-request@5b4b2a6258dece411626435f680d2818769f469a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 3a759750a73d..46c3af806cfb 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable # 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 3cb8c8d8ab2a..6e488a969f66 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Setup ESLint Caching uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: @@ -54,7 +54,7 @@ jobs: - name: Run Validation run: yarn admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/linting/licenses@5b4b2a6258dece411626435f680d2818769f469a - name: Check tooling setup run: yarn 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - 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@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -133,13 +133,13 @@ jobs: # TODO(devversion): Remove when Aspect lib issue is fixed. - run: choco install gzip - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild" @@ -155,13 +155,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=3 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -178,12 +178,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@5b4b2a6258dece411626435f680d2818769f469a - name: Install node modules run: yarn install --immutable - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/setup@5b4b2a6258dece411626435f680d2818769f469a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + uses: angular/dev-infra/github-actions/bazel/configure-remote@5b4b2a6258dece411626435f680d2818769f469a - name: Run CLI E2E tests run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=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 bd32640408c4..037c7b095af5 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@ampproject/remapping": "2.3.0", "@angular/animations": "19.1.0-rc.0", - "@angular/bazel": "https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55", - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832", + "@angular/bazel": "https://github.com/angular/bazel-builds.git#205769f51cbfcd6603dff959233ffb16431fbe04", + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#4b0419ce0fea35aa1ad3e92a882f93ba41199ace", "@angular/cdk": "19.1.0-rc.0", "@angular/common": "19.1.0-rc.0", "@angular/compiler": "19.1.0-rc.0", @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-rc.0", "@angular/localize": "19.1.0-rc.0", "@angular/material": "19.1.0-rc.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0", "@angular/platform-browser": "19.1.0-rc.0", "@angular/platform-browser-dynamic": "19.1.0-rc.0", "@angular/platform-server": "19.1.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63ef88e8c458..7f163b651ec2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@angular/bazel': - specifier: https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55 - version: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3) + specifier: https://github.com/angular/bazel-builds.git#205769f51cbfcd6603dff959233ffb16431fbe04 + version: github.com/angular/bazel-builds/205769f51cbfcd6603dff959233ffb16431fbe04(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3) '@angular/build-tooling': - specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832 - version: github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) + specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#4b0419ce0fea35aa1ad3e92a882f93ba41199ace + version: github.com/angular/dev-infra-private-build-tooling-builds/4b0419ce0fea35aa1ad3e92a882f93ba41199ace(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(ng-packagr@19.1.0-next.3)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0) '@angular/cdk': specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(rxjs@7.8.1) @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b - version: github.com/angular/dev-infra-private-ng-dev-builds/8214e3156e6c9eb06089f7c50bec735a2cb73c3b + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0 + version: github.com/angular/dev-infra-private-ng-dev-builds/5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0 '@angular/platform-browser': specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) @@ -530,18 +530,18 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true - /@angular-devkit/architect@0.1901.0-next.2(chokidar@4.0.3): - resolution: {integrity: sha512-LJH2kZ6zGgWqCg4l42n/x+1jxUtcgJFrhBR11jXtkQperDvxRmhWpCEbjx0e9frGJbDe3vBlPdPy2PMYimwAvQ==} + /@angular-devkit/architect@0.1901.0-rc.0(chokidar@4.0.3): + resolution: {integrity: sha512-BDZV/o1afvbUu8dqr77jjTovcC03DfQB/LGoSN6BkW2vu0jwFCHPXdc/D588p0Bw8cdlMJghkyQhqZ7SHPRivg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 19.1.0-next.2(chokidar@4.0.3) + '@angular-devkit/core': 19.1.0-rc.0(chokidar@4.0.3) rxjs: 7.8.1 transitivePeerDependencies: - chokidar dev: true - /@angular-devkit/core@19.1.0-next.2(chokidar@4.0.3): - resolution: {integrity: sha512-e02oakLxYszcpltPhZDuQ2AKGWXblJLU2Ua7xD57BtjQtZt5c10bvePOvU4M5KnD5KqZUzjYQZtC6nqKOVvkMA==} + /@angular-devkit/core@19.1.0-rc.0(chokidar@4.0.3): + resolution: {integrity: sha512-0kGErE+1jgEU2a6Q2JCg0XHeI+3PW48ZkINWMgD249TyRO7vC/VChSBMTi3CxuEatxp+1t9MQgMehZSuN4JL9w==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -578,8 +578,8 @@ packages: - zone.js dev: true - /@angular/build@19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3): - resolution: {integrity: sha512-HDyPsyyqbMpUQXA3VBcfFcGu6sj0vxKL/DEKxnxIgbC9dZ/01yNDMTPIszpGg16fRPt10xEefx3hUFMMgYzWJQ==} + /@angular/build@19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(ng-packagr@19.1.0-next.3)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3): + resolution: {integrity: sha512-ALl+MVMYBF+E7HyAQ+1MtE6sNIOAX0o2Sfs0wdIQfM2unRl6jPsz/Ker4BjnNQIK4wRCcstyzBv5mZBDulfFIQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^19.0.0 || ^19.1.0-next.0 @@ -587,8 +587,9 @@ packages: '@angular/localize': ^19.0.0 || ^19.1.0-next.0 '@angular/platform-server': ^19.0.0 || ^19.1.0-next.0 '@angular/service-worker': ^19.0.0 || ^19.1.0-next.0 - '@angular/ssr': ^19.1.0-next.2 + '@angular/ssr': ^19.1.0-rc.0 less: ^4.2.0 + ng-packagr: ^19.0.0 || ^19.1.0-next.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 typescript: 5.7.3 @@ -603,13 +604,15 @@ packages: optional: true less: optional: true + ng-packagr: + optional: true postcss: optional: true tailwindcss: optional: true dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1901.0-next.2(chokidar@4.0.3) + '@angular-devkit/architect': 0.1901.0-rc.0(chokidar@4.0.3) '@angular/compiler': 19.1.0-rc.0(@angular/core@19.1.0-rc.0) '@angular/compiler-cli': 19.1.0-rc.0(@angular/compiler@19.1.0-rc.0)(typescript@5.7.3) '@angular/localize': 19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0) @@ -619,30 +622,31 @@ packages: '@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/core@7.26.0) - '@inquirer/confirm': 5.1.0(@types/node@18.19.70) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.3) + '@inquirer/confirm': 5.1.1(@types/node@18.19.70) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.7) beasties: 0.2.0 browserslist: 4.24.3 - esbuild: 0.24.0 - fast-glob: 3.3.2 + esbuild: 0.24.2 + fast-glob: 3.3.3 https-proxy-agent: 7.0.6(supports-color@10.0.0) istanbul-lib-instrument: 6.0.3 less: 4.2.1 listr2: 8.2.5 - magic-string: 0.30.15 + magic-string: 0.30.17 mrmime: 2.0.0 + ng-packagr: 19.1.0-next.3(@angular/compiler-cli@19.1.0-rc.0)(tslib@2.8.1)(typescript@5.7.3) parse5-html-rewriting-stream: 7.0.0 picomatch: 4.0.2 piscina: 4.8.0 postcss: 8.4.49 - rollup: 4.28.1 - sass: 1.83.0 + rollup: 4.30.1 + sass: 1.83.1 semver: 7.6.3 typescript: 5.7.3 - vite: 6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) + vite: 6.0.7(@types/node@18.19.70)(less@4.2.1)(sass@1.83.1)(terser@5.37.0) watchpack: 2.4.2 optionalDependencies: - lmdb: 3.2.0 + lmdb: 3.2.2 transitivePeerDependencies: - '@types/node' - chokidar @@ -2129,14 +2133,6 @@ packages: engines: {node: '>=14.17.0'} dev: true - /@esbuild/aix-ppc64@0.24.0: - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - dev: true - optional: true - /@esbuild/aix-ppc64@0.24.2: resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} @@ -2145,14 +2141,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.24.0: - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - dev: true - optional: true - /@esbuild/android-arm64@0.24.2: resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} @@ -2161,14 +2149,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.24.0: - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - dev: true - optional: true - /@esbuild/android-arm@0.24.2: resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} @@ -2177,14 +2157,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.24.0: - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - dev: true - optional: true - /@esbuild/android-x64@0.24.2: resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} @@ -2193,14 +2165,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.24.0: - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - dev: true - optional: true - /@esbuild/darwin-arm64@0.24.2: resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} @@ -2209,14 +2173,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.24.0: - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - dev: true - optional: true - /@esbuild/darwin-x64@0.24.2: resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} @@ -2225,14 +2181,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.24.0: - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - dev: true - optional: true - /@esbuild/freebsd-arm64@0.24.2: resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} @@ -2241,14 +2189,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.24.0: - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - dev: true - optional: true - /@esbuild/freebsd-x64@0.24.2: resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} @@ -2257,14 +2197,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.24.0: - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-arm64@0.24.2: resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} @@ -2273,14 +2205,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.24.0: - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@esbuild/linux-arm@0.24.2: resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} @@ -2289,14 +2213,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.24.0: - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - dev: true - optional: true - /@esbuild/linux-ia32@0.24.2: resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} @@ -2305,14 +2221,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.24.0: - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-loong64@0.24.2: resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} @@ -2321,14 +2229,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.24.0: - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - dev: true - optional: true - /@esbuild/linux-mips64el@0.24.2: resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} @@ -2337,14 +2237,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.24.0: - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-ppc64@0.24.2: resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} @@ -2353,14 +2245,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.24.0: - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-riscv64@0.24.2: resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} @@ -2369,14 +2253,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.24.0: - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - dev: true - optional: true - /@esbuild/linux-s390x@0.24.2: resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} @@ -2385,14 +2261,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.24.0: - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@esbuild/linux-x64@0.24.2: resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -2409,14 +2277,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.24.0: - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - dev: true - optional: true - /@esbuild/netbsd-x64@0.24.2: resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} @@ -2425,14 +2285,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-arm64@0.24.0: - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - dev: true - optional: true - /@esbuild/openbsd-arm64@0.24.2: resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} @@ -2441,14 +2293,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.24.0: - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - dev: true - optional: true - /@esbuild/openbsd-x64@0.24.2: resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} @@ -2457,14 +2301,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.24.0: - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - dev: true - optional: true - /@esbuild/sunos-x64@0.24.2: resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} @@ -2473,14 +2309,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.24.0: - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - dev: true - optional: true - /@esbuild/win32-arm64@0.24.2: resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} @@ -2489,14 +2317,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.24.0: - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - dev: true - optional: true - /@esbuild/win32-ia32@0.24.2: resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} @@ -2505,14 +2325,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.24.0: - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - dev: true - optional: true - /@esbuild/win32-x64@0.24.2: resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -2694,17 +2506,6 @@ packages: yoctocolors-cjs: 2.1.2 dev: true - /@inquirer/confirm@5.1.0(@types/node@18.19.70): - resolution: {integrity: sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - dependencies: - '@inquirer/core': 10.1.2(@types/node@18.19.70) - '@inquirer/type': 3.0.2(@types/node@18.19.70) - '@types/node': 18.19.70 - dev: true - /@inquirer/confirm@5.1.1(@types/node@18.19.70): resolution: {integrity: sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==} engines: {node: '>=18'} @@ -2987,13 +2788,6 @@ packages: '@inquirer/type': 1.5.5 dev: true - /@lmdb/lmdb-darwin-arm64@3.2.0: - resolution: {integrity: sha512-Ca5N6DGDlH/lIycMj2U3FtokNPdUmGyL+htto3G+gexoXYaDE9cbojVgwXd3/Zih9Friqh7l5qZk+LZEVDwJvQ==} - cpu: [arm64] - os: [darwin] - dev: true - optional: true - /@lmdb/lmdb-darwin-arm64@3.2.2: resolution: {integrity: sha512-WBSJT9Z7DTol5viq+DZD2TapeWOw7mlwXxiSBHgAzqVwsaVb0h/ekMD9iu/jDD8MUA20tO9N0WEdnT06fsUp+g==} cpu: [arm64] @@ -3001,13 +2795,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-darwin-x64@3.2.0: - resolution: {integrity: sha512-s/MXLuRXxJjQpg0aM/yN3FJh34tqEPo6Zg+FJvc9+gUNpzXzZwBB9MOTYA05WVrvxwtIKxMg7ocLjAH1LQUT3A==} - cpu: [x64] - os: [darwin] - dev: true - optional: true - /@lmdb/lmdb-darwin-x64@3.2.2: resolution: {integrity: sha512-4S13kUtR7c/j/MzkTIBJCXv52hQ41LG2ukeaqw4Eng9K0pNKLFjo1sDSz96/yKhwykxrWDb13ddJ/ZqD3rAhUA==} cpu: [x64] @@ -3015,13 +2802,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-linux-arm64@3.2.0: - resolution: {integrity: sha512-XRkaZok4AkzMXKLfsdJYVBXYJ/6idDpuLIPGiVjelxKLbZIKB7F+Xp2BDfeelAPdjRbW/qhzF7FNA0u1blz/Og==} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@lmdb/lmdb-linux-arm64@3.2.2: resolution: {integrity: sha512-4hdgZtWI1idQlWRp+eleWXD9KLvObgboRaVoBj2POdPEYvsKANllvMW0El8tEQwtw74yB9NT6P8ENBB5UJf5+g==} cpu: [arm64] @@ -3029,13 +2809,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-linux-arm@3.2.0: - resolution: {integrity: sha512-e9pljI8rZk1UAaDdi7sGiY0zkqsNAS3a4llOuk2UslAH4UP9vGZfjfCR5D+HKPUPbSEk28adOiNmIUT4N2lTBw==} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@lmdb/lmdb-linux-arm@3.2.2: resolution: {integrity: sha512-uW31JmfuPAaLUYW7NsEU8gzwgDAzpGPwjvkxnKlcWd8iDutoPKDJi8Wk9lFmPEZRxVSB0j1/wDQ7N2qliR9UFA==} cpu: [arm] @@ -3043,13 +2816,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-linux-x64@3.2.0: - resolution: {integrity: sha512-c8HMb044qzMT/wvk4HzBesRv3wQNeFkUFz6laH3FKVs0+ztM7snuT3izPWdeYhgCLkAiIqshqlcbvzQfPDeg2Q==} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@lmdb/lmdb-linux-x64@3.2.2: resolution: {integrity: sha512-A0zjf4a2vM4B4GAx78ncuOTZ8Ka1DbTaG1Axf1e00Sa7f5coqlWiLg1PX7Gxvyibc2YqtqB+8tg1KKrE8guZVw==} cpu: [x64] @@ -3057,13 +2823,6 @@ packages: dev: true optional: true - /@lmdb/lmdb-win32-x64@3.2.0: - resolution: {integrity: sha512-xcrdSOPtpZ4ScWJM2x4g+eWCOctINOcaEWGSvZbmXPFD69SAFywyhqNsB3snAY3assYV0B52PWmiAwXWfijd+g==} - cpu: [x64] - os: [win32] - dev: true - optional: true - /@lmdb/lmdb-win32-x64@3.2.2: resolution: {integrity: sha512-Y0qoSCAja+xZE7QQ0LCHoYAuyI1n9ZqukQJa8lv9X3yCvWahFF7OYHAgVH1ejp43XWstj3U89/PAAzcowgF/uQ==} cpu: [x64] @@ -3435,7 +3194,7 @@ packages: '@octokit/graphql': 8.1.2 '@octokit/request': 9.1.4 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 dev: true @@ -3444,7 +3203,7 @@ packages: resolution: {integrity: sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 dev: true @@ -3453,22 +3212,22 @@ packages: engines: {node: '>= 18'} dependencies: '@octokit/request': 9.1.4 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 dev: true - /@octokit/openapi-types@22.2.0: - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + /@octokit/openapi-types@23.0.1: + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} dev: true - /@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.3): - resolution: {integrity: sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==} + /@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3): + resolution: {integrity: sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' dependencies: '@octokit/core': 6.1.3 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 dev: true /@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.3): @@ -3480,21 +3239,21 @@ packages: '@octokit/core': 6.1.3 dev: true - /@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.3): - resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} + /@octokit/plugin-rest-endpoint-methods@13.3.0(@octokit/core@6.1.3): + resolution: {integrity: sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' dependencies: '@octokit/core': 6.1.3 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 dev: true /@octokit/request-error@6.1.6: resolution: {integrity: sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 dev: true /@octokit/request@9.1.4: @@ -3503,25 +3262,25 @@ packages: dependencies: '@octokit/endpoint': 10.1.2 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.6.2 + '@octokit/types': 13.7.0 fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 dev: true - /@octokit/rest@21.0.2: - resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==} + /@octokit/rest@21.1.0: + resolution: {integrity: sha512-93iLxcKDJboUpmnUyeJ6cRIi7z7cqTZT1K7kRK4LobGxwTwpsa+2tQQbRQNGy7IFDEAmrtkf4F4wBj3D5rVlJQ==} engines: {node: '>= 18'} dependencies: '@octokit/core': 6.1.3 - '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.3) + '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.3) - '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.3) + '@octokit/plugin-rest-endpoint-methods': 13.3.0(@octokit/core@6.1.3) dev: true - /@octokit/types@13.6.2: - resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + /@octokit/types@13.7.0: + resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} dependencies: - '@octokit/openapi-types': 22.2.0 + '@octokit/openapi-types': 23.0.1 dev: true /@opentelemetry/api@1.9.0: @@ -3851,13 +3610,6 @@ packages: rollup: 4.30.1 dev: true - /@rollup/rollup-android-arm-eabi@4.28.1: - resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} - cpu: [arm] - os: [android] - dev: true - optional: true - /@rollup/rollup-android-arm-eabi@4.30.1: resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} cpu: [arm] @@ -3865,13 +3617,6 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm64@4.28.1: - resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} - cpu: [arm64] - os: [android] - dev: true - optional: true - /@rollup/rollup-android-arm64@4.30.1: resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} cpu: [arm64] @@ -3879,13 +3624,6 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.28.1: - resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} - cpu: [arm64] - os: [darwin] - dev: true - optional: true - /@rollup/rollup-darwin-arm64@4.30.1: resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} cpu: [arm64] @@ -3893,13 +3631,6 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-x64@4.28.1: - resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} - cpu: [x64] - os: [darwin] - dev: true - optional: true - /@rollup/rollup-darwin-x64@4.30.1: resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} cpu: [x64] @@ -3907,13 +3638,6 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-arm64@4.28.1: - resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} - cpu: [arm64] - os: [freebsd] - dev: true - optional: true - /@rollup/rollup-freebsd-arm64@4.30.1: resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} cpu: [arm64] @@ -3921,13 +3645,6 @@ packages: dev: true optional: true - /@rollup/rollup-freebsd-x64@4.28.1: - resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} - cpu: [x64] - os: [freebsd] - dev: true - optional: true - /@rollup/rollup-freebsd-x64@4.30.1: resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} cpu: [x64] @@ -3935,13 +3652,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.28.1: - resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.30.1: resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} cpu: [arm] @@ -3949,13 +3659,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.28.1: - resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} - cpu: [arm] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm-musleabihf@4.30.1: resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} cpu: [arm] @@ -3963,13 +3666,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.28.1: - resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.30.1: resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} cpu: [arm64] @@ -3977,13 +3673,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.28.1: - resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} - cpu: [arm64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.30.1: resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} cpu: [arm64] @@ -3991,13 +3680,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-loongarch64-gnu@4.28.1: - resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} - cpu: [loong64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-loongarch64-gnu@4.30.1: resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} cpu: [loong64] @@ -4005,13 +3687,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.28.1: - resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} - cpu: [ppc64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.30.1: resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} cpu: [ppc64] @@ -4019,13 +3694,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.28.1: - resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} - cpu: [riscv64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.30.1: resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} cpu: [riscv64] @@ -4033,13 +3701,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.28.1: - resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} - cpu: [s390x] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-s390x-gnu@4.30.1: resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} cpu: [s390x] @@ -4047,13 +3708,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.28.1: - resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.30.1: resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} cpu: [x64] @@ -4061,13 +3715,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.28.1: - resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} - cpu: [x64] - os: [linux] - dev: true - optional: true - /@rollup/rollup-linux-x64-musl@4.30.1: resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} cpu: [x64] @@ -4075,13 +3722,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.28.1: - resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} - cpu: [arm64] - os: [win32] - dev: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.30.1: resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} cpu: [arm64] @@ -4089,13 +3729,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.28.1: - resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} - cpu: [ia32] - os: [win32] - dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.30.1: resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} cpu: [ia32] @@ -4103,13 +3736,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.28.1: - resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} - cpu: [x64] - os: [win32] - dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.30.1: resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} cpu: [x64] @@ -5224,15 +4850,6 @@ packages: semver: 7.6.3 dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.3): - resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} - engines: {node: '>=14.21.3'} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - dependencies: - vite: 6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0) - dev: true - /@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.7): resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} engines: {node: '>=14.21.3'} @@ -7710,37 +7327,6 @@ packages: hasBin: true dev: true - /esbuild@0.24.0: - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} - engines: {node: '>=18'} - hasBin: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.0 - '@esbuild/android-arm': 0.24.0 - '@esbuild/android-arm64': 0.24.0 - '@esbuild/android-x64': 0.24.0 - '@esbuild/darwin-arm64': 0.24.0 - '@esbuild/darwin-x64': 0.24.0 - '@esbuild/freebsd-arm64': 0.24.0 - '@esbuild/freebsd-x64': 0.24.0 - '@esbuild/linux-arm': 0.24.0 - '@esbuild/linux-arm64': 0.24.0 - '@esbuild/linux-ia32': 0.24.0 - '@esbuild/linux-loong64': 0.24.0 - '@esbuild/linux-mips64el': 0.24.0 - '@esbuild/linux-ppc64': 0.24.0 - '@esbuild/linux-riscv64': 0.24.0 - '@esbuild/linux-s390x': 0.24.0 - '@esbuild/linux-x64': 0.24.0 - '@esbuild/netbsd-x64': 0.24.0 - '@esbuild/openbsd-arm64': 0.24.0 - '@esbuild/openbsd-x64': 0.24.0 - '@esbuild/sunos-x64': 0.24.0 - '@esbuild/win32-arm64': 0.24.0 - '@esbuild/win32-ia32': 0.24.0 - '@esbuild/win32-x64': 0.24.0 - dev: true - /esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} @@ -8175,17 +7761,6 @@ packages: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} dev: true - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: true - /fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -10376,25 +9951,6 @@ packages: wrap-ansi: 9.0.0 dev: true - /lmdb@3.2.0: - resolution: {integrity: sha512-cDeZAM4mXOwN1IdH93a91qXppn4jXV4NHphg53bqQDRFjJnpYZTgGcjrqpsmm209DtXTvmKMcYJd+XrHybwFZg==} - hasBin: true - dependencies: - msgpackr: 1.11.2 - node-addon-api: 6.1.0 - node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.5.3 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.2.0 - '@lmdb/lmdb-darwin-x64': 3.2.0 - '@lmdb/lmdb-linux-arm': 3.2.0 - '@lmdb/lmdb-linux-arm64': 3.2.0 - '@lmdb/lmdb-linux-x64': 3.2.0 - '@lmdb/lmdb-win32-x64': 3.2.0 - dev: true - optional: true - /lmdb@3.2.2: resolution: {integrity: sha512-LriG93la4PbmPMwI7Hbv8W+0ncLK7549w4sbZSi4QGDjnnxnmNMgxUkaQTEMzH8TpwsfFvgEjpLX7V8B/I9e3g==} hasBin: true @@ -10599,12 +10155,6 @@ packages: engines: {node: '>=16.14'} dev: true - /magic-string@0.30.15: - resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - /magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} dependencies: @@ -12695,35 +12245,6 @@ packages: source-map-resolve: 0.6.0 dev: true - /rollup@4.28.1: - resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.28.1 - '@rollup/rollup-android-arm64': 4.28.1 - '@rollup/rollup-darwin-arm64': 4.28.1 - '@rollup/rollup-darwin-x64': 4.28.1 - '@rollup/rollup-freebsd-arm64': 4.28.1 - '@rollup/rollup-freebsd-x64': 4.28.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 - '@rollup/rollup-linux-arm-musleabihf': 4.28.1 - '@rollup/rollup-linux-arm64-gnu': 4.28.1 - '@rollup/rollup-linux-arm64-musl': 4.28.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 - '@rollup/rollup-linux-riscv64-gnu': 4.28.1 - '@rollup/rollup-linux-s390x-gnu': 4.28.1 - '@rollup/rollup-linux-x64-gnu': 4.28.1 - '@rollup/rollup-linux-x64-musl': 4.28.1 - '@rollup/rollup-win32-arm64-msvc': 4.28.1 - '@rollup/rollup-win32-ia32-msvc': 4.28.1 - '@rollup/rollup-win32-x64-msvc': 4.28.1 - fsevents: 2.3.3 - dev: true - /rollup@4.30.1: resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -12845,18 +12366,6 @@ packages: webpack: 5.97.1(esbuild@0.24.2) dev: true - /sass@1.83.0: - resolution: {integrity: sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 4.0.3 - immutable: 5.0.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.0 - dev: true - /sass@1.83.1: resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} engines: {node: '>=14.0.0'} @@ -14510,57 +14019,6 @@ packages: extsprintf: 1.4.1 dev: true - /vite@6.0.3(@types/node@18.19.70)(less@4.2.1)(sass@1.83.0)(terser@5.37.0): - resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - dependencies: - '@types/node': 18.19.70 - esbuild: 0.24.2 - less: 4.2.1 - postcss: 8.4.49 - rollup: 4.30.1 - sass: 1.83.0 - terser: 5.37.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vite@6.0.7(@types/node@18.19.70)(less@4.2.1)(sass@1.83.1)(terser@5.37.0): resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -15202,15 +14660,15 @@ packages: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} dev: true - github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3): - resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/169e71f64fa706648c60d77abb8d4cab1ca22f55} - id: github.com/angular/bazel-builds/169e71f64fa706648c60d77abb8d4cab1ca22f55 + github.com/angular/bazel-builds/205769f51cbfcd6603dff959233ffb16431fbe04(@angular/compiler-cli@19.1.0-rc.0)(@bazel/concatjs@5.8.1)(@bazel/worker@5.8.1)(@rollup/plugin-commonjs@28.0.2)(@rollup/plugin-node-resolve@13.3.0)(@types/node@18.19.70)(rollup-plugin-sourcemaps@0.6.3)(rollup@4.30.1)(terser@5.37.0)(typescript@5.7.3): + resolution: {tarball: https://codeload.github.com/angular/bazel-builds/tar.gz/205769f51cbfcd6603dff959233ffb16431fbe04} + id: github.com/angular/bazel-builds/205769f51cbfcd6603dff959233ffb16431fbe04 name: '@angular/bazel' version: 19.2.0-next.0 engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': 19.2.0-next.0+sha-e689aae + '@angular/compiler-cli': 19.2.0-next.0+sha-0621482 '@bazel/concatjs': ^5.3.0 '@bazel/worker': ^5.3.0 '@rollup/plugin-commonjs': ^28.0.0 @@ -15239,14 +14697,14 @@ packages: - '@types/node' dev: true - github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/35cd77732ab88b0280d4fb1187728e4c8533c832} - id: github.com/angular/dev-infra-private-build-tooling-builds/35cd77732ab88b0280d4fb1187728e4c8533c832 + github.com/angular/dev-infra-private-build-tooling-builds/4b0419ce0fea35aa1ad3e92a882f93ba41199ace(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(chokidar@4.0.3)(debug@4.4.0)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.1)(ng-packagr@19.1.0-next.3)(postcss@8.4.49)(rxjs@7.8.1)(terser@5.37.0)(zone.js@0.15.0): + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/4b0419ce0fea35aa1ad3e92a882f93ba41199ace} + id: github.com/angular/dev-infra-private-build-tooling-builds/4b0419ce0fea35aa1ad3e92a882f93ba41199ace name: '@angular/build-tooling' - version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + version: 0.0.0-5b4b2a6258dece411626435f680d2818769f469a dependencies: '@angular/benchpress': 0.3.0(rxjs@7.8.1)(zone.js@0.15.0) - '@angular/build': 19.1.0-next.2(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3) + '@angular/build': 19.1.0-rc.0(@angular/compiler-cli@19.1.0-rc.0)(@angular/compiler@19.1.0-rc.0)(@angular/localize@19.1.0-rc.0)(@angular/platform-server@19.1.0-rc.0)(@angular/service-worker@19.1.0-rc.0)(@types/node@18.19.70)(chokidar@4.0.3)(less@4.2.1)(ng-packagr@19.1.0-next.3)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3) '@babel/core': 7.26.0 '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) '@bazel/buildifier': 6.3.3 @@ -15297,6 +14755,7 @@ packages: - karma-sourcemap-loader - less - lightningcss + - ng-packagr - postcss - rxjs - sass-embedded @@ -15311,14 +14770,14 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/8214e3156e6c9eb06089f7c50bec735a2cb73c3b: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8214e3156e6c9eb06089f7c50bec735a2cb73c3b} + github.com/angular/dev-infra-private-ng-dev-builds/5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0} name: '@angular/ng-dev' - version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c + version: 0.0.0-5b4b2a6258dece411626435f680d2818769f469a hasBin: true dependencies: '@google-cloud/spanner': 7.17.1(supports-color@10.0.0) - '@octokit/rest': 21.0.2 + '@octokit/rest': 21.1.0 '@types/semver': 7.5.8 '@types/supports-color': 8.1.3 '@yarnpkg/lockfile': 1.1.0 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index c2a0441891e0..74a8e90a4f71 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#4c103ca52a38ff728a0ab1c5f9578f70e83643d6", - "@angular/cdk": "github:angular/cdk-builds#5ba6ad089f2b28e71013d357acc41bf91421dd43", - "@angular/common": "github:angular/common-builds#3b597d6b01a9d867223e4e48acd5a2eb52d1862c", - "@angular/compiler": "github:angular/compiler-builds#1a3c02c4b9ade87bc7d89ba19dad6532570402b0", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#dce1169334901520116d091267428f21d18a6d12", - "@angular/core": "github:angular/core-builds#f343af04c17a9213bed8cea4bb18e3a1f94141cb", - "@angular/forms": "github:angular/forms-builds#6c50dd915e48100439ee6ca60e20dcb44f41377c", - "@angular/language-service": "github:angular/language-service-builds#f6bf914f3641748556c9dff229ebf54cc521499c", - "@angular/localize": "github:angular/localize-builds#a5031b5263ad5ab76e8a439405b2fe84e68d3659", - "@angular/material": "github:angular/material-builds#95804188fe01f8df9911764f3e692a0bba4dd75c", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a86bb7b8cfc2ffe4b1eb4ca4113799b0aca697b8", - "@angular/platform-browser": "github:angular/platform-browser-builds#d887b36fc98633c76c414c6a8a88ef032d89ee99", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b760ddf810b5e75500d71ba0852b5b60e732506c", - "@angular/platform-server": "github:angular/platform-server-builds#49db5ed6df6f325f47bc6a1891131e120c1af3c9", - "@angular/router": "github:angular/router-builds#eb1b93897c195e93a5e73fb7402b575b00d9f4f1", - "@angular/service-worker": "github:angular/service-worker-builds#14960de212e5ee468bcee4320b6f12116fdc7ab9" + "@angular/animations": "github:angular/animations-builds#389da2ba659735806ddac2d2ce3dd3656a662e86", + "@angular/cdk": "github:angular/cdk-builds#a07cb838fb16088c8e37f6247a91ac8038edd5fd", + "@angular/common": "github:angular/common-builds#4c7312c17712ca5a9f0c225155c2b3d05d023f13", + "@angular/compiler": "github:angular/compiler-builds#4772cc2a56a6a861073809c8778663ccdb3b86c7", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#23a096009f714bac4d4b6f829d9bd9b0022a1d8b", + "@angular/core": "github:angular/core-builds#2c0678842857bb25fac4bceef0c1f751788d20f4", + "@angular/forms": "github:angular/forms-builds#5f805c5c092b6bdac833dc23cf35a4d6b68ced93", + "@angular/language-service": "github:angular/language-service-builds#19ebc8a25909c2ab4a0ac7aafd559a972894bc99", + "@angular/localize": "github:angular/localize-builds#9afc6524e3bd55ee90f7e59338e561088d5df843", + "@angular/material": "github:angular/material-builds#1aa8d4ba2569021390e883f398ca7ea0f6630c2e", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#79ee5bc12374cf240cc0595a7ada6686a6b94420", + "@angular/platform-browser": "github:angular/platform-browser-builds#fc153aa7759cd36030d1005522f3651ce2cf4625", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#825cec26e92b8f8786637ddde864fa8970e5be25", + "@angular/platform-server": "github:angular/platform-server-builds#4d26a141349409e0caba1d9cd1af4c9cc0d22fbc", + "@angular/router": "github:angular/router-builds#60fbfe86f51486ae4b9bd2972ffd7245261f59b0", + "@angular/service-worker": "github:angular/service-worker-builds#d99b63efd2e80a71fb70259ed052ed29c54f2761" } } diff --git a/yarn.lock b/yarn.lock index 6b1949ce61e0..2a180353afa2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,24 +15,24 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.1901.0-next.2": - version: 0.1901.0-next.2 - resolution: "@angular-devkit/architect@npm:0.1901.0-next.2" +"@angular-devkit/architect@npm:0.1901.0-rc.0": + version: 0.1901.0-rc.0 + resolution: "@angular-devkit/architect@npm:0.1901.0-rc.0" dependencies: - "@angular-devkit/core": "npm:19.1.0-next.2" + "@angular-devkit/core": "npm:19.1.0-rc.0" rxjs: "npm:7.8.1" dependenciesMeta: esbuild: built: true puppeteer: built: true - checksum: 10c0/c1b80a98aa65ec0d24f85a3d066d25b64f2489a4adef4c96c3116ca252e92d2c6a1cf6ce348124a6a2cea200e882d78a375aa285bd7cb6c88c805ef5c3f933a2 + checksum: 10c0/784f393b7a435e317f278156a5faf389c97f0bb2cb4f16d818509f7f954397fd5fb407c5a26ac2df0aa6b6b1710554b28a1e73175621034064a92227337f68b5 languageName: node linkType: hard -"@angular-devkit/core@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular-devkit/core@npm:19.1.0-next.2" +"@angular-devkit/core@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular-devkit/core@npm:19.1.0-rc.0" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -50,7 +50,7 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10c0/71c53b72eeec570cf45a0909587ccdfd54874435bf8d17ce0260aa2a45529e8bd47feb64db1664e8accbec15baa94e10568ca434e24b700ed8099bbefd10d9ce + checksum: 10c0/c8f35b16a2a0ef5729d99eec8202b04883fd083a804e72f949dee68673e5e4b75ccebdd5465e37b0ee6442c4105e2683770bda4c3836373f74f1035f688889f6 languageName: node linkType: hard @@ -65,15 +65,15 @@ __metadata: languageName: node linkType: hard -"@angular/bazel@https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55": - version: 19.2.0-next.0+sha-e689aae - resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=169e71f64fa706648c60d77abb8d4cab1ca22f55" +"@angular/bazel@https://github.com/angular/bazel-builds.git#205769f51cbfcd6603dff959233ffb16431fbe04": + version: 19.2.0-next.0+sha-0621482 + resolution: "@angular/bazel@https://github.com/angular/bazel-builds.git#commit=205769f51cbfcd6603dff959233ffb16431fbe04" dependencies: "@microsoft/api-extractor": "npm:^7.24.2" magic-string: "npm:^0.30.0" tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler-cli": 19.2.0-next.0+sha-e689aae + "@angular/compiler-cli": 19.2.0-next.0+sha-0621482 "@bazel/concatjs": ^5.3.0 "@bazel/worker": ^5.3.0 "@rollup/plugin-commonjs": ^28.0.0 @@ -90,7 +90,7 @@ __metadata: packager: ./src/ng_package/packager.mjs types_bundler: ./src/types_bundle/index.mjs xi18n: ./src/ngc-wrapped/extract_i18n.mjs - checksum: 10c0/747258852f159d48bcd87dc3914257dabd9d77c3df0033203c52bfd2bba7e4065f39ee9b3dafb76d4b097a79b2acdb60737427dedcb9b7a4320175ae2316a302 + checksum: 10c0/ca40ebe1d63f22d6b14979384abb0562b9c866316b385c624d7119de0413c37b0a240e4757731013f8574f72d035f81844b6e0e8eea469b488c4a50630a15d80 languageName: node linkType: hard @@ -104,12 +104,12 @@ __metadata: languageName: node linkType: hard -"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832": - version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=35cd77732ab88b0280d4fb1187728e4c8533c832" +"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#4b0419ce0fea35aa1ad3e92a882f93ba41199ace": + version: 0.0.0-5b4b2a6258dece411626435f680d2818769f469a + resolution: "@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#commit=4b0419ce0fea35aa1ad3e92a882f93ba41199ace" dependencies: "@angular/benchpress": "npm:0.3.0" - "@angular/build": "npm:19.1.0-next.2" + "@angular/build": "npm:19.1.0-rc.0" "@babel/core": "npm:^7.16.0" "@babel/plugin-proposal-async-generator-functions": "npm:^7.20.1" "@bazel/buildifier": "npm:6.3.3" @@ -143,39 +143,39 @@ __metadata: dependenciesMeta: re2: built: false - checksum: 10c0/15805287cb7d4d2ad088a8424debb992fcc4df0cbd7e17a78d92dafc60ed8b149ce7160b18c1682959183c2fb46fe022f9d653b6ab5a365f89ad65af0110ceaa + checksum: 10c0/ddfb5228eae2d34a95cfdf5fa4f6e9afa6cbabb2259601437b11c2d3892470b814f1b2d2e3e93e7c53c45c60a7ab7d9e1c5823b16fba5d7ec4cb98ddd4218c03 languageName: node linkType: hard -"@angular/build@npm:19.1.0-next.2": - version: 19.1.0-next.2 - resolution: "@angular/build@npm:19.1.0-next.2" +"@angular/build@npm:19.1.0-rc.0": + version: 19.1.0-rc.0 + resolution: "@angular/build@npm:19.1.0-rc.0" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.1901.0-next.2" + "@angular-devkit/architect": "npm:0.1901.0-rc.0" "@babel/core": "npm:7.26.0" "@babel/helper-annotate-as-pure": "npm:7.25.9" "@babel/helper-split-export-declaration": "npm:7.24.7" "@babel/plugin-syntax-import-attributes": "npm:7.26.0" - "@inquirer/confirm": "npm:5.1.0" + "@inquirer/confirm": "npm:5.1.1" "@vitejs/plugin-basic-ssl": "npm:1.2.0" beasties: "npm:0.2.0" browserslist: "npm:^4.23.0" - esbuild: "npm:0.24.0" - fast-glob: "npm:3.3.2" + esbuild: "npm:0.24.2" + fast-glob: "npm:3.3.3" https-proxy-agent: "npm:7.0.6" istanbul-lib-instrument: "npm:6.0.3" listr2: "npm:8.2.5" - lmdb: "npm:3.2.0" - magic-string: "npm:0.30.15" + lmdb: "npm:3.2.2" + magic-string: "npm:0.30.17" mrmime: "npm:2.0.0" parse5-html-rewriting-stream: "npm:7.0.0" picomatch: "npm:4.0.2" piscina: "npm:4.8.0" - rollup: "npm:4.28.1" - sass: "npm:1.83.0" + rollup: "npm:4.30.1" + sass: "npm:1.83.1" semver: "npm:7.6.3" - vite: "npm:6.0.3" + vite: "npm:6.0.7" watchpack: "npm:2.4.2" peerDependencies: "@angular/compiler": ^19.0.0 || ^19.1.0-next.0 @@ -183,8 +183,9 @@ __metadata: "@angular/localize": ^19.0.0 || ^19.1.0-next.0 "@angular/platform-server": ^19.0.0 || ^19.1.0-next.0 "@angular/service-worker": ^19.0.0 || ^19.1.0-next.0 - "@angular/ssr": ^19.1.0-next.2 + "@angular/ssr": ^19.1.0-rc.0 less: ^4.2.0 + ng-packagr: ^19.0.0 || ^19.1.0-next.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 typescript: ">=5.5 <5.8" @@ -206,11 +207,13 @@ __metadata: optional: true less: optional: true + ng-packagr: + optional: true postcss: optional: true tailwindcss: optional: true - checksum: 10c0/292fe2717afb3b2f94bccd3c8b0036ade8227e7646c841b54fcd00e4b989e69d25b511a3f96c6ccc6d2ff86022943d73522a0016585a0813babb831f453b42da + checksum: 10c0/1b2e722baf2261fe2e9dd732429832fcf6cc2f4450f9bb00a0416da3a80cd5c828a13194b00f689d65ab2747f7b50e86bd916b19345882f02c4883ff51eda7f6 languageName: node linkType: hard @@ -310,8 +313,8 @@ __metadata: dependencies: "@ampproject/remapping": "npm:2.3.0" "@angular/animations": "npm:19.1.0-rc.0" - "@angular/bazel": "https://github.com/angular/bazel-builds.git#169e71f64fa706648c60d77abb8d4cab1ca22f55" - "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#35cd77732ab88b0280d4fb1187728e4c8533c832" + "@angular/bazel": "https://github.com/angular/bazel-builds.git#205769f51cbfcd6603dff959233ffb16431fbe04" + "@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#4b0419ce0fea35aa1ad3e92a882f93ba41199ace" "@angular/cdk": "npm:19.1.0-rc.0" "@angular/common": "npm:19.1.0-rc.0" "@angular/compiler": "npm:19.1.0-rc.0" @@ -320,7 +323,7 @@ __metadata: "@angular/forms": "npm:19.1.0-rc.0" "@angular/localize": "npm:19.1.0-rc.0" "@angular/material": "npm:19.1.0-rc.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0" "@angular/platform-browser": "npm:19.1.0-rc.0" "@angular/platform-browser-dynamic": "npm:19.1.0-rc.0" "@angular/platform-server": "npm:19.1.0-rc.0" @@ -533,12 +536,12 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#8214e3156e6c9eb06089f7c50bec735a2cb73c3b": - version: 0.0.0-0b6f7cbd5a1b8383be81f8ef3ed1caf891c7c25c - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=8214e3156e6c9eb06089f7c50bec735a2cb73c3b" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0": + version: 0.0.0-5b4b2a6258dece411626435f680d2818769f469a + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0" dependencies: "@google-cloud/spanner": "npm:7.17.1" - "@octokit/rest": "npm:21.0.2" + "@octokit/rest": "npm:21.1.0" "@types/semver": "npm:^7.3.6" "@types/supports-color": "npm:^8.1.1" "@yarnpkg/lockfile": "npm:^1.1.0" @@ -550,7 +553,7 @@ __metadata: yaml: "npm:2.7.0" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/4fa4d6b9aebbf07b7372523b5d2333787141b42129e3be6c854711e5d1fd0efb15b5bef403cefdeb4d557ae80b91e12858d90ccd39180bc7abc62c1712ee29d0 + checksum: 10c0/47d0904ebd62c680aa7c34e5c63059536ce2fa4b8d71671e373e4d089159b780da19a16711798b02c44ed1323b52c195140fd27df3b673b6577547cf3a8ac17e languageName: node linkType: hard @@ -1971,13 +1974,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/aix-ppc64@npm:0.24.0" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/aix-ppc64@npm:0.24.2" @@ -1985,13 +1981,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm64@npm:0.24.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/android-arm64@npm:0.24.2" @@ -1999,13 +1988,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm@npm:0.24.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/android-arm@npm:0.24.2" @@ -2013,13 +1995,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-x64@npm:0.24.0" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/android-x64@npm:0.24.2" @@ -2027,13 +2002,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-arm64@npm:0.24.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/darwin-arm64@npm:0.24.2" @@ -2041,13 +2009,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-x64@npm:0.24.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/darwin-x64@npm:0.24.2" @@ -2055,13 +2016,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-arm64@npm:0.24.0" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/freebsd-arm64@npm:0.24.2" @@ -2069,13 +2023,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-x64@npm:0.24.0" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/freebsd-x64@npm:0.24.2" @@ -2083,13 +2030,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm64@npm:0.24.0" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-arm64@npm:0.24.2" @@ -2097,13 +2037,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm@npm:0.24.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-arm@npm:0.24.2" @@ -2111,13 +2044,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ia32@npm:0.24.0" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-ia32@npm:0.24.2" @@ -2125,13 +2051,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-loong64@npm:0.24.0" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-loong64@npm:0.24.2" @@ -2139,13 +2058,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-mips64el@npm:0.24.0" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-mips64el@npm:0.24.2" @@ -2153,13 +2065,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ppc64@npm:0.24.0" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-ppc64@npm:0.24.2" @@ -2167,13 +2072,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-riscv64@npm:0.24.0" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-riscv64@npm:0.24.2" @@ -2181,13 +2079,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-s390x@npm:0.24.0" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-s390x@npm:0.24.2" @@ -2195,13 +2086,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-x64@npm:0.24.0" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/linux-x64@npm:0.24.2" @@ -2216,13 +2100,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/netbsd-x64@npm:0.24.0" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/netbsd-x64@npm:0.24.2" @@ -2230,13 +2107,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-arm64@npm:0.24.0" - conditions: os=openbsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/openbsd-arm64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/openbsd-arm64@npm:0.24.2" @@ -2244,13 +2114,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-x64@npm:0.24.0" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/openbsd-x64@npm:0.24.2" @@ -2258,13 +2121,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/sunos-x64@npm:0.24.0" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/sunos-x64@npm:0.24.2" @@ -2272,13 +2128,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-arm64@npm:0.24.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/win32-arm64@npm:0.24.2" @@ -2286,13 +2135,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-ia32@npm:0.24.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/win32-ia32@npm:0.24.2" @@ -2300,13 +2142,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-x64@npm:0.24.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.24.2": version: 0.24.2 resolution: "@esbuild/win32-x64@npm:0.24.2" @@ -2511,18 +2346,6 @@ __metadata: languageName: node linkType: hard -"@inquirer/confirm@npm:5.1.0": - version: 5.1.0 - resolution: "@inquirer/confirm@npm:5.1.0" - dependencies: - "@inquirer/core": "npm:^10.1.1" - "@inquirer/type": "npm:^3.0.1" - peerDependencies: - "@types/node": ">=18" - checksum: 10c0/c75e91a84839c800a7176e3c790368656c505f6f8c1f8e7cd022055eb31d75d73ac847224061791f6c35e71be35fac52d2efb976e4709884d00d4968e37630c7 - languageName: node - linkType: hard - "@inquirer/confirm@npm:5.1.1, @inquirer/confirm@npm:^5.1.1": version: 5.1.1 resolution: "@inquirer/confirm@npm:5.1.1" @@ -2535,7 +2358,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/core@npm:^10.1.1, @inquirer/core@npm:^10.1.2": +"@inquirer/core@npm:^10.1.2": version: 10.1.2 resolution: "@inquirer/core@npm:10.1.2" dependencies: @@ -2693,7 +2516,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^3.0.1, @inquirer/type@npm:^3.0.2": +"@inquirer/type@npm:^3.0.2": version: 3.0.2 resolution: "@inquirer/type@npm:3.0.2" peerDependencies: @@ -2858,13 +2681,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-arm64@npm:3.2.0": - version: 3.2.0 - resolution: "@lmdb/lmdb-darwin-arm64@npm:3.2.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-arm64@npm:3.2.2": version: 3.2.2 resolution: "@lmdb/lmdb-darwin-arm64@npm:3.2.2" @@ -2872,13 +2688,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-darwin-x64@npm:3.2.0": - version: 3.2.0 - resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-x64@npm:3.2.2": version: 3.2.2 resolution: "@lmdb/lmdb-darwin-x64@npm:3.2.2" @@ -2886,13 +2695,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm64@npm:3.2.0": - version: 3.2.0 - resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.0" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@lmdb/lmdb-linux-arm64@npm:3.2.2": version: 3.2.2 resolution: "@lmdb/lmdb-linux-arm64@npm:3.2.2" @@ -2900,13 +2702,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-arm@npm:3.2.0": - version: 3.2.0 - resolution: "@lmdb/lmdb-linux-arm@npm:3.2.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@lmdb/lmdb-linux-arm@npm:3.2.2": version: 3.2.2 resolution: "@lmdb/lmdb-linux-arm@npm:3.2.2" @@ -2914,13 +2709,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-linux-x64@npm:3.2.0": - version: 3.2.0 - resolution: "@lmdb/lmdb-linux-x64@npm:3.2.0" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-linux-x64@npm:3.2.2": version: 3.2.2 resolution: "@lmdb/lmdb-linux-x64@npm:3.2.2" @@ -2928,13 +2716,6 @@ __metadata: languageName: node linkType: hard -"@lmdb/lmdb-win32-x64@npm:3.2.0": - version: 3.2.0 - resolution: "@lmdb/lmdb-win32-x64@npm:3.2.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@lmdb/lmdb-win32-x64@npm:3.2.2": version: 3.2.2 resolution: "@lmdb/lmdb-win32-x64@npm:3.2.2" @@ -3467,7 +3248,7 @@ __metadata: languageName: node linkType: hard -"@octokit/core@npm:^6.1.2": +"@octokit/core@npm:^6.1.3": version: 6.1.3 resolution: "@octokit/core@npm:6.1.3" dependencies: @@ -3510,14 +3291,21 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^11.0.0": - version: 11.3.6 - resolution: "@octokit/plugin-paginate-rest@npm:11.3.6" +"@octokit/openapi-types@npm:^23.0.1": + version: 23.0.1 + resolution: "@octokit/openapi-types@npm:23.0.1" + checksum: 10c0/ab734ceb26343d9f051a59503b8cb5bdc7fec9ca044b60511b227179bec73141dd9144a6b2d68bcd737741881b136c1b7d5392da89ae2e35e39acc489e5eb4c1 + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^11.4.0": + version: 11.4.0 + resolution: "@octokit/plugin-paginate-rest@npm:11.4.0" dependencies: - "@octokit/types": "npm:^13.6.2" + "@octokit/types": "npm:^13.7.0" peerDependencies: "@octokit/core": ">=6" - checksum: 10c0/b269193d1fd2c7a551e529359f5bcc9d0a29fddccc31008d18281db2874fb83a99e999f2c7486c41adf5cf97f54fd3b115ab0e46d2b785073b53353a213ed928 + checksum: 10c0/b211f2491ddb941dfe6ae0b8fa752c617c74a1bb3086a9e2e23e77430682d30863ed8ccc6180dd12d4f6f0e0c7af4489863dd63804e2cc9f3fab12c1f04f8dd2 languageName: node linkType: hard @@ -3530,14 +3318,14 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:^13.0.0": - version: 13.2.6 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:13.2.6" +"@octokit/plugin-rest-endpoint-methods@npm:^13.3.0": + version: 13.3.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:13.3.0" dependencies: - "@octokit/types": "npm:^13.6.1" + "@octokit/types": "npm:^13.7.0" peerDependencies: "@octokit/core": ">=6" - checksum: 10c0/9b38187c8fb72cb43c77808d737580e5d71c8cf2133b1975badff36663754485bc999987e173201f6485f514287f22b36535dc1ec7e55575932e4494d780e366 + checksum: 10c0/f3c7a69cdc8c3d8d2a1ba492e528fa97e836822357cca57a47f3ecbc2a04f661ea479e9debf44e063e1cdbf4ea1f4c0d5dc8295be9ce3086422c4779eba473d5 languageName: node linkType: hard @@ -3563,19 +3351,19 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:21.0.2": - version: 21.0.2 - resolution: "@octokit/rest@npm:21.0.2" +"@octokit/rest@npm:21.1.0": + version: 21.1.0 + resolution: "@octokit/rest@npm:21.1.0" dependencies: - "@octokit/core": "npm:^6.1.2" - "@octokit/plugin-paginate-rest": "npm:^11.0.0" + "@octokit/core": "npm:^6.1.3" + "@octokit/plugin-paginate-rest": "npm:^11.4.0" "@octokit/plugin-request-log": "npm:^5.3.1" - "@octokit/plugin-rest-endpoint-methods": "npm:^13.0.0" - checksum: 10c0/4c7f0cf2797a7da5a6e3d8d7a7cfcc47b36de20a8d3e23289cc5dff2a32228254a6db459b0196f71efe229ef59fa6696591182c6c3bee7a4d658f2a0ef4c26bc + "@octokit/plugin-rest-endpoint-methods": "npm:^13.3.0" + checksum: 10c0/98d00f5be3e7ccee9486738664650e37be6251face1afc17e4733795a4b986645f33f64602aabf98dbde4c710d1448fb9ea7dfaf0f99824f37deb326aa2a224b languageName: node linkType: hard -"@octokit/types@npm:^13.6.1, @octokit/types@npm:^13.6.2": +"@octokit/types@npm:^13.6.2": version: 13.6.2 resolution: "@octokit/types@npm:13.6.2" dependencies: @@ -3584,6 +3372,15 @@ __metadata: languageName: node linkType: hard +"@octokit/types@npm:^13.7.0": + version: 13.7.0 + resolution: "@octokit/types@npm:13.7.0" + dependencies: + "@octokit/openapi-types": "npm:^23.0.1" + checksum: 10c0/62ed4f00304360cc31e99a9dc97ac4f48075d1d5c09a272f09b1fd3dfcc7a6169b7fab109030319ef121b0cd880c85bdb20363f4992104e07a98bd8323beeeb5 + languageName: node + linkType: hard + "@opentelemetry/api@npm:^1.9.0": version: 1.9.0 resolution: "@opentelemetry/api@npm:1.9.0" @@ -3969,13 +3766,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@rollup/rollup-android-arm-eabi@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.30.0" @@ -3990,13 +3780,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-android-arm64@npm:4.28.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-android-arm64@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-android-arm64@npm:4.30.0" @@ -4011,13 +3794,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-arm64@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.30.0" @@ -4032,13 +3808,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-darwin-x64@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-darwin-x64@npm:4.30.0" @@ -4053,13 +3822,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-arm64@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.30.0" @@ -4074,13 +3836,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-freebsd-x64@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.30.0" @@ -4095,13 +3850,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-gnueabihf@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.30.0" @@ -4116,13 +3864,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm-musleabihf@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.30.0" @@ -4137,13 +3878,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-gnu@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.30.0" @@ -4158,13 +3892,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-arm64-musl@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.30.0" @@ -4179,13 +3906,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" - conditions: os=linux & cpu=loong64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-loongarch64-gnu@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.30.0" @@ -4200,13 +3920,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.0" @@ -4221,13 +3934,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-riscv64-gnu@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.30.0" @@ -4242,13 +3948,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-s390x-gnu@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.30.0" @@ -4263,13 +3962,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-gnu@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.30.0" @@ -4284,13 +3976,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rollup/rollup-linux-x64-musl@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.30.0" @@ -4305,13 +3990,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rollup/rollup-win32-arm64-msvc@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.30.0" @@ -4326,13 +4004,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@rollup/rollup-win32-ia32-msvc@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.30.0" @@ -4347,13 +4018,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.28.1": - version: 4.28.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rollup/rollup-win32-x64-msvc@npm:4.30.0": version: 4.30.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.30.0" @@ -9100,89 +8764,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.24.0": - version: 0.24.0 - resolution: "esbuild@npm:0.24.0" - dependencies: - "@esbuild/aix-ppc64": "npm:0.24.0" - "@esbuild/android-arm": "npm:0.24.0" - "@esbuild/android-arm64": "npm:0.24.0" - "@esbuild/android-x64": "npm:0.24.0" - "@esbuild/darwin-arm64": "npm:0.24.0" - "@esbuild/darwin-x64": "npm:0.24.0" - "@esbuild/freebsd-arm64": "npm:0.24.0" - "@esbuild/freebsd-x64": "npm:0.24.0" - "@esbuild/linux-arm": "npm:0.24.0" - "@esbuild/linux-arm64": "npm:0.24.0" - "@esbuild/linux-ia32": "npm:0.24.0" - "@esbuild/linux-loong64": "npm:0.24.0" - "@esbuild/linux-mips64el": "npm:0.24.0" - "@esbuild/linux-ppc64": "npm:0.24.0" - "@esbuild/linux-riscv64": "npm:0.24.0" - "@esbuild/linux-s390x": "npm:0.24.0" - "@esbuild/linux-x64": "npm:0.24.0" - "@esbuild/netbsd-x64": "npm:0.24.0" - "@esbuild/openbsd-arm64": "npm:0.24.0" - "@esbuild/openbsd-x64": "npm:0.24.0" - "@esbuild/sunos-x64": "npm:0.24.0" - "@esbuild/win32-arm64": "npm:0.24.0" - "@esbuild/win32-ia32": "npm:0.24.0" - "@esbuild/win32-x64": "npm:0.24.0" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/9f1aadd8d64f3bff422ae78387e66e51a5e09de6935a6f987b6e4e189ed00fdc2d1bc03d2e33633b094008529c8b6e06c7ad1a9782fb09fec223bf95998c0683 - languageName: node - linkType: hard - "esbuild@npm:0.24.2, esbuild@npm:^0.24.0, esbuild@npm:^0.24.2": version: 0.24.2 resolution: "esbuild@npm:0.24.2" @@ -9743,19 +9324,6 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 - languageName: node - linkType: hard - "fast-glob@npm:3.3.3, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" @@ -12767,41 +12335,6 @@ __metadata: languageName: node linkType: hard -"lmdb@npm:3.2.0": - version: 3.2.0 - resolution: "lmdb@npm:3.2.0" - dependencies: - "@lmdb/lmdb-darwin-arm64": "npm:3.2.0" - "@lmdb/lmdb-darwin-x64": "npm:3.2.0" - "@lmdb/lmdb-linux-arm": "npm:3.2.0" - "@lmdb/lmdb-linux-arm64": "npm:3.2.0" - "@lmdb/lmdb-linux-x64": "npm:3.2.0" - "@lmdb/lmdb-win32-x64": "npm:3.2.0" - msgpackr: "npm:^1.11.2" - node-addon-api: "npm:^6.1.0" - node-gyp: "npm:latest" - node-gyp-build-optional-packages: "npm:5.2.2" - ordered-binary: "npm:^1.5.3" - weak-lru-cache: "npm:^1.2.2" - dependenciesMeta: - "@lmdb/lmdb-darwin-arm64": - optional: true - "@lmdb/lmdb-darwin-x64": - optional: true - "@lmdb/lmdb-linux-arm": - optional: true - "@lmdb/lmdb-linux-arm64": - optional: true - "@lmdb/lmdb-linux-x64": - optional: true - "@lmdb/lmdb-win32-x64": - optional: true - bin: - download-lmdb-prebuilds: bin/download-prebuilds.js - checksum: 10c0/f7bf2ad3a8e95b5f683f4633d029db00e5c8bc048bbfe783bcd60a91a21097569c91bc57de9e394db30da03812219b72fd9641ef3abd0e517f297d9e96038c05 - languageName: node - linkType: hard - "lmdb@npm:3.2.2": version: 3.2.2 resolution: "lmdb@npm:3.2.2" @@ -13103,15 +12636,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.15": - version: 0.30.15 - resolution: "magic-string@npm:0.30.15" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/7d10403cb0b403c0453d7af57d8d01a58c334b260e64653c5f5c2311800f4c6b1b7f4502153f9051dd8a87116acd50e5e3fce4bf79ec9d7127f087aa1c08b96b - languageName: node - linkType: hard - "magic-string@npm:0.30.17, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.17 resolution: "magic-string@npm:0.30.17" @@ -13236,7 +12760,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -15963,78 +15487,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.28.1": - version: 4.28.1 - resolution: "rollup@npm:4.28.1" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.28.1" - "@rollup/rollup-android-arm64": "npm:4.28.1" - "@rollup/rollup-darwin-arm64": "npm:4.28.1" - "@rollup/rollup-darwin-x64": "npm:4.28.1" - "@rollup/rollup-freebsd-arm64": "npm:4.28.1" - "@rollup/rollup-freebsd-x64": "npm:4.28.1" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.1" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.1" - "@rollup/rollup-linux-arm64-gnu": "npm:4.28.1" - "@rollup/rollup-linux-arm64-musl": "npm:4.28.1" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.28.1" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.1" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.1" - "@rollup/rollup-linux-s390x-gnu": "npm:4.28.1" - "@rollup/rollup-linux-x64-gnu": "npm:4.28.1" - "@rollup/rollup-linux-x64-musl": "npm:4.28.1" - "@rollup/rollup-win32-arm64-msvc": "npm:4.28.1" - "@rollup/rollup-win32-ia32-msvc": "npm:4.28.1" - "@rollup/rollup-win32-x64-msvc": "npm:4.28.1" - "@types/estree": "npm:1.0.6" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-loongarch64-gnu": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/2d2d0433b7cb53153a04c7b406f342f31517608dc57510e49177941b9e68c30071674b83a0292ef1d87184e5f7c6d0f2945c8b3c74963074de10c75366fe2c14 - languageName: node - linkType: hard - "rollup@npm:4.30.1": version: 4.30.1 resolution: "rollup@npm:4.30.1" @@ -16299,23 +15751,6 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.83.0": - version: 1.83.0 - resolution: "sass@npm:1.83.0" - dependencies: - "@parcel/watcher": "npm:^2.4.1" - chokidar: "npm:^4.0.0" - immutable: "npm:^5.0.2" - source-map-js: "npm:>=0.6.2 <2.0.0" - dependenciesMeta: - "@parcel/watcher": - optional: true - bin: - sass: sass.js - checksum: 10c0/4415361229879a9041d77c953da85482e89032aa4321ba13250a9987d39c80fac6c88af3777f2a2d76a4e8b0c8afbd21c1970fdbe84e0b3ec25fb26741f92beb - languageName: node - linkType: hard - "sass@npm:1.83.1, sass@npm:^1.81.0": version: 1.83.1 resolution: "sass@npm:1.83.1" @@ -18492,58 +17927,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.3": - version: 6.0.3 - resolution: "vite@npm:6.0.3" - dependencies: - esbuild: "npm:^0.24.0" - fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.49" - rollup: "npm:^4.23.0" - peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: ">=1.21.0" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/764ebed14770426a638575b23a51127c630ace873999ab896b0184484d8107e7255cdf64cfb36c65c1ef1d583e44b70a1d14c0f05b89612e834a5806e3964475 - languageName: node - linkType: hard - "vite@npm:6.0.7": version: 6.0.7 resolution: "vite@npm:6.0.7" From aaf114fa6eabfcdbbdcdabf01993723887ab2964 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 10 Jan 2025 06:06:20 +0000 Subject: [PATCH 0248/2162] build: update dependency undici to v7.2.1 --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +++--- package.json | 2 +- packages/angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- yarn.lock | 10 +++++----- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index 3fe69359b587..a6743a5cd093 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-678390875 -pnpm-lock.yaml=1227558702 +package.json=-1152125274 +pnpm-lock.yaml=1180140498 pnpm-workspace.yaml=1711114604 -yarn.lock=-530061578 +yarn.lock=-1642396400 diff --git a/package.json b/package.json index 037c7b095af5..bc8a75c89c0d 100644 --- a/package.json +++ b/package.json @@ -194,7 +194,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.7.3", - "undici": "7.2.0", + "undici": "7.2.1", "unenv": "^1.10.0", "verdaccio": "6.0.5", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index a9132d5b1cb1..979d609afb21 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -66,7 +66,7 @@ "esbuild": "0.24.2" }, "devDependencies": { - "undici": "7.2.0" + "undici": "7.2.1" }, "peerDependencies": { "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f163b651ec2..b844534ee947 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -473,8 +473,8 @@ importers: specifier: 5.7.3 version: 5.7.3 undici: - specifier: 7.2.0 - version: 7.2.0 + specifier: 7.2.1 + version: 7.2.1 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -13736,8 +13736,8 @@ packages: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} dev: true - /undici@7.2.0: - resolution: {integrity: sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==} + /undici@7.2.1: + resolution: {integrity: sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==} engines: {node: '>=20.18.1'} dev: true diff --git a/yarn.lock b/yarn.lock index 2a180353afa2..59a9ccdcd987 100644 --- a/yarn.lock +++ b/yarn.lock @@ -464,7 +464,7 @@ __metadata: ts-node: "npm:^10.9.1" tslib: "npm:2.8.1" typescript: "npm:5.7.3" - undici: "npm:7.2.0" + undici: "npm:7.2.1" unenv: "npm:^1.10.0" verdaccio: "npm:6.0.5" verdaccio-auth-memory: "npm:^10.0.0" @@ -17560,10 +17560,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:7.2.0": - version: 7.2.0 - resolution: "undici@npm:7.2.0" - checksum: 10c0/97b8452bae99304b697f79e9b8c094a2c28e6b805f720187af3a01cae2d297788d7ab6fe883577ba94e48fc20f1fbf04ab4fb050c23527bf32f8ada79a26dcb2 +"undici@npm:7.2.1": + version: 7.2.1 + resolution: "undici@npm:7.2.1" + checksum: 10c0/55108466484336c1aa1100bc2f9d6c78de7926b447af6b45afec873996cac67f07d968d8363c9bec57887cd474af73c60698e7642c791d80d786cbc6bf5a8a7e languageName: node linkType: hard From 2218b0d0df2da96c2af17a0a4077209f8c0c8094 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 9 Jan 2025 15:07:24 +0000 Subject: [PATCH 0249/2162] build: migrate `@angular-devkit/architect` to `npm_package` Migrates the `@angular-devkit/architect` package to the `rules_js` npm package rule, consuming the direct `rules_ts` output JS files. Notably, substitution is FAR different than what it used to be with `rules_nodejs`, so we needed some extra work to leverage `make_template` for substitutions in `package.json` files. **Keep in mind** that for now, this does not apply to any other files; so we only substitute in the `package.json`, but not in e.g. `.js` files as before. We will follow-up on this. The other jq merging/filtering for snapshot or tar references in `package.json` files is kept as is, and is temporarily duplicated. This is acceptable as the migration should be pretty smooth and quick. --- packages/angular_devkit/architect/BUILD.bazel | 15 ++- scripts/build-packages-dist.mts | 2 +- tools/bazel/BUILD.bazel | 0 tools/bazel/npm_package.bzl | 109 ++++++++++++++++++ tools/defaults.bzl | 19 +-- tools/defaults2.bzl | 8 ++ tools/substitutions.bzl | 26 +++++ 7 files changed, 152 insertions(+), 27 deletions(-) create mode 100644 tools/bazel/BUILD.bazel create mode 100644 tools/bazel/npm_package.bzl create mode 100644 tools/defaults2.bzl create mode 100644 tools/substitutions.bzl diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index af9a6beba333..3e2749f56ca3 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -5,8 +5,7 @@ load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test") -load("//tools:defaults.bzl", "pkg_npm") -load("//tools:interop.bzl", "ts_project") +load("//tools:defaults2.bzl", "npm_package", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") licenses(["notice"]) @@ -99,18 +98,18 @@ genrule( cmd = "cp $(execpath //:LICENSE) $@", ) -pkg_npm( - name = "npm_package", +npm_package( + name = "pkg", pkg_deps = [ "//packages/angular_devkit/core:package.json", ], tags = ["release-package"], deps = [ - ":README.md", - ":architect", + "README.md", + ":architect_rjs", ":license", - "//packages/angular_devkit/architect/node", - "//packages/angular_devkit/architect/testing", + "//packages/angular_devkit/architect/node:node_rjs", + "//packages/angular_devkit/architect/testing:testing_rjs", ], ) diff --git a/scripts/build-packages-dist.mts b/scripts/build-packages-dist.mts index 8bb720a97f27..dcbe6c601a58 100644 --- a/scripts/build-packages-dist.mts +++ b/scripts/build-packages-dist.mts @@ -31,7 +31,7 @@ const bazelCmd = process.env.BAZEL || `yarn bazel`; /** Command that queries Bazel for all release package targets. */ const queryPackagesCmd = `${bazelCmd} query --output=label "attr('tags', '\\[.*${releaseTargetTag}.*\\]', //packages/...) ` + - `intersect kind('ng_package|pkg_npm', //packages/...)"`; + `intersect kind('ng_package|pkg_npm|^_npm_package rule$', //packages/...)"`; /** Path for the default distribution output directory. */ const defaultDistPath = join(projectDir, 'dist/releases'); diff --git a/tools/bazel/BUILD.bazel b/tools/bazel/BUILD.bazel new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tools/bazel/npm_package.bzl b/tools/bazel/npm_package.bzl new file mode 100644 index 000000000000..2a2a13e113d6 --- /dev/null +++ b/tools/bazel/npm_package.bzl @@ -0,0 +1,109 @@ +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") +load("@aspect_bazel_lib//lib:expand_template.bzl", "expand_template") +load("@aspect_bazel_lib//lib:jq.bzl", "jq") +load("@aspect_bazel_lib//lib:utils.bzl", "to_label") +load("@aspect_rules_js//npm:defs.bzl", _npm_package = "npm_package") +load("@rules_pkg//:pkg.bzl", "pkg_tar") +load("//tools:link_package_json_to_tarballs.bzl", "link_package_json_to_tarballs") +load("//tools:snapshot_repo_filter.bzl", "SNAPSHOT_REPO_JQ_FILTER") +load("//tools:substitutions.bzl", "NO_STAMP_PACKAGE_SUBSTITUTIONS", "get_npm_package_substitutions_for_rjs") + +def npm_package( + name, + deps = [], + visibility = None, + pkg_deps = [], + pkg_json = "package.json", + **kwargs): + if name != "pkg": + fail("Expected npm_package to be named `pkg`. " + + "This is needed for pnpm workspace integration.") + + # Merge package.json with root package.json and perform various substitutions to + # prepare it for release. For jq docs, see https://stedolan.github.io/jq/manual/. + jq( + name = "basic_substitutions", + # Note: this jq filter relies on the order of the inputs + # buildifier: do not sort + srcs = ["//:package.json", pkg_json], + filter_file = "//tools:package_json_release_filter.jq", + args = ["--slurp"], + out = "substituted/package.json", + ) + + # Copy package.json files to bazel-out so we can use their bazel-out paths to determine + # the corresponding package npm package tgz path for substitutions. + copy_to_bin( + name = "package_json_copy", + srcs = [pkg_json], + ) + pkg_deps_copies = [] + for pkg_dep in pkg_deps: + pkg_label = to_label(pkg_dep) + if pkg_label.name != "package.json": + fail("ERROR: only package.json files allowed in pkg_deps of pkg_npm macro") + pkg_deps_copies.append("@%s//%s:package_json_copy" % (pkg_label.workspace_name, pkg_label.package)) + + # Substitute dependencies on other packages in this repo with tarballs. + link_package_json_to_tarballs( + name = "tar_substitutions", + src = "substituted/package.json", + pkg_deps = [":package_json_copy"] + pkg_deps_copies, + out = "substituted_with_tars/package.json", + ) + + # Substitute dependencies on other packages in this repo with snapshot repos. + jq( + name = "snapshot_repo_substitutions", + srcs = ["substituted/package.json"], + filter = SNAPSHOT_REPO_JQ_FILTER, + out = "substituted_with_snapshot_repos/package.json", + ) + + expand_template( + name = "final_package_json", + template = select({ + # Do local tar substitution if config_setting is true. + "//:package_json_use_tar_deps": "substituted_with_tars/package.json", + # Do snapshot repo substitution if config_setting is true. + "//:package_json_use_snapshot_repo_deps": "substituted_with_snapshot_repos/package.json", + "//conditions:default": "substituted/package.json", + }), + out = "substituted_final/package.json", + substitutions = NO_STAMP_PACKAGE_SUBSTITUTIONS, + stamp_substitutions = get_npm_package_substitutions_for_rjs(), + ) + + _npm_package( + name = "npm_package", + visibility = visibility, + srcs = [":final_package_json"] + deps, + replace_prefixes = { + "substituted_final/": "", + "substituted_with_tars/": "", + "substituted_with_snapshot_repos/": "", + "substituted/": "", + }, + exclude_srcs_patterns = [ + # Exclude `node_modules` which may be pulled by the `js_module_output` runfiles. + "node_modules/**/*", + ], + allow_overwrites = True, + **kwargs + ) + + # Note: For now, in hybrid mode with RNJS and RJS, we ensure + # both `:pkg` and `:npm_package` work. + native.alias( + name = "pkg", + actual = ":npm_package", + ) + + if pkg_json: + pkg_tar( + name = "npm_package_archive", + srcs = [":pkg"], + extension = "tgz", + strip_prefix = "./npm_package", + visibility = visibility, + ) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 598c3c667ceb..e7e64c2a3e4d 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -8,30 +8,13 @@ load("@build_bazel_rules_nodejs//:index.bzl", _js_library = "js_library", _pkg_n load("@npm//@angular/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") load("@npm//@angular/build-tooling/bazel:extract_js_module_output.bzl", "extract_js_module_output") load("@rules_pkg//:pkg.bzl", "pkg_tar") -load("//:constants.bzl", "RELEASE_ENGINES_NODE", "RELEASE_ENGINES_NPM", "RELEASE_ENGINES_YARN") load("//tools:link_package_json_to_tarballs.bzl", "link_package_json_to_tarballs") load("//tools:snapshot_repo_filter.bzl", "SNAPSHOT_REPO_JQ_FILTER") +load("//tools:substitutions.bzl", "NO_STAMP_PACKAGE_SUBSTITUTIONS", "NPM_PACKAGE_SUBSTITUTIONS") _DEFAULT_TSCONFIG_NG = "//:tsconfig-build-ng" _DEFAULT_TSCONFIG_TEST = "//:tsconfig-test.json" -NPM_PACKAGE_SUBSTITUTIONS = { - # Version of the local package being built, generated via the `--workspace_status_command` flag. - "0.0.0-PLACEHOLDER": "{STABLE_PROJECT_VERSION}", - "0.0.0-EXPERIMENTAL-PLACEHOLDER": "{STABLE_PROJECT_EXPERIMENTAL_VERSION}", - "BUILD_SCM_HASH-PLACEHOLDER": "{BUILD_SCM_ABBREV_HASH}", - "0.0.0-ENGINES-NODE": RELEASE_ENGINES_NODE, - "0.0.0-ENGINES-NPM": RELEASE_ENGINES_NPM, - "0.0.0-ENGINES-YARN": RELEASE_ENGINES_YARN, - # The below is needed for @angular/ssr FESM file. - "\\./(.+)/packages/angular/ssr/third_party/beasties": "../third_party/beasties/index.js", -} - -NO_STAMP_PACKAGE_SUBSTITUTIONS = dict(NPM_PACKAGE_SUBSTITUTIONS, **{ - "0.0.0-PLACEHOLDER": "0.0.0", - "0.0.0-EXPERIMENTAL-PLACEHOLDER": "0.0.0", -}) - def _default_module_name(testonly): """ Provide better defaults for package names. diff --git a/tools/defaults2.bzl b/tools/defaults2.bzl new file mode 100644 index 000000000000..aa2ff22e383a --- /dev/null +++ b/tools/defaults2.bzl @@ -0,0 +1,8 @@ +load("//tools:interop.bzl", _ts_project = "ts_project") +load("//tools/bazel:npm_package.bzl", _npm_package = "npm_package") + +def ts_project(**kwargs): + _ts_project(**kwargs) + +def npm_package(**kwargs): + _npm_package(**kwargs) diff --git a/tools/substitutions.bzl b/tools/substitutions.bzl new file mode 100644 index 000000000000..4b8b9c79c0af --- /dev/null +++ b/tools/substitutions.bzl @@ -0,0 +1,26 @@ +load("//:constants.bzl", "RELEASE_ENGINES_NODE", "RELEASE_ENGINES_NPM", "RELEASE_ENGINES_YARN") + +NPM_PACKAGE_SUBSTITUTIONS = { + # Version of the local package being built, generated via the `--workspace_status_command` flag. + "0.0.0-PLACEHOLDER": "{STABLE_PROJECT_VERSION}", + "0.0.0-EXPERIMENTAL-PLACEHOLDER": "{STABLE_PROJECT_EXPERIMENTAL_VERSION}", + "BUILD_SCM_HASH-PLACEHOLDER": "{BUILD_SCM_ABBREV_HASH}", + "0.0.0-ENGINES-NODE": RELEASE_ENGINES_NODE, + "0.0.0-ENGINES-NPM": RELEASE_ENGINES_NPM, + "0.0.0-ENGINES-YARN": RELEASE_ENGINES_YARN, + # The below is needed for @angular/ssr FESM file. + "\\./(.+)/packages/angular/ssr/third_party/beasties": "../third_party/beasties/index.js", +} + +NO_STAMP_PACKAGE_SUBSTITUTIONS = dict(NPM_PACKAGE_SUBSTITUTIONS, **{ + "0.0.0-PLACEHOLDER": "0.0.0", + "0.0.0-EXPERIMENTAL-PLACEHOLDER": "0.0.0", +}) + +def get_npm_package_substitutions_for_rjs(): + result = {} + for key, value in NPM_PACKAGE_SUBSTITUTIONS.items(): + # in `rules_js`, or `expand_template` from `bazel-lib`, stamp variables + # can only be retrieved via `{{X}}` syntax. + result[key] = value.replace("{", "{{").replace("}", "}}") + return result From b55bd318f1ddff418aa55fd40eb6438dc76961f6 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 9 Jan 2025 19:10:46 +0000 Subject: [PATCH 0250/2162] fixup! build: migrate `@angular-devkit/architect` to `npm_package` Include JSON files --- packages/angular_devkit/architect/BUILD.bazel | 21 ++++++++++--------- tools/bazel/npm_package.bzl | 7 ++----- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 3e2749f56ca3..33f3e399983e 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -12,7 +12,6 @@ licenses(["notice"]) package(default_visibility = ["//visibility:public"]) -# @external_begin ts_json_schema( name = "builder_input_schema", src = "src/input-schema.json", @@ -37,7 +36,14 @@ ts_json_schema( name = "operator_schema", src = "builders/operator-schema.json", ) -# @external_end + +JSON_FILES = glob( + include = ["**/*.json"], + exclude = [ + # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces + "node_modules/**", + ], +) ts_project( name = "architect", @@ -56,13 +62,8 @@ ts_project( "//packages/angular_devkit/architect:src/progress-schema.ts", "//packages/angular_devkit/architect:builders/operator-schema.ts", ], - data = glob( - include = ["**/*.json"], - exclude = [ - # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces - "node_modules/**", - ], - ), + # Ensure tests can execute the output JS, relying on schemas/JSON files. + data = JSON_FILES, module_name = "@angular-devkit/architect", deps = [ "//:root_modules/@types/node", @@ -104,7 +105,7 @@ npm_package( "//packages/angular_devkit/core:package.json", ], tags = ["release-package"], - deps = [ + deps = JSON_FILES + [ "README.md", ":architect_rjs", ":license", diff --git a/tools/bazel/npm_package.bzl b/tools/bazel/npm_package.bzl index 2a2a13e113d6..0d830c5f96b3 100644 --- a/tools/bazel/npm_package.bzl +++ b/tools/bazel/npm_package.bzl @@ -77,17 +77,14 @@ def npm_package( _npm_package( name = "npm_package", visibility = visibility, - srcs = [":final_package_json"] + deps, + # Note: Order matters here! Last file takes precedence after replaced prefixes. + srcs = deps + [":final_package_json"], replace_prefixes = { "substituted_final/": "", "substituted_with_tars/": "", "substituted_with_snapshot_repos/": "", "substituted/": "", }, - exclude_srcs_patterns = [ - # Exclude `node_modules` which may be pulled by the `js_module_output` runfiles. - "node_modules/**/*", - ], allow_overwrites = True, **kwargs ) From e4ee60dc4f3a5b9e13a1fceb333b817456a2104a Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 10 Jan 2025 13:39:21 +0000 Subject: [PATCH 0251/2162] ci: disable fixup commit messages Fixup commit messages are not permitted in this repository. This update modifies the `ng-dev` commit message validator configuration to prevent such commits. --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +++--- .ng-dev/commit-message.mjs | 1 + package.json | 2 +- pnpm-lock.yaml | 10 +++++----- yarn.lock | 10 +++++----- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index a6743a5cd093..ffa41b854510 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-1152125274 -pnpm-lock.yaml=1180140498 +package.json=-162262807 +pnpm-lock.yaml=1313582615 pnpm-workspace.yaml=1711114604 -yarn.lock=-1642396400 +yarn.lock=-1768014107 diff --git a/.ng-dev/commit-message.mjs b/.ng-dev/commit-message.mjs index 4a3b270ce0a7..94fe91d8f727 100644 --- a/.ng-dev/commit-message.mjs +++ b/.ng-dev/commit-message.mjs @@ -9,6 +9,7 @@ export const commitMessage = { maxLineLength: Infinity, minBodyLength: 0, minBodyLengthTypeExcludes: ['docs'], + disallowFixup: true, // Note: When changing this logic, also change the `contributing.ejs` file. scopes: packages.map(({ name }) => name), }; diff --git a/package.json b/package.json index bc8a75c89c0d..b72f1d66a111 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "19.1.0-rc.0", "@angular/localize": "19.1.0-rc.0", "@angular/material": "19.1.0-rc.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2dde6a7f809c2928ab1c7b85afb7fec0c49beafc", "@angular/platform-browser": "19.1.0-rc.0", "@angular/platform-browser-dynamic": "19.1.0-rc.0", "@angular/platform-server": "19.1.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b844534ee947..79dc36889190 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,8 +50,8 @@ importers: specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/cdk@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0)(@angular/forms@19.1.0-rc.0)(@angular/platform-browser@19.1.0-rc.0)(rxjs@7.8.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0 - version: github.com/angular/dev-infra-private-ng-dev-builds/5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0 + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2dde6a7f809c2928ab1c7b85afb7fec0c49beafc + version: github.com/angular/dev-infra-private-ng-dev-builds/2dde6a7f809c2928ab1c7b85afb7fec0c49beafc '@angular/platform-browser': specifier: 19.1.0-rc.0 version: 19.1.0-rc.0(@angular/animations@19.1.0-rc.0)(@angular/common@19.1.0-rc.0)(@angular/core@19.1.0-rc.0) @@ -14770,10 +14770,10 @@ packages: - zone.js dev: true - github.com/angular/dev-infra-private-ng-dev-builds/5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0: - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0} + github.com/angular/dev-infra-private-ng-dev-builds/2dde6a7f809c2928ab1c7b85afb7fec0c49beafc: + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2dde6a7f809c2928ab1c7b85afb7fec0c49beafc} name: '@angular/ng-dev' - version: 0.0.0-5b4b2a6258dece411626435f680d2818769f469a + version: 0.0.0-7863aba23429b9cdb432a63cb688dd4c61f51ce6 hasBin: true dependencies: '@google-cloud/spanner': 7.17.1(supports-color@10.0.0) diff --git a/yarn.lock b/yarn.lock index 59a9ccdcd987..47269a87fd46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -323,7 +323,7 @@ __metadata: "@angular/forms": "npm:19.1.0-rc.0" "@angular/localize": "npm:19.1.0-rc.0" "@angular/material": "npm:19.1.0-rc.0" - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0" + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2dde6a7f809c2928ab1c7b85afb7fec0c49beafc" "@angular/platform-browser": "npm:19.1.0-rc.0" "@angular/platform-browser-dynamic": "npm:19.1.0-rc.0" "@angular/platform-server": "npm:19.1.0-rc.0" @@ -536,9 +536,9 @@ __metadata: languageName: node linkType: hard -"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0": - version: 0.0.0-5b4b2a6258dece411626435f680d2818769f469a - resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=5d1a3e42cd27a30b988a5d0e40fca332c7a10aa0" +"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#2dde6a7f809c2928ab1c7b85afb7fec0c49beafc": + version: 0.0.0-7863aba23429b9cdb432a63cb688dd4c61f51ce6 + resolution: "@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#commit=2dde6a7f809c2928ab1c7b85afb7fec0c49beafc" dependencies: "@google-cloud/spanner": "npm:7.17.1" "@octokit/rest": "npm:21.1.0" @@ -553,7 +553,7 @@ __metadata: yaml: "npm:2.7.0" bin: ng-dev: ./bundles/cli.mjs - checksum: 10c0/47d0904ebd62c680aa7c34e5c63059536ce2fa4b8d71671e373e4d089159b780da19a16711798b02c44ed1323b52c195140fd27df3b673b6577547cf3a8ac17e + checksum: 10c0/452de4595fae7e7a645b81cc0f5853617ae6a13ceb68d967e3fc15505848bc2a8955cc2b678d2254d83f148d9e47192d0013eac1defbba112e9313026f9291a8 languageName: node linkType: hard From a67825e8acdb80085408212c697ea4b3801ff19e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 10 Jan 2025 16:00:38 +0000 Subject: [PATCH 0252/2162] build: update `_exec` to handle timeouts gracefully when `waitForMatch` does not match within 60 seconds. Previously, if `waitForMatch` failed to find a match, the CI process could hang indefinitely. This commit updates the method to ensure it fails after a 60-second timeout, preventing such blocks. Example: https://github.com/angular/angular-cli/actions/runs/12709516529/job/35428835418?pr=29318 --- tests/legacy-cli/e2e/utils/process.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/legacy-cli/e2e/utils/process.ts b/tests/legacy-cli/e2e/utils/process.ts index 5b7ad3d8dcd5..cbd39cdf2cc1 100644 --- a/tests/legacy-cli/e2e/utils/process.ts +++ b/tests/legacy-cli/e2e/utils/process.ts @@ -77,7 +77,7 @@ function _exec(options: ExecOptions, cmd: string, args: string[]): Promise((resolve, reject) => { + const processPromise = new Promise((resolve, reject) => { let stdout = ''; let stderr = ''; let matched = false; @@ -158,6 +158,25 @@ function _exec(options: ExecOptions, cmd: string, args: string[]): Promise = new Promise((_resolve, reject) => { + // Wait for 60 seconds and timeout. + const duration = 60_000; + timeout = setTimeout(() => { + reject( + new Error(`Waiting for ${options.waitForMatch} timed out (timeout: ${duration}msec)...`), + ); + }, duration); + }); + + return Promise.race([timeoutPromise, processPromise]).finally( + () => timeout && clearTimeout(timeout), + ); } export function extractNpmEnv() { From ecadcae8319136d5a723732f75af4aa177933b53 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 10 Jan 2025 15:07:51 +0000 Subject: [PATCH 0253/2162] build: update bazel --- .../npm_translate_lock_MzA5NzUwNzMx | 6 +++--- package.json | 4 ++-- packages/angular/ssr/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ yarn.lock | 16 ++++++++-------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index ffa41b854510..1077857e716e 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -2,7 +2,7 @@ # Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml"). # This file should be checked into version control along with the pnpm-lock.yaml file. .npmrc=-2023857461 -package.json=-162262807 -pnpm-lock.yaml=1313582615 +package.json=-1476783740 +pnpm-lock.yaml=-278631477 pnpm-workspace.yaml=1711114604 -yarn.lock=-1768014107 +yarn.lock=796428344 diff --git a/package.json b/package.json index b72f1d66a111..fcb6f48a65fc 100644 --- a/package.json +++ b/package.json @@ -70,11 +70,11 @@ "@babel/preset-env": "7.26.0", "@babel/runtime": "7.26.0", "@bazel/bazelisk": "1.25.0", - "@bazel/buildifier": "7.3.1", + "@bazel/buildifier": "8.0.0", "@bazel/concatjs": "5.8.1", "@bazel/jasmine": "5.8.1", "@bazel/rollup": "^5.8.1", - "@bazel/runfiles": "^5.8.1", + "@bazel/runfiles": "^6.0.0", "@discoveryjs/json-ext": "0.6.3", "@inquirer/confirm": "5.1.1", "@inquirer/prompts": "7.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 158dfc453a38..8cf390e3914a 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -33,7 +33,7 @@ "@angular/platform-browser": "19.1.0-rc.0", "@angular/platform-server": "19.1.0-rc.0", "@angular/router": "19.1.0-rc.0", - "@bazel/runfiles": "^5.8.1" + "@bazel/runfiles": "^6.0.0" }, "sideEffects": false, "schematics": "./schematics/collection.json", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79dc36889190..23253e61abe3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,8 +101,8 @@ importers: specifier: 1.25.0 version: 1.25.0 '@bazel/buildifier': - specifier: 7.3.1 - version: 7.3.1 + specifier: 8.0.0 + version: 8.0.0 '@bazel/concatjs': specifier: 5.8.1 version: 5.8.1(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(typescript@5.7.3) @@ -113,8 +113,8 @@ importers: specifier: ^5.8.1 version: 5.8.1(rollup@4.30.1) '@bazel/runfiles': - specifier: ^5.8.1 - version: 5.8.1 + specifier: ^6.0.0 + version: 6.3.1 '@discoveryjs/json-ext': specifier: 0.6.3 version: 0.6.3 @@ -1985,8 +1985,8 @@ packages: hasBin: true dev: true - /@bazel/buildifier@7.3.1: - resolution: {integrity: sha512-qhSjryLo2uHeib/uLc8Yeh6SBisqdf9pPO79QPlyNO3Apc4g9J1Tir/52VdOo9czHTgSasbtOjfWJCPzMoCSIA==} + /@bazel/buildifier@8.0.0: + resolution: {integrity: sha512-ur5DKaLK6vQjUUptxATC4TpsnBA2leqQDtqSF7qovbNuoCNzOfySJWMof1otT9ATW8ZsJfTFvNSYFRT8+LCVhw==} hasBin: true dev: true diff --git a/yarn.lock b/yarn.lock index 47269a87fd46..51639fdae148 100644 --- a/yarn.lock +++ b/yarn.lock @@ -340,11 +340,11 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/runtime": "npm:7.26.0" "@bazel/bazelisk": "npm:1.25.0" - "@bazel/buildifier": "npm:7.3.1" + "@bazel/buildifier": "npm:8.0.0" "@bazel/concatjs": "npm:5.8.1" "@bazel/jasmine": "npm:5.8.1" "@bazel/rollup": "npm:^5.8.1" - "@bazel/runfiles": "npm:^5.8.1" + "@bazel/runfiles": "npm:^6.0.0" "@discoveryjs/json-ext": "npm:0.6.3" "@inquirer/confirm": "npm:5.1.1" "@inquirer/prompts": "npm:7.2.1" @@ -1794,12 +1794,12 @@ __metadata: languageName: node linkType: hard -"@bazel/buildifier@npm:7.3.1": - version: 7.3.1 - resolution: "@bazel/buildifier@npm:7.3.1" +"@bazel/buildifier@npm:8.0.0": + version: 8.0.0 + resolution: "@bazel/buildifier@npm:8.0.0" bin: buildifier: buildifier.js - checksum: 10c0/a5f3991691495581b8cb0ff8f97e08789774483f7c9aac3ef90c349ed6bac330921fcd798db55dcb24752d6911e855dd3eabb646029a434a34a876216fd37fa7 + checksum: 10c0/09d385e3e092643175f703d3bbacb0ea181001f390d5e0cc75c08d4da609d3b8f8f6e40dc95af5ee7a116e1005536f32c275b0c1bfebecb6bed27f435c57ddca languageName: node linkType: hard @@ -1868,14 +1868,14 @@ __metadata: languageName: node linkType: hard -"@bazel/runfiles@npm:5.8.1, @bazel/runfiles@npm:^5.8.1": +"@bazel/runfiles@npm:5.8.1": version: 5.8.1 resolution: "@bazel/runfiles@npm:5.8.1" checksum: 10c0/c148ea89839240d918ea615c485fcd0e5c009215ddfa718cc7dd1c3f0e2e278eb8d291b6cd990cd8fc2ade161f98f2defbac8b9c2968e5c5bc4edb98e6ed6bc6 languageName: node linkType: hard -"@bazel/runfiles@npm:^6.3.1": +"@bazel/runfiles@npm:^6.0.0, @bazel/runfiles@npm:^6.3.1": version: 6.3.1 resolution: "@bazel/runfiles@npm:6.3.1" checksum: 10c0/7b542dcff9e917cc521520db137bd4f4a478796693700e2ec2c27f4beede800c9f4987e20c6b965d81000638f63549160780aea51eca2f0d0275be76fdc5e49f From b0e2c03377d5509c66a70083dd5363945ff69c7e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 10 Jan 2025 19:06:44 +0000 Subject: [PATCH 0254/2162] test: remove redundant e2e tests These tests are covered by unit tests --- tests/legacy-cli/e2e/tests/build/polyfills.ts | 29 ------------------- .../e2e/tests/generate/generate-name-error.ts | 8 ----- 2 files changed, 37 deletions(-) delete mode 100644 tests/legacy-cli/e2e/tests/build/polyfills.ts delete mode 100644 tests/legacy-cli/e2e/tests/generate/generate-name-error.ts diff --git a/tests/legacy-cli/e2e/tests/build/polyfills.ts b/tests/legacy-cli/e2e/tests/build/polyfills.ts deleted file mode 100644 index cd8673df0258..000000000000 --- a/tests/legacy-cli/e2e/tests/build/polyfills.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { - expectFileSizeToBeUnder, - expectFileToExist, - expectFileToMatch, - getFileSize, -} from '../../utils/fs'; -import { ng } from '../../utils/process'; -import { expectToFail } from '../../utils/utils'; - -export default async function () { - await ng('build', '--aot=false', '--configuration=development'); - - // files were created successfully - await expectFileToMatch('dist/test-project/browser/polyfills.js', 'zone.js'); - await expectFileToMatch( - 'dist/test-project/browser/index.html', - '', '', '', '', @@ -69,7 +68,6 @@ export default async function () { 'dist/test-project/browser/index.html', [ '', - '', '', '', '', diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-ngmodule.ts index 1175f083dcfe..b1b6cfab499d 100644 --- a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-ngmodule.ts @@ -7,15 +7,7 @@ import { updateJsonFile } from '../../../utils/project'; const snapshots = require('../../../ng-snapshot/package.json'); export default async function () { - await ng( - 'generate', - 'app', - 'test-project-two', - '--routing', - '--no-standalone', - '--skip-install', - '--no-zoneless', - ); + await ng('generate', 'app', 'test-project-two', '--routing', '--no-standalone', '--skip-install'); await ng('generate', 'app-shell', '--project', 'test-project-two'); const isSnapshotBuild = getGlobalVariable('argv')['ng-snapshots']; diff --git a/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts b/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts index ac784e5c341d..910f8993a16d 100644 --- a/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts +++ b/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts @@ -3,14 +3,7 @@ import { ng } from '../../utils/process'; import { updateJsonFile, useCIChrome, useCIDefaults } from '../../utils/project'; export default async function () { - await ng( - 'generate', - 'app', - 'test-project-two', - '--no-standalone', - '--skip-install', - '--no-zoneless', - ); + await ng('generate', 'app', 'test-project-two', '--no-standalone', '--skip-install'); await ng('generate', 'private-e2e', '--related-app-name=test-project-two'); // Setup testing to use CI Chrome. 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 bb57edcc88a0..dc238941dc81 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 @@ -1,7 +1,7 @@ import { ng } from '../../../utils/process'; import { getGlobalVariable } from '../../../utils/env'; -import { expectFileToMatch, rimraf, writeMultipleFiles } from '../../../utils/fs'; -import { installWorkspacePackages } from '../../../utils/packages'; +import { expectFileToMatch, writeMultipleFiles } from '../../../utils/fs'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; import { useSha } from '../../../utils/project'; export default async function () { @@ -11,16 +11,15 @@ export default async function () { return; } - // Forcibly remove in case another test doesn't clean itself up. - await rimraf('node_modules/@angular/ssr'); - await ng('add', '@angular/ssr', '--skip-confirmation'); + await uninstallPackage('@angular/ssr'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); await writeMultipleFiles({ // Add http client and route 'src/app/app.config.ts': ` - import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; + import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; import {Home} from './home/home'; @@ -35,7 +34,6 @@ export default async function () { }]), provideClientHydration(), provideHttpClient(withFetch()), - provideZoneChangeDetection({ eventCoalescing: true }), ], }; `, @@ -46,7 +44,7 @@ export default async function () { // Update component to do an HTTP call to asset. 'src/app/app.ts': ` - import { Component, inject } from '@angular/core'; + import { ChangeDetectorRef, Component, inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import { HttpClient } from '@angular/common/http'; @@ -64,15 +62,18 @@ export default async function () { export class App { data: any; dataWithSpace: any; + private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef); constructor() { const http = inject(HttpClient); http.get('/media.json').subscribe((d) => { this.data = d; + this.cdr.markForCheck(); }); http.get('/media%20with-space.json').subscribe((d) => { this.dataWithSpace = d; + this.cdr.markForCheck(); }); } } 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 f8b45482535e..f05d2182bbd2 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 @@ -15,14 +15,7 @@ export default async function () { // forcibly remove in case another test doesn't clean itself up await rimraf('node_modules/@angular/ssr'); - await ng( - 'generate', - 'app', - 'test-project-two', - '--no-standalone', - '--skip-install', - '--no-zoneless', - ); + await ng('generate', 'app', 'test-project-two', '--no-standalone', '--skip-install'); await ng('generate', 'private-e2e', '--related-app-name=test-project-two'); // Setup testing to use CI Chrome. 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 d1da216605bc..9b37d3218b3c 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 @@ -22,7 +22,7 @@ export default async function () { 'public/media.json': JSON.stringify({ dataFromAssets: true }), // Update component to do an HTTP call to asset and API. 'src/app/app.ts': ` - import { Component, inject } from '@angular/core'; + import { ChangeDetectorRef, Component, inject } from '@angular/core'; import { JsonPipe } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import { HttpClient } from '@angular/common/http'; @@ -40,23 +40,26 @@ export default async function () { export class App { assetsData: any; apiData: any; + private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef); constructor() { const http = inject(HttpClient); http.get('/media.json').toPromise().then((d) => { this.assetsData = d; + this.cdr.markForCheck(); }); http.get('/api').toPromise().then((d) => { this.apiData = d; + this.cdr.markForCheck(); }); } } `, // Add http client and route 'src/app/app.config.ts': ` - import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; + import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; import { Home } from './home/home'; @@ -71,7 +74,6 @@ export default async function () { }]), provideClientHydration(), provideHttpClient(withFetch()), - provideZoneChangeDetection({ eventCoalescing: true }), ], }; `, 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 51f5e3990bae..245375101946 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 @@ -1,7 +1,7 @@ import { join } from 'node:path'; import { existsSync } from 'node:fs'; import assert from 'node:assert'; -import { expectFileNotToExist, expectFileToMatch, writeFile } from '../../../utils/fs'; +import { expectFileToMatch, writeFile } from '../../../utils/fs'; import { ng, noSilentNg, silentNg } from '../../../utils/process'; import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; import { useSha } from '../../../utils/project'; @@ -66,7 +66,7 @@ export default async function () { await writeFile( 'src/app/app.config.ts', ` - import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; + import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; @@ -75,7 +75,6 @@ export default async function () { export const appConfig: ApplicationConfig = { providers: [ - provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes), provideClientHydration(), { diff --git a/tests/legacy-cli/e2e/tests/build/sourcemap.ts b/tests/legacy-cli/e2e/tests/build/sourcemap.ts index cd3d6c32ab0c..2e153e637f30 100644 --- a/tests/legacy-cli/e2e/tests/build/sourcemap.ts +++ b/tests/legacy-cli/e2e/tests/build/sourcemap.ts @@ -12,10 +12,10 @@ export default async function () { await ng('build', '--output-hashing=bundles', '--source-map', '--configuration=development'); await ng('build', '--output-hashing=none', '--source-map'); - await testForSourceMaps(useWebpackBuilder ? 3 : 2); + await testForSourceMaps(useWebpackBuilder ? 2 : 1); await ng('build', '--output-hashing=none', '--source-map', '--configuration=development'); - await testForSourceMaps(useWebpackBuilder ? 4 : 2); + await testForSourceMaps(useWebpackBuilder ? 3 : 1); } async function testForSourceMaps(expectedNumberOfFiles: number): Promise { diff --git a/tests/legacy-cli/e2e/tests/build/wasm-esm.ts b/tests/legacy-cli/e2e/tests/build/wasm-esm.ts index 43d3708c2c36..8a9735172f1b 100644 --- a/tests/legacy-cli/e2e/tests/build/wasm-esm.ts +++ b/tests/legacy-cli/e2e/tests/build/wasm-esm.ts @@ -62,16 +62,6 @@ export default async function () { // of a JIT production build. json.projects['test-project'].architect.build.options.polyfills = []; }); - await replaceInFile( - 'src/app/app.config.ts', - 'provideZoneChangeDetection', - 'provideZonelessChangeDetection', - ); - await replaceInFile( - 'src/app/app.config.ts', - 'provideZoneChangeDetection({ eventCoalescing: true })', - 'provideZonelessChangeDetection()', - ); await ng('build'); @@ -94,7 +84,7 @@ export default async function () { await ng('e2e'); // Setup prerendering and build to test Node.js functionality - await ng('add', '@angular/ssr', '--skip-confirmation'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/tests/commands/builder-project-by-cwd.ts b/tests/legacy-cli/e2e/tests/commands/builder-project-by-cwd.ts index 519274db5458..6033f4542391 100644 --- a/tests/legacy-cli/e2e/tests/commands/builder-project-by-cwd.ts +++ b/tests/legacy-cli/e2e/tests/commands/builder-project-by-cwd.ts @@ -3,8 +3,8 @@ import { expectFileToExist } from '../../utils/fs'; import { ng } from '../../utils/process'; export default async function () { - await ng('generate', 'app', 'second-app', '--skip-install', '--no-zoneless'); - await ng('generate', 'app', 'third-app', '--skip-install', '--no-zoneless'); + await ng('generate', 'app', 'second-app', '--skip-install'); + await ng('generate', 'app', 'third-app', '--skip-install'); const startCwd = process.cwd(); try { diff --git a/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts b/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts index 4d78ade44d85..b4b572bfa3ee 100644 --- a/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts +++ b/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts @@ -14,8 +14,8 @@ export default async function () { delete workspaceJson.projects['test-project']; }); - await ng('generate', 'app', 'second-app', '--skip-install', '--no-zoneless'); - await ng('generate', 'app', 'third-app', '--skip-install', '--no-zoneless'); + await ng('generate', 'app', 'second-app', '--skip-install'); + await ng('generate', 'app', 'third-app', '--skip-install'); const startCwd = process.cwd(); 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 c7cfc16a42fa..6ebb9c20022f 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 @@ -1,30 +1,20 @@ import assert from 'node:assert'; import { killAllProcesses, ng } from '../../../utils/process'; -import { rimraf, writeMultipleFiles } from '../../../utils/fs'; -import { installWorkspacePackages } from '../../../utils/packages'; +import { writeMultipleFiles } from '../../../utils/fs'; +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; import { ngServe, useSha } from '../../../utils/project'; -import { getGlobalVariable } from '../../../utils/env'; 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 uninstallPackage('@angular/ssr'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); await writeMultipleFiles({ // Add http client and route 'src/app/app.config.ts': ` - import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; + import { ApplicationConfig } from '@angular/core'; import { provideRouter } from '@angular/router'; import { Home } from './home/home'; @@ -39,7 +29,6 @@ export default async function () { }]), provideClientHydration(), provideHttpClient(withFetch()), - provideZoneChangeDetection({ eventCoalescing: true }), ], }; `, @@ -47,7 +36,7 @@ export default async function () { 'public/media.json': JSON.stringify({ dataFromAssets: true }), // Update component to do an HTTP call to asset. 'src/app/app.ts': ` - import { Component, inject } from '@angular/core'; + import { ChangeDetectorRef, Component, inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import { HttpClient } from '@angular/common/http'; @@ -63,10 +52,13 @@ export default async function () { }) export class App { data: any; + private readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef); + constructor() { const http = inject(HttpClient); http.get('/media.json').toPromise().then((d) => { this.data = d; + this.cdr.markForCheck(); }); } } diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-basic.ts b/tests/legacy-cli/e2e/tests/generate/application/application-basic.ts deleted file mode 100644 index bff84ac1e37b..000000000000 --- a/tests/legacy-cli/e2e/tests/generate/application/application-basic.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { expectFileToMatch } from '../../../utils/fs'; -import { ng } from '../../../utils/process'; -import { useCIChrome } from '../../../utils/project'; - -export default function () { - return ng('generate', 'application', 'app2', '--no-zoneless') - .then(() => expectFileToMatch('angular.json', /\"app2\":/)) - .then(() => useCIChrome('app2', 'projects/app2')) - .then(() => ng('test', 'app2', '--watch=false')); -} diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-ng-module.ts b/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-ng-module.ts new file mode 100644 index 000000000000..b475ed03b3a7 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-ng-module.ts @@ -0,0 +1,16 @@ +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; +import { ng } from '../../../utils/process'; +import { useCIChrome, useSha } from '../../../utils/project'; + +export default async function () { + try { + await ng('generate', 'app', 'ngmodules', '--no-standalone', '--skip-install', '--no-zoneless'); + await useSha(); + await installWorkspacePackages(); + await useCIChrome('ngmodules', 'projects/ngmodules'); + await ng('test', 'ngmodules', '--watch=false'); + await ng('build', 'ngmodules'); + } finally { + await uninstallPackage('zone.js'); + } +} diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-standalone.ts b/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-standalone.ts new file mode 100644 index 000000000000..065957f9fe11 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-standalone.ts @@ -0,0 +1,16 @@ +import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; +import { ng } from '../../../utils/process'; +import { useCIChrome, useSha } from '../../../utils/project'; + +export default async function () { + try { + await ng('generate', 'app', 'standalone', '--standalone', '--skip-install', '--no-zoneless'); + await useSha(); + await installWorkspacePackages(); + await useCIChrome('standalone', 'projects/standalone'); + await ng('test', 'standalone', '--watch=false'); + await ng('build', 'standalone'); + } finally { + await uninstallPackage('zone.js'); + } +} diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-zoneless.ts b/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-ng-module.ts similarity index 53% rename from tests/legacy-cli/e2e/tests/generate/application/application-zoneless.ts rename to tests/legacy-cli/e2e/tests/generate/application/application-zoneless-ng-module.ts index 721ce8fe3599..5ad207a2fa76 100644 --- a/tests/legacy-cli/e2e/tests/generate/application/application-zoneless.ts +++ b/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-ng-module.ts @@ -1,13 +1,11 @@ +import { installWorkspacePackages } from '../../../utils/packages'; import { ng } from '../../../utils/process'; -import { useCIChrome } from '../../../utils/project'; +import { useCIChrome, useSha } from '../../../utils/project'; export default async function () { - await ng('generate', 'app', 'standalone', '--standalone'); - await useCIChrome('standalone', 'projects/standalone'); - await ng('test', 'standalone', '--watch=false'); - await ng('build', 'standalone'); - await ng('generate', 'app', 'ngmodules', '--no-standalone', '--skip-install'); + await useSha(); + await installWorkspacePackages(); await useCIChrome('ngmodules', 'projects/ngmodules'); await ng('test', 'ngmodules', '--watch=false'); await ng('build', 'ngmodules'); diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-standalone.ts b/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-standalone.ts new file mode 100644 index 000000000000..b203ed4a28d0 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-standalone.ts @@ -0,0 +1,12 @@ +import { installWorkspacePackages } from '../../../utils/packages'; +import { ng } from '../../../utils/process'; +import { useCIChrome, useSha } from '../../../utils/project'; + +export default async function () { + await ng('generate', 'app', 'standalone', '--standalone', '--skip-install'); + await useSha(); + await installWorkspacePackages(); + await useCIChrome('standalone', 'projects/standalone'); + await ng('test', 'standalone', '--watch=false'); + await ng('build', 'standalone'); +} diff --git a/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts b/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts new file mode 100644 index 000000000000..411378839b7f --- /dev/null +++ b/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts @@ -0,0 +1,21 @@ +import { applyJestBuilder } from '../../utils/jest'; +import { installPackage, uninstallPackage } from '../../utils/packages'; +import { ng } from '../../utils/process'; + +export default async function (): Promise { + await applyJestBuilder({ + tsConfig: 'tsconfig.spec.json', + polyfills: ['zone.js', 'zone.js/testing'], + }); + + try { + await installPackage('zone.js'); + const { stderr } = await ng('test'); + + if (!stderr.includes('Jest builder is currently EXPERIMENTAL')) { + throw new Error(`No experimental notice in stderr.\nSTDERR:\n\n${stderr}`); + } + } finally { + await uninstallPackage('zone.js'); + } +} diff --git a/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts b/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts index 512ca748db50..a99a37d54b06 100644 --- a/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts +++ b/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts @@ -2,7 +2,7 @@ import { expectFileToExist } from '../../utils/fs'; import { ng } from '../../utils/process'; export default async function () { - await ng('generate', 'app', 'secondary-app', '--no-zoneless'); + await ng('generate', 'app', 'secondary-app'); await ng('build', 'secondary-app', '--configuration=development'); await expectFileToExist('dist/secondary-app/browser/index.html'); await expectFileToExist('dist/secondary-app/browser/main.js'); 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 a0d7c87bed13..8fce78b9e7ad 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts @@ -1,22 +1,13 @@ import { doesNotMatch, match } from 'node:assert'; import { ng } from '../../utils/process'; -import { appendToFile, rimraf } from '../../utils/fs'; +import { appendToFile } from '../../utils/fs'; import { ngServe, useSha } from '../../utils/project'; -import { installWorkspacePackages } from '../../utils/packages'; -import { getGlobalVariable } from '../../utils/env'; +import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; 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 uninstallPackage('@angular/ssr'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); await useSha(); await installWorkspacePackages(); diff --git a/tests/legacy-cli/e2e/utils/jest.ts b/tests/legacy-cli/e2e/utils/jest.ts index 904cc6f903d6..6431a93eb64f 100644 --- a/tests/legacy-cli/e2e/utils/jest.ts +++ b/tests/legacy-cli/e2e/utils/jest.ts @@ -5,7 +5,6 @@ import { updateJsonFile } from './project'; export async function applyJestBuilder( options: {} = { tsConfig: 'tsconfig.spec.json', - polyfills: ['zone.js', 'zone.js/testing'], }, ): Promise { await silentNpm('install', 'jest@29.5.0', 'jest-environment-jsdom@29.5.0', '--save-dev'); From 7a8c94615164e114533fae0f84796a374dc1b47b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 24 Sep 2025 12:39:11 +0000 Subject: [PATCH 1492/2162] fix(@angular-devkit/build-angular): make zone.js optional in server and app-shell builders This commit refactors the server and Jest builders to make `zone.js` an optional dependency, preventing errors in projects that do not include it. For server builds, `zone.js/node` is now only imported if `zone.js` is detected in the project's dependencies. --- .../src/builders/app-shell/index.ts | 6 +++- .../src/builders/app-shell/render-worker.ts | 7 ++-- .../build_angular/src/builders/jest/index.ts | 2 +- .../src/builders/jest/init-test-bed.mjs | 2 +- .../src/builders/prerender/index.ts | 7 +++- .../src/builders/prerender/render-worker.ts | 8 +++-- .../prerender/routes-extractor-worker.ts | 8 +++-- .../src/builders/server/index.ts | 32 ++++++++----------- .../server/platform-server-exports-loader.ts | 12 +++++-- .../ssr-dev-server/specs/proxy_spec.ts | 2 -- .../builders/ssr-dev-server/specs/ssl_spec.ts | 2 -- .../ssr-dev-server/specs/works_spec.ts | 2 -- .../angular/application/index_spec.ts | 4 +-- .../files/server-builder/server.ts.template | 2 -- tests/legacy-cli/e2e/utils/jest.ts | 1 + 15 files changed, 53 insertions(+), 44 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts b/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts index 1cdcd213c055..abdaf31f3a98 100644 --- a/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts @@ -43,7 +43,11 @@ async function _renderUniversal( // Locate zone.js to load in the render worker const root = context.workspaceRoot; - const zonePackage = require.resolve('zone.js', { paths: [root] }); + let zonePackage: string | undefined; + + try { + zonePackage = require.resolve('zone.js', { paths: [root] }); + } catch {} const projectName = context.target && context.target.project; if (!projectName) { diff --git a/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts b/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts index 21a39698b5a0..90af7e01b001 100644 --- a/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts +++ b/packages/angular_devkit/build_angular/src/builders/app-shell/render-worker.ts @@ -17,7 +17,7 @@ import { workerData } from 'node:worker_threads'; * This is passed as workerData when setting up the worker via the `piscina` package. */ const { zonePackage } = workerData as { - zonePackage: string; + zonePackage: string | undefined; }; interface ServerBundleExports { @@ -136,8 +136,9 @@ function isBootstrapFn( * @returns A promise resolving to the render function of the worker. */ async function initialize() { - // Setup Zone.js - await import(zonePackage); + if (zonePackage) { + await import(zonePackage); + } // Return the render function for use return render; diff --git a/packages/angular_devkit/build_angular/src/builders/jest/index.ts b/packages/angular_devkit/build_angular/src/builders/jest/index.ts index c972dfa41a46..00450a59b6d7 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/jest/index.ts @@ -133,7 +133,7 @@ export default createBuilder( // the environment for fake async to work correctly. // Third, we initialize `TestBed`. This is dependent on fake async being set up correctly beforehand. `--setupFilesAfterEnv="/jest-global.mjs"`, - ...(options.polyfills ? [`--setupFilesAfterEnv="/polyfills.mjs"`] : []), + ...(options.polyfills?.length ? [`--setupFilesAfterEnv="/polyfills.mjs"`] : []), `--setupFilesAfterEnv="/init-test-bed.mjs"`, // Don't run any infrastructure files as tests, they are manually loaded where needed. 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 dc511242ee52..2a9913b70363 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 @@ -9,7 +9,7 @@ // TODO(dgp1130): These imports likely don't resolve in stricter package environments like `pnpm`, since they are resolved relative to // `@angular-devkit/build-angular` rather than the user's workspace. Should look into virtual modules to support those use cases. -import { provideZoneChangeDetection, NgModule } from '@angular/core'; +import { NgModule, provideZoneChangeDetection } from '@angular/core'; import { getTestBed } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; diff --git a/packages/angular_devkit/build_angular/src/builders/prerender/index.ts b/packages/angular_devkit/build_angular/src/builders/prerender/index.ts index 4fcbd8f1fec3..9ebbd4402b94 100644 --- a/packages/angular_devkit/build_angular/src/builders/prerender/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/prerender/index.ts @@ -57,6 +57,11 @@ async function getRoutes( } } + let zonePackage: string | undefined; + try { + zonePackage = require.resolve('zone.js/node', { paths: [workspaceRoot] }); + } catch {} + if (discoverRoutes) { const renderWorker = new Piscina({ filename: require.resolve('./routes-extractor-worker'), @@ -65,7 +70,7 @@ async function getRoutes( indexFile, outputPath, serverBundlePath, - zonePackage: require.resolve('zone.js', { paths: [workspaceRoot] }), + zonePackage, } as RoutesExtractorWorkerData, recordTiming: false, }); diff --git a/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts b/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts index e651b6f84344..da478318ebc7 100644 --- a/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts +++ b/packages/angular_devkit/build_angular/src/builders/prerender/render-worker.ts @@ -51,7 +51,7 @@ interface ServerBundleExports { * This is passed as workerData when setting up the worker via the `piscina` package. */ const { zonePackage } = workerData as { - zonePackage: string; + zonePackage: string | undefined; }; /** @@ -163,8 +163,10 @@ function isBootstrapFn( * @returns A promise resolving to the render function of the worker. */ async function initialize() { - // Setup Zone.js - await import(zonePackage); + if (zonePackage) { + // Setup Zone.js + await import(zonePackage); + } // Return the render function for use return render; diff --git a/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts b/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts index ef324ba1dea6..0d5220d5f0e9 100644 --- a/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts +++ b/packages/angular_devkit/build_angular/src/builders/prerender/routes-extractor-worker.ts @@ -15,7 +15,7 @@ import * as path from 'node:path'; import { workerData } from 'node:worker_threads'; export interface RoutesExtractorWorkerData { - zonePackage: string; + zonePackage: string | undefined; indexFile: string; outputPath: string; serverBundlePath: string; @@ -74,8 +74,10 @@ async function extract(): Promise { * @returns A promise resolving to the extract function of the worker. */ async function initialize() { - // Setup Zone.js - await import(zonePackage); + if (zonePackage) { + // Setup Zone.js + await import(zonePackage); + } return extract; } diff --git a/packages/angular_devkit/build_angular/src/builders/server/index.ts b/packages/angular_devkit/build_angular/src/builders/server/index.ts index 3bdab8a55977..5a246178d10c 100644 --- a/packages/angular_devkit/build_angular/src/builders/server/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/server/index.ts @@ -198,7 +198,6 @@ async function initialize( const originalOutputPath = options.outputPath; // Assets are processed directly by the builder except when watching const adjustedOptions = options.watch ? options : { ...options, assets: [] }; - const { config, projectRoot, projectSourceRoot, i18n } = await generateI18nBrowserWebpackConfigFromContext( { @@ -271,23 +270,18 @@ function getPlatformServerExportsConfig(wco: BrowserWebpackConfigOptions): Parti // Add `@angular/platform-server` exports. // This is needed so that DI tokens can be referenced and set at runtime outside of the bundle. - // Only add `@angular/platform-server` exports when it is installed. - // In some cases this builder is used when `@angular/platform-server` is not installed. - // Example: when using `@nguniversal/common/clover` which does not need `@angular/platform-server`. - - return isPackageInstalled(wco.root, '@angular/platform-server') - ? { - module: { - rules: [ - { - loader: require.resolve('./platform-server-exports-loader'), - include: [path.resolve(wco.root, wco.buildOptions.main)], - options: { - angularSSRInstalled: isPackageInstalled(wco.root, '@angular/ssr'), - }, - }, - ], + return { + module: { + rules: [ + { + loader: require.resolve('./platform-server-exports-loader'), + include: [path.resolve(wco.root, wco.buildOptions.main)], + options: { + angularSSRInstalled: isPackageInstalled(wco.root, '@angular/ssr'), + isZoneJsInstalled: isPackageInstalled(wco.root, 'zone.js'), + }, }, - } - : {}; + ], + }, + }; } diff --git a/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts b/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts index 41ec7feacf43..efaa2c87f533 100644 --- a/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts +++ b/packages/angular_devkit/build_angular/src/builders/server/platform-server-exports-loader.ts @@ -12,11 +12,14 @@ * @see https://github.com/webpack/webpack/issues/15936. */ export default function ( - this: import('webpack').LoaderContext<{ angularSSRInstalled: boolean }>, + this: import('webpack').LoaderContext<{ + angularSSRInstalled: boolean; + isZoneJsInstalled: boolean; + }>, content: string, map: Parameters[1], ) { - const { angularSSRInstalled } = this.getOptions(); + const { angularSSRInstalled, isZoneJsInstalled } = this.getOptions(); let source = `${content} @@ -30,6 +33,11 @@ export default function ( `; } + if (isZoneJsInstalled) { + source = `import 'zone.js/node'; + ${source}`; + } + this.callback(null, source, map); return; 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 a4cafd66ee06..cbde961e59e4 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 @@ -32,8 +32,6 @@ describe('Serve SSR Builder', () => { host.writeMultipleFiles({ 'src/main.server.ts': ` - import 'zone.js/node'; - import { CommonEngine } from '@angular/ssr/node'; import * as express from 'express'; import { resolve, join } from 'node:path'; 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 3792d87f839c..a67cf0b3c5b5 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 @@ -32,8 +32,6 @@ describe('Serve SSR Builder', () => { host.writeMultipleFiles({ 'src/main.server.ts': ` - import 'zone.js/node'; - import { CommonEngine } from '@angular/ssr/node'; import * as express from 'express'; import { resolve, join } from 'node:path'; 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 8e92c4d666e3..64c56024f089 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 @@ -31,8 +31,6 @@ describe('Serve SSR Builder', () => { host.writeMultipleFiles({ 'src/main.server.ts': ` - import 'zone.js/node'; - import { CommonEngine } from '@angular/ssr/node'; import * as express from 'express'; import { resolve, join } from 'node:path'; diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 45aa584c7d8e..ba0033f8f119 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -389,7 +389,7 @@ describe('Application Schematic', () => { expect(buildOpt.index).toBeUndefined(); expect(buildOpt.browser).toEqual('src/main.ts'); expect(buildOpt.assets).toEqual([{ 'glob': '**/*', 'input': 'public' }]); - expect(buildOpt.polyfills).toEqual(undefined); + expect(buildOpt.polyfills).toBeUndefined(); expect(buildOpt.tsConfig).toEqual('tsconfig.app.json'); const testOpt = prj.architect.test.options; @@ -478,7 +478,7 @@ describe('Application Schematic', () => { expect(project.root).toEqual('foo'); const buildOpt = project.architect.build.options; expect(buildOpt.browser).toEqual('foo/src/main.ts'); - expect(buildOpt.polyfills).toEqual(undefined); + expect(buildOpt.polyfills).toBeUndefined(); expect(buildOpt.tsConfig).toEqual('foo/tsconfig.app.json'); expect(buildOpt.assets).toEqual([{ 'glob': '**/*', 'input': 'foo/public' }]); 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 7567fa65a81d..7327c26532ea 100644 --- a/packages/schematics/angular/ssr/files/server-builder/server.ts.template +++ b/packages/schematics/angular/ssr/files/server-builder/server.ts.template @@ -1,5 +1,3 @@ -import 'zone.js/node'; - import { APP_BASE_HREF } from '@angular/common'; import { CommonEngine } from '@angular/ssr/node'; import express from 'express'; diff --git a/tests/legacy-cli/e2e/utils/jest.ts b/tests/legacy-cli/e2e/utils/jest.ts index 6431a93eb64f..ed7fe7c04aa1 100644 --- a/tests/legacy-cli/e2e/utils/jest.ts +++ b/tests/legacy-cli/e2e/utils/jest.ts @@ -4,6 +4,7 @@ import { updateJsonFile } from './project'; /** Updates the `test` builder in the current workspace to use Jest with the given options. */ export async function applyJestBuilder( options: {} = { + polyfills: [], tsConfig: 'tsconfig.spec.json', }, ): Promise { From 3478aa332ef0241c04e7eeef9dd74b017292b2c4 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Tue, 23 Sep 2025 21:13:26 +0200 Subject: [PATCH 1493/2162] fix(@angular/build): exclude .angular from coverage instrumentation The instrumentation filter now excludes files in the .angular directory in addition to node_modules. --- packages/angular/build/src/builders/karma/coverage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/karma/coverage.ts b/packages/angular/build/src/builders/karma/coverage.ts index acacc3f7acc7..7a19f57fbebf 100644 --- a/packages/angular/build/src/builders/karma/coverage.ts +++ b/packages/angular/build/src/builders/karma/coverage.ts @@ -13,7 +13,7 @@ export function createInstrumentationFilter(includedBasePath: string, excludedPa return (request: string): boolean => { return ( !excludedPaths.has(request) && - !/\.(e2e|spec)\.tsx?$|[\\/]node_modules[\\/]/.test(request) && + !/\.(e2e|spec)\.tsx?$|[\\/]node_modules[\\/]|[\\/]\.angular[\\/]/.test(request) && request.startsWith(includedBasePath) ); }; From 3af4dcbbf4019e13a9547a404516502cf4eda736 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Tue, 23 Sep 2025 20:53:55 +0200 Subject: [PATCH 1494/2162] fix(@schematics/angular): add `__screenshots__/` to `.gitignore` Vitest Browser mode generates screenshots on failed tests by default. --- .../schematics/angular/workspace/files/__dot__gitignore.template | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/schematics/angular/workspace/files/__dot__gitignore.template b/packages/schematics/angular/workspace/files/__dot__gitignore.template index cc7b141350ff..b1d225e26e57 100644 --- a/packages/schematics/angular/workspace/files/__dot__gitignore.template +++ b/packages/schematics/angular/workspace/files/__dot__gitignore.template @@ -36,6 +36,7 @@ yarn-error.log /libpeerconnection.log testem.log /typings +__screenshots__/ # System files .DS_Store From 9f255f2b3cc435f3bea2f0266a137176ca599aef Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 24 Sep 2025 13:13:20 +0000 Subject: [PATCH 1495/2162] feat(@schematics/angular): set `packageManager` in `package.json` on new projects When creating a new project, the `packageManager` field in `package.json` will be automatically set to the package manager used to create the project. This helps to ensure that the same package manager is used by all developers working on the project. The package manager is detected in the following order: 1. `packageManager` field in `package.json` 2. Angular CLI configuration (`angular.json`) 3. Lock files (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`) --- packages/angular/cli/src/commands/new/cli.ts | 4 ++ .../cli/src/utilities/package-manager.ts | 42 +++++++++------- .../workspace/files/package.json.template | 1 + .../schematics/angular/workspace/index.ts | 49 ++++++++++++++----- .../schematics/angular/workspace/schema.json | 5 +- .../e2e/initialize/500-create-project.ts | 11 ++++- tests/legacy-cli/e2e/setup/100-global-cli.ts | 4 +- .../legacy-cli/e2e/tests/commands/add/file.ts | 7 ++- 8 files changed, 89 insertions(+), 34 deletions(-) diff --git a/packages/angular/cli/src/commands/new/cli.ts b/packages/angular/cli/src/commands/new/cli.ts index 9163708726b6..6e6545e66421 100644 --- a/packages/angular/cli/src/commands/new/cli.ts +++ b/packages/angular/cli/src/commands/new/cli.ts @@ -73,6 +73,10 @@ export default class NewCommandModule defaults, }); workflow.registry.addSmartDefaultProvider('ng-cli-version', () => VERSION.full); + workflow.registry.addSmartDefaultProvider( + 'packageManager', + () => this.context.packageManager.name, + ); return this.runSchematic({ collectionName, diff --git a/packages/angular/cli/src/utilities/package-manager.ts b/packages/angular/cli/src/utilities/package-manager.ts index 430ff91c7d48..54b5a21df4de 100644 --- a/packages/angular/cli/src/utilities/package-manager.ts +++ b/packages/angular/cli/src/utilities/package-manager.ts @@ -6,9 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { isJsonObject, json } from '@angular-devkit/core'; +import { JsonValue, isJsonObject } from '@angular-devkit/core'; import { execSync, spawn } from 'node:child_process'; -import { promises as fs, readdirSync, realpathSync, rmSync } from 'node:fs'; +import { promises as fs, readFileSync, readdirSync, realpathSync, rmSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { PackageManager } from '../../lib/config/workspace-schema'; @@ -233,7 +233,6 @@ export class PackageManagerUtils { } const filesInRoot = readdirSync(this.context.root); - const hasNpmLock = this.hasLockfile(PackageManager.Npm, filesInRoot); const hasYarnLock = this.hasLockfile(PackageManager.Yarn, filesInRoot); const hasPnpmLock = this.hasLockfile(PackageManager.Pnpm, filesInRoot); @@ -298,19 +297,19 @@ export class PackageManagerUtils { } private getConfiguredPackageManager(): PackageManager | undefined { - const getPackageManager = (source: json.JsonValue | undefined): PackageManager | undefined => { - if (source && isJsonObject(source)) { - const value = source['packageManager']; - if (typeof value === 'string') { - return value as PackageManager; - } - } + const { workspace: localWorkspace, globalConfiguration: globalWorkspace } = this.context; + let result: PackageManager | undefined; - return undefined; - }; + try { + const packageJsonPath = join(this.context.root, 'package.json'); + const pkgJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as JsonValue; + result = getPackageManager(pkgJson); + } catch {} + + if (result) { + return result; + } - let result: PackageManager | undefined; - const { workspace: localWorkspace, globalConfiguration: globalWorkspace } = this.context; if (localWorkspace) { const project = getProjectByCwd(localWorkspace); if (project) { @@ -320,10 +319,19 @@ export class PackageManagerUtils { result ??= getPackageManager(localWorkspace.extensions['cli']); } - if (!result) { - result = getPackageManager(globalWorkspace.extensions['cli']); - } + result ??= getPackageManager(globalWorkspace.extensions['cli']); return result; } } + +function getPackageManager(source: JsonValue | undefined): PackageManager | undefined { + if (source && isJsonObject(source)) { + const value = source['packageManager']; + if (typeof value === 'string') { + return value.split('@', 1)[0] as PackageManager; + } + } + + return undefined; +} diff --git a/packages/schematics/angular/workspace/files/package.json.template b/packages/schematics/angular/workspace/files/package.json.template index d9876827b386..629ae681ceac 100644 --- a/packages/schematics/angular/workspace/files/package.json.template +++ b/packages/schematics/angular/workspace/files/package.json.template @@ -21,6 +21,7 @@ ] }, "private": true, + <% if (packageManagerWithVersion) { %>"packageManager": "<%= packageManagerWithVersion %>",<% } %> "dependencies": { "@angular/common": "<%= latestVersions.Angular %>", "@angular/compiler": "<%= latestVersions.Angular %>", diff --git a/packages/schematics/angular/workspace/index.ts b/packages/schematics/angular/workspace/index.ts index 4a47de7ec7b8..85205042f3e3 100644 --- a/packages/schematics/angular/workspace/index.ts +++ b/packages/schematics/angular/workspace/index.ts @@ -16,19 +16,46 @@ import { strings, url, } from '@angular-devkit/schematics'; +import { execSync } from 'node:child_process'; import { latestVersions } from '../utility/latest-versions'; import { Schema as WorkspaceOptions } from './schema'; export default function (options: WorkspaceOptions): Rule { - return mergeWith( - apply(url('./files'), [ - options.minimal ? filter((path) => !path.endsWith('editorconfig.template')) : noop(), - applyTemplates({ - utils: strings, - ...options, - 'dot': '.', - latestVersions, - }), - ]), - ); + return () => { + const packageManager = options.packageManager; + let packageManagerWithVersion: string | undefined; + + if (packageManager) { + let packageManagerVersion: string | undefined; + try { + packageManagerVersion = execSync(`${packageManager} --version`, { + encoding: 'utf8', + stdio: 'pipe', + env: { + ...process.env, + // NPM updater notifier will prevents the child process from closing until it timeout after 3 minutes. + NO_UPDATE_NOTIFIER: '1', + NPM_CONFIG_UPDATE_NOTIFIER: 'false', + }, + }).trim(); + } catch {} + + if (packageManagerVersion) { + packageManagerWithVersion = `${packageManager}@${packageManagerVersion}`; + } + } + + return mergeWith( + apply(url('./files'), [ + options.minimal ? filter((path) => !path.endsWith('editorconfig.template')) : noop(), + applyTemplates({ + utils: strings, + ...options, + 'dot': '.', + latestVersions, + packageManagerWithVersion, + }), + ]), + ); + }; } diff --git a/packages/schematics/angular/workspace/schema.json b/packages/schematics/angular/workspace/schema.json index af5089b0d8be..51ec1a22e889 100644 --- a/packages/schematics/angular/workspace/schema.json +++ b/packages/schematics/angular/workspace/schema.json @@ -40,7 +40,10 @@ "packageManager": { "description": "The package manager to use for installing dependencies.", "type": "string", - "enum": ["npm", "yarn", "pnpm", "bun"] + "enum": ["npm", "yarn", "pnpm", "bun"], + "$default": { + "$source": "packageManager" + } } }, "required": ["name", "version"] diff --git a/tests/legacy-cli/e2e/initialize/500-create-project.ts b/tests/legacy-cli/e2e/initialize/500-create-project.ts index 837f54efbcde..2b8fd9143b9a 100644 --- a/tests/legacy-cli/e2e/initialize/500-create-project.ts +++ b/tests/legacy-cli/e2e/initialize/500-create-project.ts @@ -2,7 +2,7 @@ import { join } from 'node:path'; import { getGlobalVariable } from '../utils/env'; import { expectFileToExist } from '../utils/fs'; import { gitClean } from '../utils/git'; -import { setRegistry as setNPMConfigRegistry } from '../utils/packages'; +import { getActivePackageManager, setRegistry as setNPMConfigRegistry } from '../utils/packages'; import { ng } from '../utils/process'; import { prepareProjectForE2e, updateJsonFile } from '../utils/project'; @@ -20,7 +20,14 @@ export default async function () { // Ensure local test registry is used when outside a project await setNPMConfigRegistry(true); - await ng('new', 'test-project', '--skip-install'); + await ng( + 'new', + 'test-project', + '--skip-install', + '--package-manager', + getActivePackageManager(), + ); + await expectFileToExist(join(process.cwd(), 'test-project')); process.chdir('./test-project'); diff --git a/tests/legacy-cli/e2e/setup/100-global-cli.ts b/tests/legacy-cli/e2e/setup/100-global-cli.ts index 63db2d365a4a..780c0bbfaf39 100644 --- a/tests/legacy-cli/e2e/setup/100-global-cli.ts +++ b/tests/legacy-cli/e2e/setup/100-global-cli.ts @@ -5,8 +5,8 @@ import { globalNpm } from '../utils/process'; const PACKAGE_MANAGER_VERSION = { 'npm': '10.8.1', 'yarn': '1.22.22', - 'pnpm': '9.3.0', - 'bun': '1.1.13', + 'pnpm': '10.17.1', + 'bun': '1.2.21', }; export default async function () { diff --git a/tests/legacy-cli/e2e/tests/commands/add/file.ts b/tests/legacy-cli/e2e/tests/commands/add/file.ts index 6096dac6f666..5b22b4211ceb 100644 --- a/tests/legacy-cli/e2e/tests/commands/add/file.ts +++ b/tests/legacy-cli/e2e/tests/commands/add/file.ts @@ -1,8 +1,13 @@ +import { copyFile } from 'node:fs/promises'; import { assetDir } from '../../../utils/assets'; import { expectFileToExist } from '../../../utils/fs'; import { ng } from '../../../utils/process'; export default async function () { - await ng('add', assetDir('add-collection.tgz'), '--name=blah', '--skip-confirmation'); + // Avoids ERR_PNPM_ENAMETOOLONG errors. + const tarball = './add-collection.tgz'; + await copyFile(assetDir(tarball), tarball); + + await ng('add', tarball, '--name=blah', '--skip-confirmation'); await expectFileToExist('blah'); } From cbd0a9ac1d42fd37b7138d8b8b45307dfb427ef8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 24 Sep 2025 10:06:26 +0000 Subject: [PATCH 1496/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 8 +- packages/angular/build/package.json | 6 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 661 ++++++++++-------- 4 files changed, 376 insertions(+), 301 deletions(-) diff --git a/package.json b/package.json index 46c2f042f087..227c964b2a1d 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@angular/service-worker": "21.0.0-next.4", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", - "@eslint/compat": "1.3.2", + "@eslint/compat": "1.4.0", "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.36.0", "@rollup/plugin-alias": "^5.1.1", @@ -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.44.0", - "@typescript-eslint/parser": "8.44.0", + "@typescript-eslint/eslint-plugin": "8.44.1", + "@typescript-eslint/parser": "8.44.1", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.52.0", + "rollup": "4.52.2", "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index db4e29e2de82..255ce4f0b73b 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,12 +37,12 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.38", - "sass": "1.93.0", + "rolldown": "1.0.0-beta.39", + "sass": "1.93.1", "semver": "7.7.2", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "vite": "7.1.6", + "vite": "7.1.7", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index a649ea85f5fe..d8b25ee76362 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.93.0", + "sass": "1.93.1", "sass-loader": "16.0.5", "semver": "7.7.2", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4be8a0b3d0c0..f92cd53a730a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,8 +68,8 @@ importers: specifier: 8.2.1 version: 8.2.1 '@eslint/compat': - specifier: 1.3.2 - version: 1.3.2(eslint@9.36.0(jiti@2.5.1)) + specifier: 1.4.0 + version: 1.4.0(eslint@9.36.0(jiti@2.5.1)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 @@ -78,16 +78,16 @@ importers: version: 9.36.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.52.0) + version: 5.1.1(rollup@4.52.2) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.6(rollup@4.52.0) + version: 28.0.6(rollup@4.52.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.52.0) + version: 6.1.0(rollup@4.52.2) '@rollup/plugin-node-resolve': specifier: 16.0.1 - version: 16.0.1(rollup@4.52.0) + version: 16.0.1(rollup@4.52.2) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.4.0(eslint@9.36.0(jiti@2.5.1)) @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.44.0 - version: 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + specifier: 8.44.1 + version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: 8.44.0 - version: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + specifier: 8.44.1 + version: 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.36.0(jiti@2.5.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)) + version: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -269,17 +269,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.52.0 - version: 4.52.0 + specifier: 4.52.2 + version: 4.52.2 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.52.0)(typescript@5.9.2) + version: 6.2.3(rollup@4.52.2)(typescript@5.9.2) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.6)(rollup@4.52.0) + version: 0.5.4(@types/node@22.18.6)(rollup@4.52.2) semver: specifier: 7.7.2 version: 7.7.2 @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) packages/angular/build: dependencies: @@ -372,7 +372,7 @@ importers: version: 5.1.18(@types/node@24.5.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -410,11 +410,11 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.38 - version: 1.0.0-beta.38 + specifier: 1.0.0-beta.39 + version: 1.0.0-beta.39 sass: - specifier: 1.93.0 - version: 1.93.0 + specifier: 1.93.1 + version: 1.93.1 semver: specifier: 7.7.2 version: 7.7.2 @@ -425,8 +425,8 @@ importers: specifier: 0.2.15 version: 0.2.15 vite: - specifier: 7.1.6 - version: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + specifier: 7.1.7 + version: 7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.2 @@ -717,11 +717,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.93.0 - version: 1.93.0 + specifier: 1.93.1 + version: 1.93.1 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.93.0)(webpack@5.101.3(esbuild@0.25.10)) + version: 16.0.5(sass@1.93.1)(webpack@5.101.3(esbuild@0.25.10)) semver: specifier: 7.7.2 version: 7.7.2 @@ -1860,8 +1860,8 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.3.2': - resolution: {integrity: sha512-jRNwzTbd6p2Rw4sZ1CgWRS8YMtqG15YyZf7zvb6gY2rB2u6n+2Z+ELW0GtL0fQgyl0pr4Y/BzBfng/BdsereRA==} + '@eslint/compat@1.4.0': + resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.40 || 9 @@ -1881,6 +1881,10 @@ packages: resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.16.0': + resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + 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} @@ -2769,8 +2773,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.89.0': - resolution: {integrity: sha512-yuo+ECPIW5Q9mSeNmCDC2im33bfKuwW18mwkaHMQh8KakHYDzj4ci/q7wxf2qS3dMlVVCIyrs3kFtH5LmnlYnw==} + '@oxc-project/types@0.90.0': + resolution: {integrity: sha512-fWvaufWUcLtm/OBKcNmxUkR0kQW5ZKAF0t03BXPqdzpxmnVCmSKzvUDRCOKnSagSfNzG/3ZdKpComH3GMy881g==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -2919,95 +2923,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.38': - resolution: {integrity: sha512-AE3HFQrjWCKLFZD1Vpiy+qsqTRwwoil1oM5WsKPSmfQ5fif/A+ZtOZetF32erZdsR7qyvns6qHEteEsF6g6rsQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.39': + resolution: {integrity: sha512-mjraAJQ3VRLPb3BUgVigHvmAYhiBpEeSM0dhvaO6XHtJ0k1o9Ng1Z6Qvlp4/1wDiUf7a10L5c3yleoGZ2r0Maw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.38': - resolution: {integrity: sha512-RaoWOKc0rrFsVmKOjQpebMY6c6/I7GR1FBc25v7L/R7NlM0166mUotwGEv7vxu7ruXH4SJcFeVrfADFUUXUmmQ==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.39': + resolution: {integrity: sha512-tnuiLq9vd08KsZeFkFgzCXVKsTgSZGn+YBQjHSEiUvXJy5pfUf82X/YyLCG8P6I+WDd2cgrcLilMBQPZgaNwkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.38': - resolution: {integrity: sha512-Ymojqc2U35iUc8NFU2XX1WQPfBRRHN6xHcrxAf9WS8BFFBn8pDrH5QPvH1tYs3lDkw6UGGbanr1RGzARqdUp1g==} + '@rolldown/binding-darwin-x64@1.0.0-beta.39': + resolution: {integrity: sha512-wLFoB3ZM4AoeBlsP0eVbPzWfkEgvmnibMQEKUgWRfJnKhUWiSxl0kGdSw1fNYdX3KAqIeA5gPJNvSJmf6g5S3Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.38': - resolution: {integrity: sha512-0ermTQ//WzSI0nOL3z/LUWMNiE9xeM5cLGxjewPFEexqxV/0uM8/lNp9QageQ8jfc/VO1OURsGw34HYO5PaL8w==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.39': + resolution: {integrity: sha512-wzFZlixF9VMbyi++rHCU4Cy72SH11aBNnkadmvwTAbokwjYHi8NqxQ3/Lx00c700N6kwwuiTsbcGt5DEA9aROw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.38': - resolution: {integrity: sha512-GADxzVUTCTp6EWI52831A29Tt7PukFe94nhg/SUsfkI33oTiNQtPxyLIT/3oRegizGuPSZSlrdBurkjDwxyEUQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.39': + resolution: {integrity: sha512-eVnZcwGbje1uwdFjeQZQ6918RHgGIK7iTC+AoDsgetgAXQmQpnuWYQ9OWa5oTHNQyCkZbMfiHKgpkUPpceMecw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.38': - resolution: {integrity: sha512-SKO7Exl5Yem/OSNoA5uLHzyrptUQ8Hg70kHDxuwEaH0+GUg+SQe9/7PWmc4hFKBMrJGdQtii8WZ0uIz9Dofg5Q==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.39': + resolution: {integrity: sha512-Td96iRQA0nmRZM6kJ3+LDDKWLh4bl0zqeR+IYxXwPZBw4iXSREzXrcZ3QqgFHqnXPgryIJEW1U1Ebh2xf+b2UA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.38': - resolution: {integrity: sha512-SOo6+WqhXPBaShLxLT0eCgH17d3Yu1lMAe4mFP0M9Bvr/kfMSOPQXuLxBcbBU9IFM9w3N6qP9xWOHO+oUJvi8Q==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.39': + resolution: {integrity: sha512-bcSIh1TFUoPcexJH+gO1sE6wpSR0j3UpWBnjAwyM1PRKfjtqN4R9Du90ofH5KsR/A35FT3eP4mdnhMDTd5Yt+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.38': - resolution: {integrity: sha512-yvsQ3CyrodOX+lcoi+lejZGCOvJZa9xTsNB8OzpMDmHeZq3QzJfpYjXSAS6vie70fOkLVJb77UqYO193Cl8XBQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.39': + resolution: {integrity: sha512-tYEcZdVGovEemh7ELr+VUoezGkuBgRZYvDHHW/HVIw9LQW5HKLtBIGLzFlOfu/Lq5b9FlDKl+lrY6weviaNnKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.38': - resolution: {integrity: sha512-84qzKMwUwikfYeOuJ4Kxm/3z15rt0nFGGQArHYIQQNSTiQdxGHxOkqXtzPFqrVfBJUdxBAf+jYzR1pttFJuWyg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.39': + resolution: {integrity: sha512-xf9QdMC+qwQxtFAty/9RxgCLFdp9pFl09g86hxGPzlzCtHUjd+BmeUnUTXvVC8CHJLWECLQbFP6/233XHG0blA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.38': - resolution: {integrity: sha512-QrNiWlce01DYH0rL8K3yUBu+lNzY+B0DyCbIc2Atan6/S6flxOL0ow5DLQvMamOI/oKhrJ4xG+9MkMb9dDHbLQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.39': + resolution: {integrity: sha512-QCvN02VpE6zFYry0zAU+29D5+O9tJELNt+OjuCubilZdD/S8xFdho7qBJaa3YhFYyA9cReOMVH8Z8b3yWb4hcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.38': - resolution: {integrity: sha512-fnLtHyjwEsG4/aNV3Uv3Qd1ZbdH+CopwJNoV0RgBqrcQB8V6/Qdikd5JKvnO23kb3QvIpP+dAMGZMv1c2PJMzw==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.39': + resolution: {integrity: sha512-LFgshxApyBNiBHFVpun7tPrIQ4TvxW0f/endC5C4RzEHu7mxexBCQEkO5XrZ42Cr5DUY+ERNbkfNTUv+vVCaxQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.38': - resolution: {integrity: sha512-19cTfnGedem+RY+znA9J6ARBOCEFD4YSjnx0p5jiTm9tR6pHafRfFIfKlTXhun+NL0WWM/M0eb2IfPPYUa8+wg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.39': + resolution: {integrity: sha512-Mykirawg+s1e0uzVSEFhUBTShvXrOghPnyuLYkCfw8gzy8bMYiJuxsAfcopzZIIAVOHeSblJoiA/e7gYFjg8HA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.38': - resolution: {integrity: sha512-HcICm4YzFJZV+fI0O0bFLVVlsWvRNo/AB9EfUXvNYbtAxakCnQZ15oq22deFdz6sfi9Y4/SagH2kPU723dhCFA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.39': + resolution: {integrity: sha512-4PQJfWx7mdzXbAa4y+3OSSo911BZyJ/Is4pJKiwcGUqtvY66MX7BqlNWMr9QAozArAGE2knDubLqCQwZpK631w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.38': - resolution: {integrity: sha512-4Qx6cgEPXLb0XsCyLoQcUgYBpfL0sjugftob+zhUH0EOk/NVCAIT+h0NJhY+jn7pFpeKxhNMqhvTNx3AesxIAQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.39': + resolution: {integrity: sha512-0zmmPOWbFfp1g9ofieimHwhuclZMcib0HL52Q+JTRpOHChI2f83TtH3duKWtAaxqhLUndTr/Z5sxzb+G2FNL9g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.38': - resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} + '@rolldown/pluginutils@1.0.0-beta.39': + resolution: {integrity: sha512-GkTtNCV8ObWbq3LrJStPBv9jkRPct8WlwotVjx3aU0RwfH3LyheixWK9Zhaj22C4EQj/TJxYyetoX+uOn/MWKw==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -3077,8 +3081,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.52.0': - resolution: {integrity: sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==} + '@rollup/rollup-android-arm-eabi@4.52.2': + resolution: {integrity: sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ==} cpu: [arm] os: [android] @@ -3087,8 +3091,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.52.0': - resolution: {integrity: sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==} + '@rollup/rollup-android-arm64@4.52.2': + resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==} cpu: [arm64] os: [android] @@ -3097,8 +3101,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.52.0': - resolution: {integrity: sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==} + '@rollup/rollup-darwin-arm64@4.52.2': + resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==} cpu: [arm64] os: [darwin] @@ -3107,8 +3111,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.0': - resolution: {integrity: sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==} + '@rollup/rollup-darwin-x64@4.52.2': + resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==} cpu: [x64] os: [darwin] @@ -3117,8 +3121,8 @@ packages: cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.52.0': - resolution: {integrity: sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==} + '@rollup/rollup-freebsd-arm64@4.52.2': + resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==} cpu: [arm64] os: [freebsd] @@ -3127,8 +3131,8 @@ packages: cpu: [x64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.0': - resolution: {integrity: sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==} + '@rollup/rollup-freebsd-x64@4.52.2': + resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==} cpu: [x64] os: [freebsd] @@ -3138,8 +3142,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.52.0': - resolution: {integrity: sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.2': + resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==} cpu: [arm] os: [linux] libc: [glibc] @@ -3150,8 +3154,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.52.0': - resolution: {integrity: sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==} + '@rollup/rollup-linux-arm-musleabihf@4.52.2': + resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==} cpu: [arm] os: [linux] libc: [musl] @@ -3162,8 +3166,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.52.0': - resolution: {integrity: sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==} + '@rollup/rollup-linux-arm64-gnu@4.52.2': + resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==} cpu: [arm64] os: [linux] libc: [glibc] @@ -3174,8 +3178,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.52.0': - resolution: {integrity: sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==} + '@rollup/rollup-linux-arm64-musl@4.52.2': + resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==} cpu: [arm64] os: [linux] libc: [musl] @@ -3186,8 +3190,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.52.0': - resolution: {integrity: sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==} + '@rollup/rollup-linux-loong64-gnu@4.52.2': + resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==} cpu: [loong64] os: [linux] libc: [glibc] @@ -3198,8 +3202,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.0': - resolution: {integrity: sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==} + '@rollup/rollup-linux-ppc64-gnu@4.52.2': + resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==} cpu: [ppc64] os: [linux] libc: [glibc] @@ -3210,8 +3214,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.0': - resolution: {integrity: sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==} + '@rollup/rollup-linux-riscv64-gnu@4.52.2': + resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==} cpu: [riscv64] os: [linux] libc: [glibc] @@ -3222,8 +3226,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.52.0': - resolution: {integrity: sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==} + '@rollup/rollup-linux-riscv64-musl@4.52.2': + resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==} cpu: [riscv64] os: [linux] libc: [musl] @@ -3234,8 +3238,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.52.0': - resolution: {integrity: sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==} + '@rollup/rollup-linux-s390x-gnu@4.52.2': + resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==} cpu: [s390x] os: [linux] libc: [glibc] @@ -3246,8 +3250,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.0': - resolution: {integrity: sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==} + '@rollup/rollup-linux-x64-gnu@4.52.2': + resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==} cpu: [x64] os: [linux] libc: [glibc] @@ -3258,8 +3262,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-x64-musl@4.52.0': - resolution: {integrity: sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==} + '@rollup/rollup-linux-x64-musl@4.52.2': + resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==} cpu: [x64] os: [linux] libc: [musl] @@ -3269,8 +3273,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.52.0': - resolution: {integrity: sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==} + '@rollup/rollup-openharmony-arm64@4.52.2': + resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==} cpu: [arm64] os: [openharmony] @@ -3279,8 +3283,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.52.0': - resolution: {integrity: sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==} + '@rollup/rollup-win32-arm64-msvc@4.52.2': + resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==} cpu: [arm64] os: [win32] @@ -3289,13 +3293,13 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.0': - resolution: {integrity: sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==} + '@rollup/rollup-win32-ia32-msvc@4.52.2': + resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.0': - resolution: {integrity: sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==} + '@rollup/rollup-win32-x64-gnu@4.52.2': + resolution: {integrity: sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA==} cpu: [x64] os: [win32] @@ -3304,8 +3308,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.0': - resolution: {integrity: sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==} + '@rollup/rollup-win32-x64-msvc@4.52.2': + resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==} cpu: [x64] os: [win32] @@ -3653,39 +3657,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.44.0': - resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} + '@typescript-eslint/eslint-plugin@8.44.1': + resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.44.0 + '@typescript-eslint/parser': ^8.44.1 eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/parser@8.44.0': - resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} + '@typescript-eslint/parser@8.44.1': + resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/project-service@8.44.0': - resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} + '@typescript-eslint/project-service@8.44.1': + resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.2 - '@typescript-eslint/scope-manager@8.44.0': - resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} + '@typescript-eslint/scope-manager@8.44.1': + resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.44.0': - resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} + '@typescript-eslint/tsconfig-utils@8.44.1': + resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.0': - resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} + '@typescript-eslint/type-utils@8.44.1': + resolution: {integrity: sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3695,21 +3699,25 @@ packages: resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.44.0': - resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} + '@typescript-eslint/types@8.44.1': + resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.44.1': + resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.2 - '@typescript-eslint/utils@8.44.0': - resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} + '@typescript-eslint/utils@8.44.1': + resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/visitor-keys@8.44.0': - resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} + '@typescript-eslint/visitor-keys@8.44.1': + resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.19': @@ -7647,6 +7655,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: @@ -7828,8 +7837,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.38: - resolution: {integrity: sha512-58frPNX55Je1YsyrtPJv9rOSR3G5efUZpRqok94Efsj0EUa8dnqJV3BldShyI7A+bVPleucOtzXHwVpJRcR0kQ==} + rolldown@1.0.0-beta.39: + resolution: {integrity: sha512-05bTT0CJU9dvCRC0Uc4zwB79W5N9MV9OG/Inyx8KNE2pSrrApJoWxEEArW6rmjx113HIx5IreCoTjzLfgvXTdg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7859,8 +7868,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.52.0: - resolution: {integrity: sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==} + rollup@4.52.2: + resolution: {integrity: sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7930,8 +7939,8 @@ packages: webpack: optional: true - sass@1.93.0: - resolution: {integrity: sha512-CQi5/AzCwiubU3dSqRDJ93RfOfg/hhpW1l6wCIvolmehfwgCI35R/0QDs1+R+Ygrl8jFawwwIojE2w47/mf94A==} + sass@1.93.1: + resolution: {integrity: sha512-wLAeLB7IksO2u+cCfhHqcy7/2ZUMPp/X2oV6+LjmweTqgjhOKrkaE/Q1wljxtco5EcOcupZ4c981X0gpk5Tiag==} engines: {node: '>=14.0.0'} hasBin: true @@ -8826,6 +8835,46 @@ packages: yaml: optional: true + vite@7.1.7: + resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -10351,7 +10400,9 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.3.2(eslint@9.36.0(jiti@2.5.1))': + '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.5.1))': + dependencies: + '@eslint/core': 0.16.0 optionalDependencies: eslint: 9.36.0(jiti@2.5.1) @@ -10369,6 +10420,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.16.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -11407,7 +11462,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.89.0': {} + '@oxc-project/types@0.90.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11530,59 +11585,59 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.38': + '@rolldown/binding-android-arm64@1.0.0-beta.39': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.38': + '@rolldown/binding-darwin-arm64@1.0.0-beta.39': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.38': + '@rolldown/binding-darwin-x64@1.0.0-beta.39': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.38': + '@rolldown/binding-freebsd-x64@1.0.0-beta.39': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.38': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.39': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.38': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.39': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.38': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.39': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.38': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.39': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.38': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.39': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.38': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.39': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.38': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.39': dependencies: '@napi-rs/wasm-runtime': 1.0.5 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.38': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.39': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.38': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.39': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.38': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.39': optional: true - '@rolldown/pluginutils@1.0.0-beta.38': {} + '@rolldown/pluginutils@1.0.0-beta.39': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.52.2)': optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 - '@rollup/plugin-commonjs@28.0.6(rollup@4.52.0)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.52.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11590,7 +11645,7 @@ snapshots: magic-string: 0.30.19 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 '@rollup/plugin-json@6.1.0(rollup@4.50.2)': dependencies: @@ -11598,39 +11653,39 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/plugin-json@6.1.0(rollup@4.52.0)': + '@rollup/plugin-json@6.1.0(rollup@4.52.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + '@rollup/pluginutils': 5.3.0(rollup@4.52.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 - '@rollup/pluginutils@5.2.0(rollup@4.52.0)': + '@rollup/pluginutils@5.2.0(rollup@4.52.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 '@rollup/pluginutils@5.3.0(rollup@4.50.2)': dependencies: @@ -11640,141 +11695,141 @@ snapshots: optionalDependencies: rollup: 4.50.2 - '@rollup/pluginutils@5.3.0(rollup@4.52.0)': + '@rollup/pluginutils@5.3.0(rollup@4.52.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.0 + rollup: 4.52.2 '@rollup/rollup-android-arm-eabi@4.50.2': optional: true - '@rollup/rollup-android-arm-eabi@4.52.0': + '@rollup/rollup-android-arm-eabi@4.52.2': optional: true '@rollup/rollup-android-arm64@4.50.2': optional: true - '@rollup/rollup-android-arm64@4.52.0': + '@rollup/rollup-android-arm64@4.52.2': optional: true '@rollup/rollup-darwin-arm64@4.50.2': optional: true - '@rollup/rollup-darwin-arm64@4.52.0': + '@rollup/rollup-darwin-arm64@4.52.2': optional: true '@rollup/rollup-darwin-x64@4.50.2': optional: true - '@rollup/rollup-darwin-x64@4.52.0': + '@rollup/rollup-darwin-x64@4.52.2': optional: true '@rollup/rollup-freebsd-arm64@4.50.2': optional: true - '@rollup/rollup-freebsd-arm64@4.52.0': + '@rollup/rollup-freebsd-arm64@4.52.2': optional: true '@rollup/rollup-freebsd-x64@4.50.2': optional: true - '@rollup/rollup-freebsd-x64@4.52.0': + '@rollup/rollup-freebsd-x64@4.52.2': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.50.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.0': + '@rollup/rollup-linux-arm-gnueabihf@4.52.2': optional: true '@rollup/rollup-linux-arm-musleabihf@4.50.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.0': + '@rollup/rollup-linux-arm-musleabihf@4.52.2': optional: true '@rollup/rollup-linux-arm64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.0': + '@rollup/rollup-linux-arm64-gnu@4.52.2': optional: true '@rollup/rollup-linux-arm64-musl@4.50.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.0': + '@rollup/rollup-linux-arm64-musl@4.52.2': optional: true '@rollup/rollup-linux-loong64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.0': + '@rollup/rollup-linux-loong64-gnu@4.52.2': optional: true '@rollup/rollup-linux-ppc64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.0': + '@rollup/rollup-linux-ppc64-gnu@4.52.2': optional: true '@rollup/rollup-linux-riscv64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.0': + '@rollup/rollup-linux-riscv64-gnu@4.52.2': optional: true '@rollup/rollup-linux-riscv64-musl@4.50.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.0': + '@rollup/rollup-linux-riscv64-musl@4.52.2': optional: true '@rollup/rollup-linux-s390x-gnu@4.50.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.0': + '@rollup/rollup-linux-s390x-gnu@4.52.2': optional: true '@rollup/rollup-linux-x64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.0': + '@rollup/rollup-linux-x64-gnu@4.52.2': optional: true '@rollup/rollup-linux-x64-musl@4.50.2': optional: true - '@rollup/rollup-linux-x64-musl@4.52.0': + '@rollup/rollup-linux-x64-musl@4.52.2': optional: true '@rollup/rollup-openharmony-arm64@4.50.2': optional: true - '@rollup/rollup-openharmony-arm64@4.52.0': + '@rollup/rollup-openharmony-arm64@4.52.2': optional: true '@rollup/rollup-win32-arm64-msvc@4.50.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.0': + '@rollup/rollup-win32-arm64-msvc@4.52.2': optional: true '@rollup/rollup-win32-ia32-msvc@4.50.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.0': + '@rollup/rollup-win32-ia32-msvc@4.52.2': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.0': + '@rollup/rollup-win32-x64-gnu@4.52.2': optional: true '@rollup/rollup-win32-x64-msvc@4.50.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.0': + '@rollup/rollup-win32-x64-msvc@4.52.2': optional: true '@rollup/wasm-node@4.52.0': @@ -12199,14 +12254,14 @@ snapshots: '@types/node': 22.18.6 optional: true - '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.1 eslint: 9.36.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12216,41 +12271,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.1 debug: 4.4.3(supports-color@10.2.2) eslint: 9.36.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.44.0': + '@typescript-eslint/scope-manager@8.44.1': dependencies: - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 - '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.3(supports-color@10.2.2) eslint: 9.36.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) @@ -12260,12 +12315,14 @@ snapshots: '@typescript-eslint/types@8.44.0': {} - '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': + '@typescript-eslint/types@8.44.1': {} + + '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/visitor-keys': 8.44.0 + '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12276,20 +12333,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) eslint: 9.36.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.44.0': + '@typescript-eslint/visitor-keys@8.44.1': dependencies: - '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/types': 8.44.1 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.19': @@ -12446,11 +12503,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12465,7 +12522,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12477,13 +12534,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -12544,11 +12601,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.2) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.52.0 + rollup: 4.52.2 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -14198,11 +14255,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) eslint: 9.36.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14212,7 +14269,7 @@ snapshots: dependencies: eslint: 9.36.0(jiti@2.5.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14223,7 +14280,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.36.0(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.5.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14235,7 +14292,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14439,7 +14496,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -16269,7 +16326,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.50.2)(typescript@5.9.2) rxjs: 7.8.2 - sass: 1.93.0 + sass: 1.93.1 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.2 @@ -17199,26 +17256,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.38: + rolldown@1.0.0-beta.39: dependencies: - '@oxc-project/types': 0.89.0 - '@rolldown/pluginutils': 1.0.0-beta.38 + '@oxc-project/types': 0.90.0 + '@rolldown/pluginutils': 1.0.0-beta.39 ansis: 4.1.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.38 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.38 - '@rolldown/binding-darwin-x64': 1.0.0-beta.38 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.38 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.38 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.38 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.38 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.38 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.38 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.38 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.38 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.38 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.38 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.38 + '@rolldown/binding-android-arm64': 1.0.0-beta.39 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.39 + '@rolldown/binding-darwin-x64': 1.0.0-beta.39 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.39 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.39 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.39 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.39 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.39 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.39 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.39 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.39 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.39 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.39 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.39 rollup-license-plugin@3.0.2: dependencies: @@ -17234,18 +17291,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.52.0)(typescript@5.9.2): + rollup-plugin-dts@6.2.3(rollup@4.52.2)(typescript@5.9.2): dependencies: magic-string: 0.30.19 - rollup: 4.52.0 + rollup: 4.52.2 typescript: 5.9.2 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.0): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.2): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.52.0) - rollup: 4.52.0 + '@rollup/pluginutils': 5.2.0(rollup@4.52.2) + rollup: 4.52.2 optionalDependencies: '@types/node': 22.18.6 @@ -17276,32 +17333,32 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.50.2 fsevents: 2.3.3 - rollup@4.52.0: + rollup@4.52.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.0 - '@rollup/rollup-android-arm64': 4.52.0 - '@rollup/rollup-darwin-arm64': 4.52.0 - '@rollup/rollup-darwin-x64': 4.52.0 - '@rollup/rollup-freebsd-arm64': 4.52.0 - '@rollup/rollup-freebsd-x64': 4.52.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.0 - '@rollup/rollup-linux-arm-musleabihf': 4.52.0 - '@rollup/rollup-linux-arm64-gnu': 4.52.0 - '@rollup/rollup-linux-arm64-musl': 4.52.0 - '@rollup/rollup-linux-loong64-gnu': 4.52.0 - '@rollup/rollup-linux-ppc64-gnu': 4.52.0 - '@rollup/rollup-linux-riscv64-gnu': 4.52.0 - '@rollup/rollup-linux-riscv64-musl': 4.52.0 - '@rollup/rollup-linux-s390x-gnu': 4.52.0 - '@rollup/rollup-linux-x64-gnu': 4.52.0 - '@rollup/rollup-linux-x64-musl': 4.52.0 - '@rollup/rollup-openharmony-arm64': 4.52.0 - '@rollup/rollup-win32-arm64-msvc': 4.52.0 - '@rollup/rollup-win32-ia32-msvc': 4.52.0 - '@rollup/rollup-win32-x64-gnu': 4.52.0 - '@rollup/rollup-win32-x64-msvc': 4.52.0 + '@rollup/rollup-android-arm-eabi': 4.52.2 + '@rollup/rollup-android-arm64': 4.52.2 + '@rollup/rollup-darwin-arm64': 4.52.2 + '@rollup/rollup-darwin-x64': 4.52.2 + '@rollup/rollup-freebsd-arm64': 4.52.2 + '@rollup/rollup-freebsd-x64': 4.52.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.2 + '@rollup/rollup-linux-arm-musleabihf': 4.52.2 + '@rollup/rollup-linux-arm64-gnu': 4.52.2 + '@rollup/rollup-linux-arm64-musl': 4.52.2 + '@rollup/rollup-linux-loong64-gnu': 4.52.2 + '@rollup/rollup-linux-ppc64-gnu': 4.52.2 + '@rollup/rollup-linux-riscv64-gnu': 4.52.2 + '@rollup/rollup-linux-riscv64-musl': 4.52.2 + '@rollup/rollup-linux-s390x-gnu': 4.52.2 + '@rollup/rollup-linux-x64-gnu': 4.52.2 + '@rollup/rollup-linux-x64-musl': 4.52.2 + '@rollup/rollup-openharmony-arm64': 4.52.2 + '@rollup/rollup-win32-arm64-msvc': 4.52.2 + '@rollup/rollup-win32-ia32-msvc': 4.52.2 + '@rollup/rollup-win32-x64-gnu': 4.52.2 + '@rollup/rollup-win32-x64-msvc': 4.52.2 fsevents: 2.3.3 router@2.2.0: @@ -17355,14 +17412,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.93.0)(webpack@5.101.3(esbuild@0.25.10)): + sass-loader@16.0.5(sass@1.93.1)(webpack@5.101.3(esbuild@0.25.10)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.93.0 + sass: 1.93.1 webpack: 5.101.3(esbuild@0.25.10) - sass@1.93.0: + sass@1.93.1: dependencies: chokidar: 4.0.3 immutable: 5.1.3 @@ -18412,13 +18469,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18433,29 +18490,47 @@ snapshots: - tsx - yaml - vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.50.2 + rollup: 4.52.2 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.5.1 + fsevents: 2.3.3 + jiti: 2.5.1 + less: 4.4.1 + sass: 1.93.1 + terser: 5.44.0 + tsx: 4.20.5 + yaml: 2.8.1 + + vite@7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.2 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.5.1 fsevents: 2.3.3 jiti: 2.5.1 less: 4.4.1 - sass: 1.93.0 + sass: 1.93.1 terser: 5.44.0 tsx: 4.20.5 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18473,8 +18548,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.5.1 From e572666998e05e9536d26756e937e2667cb3b409 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 24 Sep 2025 13:59:18 -0700 Subject: [PATCH 1497/2162] docs: release notes for the v20.3.3 release --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c475fa7f4d7d..ef1077adb35e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ + + +# 20.3.3 (2025-09-24) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------- | +| [b7f92da78](https://github.com/angular/angular-cli/commit/b7f92da7835c14b568d07dfb3313802704f28cfd) | fix | add `__screenshots__/` to `.gitignore` | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [a4c9a2007](https://github.com/angular/angular-cli/commit/a4c9a2007ab3e33b2c97fa63f0df8f8662427031) | fix | avoid retaining rendered HTML in memory post-request | + + + # 21.0.0-next.4 (2025-09-17) From 7458ca1524cee85d036f19504dbe6fba9a69b921 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 24 Sep 2025 14:03:45 -0700 Subject: [PATCH 1498/2162] release: cut the v21.0.0-next.5 release --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef1077adb35e..fc254449a3af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,52 @@ + + +# 21.0.0-next.5 (2025-09-24) + +## Breaking Changes + +### @angular/build + +- The `javascriptEnabled` option for Less is no longer supported. Projects relying on inline JavaScript within Less files will need to refactor their stylesheets to remove this dependency. + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [2a518016d](https://github.com/angular/angular-cli/commit/2a518016d9585dd4d16f90102d5409459ebba024) | feat | Applications are zoneless by default | +| [9f255f2b3](https://github.com/angular/angular-cli/commit/9f255f2b3cc435f3bea2f0266a137176ca599aef) | feat | set `packageManager` in `package.json` on new projects | +| [77741f5ee](https://github.com/angular/angular-cli/commit/77741f5eec735f23b0f2865101471e045e4889b8) | fix | add 'update-typescript-lib' migration | +| [3af4dcbbf](https://github.com/angular/angular-cli/commit/3af4dcbbf4019e13a9547a404516502cf4eda736) | fix | add `__screenshots__/` to `.gitignore` | + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [6d3a3c579](https://github.com/angular/angular-cli/commit/6d3a3c5799bde1bab5c3878e0783ffa6854e36ad) | feat | add ai-tutor mcp tool | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [7a8c94615](https://github.com/angular/angular-cli/commit/7a8c94615164e114533fae0f84796a374dc1b47b) | fix | make zone.js optional in server and app-shell builders | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [00426e315](https://github.com/angular/angular-cli/commit/00426e3150c846913a5aa31510b5a1126df9e570) | feat | add --list-tests flag to unit-test builder | +| [3478aa332](https://github.com/angular/angular-cli/commit/3478aa332ef0241c04e7eeef9dd74b017292b2c4) | fix | exclude .angular from coverage instrumentation | +| [139758586](https://github.com/angular/angular-cli/commit/13975858683421a5712bbfccee57cf141a0b96f6) | fix | remove deprecated `javascriptEnabled` option for Less | +| [705af2278](https://github.com/angular/angular-cli/commit/705af22788102eeade08404d357582c39de8900b) | fix | set coverage report directory to coverage/project-name | +| [907eabdd3](https://github.com/angular/angular-cli/commit/907eabdd3c7447ed2c211b6d6c2719b04443c545) | fix | support ESM PostCSS plugins | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [afa273849](https://github.com/angular/angular-cli/commit/afa273849d0e0e62a7df2236d818bf7800c3ad13) | fix | avoid retaining rendered HTML in memory post-request | + + + # 20.3.3 (2025-09-24) diff --git a/package.json b/package.json index 227c964b2a1d..87314b1162c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.0.0-next.4", + "version": "21.0.0-next.5", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 65562114cdf725fa52f6d805f26a1aa265b9badb Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 24 Sep 2025 07:29:04 +0000 Subject: [PATCH 1499/2162] fix(@angular/build): mark `InjectionToken` as pure for improved tree-shaking `new InjectionToken(...)` is not considered pure by default by build tools, which prevents it from being tree-shaken when unused. This can lead to unused services being included in production bundles if they are provided as a default value for a token. This change marks `new InjectionToken(...)` calls as pure. The `InjectionToken` constructor is side-effect free; its only purpose is to create a token for the dependency injection system. Marking it as pure is safe and allows build tools like esbuild to tree-shake unused tokens and their dependencies. Closes #31270 --- .../babel/plugins/pure-toplevel-functions.ts | 39 ++++++++++++++++--- .../plugins/pure-toplevel-functions_spec.ts | 34 +++++++++++++++- .../esbuild/javascript-transformer-worker.ts | 20 +++++----- 3 files changed, 74 insertions(+), 19 deletions(-) diff --git a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts index ce47977a74e3..5aec104a38d2 100644 --- a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts +++ b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions.ts @@ -6,12 +6,17 @@ * found in the LICENSE file at https://angular.dev/license */ -import type { PluginObj } from '@babel/core'; +import type { NodePath, PluginObj, PluginPass, types } from '@babel/core'; import annotateAsPure from '@babel/helper-annotate-as-pure'; import * as tslib from 'tslib'; /** - * A cached set of TypeScript helper function names used by the helper name matcher utility function. + * A set of constructor names that are considered to be side-effect free. + */ +const sideEffectFreeConstructors = new Set(['InjectionToken']); + +/** + * A set of TypeScript helper function names used by the helper name matcher utility function. */ const tslibHelpers = new Set(Object.keys(tslib).filter((h) => h.startsWith('__'))); @@ -44,15 +49,23 @@ function isBabelHelperName(name: string): boolean { return babelHelpers.has(name); } +interface ExtendedPluginPass extends PluginPass { + opts: { topLevelSafeMode?: boolean }; +} + /** * A babel plugin factory function for adding the PURE annotation to top-level new and call expressions. - * * @returns A babel plugin object instance. */ export default function (): PluginObj { return { visitor: { - CallExpression(path) { + CallExpression(path: NodePath, state: ExtendedPluginPass) { + const { topLevelSafeMode = false } = state.opts; + if (topLevelSafeMode) { + return; + } + // If the expression has a function parent, it is not top-level if (path.getFunctionParent()) { return; @@ -65,6 +78,7 @@ export default function (): PluginObj { ) { return; } + // Do not annotate TypeScript helpers emitted by the TypeScript compiler or Babel helpers. // They are intended to cause side effects. if ( @@ -76,9 +90,22 @@ export default function (): PluginObj { annotateAsPure(path); }, - NewExpression(path) { + NewExpression(path: NodePath, state: ExtendedPluginPass) { // If the expression has a function parent, it is not top-level - if (!path.getFunctionParent()) { + if (path.getFunctionParent()) { + return; + } + + const { topLevelSafeMode = false } = state.opts; + + if (!topLevelSafeMode) { + annotateAsPure(path); + + return; + } + + const callee = path.get('callee'); + if (callee.isIdentifier() && sideEffectFreeConstructors.has(callee.node.name)) { annotateAsPure(path); } }, diff --git a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts index 891f794f43d5..0966a67d068a 100644 --- a/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts +++ b/packages/angular/build/src/tools/babel/plugins/pure-toplevel-functions_spec.ts @@ -7,23 +7,24 @@ */ import { transformSync } from '@babel/core'; -// eslint-disable-next-line import/no-extraneous-dependencies import { format } from 'prettier'; import pureTopLevelPlugin from './pure-toplevel-functions'; function testCase({ input, expected, + options, }: { input: string; expected: string; + options?: { topLevelSafeMode: boolean }; }): jasmine.ImplementationCallback { return async () => { const result = transformSync(input, { configFile: false, babelrc: false, compact: true, - plugins: [pureTopLevelPlugin], + plugins: [[pureTopLevelPlugin, options]], }); if (!result?.code) { fail('Expected babel to return a transform result.'); @@ -152,4 +153,33 @@ describe('pure-toplevel-functions Babel plugin', () => { }; `), ); + + describe('topLevelSafeMode: true', () => { + it( + 'annotates top-level `new InjectionToken` expressions', + testCase({ + input: `const result = new InjectionToken('abc');`, + expected: `const result = /*#__PURE__*/ new InjectionToken('abc');`, + options: { topLevelSafeMode: true }, + }), + ); + + it( + 'does not annotate other top-level `new` expressions', + testCase({ + input: 'const result = new SomeClass();', + expected: 'const result = new SomeClass();', + options: { topLevelSafeMode: true }, + }), + ); + + it( + 'does not annotate top-level function calls', + testCase({ + input: 'const result = someCall();', + expected: 'const result = someCall();', + options: { topLevelSafeMode: true }, + }), + ); + }); }); 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 8fa551b38ba2..c9e882850a64 100644 --- a/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts +++ b/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts @@ -78,21 +78,19 @@ async function transformWithBabel( } if (options.advancedOptimizations) { - const sideEffectFree = options.sideEffects === false; - const safeAngularPackage = - sideEffectFree && /[\\/]node_modules[\\/]@angular[\\/]/.test(filename); - const { adjustStaticMembers, adjustTypeScriptEnums, elideAngularMetadata, markTopLevelPure } = await import('../babel/plugins'); - if (safeAngularPackage) { - plugins.push(markTopLevelPure); - } + const sideEffectFree = options.sideEffects === false; + const safeAngularPackage = + sideEffectFree && /[\\/]node_modules[\\/]@angular[\\/]/.test(filename); - plugins.push(elideAngularMetadata, adjustTypeScriptEnums, [ - adjustStaticMembers, - { wrapDecorators: sideEffectFree }, - ]); + plugins.push( + [markTopLevelPure, { topLevelSafeMode: !safeAngularPackage }], + elideAngularMetadata, + adjustTypeScriptEnums, + [adjustStaticMembers, { wrapDecorators: sideEffectFree }], + ); } // If no additional transformations are needed, return the data directly From acd785afc956efad56b03402085ff94855b9fcc6 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 24 Sep 2025 07:29:23 +0000 Subject: [PATCH 1500/2162] fix(@angular-devkit/build-angular): mark `InjectionToken` as pure for improved tree-shaking `new InjectionToken(...)` is not considered pure by default by build tools, which prevents it from being tree-shaken when unused. This can lead to unused services being included in production bundles if they are provided as a default value for a token. This change marks `new InjectionToken(...)` calls as pure. The `InjectionToken` constructor is side-effect free; its only purpose is to create a token for the dependency injection system. Marking it as pure is safe and allows build tools like esbuild to tree-shake unused tokens and their dependencies. Closes #31270 --- .../src/tools/babel/presets/application.ts | 16 +++++++--------- .../src/tools/babel/webpack-loader.ts | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts b/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts index 83ec20a0a8ea..5810269ad386 100644 --- a/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts +++ b/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts @@ -57,7 +57,7 @@ export interface ApplicationPresetOptions { inputSourceMap: unknown; }; optimize?: { - pureTopLevel: boolean; + topLevelSafeMode: boolean; wrapDecorators: boolean; }; @@ -220,14 +220,12 @@ export default function (api: unknown, options: ApplicationPresetOptions) { elideAngularMetadata, markTopLevelPure, } = require('@angular/build/private'); - if (options.optimize.pureTopLevel) { - plugins.push(markTopLevelPure); - } - - plugins.push(elideAngularMetadata, adjustTypeScriptEnums, [ - adjustStaticMembers, - { wrapDecorators: options.optimize.wrapDecorators }, - ]); + plugins.push( + [markTopLevelPure, { topLevelSafeMode: options.optimize.topLevelSafeMode }], + elideAngularMetadata, + adjustTypeScriptEnums, + [adjustStaticMembers, { wrapDecorators: options.optimize.wrapDecorators }], + ); } if (options.instrumentCode) { diff --git a/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts b/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts index a3e0746d8ccc..71e0188853d2 100644 --- a/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts +++ b/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts @@ -138,7 +138,7 @@ export default custom(() => { customOptions.optimize = { // Angular packages provide additional tested side effects guarantees and can use // otherwise unsafe optimizations. (@angular/platform-server/init) however has side-effects. - pureTopLevel: AngularPackage && sideEffectFree, + topLevelSafeMode: !(AngularPackage && sideEffectFree), // JavaScript modules that are marked as side effect free are considered to have // no decorators that contain non-local effects. wrapDecorators: sideEffectFree, From 52ecb1b0484a7af6557309e0843b629ee22d4d56 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 25 Sep 2025 15:06:31 +0000 Subject: [PATCH 1501/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- package.json | 28 +- packages/angular/build/package.json | 2 +- packages/angular/ssr/package.json | 12 +- .../angular_devkit/build_angular/package.json | 2 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 982 +++++++----------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 451 insertions(+), 721 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 0c8e92986077..d36aa5c3c623 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@7b35868fc5f723448a6a7fadab13273585d30861 + - uses: angular/dev-infra/github-actions/branch-manager@08d451f9b4e900928b65cd31234693ef9a994492 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c4044565f3e8..273d50fd0504 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 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@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - 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 08ff112868d3..d4517cef5a41 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@7b35868fc5f723448a6a7fadab13273585d30861 + - uses: angular/dev-infra/github-actions/pull-request-labeling@08d451f9b4e900928b65cd31234693ef9a994492 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@7b35868fc5f723448a6a7fadab13273585d30861 + - uses: angular/dev-infra/github-actions/post-approval-changes@08d451f9b4e900928b65cd31234693ef9a994492 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 1de1342f0195..5b91b150ebde 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@7b35868fc5f723448a6a7fadab13273585d30861 + - uses: angular/dev-infra/github-actions/feature-request@08d451f9b4e900928b65cd31234693ef9a994492 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 8976f66f8178..7c2160c6f30e 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@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - 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@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - 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 1455455c986d..cca3eef27be7 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup ESLint Caching uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/linting/licenses@08d451f9b4e900928b65cd31234693ef9a994492 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 - 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@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b35868fc5f723448a6a7fadab13273585d30861 + uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 - 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 87314b1162c2..3a2a3f0d2768 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-next.4", - "@angular/cdk": "21.0.0-next.4", - "@angular/common": "21.0.0-next.4", - "@angular/compiler": "21.0.0-next.4", - "@angular/compiler-cli": "21.0.0-next.4", - "@angular/core": "21.0.0-next.4", - "@angular/forms": "21.0.0-next.4", - "@angular/localize": "21.0.0-next.4", - "@angular/material": "21.0.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d4094430673899dc8faf71a18caf5470016a076", - "@angular/platform-browser": "21.0.0-next.4", - "@angular/platform-server": "21.0.0-next.4", - "@angular/router": "21.0.0-next.4", - "@angular/service-worker": "21.0.0-next.4", + "@angular/animations": "21.0.0-next.5", + "@angular/cdk": "21.0.0-next.5", + "@angular/common": "21.0.0-next.5", + "@angular/compiler": "21.0.0-next.5", + "@angular/compiler-cli": "21.0.0-next.5", + "@angular/core": "21.0.0-next.5", + "@angular/forms": "21.0.0-next.5", + "@angular/localize": "21.0.0-next.5", + "@angular/material": "21.0.0-next.5", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#388e486d3909cd065e26c368d4e465dfae76a156", + "@angular/platform-browser": "21.0.0-next.5", + "@angular/platform-server": "21.0.0-next.5", + "@angular/router": "21.0.0-next.5", + "@angular/service-worker": "21.0.0-next.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 255ce4f0b73b..0fc40f6f1611 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -53,7 +53,7 @@ "@angular-devkit/core": "workspace:*", "jsdom": "27.0.0", "less": "4.4.1", - "ng-packagr": "21.0.0-next.0", + "ng-packagr": "21.0.0-next.3", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "3.2.4" diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index d4913ed24bd7..49be966006b9 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-next.4", - "@angular/compiler": "21.0.0-next.4", - "@angular/core": "21.0.0-next.4", - "@angular/platform-browser": "21.0.0-next.4", - "@angular/platform-server": "21.0.0-next.4", - "@angular/router": "21.0.0-next.4", + "@angular/common": "21.0.0-next.5", + "@angular/compiler": "21.0.0-next.5", + "@angular/core": "21.0.0-next.5", + "@angular/platform-browser": "21.0.0-next.5", + "@angular/platform-server": "21.0.0-next.5", + "@angular/router": "21.0.0-next.5", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index d8b25ee76362..72d6c08a649b 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.0.0-next.0", + "ng-packagr": "21.0.0-next.3", "undici": "7.16.0" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 2d73040c1e4d..967810290190 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": "21.0.0-next.4", - "@angular/compiler-cli": "21.0.0-next.4", + "@angular/compiler": "21.0.0-next.5", + "@angular/compiler-cli": "21.0.0-next.5", "typescript": "5.9.2", "webpack": "5.101.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f92cd53a730a..636a200d3e61 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4 + specifier: 21.0.0-next.5 + version: 21.0.0-next.5 '@angular/compiler-cli': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) '@angular/core': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2))(@angular/compiler@21.0.0-next.4) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(@angular/compiler@21.0.0-next.5) '@angular/material': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(8c19e11e9a230468bfe942ecdcccf107) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5d4094430673899dc8faf71a18caf5470016a076 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5d4094430673899dc8faf71a18caf5470016a076(@modelcontextprotocol/sdk@1.18.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#388e486d3909cd065e26c368d4e465dfae76a156 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/388e486d3909cd065e26c368d4e465dfae76a156(@modelcontextprotocol/sdk@1.18.1) '@angular/platform-browser': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.4)(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.5)(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) packages/angular/build: dependencies: @@ -369,10 +369,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.18 - version: 5.1.18(@types/node@24.5.1) + version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.7 - version: 7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -444,8 +444,8 @@ importers: specifier: 4.4.1 version: 4.4.1 ng-packagr: - specifier: 21.0.0-next.0 - version: 21.0.0-next.0(@angular/compiler-cli@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + specifier: 21.0.0-next.3 + version: 21.0.0-next.3(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) postcss: specifier: 8.5.6 version: 8.5.6 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.2 @@ -473,10 +473,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.8.6 - version: 7.8.6(@types/node@24.5.1) + version: 7.8.6(@types/node@24.5.2) '@listr2/prompt-adapter-inquirer': specifier: 3.0.4 - version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.1))(@types/node@24.5.1)(listr2@9.0.4) + version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.4) '@modelcontextprotocol/sdk': specifier: 1.18.1 version: 1.18.1 @@ -539,23 +539,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4 + specifier: 21.0.0-next.5 + version: 21.0.0-next.5 '@angular/core': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.4)(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.5)(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -769,8 +769,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9) ng-packagr: - specifier: 21.0.0-next.0 - version: 21.0.0-next.0(@angular/compiler-cli@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + specifier: 21.0.0-next.3 + version: 21.0.0-next.3(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) undici: specifier: 7.16.0 version: 7.16.0 @@ -854,7 +854,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.8.6 - version: 7.8.6(@types/node@24.5.1) + version: 7.8.6(@types/node@24.5.2) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -868,11 +868,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4 + specifier: 21.0.0-next.5 + version: 21.0.0-next.5 '@angular/compiler-cli': - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2) + specifier: 21.0.0-next.5 + version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) typescript: specifier: 5.9.2 version: 5.9.2 @@ -978,46 +978,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-next.4': - resolution: {integrity: sha512-irW6//h9KEeY3hNs4TaBs8OfA2tqP3/f5hZIttsCnHtOsQFTevmGsxkn1SSb+gTpW/wC0tOz6Gnfx+MRXXS4UA==} + '@angular/animations@21.0.0-next.5': + resolution: {integrity: sha512-Wx/oXYpA/Pvp1jgyB0EdDXZO5iVsUTFJbv/iWlOOK0dKdZZvWtMnZcvhIhEWugwfSyz4aes0mrg9lFxJyPaPlg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.4 + '@angular/core': 21.0.0-next.5 - '@angular/cdk@21.0.0-next.4': - resolution: {integrity: sha512-CtAqlp4YMBDRamkyxPhd7zjPuOqNxTLbxqCmaxT26th+tmylpUr9CWSCkEhjGvjI3NfsNM385GLyUzGRxdqYXQ==} + '@angular/cdk@21.0.0-next.5': + resolution: {integrity: sha512-sXGF6TpHAMI3tmyjThfMEfRvKfG6kt3giLEilyjmRSEj1tYPuAlnRkMRNXoNIzt/ECWvLe59HCrVqFHR6Djl6w==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-next.4': - resolution: {integrity: sha512-dg6p5ZDOLVlmbjNJtVxOMRqwNZgScFj9nrqMtExr3o/imHOUC/EtTPKQLPveJnpgnr+vepLJHigd2ccaaGgmSg==} + '@angular/common@21.0.0-next.5': + resolution: {integrity: sha512-DQ11vRiynQcSXsHBUJAZjF32BAT56re64vzUTodMvhvNgvXnw/kWG0KpKXna10mBB5kc4W7PKLVZnmIuk42LZA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.4 + '@angular/core': 21.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-next.4': - resolution: {integrity: sha512-hlXQ3NL80Mow/FsAeY0ctIjn94xJhJ4BtF5csNUnfO5bU2qY9l5uicZvghhEPLxrn+bZAAOyIdCH5RHb0EnXHQ==} + '@angular/compiler-cli@21.0.0-next.5': + resolution: {integrity: sha512-IJZJ4B0xMZMsdoM44HghiaGR87arI9kbIDIzjYDIP+vV+yL6o2ZfEs1MqjMt53NDtvYuWqk2/Pg3RZZnfBmjeQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.4 + '@angular/compiler': 21.0.0-next.5 typescript: 5.9.2 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-next.4': - resolution: {integrity: sha512-6CZO4v/4jnRJ7/fKfVNzcInaMT4QcyoTe3Ugf8FMMuWlJRZv4NbzN4hZHV3F2whLwDZsaiuqxav7x20eLXJk7g==} + '@angular/compiler@21.0.0-next.5': + resolution: {integrity: sha512-pW0bYQm3SZPXrANVYkhEkieZ7npYL6U6UVNLbkAYvCqHr8F0KcO29977yE1RcUUsJlTQKftS2CwwMY5a9iM/Wg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-next.4': - resolution: {integrity: sha512-z7M/YyV6GapAH/qEz5v4O/HARNXkquIs8rxg2QY1PhZXWueWel9GXmMceIANrP5zv7GZL8oU64oGTSv2icwJVQ==} + '@angular/core@21.0.0-next.5': + resolution: {integrity: sha512-lBlMrtC5KqcdXJZUx/p7jSxKHKBPkj57p24b9wRdWfVGCdUUB+NI/kXZhIdECtHpE9FdQbkA7bqyD7y+g1zF2w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-next.4 + '@angular/compiler': 21.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1026,75 +1026,75 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-next.4': - resolution: {integrity: sha512-f2VZPamEEevT2EV+Jc1ZgO+Mh/IlRPYsrqbOGxDHCd7ASJ1AWsvGfz7Qme8y+Mf+3zzJSaL4YL9V9wQsFqwlSg==} + '@angular/forms@21.0.0-next.5': + resolution: {integrity: sha512-uNAosi2anYtQCU1K3a/ZKb99Hr70ekxLC79qOOA5uzF7ByszBPeGYEKHFgBjkgCysb79q75KKFQJU4osl1hLsQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.4 - '@angular/core': 21.0.0-next.4 - '@angular/platform-browser': 21.0.0-next.4 + '@angular/common': 21.0.0-next.5 + '@angular/core': 21.0.0-next.5 + '@angular/platform-browser': 21.0.0-next.5 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-next.4': - resolution: {integrity: sha512-rhxahLOTVCqiVH8Gw6vPqukjcQoWSweHcmHduBHzio0UQJQgItJVuSWGLi2xurQij99NqMHEn35roe+QAF4OuA==} + '@angular/localize@21.0.0-next.5': + resolution: {integrity: sha512-IIwpNFb9yX8PzN1DMx1pqyeOsXBBWHprX6kIIgHRDfFHz9Kkw8VJ++oMOx8aTINoOQ5tcPinElNi5a4CEfStOg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.4 - '@angular/compiler-cli': 21.0.0-next.4 + '@angular/compiler': 21.0.0-next.5 + '@angular/compiler-cli': 21.0.0-next.5 - '@angular/material@21.0.0-next.4': - resolution: {integrity: sha512-6PsUM5VAuauj/vYUkRBxCJTWPDjrf7HYhc8sWFND30CeeGRwlhd04dOxniPRcW3Z13cll9OpnmntOElp2+7Blw==} + '@angular/material@21.0.0-next.5': + resolution: {integrity: sha512-CYoUbut3pNOX5/Rz2zP9y0TbLqpI+HawZXYBX4QWTVkpH6lRF9/z8WpxYOqWGLwSam3maeePGvjMigsVqPeJhg==} peerDependencies: - '@angular/cdk': 21.0.0-next.4 + '@angular/cdk': 21.0.0-next.5 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/5d4094430673899dc8faf71a18caf5470016a076': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5d4094430673899dc8faf71a18caf5470016a076} - version: 0.0.0-7b35868fc5f723448a6a7fadab13273585d30861 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/388e486d3909cd065e26c368d4e465dfae76a156': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/388e486d3909cd065e26c368d4e465dfae76a156} + version: 0.0.0-08d451f9b4e900928b65cd31234693ef9a994492 hasBin: true - '@angular/platform-browser@21.0.0-next.4': - resolution: {integrity: sha512-wx/1ifmtT2eyWUSvAY64q+sWpnwl/g1L6RxHYcMlYju+BLHMabo9XmjpdKn/C1oBLQpxWDcHDS4t6ICtDjBsDg==} + '@angular/platform-browser@21.0.0-next.5': + resolution: {integrity: sha512-9Lwqnbns38wVNlGlbov18nJMxxTI7e26QWaSDOn1Ru6C4lr0eN3jBJ1GmrXYpoPaE8IRfclz3u7RZX8oqytVrg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-next.4 - '@angular/common': 21.0.0-next.4 - '@angular/core': 21.0.0-next.4 + '@angular/animations': 21.0.0-next.5 + '@angular/common': 21.0.0-next.5 + '@angular/core': 21.0.0-next.5 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-next.4': - resolution: {integrity: sha512-Px+WaNCzFhxU7I6IOitH+0Z2jPmuwMq8j3g5TweZRl/BcDq0rcVWEPV2PHNBYR/EImAxECVR0kPoMNssRiGO8w==} + '@angular/platform-server@21.0.0-next.5': + resolution: {integrity: sha512-Gg5SM0OKQjKNqrzGmhzW6uxKYBtkbjXGU7RBSKQNecGFsA7SIBwUcFaItNXyZ/Xt4W/Tw0mnkcZxT6Iz9FHAPg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.4 - '@angular/compiler': 21.0.0-next.4 - '@angular/core': 21.0.0-next.4 - '@angular/platform-browser': 21.0.0-next.4 + '@angular/common': 21.0.0-next.5 + '@angular/compiler': 21.0.0-next.5 + '@angular/core': 21.0.0-next.5 + '@angular/platform-browser': 21.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-next.4': - resolution: {integrity: sha512-PfK3h8E7QsG38KxbaV0F1B/smqU0iilBXSmuVXe0Vb76Bx6WtWrGfaOqmxSZ1ndLq4tbJrBn2Vqum2vXOnwAEQ==} + '@angular/router@21.0.0-next.5': + resolution: {integrity: sha512-D3AxMvbX2prek+PQGO3DgI/phgy/YUQUrSdgKpGHN7cRGpomfU+i2+KSICdcYHbK31kM5qHfz9VDSIfdgJuUhA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.4 - '@angular/core': 21.0.0-next.4 - '@angular/platform-browser': 21.0.0-next.4 + '@angular/common': 21.0.0-next.5 + '@angular/core': 21.0.0-next.5 + '@angular/platform-browser': 21.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-next.4': - resolution: {integrity: sha512-a/b97xc4/4zxuWNU2hsSlR+gGifJrXGfLNGCBuzRWohrecwVyEH/7OsBYDDewo6Lq+ziem36QPEGcPLVtvrfzQ==} + '@angular/service-worker@21.0.0-next.5': + resolution: {integrity: sha512-Ha8TKsWqB8SN3btWr9CdvICHYh+5e8uvLoAgD534Uo8DaGGLeHG7l8GWh2/yNy/ISc+A4nQoAZXeIQPyavmx8Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-next.4 + '@angular/core': 21.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.4': @@ -1905,8 +1905,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.2.1': - resolution: {integrity: sha512-0VWlkGB18oDhwMqsgxpt/usMsyjnH3a7hTvQPcAbk7VhFg0QZMDX60mQKfLTFKrB5VwmlaIdVsSZznsTY2S0wA==} + '@firebase/ai@2.3.0': + resolution: {integrity: sha512-rVZgf4FszXPSFVIeWLE8ruLU2JDmPXw4XgghcC0x/lK9veGJIyu+DvyumjreVhW/RwD3E5cNPWxQunzylhf/6w==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -1943,15 +1943,15 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/app-compat@0.5.2': - resolution: {integrity: sha512-cn+U27GDaBS/irsbvrfnPZdcCzeZPRGKieSlyb7vV6LSOL6mdECnB86PgYjYGxSNg8+U48L/NeevTV1odU+mOQ==} + '@firebase/app-compat@0.5.3': + resolution: {integrity: sha512-rRK9YOvgsAU/+edjgubL1q1FyCMjBZZs+fAWtD36tklawkh6WZV07sNLVSceuni+a21oby6xoad+3R8dfztOrA==} engines: {node: '>=20.0.0'} '@firebase/app-types@0.9.3': resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - '@firebase/app@0.14.2': - resolution: {integrity: sha512-Ecx2ig/JLC9ayIQwZHqm41Tzlf4c1WUuFhFUZB1y+JIJqDRE579x7Uil7tKT8MwDpOPwrK5ZtpxdSsrfy/LF8Q==} + '@firebase/app@0.14.3': + resolution: {integrity: sha512-by1leTfZkwGycPKRWpc+p5/IhpnOj8zaScVi4RRm9fMoFYS3IE87Wzx1Yf/ruVYowXOEuLqYY3VmJw5tU3+0Bg==} engines: {node: '>=20.0.0'} '@firebase/auth-compat@0.6.0': @@ -1999,8 +1999,8 @@ packages: resolution: {integrity: sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==} engines: {node: '>=20.0.0'} - '@firebase/firestore-compat@0.4.1': - resolution: {integrity: sha512-BjalPTDh/K0vmR/M/DE148dpIqbcfvtFVTietbUDWDWYIl9YH0TTVp/EwXRbZwswPxyjx4GdHW61GB2AYVz1SQ==} + '@firebase/firestore-compat@0.4.2': + resolution: {integrity: sha512-cy7ov6SpFBx+PHwFdOOjbI7kH00uNKmIFurAn560WiPCZXy9EMnil1SOG7VF4hHZKdenC+AHtL4r3fNpirpm0w==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app-compat': 0.x @@ -2011,8 +2011,8 @@ packages: '@firebase/app-types': 0.x '@firebase/util': 1.x - '@firebase/firestore@4.9.1': - resolution: {integrity: sha512-PYVUTkhC9y8pydrqC3O1Oc4AMfkGSWdmuH9xgPJjiEbpUIUPQ4J8wJhyuash+o2u+axmyNRFP8ULNUKb+WzBzQ==} + '@firebase/firestore@4.9.2': + resolution: {integrity: sha512-iuA5+nVr/IV/Thm0Luoqf2mERUvK9g791FZpUJV1ZGXO6RL2/i/WFJUj5ZTVXy5pRjpWYO+ZzPcReNrlilmztA==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -2077,16 +2077,16 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/remote-config-compat@0.2.19': - resolution: {integrity: sha512-y7PZAb0l5+5oIgLJr88TNSelxuASGlXyAKj+3pUc4fDuRIdPNBoONMHaIUa9rlffBR5dErmaD2wUBJ7Z1a513Q==} + '@firebase/remote-config-compat@0.2.20': + resolution: {integrity: sha512-P/ULS9vU35EL9maG7xp66uljkZgcPMQOxLj3Zx2F289baTKSInE6+YIkgHEi1TwHoddC/AFePXPpshPlEFkbgg==} peerDependencies: '@firebase/app-compat': 0.x - '@firebase/remote-config-types@0.4.0': - resolution: {integrity: sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==} + '@firebase/remote-config-types@0.5.0': + resolution: {integrity: sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==} - '@firebase/remote-config@0.6.6': - resolution: {integrity: sha512-Yelp5xd8hM4NO1G1SuWrIk4h5K42mNwC98eWZ9YLVu6Z0S6hFk1mxotAdCRmH2luH8FASlYgLLq6OQLZ4nbnCA==} + '@firebase/remote-config@0.7.0': + resolution: {integrity: sha512-dX95X6WlW7QlgNd7aaGdjAIZUiQkgWgNS+aKNu4Wv92H1T8Ue/NDUjZHd9xb8fHxLXIHNZeco9/qbZzr500MjQ==} peerDependencies: '@firebase/app': 0.x @@ -2112,8 +2112,8 @@ packages: resolution: {integrity: sha512-0AZUyYUfpMNcztR5l09izHwXkZpghLgCUaAGjtMwXnCg3bj4ml5VgiwqOMOxJ+Nw4qN/zJAaOQBcJ7KGkWStqQ==} engines: {node: '>=20.0.0'} - '@firebase/webchannel-wrapper@1.0.4': - resolution: {integrity: sha512-6m8+P+dE/RPl4OPzjTxcTbQ0rGeRyeTvAi9KwIffBVCiAMKrfXfLZaqD1F+m8t4B5/Q5aHsMozOgirkH1F5oMQ==} + '@firebase/webchannel-wrapper@1.0.5': + resolution: {integrity: sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==} '@glideapps/ts-necessities@2.2.3': resolution: {integrity: sha512-gXi0awOZLHk3TbW55GZLCPP6O+y/b5X1pBXKBVckFONSwF1z1E5ND2BGJsghQFah+pW7pkkyFb2VhUQI2qhL5w==} @@ -3076,223 +3076,112 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.50.2': - resolution: {integrity: sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.52.2': resolution: {integrity: sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.50.2': - resolution: {integrity: sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.52.2': resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.50.2': - resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.52.2': resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.50.2': - resolution: {integrity: sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.52.2': resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.50.2': - resolution: {integrity: sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.52.2': resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.50.2': - resolution: {integrity: sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.2': resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.50.2': - resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.52.2': resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.50.2': - resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.52.2': resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.50.2': - resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.52.2': resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.50.2': - resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.52.2': resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.50.2': - resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.52.2': resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.50.2': - resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.2': resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.50.2': - resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.2': resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.50.2': - resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.52.2': resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.50.2': - resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.52.2': resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.50.2': - resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.2': resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.50.2': - resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.52.2': resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.50.2': - resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.52.2': resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.50.2': - resolution: {integrity: sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.52.2': resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.50.2': - resolution: {integrity: sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.2': resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==} cpu: [ia32] @@ -3303,11 +3192,6 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.50.2': - resolution: {integrity: sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.2': resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==} cpu: [x64] @@ -3558,8 +3442,8 @@ packages: '@types/node@22.18.6': resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} - '@types/node@24.5.1': - resolution: {integrity: sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==} + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -4540,10 +4424,6 @@ packages: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - cli-spinners@3.2.1: resolution: {integrity: sha512-Xh+cRh7dzk9n7gYE+M1Lusy3yg5ADy9m6zOHqmcu9kSkWpo7ySWVUS3dXleR3konJOEOdHzsKjWkGed6g2eJuA==} engines: {node: '>=18.20'} @@ -5495,8 +5375,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase@12.2.1: - resolution: {integrity: sha512-UkuW2ZYaq/QuOQ24bfaqmkVqoBFhkA/ptATfPuRtc5vdm+zhwc3mfZBwFe6LqH9yrCN/6rAblgxKz2/0tDvA7w==} + firebase@12.3.0: + resolution: {integrity: sha512-/JVja0IDO8zPETGv4TvvBwo7RwcQFz+RQ3JBETNtUSeqsDdI9G7fhRTkCy1sPKnLzW0xpm/kL8GOj6ncndTT3g==} flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} @@ -6224,10 +6104,6 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} @@ -6657,10 +6533,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - log-symbols@7.0.1: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} @@ -6974,12 +6846,12 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.0.0-next.0: - resolution: {integrity: sha512-damIo8QH74/MNMP3KWORY7nKqOSBC02xMIt2V2WHLcxvbw7ADiYC4nSGRzbCNAg/5f6Y3SkR9jJRMeGk91xK8w==} + ng-packagr@21.0.0-next.3: + resolution: {integrity: sha512-pQpCt14RJFzJmAxLeLrCf4UGTeRc9rVGNyLCdp95OD+5rpxdBuWLla/54xdXiyB6VJcVTfny+b7rWBGmtxMENQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': ^20.0.0 || ^20.2.0-rc || ^21.0.0-next.0 + '@angular/compiler-cli': ^21.0.0-next tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 typescript: 5.9.2 @@ -7251,10 +7123,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} - ora@9.0.0: resolution: {integrity: sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==} engines: {node: '>=20'} @@ -7863,11 +7731,6 @@ packages: '@types/node': optional: true - rollup@4.50.2: - resolution: {integrity: sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.52.2: resolution: {integrity: sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -9376,28 +9239,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2)': + '@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2)': dependencies: - '@angular/compiler': 21.0.0-next.4 + '@angular/compiler': 21.0.0-next.5 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9411,30 +9274,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-next.4': + '@angular/compiler@21.0.0-next.5': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-next.4 + '@angular/compiler': 21.0.0-next.5 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2))(@angular/compiler@21.0.0-next.4)': + '@angular/localize@21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(@angular/compiler@21.0.0-next.5)': dependencies: - '@angular/compiler': 21.0.0-next.4 - '@angular/compiler-cli': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2) + '@angular/compiler': 21.0.0-next.5 + '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9442,23 +9305,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.4(8c19e11e9a230468bfe942ecdcccf107)': + '@angular/material@21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b)': dependencies: - '@angular/cdk': 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5d4094430673899dc8faf71a18caf5470016a076(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/388e486d3909cd065e26c368d4e465dfae76a156(@modelcontextprotocol/sdk@1.18.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) '@google/genai': 1.20.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.8.6(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/prompts': 7.8.6(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) '@octokit/auth-app': 8.1.0 '@octokit/core': 7.0.4 '@octokit/graphql': 9.0.1 @@ -9476,7 +9339,7 @@ snapshots: '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.0 '@types/jasmine': 5.1.9 - '@types/node': 24.5.1 + '@types/node': 24.5.2 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -9490,7 +9353,7 @@ snapshots: ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.2.1 + firebase: 12.3.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) jasmine: 5.10.0 @@ -9513,35 +9376,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.4)(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.5)(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-next.4 - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-next.5 + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-next.4(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.4(@angular/animations@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-next.4(@angular/core@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -10449,9 +10312,9 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.2.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.2)': + '@firebase/ai@2.3.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/app-check-interop-types': 0.3.3 '@firebase/app-types': 0.9.3 '@firebase/component': 0.7.0 @@ -10459,11 +10322,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/analytics-compat@0.2.24(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2)': + '@firebase/analytics-compat@0.2.24(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/analytics': 0.10.18(@firebase/app@0.14.2) + '@firebase/analytics': 0.10.18(@firebase/app@0.14.3) '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10472,20 +10335,20 @@ snapshots: '@firebase/analytics-types@0.8.3': {} - '@firebase/analytics@0.10.18(@firebase/app@0.14.2)': + '@firebase/analytics@0.10.18(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.2) + '@firebase/installations': 0.6.19(@firebase/app@0.14.3) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2)': + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-check': 0.11.0(@firebase/app@0.14.2) + '@firebase/app-check': 0.11.0(@firebase/app@0.14.3) '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10497,17 +10360,17 @@ snapshots: '@firebase/app-check-types@0.5.3': {} - '@firebase/app-check@0.11.0(@firebase/app@0.14.2)': + '@firebase/app-check@0.11.0(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-compat@0.5.2': + '@firebase/app-compat@0.5.3': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10515,7 +10378,7 @@ snapshots: '@firebase/app-types@0.9.3': {} - '@firebase/app@0.14.2': + '@firebase/app@0.14.3': dependencies: '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10523,10 +10386,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2)': + '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 - '@firebase/auth': 1.11.0(@firebase/app@0.14.2) + '@firebase/app-compat': 0.5.3 + '@firebase/auth': 1.11.0(@firebase/app@0.14.3) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -10543,9 +10406,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.11.0(@firebase/app@0.14.2)': + '@firebase/auth@1.11.0(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10556,9 +10419,9 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/data-connect@0.3.11(@firebase/app@0.14.2)': + '@firebase/data-connect@0.3.11(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10589,11 +10452,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.1(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2)': + '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.1(@firebase/app@0.14.2) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.3) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10606,22 +10469,22 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.1(@firebase/app@0.14.2)': + '@firebase/firestore@4.9.2(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 - '@firebase/webchannel-wrapper': 1.0.4 + '@firebase/webchannel-wrapper': 1.0.5 '@grpc/grpc-js': 1.9.15 '@grpc/proto-loader': 0.7.15 tslib: 2.8.1 - '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2)': + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 - '@firebase/functions': 0.13.1(@firebase/app@0.14.2) + '@firebase/functions': 0.13.1(@firebase/app@0.14.3) '@firebase/functions-types': 0.6.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10630,9 +10493,9 @@ snapshots: '@firebase/functions-types@0.6.3': {} - '@firebase/functions@0.13.1(@firebase/app@0.14.2)': + '@firebase/functions@0.13.1(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/app-check-interop-types': 0.3.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 @@ -10640,11 +10503,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2)': + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.2) + '@firebase/installations': 0.6.19(@firebase/app@0.14.3) '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10656,9 +10519,9 @@ snapshots: dependencies: '@firebase/app-types': 0.9.3 - '@firebase/installations@0.6.19(@firebase/app@0.14.2)': + '@firebase/installations@0.6.19(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 idb: 7.1.1 @@ -10668,11 +10531,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2)': + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 - '@firebase/messaging': 0.12.23(@firebase/app@0.14.2) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.3) '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: @@ -10680,22 +10543,22 @@ snapshots: '@firebase/messaging-interop-types@0.2.3': {} - '@firebase/messaging@0.12.23(@firebase/app@0.14.2)': + '@firebase/messaging@0.12.23(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.2) + '@firebase/installations': 0.6.19(@firebase/app@0.14.3) '@firebase/messaging-interop-types': 0.2.3 '@firebase/util': 1.13.0 idb: 7.1.1 tslib: 2.8.1 - '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2)': + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/performance': 0.7.9(@firebase/app@0.14.2) + '@firebase/performance': 0.7.9(@firebase/app@0.14.3) '@firebase/performance-types': 0.2.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10704,44 +10567,44 @@ snapshots: '@firebase/performance-types@0.2.3': {} - '@firebase/performance@0.7.9(@firebase/app@0.14.2)': + '@firebase/performance@0.7.9(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.2) + '@firebase/installations': 0.6.19(@firebase/app@0.14.3) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 web-vitals: 4.2.4 - '@firebase/remote-config-compat@0.2.19(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2)': + '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/remote-config': 0.6.6(@firebase/app@0.14.2) - '@firebase/remote-config-types': 0.4.0 + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.3) + '@firebase/remote-config-types': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: - '@firebase/app' - '@firebase/remote-config-types@0.4.0': {} + '@firebase/remote-config-types@0.5.0': {} - '@firebase/remote-config@0.6.6(@firebase/app@0.14.2)': + '@firebase/remote-config@0.7.0(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.2) + '@firebase/installations': 0.6.19(@firebase/app@0.14.3) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2)': + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': dependencies: - '@firebase/app-compat': 0.5.2 + '@firebase/app-compat': 0.5.3 '@firebase/component': 0.7.0 - '@firebase/storage': 0.14.0(@firebase/app@0.14.2) + '@firebase/storage': 0.14.0(@firebase/app@0.14.3) '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10754,9 +10617,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/storage@0.14.0(@firebase/app@0.14.2)': + '@firebase/storage@0.14.0(@firebase/app@0.14.3)': dependencies: - '@firebase/app': 0.14.2 + '@firebase/app': 0.14.3 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10765,7 +10628,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/webchannel-wrapper@1.0.4': {} + '@firebase/webchannel-wrapper@1.0.5': {} '@glideapps/ts-necessities@2.2.3': {} @@ -10879,128 +10742,128 @@ snapshots: '@inquirer/ansi@1.0.0': {} - '@inquirer/checkbox@4.2.4(@types/node@24.5.1)': + '@inquirer/checkbox@4.2.4(@types/node@24.5.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/type': 3.0.8(@types/node@24.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/confirm@5.1.18(@types/node@24.5.1)': + '@inquirer/confirm@5.1.18(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/core@10.2.2(@types/node@24.5.1)': + '@inquirer/core@10.2.2(@types/node@24.5.2)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/type': 3.0.8(@types/node@24.5.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/editor@4.2.20(@types/node@24.5.1)': + '@inquirer/editor@4.2.20(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/external-editor': 1.0.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/external-editor': 1.0.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/expand@4.0.20(@types/node@24.5.1)': + '@inquirer/expand@4.0.20(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/external-editor@1.0.2(@types/node@24.5.1)': + '@inquirer/external-editor@1.0.2(@types/node@24.5.2)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 '@inquirer/figures@1.0.13': {} - '@inquirer/input@4.2.4(@types/node@24.5.1)': + '@inquirer/input@4.2.4(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/number@3.0.20(@types/node@24.5.1)': + '@inquirer/number@3.0.20(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/password@4.0.20(@types/node@24.5.1)': + '@inquirer/password@4.0.20(@types/node@24.5.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) optionalDependencies: - '@types/node': 24.5.1 - - '@inquirer/prompts@7.8.6(@types/node@24.5.1)': - dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@24.5.1) - '@inquirer/confirm': 5.1.18(@types/node@24.5.1) - '@inquirer/editor': 4.2.20(@types/node@24.5.1) - '@inquirer/expand': 4.0.20(@types/node@24.5.1) - '@inquirer/input': 4.2.4(@types/node@24.5.1) - '@inquirer/number': 3.0.20(@types/node@24.5.1) - '@inquirer/password': 4.0.20(@types/node@24.5.1) - '@inquirer/rawlist': 4.1.8(@types/node@24.5.1) - '@inquirer/search': 3.1.3(@types/node@24.5.1) - '@inquirer/select': 4.3.4(@types/node@24.5.1) + '@types/node': 24.5.2 + + '@inquirer/prompts@7.8.6(@types/node@24.5.2)': + dependencies: + '@inquirer/checkbox': 4.2.4(@types/node@24.5.2) + '@inquirer/confirm': 5.1.18(@types/node@24.5.2) + '@inquirer/editor': 4.2.20(@types/node@24.5.2) + '@inquirer/expand': 4.0.20(@types/node@24.5.2) + '@inquirer/input': 4.2.4(@types/node@24.5.2) + '@inquirer/number': 3.0.20(@types/node@24.5.2) + '@inquirer/password': 4.0.20(@types/node@24.5.2) + '@inquirer/rawlist': 4.1.8(@types/node@24.5.2) + '@inquirer/search': 3.1.3(@types/node@24.5.2) + '@inquirer/select': 4.3.4(@types/node@24.5.2) optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/rawlist@4.1.8(@types/node@24.5.1)': + '@inquirer/rawlist@4.1.8(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/search@3.1.3(@types/node@24.5.1)': + '@inquirer/search@3.1.3(@types/node@24.5.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/type': 3.0.8(@types/node@24.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/select@4.3.4(@types/node@24.5.1)': + '@inquirer/select@4.3.4(@types/node@24.5.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.5.1) + '@inquirer/core': 10.2.2(@types/node@24.5.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/type': 3.0.8(@types/node@24.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 - '@inquirer/type@3.0.8(@types/node@24.5.1)': + '@inquirer/type@3.0.8(@types/node@24.5.2)': optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 '@isaacs/balanced-match@4.0.1': {} @@ -11091,10 +10954,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.1))(@types/node@24.5.1)(listr2@9.0.4)': + '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.4)': dependencies: - '@inquirer/prompts': 7.8.6(@types/node@24.5.1) - '@inquirer/type': 3.0.8(@types/node@24.5.1) + '@inquirer/prompts': 7.8.6(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.5.2) listr2: 9.0.4 transitivePeerDependencies: - '@types/node' @@ -11647,12 +11510,6 @@ snapshots: optionalDependencies: rollup: 4.52.2 - '@rollup/plugin-json@6.1.0(rollup@4.50.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - optionalDependencies: - rollup: 4.50.2 - '@rollup/plugin-json@6.1.0(rollup@4.52.2)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.2) @@ -11687,14 +11544,6 @@ snapshots: optionalDependencies: rollup: 4.52.2 - '@rollup/pluginutils@5.3.0(rollup@4.50.2)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.50.2 - '@rollup/pluginutils@5.3.0(rollup@4.52.2)': dependencies: '@types/estree': 1.0.8 @@ -11703,132 +11552,69 @@ snapshots: optionalDependencies: rollup: 4.52.2 - '@rollup/rollup-android-arm-eabi@4.50.2': - optional: true - '@rollup/rollup-android-arm-eabi@4.52.2': optional: true - '@rollup/rollup-android-arm64@4.50.2': - optional: true - '@rollup/rollup-android-arm64@4.52.2': optional: true - '@rollup/rollup-darwin-arm64@4.50.2': - optional: true - '@rollup/rollup-darwin-arm64@4.52.2': optional: true - '@rollup/rollup-darwin-x64@4.50.2': - optional: true - '@rollup/rollup-darwin-x64@4.52.2': optional: true - '@rollup/rollup-freebsd-arm64@4.50.2': - optional: true - '@rollup/rollup-freebsd-arm64@4.52.2': optional: true - '@rollup/rollup-freebsd-x64@4.50.2': - optional: true - '@rollup/rollup-freebsd-x64@4.52.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.50.2': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.50.2': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.50.2': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.50.2': - optional: true - '@rollup/rollup-linux-arm64-musl@4.52.2': optional: true - '@rollup/rollup-linux-loong64-gnu@4.50.2': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.50.2': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.50.2': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.50.2': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.50.2': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.50.2': - optional: true - '@rollup/rollup-linux-x64-gnu@4.52.2': optional: true - '@rollup/rollup-linux-x64-musl@4.50.2': - optional: true - '@rollup/rollup-linux-x64-musl@4.52.2': optional: true - '@rollup/rollup-openharmony-arm64@4.50.2': - optional: true - '@rollup/rollup-openharmony-arm64@4.52.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.50.2': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.50.2': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.2': optional: true '@rollup/rollup-win32-x64-gnu@4.52.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.50.2': - optional: true - '@rollup/rollup-win32-x64-msvc@4.52.2': optional: true @@ -12140,7 +11926,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.5.1': + '@types/node@24.5.2': dependencies: undici-types: 7.12.0 @@ -12503,11 +12289,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - vite: 7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12522,7 +12308,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12534,13 +12320,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -13512,8 +13298,6 @@ snapshots: dependencies: string-width: 4.2.3 - cli-spinners@2.9.2: {} - cli-spinners@3.2.1: {} cli-truncate@5.1.0: @@ -14629,35 +14413,35 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase@12.2.1: + firebase@12.3.0: dependencies: - '@firebase/ai': 2.2.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.2) - '@firebase/analytics': 0.10.18(@firebase/app@0.14.2) - '@firebase/analytics-compat': 0.2.24(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2) - '@firebase/app': 0.14.2 - '@firebase/app-check': 0.11.0(@firebase/app@0.14.2) - '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2) - '@firebase/app-compat': 0.5.2 + '@firebase/ai': 2.3.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) + '@firebase/analytics': 0.10.18(@firebase/app@0.14.3) + '@firebase/analytics-compat': 0.2.24(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) + '@firebase/app': 0.14.3 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.3) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) + '@firebase/app-compat': 0.5.3 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.11.0(@firebase/app@0.14.2) - '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2) - '@firebase/data-connect': 0.3.11(@firebase/app@0.14.2) + '@firebase/auth': 1.11.0(@firebase/app@0.14.3) + '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) + '@firebase/data-connect': 0.3.11(@firebase/app@0.14.3) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.1(@firebase/app@0.14.2) - '@firebase/firestore-compat': 0.4.1(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2) - '@firebase/functions': 0.13.1(@firebase/app@0.14.2) - '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2) - '@firebase/installations': 0.6.19(@firebase/app@0.14.2) - '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2) - '@firebase/messaging': 0.12.23(@firebase/app@0.14.2) - '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2) - '@firebase/performance': 0.7.9(@firebase/app@0.14.2) - '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2) - '@firebase/remote-config': 0.6.6(@firebase/app@0.14.2) - '@firebase/remote-config-compat': 0.2.19(@firebase/app-compat@0.5.2)(@firebase/app@0.14.2) - '@firebase/storage': 0.14.0(@firebase/app@0.14.2) - '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.2)(@firebase/app-types@0.9.3)(@firebase/app@0.14.2) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.3) + '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) + '@firebase/functions': 0.13.1(@firebase/app@0.14.3) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.3) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) + '@firebase/performance': 0.7.9(@firebase/app@0.14.3) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.3) + '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) + '@firebase/storage': 0.14.0(@firebase/app@0.14.3) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) '@firebase/util': 1.13.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -15454,8 +15238,6 @@ snapshots: is-typedarray@1.0.0: {} - is-unicode-supported@1.3.0: {} - is-unicode-supported@2.1.0: {} is-url@1.2.4: {} @@ -15991,11 +15773,6 @@ snapshots: lodash@4.17.21: {} - log-symbols@6.0.0: - dependencies: - chalk: 5.6.2 - is-unicode-supported: 1.3.0 - log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 @@ -16304,11 +16081,11 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.0(@angular/compiler-cli@21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): + ng-packagr@21.0.0-next.3(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.4(@angular/compiler@21.0.0-next.4)(typescript@5.9.2) - '@rollup/plugin-json': 6.1.0(rollup@4.50.2) + '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) + '@rollup/plugin-json': 6.1.0(rollup@4.52.2) '@rollup/wasm-node': 4.52.0 ajv: 8.17.1 ansi-colors: 4.1.3 @@ -16321,17 +16098,17 @@ snapshots: injection-js: 2.5.0 jsonc-parser: 3.3.1 less: 4.4.1 - ora: 8.2.0 + ora: 9.0.0 piscina: 5.1.3 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.50.2)(typescript@5.9.2) + rollup-plugin-dts: 6.2.3(rollup@4.52.2)(typescript@5.9.2) rxjs: 7.8.2 sass: 1.93.1 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.2 optionalDependencies: - rollup: 4.50.2 + rollup: 4.52.2 nock@14.0.10: dependencies: @@ -16545,18 +16322,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@8.2.0: - dependencies: - chalk: 5.6.2 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.2 - ora@9.0.0: dependencies: chalk: 5.6.2 @@ -17283,14 +17048,6 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.50.2)(typescript@5.9.2): - dependencies: - magic-string: 0.30.19 - rollup: 4.50.2 - typescript: 5.9.2 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.52.2)(typescript@5.9.2): dependencies: magic-string: 0.30.19 @@ -17306,33 +17063,6 @@ snapshots: optionalDependencies: '@types/node': 22.18.6 - rollup@4.50.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.2 - '@rollup/rollup-android-arm64': 4.50.2 - '@rollup/rollup-darwin-arm64': 4.50.2 - '@rollup/rollup-darwin-x64': 4.50.2 - '@rollup/rollup-freebsd-arm64': 4.50.2 - '@rollup/rollup-freebsd-x64': 4.50.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.2 - '@rollup/rollup-linux-arm-musleabihf': 4.50.2 - '@rollup/rollup-linux-arm64-gnu': 4.50.2 - '@rollup/rollup-linux-arm64-musl': 4.50.2 - '@rollup/rollup-linux-loong64-gnu': 4.50.2 - '@rollup/rollup-linux-ppc64-gnu': 4.50.2 - '@rollup/rollup-linux-riscv64-gnu': 4.50.2 - '@rollup/rollup-linux-riscv64-musl': 4.50.2 - '@rollup/rollup-linux-s390x-gnu': 4.50.2 - '@rollup/rollup-linux-x64-gnu': 4.50.2 - '@rollup/rollup-linux-x64-musl': 4.50.2 - '@rollup/rollup-openharmony-arm64': 4.50.2 - '@rollup/rollup-win32-arm64-msvc': 4.50.2 - '@rollup/rollup-win32-ia32-msvc': 4.50.2 - '@rollup/rollup-win32-x64-msvc': 4.50.2 - fsevents: 2.3.3 - rollup@4.52.2: dependencies: '@types/estree': 1.0.8 @@ -18469,13 +18199,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18490,7 +18220,7 @@ snapshots: - tsx - yaml - vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18499,7 +18229,7 @@ snapshots: rollup: 4.52.2 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 2.5.1 less: 4.4.1 @@ -18508,7 +18238,7 @@ snapshots: tsx: 4.20.5 yaml: 2.8.1 - vite@7.1.7(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18517,7 +18247,7 @@ snapshots: rollup: 4.52.2 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 2.5.1 less: 4.4.1 @@ -18526,11 +18256,11 @@ snapshots: tsx: 4.20.5 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.1)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18548,11 +18278,11 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.6(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.1)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.5.1 + '@types/node': 24.5.2 jsdom: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 43c4ca8c6505..4f996774b649 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#3b335727ee892a5a10472db6b2e29115762c0afa", - "@angular/cdk": "github:angular/cdk-builds#646bfcdf77355a69271c02f0208cbe0ac42e2cbd", - "@angular/common": "github:angular/common-builds#28c1c9b42c6ebdf6cfc340e8e75db508020bb17d", - "@angular/compiler": "github:angular/compiler-builds#015a47c2f6a8ddb7a341b3a006ca416fdad675c6", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#f6813c2d8d22613f2ec94f1b99490e7ee11bc0b3", - "@angular/core": "github:angular/core-builds#16a1bcc06c1865324178df1cbda6a7d43dafbf55", - "@angular/forms": "github:angular/forms-builds#e9fb045c0e890a9348acb321d7899e841cc63139", - "@angular/language-service": "github:angular/language-service-builds#721d09ac8b01c601ee0f777ae88f06a679247b3c", - "@angular/localize": "github:angular/localize-builds#e65f292a8c65b118ac898da772dce1ef321bce0d", - "@angular/material": "github:angular/material-builds#e84506988260d0fd85f178673f05e03ba9443e0b", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#66e56f257455da754b02810724e773524f278d74", - "@angular/platform-browser": "github:angular/platform-browser-builds#dc910019e3eb37c8b40b841d06958ff94a0b1a3d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#79041cb31ccefb50c5a8fd191cbdca028e94494e", - "@angular/platform-server": "github:angular/platform-server-builds#714c8f2fb3e91c0142f6086175098fbefec27564", - "@angular/router": "github:angular/router-builds#032c73b97b88b6786e681bdf1631705d39b7280c", - "@angular/service-worker": "github:angular/service-worker-builds#a9b2364b2f1b38e9e9c2033d3968b2fb175538cb" + "@angular/animations": "github:angular/animations-builds#9ee398a14085554c1bf276318edfe709f8098dc0", + "@angular/cdk": "github:angular/cdk-builds#39db353b15e92a01ad481f2250e7824b45a00b0d", + "@angular/common": "github:angular/common-builds#dbb9f132de307b090f9374e55ce709c1c6de3256", + "@angular/compiler": "github:angular/compiler-builds#f0ad0d1be7cdc7d39d593a7b5af68c92c43033bf", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#083fdb1cf65ac56dbb1b43165e88f8b87337bb85", + "@angular/core": "github:angular/core-builds#ad5556c3acb93926799355177bc0ceba01660092", + "@angular/forms": "github:angular/forms-builds#e7b014a04e85d3214cf8ce00b87c9b859f68e5d2", + "@angular/language-service": "github:angular/language-service-builds#5e4da2ff8fe409d8ae5609292bb011c977fbb639", + "@angular/localize": "github:angular/localize-builds#f4589ce20d1cffabc8cc04b3a0bdd1d1299dc598", + "@angular/material": "github:angular/material-builds#2fc13f0156d9098efa33c33fc8f5bac65c29b058", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#123de8718fc9b2e7d7aafd836e9f1587ff61fa45", + "@angular/platform-browser": "github:angular/platform-browser-builds#483d0013f4519a689f980d0f87cbe88bec7aa867", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#2c5e23c675f0cdeedbfa463e698f07ccba7681b7", + "@angular/platform-server": "github:angular/platform-server-builds#558c1a17a147abcca7426d69083b44e92fc32d6d", + "@angular/router": "github:angular/router-builds#dd44c0b9b70de3543c6ce42fdce039479b4a4c3d", + "@angular/service-worker": "github:angular/service-worker-builds#54a46c347a97e7362018766e8dd3c66cd58f113c" } } From c053ee7f49187196e33d8f99bd23d633599d52b6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 25 Sep 2025 10:39:12 +0000 Subject: [PATCH 1502/2162] build: update all github actions See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/pr.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 40fb506b29de..dcb4fd2a02ad 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@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/init@303c0aef88fc2fe5ff6d63d3b1596bfd83dfa1f9 # v3.30.4 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/analyze@303c0aef88fc2fe5ff6d63d3b1596bfd83dfa1f9 # v3.30.4 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index cca3eef27be7..e325ebecf9a0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Bazel uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 - name: Setup ESLint Caching - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: .eslintcache key: ${{ runner.os }}-${{ hashFiles('.eslintrc.json') }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 24132b0bb481..3a85b4f55faa 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@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/upload-sarif@303c0aef88fc2fe5ff6d63d3b1596bfd83dfa1f9 # v3.30.4 with: sarif_file: results.sarif From 05ba42e40e001e3f69b6728c8ce2b47d0b0abc5f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 25 Sep 2025 21:04:59 +0000 Subject: [PATCH 1503/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 26 +++++----- 9 files changed, 75 insertions(+), 75 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index d36aa5c3c623..e6942d6a95e5 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@08d451f9b4e900928b65cd31234693ef9a994492 + - uses: angular/dev-infra/github-actions/branch-manager@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 273d50fd0504..3e3603e80ec1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 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@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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 d4517cef5a41..7e7d59b8f61d 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@08d451f9b4e900928b65cd31234693ef9a994492 + - uses: angular/dev-infra/github-actions/pull-request-labeling@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@08d451f9b4e900928b65cd31234693ef9a994492 + - uses: angular/dev-infra/github-actions/post-approval-changes@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 5b91b150ebde..805d232b2812 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@08d451f9b4e900928b65cd31234693ef9a994492 + - uses: angular/dev-infra/github-actions/feature-request@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 7c2160c6f30e..28a79a294b91 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@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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 e325ebecf9a0..a8cff8f287b3 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/linting/licenses@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@08d451f9b4e900928b65cd31234693ef9a994492 + uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 - 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 3a2a3f0d2768..ff137f9be2c6 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.5", "@angular/localize": "21.0.0-next.5", "@angular/material": "21.0.0-next.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#388e486d3909cd065e26c368d4e465dfae76a156", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#8d333e8e2c48ff99a1a3ca633c1d6a456c082c55", "@angular/platform-browser": "21.0.0-next.5", "@angular/platform-server": "21.0.0-next.5", "@angular/router": "21.0.0-next.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 636a200d3e61..4da288a15cff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.5 version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#388e486d3909cd065e26c368d4e465dfae76a156 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/388e486d3909cd065e26c368d4e465dfae76a156(@modelcontextprotocol/sdk@1.18.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#8d333e8e2c48ff99a1a3ca633c1d6a456c082c55 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55(@modelcontextprotocol/sdk@1.18.1) '@angular/platform-browser': specifier: 21.0.0-next.5 version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/388e486d3909cd065e26c368d4e465dfae76a156': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/388e486d3909cd065e26c368d4e465dfae76a156} - version: 0.0.0-08d451f9b4e900928b65cd31234693ef9a994492 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55} + version: 0.0.0-715d1659cb1128762a84a8c41d7bd6fb6071ddd7 hasBin: true '@angular/platform-browser@21.0.0-next.5': @@ -9315,7 +9315,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/388e486d3909cd065e26c368d4e465dfae76a156(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55(@modelcontextprotocol/sdk@1.18.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 4f996774b649..1f7444ebfb58 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#9ee398a14085554c1bf276318edfe709f8098dc0", + "@angular/animations": "github:angular/animations-builds#ae607f0c2b54f579f6136b437a7e47943af87343", "@angular/cdk": "github:angular/cdk-builds#39db353b15e92a01ad481f2250e7824b45a00b0d", - "@angular/common": "github:angular/common-builds#dbb9f132de307b090f9374e55ce709c1c6de3256", - "@angular/compiler": "github:angular/compiler-builds#f0ad0d1be7cdc7d39d593a7b5af68c92c43033bf", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#083fdb1cf65ac56dbb1b43165e88f8b87337bb85", - "@angular/core": "github:angular/core-builds#ad5556c3acb93926799355177bc0ceba01660092", - "@angular/forms": "github:angular/forms-builds#e7b014a04e85d3214cf8ce00b87c9b859f68e5d2", - "@angular/language-service": "github:angular/language-service-builds#5e4da2ff8fe409d8ae5609292bb011c977fbb639", - "@angular/localize": "github:angular/localize-builds#f4589ce20d1cffabc8cc04b3a0bdd1d1299dc598", + "@angular/common": "github:angular/common-builds#57ee57bd854b37527875669828d496ee975aa5bd", + "@angular/compiler": "github:angular/compiler-builds#b0451c1fb14d14cbc1416667da2c470e85646f4f", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#ade0886da6483c87e0a302a0e3da7bb9753ca7f5", + "@angular/core": "github:angular/core-builds#22f52e90efb2315f9898e5e35d94b5d3a787db9d", + "@angular/forms": "github:angular/forms-builds#b797e52faf11155cbc93c99c9ee001d9ce29bf62", + "@angular/language-service": "github:angular/language-service-builds#30e3205dd56837b53581db200b6e14bb97f36632", + "@angular/localize": "github:angular/localize-builds#77610b1294a6b61a0348fd8dd73425863ca914dc", "@angular/material": "github:angular/material-builds#2fc13f0156d9098efa33c33fc8f5bac65c29b058", "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#123de8718fc9b2e7d7aafd836e9f1587ff61fa45", - "@angular/platform-browser": "github:angular/platform-browser-builds#483d0013f4519a689f980d0f87cbe88bec7aa867", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#2c5e23c675f0cdeedbfa463e698f07ccba7681b7", - "@angular/platform-server": "github:angular/platform-server-builds#558c1a17a147abcca7426d69083b44e92fc32d6d", - "@angular/router": "github:angular/router-builds#dd44c0b9b70de3543c6ce42fdce039479b4a4c3d", - "@angular/service-worker": "github:angular/service-worker-builds#54a46c347a97e7362018766e8dd3c66cd58f113c" + "@angular/platform-browser": "github:angular/platform-browser-builds#3105c9d1c5e9f7f42eeae12fcd83041b5cdfca20", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#47f9d44d415d4ee2f9a334b34a47db59c6dc951c", + "@angular/platform-server": "github:angular/platform-server-builds#2f397fa2d04ce8dab18e6449cbcc23ce3d6104a5", + "@angular/router": "github:angular/router-builds#8760b4633f8b72fff4d705ab97b0f47fcaec7273", + "@angular/service-worker": "github:angular/service-worker-builds#d175a39407ce6c26671eadf89848f86d50b0a7c7" } } From b69d85b2a38fc610e5f7c9c08419ae885469b8cb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 21 Jul 2025 15:23:17 -0400 Subject: [PATCH 1504/2162] refactor(@angular/cli): introduce new package manager abstraction Introduces a new abstraction layer for interacting with JavaScript package managers. This change centralizes all package-manager-specific logic into a single, reliable, and extensible interface. The primary motivation is to standardize package manager interactions for commands like `ng add` and `ng update`. The new system is designed to be highly testable. All side-effectful operations (file system access, command execution) are abstracted behind a `Host` interface, allowing for comprehensive and reliable unit testing in complete isolation. Key features include: - An improved package manager discovery process especially in monorepo scenarios. - A high-level API to install, add, and query packages from a registry. - Methods to fetch full package metadata and specific version manifests. - An `acquireTempPackage` method to support temporary, isolated package installations. This abstraction paves the way for the eventual removal of several direct package dependencies, including `ini`, `@yarnpkg/lockfile`, and `pacote`. --- .../cli/src/package-managers/discovery.ts | 136 ++++++ .../src/package-managers/discovery_spec.ts | 119 +++++ .../angular/cli/src/package-managers/error.ts | 37 ++ .../cli/src/package-managers/factory.ts | 154 +++++++ .../angular/cli/src/package-managers/host.ts | 142 ++++++ .../cli/src/package-managers/logger.ts | 30 ++ .../package-manager-descriptor.ts | 230 ++++++++++ .../src/package-managers/package-manager.ts | 410 ++++++++++++++++++ .../src/package-managers/package-metadata.ts | 103 +++++ .../cli/src/package-managers/package-tree.ts | 27 ++ .../cli/src/package-managers/parsers.ts | 291 +++++++++++++ .../src/package-managers/testing/mock-host.ts | 61 +++ 12 files changed, 1740 insertions(+) create mode 100644 packages/angular/cli/src/package-managers/discovery.ts create mode 100644 packages/angular/cli/src/package-managers/discovery_spec.ts create mode 100644 packages/angular/cli/src/package-managers/error.ts create mode 100644 packages/angular/cli/src/package-managers/factory.ts create mode 100644 packages/angular/cli/src/package-managers/host.ts create mode 100644 packages/angular/cli/src/package-managers/logger.ts create mode 100644 packages/angular/cli/src/package-managers/package-manager-descriptor.ts create mode 100644 packages/angular/cli/src/package-managers/package-manager.ts create mode 100644 packages/angular/cli/src/package-managers/package-metadata.ts create mode 100644 packages/angular/cli/src/package-managers/package-tree.ts create mode 100644 packages/angular/cli/src/package-managers/parsers.ts create mode 100644 packages/angular/cli/src/package-managers/testing/mock-host.ts diff --git a/packages/angular/cli/src/package-managers/discovery.ts b/packages/angular/cli/src/package-managers/discovery.ts new file mode 100644 index 000000000000..c96a637e7eb1 --- /dev/null +++ b/packages/angular/cli/src/package-managers/discovery.ts @@ -0,0 +1,136 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains the logic for discovering the package manager + * used in a project by searching for lockfiles. It is designed to be efficient + * and to correctly handle monorepo structures. + */ + +import { dirname, join } from 'node:path'; +import { Host } from './host'; +import { Logger } from './logger'; +import { + PACKAGE_MANAGER_PRECEDENCE, + PackageManagerName, + SUPPORTED_PACKAGE_MANAGERS, +} from './package-manager-descriptor'; + +/** + * A map from lockfile names to their corresponding package manager. + * This is a performance optimization to avoid iterating over all possible + * lockfiles in every directory. + */ +const LOCKFILE_TO_PACKAGE_MANAGER = new Map(); +for (const [name, descriptor] of Object.entries(SUPPORTED_PACKAGE_MANAGERS)) { + for (const lockfile of descriptor.lockfiles) { + LOCKFILE_TO_PACKAGE_MANAGER.set(lockfile, name as PackageManagerName); + } +} + +/** + * Searches a directory for lockfiles and returns a set of package managers that correspond to them. + * @param host A `Host` instance for interacting with the file system. + * @param directory The directory to search. + * @param logger An optional logger instance. + * @returns A promise that resolves to a set of package manager names. + */ +async function findLockfiles( + host: Host, + directory: string, + logger?: Logger, +): Promise> { + logger?.debug(`Searching for lockfiles in '${directory}'...`); + + try { + const files = await host.readdir(directory); + const foundPackageManagers = new Set(); + + for (const file of files) { + const packageManager = LOCKFILE_TO_PACKAGE_MANAGER.get(file); + if (packageManager) { + logger?.debug(` Found '${file}'.`); + foundPackageManagers.add(packageManager); + } + } + + return foundPackageManagers; + } catch (e) { + logger?.debug(` Failed to read directory: ${e}`); + + // Ignore directories that don't exist or can't be read. + return new Set(); + } +} + +/** + * Checks if a given path is a directory. + * @param host A `Host` instance for interacting with the file system. + * @param path The path to check. + * @returns A promise that resolves to true if the path is a directory, false otherwise. + */ +async function isDirectory(host: Host, path: string): Promise { + try { + return (await host.stat(path)).isDirectory(); + } catch { + return false; + } +} + +/** + * Discovers the package manager used in a project by searching for lockfiles. + * + * This function searches for lockfiles in the given directory and its ancestors. + * If multiple lockfiles are found, it uses the precedence array to determine + * which package manager to use. The search is bounded by the git repository root. + * + * @param host A `Host` instance for interacting with the file system. + * @param startDir The directory to start the search from. + * @param logger An optional logger instance. + * @returns A promise that resolves to the name of the discovered package manager, or null if none is found. + */ +export async function discover( + host: Host, + startDir: string, + logger?: Logger, +): Promise { + logger?.debug(`Starting package manager discovery in '${startDir}'...`); + let currentDir = startDir; + + while (true) { + const found = await findLockfiles(host, currentDir, logger); + + if (found.size > 0) { + logger?.debug(`Found lockfile(s): [${[...found].join(', ')}]. Applying precedence...`); + for (const packageManager of PACKAGE_MANAGER_PRECEDENCE) { + if (found.has(packageManager)) { + logger?.debug(`Selected '${packageManager}' based on precedence.`); + + return packageManager; + } + } + } + + // Stop searching if we reach the git repository root. + if (await isDirectory(host, join(currentDir, '.git'))) { + logger?.debug(`Reached repository root at '${currentDir}'. Stopping search.`); + + return null; + } + + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + // We have reached the filesystem root. + logger?.debug('Reached filesystem root. No lockfile found.'); + + return null; + } + + currentDir = parentDir; + } +} diff --git a/packages/angular/cli/src/package-managers/discovery_spec.ts b/packages/angular/cli/src/package-managers/discovery_spec.ts new file mode 100644 index 000000000000..5570be1d614b --- /dev/null +++ b/packages/angular/cli/src/package-managers/discovery_spec.ts @@ -0,0 +1,119 @@ +/** + * @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 { discover } from './discovery'; +import { MockHost } from './testing/mock-host'; + +describe('discover', () => { + it('should find a lockfile in the starting directory', async () => { + const host = new MockHost({ + '/project': ['package-lock.json'], + }); + const result = await discover(host, '/project'); + expect(result).toBe('npm'); + }); + + it('should find a lockfile in a parent directory', async () => { + const host = new MockHost({ + '/project': ['yarn.lock'], + '/project/subdir': [], + }); + const result = await discover(host, '/project/subdir'); + expect(result).toBe('yarn'); + }); + + it('should return null if no lockfile is found up to the root', async () => { + const host = new MockHost({ + '/': [], + '/project': [], + '/project/subdir': [], + }); + const result = await discover(host, '/project/subdir'); + expect(result).toBeNull(); + }); + + it('should apply precedence when multiple lockfiles are found', async () => { + const host = new MockHost({ + '/project': ['package-lock.json', 'pnpm-lock.yaml', 'yarn.lock'], + }); + // pnpm should have the highest precedence according to the descriptor. + const result = await discover(host, '/project'); + expect(result).toBe('pnpm'); + }); + + it('should stop searching at a .git boundary', async () => { + const host = new MockHost({ + '/': ['yarn.lock'], + '/project/.git': true, // .git is mocked as a directory. + '/project/subdir': [], + }); + const result = await discover(host, '/project/subdir'); + expect(result).toBeNull(); + }); + + it('should stop searching at the filesystem root', async () => { + const host = new MockHost({ + '/': [], + }); + const result = await discover(host, '/'); + expect(result).toBeNull(); + }); + + it('should handle file system errors during readdir gracefully', async () => { + const host = new MockHost({}); + host.readdir = () => Promise.reject(new Error('Permission denied')); + + const result = await discover(host, '/project'); + expect(result).toBeNull(); + }); + + it('should handle file system errors during stat gracefully', async () => { + const host = new MockHost({ '/project': ['.git'] }); + host.stat = () => Promise.reject(new Error('Permission denied')); + + // The error on stat should prevent it from finding the .git dir and thus it will continue to the root. + const result = await discover(host, '/project'); + expect(result).toBeNull(); + }); + + it('should prioritize the closest lockfile, regardless of precedence', async () => { + const host = new MockHost({ + '/project': ['pnpm-lock.yaml'], // Higher precedence + '/project/subdir': ['package-lock.json'], // Lower precedence + }); + const result = await discover(host, '/project/subdir'); + // Should find 'npm' and stop, not continue to find 'pnpm'. + expect(result).toBe('npm'); + }); + + it('should find a lockfile in the git root directory', async () => { + const host = new MockHost({ + '/project': ['yarn.lock'], + '/project/.git': true, + '/project/subdir': [], + }); + const result = await discover(host, '/project/subdir'); + expect(result).toBe('yarn'); + }); + + it('should discover the alternate npm lockfile name', async () => { + const host = new MockHost({ + '/project': ['npm-shrinkwrap.json'], + }); + const result = await discover(host, '/project'); + expect(result).toBe('npm'); + }); + + it('should discover the alternate bun lockfile name', async () => { + const host = new MockHost({ + '/project': ['bun.lockb'], + }); + const result = await discover(host, '/project'); + expect(result).toBe('bun'); + }); +}); diff --git a/packages/angular/cli/src/package-managers/error.ts b/packages/angular/cli/src/package-managers/error.ts new file mode 100644 index 000000000000..c17af3f7cae3 --- /dev/null +++ b/packages/angular/cli/src/package-managers/error.ts @@ -0,0 +1,37 @@ +/** + * @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 + */ + +/** + * @fileoverview This file defines a custom error class for the package manager + * abstraction. This allows for structured error handling and provides consumers + * with detailed information about the process failure. + */ + +/** + * A custom error class for package manager-related errors. + * + * This error class provides structured data about the failed process, + * including stdout, stderr, and the exit code. + */ +export class PackageManagerError extends Error { + /** + * Creates a new `PackageManagerError` instance. + * @param message The error message. + * @param stdout The standard output of the failed process. + * @param stderr The standard error of the failed process. + * @param exitCode The exit code of the failed process. + */ + constructor( + message: string, + public readonly stdout: string, + public readonly stderr: string, + public readonly exitCode: number | null, + ) { + super(message); + } +} diff --git a/packages/angular/cli/src/package-managers/factory.ts b/packages/angular/cli/src/package-managers/factory.ts new file mode 100644 index 000000000000..19ec32f7f886 --- /dev/null +++ b/packages/angular/cli/src/package-managers/factory.ts @@ -0,0 +1,154 @@ +/** + * @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 { major } from 'semver'; +import { discover } from './discovery'; +import { Host, NodeJS_HOST } from './host'; +import { Logger } from './logger'; +import { PackageManager } from './package-manager'; +import { PackageManagerName, SUPPORTED_PACKAGE_MANAGERS } from './package-manager-descriptor'; + +/** + * The default package manager to use when none is discovered or configured. + */ +const DEFAULT_PACKAGE_MANAGER: PackageManagerName = 'npm'; + +/** + * Gets the version of yarn installed on the system. + * @param host A `Host` instance for running commands. + * @param cwd The absolute path to the working directory. + * @param logger An optional logger instance. + * @returns A promise that resolves to the yarn version string, or null if yarn is not installed. + */ +async function getYarnVersion(host: Host, cwd: string, logger?: Logger): Promise { + logger?.debug(`Getting yarn version...`); + + try { + const { stdout } = await host.runCommand('yarn', ['--version'], { cwd }); + const version = stdout.trim(); + logger?.debug(`Yarn version is '${version}'.`); + + return version; + } catch (e) { + logger?.debug('Failed to get yarn version.'); + + return null; + } +} + +/** + * Determines the package manager to use for a given project. + * + * This function will determine the package manager by checking for a configured + * package manager, discovering the package manager from lockfiles, or falling + * back to a default. It also handles differentiation between yarn classic and modern. + * + * @param host A `Host` instance for interacting with the file system and running commands. + * @param cwd The directory to start the search from. + * @param configured An optional, explicitly configured package manager. + * @param logger An optional logger instance. + * @returns A promise that resolves to an object containing the name and source of the package manager. + */ +async function determinePackageManager( + host: Host, + cwd: string, + configured?: PackageManagerName, + logger?: Logger, + dryRun?: boolean, +): Promise<{ name: PackageManagerName; source: 'configured' | 'discovered' | 'default' }> { + let name: PackageManagerName; + let source: 'configured' | 'discovered' | 'default'; + + if (configured) { + name = configured; + source = 'configured'; + logger?.debug(`Using configured package manager: '${name}'.`); + } else { + const discovered = await discover(host, cwd, logger); + if (discovered) { + name = discovered; + source = 'discovered'; + logger?.debug(`Discovered package manager: '${name}'.`); + } else { + name = DEFAULT_PACKAGE_MANAGER; + source = 'default'; + logger?.debug( + `No lockfile found. Using default package manager: '${DEFAULT_PACKAGE_MANAGER}'.`, + ); + } + } + + if (name === 'yarn' && !dryRun) { + const version = await getYarnVersion(host, cwd, logger); + if (version && major(version) < 2) { + name = 'yarn-classic'; + logger?.debug(`Detected yarn classic. Using 'yarn-classic'.`); + } + } else if (name === 'yarn') { + logger?.debug('Skipping yarn version check due to dry run. Assuming modern yarn.'); + } + + return { name, source }; +} + +/** + * Creates a new `PackageManager` instance for a given project. + * + * This function is the main entry point for the package manager abstraction. + * It will determine, verify, and instantiate the correct package manager. + * + * @param options An object containing the options for creating the package manager. + * @returns A promise that resolves to a new `PackageManager` instance. + */ +export async function createPackageManager(options: { + cwd: string; + configuredPackageManager?: PackageManagerName; + logger?: Logger; + dryRun?: boolean; +}): Promise { + const { cwd, configuredPackageManager, logger, dryRun } = options; + const host = NodeJS_HOST; + + const { name, source } = await determinePackageManager( + host, + cwd, + configuredPackageManager, + logger, + dryRun, + ); + + const descriptor = SUPPORTED_PACKAGE_MANAGERS[name]; + if (!descriptor) { + throw new Error(`Unsupported package manager: "${name}"`); + } + + const packageManager = new PackageManager(host, cwd, descriptor, { dryRun, logger }); + + // Do not verify if the package manager is installed during a dry run. + if (!dryRun) { + try { + await packageManager.getVersion(); + } catch { + if (source === 'default') { + throw new Error( + `'${DEFAULT_PACKAGE_MANAGER}' was selected as the default package manager, but it is not installed or` + + ` cannot be found in the PATH. Please install '${DEFAULT_PACKAGE_MANAGER}' to continue.`, + ); + } else { + throw new Error( + `The project is configured to use '${name}', but it is not installed or cannot be` + + ` found in the PATH. Please install '${name}' to continue.`, + ); + } + } + } + + logger?.debug(`Successfully created PackageManager for '${name}'.`); + + return packageManager; +} diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts new file mode 100644 index 000000000000..1295154ceacf --- /dev/null +++ b/packages/angular/cli/src/package-managers/host.ts @@ -0,0 +1,142 @@ +/** + * @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 + */ + +/** + * @fileoverview + * This file defines an abstraction layer for side-effectful operations, such as + * file system access and command execution. This allows for easier testing by + * enabling the injection of mock or test-specific implementations. + */ + +import { spawn } from 'node:child_process'; +import { Stats } from 'node:fs'; +import { mkdtemp, readdir, rm, stat, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { PackageManagerError } from './error'; + +/** + * An abstraction layer for side-effectful operations. + */ +export interface Host { + /** + * Gets the stats of a file or directory. + * @param path The path to the file or directory. + * @returns A promise that resolves to the stats. + */ + stat(path: string): Promise; + + /** + * Reads the contents of a directory. + * @param path The path to the directory. + * @returns A promise that resolves to an array of file and directory names. + */ + readdir(path: string): Promise; + + /** + * Creates a new, unique temporary directory. + * @returns A promise that resolves to the absolute path of the created directory. + */ + createTempDirectory(): Promise; + + /** + * Deletes a directory recursively. + * @param path The path to the directory to delete. + * @returns A promise that resolves when the deletion is complete. + */ + deleteDirectory(path: string): Promise; + + /** + * Writes content to a file. + * @param path The path to the file. + * @param content The content to write. + * @returns A promise that resolves when the write is complete. + */ + writeFile(path: string, content: string): Promise; + + /** + * Spawns a child process and returns a promise that resolves with the process's + * output or rejects with a structured error. + * @param command The command to run. + * @param args The arguments to pass to the command. + * @param options Options for the child process. + * @returns A promise that resolves with the standard output and standard error of the command. + */ + runCommand( + command: string, + args: readonly string[], + options?: { + timeout?: number; + stdio?: 'pipe' | 'ignore'; + cwd?: string; + env?: Record; + }, + ): Promise<{ stdout: string; stderr: string }>; +} + +/** + * A concrete implementation of the `Host` interface that uses the Node.js APIs. + */ +export const NodeJS_HOST: Host = { + stat, + readdir, + writeFile, + createTempDirectory: () => mkdtemp(join(tmpdir(), 'angular-cli-')), + deleteDirectory: (path: string) => rm(path, { recursive: true, force: true }), + runCommand: async ( + command: string, + args: readonly string[], + options: { + timeout?: number; + stdio?: 'pipe' | 'ignore'; + cwd?: string; + env?: Record; + } = {}, + ): Promise<{ stdout: string; stderr: string }> => { + const signal = options.timeout ? AbortSignal.timeout(options.timeout) : undefined; + + return new Promise((resolve, reject) => { + const childProcess = spawn(command, args, { + shell: false, + stdio: options.stdio ?? 'pipe', + signal, + cwd: options.cwd, + env: { + ...process.env, + ...options.env, + }, + }); + + let stdout = ''; + childProcess.stdout?.on('data', (data) => (stdout += data.toString())); + + let stderr = ''; + childProcess.stderr?.on('data', (data) => (stderr += data.toString())); + + childProcess.on('close', (code) => { + if (code === 0) { + resolve({ stdout, stderr }); + } else { + const message = `Process exited with code ${code}.`; + reject(new PackageManagerError(message, stdout, stderr, code)); + } + }); + + childProcess.on('error', (err) => { + if (err.name === 'AbortError') { + const message = `Process timed out.`; + reject(new PackageManagerError(message, stdout, stderr, null)); + + return; + } + const message = `Process failed with error: ${err.message}`; + reject(new PackageManagerError(message, stdout, stderr, null)); + }); + }); + }, +}; diff --git a/packages/angular/cli/src/package-managers/logger.ts b/packages/angular/cli/src/package-managers/logger.ts new file mode 100644 index 000000000000..25f34218c893 --- /dev/null +++ b/packages/angular/cli/src/package-managers/logger.ts @@ -0,0 +1,30 @@ +/** + * @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 + */ + +/** + * @fileoverview This file defines a basic logger interface that is used by + * the package manager abstraction. This allows the abstraction to be decoupled + * from any specific logging implementation. + */ + +/** + * A basic logger interface for the package manager abstraction. + */ +export interface Logger { + /** + * Logs a debug message. + * @param message The message to log. + */ + debug(message: string): void; + + /** + * Logs an informational message. + * @param message The message to log. + */ + info(message: string): void; +} diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts new file mode 100644 index 000000000000..62a6ae8b79b6 --- /dev/null +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -0,0 +1,230 @@ +/** + * @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 + */ + +/** + * @fileoverview This file defines the data structures and configuration for + * supported package managers. It is the single source of truth for all + * package-manager-specific commands, flags, and output parsing. + */ + +import { Logger } from './logger'; +import { PackageManifest, PackageMetadata } from './package-metadata'; +import { InstalledPackage } from './package-tree'; +import { + parseNpmLikeDependencies, + parseNpmLikeManifest, + parseNpmLikeMetadata, + parseYarnClassicDependencies, + parseYarnLegacyManifest, + parseYarnModernDependencies, +} from './parsers'; + +/** + * An interface that describes the commands and properties of a package manager. + */ +export interface PackageManagerDescriptor { + /** The binary executable for the package manager. */ + readonly binary: string; + + /** The lockfile names used by the package manager. */ + readonly lockfiles: readonly string[]; + + /** The command to add a package. */ + readonly addCommand: string; + + /** The command to install all dependencies. */ + readonly installCommand: readonly string[]; + + /** The flag to force a clean installation. */ + readonly forceFlag: string; + + /** The flag to save a package with an exact version. */ + readonly saveExactFlag: string; + + /** The flag to save a package with a tilde version range. */ + readonly saveTildeFlag: string; + + /** The flag to save a package as a dev dependency. */ + readonly saveDevFlag: string; + + /** The flag to prevent the lockfile from being updated. */ + readonly noLockfileFlag: string; + + /** The flag to prevent lifecycle scripts from being executed. */ + readonly ignoreScriptsFlag: string; + + /** A function that returns the arguments and environment variables to use a custom registry. */ + readonly getRegistryOptions?: (registry: string) => { + args?: string[]; + env?: Record; + }; + + /** The command to get the package manager's version. */ + readonly versionCommand: readonly string[]; + + /** The command to list all installed dependencies. */ + readonly listDependenciesCommand: readonly string[]; + + /** The command to fetch the registry manifest of a package. */ + readonly getManifestCommand: readonly string[]; + + /** A function that formats the arguments for field-filtered registry views. */ + readonly viewCommandFieldArgFormatter?: (fields: readonly string[]) => string[]; + + /** A collection of functions to parse the output of specific commands. */ + readonly outputParsers: { + /** A function to parse the output of `listDependenciesCommand`. */ + listDependencies: (stdout: string, logger?: Logger) => Map; + + /** A function to parse the output of `getManifestCommand` for a specific version. */ + getPackageManifest: (stdout: string, logger?: Logger) => PackageManifest | null; + + /** A function to parse the output of `getManifestCommand` for the full package metadata. */ + getRegistryMetadata: (stdout: string, logger?: Logger) => PackageMetadata | null; + }; +} + +/** A type that represents the name of a supported package manager. */ +export type PackageManagerName = keyof typeof SUPPORTED_PACKAGE_MANAGERS; + +/** + * A map of supported package managers to their descriptors. + * This is the single source of truth for all package-manager-specific + * configuration and behavior. + * + * Each descriptor is intentionally explicit and self-contained. This approach + * avoids inheritance or fallback logic between package managers, ensuring that + * the behavior for each one is clear, predictable, and easy to modify in + * isolation. For example, `yarn-classic` does not inherit any properties from + * the `yarn` descriptor; it is a complete and independent definition. + */ +export const SUPPORTED_PACKAGE_MANAGERS = { + npm: { + binary: 'npm', + lockfiles: ['package-lock.json', 'npm-shrinkwrap.json'], + addCommand: 'install', + installCommand: ['install'], + forceFlag: '--force', + saveExactFlag: '--save-exact', + saveTildeFlag: '--save-tilde', + saveDevFlag: '--save-dev', + noLockfileFlag: '--no-package-lock', + ignoreScriptsFlag: '--ignore-scripts', + getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), + versionCommand: ['--version'], + listDependenciesCommand: ['list', '--depth=0', '--json=true', '--all=true'], + getManifestCommand: ['view', '--json'], + viewCommandFieldArgFormatter: (fields) => [...fields], + outputParsers: { + listDependencies: parseNpmLikeDependencies, + getPackageManifest: parseNpmLikeManifest, + getRegistryMetadata: parseNpmLikeMetadata, + }, + }, + yarn: { + binary: 'yarn', + lockfiles: ['yarn.lock'], + addCommand: 'add', + installCommand: ['install'], + forceFlag: '--force', + saveExactFlag: '--exact', + saveTildeFlag: '--tilde', + saveDevFlag: '--dev', + noLockfileFlag: '--no-lockfile', + ignoreScriptsFlag: '--ignore-scripts', + getRegistryOptions: (registry: string) => ({ env: { NPM_CONFIG_REGISTRY: registry } }), + versionCommand: ['--version'], + listDependenciesCommand: ['list', '--depth=0', '--json', '--recursive=false'], + getManifestCommand: ['npm', 'info', '--json'], + viewCommandFieldArgFormatter: (fields) => ['--fields', fields.join(',')], + outputParsers: { + listDependencies: parseYarnModernDependencies, + getPackageManifest: parseNpmLikeManifest, + getRegistryMetadata: parseNpmLikeMetadata, + }, + }, + 'yarn-classic': { + binary: 'yarn', + // This is intentionally empty. `yarn-classic` is not a discoverable package manager. + // The discovery process finds `yarn` via `yarn.lock`, and the factory logic + // determines whether it is classic or modern by checking the installed version. + lockfiles: [], + addCommand: 'add', + installCommand: ['install'], + forceFlag: '--force', + saveExactFlag: '--exact', + saveTildeFlag: '--tilde', + saveDevFlag: '--dev', + noLockfileFlag: '--no-lockfile', + ignoreScriptsFlag: '--ignore-scripts', + getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), + versionCommand: ['--version'], + listDependenciesCommand: ['list', '--depth=0', '--json'], + getManifestCommand: ['info', '--json'], + outputParsers: { + listDependencies: parseYarnClassicDependencies, + getPackageManifest: parseYarnLegacyManifest, + getRegistryMetadata: parseNpmLikeMetadata, + }, + }, + pnpm: { + binary: 'pnpm', + lockfiles: ['pnpm-lock.yaml'], + addCommand: 'add', + installCommand: ['install'], + forceFlag: '--force', + saveExactFlag: '--save-exact', + saveTildeFlag: '--save-tilde', + saveDevFlag: '--save-dev', + noLockfileFlag: '--no-lockfile', + ignoreScriptsFlag: '--ignore-scripts', + getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), + versionCommand: ['--version'], + listDependenciesCommand: ['list', '--depth=0', '--json'], + getManifestCommand: ['view', '--json'], + viewCommandFieldArgFormatter: (fields) => [...fields], + outputParsers: { + listDependencies: parseNpmLikeDependencies, + getPackageManifest: parseNpmLikeManifest, + getRegistryMetadata: parseNpmLikeMetadata, + }, + }, + bun: { + binary: 'bun', + lockfiles: ['bun.lockb', 'bun.lock'], + addCommand: 'add', + installCommand: ['install'], + forceFlag: '--force', + saveExactFlag: '--exact', + saveTildeFlag: '', // Bun does not have a flag for tilde, it defaults to caret. + saveDevFlag: '--development', + noLockfileFlag: '', // Bun does not have a flag for this. + ignoreScriptsFlag: '--ignore-scripts', + getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), + versionCommand: ['--version'], + listDependenciesCommand: ['pm', 'ls', '--json'], + getManifestCommand: ['pm', 'view', '--json'], + viewCommandFieldArgFormatter: (fields) => [...fields], + outputParsers: { + listDependencies: parseNpmLikeDependencies, + getPackageManifest: parseNpmLikeManifest, + getRegistryMetadata: parseNpmLikeMetadata, + }, + }, +} satisfies Record; + +/** + * The order of precedence for package managers. + * This is a best-effort ordering based on estimated Angular community usage and default presence. + */ +export const PACKAGE_MANAGER_PRECEDENCE: readonly PackageManagerName[] = [ + 'pnpm', + 'yarn', + 'bun', + 'npm', +]; diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts new file mode 100644 index 000000000000..f6ec79da0865 --- /dev/null +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -0,0 +1,410 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains the `PackageManager` class, which is the + * core execution engine for all package manager commands. It is designed to be + * a flexible and secure abstraction over the various package managers. + */ + +import { join } from 'node:path'; +import { PackageManagerError } from './error'; +import { Host } from './host'; +import { Logger } from './logger'; +import { PackageManagerDescriptor } from './package-manager-descriptor'; +import { PackageManifest, PackageMetadata } from './package-metadata'; +import { InstalledPackage } from './package-tree'; + +/** + * The fields to request from the registry for package metadata. + * This is a performance optimization to avoid downloading the full manifest + * when only summary data (like versions and tags) is needed. + */ +const METADATA_FIELDS = ['name', 'dist-tags', 'versions', 'time'] as const; + +/** + * The fields to request from the registry for a package's manifest. + * This is a performance optimization to avoid downloading unnecessary data. + * These fields are the ones required by the CLI for operations like `ng add` and `ng update`. + */ +const MANIFEST_FIELDS = [ + 'name', + 'version', + 'dependencies', + 'peerDependencies', + 'devDependencies', + 'homepage', + 'schematics', + 'ng-add', + 'ng-update', +] as const; + +/** + * Options to configure the `PackageManager` instance. + */ +export interface PackageManagerOptions { + /** + * If true, no commands will be executed, but they will be logged to the logger. + * A logger must be provided if this is true. + */ + dryRun?: boolean; + + /** A logger instance for debugging and dry run output. */ + logger?: Logger; +} + +/** + * A class that provides a high-level, package-manager-agnostic API for + * interacting with a project's dependencies. + * + * This class is an implementation of the Strategy design pattern. It is + * instantiated with a `PackageManagerDescriptor` that defines the specific + * commands and flags for a given package manager. + */ +export class PackageManager { + readonly #manifestCache = new Map(); + readonly #metadataCache = new Map(); + #dependencyCache: Map | null = null; + + /** + * Creates a new `PackageManager` instance. + * @param host A `Host` instance for interacting with the file system and running commands. + * @param cwd The absolute path to the project's working directory. + * @param descriptor A `PackageManagerDescriptor` that defines the commands for a specific package manager. + * @param options An options object to configure the instance. + */ + constructor( + private readonly host: Host, + private readonly cwd: string, + private readonly descriptor: PackageManagerDescriptor, + private readonly options: PackageManagerOptions = {}, + ) { + if (this.options.dryRun && !this.options.logger) { + throw new Error('A logger must be provided when dryRun is enabled.'); + } + } + + /** + * The name of the package manager's binary. + */ + get name(): string { + return this.descriptor.binary; + } + + /** + * A private method to lazily populate the dependency cache. + * This is a performance optimization to avoid running `npm list` multiple times. + * @returns A promise that resolves to the dependency cache map. + */ + async #populateDependencyCache(): Promise> { + if (this.#dependencyCache !== null) { + return this.#dependencyCache; + } + + const args = this.descriptor.listDependenciesCommand; + + const dependencies = await this.#fetchAndParse(args, (stdout, logger) => + this.descriptor.outputParsers.listDependencies(stdout, logger), + ); + + return (this.#dependencyCache = dependencies ?? new Map()); + } + + /** + * A private method to run a command using the package manager's binary. + * @param args The arguments to pass to the command. + * @param options Options for the child process. + * @returns A promise that resolves with the standard output and standard error of the command. + */ + async #run( + args: readonly string[], + options: { timeout?: number; registry?: string; cwd?: string } = {}, + ): Promise<{ stdout: string; stderr: string }> { + const { registry, cwd, ...runOptions } = options; + const finalArgs = [...args]; + let finalEnv: Record | undefined; + + if (registry) { + const registryOptions = this.descriptor.getRegistryOptions?.(registry); + if (!registryOptions) { + throw new Error( + `The configured package manager, '${this.descriptor.binary}', does not support a custom registry.`, + ); + } + + if (registryOptions.args) { + finalArgs.push(...registryOptions.args); + } + if (registryOptions.env) { + finalEnv = registryOptions.env; + } + } + + const executionDirectory = cwd ?? this.cwd; + if (this.options.dryRun) { + this.options.logger?.info( + `[DRY RUN] Would execute in [${executionDirectory}]: ${this.descriptor.binary} ${finalArgs.join(' ')}`, + ); + + return { stdout: '', stderr: '' }; + } + + return this.host.runCommand(this.descriptor.binary, finalArgs, { + ...runOptions, + cwd: executionDirectory, + stdio: 'pipe', + env: finalEnv, + }); + } + + /** + * A private, generic method to encapsulate the common logic of running a command, + * handling errors, and parsing the output. + * @param args The arguments to pass to the command. + * @param parser A function that parses the command's stdout. + * @param options Options for the command, including caching. + * @returns A promise that resolves to the parsed data, or null if not found. + */ + async #fetchAndParse( + args: readonly string[], + parser: (stdout: string, logger?: Logger) => T | null, + options: { + timeout?: number; + registry?: string; + bypassCache?: boolean; + cache?: Map; + cacheKey?: string; + } = {}, + ): Promise { + const { cache, cacheKey, bypassCache, ...runOptions } = options; + + if (!bypassCache && cache && cacheKey && cache.has(cacheKey)) { + return cache.get(cacheKey) as T | null; + } + + let stdout; + let stderr; + try { + ({ stdout, stderr } = await this.#run(args, runOptions)); + } catch (e) { + if (e instanceof PackageManagerError && typeof e.exitCode === 'number' && e.exitCode !== 0) { + // Some package managers exit with a non-zero code when the package is not found. + if (cache && cacheKey) { + cache.set(cacheKey, null); + } + + return null; + } + throw e; + } + + try { + const result = parser(stdout, this.options.logger); + if (cache && cacheKey) { + cache.set(cacheKey, result); + } + + return result; + } catch (e) { + const message = `Failed to parse package manager output: ${ + e instanceof Error ? e.message : '' + }`; + throw new PackageManagerError(message, stdout, stderr, 0); + } + } + + /** + * Adds a package to the project's dependencies. + * @param packageName The name of the package to add. + * @param save The save strategy to use. + * - `exact`: The package will be saved with an exact version. + * - `tilde`: The package will be saved with a tilde version range (`~`). + * - `none`: The package will be saved with the default version range (`^`). + * @param asDevDependency Whether to install the package as a dev dependency. + * @param noLockfile Whether to skip updating the lockfile. + * @param options Extra options for the command. + * @returns A promise that resolves when the command is complete. + */ + async add( + packageName: string, + save: 'exact' | 'tilde' | 'none', + asDevDependency: boolean, + noLockfile: boolean, + ignoreScripts: boolean, + options: { registry?: string } = {}, + ): Promise { + const flags = [ + asDevDependency ? this.descriptor.saveDevFlag : '', + save === 'exact' ? this.descriptor.saveExactFlag : '', + save === 'tilde' ? this.descriptor.saveTildeFlag : '', + noLockfile ? this.descriptor.noLockfileFlag : '', + ignoreScripts ? this.descriptor.ignoreScriptsFlag : '', + ].filter((flag) => flag); + + const args = [this.descriptor.addCommand, packageName, ...flags]; + await this.#run(args, options); + + this.#dependencyCache = null; + } + + /** + * Installs all dependencies in the project. + * @param options Options for the installation. + * @param options.timeout The maximum time in milliseconds to wait for the command to complete. + * @param options.force If true, forces a clean install, potentially overwriting existing modules. + * @param options.registry The registry to use for the installation. + * @param options.ignoreScripts If true, prevents lifecycle scripts from being executed. + * @returns A promise that resolves when the command is complete. + */ + async install( + options: { + timeout?: number; + force?: boolean; + registry?: string; + ignoreScripts?: boolean; + } = { ignoreScripts: true }, + ): Promise { + const flags = [ + options.force ? this.descriptor.forceFlag : '', + options.ignoreScripts ? this.descriptor.ignoreScriptsFlag : '', + ].filter((flag) => flag); + const args = [...this.descriptor.installCommand, ...flags]; + + await this.#run(args, options); + + this.#dependencyCache = null; + } + + /** + * Gets the version of the package manager binary. + * @returns A promise that resolves to the trimmed version string. + */ + async getVersion(): Promise { + const { stdout } = await this.#run(this.descriptor.versionCommand); + + return stdout.trim(); + } + + /** + * Gets the installed details of a package from the project's dependencies. + * @param packageName The name of the package to check. + * @returns A promise that resolves to the installed package details, or `null` if the package is not installed. + */ + async getInstalledPackage(packageName: string): Promise { + const cache = await this.#populateDependencyCache(); + + return cache.get(packageName) ?? null; + } + + /** + * Gets a map of all top-level dependencies installed in the project. + * @returns A promise that resolves to a map of package names to their installed package details. + */ + async getProjectDependencies(): Promise> { + const cache = await this.#populateDependencyCache(); + + // Return a copy to prevent external mutations of the cache. + return new Map(cache); + } + + /** + * Fetches the registry metadata for a package. This is the full metadata, + * including all versions and distribution tags. + * @param packageName The name of the package to fetch the metadata for. + * @param options Options for the fetch. + * @param options.timeout The maximum time in milliseconds to wait for the command to complete. + * @param options.registry The registry to use for the fetch. + * @param options.bypassCache If true, ignores the in-memory cache and fetches fresh data. + * @returns A promise that resolves to the `PackageMetadata` object, or `null` if the package is not found. + */ + async getRegistryMetadata( + packageName: string, + options: { timeout?: number; registry?: string; bypassCache?: boolean } = {}, + ): Promise { + const commandArgs = [...this.descriptor.getManifestCommand, packageName]; + const formatter = this.descriptor.viewCommandFieldArgFormatter; + if (formatter) { + commandArgs.push(...formatter(METADATA_FIELDS)); + } + + const cacheKey = options.registry ? `${packageName}|${options.registry}` : packageName; + + return this.#fetchAndParse( + commandArgs, + (stdout, logger) => this.descriptor.outputParsers.getRegistryMetadata(stdout, logger), + { ...options, cache: this.#metadataCache, cacheKey: packageName }, + ); + } + + /** + * Fetches the registry manifest for a specific version of a package. + * The manifest is similar to the package's `package.json` file. + * @param packageName The name of the package to fetch the manifest for. + * @param version The version of the package to fetch the manifest for. + * @param options Options for the fetch. + * @param options.timeout The maximum time in milliseconds to wait for the command to complete. + * @param options.registry The registry to use for the fetch. + * @param options.bypassCache If true, ignores the in-memory cache and fetches fresh data. + * @returns A promise that resolves to the `PackageManifest` object, or `null` if the package is not found. + */ + async getPackageManifest( + packageName: string, + version: string, + options: { timeout?: number; registry?: string; bypassCache?: boolean } = {}, + ): Promise { + const specifier = `${packageName}@${version}`; + const commandArgs = [...this.descriptor.getManifestCommand, specifier]; + const formatter = this.descriptor.viewCommandFieldArgFormatter; + if (formatter) { + commandArgs.push(...formatter(MANIFEST_FIELDS)); + } + + const cacheKey = options.registry ? `${specifier}|${options.registry}` : specifier; + + return this.#fetchAndParse( + commandArgs, + (stdout, logger) => this.descriptor.outputParsers.getPackageManifest(stdout, logger), + { ...options, cache: this.#manifestCache, cacheKey: specifier }, + ); + } + + /** + * Acquires a package by installing it into a temporary directory. The caller is + * responsible for managing the lifecycle of the temporary directory by calling + * the returned `cleanup` function. + * + * @param packageName The name of the package to install. + * @param options Options for the installation. + * @returns A promise that resolves to an object containing the temporary path + * and a cleanup function. + */ + async acquireTempPackage( + packageName: string, + options: { registry?: string } = {}, + ): Promise<{ workingDirectory: string; cleanup: () => Promise }> { + const workingDirectory = await this.host.createTempDirectory(); + const cleanup = () => this.host.deleteDirectory(workingDirectory); + + // Some package managers, like yarn classic, do not write a package.json when adding a package. + // This can cause issues with subsequent `require.resolve` calls. + // Writing an empty package.json file beforehand prevents this. + await this.host.writeFile(join(workingDirectory, 'package.json'), '{}'); + + const args: readonly string[] = [this.descriptor.addCommand, packageName]; + + try { + await this.#run(args, { ...options, cwd: workingDirectory }); + } catch (e) { + // If the command fails, clean up the temporary directory immediately. + await cleanup(); + throw e; + } + + return { workingDirectory, cleanup }; + } +} diff --git a/packages/angular/cli/src/package-managers/package-metadata.ts b/packages/angular/cli/src/package-managers/package-metadata.ts new file mode 100644 index 000000000000..2bf3c7edb41c --- /dev/null +++ b/packages/angular/cli/src/package-managers/package-metadata.ts @@ -0,0 +1,103 @@ +/** + * @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 + */ + +/** + * @fileoverview + * This file defines the core interfaces for package metadata and manifests, + * providing a strongly-typed representation of the data returned by a package + * manager registry. These interfaces are crucial for features like `ng add` + * and `ng update`. + */ + +/** + * Defines how a package's dependencies should be saved to `package.json` + * after being installed by the `ng add` command. + * + * - `dependencies`: Save to the `dependencies` section. + * - `devDependencies`: Save to the `devDependencies` section. + * - `false`: Do not save to `package.json`. + */ +export type NgAddSaveDependency = 'dependencies' | 'devDependencies' | false; + +/** + * Represents the configuration for `ng add` found in a package's manifest. + */ +export interface NgAdd { + /** + * Specifies how the package should be saved to `package.json`. + * @see NgAddSaveDependency + */ + save?: NgAddSaveDependency; +} + +/** + * Represents the configuration for `ng update` found in a package's manifest. + */ +export interface NgUpdate { + /** + * The path to the schematics collection for migrations. + */ + migrations?: string; + + /** + * A list of package names that should be updated together. + */ + packageGroup?: string[]; +} + +/** + * Represents the full metadata for a package available in the registry. + * This includes a list of all available versions and distribution tags. + */ +export interface PackageMetadata { + /** The name of the package. */ + name: string; + + /** A mapping of distribution tags (e.g., 'latest', 'next') to version numbers. */ + 'dist-tags': Record; + + /** An array of all available version strings for the package. */ + versions: string[]; + + /** A mapping of version numbers to their ISO 8601 publication time string. */ + time?: Record; +} + +/** + * Represents the manifest (similar to `package.json`) for a specific version of a package. + * It contains metadata essential for the Angular CLI to perform operations like + * `ng add` and `ng update`. + */ +export interface PackageManifest { + /** The name of the package. */ + name: string; + + /** The version of the package. */ + version: string; + + /** A mapping of production dependencies. */ + dependencies?: Record; + + /** A mapping of peer dependencies. */ + peerDependencies?: Record; + + /** A mapping of development dependencies. */ + devDependencies?: Record; + + /** The URL to the package's homepage. */ + homepage?: string; + + /** The path to the schematics collection definition, used by `ng generate`. */ + schematics?: string; + + /** Configuration for the `ng add` command. */ + 'ng-add'?: NgAdd; + + /** Configuration for the `ng update` command. */ + 'ng-update'?: NgUpdate; +} diff --git a/packages/angular/cli/src/package-managers/package-tree.ts b/packages/angular/cli/src/package-managers/package-tree.ts new file mode 100644 index 000000000000..ea438dcf8ce4 --- /dev/null +++ b/packages/angular/cli/src/package-managers/package-tree.ts @@ -0,0 +1,27 @@ +/** + * @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 + */ + +/** + * @fileoverview + * This file defines the interfaces for representing a project's installed + * package dependency tree. + */ + +/** + * Represents a package that is installed in the project's node_modules. + */ +export interface InstalledPackage { + /** The name of the package. */ + readonly name: string; + + /** The installed version of the package. */ + readonly version: string; + + /** The absolute path to the package's directory on disk, if available. */ + readonly path?: string; +} diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts new file mode 100644 index 000000000000..e14b455a4fe6 --- /dev/null +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -0,0 +1,291 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains the parser functions that are used to + * interpret the output of various package manager commands. Separating these + * into their own file improves modularity and allows for focused testing. + */ + +import { Logger } from './logger'; +import { PackageManifest, PackageMetadata } from './package-metadata'; +import { InstalledPackage } from './package-tree'; + +const MAX_LOG_LENGTH = 1024; + +function logStdout(stdout: string, logger?: Logger): void { + if (!logger) { + return; + } + + let output = stdout; + if (output.length > MAX_LOG_LENGTH) { + output = `${output.slice(0, MAX_LOG_LENGTH)}... (truncated)`; + } + + logger.debug(` stdout:\n${output}`); +} + +interface NpmListDependency { + version: string; + path?: string; + [key: string]: unknown; +} + +/** + * Parses the output of `npm list` or a compatible command. + * + * The expected JSON structure is: + * ```json + * { + * "dependencies": { + * "@angular/cli": { + * "version": "18.0.0", + * "path": "/path/to/project/node_modules/@angular/cli", // path is optional + * ... (other package.json properties) + * } + * } + * } + * ``` + * + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns A map of package names to their installed package details. + */ +export function parseNpmLikeDependencies( + stdout: string, + logger?: Logger, +): Map { + logger?.debug(`Parsing npm-like dependency list...`); + logStdout(stdout, logger); + + const dependencies = new Map(); + if (!stdout) { + logger?.debug(' stdout is empty. No dependencies found.'); + + return dependencies; + } + + let data = JSON.parse(stdout); + if (Array.isArray(data)) { + // pnpm returns an array of projects. + data = data[0]; + } + + const dependencyMaps = [data.dependencies, data.devDependencies, data.unsavedDependencies].filter( + (d) => !!d, + ); + + if (dependencyMaps.length === 0) { + logger?.debug(' `dependencies` property not found. No dependencies found.'); + + return dependencies; + } + + for (const dependencyMap of dependencyMaps) { + for (const [name, info] of Object.entries(dependencyMap as Record)) { + dependencies.set(name, { + name, + version: info.version, + path: info.path, + }); + } + } + + logger?.debug(` Found ${dependencies.size} dependencies.`); + + return dependencies; +} + +/** + * Parses the output of `yarn list` (classic). + * + * The expected output is a JSON stream (JSONL), where each line is a JSON object. + * The relevant object has a `type` of `'tree'`. + * Yarn classic does not provide a path, so the `path` property will be `undefined`. + * + * ```json + * {"type":"tree","data":{"trees":[{"name":"@angular/cli@18.0.0","children":[]}]}} + * ``` + * + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns A map of package names to their installed package details. + */ +export function parseYarnClassicDependencies( + stdout: string, + logger?: Logger, +): Map { + logger?.debug(`Parsing yarn classic dependency list...`); + logStdout(stdout, logger); + + const dependencies = new Map(); + if (!stdout) { + logger?.debug(' stdout is empty. No dependencies found.'); + + return dependencies; + } + + for (const line of stdout.split('\n')) { + if (!line) { + continue; + } + const json = JSON.parse(line); + if (json.type === 'tree' && json.data?.trees) { + for (const info of json.data.trees) { + const name = info.name.split('@')[0]; + const version = info.name.split('@').pop(); + dependencies.set(name, { + name, + version, + }); + } + } + } + + logger?.debug(` Found ${dependencies.size} dependencies.`); + + return dependencies; +} + +/** + * Parses the output of `yarn list` (modern). + * + * The expected JSON structure is a single object. + * Yarn modern does not provide a path, so the `path` property will be `undefined`. + * + * ```json + * { + * "trees": [ + * { "name": "@angular/cli@18.0.0", "children": [] } + * ] + * } + * ``` + * + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns A map of package names to their installed package details. + */ +export function parseYarnModernDependencies( + stdout: string, + logger?: Logger, +): Map { + logger?.debug(`Parsing yarn modern dependency list...`); + logStdout(stdout, logger); + + const dependencies = new Map(); + if (!stdout) { + logger?.debug(' stdout is empty. No dependencies found.'); + + return dependencies; + } + + // Modern yarn `list` command outputs a single JSON object with a `trees` property. + // Each line is not a separate JSON object. + try { + const data = JSON.parse(stdout); + for (const info of data.trees) { + const name = info.name.split('@')[0]; + const version = info.name.split('@').pop(); + dependencies.set(name, { + name, + version, + }); + } + } catch (e) { + logger?.debug( + ` Failed to parse as single JSON object: ${e}. Falling back to line-by-line parsing.`, + ); + // Fallback for older versions of yarn berry that might still output json lines + for (const line of stdout.split('\n')) { + if (!line) { + continue; + } + try { + const json = JSON.parse(line); + if (json.type === 'tree' && json.data?.trees) { + for (const info of json.data.trees) { + const name = info.name.split('@')[0]; + const version = info.name.split('@').pop(); + dependencies.set(name, { + name, + version, + }); + } + } + } catch (innerError) { + logger?.debug(` Ignoring non-JSON line: ${innerError}`); + // Ignore lines that are not valid JSON. + } + } + } + + logger?.debug(` Found ${dependencies.size} dependencies.`); + + return dependencies; +} + +/** + * Parses the output of `npm view` or a compatible command to get a package manifest. + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns The package manifest object. + */ +export function parseNpmLikeManifest(stdout: string, logger?: Logger): PackageManifest | null { + logger?.debug(`Parsing npm-like manifest...`); + logStdout(stdout, logger); + + if (!stdout) { + logger?.debug(' stdout is empty. No manifest found.'); + + return null; + } + + return JSON.parse(stdout); +} + +/** + * Parses the output of `npm view` or a compatible command to get package metadata. + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns The package metadata object. + */ +export function parseNpmLikeMetadata(stdout: string, logger?: Logger): PackageMetadata | null { + logger?.debug(`Parsing npm-like metadata...`); + logStdout(stdout, logger); + + if (!stdout) { + logger?.debug(' stdout is empty. No metadata found.'); + + return null; + } + + return JSON.parse(stdout); +} + +/** + * Parses the output of `yarn info` (classic). + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns The package manifest object. + */ +export function parseYarnLegacyManifest(stdout: string, logger?: Logger): PackageManifest | null { + logger?.debug(`Parsing yarn classic manifest...`); + logStdout(stdout, logger); + + if (!stdout) { + logger?.debug(' stdout is empty. No manifest found.'); + + return null; + } + + const data = JSON.parse(stdout); + + // Yarn classic wraps the manifest in a `data` property. + return data.data ?? data; +} diff --git a/packages/angular/cli/src/package-managers/testing/mock-host.ts b/packages/angular/cli/src/package-managers/testing/mock-host.ts new file mode 100644 index 000000000000..69b252501850 --- /dev/null +++ b/packages/angular/cli/src/package-managers/testing/mock-host.ts @@ -0,0 +1,61 @@ +/** + * @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 { Stats } from 'node:fs'; +import { Host } from '../host'; + +/** + * A mock `Host` implementation for testing. + * This class allows for simulating a file system in memory. + */ +export class MockHost implements Host { + private readonly fs = new Map(); + + constructor(files: Record = {}) { + // Normalize paths to use forward slashes for consistency in tests. + for (const [path, content] of Object.entries(files)) { + this.fs.set(path.replace(/\\/g, '/'), content); + } + } + + stat(path: string): Promise { + const content = this.fs.get(path.replace(/\\/g, '/')); + if (content === undefined) { + return Promise.reject(new Error(`File not found: ${path}`)); + } + + // A `true` value signifies a directory in our mock file system. + return Promise.resolve({ isDirectory: () => content === true } as Stats); + } + + readdir(path: string): Promise { + const content = this.fs.get(path.replace(/\\/g, '/')); + if (content === true || content === undefined) { + // This should be a directory with a file list. + return Promise.reject(new Error(`Directory not found or not a directory: ${path}`)); + } + + return Promise.resolve(content); + } + + runCommand(): Promise<{ stdout: string; stderr: string }> { + throw new Error('Method not implemented.'); + } + + createTempDirectory(): Promise { + throw new Error('Method not implemented.'); + } + + deleteDirectory(): Promise { + throw new Error('Method not implemented.'); + } + + writeFile(): Promise { + throw new Error('Method not implemented.'); + } +} From 4ff2300ae19eddeaf0dbb261338ce33aa8255015 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 25 Sep 2025 05:06:30 +0000 Subject: [PATCH 1505/2162] build: update dependency node to v22.20.0 See associated pull request for more information. --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index e2228113dd09..442c7587a99a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.19.0 +22.20.0 From ef2779d433fd747f7436c3d00bd9a3bca00a077a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 25 Sep 2025 22:04:43 +0000 Subject: [PATCH 1506/2162] build: update all non-major dependencies See associated pull request for more information. --- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 433 +++++++++--------- 4 files changed, 221 insertions(+), 222 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 0fc40f6f1611..d3724fd94148 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,8 +37,8 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.39", - "sass": "1.93.1", + "rolldown": "1.0.0-beta.40", + "sass": "1.93.2", "semver": "7.7.2", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index cf12570b98a0..769eb93ebae5 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -30,7 +30,7 @@ "@modelcontextprotocol/sdk": "1.18.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.37.0", + "algoliasearch": "5.38.0", "ini": "5.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.4", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 72d6c08a649b..aad385c00058 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.93.1", + "sass": "1.93.2", "sass-loader": "16.0.5", "semver": "7.7.2", "source-map-loader": "5.0.0", @@ -56,7 +56,7 @@ "tree-kill": "1.2.2", "tslib": "2.8.1", "webpack": "5.101.3", - "webpack-dev-middleware": "7.4.3", + "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4da288a15cff..20869a14156d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) packages/angular/build: dependencies: @@ -372,7 +372,7 @@ importers: version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -410,11 +410,11 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.39 - version: 1.0.0-beta.39 + specifier: 1.0.0-beta.40 + version: 1.0.0-beta.40 sass: - specifier: 1.93.1 - version: 1.93.1 + specifier: 1.93.2 + version: 1.93.2 semver: specifier: 7.7.2 version: 7.7.2 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.7 - version: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.2 @@ -487,8 +487,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.37.0 - version: 5.37.0 + specifier: 5.38.0 + version: 5.38.0 ini: specifier: 5.0.0 version: 5.0.0 @@ -717,11 +717,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.93.1 - version: 1.93.1 + specifier: 1.93.2 + version: 1.93.2 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.93.1)(webpack@5.101.3(esbuild@0.25.10)) + version: 16.0.5(sass@1.93.2)(webpack@5.101.3(esbuild@0.25.10)) semver: specifier: 7.7.2 version: 7.7.2 @@ -747,8 +747,8 @@ importers: specifier: 5.101.3 version: 5.101.3(esbuild@0.25.10) webpack-dev-middleware: - specifier: 7.4.3 - version: 7.4.3(webpack@5.101.3(esbuild@0.25.10)) + specifier: 7.4.5 + version: 7.4.5(webpack@5.101.3(esbuild@0.25.10)) webpack-dev-server: specifier: 5.2.2 version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.101.3(esbuild@0.25.10)) @@ -918,60 +918,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.3.0': - resolution: {integrity: sha512-KqPVLdVNfoJzX5BKNGM9bsW8saHeyax8kmPFXul5gejrSPN3qss7PgsFH5mMem7oR8tvjvNkia97ljEYPYCN8Q==} + '@algolia/abtesting@1.4.0': + resolution: {integrity: sha512-N0blWT/C0KOZ/OJ9GXBX66odJZlrYjMj3M+01y8ob1mjBFnBaBo7gOCyHBDQy60+H4pJXp3pSGlJOqJIueBH+A==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.37.0': - resolution: {integrity: sha512-Dp2Zq+x9qQFnuiQhVe91EeaaPxWBhzwQ6QnznZQnH9C1/ei3dvtmAFfFeaTxM6FzfJXDLvVnaQagTYFTQz3R5g==} + '@algolia/client-abtesting@5.38.0': + resolution: {integrity: sha512-15d6zv8vtj2l9pnnp/EH7Rhq3/snCCHRz56NnX6xIUPrbJl5gCsIYXAz8C2IEkwOpoDb0r5G6ArY2gKdVMNezw==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.37.0': - resolution: {integrity: sha512-wyXODDOluKogTuZxRII6mtqhAq4+qUR3zIUJEKTiHLe8HMZFxfUEI4NO2qSu04noXZHbv/sRVdQQqzKh12SZuQ==} + '@algolia/client-analytics@5.38.0': + resolution: {integrity: sha512-jJIbYAhYvTG3+gEAP5Q5Dp6PFJfUR+atz5rsqm5KjAKK+faLFdHJbM2IbOo0xdyGd+SH259MzfQKLJ9mZZ27dQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.37.0': - resolution: {integrity: sha512-GylIFlPvLy9OMgFG8JkonIagv3zF+Dx3H401Uo2KpmfMVBBJiGfAb9oYfXtplpRMZnZPxF5FnkWaI/NpVJMC+g==} + '@algolia/client-common@5.38.0': + resolution: {integrity: sha512-aMCXzVPGJTeQnVU3Sdf30TfMN2+QyWcjfPTCCHyqVVgjPipb6RnK40aISGoO+rlYjh9LunDsNVFLwv+JEIF8bQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.37.0': - resolution: {integrity: sha512-T63afO2O69XHKw2+F7mfRoIbmXWGzgpZxgOFAdP3fR4laid7pWBt20P4eJ+Zn23wXS5kC9P2K7Bo3+rVjqnYiw==} + '@algolia/client-insights@5.38.0': + resolution: {integrity: sha512-4c3FbpMiJX+VcaAj0rYaQdTLS/CkrdOn4hW+5y1plPov7KC7iSHai/VBbirmHuAfW1hVPCIh1w/4erKKTKuo+Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.37.0': - resolution: {integrity: sha512-1zOIXM98O9zD8bYDCJiUJRC/qNUydGHK/zRK+WbLXrW1SqLFRXECsKZa5KoG166+o5q5upk96qguOtE8FTXDWQ==} + '@algolia/client-personalization@5.38.0': + resolution: {integrity: sha512-FzLs6c8TBL4FSgNfnH2NL7O33ktecGiaKO4ZFG51QYORUzD5d6YwB9UBteaIYu/sgFoEdY57diYU4vyBH8R6iA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.37.0': - resolution: {integrity: sha512-31Nr2xOLBCYVal+OMZn1rp1H4lPs1914Tfr3a34wU/nsWJ+TB3vWjfkUUuuYhWoWBEArwuRzt3YNLn0F/KRVkg==} + '@algolia/client-query-suggestions@5.38.0': + resolution: {integrity: sha512-7apiahlgZLvOqrh0+hAYAp/UWjqz6AfSJrCwnsoQNzgIT09dLSPIKREelkuQeUrKy38vHWWpSQE3M0zWSp/YrA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.37.0': - resolution: {integrity: sha512-DAFVUvEg+u7jUs6BZiVz9zdaUebYULPiQ4LM2R4n8Nujzyj7BZzGr2DCd85ip4p/cx7nAZWKM8pLcGtkTRTdsg==} + '@algolia/client-search@5.38.0': + resolution: {integrity: sha512-PTAFMJOpVtJweExEYYgdmSCC6n4V/R+ctDL3fRQy77ulZM/p+zMLIQC9c7HCQE1zqpauvVck3f2zYSejaUTtrw==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.37.0': - resolution: {integrity: sha512-pkCepBRRdcdd7dTLbFddnu886NyyxmhgqiRcHHaDunvX03Ij4WzvouWrQq7B7iYBjkMQrLS8wQqSP0REfA4W8g==} + '@algolia/ingestion@1.38.0': + resolution: {integrity: sha512-qGSUGgceJHGyJLZ06bFLwVe2Tpf9KwabmoBjFvFscVmMmU5scKya6voCYd9bdX7V0Xy1qya9MGbmTm4zlLuveQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.37.0': - resolution: {integrity: sha512-fNw7pVdyZAAQQCJf1cc/ih4fwrRdQSgKwgor4gchsI/Q/ss9inmC6bl/69jvoRSzgZS9BX4elwHKdo0EfTli3w==} + '@algolia/monitoring@1.38.0': + resolution: {integrity: sha512-VnCtAUcHirvv/dDHg9jK1Z5oo4QOC5FKDxe40x8qloru2qDcjueT34jiAsB0gRos3VWf9v4iPSYTqMIFOcADpQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.37.0': - resolution: {integrity: sha512-U+FL5gzN2ldx3TYfQO5OAta2TBuIdabEdFwD5UVfWPsZE5nvOKkc/6BBqP54Z/adW/34c5ZrvvZhlhNTZujJXQ==} + '@algolia/recommend@5.38.0': + resolution: {integrity: sha512-fqgeU9GqxQorFUeGP4et1MyY28ccf9PCeciHwDPSbPYYiTqBItHdUIiytsNpjC5Dnc0RWtuXWCltLwSw9wN/bQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.37.0': - resolution: {integrity: sha512-Ao8GZo8WgWFABrU7iq+JAftXV0t+UcOtCDL4mzHHZ+rQeTTf1TZssr4d0vIuoqkVNnKt9iyZ7T4lQff4ydcTrw==} + '@algolia/requester-browser-xhr@5.38.0': + resolution: {integrity: sha512-nAUKbv4YQIXbpPi02AQvSPisD5FDDbT8XeYSh9HFoYP0Z3IpBLLDg7R4ahPvzd7gGsVKgEbXzRPWESXSji5yIg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.37.0': - resolution: {integrity: sha512-H7OJOXrFg5dLcGJ22uxx8eiFId0aB9b0UBhoOi4SMSuDBe6vjJJ/LeZyY25zPaSvkXNBN3vAM+ad6M0h6ha3AA==} + '@algolia/requester-fetch@5.38.0': + resolution: {integrity: sha512-bkuAHaadC6OxJd3SVyQQnU1oJ9G/zdCqua7fwr1tJDrA/v7KzeS5np4/m6BuRUpTgVgFZHSewGnMcgj9DLBoaQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.37.0': - resolution: {integrity: sha512-npZ9aeag4SGTx677eqPL3rkSPlQrnzx/8wNrl1P7GpWq9w/eTmRbOq+wKrJ2r78idlY0MMgmY/mld2tq6dc44g==} + '@algolia/requester-node-http@5.38.0': + resolution: {integrity: sha512-yHDKZTnMPR3/4bY0CVC1/uRnnbAaJ+pctRuX7G/HflBkKOrnUBDEGtQQHzEfMz2FHZ/tbCL+Q9r6mvwTSGp8nw==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -2773,8 +2773,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.90.0': - resolution: {integrity: sha512-fWvaufWUcLtm/OBKcNmxUkR0kQW5ZKAF0t03BXPqdzpxmnVCmSKzvUDRCOKnSagSfNzG/3ZdKpComH3GMy881g==} + '@oxc-project/types@0.92.0': + resolution: {integrity: sha512-PDLfCbwgXjGdTBxzcuDOUxJYNBl6P8dOp3eDKWw54dYvqONan9rwGDRQU0zrkdEMiItfXQQUOI17uOcMX5Zm7A==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -2923,95 +2923,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.39': - resolution: {integrity: sha512-mjraAJQ3VRLPb3BUgVigHvmAYhiBpEeSM0dhvaO6XHtJ0k1o9Ng1Z6Qvlp4/1wDiUf7a10L5c3yleoGZ2r0Maw==} + '@rolldown/binding-android-arm64@1.0.0-beta.40': + resolution: {integrity: sha512-9Ii9phC7QU6Lb+ncMfG1Xlosq0NBB1N/4sw+EGZ3y0BBWGy02TOb5ghWZalphAKv9rn1goqo5WkBjyd2YvsLmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.39': - resolution: {integrity: sha512-tnuiLq9vd08KsZeFkFgzCXVKsTgSZGn+YBQjHSEiUvXJy5pfUf82X/YyLCG8P6I+WDd2cgrcLilMBQPZgaNwkg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.40': + resolution: {integrity: sha512-5O6d0y2tBQTL+ecQY3qXIwSnF1/Zik8q7LZMKeyF+VJ9l194d0IdMhl2zUF0cqWbYHuF4Pnxplk4OhurPQ/Z9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.39': - resolution: {integrity: sha512-wLFoB3ZM4AoeBlsP0eVbPzWfkEgvmnibMQEKUgWRfJnKhUWiSxl0kGdSw1fNYdX3KAqIeA5gPJNvSJmf6g5S3Q==} + '@rolldown/binding-darwin-x64@1.0.0-beta.40': + resolution: {integrity: sha512-izB9jygt3miPQbOTZfSu5K51isUplqa8ysByOKQqcJHgrBWmbTU8TM9eouv6tRmBR0kjcEcID9xhmA1CeZ1VIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.39': - resolution: {integrity: sha512-wzFZlixF9VMbyi++rHCU4Cy72SH11aBNnkadmvwTAbokwjYHi8NqxQ3/Lx00c700N6kwwuiTsbcGt5DEA9aROw==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.40': + resolution: {integrity: sha512-2fdpEpKT+wwP0vig9dqxu+toTeWmVSjo3psJQVDeLJ51rO+GXcCJ1IkCXjhMKVEevNtZS7B8T8Z2vvmRV9MAdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.39': - resolution: {integrity: sha512-eVnZcwGbje1uwdFjeQZQ6918RHgGIK7iTC+AoDsgetgAXQmQpnuWYQ9OWa5oTHNQyCkZbMfiHKgpkUPpceMecw==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.40': + resolution: {integrity: sha512-HP2lo78OWULN+8TewpLbS9PS00jh0CaF04tA2u8z2I+6QgVgrYOYKvX+T0hlO5smgso4+qb3YchzumWJl3yCPQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.39': - resolution: {integrity: sha512-Td96iRQA0nmRZM6kJ3+LDDKWLh4bl0zqeR+IYxXwPZBw4iXSREzXrcZ3QqgFHqnXPgryIJEW1U1Ebh2xf+b2UA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.40': + resolution: {integrity: sha512-ng00gfr9BhA2NPAOU5RWAlTiL+JcwAD+L+4yUD1sbBy6tgHdLiNBOvKtHISIF9RM9/eQeS0tAiWOYZGIH9JMew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.39': - resolution: {integrity: sha512-bcSIh1TFUoPcexJH+gO1sE6wpSR0j3UpWBnjAwyM1PRKfjtqN4R9Du90ofH5KsR/A35FT3eP4mdnhMDTd5Yt+A==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.40': + resolution: {integrity: sha512-mF0R1l9kLcaag/9cLEiYYdNZ4v1uuX4jklSDZ1s6vJE4RB3LirUney0FavdVRwCJ5sDvfvsPgXgtBXWYr2M2tQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.39': - resolution: {integrity: sha512-tYEcZdVGovEemh7ELr+VUoezGkuBgRZYvDHHW/HVIw9LQW5HKLtBIGLzFlOfu/Lq5b9FlDKl+lrY6weviaNnKw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.40': + resolution: {integrity: sha512-+wi08S7wT5iLPHRZb0USrS6n+T6m+yY++dePYedE5uvKIpWCJJioFTaRtWjpm0V6dVNLcq2OukrvfdlGtH9Wgg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.39': - resolution: {integrity: sha512-xf9QdMC+qwQxtFAty/9RxgCLFdp9pFl09g86hxGPzlzCtHUjd+BmeUnUTXvVC8CHJLWECLQbFP6/233XHG0blA==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.40': + resolution: {integrity: sha512-W5qBGAemUocIBKCcOsDjlV9GUt28qhl/+M6etWBeLS5gQK0J6XDg0YVzfOQdvq57ZGjYNP0NvhYzqhOOnEx+4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.39': - resolution: {integrity: sha512-QCvN02VpE6zFYry0zAU+29D5+O9tJELNt+OjuCubilZdD/S8xFdho7qBJaa3YhFYyA9cReOMVH8Z8b3yWb4hcA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.40': + resolution: {integrity: sha512-vJwoDehtt+yqj2zacq1AqNc2uE/oh7mnRGqAUbuldV6pgvU01OSQUJ7Zu+35hTopnjFoDNN6mIezkYlGAv5RFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.39': - resolution: {integrity: sha512-LFgshxApyBNiBHFVpun7tPrIQ4TvxW0f/endC5C4RzEHu7mxexBCQEkO5XrZ42Cr5DUY+ERNbkfNTUv+vVCaxQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.40': + resolution: {integrity: sha512-Oj3YyqVUPurr1FlMpEE/bJmMC+VWAWPM/SGUfklO5KUX97bk5Q/733nPg4RykK8q8/TluJoQYvRc05vL/B74dw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.39': - resolution: {integrity: sha512-Mykirawg+s1e0uzVSEFhUBTShvXrOghPnyuLYkCfw8gzy8bMYiJuxsAfcopzZIIAVOHeSblJoiA/e7gYFjg8HA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.40': + resolution: {integrity: sha512-0ZtO6yN8XjVoFfN4HDWQj4nDu3ndMybr7jIM00DJqOmc+yFhly7rdOy7fNR9Sky3leCpBtsXfepVqRmVpYKPVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.39': - resolution: {integrity: sha512-4PQJfWx7mdzXbAa4y+3OSSo911BZyJ/Is4pJKiwcGUqtvY66MX7BqlNWMr9QAozArAGE2knDubLqCQwZpK631w==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.40': + resolution: {integrity: sha512-BPl1inoJXPpIe38Ja46E4y11vXlJyuleo+9Rmu//pYL5fIDYJkXUj/oAXqjSuwLcssrcwnuPgzvzvlz9++cr3w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.39': - resolution: {integrity: sha512-0zmmPOWbFfp1g9ofieimHwhuclZMcib0HL52Q+JTRpOHChI2f83TtH3duKWtAaxqhLUndTr/Z5sxzb+G2FNL9g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.40': + resolution: {integrity: sha512-UguA4ltbAk+nbwHRxqaUP/etpTbR0HjyNlsu4Zjbh/ytNbFsbw8CA4tEBkwDyjgI5NIPea6xY11zpl7R2/ddVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.39': - resolution: {integrity: sha512-GkTtNCV8ObWbq3LrJStPBv9jkRPct8WlwotVjx3aU0RwfH3LyheixWK9Zhaj22C4EQj/TJxYyetoX+uOn/MWKw==} + '@rolldown/pluginutils@1.0.0-beta.40': + resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -3917,8 +3917,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.37.0: - resolution: {integrity: sha512-y7gau/ZOQDqoInTQp0IwTOjkrHc4Aq4R8JgpmCleFwiLl+PbN2DMWoDUWZnrK8AhNJwT++dn28Bt4NZYNLAmuA==} + algoliasearch@5.38.0: + resolution: {integrity: sha512-8VJKIzheeI9cjuVJhU1hYEVetOTe7LvA+CujAI7yqvYsPtZfVEvv1pg9AeFNtHBg/ZoSLGU5LPijhcY5l3Ea9g==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -6620,9 +6620,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.43.0: - resolution: {integrity: sha512-XCdhMy33sgxCwJ4JgjSasLGgOjFm9/i+IEhO03gPHroJeTBhM7ZQ1+v3j7di9nNKtcLGjVvKjHVOkTbVop/R/Q==} - engines: {node: '>= 4.0.0'} + memfs@4.46.0: + resolution: {integrity: sha512-//IxqL9OO/WMpm2kE2aq+y7vO7/xS9xgVIbFM8RUIfW7TY7lowtnuS1j9MwLGm0OwcHUa4p8Bp+40W7f1BiWGQ==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7705,8 +7704,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.39: - resolution: {integrity: sha512-05bTT0CJU9dvCRC0Uc4zwB79W5N9MV9OG/Inyx8KNE2pSrrApJoWxEEArW6rmjx113HIx5IreCoTjzLfgvXTdg==} + rolldown@1.0.0-beta.40: + resolution: {integrity: sha512-VqEHbKpOgTPmQrZ4fVn4eshDQS/6g/fRpNE7cFSJY+eQLDZn4B9X61J6L+hnlt1u2uRI+pF7r1USs6S5fuWCvw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7802,8 +7801,8 @@ packages: webpack: optional: true - sass@1.93.1: - resolution: {integrity: sha512-wLAeLB7IksO2u+cCfhHqcy7/2ZUMPp/X2oV6+LjmweTqgjhOKrkaE/Q1wljxtco5EcOcupZ4c981X0gpk5Tiag==} + sass@1.93.2: + resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} engines: {node: '>=14.0.0'} hasBin: true @@ -8814,8 +8813,8 @@ packages: resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} engines: {node: '>=20'} - webpack-dev-middleware@7.4.3: - resolution: {integrity: sha512-5kA/PzpZzDz5mNOkcNLmU1UdjGeSSxd7rt1akWpI70jMNHLASiBPRaQZn0hgyhvhawfIwSnnLfDABIxL3ueyFg==} + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 @@ -9150,89 +9149,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.3.0': + '@algolia/abtesting@1.4.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/client-abtesting@5.37.0': + '@algolia/client-abtesting@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/client-analytics@5.37.0': + '@algolia/client-analytics@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/client-common@5.37.0': {} + '@algolia/client-common@5.38.0': {} - '@algolia/client-insights@5.37.0': + '@algolia/client-insights@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/client-personalization@5.37.0': + '@algolia/client-personalization@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/client-query-suggestions@5.37.0': + '@algolia/client-query-suggestions@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/client-search@5.37.0': + '@algolia/client-search@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/ingestion@1.37.0': + '@algolia/ingestion@1.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/monitoring@1.37.0': + '@algolia/monitoring@1.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/recommend@5.37.0': + '@algolia/recommend@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 - '@algolia/requester-browser-xhr@5.37.0': + '@algolia/requester-browser-xhr@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 + '@algolia/client-common': 5.38.0 - '@algolia/requester-fetch@5.37.0': + '@algolia/requester-fetch@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 + '@algolia/client-common': 5.38.0 - '@algolia/requester-node-http@5.37.0': + '@algolia/requester-node-http@5.38.0': dependencies: - '@algolia/client-common': 5.37.0 + '@algolia/client-common': 5.38.0 '@ampproject/remapping@2.3.0': dependencies: @@ -11325,7 +11324,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.90.0': {} + '@oxc-project/types@0.92.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11448,51 +11447,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.39': + '@rolldown/binding-android-arm64@1.0.0-beta.40': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.39': + '@rolldown/binding-darwin-arm64@1.0.0-beta.40': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.39': + '@rolldown/binding-darwin-x64@1.0.0-beta.40': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.39': + '@rolldown/binding-freebsd-x64@1.0.0-beta.40': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.39': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.40': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.39': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.40': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.39': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.40': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.39': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.40': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.39': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.40': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.39': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.40': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.39': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.40': dependencies: '@napi-rs/wasm-runtime': 1.0.5 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.39': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.40': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.39': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.40': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.39': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.40': optional: true - '@rolldown/pluginutils@1.0.0-beta.39': {} + '@rolldown/pluginutils@1.0.0-beta.40': {} '@rollup/plugin-alias@5.1.1(rollup@4.52.2)': optionalDependencies: @@ -12289,11 +12288,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12308,7 +12307,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12320,13 +12319,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -12689,22 +12688,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.37.0: - dependencies: - '@algolia/abtesting': 1.3.0 - '@algolia/client-abtesting': 5.37.0 - '@algolia/client-analytics': 5.37.0 - '@algolia/client-common': 5.37.0 - '@algolia/client-insights': 5.37.0 - '@algolia/client-personalization': 5.37.0 - '@algolia/client-query-suggestions': 5.37.0 - '@algolia/client-search': 5.37.0 - '@algolia/ingestion': 1.37.0 - '@algolia/monitoring': 1.37.0 - '@algolia/recommend': 5.37.0 - '@algolia/requester-browser-xhr': 5.37.0 - '@algolia/requester-fetch': 5.37.0 - '@algolia/requester-node-http': 5.37.0 + algoliasearch@5.38.0: + dependencies: + '@algolia/abtesting': 1.4.0 + '@algolia/client-abtesting': 5.38.0 + '@algolia/client-analytics': 5.38.0 + '@algolia/client-common': 5.38.0 + '@algolia/client-insights': 5.38.0 + '@algolia/client-personalization': 5.38.0 + '@algolia/client-query-suggestions': 5.38.0 + '@algolia/client-search': 5.38.0 + '@algolia/ingestion': 1.38.0 + '@algolia/monitoring': 1.38.0 + '@algolia/recommend': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 ansi-colors@4.1.3: {} @@ -15891,7 +15890,7 @@ snapshots: media-typer@1.1.0: {} - memfs@4.43.0: + memfs@4.46.0: dependencies: '@jsonjoy.com/json-pack': 1.14.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -16103,7 +16102,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.52.2)(typescript@5.9.2) rxjs: 7.8.2 - sass: 1.93.1 + sass: 1.93.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.2 @@ -17021,26 +17020,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.39: + rolldown@1.0.0-beta.40: dependencies: - '@oxc-project/types': 0.90.0 - '@rolldown/pluginutils': 1.0.0-beta.39 + '@oxc-project/types': 0.92.0 + '@rolldown/pluginutils': 1.0.0-beta.40 ansis: 4.1.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.39 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.39 - '@rolldown/binding-darwin-x64': 1.0.0-beta.39 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.39 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.39 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.39 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.39 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.39 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.39 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.39 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.39 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.39 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.39 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.39 + '@rolldown/binding-android-arm64': 1.0.0-beta.40 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.40 + '@rolldown/binding-darwin-x64': 1.0.0-beta.40 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.40 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.40 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.40 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.40 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.40 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.40 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.40 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.40 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.40 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.40 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.40 rollup-license-plugin@3.0.2: dependencies: @@ -17142,14 +17141,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.93.1)(webpack@5.101.3(esbuild@0.25.10)): + sass-loader@16.0.5(sass@1.93.2)(webpack@5.101.3(esbuild@0.25.10)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.93.1 + sass: 1.93.2 webpack: 5.101.3(esbuild@0.25.10) - sass@1.93.1: + sass@1.93.2: dependencies: chokidar: 4.0.3 immutable: 5.1.3 @@ -18199,13 +18198,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18220,7 +18219,7 @@ snapshots: - tsx - yaml - vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18233,12 +18232,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.5.1 less: 4.4.1 - sass: 1.93.1 + sass: 1.93.2 terser: 5.44.0 tsx: 4.20.5 yaml: 2.8.1 - vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18251,16 +18250,16 @@ snapshots: fsevents: 2.3.3 jiti: 2.5.1 less: 4.4.1 - sass: 1.93.1 + sass: 1.93.2 terser: 5.44.0 tsx: 4.20.5 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18278,8 +18277,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.1)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.5.2 @@ -18347,10 +18346,10 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.3(webpack@5.101.3(esbuild@0.25.10)): + webpack-dev-middleware@7.4.5(webpack@5.101.3(esbuild@0.25.10)): dependencies: colorette: 2.0.20 - memfs: 4.43.0 + memfs: 4.46.0 mime-types: 3.0.1 on-finished: 2.4.1 range-parser: 1.2.1 @@ -18386,7 +18385,7 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.3(webpack@5.101.3(esbuild@0.25.10)) + webpack-dev-middleware: 7.4.5(webpack@5.101.3(esbuild@0.25.10)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: webpack: 5.101.3(esbuild@0.25.10) From 0922a033f546b38f83d1cae524cf7237dd37a2ac Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 26 Sep 2025 09:53:07 +0000 Subject: [PATCH 1507/2162] fix(@angular/cli): improve JSON schema parsing for command options The JSON schema parsing for command options has been refactored to be more robust and handle more complex schemas. This includes better support for arrays, enums within 'oneOf' and 'anyOf'. The schema definitions in packages/angular/build/src/builders/unit-test/schema.json have been removed as these are not resolved at this stage of schema processing. --- .../build/src/builders/unit-test/schema.json | 59 +-- .../command-builder/utilities/json-schema.ts | 338 ++++++++++++------ .../utilities/json-schema_spec.ts | 108 +++++- 3 files changed, 361 insertions(+), 144 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 4253605f3e00..e410d6ac6031 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -72,7 +72,16 @@ "items": { "oneOf": [ { - "$ref": "#/definitions/coverage-reporters" + "enum": [ + "html", + "lcov", + "lcovonly", + "text", + "text-summary", + "cobertura", + "json", + "json-summary" + ] }, { "type": "array", @@ -80,7 +89,16 @@ "maxItems": 2, "items": [ { - "$ref": "#/definitions/coverage-reporters" + "enum": [ + "html", + "lcov", + "lcovonly", + "text", + "text-summary", + "cobertura", + "json", + "json-summary" + ] }, { "type": "object" @@ -98,10 +116,10 @@ { "anyOf": [ { - "$ref": "#/definitions/reporters-enum" + "type": "string" }, { - "type": "string" + "enum": ["default", "verbose", "dots", "json", "junit", "tap", "tap-flat", "html"] } ] }, @@ -113,10 +131,19 @@ { "anyOf": [ { - "$ref": "#/definitions/reporters-enum" + "type": "string" }, { - "type": "string" + "enum": [ + "default", + "verbose", + "dots", + "json", + "junit", + "tap", + "tap-flat", + "html" + ] } ] }, @@ -161,23 +188,5 @@ } }, "additionalProperties": false, - "required": ["buildTarget", "tsConfig", "runner"], - "definitions": { - "coverage-reporters": { - "enum": [ - "html", - "lcov", - "lcovonly", - "text", - "text-summary", - "cobertura", - "json", - "json-summary" - ] - }, - "reporters-enum": { - "type": "string", - "enum": ["default", "verbose", "dots", "json", "junit", "tap", "tap-flat", "html"] - } - } + "required": ["buildTarget", "tsConfig", "runner"] } diff --git a/packages/angular/cli/src/command-builder/utilities/json-schema.ts b/packages/angular/cli/src/command-builder/utilities/json-schema.ts index 0d8b7cc57e98..e9fbd7e0e27a 100644 --- a/packages/angular/cli/src/command-builder/utilities/json-schema.ts +++ b/packages/angular/cli/src/command-builder/utilities/json-schema.ts @@ -6,12 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import { json, strings } from '@angular-devkit/core'; +import { isJsonObject, json, strings } from '@angular-devkit/core'; import type { Arguments, Argv, PositionalOptions, Options as YargsOptions } from 'yargs'; import { EventCustomDimension } from '../../analytics/analytics-parameters'; /** - * An option description. + * An option description that can be used by yargs to create a command. + * See: https://github.com/yargs/yargs/blob/main/docs/options.mjs */ export interface Option extends YargsOptions { /** @@ -51,6 +52,12 @@ export interface Option extends YargsOptions { itemValueType?: 'string'; } +/** + * A Yargs check function that validates that the given options are in the form of `key=value`. + * @param keyValuePairOptions A set of options that should be in the form of `key=value`. + * @param args The parsed arguments. + * @returns `true` if the options are valid, otherwise an error is thrown. + */ function checkStringMap(keyValuePairOptions: Set, args: Arguments): boolean { for (const key of keyValuePairOptions) { const value = args[key]; @@ -75,6 +82,11 @@ function checkStringMap(keyValuePairOptions: Set, args: Arguments): bool return true; } +/** + * A Yargs coerce function that converts an array of `key=value` strings to an object. + * @param value An array of `key=value` strings. + * @returns An object with the keys and values from the input array. + */ function coerceToStringMap( value: (string | undefined)[], ): Record | (string | undefined)[] { @@ -98,6 +110,12 @@ function coerceToStringMap( return stringMap; } +/** + * Checks if a JSON schema node represents a string map. + * A string map is an object with `additionalProperties` of type `string`. + * @param node The JSON schema node to check. + * @returns `true` if the node represents a string map, otherwise `false`. + */ function isStringMap(node: json.JsonObject): boolean { // Exclude fields with more specific kinds of properties. if (node.properties || node.patternProperties) { @@ -112,6 +130,179 @@ function isStringMap(node: json.JsonObject): boolean { ); } +const SUPPORTED_PRIMITIVE_TYPES = new Set(['boolean', 'number', 'string']); + +/** + * Checks if a string is a supported primitive type. + * @param value The string to check. + * @returns `true` if the string is a supported primitive type, otherwise `false`. + */ +function isSupportedPrimitiveType(value: string): boolean { + return SUPPORTED_PRIMITIVE_TYPES.has(value); +} + +/** + * Recursively checks if a JSON schema for an array's items is a supported primitive type. + * It supports `oneOf` and `anyOf` keywords. + * @param schema The JSON schema for the array's items. + * @returns `true` if the schema is a supported primitive type, otherwise `false`. + */ +function isSupportedArrayItemSchema(schema: json.JsonObject): boolean { + if (typeof schema.type === 'string' && isSupportedPrimitiveType(schema.type)) { + return true; + } + + if (json.isJsonArray(schema.enum)) { + return true; + } + + if (json.isJsonArray(schema.items)) { + return schema.items.some((item) => isJsonObject(item) && isSupportedArrayItemSchema(item)); + } + + if ( + json.isJsonArray(schema.oneOf) && + schema.oneOf.some((item) => isJsonObject(item) && isSupportedArrayItemSchema(item)) + ) { + return true; + } + + if ( + json.isJsonArray(schema.anyOf) && + schema.anyOf.some((item) => isJsonObject(item) && isSupportedArrayItemSchema(item)) + ) { + return true; + } + + return false; +} + +/** + * Gets the supported types for a JSON schema node. + * @param current The JSON schema node to get the supported types for. + * @returns An array of supported types. + */ +function getSupportedTypes( + current: json.JsonObject, +): ReadonlyArray<'string' | 'number' | 'boolean' | 'array' | 'object'> { + const typeSet = json.schema.getTypesOfSchema(current); + + if (typeSet.size === 0) { + return []; + } + + return [...typeSet].filter((type) => { + switch (type) { + case 'boolean': + case 'number': + case 'string': + return true; + case 'array': + return isJsonObject(current.items) && isSupportedArrayItemSchema(current.items); + case 'object': + return isStringMap(current); + default: + return false; + } + }) as ReadonlyArray<'string' | 'number' | 'boolean' | 'array' | 'object'>; +} + +/** + * Gets the enum values for a JSON schema node. + * @param current The JSON schema node to get the enum values for. + * @returns An array of enum values. + */ +function getEnumValues( + current: json.JsonObject, +): ReadonlyArray | undefined { + if (json.isJsonArray(current.enum)) { + return current.enum.sort() as ReadonlyArray; + } + + if (isJsonObject(current.items)) { + const enumValues = getEnumValues(current.items); + if (enumValues?.length) { + return enumValues; + } + } + + if (typeof current.type === 'string' && isSupportedPrimitiveType(current.type)) { + return []; + } + + const subSchemas = + (json.isJsonArray(current.oneOf) && current.oneOf) || + (json.isJsonArray(current.anyOf) && current.anyOf); + + if (subSchemas) { + // Find the first enum. + for (const subSchema of subSchemas) { + if (isJsonObject(subSchema)) { + const enumValues = getEnumValues(subSchema); + if (enumValues) { + return enumValues; + } + } + } + } + + return []; +} + +/** + * Gets the default value for a JSON schema node. + * @param current The JSON schema node to get the default value for. + * @param type The type of the JSON schema node. + * @returns The default value, or `undefined` if there is no default value. + */ +function getDefaultValue( + current: json.JsonObject, + type: string, +): string | number | boolean | unknown[] | undefined { + const defaultValue = current.default; + if (defaultValue === undefined) { + return undefined; + } + + if (type === 'array') { + return Array.isArray(defaultValue) && defaultValue.length > 0 ? defaultValue : undefined; + } + + if (typeof defaultValue === type) { + return defaultValue as string | number | boolean; + } + + return undefined; +} + +/** + * Gets the aliases for a JSON schema node. + * @param current The JSON schema node to get the aliases for. + * @returns An array of aliases. + */ +function getAliases(current: json.JsonObject): string[] { + if (json.isJsonArray(current.aliases)) { + return [...current.aliases].map(String); + } + + if (current.alias) { + return [String(current.alias)]; + } + + return []; +} + +/** + * Parses a JSON schema to a list of options that can be used by yargs. + * + * @param registry A schema registry to use for flattening the schema. + * @param schema The JSON schema to parse. + * @param interactive Whether to prompt the user for missing options. + * @returns A list of options. + * + * @note The schema definition are not resolved at this stage. This means that `$ref` will not be resolved, + * and custom keywords like `x-prompt` will not be processed. + */ export async function parseJsonSchemaToOptions( registry: json.schema.SchemaRegistry, schema: json.JsonObject, @@ -124,152 +315,70 @@ export async function parseJsonSchemaToOptions( pointer: json.schema.JsonPointer, parentSchema?: json.JsonObject | json.JsonArray, ) { - if (!parentSchema) { - // Ignore root. - return; - } else if (pointer.split(/\/(?:properties|items|definitions)\//g).length > 2) { - // Ignore subitems (objects or arrays). - return; - } else if (json.isJsonArray(current)) { + if ( + !parentSchema || + json.isJsonArray(current) || + pointer.split(/\/(?:properties|items|definitions)\//g).length > 2 + ) { + // Ignore root, arrays, and subitems. return; } - if (pointer.indexOf('/not/') != -1) { + if (pointer.includes('/not/')) { // We don't support anyOf/not. throw new Error('The "not" keyword is not supported in JSON Schema.'); } const ptr = json.schema.parseJsonPointer(pointer); - const name = ptr[ptr.length - 1]; - - if (ptr[ptr.length - 2] != 'properties') { + if (ptr[ptr.length - 2] !== 'properties') { // Skip any non-property items. return; } + const name = ptr[ptr.length - 1]; - const typeSet = json.schema.getTypesOfSchema(current); - - if (typeSet.size == 0) { - throw new Error('Cannot find type of schema.'); - } - - // We only support number, string or boolean (or array of those), so remove everything else. - const types = [...typeSet].filter((x) => { - switch (x) { - case 'boolean': - case 'number': - case 'string': - return true; - - case 'array': - // Only include arrays if they're boolean, string or number. - if ( - json.isJsonObject(current.items) && - typeof current.items.type == 'string' && - isValidTypeForEnum(current.items.type) - ) { - return true; - } - - return false; - - case 'object': - return isStringMap(current); - - default: - return false; - } - }) as ('string' | 'number' | 'boolean' | 'array' | 'object')[]; + const types = getSupportedTypes(current); - if (types.length == 0) { + if (types.length === 0) { // This means it's not usable on the command line. e.g. an Object. return; } - // Only keep enum values we support (booleans, numbers and strings). - const enumValues = ( - (json.isJsonArray(current.enum) && current.enum) || - (json.isJsonObject(current.items) && - json.isJsonArray(current.items.enum) && - current.items.enum) || - [] - ) - .filter((value) => isValidTypeForEnum(typeof value)) - .sort() as (string | true | number)[]; - - let defaultValue: string | number | boolean | unknown[] | undefined = undefined; - if (current.default !== undefined) { - switch (types[0]) { - case 'string': - if (typeof current.default == 'string') { - defaultValue = current.default; - } - break; - case 'array': - if (Array.isArray(current.default) && current.default.length > 0) { - defaultValue = current.default; - } - break; - case 'number': - if (typeof current.default == 'number') { - defaultValue = current.default; - } - break; - case 'boolean': - if (typeof current.default == 'boolean') { - defaultValue = current.default; - } - break; - } - } - + const [type] = types; const $default = current.$default; const $defaultIndex = - json.isJsonObject($default) && $default['$source'] == 'argv' ? $default['index'] : undefined; + isJsonObject($default) && $default['$source'] === 'argv' ? $default['index'] : undefined; const positional: number | undefined = - typeof $defaultIndex == 'number' ? $defaultIndex : undefined; + typeof $defaultIndex === 'number' ? $defaultIndex : undefined; - let required = json.isJsonArray(schema.required) ? schema.required.includes(name) : false; + let required = json.isJsonArray(schema.required) && schema.required.includes(name); if (required && interactive && current['x-prompt']) { required = false; } - const alias = json.isJsonArray(current.aliases) - ? [...current.aliases].map((x) => '' + x) - : current.alias - ? ['' + current.alias] - : []; - const format = typeof current.format == 'string' ? current.format : undefined; - const visible = current.visible === undefined || current.visible === true; - const hidden = !!current.hidden || !visible; - - const xUserAnalytics = current['x-user-analytics']; - const userAnalytics = typeof xUserAnalytics === 'string' ? xUserAnalytics : undefined; - - // Deprecated is set only if it's true or a string. + const visible = current.visible !== false; const xDeprecated = current['x-deprecated']; - const deprecated = - xDeprecated === true || typeof xDeprecated === 'string' ? xDeprecated : undefined; + const enumValues = getEnumValues(current); const option: Option = { name, - description: '' + (current.description === undefined ? '' : current.description), - default: defaultValue, - choices: enumValues.length ? enumValues : undefined, + description: String(current.description ?? ''), + default: getDefaultValue(current, type), + choices: enumValues?.length ? enumValues : undefined, required, - alias, - format, - hidden, - userAnalytics, - deprecated, + alias: getAliases(current), + format: typeof current.format === 'string' ? current.format : undefined, + hidden: !!current.hidden || !visible, + userAnalytics: + typeof current['x-user-analytics'] === 'string' ? current['x-user-analytics'] : undefined, + deprecated: xDeprecated === true || typeof xDeprecated === 'string' ? xDeprecated : undefined, positional, - ...(types[0] === 'object' + ...(type === 'object' ? { type: 'array', itemValueType: 'string', } : { - type: types[0], + type, }), }; @@ -382,8 +491,3 @@ export function addSchemaOptionsToCommand( return optionsWithAnalytics; } - -const VALID_ENUM_TYPES = new Set(['boolean', 'number', 'string']); -function isValidTypeForEnum(value: string): boolean { - return VALID_ENUM_TYPES.has(value); -} diff --git a/packages/angular/cli/src/command-builder/utilities/json-schema_spec.ts b/packages/angular/cli/src/command-builder/utilities/json-schema_spec.ts index ea7043339d65..d311373d69f0 100644 --- a/packages/angular/cli/src/command-builder/utilities/json-schema_spec.ts +++ b/packages/angular/cli/src/command-builder/utilities/json-schema_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { schema } from '@angular-devkit/core'; +import { JsonObject, schema } from '@angular-devkit/core'; import yargs from 'yargs'; import { addSchemaOptionsToCommand, parseJsonSchemaToOptions } from './json-schema'; @@ -56,10 +56,74 @@ describe('parseJsonSchemaToOptions', () => { 'type': 'string', }, }, + 'arrayWithChoicesInOneOf': { + 'type': 'array', + 'items': { + 'oneOf': [ + { + 'enum': ['default', 'verbose'], + }, + { + 'type': 'array', + 'minItems': 1, + 'maxItems': 2, + 'items': [ + { + 'enum': ['default', 'verbose'], + }, + { + 'type': 'object', + }, + ], + }, + ], + }, + }, + 'arrayWithComplexAnyOf': { + 'type': 'array', + 'items': { + 'oneOf': [ + { + 'anyOf': [ + { + 'type': 'string', + }, + { + 'enum': ['default', 'verbose'], + }, + ], + }, + { + 'type': 'array', + 'minItems': 1, + 'maxItems': 2, + 'items': [ + { + 'anyOf': [ + { + 'type': 'string', + }, + { + 'enum': ['default', 'verbose'], + }, + ], + }, + { + 'type': 'object', + }, + ], + }, + ], + }, + }, }, }; const registry = new schema.CoreSchemaRegistry(); - const options = await parseJsonSchemaToOptions(registry, jsonSchema, false); + const options = await parseJsonSchemaToOptions( + registry, + jsonSchema as unknown as JsonObject, + false, + ); addSchemaOptionsToCommand(localYargs, options, true); }); @@ -95,6 +159,46 @@ describe('parseJsonSchemaToOptions', () => { }); }); + describe('type=array, enum in oneOf', () => { + it('parses valid option value', async () => { + expect( + await parse([ + '--arrayWithChoicesInOneOf', + 'default', + '--arrayWithChoicesInOneOf', + 'verbose', + ]), + ).toEqual( + jasmine.objectContaining({ + 'arrayWithChoicesInOneOf': ['default', 'verbose'], + }), + ); + }); + + it('rejects non-enum values', async () => { + await expectAsync(parse(['--arrayWithChoicesInOneOf', 'yes'])).toBeRejectedWithError( + /Argument: array-with-choices-in-one-of, Given: "yes", Choices:/, + ); + }); + }); + + describe('type=array, anyOf', () => { + it('parses valid option value', async () => { + expect( + await parse([ + '--arrayWithComplexAnyOf', + 'default', + '--arrayWithComplexAnyOf', + 'something-else', + ]), + ).toEqual( + jasmine.objectContaining({ + 'arrayWithComplexAnyOf': ['default', 'something-else'], + }), + ); + }); + }); + describe('type=string, enum', () => { it('parses valid option value', async () => { expect(await parse(['--ssr', 'never'])).toEqual( From b8892b7a5bc96a8f29444bb70a7d8a27606f6cd6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 26 Sep 2025 17:05:16 +0000 Subject: [PATCH 1508/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 8 +-- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 26 +++++----- 11 files changed, 80 insertions(+), 80 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index e6942d6a95e5..814cf9a4974f 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + - uses: angular/dev-infra/github-actions/branch-manager@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e3603e80ec1..38804a5020b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a 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@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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 7e7d59b8f61d..014598037b27 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + - uses: angular/dev-infra/github-actions/pull-request-labeling@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + - uses: angular/dev-infra/github-actions/post-approval-changes@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 805d232b2812..78879a86d41b 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@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + - uses: angular/dev-infra/github-actions/feature-request@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 28a79a294b91..ff4df40db08e 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@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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 a8cff8f287b3..5c397133fb61 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/linting/licenses@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a - 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/MODULE.bazel b/MODULE.bazel index 6dffc34d506a..efd521e5d8e7 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "7b35868fc5f723448a6a7fadab13273585d30861", + commit = "99cb49d8f4240fcd51f93c6f05f52c869dd50d9a", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 4c3c6374ff0f..1654933521e7 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -15,7 +15,6 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.1/MODULE.bazel": "07e3ce3eaaa50dbd0be7fa0094e36890478937adc780ec53e77fd9fe543af8b1", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/MODULE.bazel": "276347663a25b0d5bd6cad869252bea3e160c4d980e764b15f3bae7f80b30624", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/source.json": "f42051fa42629f0e59b7ac2adf0a55749144b11f1efcd8c697f0ee247181e526", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", @@ -59,7 +58,8 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", - "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "cdf8cbe5ee750db04b78878c9633cc76e80dcf4416cbe982ac3a9222f80713c8", @@ -217,7 +217,7 @@ }, "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "vmy9g9SEtzBm7P+a19lslJkVMPbwO857cmH5ZZMWaPc=", + "bzlTransitiveDigest": "NeP8heP5Z49UtK5ZkdaSGN2wdf2vyTLxJfpSPeyvV24=", "usagesDigest": "u8wMZJd6Ovxb3YTmhoM3sMbh11Qwrv5EHaggdNi5Wb8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -397,7 +397,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "BZ1QxfApFDl/gTOUNdVuajx6Dm/RCMb80c+ykawEKTc=", + "bzlTransitiveDigest": "eebwHza1XBCmrNmoTUnW56khfYFfcwZpPWjM1Nvu3sk=", "usagesDigest": "VyrLigWAm5f/dVn2m+/sJ67RLQ5koXcopcxYdLdxXwk=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, diff --git a/package.json b/package.json index ff137f9be2c6..3ec56b482873 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.5", "@angular/localize": "21.0.0-next.5", "@angular/material": "21.0.0-next.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#8d333e8e2c48ff99a1a3ca633c1d6a456c082c55", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#05831615b5579240d8407d44e30bcc3a42d77d10", "@angular/platform-browser": "21.0.0-next.5", "@angular/platform-server": "21.0.0-next.5", "@angular/router": "21.0.0-next.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20869a14156d..2e94503c7b6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.5 version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#8d333e8e2c48ff99a1a3ca633c1d6a456c082c55 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55(@modelcontextprotocol/sdk@1.18.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#05831615b5579240d8407d44e30bcc3a42d77d10 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/05831615b5579240d8407d44e30bcc3a42d77d10(@modelcontextprotocol/sdk@1.18.1) '@angular/platform-browser': specifier: 21.0.0-next.5 version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55} - version: 0.0.0-715d1659cb1128762a84a8c41d7bd6fb6071ddd7 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/05831615b5579240d8407d44e30bcc3a42d77d10': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/05831615b5579240d8407d44e30bcc3a42d77d10} + version: 0.0.0-99cb49d8f4240fcd51f93c6f05f52c869dd50d9a hasBin: true '@angular/platform-browser@21.0.0-next.5': @@ -9314,7 +9314,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/8d333e8e2c48ff99a1a3ca633c1d6a456c082c55(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/05831615b5579240d8407d44e30bcc3a42d77d10(@modelcontextprotocol/sdk@1.18.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 1f7444ebfb58..7300070d99cf 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#ae607f0c2b54f579f6136b437a7e47943af87343", + "@angular/animations": "github:angular/animations-builds#8e780ef27ffa45a0f15cc8aa5047c19602e0b2ec", "@angular/cdk": "github:angular/cdk-builds#39db353b15e92a01ad481f2250e7824b45a00b0d", - "@angular/common": "github:angular/common-builds#57ee57bd854b37527875669828d496ee975aa5bd", - "@angular/compiler": "github:angular/compiler-builds#b0451c1fb14d14cbc1416667da2c470e85646f4f", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#ade0886da6483c87e0a302a0e3da7bb9753ca7f5", - "@angular/core": "github:angular/core-builds#22f52e90efb2315f9898e5e35d94b5d3a787db9d", - "@angular/forms": "github:angular/forms-builds#b797e52faf11155cbc93c99c9ee001d9ce29bf62", - "@angular/language-service": "github:angular/language-service-builds#30e3205dd56837b53581db200b6e14bb97f36632", - "@angular/localize": "github:angular/localize-builds#77610b1294a6b61a0348fd8dd73425863ca914dc", + "@angular/common": "github:angular/common-builds#02ca5ab190f88581866cc683b29be636496b74fa", + "@angular/compiler": "github:angular/compiler-builds#68eda8d832bf9200b40e1f2b77dbca55f48c8d0e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#1e13f7c7fe86b62bfa96f41f1a204c32984e5a94", + "@angular/core": "github:angular/core-builds#3b571a0a8048dd31f00918abde6a3e37f9e1fc09", + "@angular/forms": "github:angular/forms-builds#6cdb212b823e73e7319620236c44e010818b4ec6", + "@angular/language-service": "github:angular/language-service-builds#396428c897fa75f5d969a678861676d250b7ea12", + "@angular/localize": "github:angular/localize-builds#877722ef7c6751cd5541a1cf6ee8a92156400403", "@angular/material": "github:angular/material-builds#2fc13f0156d9098efa33c33fc8f5bac65c29b058", "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#123de8718fc9b2e7d7aafd836e9f1587ff61fa45", - "@angular/platform-browser": "github:angular/platform-browser-builds#3105c9d1c5e9f7f42eeae12fcd83041b5cdfca20", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#47f9d44d415d4ee2f9a334b34a47db59c6dc951c", - "@angular/platform-server": "github:angular/platform-server-builds#2f397fa2d04ce8dab18e6449cbcc23ce3d6104a5", - "@angular/router": "github:angular/router-builds#8760b4633f8b72fff4d705ab97b0f47fcaec7273", - "@angular/service-worker": "github:angular/service-worker-builds#d175a39407ce6c26671eadf89848f86d50b0a7c7" + "@angular/platform-browser": "github:angular/platform-browser-builds#64bebdcdc86ffc36ee48a62ff020e8da88692214", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a96c13d1d97bcbf338928c6e5de6317b3698fbc3", + "@angular/platform-server": "github:angular/platform-server-builds#fe6e538a08bb1c4de2c2b0db06d5a1e119c8ce46", + "@angular/router": "github:angular/router-builds#84dcd62f101041c26ac5bff51352a3b7e30b728d", + "@angular/service-worker": "github:angular/service-worker-builds#04526adde89a2ce7868bcb8a35d2da47eb82899d" } } From 9dab5780a1befbd76ee9ba4c4e6ac2d3fd714bb9 Mon Sep 17 00:00:00 2001 From: Karan Mistry Date: Thu, 25 Sep 2025 19:09:37 +0530 Subject: [PATCH 1509/2162] fix(@schematics/angular): add fixture.whenStable in spec files when zoneless apps --- .../src/app/app__suffix__.spec.ts.template | 4 +-- .../src/app/app__suffix__.spec.ts.template | 4 +-- .../angular/application/index_spec.ts | 29 ++++++++++++++++ ...rize__.__type@dasherize__.spec.ts.template | 2 +- .../schematics/angular/component/index.ts | 3 ++ .../angular/component/index_spec.ts | 34 +++++++++++++++++++ .../angular/utility/project-targets.ts | 12 +++++++ 7 files changed, 83 insertions(+), 5 deletions(-) diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template index 155b20acd0d6..2ee952baf1e3 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template @@ -20,9 +20,9 @@ describe('App', () => { expect(app).toBeTruthy(); }); - it('should render title', () => { + it('should render title', <% if(zoneless) { %> async <% } %>() => { const fixture = TestBed.createComponent(App); - fixture.detectChanges(); + <%= zoneless ? 'await fixture.whenStable();' : '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__suffix__.spec.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template index 5e235dfb423e..0b0f0c34c4bb 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template @@ -14,9 +14,9 @@ describe('App', () => { expect(app).toBeTruthy(); }); - it('should render title', () => { + it('should render title', <% if(zoneless) { %> async <% } %>() => { const fixture = TestBed.createComponent(App); - fixture.detectChanges(); + <%= zoneless ? 'await fixture.whenStable();' : 'fixture.detectChanges();' %> const compiled = fixture.nativeElement as HTMLElement; expect(compiled.querySelector('h1')?.textContent).toContain('Hello, <%= name %>'); }); diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index ba0033f8f119..96916066343c 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -831,6 +831,35 @@ describe('Application Schematic', () => { }); }); + it('should add fixture.whenStable() when zoneless application', async () => { + const tree = await schematicRunner.runSchematic( + 'application', + { + ...defaultOptions, + }, + workspaceTree, + ); + + const content = tree.readContent('/projects/foo/src/app/app.spec.ts'); + expect(content).toContain('fixture.whenStable()'); + expect(content).not.toContain('fixture.detectChanges()'); + }); + + it('should not add fixture.whenStable() in initial spec files when its not zoneless application', async () => { + const tree = await schematicRunner.runSchematic( + 'application', + { + ...defaultOptions, + zoneless: false, + }, + workspaceTree, + ); + + const content = tree.readContent('/projects/foo/src/app/app.spec.ts'); + expect(content).not.toContain('fixture.whenStable()'); + expect(content).toContain('fixture.detectChanges()'); + }); + it('should call the tailwind schematic when style is tailwind', async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const options = { ...defaultOptions, style: 'tailwind' as any }; diff --git a/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template b/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template index 174bfe4e537d..74d858ea1e64 100644 --- a/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +++ b/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template @@ -14,7 +14,7 @@ describe('<%= classifiedName %>', () => { fixture = TestBed.createComponent(<%= classifiedName %>); component = fixture.componentInstance; - fixture.detectChanges(); + <%= zoneless ? 'await fixture.whenStable();' : 'fixture.detectChanges();' %> }); it('should create', () => { diff --git a/packages/schematics/angular/component/index.ts b/packages/schematics/angular/component/index.ts index 1d98f616de37..c3c4fe1c3448 100644 --- a/packages/schematics/angular/component/index.ts +++ b/packages/schematics/angular/component/index.ts @@ -24,6 +24,7 @@ import { addDeclarationToNgModule } from '../utility/add-declaration-to-ng-modul import { findModuleFromOptions } from '../utility/find-module'; import { parseName } from '../utility/parse-name'; import { createProjectSchematic } from '../utility/project'; +import { isZonelessApp } from '../utility/project-targets'; import { validateClassName, validateHtmlSelector } from '../utility/validation'; import { buildDefaultPath } from '../utility/workspace'; import { Schema as ComponentOptions, Style } from './schema'; @@ -59,6 +60,7 @@ export default createProjectSchematic((options, { project, tre strings.classify(options.name) + (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); validateClassName(classifiedName); + const zoneless = isZonelessApp(project); const skipStyleFile = options.inlineStyle || options.style === Style.None; const templateSource = apply(url('./files'), [ @@ -72,6 +74,7 @@ export default createProjectSchematic((options, { project, tre ...options, // Add a new variable for the classified name, conditionally including the type classifiedName, + zoneless, }), !options.type ? forEach(((file) => { diff --git a/packages/schematics/angular/component/index_spec.ts b/packages/schematics/angular/component/index_spec.ts index 7b5217c71ea5..3aea03309e12 100644 --- a/packages/schematics/angular/component/index_spec.ts +++ b/packages/schematics/angular/component/index_spec.ts @@ -554,4 +554,38 @@ describe('Component Schematic', () => { const specContent = tree.readContent('/projects/bar/src/app/foo/foo.component.spec.ts'); expect(specContent).toContain("import { FooComponent } from './foo.component';"); }); + + it('should add fixture.whenStable() in spec file when zoneless and standalone apps', async () => { + const tree = await schematicRunner.runSchematic('component', { ...defaultOptions }, appTree); + const tsContent = tree.readContent('/projects/bar/src/app/foo/foo.component.spec.ts'); + + expect(tsContent).toContain('fixture.whenStable()'); + expect(tsContent).not.toContain('fixture.detectChanges()'); + }); + + describe('with zone.js application', () => { + const zoneAppOptions: ApplicationOptions = { + ...appOptions, + name: 'baz', + zoneless: false, + }; + + it('should add not fixture.whenStable() in spec file for standalone', async () => { + appTree = await schematicRunner.runSchematic( + 'application', + { ...zoneAppOptions, standalone: true }, + appTree, + ); + const tree = await schematicRunner.runSchematic( + 'component', + { ...defaultOptions, standalone: true, project: 'baz' }, + appTree, + ); + + const tsContent = tree.readContent('/projects/baz/src/app/foo/foo.component.spec.ts'); + + expect(tsContent).not.toContain('fixture.whenStable()'); + expect(tsContent).toContain('fixture.detectChanges()'); + }); + }); }); diff --git a/packages/schematics/angular/utility/project-targets.ts b/packages/schematics/angular/utility/project-targets.ts index 8897a3ddab66..a018d69c175a 100644 --- a/packages/schematics/angular/utility/project-targets.ts +++ b/packages/schematics/angular/utility/project-targets.ts @@ -21,3 +21,15 @@ export function isUsingApplicationBuilder(project: ProjectDefinition): boolean { return isUsingApplicationBuilder; } + +export function isZonelessApp(project: ProjectDefinition): boolean { + const buildTarget = project.targets.get('build'); + if (!buildTarget?.options?.polyfills) { + return true; + } + + const polyfills = buildTarget.options.polyfills as string[] | string; + const polyfillsList = Array.isArray(polyfills) ? polyfills : [polyfills]; + + return !polyfillsList.includes('zone.js'); +} From 0b55ebb1046197db80696f19d3cf138e3f69efba Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:08:04 +0000 Subject: [PATCH 1510/2162] test: update `no-zoneless` jest e2e to account for `fixture.whenStable` change This commit replaces `fixture.whenStable` to `fixture.detectChanges` in the Jest spec file when using zone.js --- tests/legacy-cli/e2e/tests/jest/no-zoneless.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts b/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts index 411378839b7f..9a74a0295c4e 100644 --- a/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts +++ b/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts @@ -1,3 +1,4 @@ +import { replaceInFile } from '../../utils/fs'; import { applyJestBuilder } from '../../utils/jest'; import { installPackage, uninstallPackage } from '../../utils/packages'; import { ng } from '../../utils/process'; @@ -8,8 +9,15 @@ export default async function (): Promise { polyfills: ['zone.js', 'zone.js/testing'], }); + await replaceInFile( + 'src/app/app.spec.ts', + 'await fixture.whenStable();', + 'fixture.detectChanges();', + ); + try { await installPackage('zone.js'); + const { stderr } = await ng('test'); if (!stderr.includes('Jest builder is currently EXPERIMENTAL')) { From d1870af9dcdd8267e2cc573859af592b1fe21979 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 26 Sep 2025 17:35:24 +0000 Subject: [PATCH 1511/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index efd521e5d8e7..2fbded840f10 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -26,13 +26,13 @@ single_version_override( ) bazel_dep(name = "aspect_bazel_lib", version = "2.21.2") -bazel_dep(name = "bazel_skylib", version = "1.8.1") +bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "4010ef96de0c46db7764adc2f262258c9de3d718", + commit = "2c348bf59a38d044f4d389290d597d94c0699607", remote = "https://github.com/devversion/rules_angular.git", ) From d175bbbdacbe8351089a944b382505aa58d0628c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 26 Sep 2025 19:34:25 +0000 Subject: [PATCH 1512/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- 9 files changed, 63 insertions(+), 63 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 814cf9a4974f..dd17d9e54e73 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + - uses: angular/dev-infra/github-actions/branch-manager@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38804a5020b1..74d301b7e4f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 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@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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 014598037b27..04c1a7d25610 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + - uses: angular/dev-infra/github-actions/pull-request-labeling@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + - uses: angular/dev-infra/github-actions/post-approval-changes@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 78879a86d41b..3e7a2cb15260 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@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + - uses: angular/dev-infra/github-actions/feature-request@00cef30761644cb8c8e75ea448e958e4eeed3aa7 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index ff4df40db08e..9bfb6e1e383f 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@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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 5c397133fb61..6503ab29b3a5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/linting/licenses@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 - 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/MODULE.bazel b/MODULE.bazel index 2fbded840f10..924e13898af2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "99cb49d8f4240fcd51f93c6f05f52c869dd50d9a", + commit = "00cef30761644cb8c8e75ea448e958e4eeed3aa7", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 3ec56b482873..3ed4bfb94203 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.5", "@angular/localize": "21.0.0-next.5", "@angular/material": "21.0.0-next.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#05831615b5579240d8407d44e30bcc3a42d77d10", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e162324c6d6c9b4d712eeb9b786937165c1f310e", "@angular/platform-browser": "21.0.0-next.5", "@angular/platform-server": "21.0.0-next.5", "@angular/router": "21.0.0-next.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e94503c7b6c..6918b453dd99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.5 version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#05831615b5579240d8407d44e30bcc3a42d77d10 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/05831615b5579240d8407d44e30bcc3a42d77d10(@modelcontextprotocol/sdk@1.18.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e162324c6d6c9b4d712eeb9b786937165c1f310e + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.1) '@angular/platform-browser': specifier: 21.0.0-next.5 version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/05831615b5579240d8407d44e30bcc3a42d77d10': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/05831615b5579240d8407d44e30bcc3a42d77d10} - version: 0.0.0-99cb49d8f4240fcd51f93c6f05f52c869dd50d9a + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e} + version: 0.0.0-00cef30761644cb8c8e75ea448e958e4eeed3aa7 hasBin: true '@angular/platform-browser@21.0.0-next.5': @@ -9314,7 +9314,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/05831615b5579240d8407d44e30bcc3a42d77d10(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) From 6b97932647c8ea79f4e8ff48d480a98aa31415fd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 26 Sep 2025 21:33:57 +0000 Subject: [PATCH 1513/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- tests/legacy-cli/e2e/ng-snapshot/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 7300070d99cf..a5bd73102d79 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -3,7 +3,7 @@ "private": true, "dependencies": { "@angular/animations": "github:angular/animations-builds#8e780ef27ffa45a0f15cc8aa5047c19602e0b2ec", - "@angular/cdk": "github:angular/cdk-builds#39db353b15e92a01ad481f2250e7824b45a00b0d", + "@angular/cdk": "github:angular/cdk-builds#0f636aa5ed4000a727abd7ff14ea525ddfb5b4c0", "@angular/common": "github:angular/common-builds#02ca5ab190f88581866cc683b29be636496b74fa", "@angular/compiler": "github:angular/compiler-builds#68eda8d832bf9200b40e1f2b77dbca55f48c8d0e", "@angular/compiler-cli": "github:angular/compiler-cli-builds#1e13f7c7fe86b62bfa96f41f1a204c32984e5a94", @@ -11,8 +11,8 @@ "@angular/forms": "github:angular/forms-builds#6cdb212b823e73e7319620236c44e010818b4ec6", "@angular/language-service": "github:angular/language-service-builds#396428c897fa75f5d969a678861676d250b7ea12", "@angular/localize": "github:angular/localize-builds#877722ef7c6751cd5541a1cf6ee8a92156400403", - "@angular/material": "github:angular/material-builds#2fc13f0156d9098efa33c33fc8f5bac65c29b058", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#123de8718fc9b2e7d7aafd836e9f1587ff61fa45", + "@angular/material": "github:angular/material-builds#15e0eea61c4f2fa8805b1d253b79e76e01ff5883", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#85e26e84e3b72d8205906077dd532118be3ededd", "@angular/platform-browser": "github:angular/platform-browser-builds#64bebdcdc86ffc36ee48a62ff020e8da88692214", "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a96c13d1d97bcbf338928c6e5de6317b3698fbc3", "@angular/platform-server": "github:angular/platform-server-builds#fe6e538a08bb1c4de2c2b0db06d5a1e119c8ce46", From 5bfae61543d5d4109f99d05559403a88644e2846 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 28 Sep 2025 00:15:12 +0000 Subject: [PATCH 1514/2162] build: update schematics dependencies to ~5.11.0 See associated pull request for more information. --- .../angular_devkit/schematics_cli/schematic/files/package.json | 2 +- .../schematics/angular/utility/latest-versions/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/schematic/files/package.json b/packages/angular_devkit/schematics_cli/schematic/files/package.json index 04d6421c4860..25d93052eaf0 100644 --- a/packages/angular_devkit/schematics_cli/schematic/files/package.json +++ b/packages/angular_devkit/schematics_cli/schematic/files/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@types/node": "^20.17.19", "@types/jasmine": "~5.1.0", - "jasmine": "~5.10.0", + "jasmine": "~5.11.0", "typescript": "~5.9.2" } } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index ba5f291bb665..a662484657f5 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -8,7 +8,7 @@ "@types/node": "^20.17.19", "browser-sync": "^3.0.0", "express": "^5.1.0", - "jasmine-core": "~5.10.0", + "jasmine-core": "~5.11.0", "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", From 980cb77eb379c4753222537d00ff14d8c02849a1 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 26 Sep 2025 20:40:56 +0000 Subject: [PATCH 1515/2162] build: update github/codeql-action action to v3.30.5 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dcb4fd2a02ad..fb639f1b62fb 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@303c0aef88fc2fe5ff6d63d3b1596bfd83dfa1f9 # v3.30.4 + uses: github/codeql-action/init@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@303c0aef88fc2fe5ff6d63d3b1596bfd83dfa1f9 # v3.30.4 + uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3a85b4f55faa..4b979ef1e3d4 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@303c0aef88fc2fe5ff6d63d3b1596bfd83dfa1f9 # v3.30.4 + uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: sarif_file: results.sarif From e1101786d860366b693f85e1d4464b0d950fea33 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 28 Sep 2025 07:33:41 +0000 Subject: [PATCH 1516/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 6 +- packages/angular/cli/package.json | 4 +- pnpm-lock.yaml | 554 ++++++++++++++++++++++-------- 3 files changed, 410 insertions(+), 154 deletions(-) diff --git a/package.json b/package.json index 3ed4bfb94203..abaf834be5cc 100644 --- a/package.json +++ b/package.json @@ -111,8 +111,8 @@ "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", - "jasmine": "~5.10.0", - "jasmine-core": "~5.10.0", + "jasmine": "~5.11.0", + "jasmine-core": "~5.11.0", "jasmine-reporters": "^2.5.2", "jasmine-spec-reporter": "~7.0.0", "karma": "~6.4.0", @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.52.2", + "rollup": "4.52.3", "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 769eb93ebae5..4ecb9e32aaed 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,10 +27,10 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.8.6", "@listr2/prompt-adapter-inquirer": "3.0.4", - "@modelcontextprotocol/sdk": "1.18.1", + "@modelcontextprotocol/sdk": "1.18.2", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.38.0", + "algoliasearch": "5.39.0", "ini": "5.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6918b453dd99..0cae7b9aa3c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e162324c6d6c9b4d712eeb9b786937165c1f310e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.1) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.2) '@angular/platform-browser': specifier: 21.0.0-next.5 version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -78,16 +78,16 @@ importers: version: 9.36.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.52.2) + version: 5.1.1(rollup@4.52.3) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.6(rollup@4.52.2) + version: 28.0.6(rollup@4.52.3) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.52.2) + version: 6.1.0(rollup@4.52.3) '@rollup/plugin-node-resolve': specifier: 16.0.1 - version: 16.0.1(rollup@4.52.2) + version: 16.0.1(rollup@4.52.3) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.4.0(eslint@9.36.0(jiti@2.5.1)) @@ -215,11 +215,11 @@ importers: specifier: 9.1.7 version: 9.1.7 jasmine: - specifier: ~5.10.0 - version: 5.10.0 + specifier: ~5.11.0 + version: 5.11.0 jasmine-core: - specifier: ~5.10.0 - version: 5.10.0 + specifier: ~5.11.0 + version: 5.11.0 jasmine-reporters: specifier: ^2.5.2 version: 2.5.2 @@ -240,7 +240,7 @@ importers: version: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.10.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) + version: 2.1.0(jasmine-core@5.11.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -269,17 +269,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.52.2 - version: 4.52.2 + specifier: 4.52.3 + version: 4.52.3 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.52.2)(typescript@5.9.2) + version: 6.2.3(rollup@4.52.3)(typescript@5.9.2) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.6)(rollup@4.52.2) + version: 0.5.4(@types/node@22.18.6)(rollup@4.52.3) semver: specifier: 7.7.2 version: 7.7.2 @@ -478,8 +478,8 @@ importers: specifier: 3.0.4 version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.4) '@modelcontextprotocol/sdk': - specifier: 1.18.1 - version: 1.18.1 + specifier: 1.18.2 + version: 1.18.2 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -487,8 +487,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.38.0 - version: 5.38.0 + specifier: 5.39.0 + version: 5.39.0 ini: specifier: 5.0.0 version: 5.0.0 @@ -918,60 +918,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.4.0': - resolution: {integrity: sha512-N0blWT/C0KOZ/OJ9GXBX66odJZlrYjMj3M+01y8ob1mjBFnBaBo7gOCyHBDQy60+H4pJXp3pSGlJOqJIueBH+A==} + '@algolia/abtesting@1.5.0': + resolution: {integrity: sha512-W/ohRkbKQsqDWALJg28X15KF7Tcyg53L1MfdOkLgvkcCcofdzGHSimHHeNG05ojjFw9HK8+VPhe/Vwq4MozIJg==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.38.0': - resolution: {integrity: sha512-15d6zv8vtj2l9pnnp/EH7Rhq3/snCCHRz56NnX6xIUPrbJl5gCsIYXAz8C2IEkwOpoDb0r5G6ArY2gKdVMNezw==} + '@algolia/client-abtesting@5.39.0': + resolution: {integrity: sha512-Vf0ZVe+qo3sHDrCinouJqlg8VoxM4Qo/KxNIqMYybkuctutfnp3kIY9OmESplOQ/9NGBthU9EG+4d5fBibWK/A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.38.0': - resolution: {integrity: sha512-jJIbYAhYvTG3+gEAP5Q5Dp6PFJfUR+atz5rsqm5KjAKK+faLFdHJbM2IbOo0xdyGd+SH259MzfQKLJ9mZZ27dQ==} + '@algolia/client-analytics@5.39.0': + resolution: {integrity: sha512-V16ITZxYIwcv1arNce65JZmn94Ft6vKlBZ//gXw8AvIH32glJz1KcbaVAUr9p7PYlGZ/XVHP6LxDgrpNdtwgcA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.38.0': - resolution: {integrity: sha512-aMCXzVPGJTeQnVU3Sdf30TfMN2+QyWcjfPTCCHyqVVgjPipb6RnK40aISGoO+rlYjh9LunDsNVFLwv+JEIF8bQ==} + '@algolia/client-common@5.39.0': + resolution: {integrity: sha512-UCJTuwySEQeiKPWV3wruhuI/wHbDYenHzgL9pYsvh6r/u5Z+g61ip1iwdAlFp02CnywzI9O7+AQPh2ManYyHmQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.38.0': - resolution: {integrity: sha512-4c3FbpMiJX+VcaAj0rYaQdTLS/CkrdOn4hW+5y1plPov7KC7iSHai/VBbirmHuAfW1hVPCIh1w/4erKKTKuo+Q==} + '@algolia/client-insights@5.39.0': + resolution: {integrity: sha512-s0ia8M/ZZR+iO2uLNTBrlQdEb6ZMAMcKMHckp5mcoglxrf8gHifL4LmdhGKdAxAn3UIagtqIP0RCnIymHUbm7A==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.38.0': - resolution: {integrity: sha512-FzLs6c8TBL4FSgNfnH2NL7O33ktecGiaKO4ZFG51QYORUzD5d6YwB9UBteaIYu/sgFoEdY57diYU4vyBH8R6iA==} + '@algolia/client-personalization@5.39.0': + resolution: {integrity: sha512-vZPIt7Lw+toNsHZUiPhNIc1Z3vUjDp7nzn6AMOaPC73gEuTq2iLPNvM06CSB6aHePo5eMeJIP5YEKBUQUA/PJA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.38.0': - resolution: {integrity: sha512-7apiahlgZLvOqrh0+hAYAp/UWjqz6AfSJrCwnsoQNzgIT09dLSPIKREelkuQeUrKy38vHWWpSQE3M0zWSp/YrA==} + '@algolia/client-query-suggestions@5.39.0': + resolution: {integrity: sha512-jcPQr3iKTWNVli2NYHPv02aNLwixDjPCpOgMp9CZTvEiPI6Ec4jHX+oFr3LDZagOFY9e1xJhc/JrgMGGW1sHnw==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.38.0': - resolution: {integrity: sha512-PTAFMJOpVtJweExEYYgdmSCC6n4V/R+ctDL3fRQy77ulZM/p+zMLIQC9c7HCQE1zqpauvVck3f2zYSejaUTtrw==} + '@algolia/client-search@5.39.0': + resolution: {integrity: sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.38.0': - resolution: {integrity: sha512-qGSUGgceJHGyJLZ06bFLwVe2Tpf9KwabmoBjFvFscVmMmU5scKya6voCYd9bdX7V0Xy1qya9MGbmTm4zlLuveQ==} + '@algolia/ingestion@1.39.0': + resolution: {integrity: sha512-IgSHKUiuecqLfBlXiuCSdRTdsO3/yvpmXrMFz8fAJ8M4QmDtHkOuD769dmybRYqsbYMHivw+lir4BgbRGMtOIQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.38.0': - resolution: {integrity: sha512-VnCtAUcHirvv/dDHg9jK1Z5oo4QOC5FKDxe40x8qloru2qDcjueT34jiAsB0gRos3VWf9v4iPSYTqMIFOcADpQ==} + '@algolia/monitoring@1.39.0': + resolution: {integrity: sha512-8Xnd4+609SKC/hqVsuFc4evFBmvA2765/4NcH+Dpr756SKPbL1BY0X8kVxlmM3YBLNqnduSQxHxpDJUK58imCA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.38.0': - resolution: {integrity: sha512-fqgeU9GqxQorFUeGP4et1MyY28ccf9PCeciHwDPSbPYYiTqBItHdUIiytsNpjC5Dnc0RWtuXWCltLwSw9wN/bQ==} + '@algolia/recommend@5.39.0': + resolution: {integrity: sha512-D7Ye2Ss/5xqUkQUxKm/VqEJLt5kARd9IMmjdzlxaKhGgNlOemTay0lwBmOVFuJRp7UODjp5c9+K+B8g0ORObIw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.38.0': - resolution: {integrity: sha512-nAUKbv4YQIXbpPi02AQvSPisD5FDDbT8XeYSh9HFoYP0Z3IpBLLDg7R4ahPvzd7gGsVKgEbXzRPWESXSji5yIg==} + '@algolia/requester-browser-xhr@5.39.0': + resolution: {integrity: sha512-mgPte1ZJqpk9dkVs44J3wKAbHATvHZNlSpzhMdjMLIg/3qTycSZyDiomLiSlxE8CLsxyBAOJWnyKRHfom+Z1rg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.38.0': - resolution: {integrity: sha512-bkuAHaadC6OxJd3SVyQQnU1oJ9G/zdCqua7fwr1tJDrA/v7KzeS5np4/m6BuRUpTgVgFZHSewGnMcgj9DLBoaQ==} + '@algolia/requester-fetch@5.39.0': + resolution: {integrity: sha512-LIrCkrxu1WnO3ev1+w6NnZ12JZL/o+2H9w6oWnZAjQZIlA/Ym6M9QHkt+OQ/SwkuoiNkW3DAo+Pi4A2V9FPtqg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.38.0': - resolution: {integrity: sha512-yHDKZTnMPR3/4bY0CVC1/uRnnbAaJ+pctRuX7G/HflBkKOrnUBDEGtQQHzEfMz2FHZ/tbCL+Q9r6mvwTSGp8nw==} + '@algolia/requester-node-http@5.39.0': + resolution: {integrity: sha512-6beG+egPwXmvhAg+m0STCj+ZssDcjrLzf4L05aKm2nGglMXSSPz0cH/rM+kVD9krNfldiMctURd4wjojW1fV0w==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -2452,8 +2452,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.18.1': - resolution: {integrity: sha512-d//GE8/Yh7aC3e7p+kZG8JqqEAwwDUmAfvH1quogtbk+ksS6E0RR6toKKESPYYZVre0meqkJb27zb+dhqE9Sgw==} + '@modelcontextprotocol/sdk@1.18.2': + resolution: {integrity: sha512-beedclIvFcCnPrYgHsylqiYJVJ/CI47Vyc4tY8no1/Li/O8U4BTlJfy6ZwxkYwx+Mx10nrgwSVrA7VBbhh4slg==} engines: {node: '>=18'} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -3081,122 +3081,243 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.52.3': + resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.52.2': resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.52.3': + resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.52.2': resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.52.3': + resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.52.2': resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.52.3': + resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.52.2': resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.52.3': + resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.2': resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.3': + resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.52.2': resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.52.2': resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.52.2': resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.52.3': + resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.52.2': resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.52.3': + resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.52.2': resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.52.3': + resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.2': resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.2': resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.52.2': resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.52.3': + resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.52.2': resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.52.3': + resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.2': resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.3': + resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.52.2': resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.52.3': + resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openharmony-arm64@4.52.2': resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.52.3': + resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.52.2': resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.52.3': + resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.2': resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.3': + resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.2': resolution: {integrity: sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.3': + resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.2': resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.3': + resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.52.0': resolution: {integrity: sha512-ELDfd164EwuLyPLhMBMP/zUfLi5RXmCbRGQpkGqfSTNATi0WLgPo96+c1W9YGEefgR+OH1okNKV+clWhgVrwIA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3917,8 +4038,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.38.0: - resolution: {integrity: sha512-8VJKIzheeI9cjuVJhU1hYEVetOTe7LvA+CujAI7yqvYsPtZfVEvv1pg9AeFNtHBg/ZoSLGU5LPijhcY5l3Ea9g==} + algoliasearch@5.39.0: + resolution: {integrity: sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -6219,6 +6340,9 @@ packages: jasmine-core@5.10.0: resolution: {integrity: sha512-MrChbWV5LBo+EaeKwTM1eZ6oYSz1brvFExnRafraEkJkbJ9evbUxABhnIgGQimhpMxhg+BD6QmOvb/e3NXsNdg==} + jasmine-core@5.11.0: + resolution: {integrity: sha512-MPJ8L5yyNul0F2SuEsLASwESXQjJvBXnKu31JWFyRZSvuv2B79K4GDWN3pSqvLheUNh7Fyb6dXwd4rsz95O2Kg==} + jasmine-reporters@2.5.2: resolution: {integrity: sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==} @@ -6233,6 +6357,10 @@ packages: resolution: {integrity: sha512-v4FojO8cXQdx15mJXovGhjJOvyIcVf7AC+H0ZahnfLk52vUbwuLxjVgbikc95yLmgwKQsFT47/FGQ3dOrWVxtQ==} hasBin: true + jasmine@5.11.0: + resolution: {integrity: sha512-MhIYY2pLfRA5hhIvY72ZLilwKeZEBuTyIUv9JDB+b+pEYehsJDW2obKF2dmMtWaFG6pDiFiAUNphpZ7SW7fFMA==} + hasBin: true + jasminewd2@2.2.0: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} @@ -7735,6 +7863,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.52.3: + resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} + 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'} @@ -9149,89 +9282,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.4.0': + '@algolia/abtesting@1.5.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/client-abtesting@5.38.0': + '@algolia/client-abtesting@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/client-analytics@5.38.0': + '@algolia/client-analytics@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/client-common@5.38.0': {} + '@algolia/client-common@5.39.0': {} - '@algolia/client-insights@5.38.0': + '@algolia/client-insights@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/client-personalization@5.38.0': + '@algolia/client-personalization@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/client-query-suggestions@5.38.0': + '@algolia/client-query-suggestions@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/client-search@5.38.0': + '@algolia/client-search@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/ingestion@1.38.0': + '@algolia/ingestion@1.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/monitoring@1.38.0': + '@algolia/monitoring@1.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/recommend@5.38.0': + '@algolia/recommend@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + '@algolia/client-common': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 - '@algolia/requester-browser-xhr@5.38.0': + '@algolia/requester-browser-xhr@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 + '@algolia/client-common': 5.39.0 - '@algolia/requester-fetch@5.38.0': + '@algolia/requester-fetch@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 + '@algolia/client-common': 5.39.0 - '@algolia/requester-node-http@5.38.0': + '@algolia/requester-node-http@5.39.0': dependencies: - '@algolia/client-common': 5.38.0 + '@algolia/client-common': 5.39.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9314,11 +9447,11 @@ 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/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.20.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.20.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.8.6(@types/node@24.5.2) '@inquirer/type': 3.0.8(@types/node@24.5.2) '@octokit/auth-app': 8.1.0 @@ -10690,12 +10823,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.20.0(@modelcontextprotocol/sdk@1.18.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.20.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.18.1 + '@modelcontextprotocol/sdk': 1.18.2 transitivePeerDependencies: - bufferutil - encoding @@ -10982,7 +11115,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.2': optional: true - '@modelcontextprotocol/sdk@1.18.1': + '@modelcontextprotocol/sdk@1.18.2': dependencies: ajv: 6.12.6 content-type: 1.0.5 @@ -11493,13 +11626,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.40': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.2)': + '@rollup/plugin-alias@5.1.1(rollup@4.52.3)': optionalDependencies: - rollup: 4.52.2 + rollup: 4.52.3 - '@rollup/plugin-commonjs@28.0.6(rollup@4.52.2)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.52.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11507,7 +11640,7 @@ snapshots: magic-string: 0.30.19 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.2 + rollup: 4.52.3 '@rollup/plugin-json@6.1.0(rollup@4.52.2)': dependencies: @@ -11515,33 +11648,39 @@ snapshots: optionalDependencies: rollup: 4.52.2 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.2)': + '@rollup/plugin-json@6.1.0(rollup@4.52.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + optionalDependencies: + rollup: 4.52.3 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.2 + rollup: 4.52.3 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.2)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.2) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.2 + rollup: 4.52.3 - '@rollup/pluginutils@5.2.0(rollup@4.52.2)': + '@rollup/pluginutils@5.2.0(rollup@4.52.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.2 + rollup: 4.52.3 '@rollup/pluginutils@5.3.0(rollup@4.52.2)': dependencies: @@ -11551,72 +11690,146 @@ snapshots: optionalDependencies: rollup: 4.52.2 + '@rollup/pluginutils@5.3.0(rollup@4.52.3)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.3 + '@rollup/rollup-android-arm-eabi@4.52.2': optional: true + '@rollup/rollup-android-arm-eabi@4.52.3': + optional: true + '@rollup/rollup-android-arm64@4.52.2': optional: true + '@rollup/rollup-android-arm64@4.52.3': + optional: true + '@rollup/rollup-darwin-arm64@4.52.2': optional: true + '@rollup/rollup-darwin-arm64@4.52.3': + optional: true + '@rollup/rollup-darwin-x64@4.52.2': optional: true + '@rollup/rollup-darwin-x64@4.52.3': + optional: true + '@rollup/rollup-freebsd-arm64@4.52.2': optional: true + '@rollup/rollup-freebsd-arm64@4.52.3': + optional: true + '@rollup/rollup-freebsd-x64@4.52.2': optional: true + '@rollup/rollup-freebsd-x64@4.52.3': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.2': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.2': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.2': optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.3': + optional: true + '@rollup/rollup-linux-arm64-musl@4.52.2': optional: true + '@rollup/rollup-linux-arm64-musl@4.52.3': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.2': optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.3': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.2': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.2': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.2': optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.3': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.2': optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.3': + optional: true + '@rollup/rollup-linux-x64-gnu@4.52.2': optional: true + '@rollup/rollup-linux-x64-gnu@4.52.3': + optional: true + '@rollup/rollup-linux-x64-musl@4.52.2': optional: true + '@rollup/rollup-linux-x64-musl@4.52.3': + optional: true + '@rollup/rollup-openharmony-arm64@4.52.2': optional: true + '@rollup/rollup-openharmony-arm64@4.52.3': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.2': optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.3': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.2': optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.3': + optional: true + '@rollup/rollup-win32-x64-gnu@4.52.2': optional: true + '@rollup/rollup-win32-x64-gnu@4.52.3': + optional: true + '@rollup/rollup-win32-x64-msvc@4.52.2': optional: true + '@rollup/rollup-win32-x64-msvc@4.52.3': + optional: true + '@rollup/wasm-node@4.52.0': dependencies: '@types/estree': 1.0.8 @@ -12386,11 +12599,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.2) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.3) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.52.2 + rollup: 4.52.3 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -12688,22 +12901,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.38.0: - dependencies: - '@algolia/abtesting': 1.4.0 - '@algolia/client-abtesting': 5.38.0 - '@algolia/client-analytics': 5.38.0 - '@algolia/client-common': 5.38.0 - '@algolia/client-insights': 5.38.0 - '@algolia/client-personalization': 5.38.0 - '@algolia/client-query-suggestions': 5.38.0 - '@algolia/client-search': 5.38.0 - '@algolia/ingestion': 1.38.0 - '@algolia/monitoring': 1.38.0 - '@algolia/recommend': 5.38.0 - '@algolia/requester-browser-xhr': 5.38.0 - '@algolia/requester-fetch': 5.38.0 - '@algolia/requester-node-http': 5.38.0 + algoliasearch@5.39.0: + dependencies: + '@algolia/abtesting': 1.5.0 + '@algolia/client-abtesting': 5.39.0 + '@algolia/client-analytics': 5.39.0 + '@algolia/client-common': 5.39.0 + '@algolia/client-insights': 5.39.0 + '@algolia/client-personalization': 5.39.0 + '@algolia/client-query-suggestions': 5.39.0 + '@algolia/client-search': 5.39.0 + '@algolia/ingestion': 1.39.0 + '@algolia/monitoring': 1.39.0 + '@algolia/recommend': 5.39.0 + '@algolia/requester-browser-xhr': 5.39.0 + '@algolia/requester-fetch': 5.39.0 + '@algolia/requester-node-http': 5.39.0 ansi-colors@4.1.3: {} @@ -15353,6 +15566,8 @@ snapshots: jasmine-core@5.10.0: {} + jasmine-core@5.11.0: {} + jasmine-reporters@2.5.2: dependencies: '@xmldom/xmldom': 0.8.11 @@ -15373,6 +15588,11 @@ snapshots: glob: 10.4.5 jasmine-core: 5.10.0 + jasmine@5.11.0: + dependencies: + glob: 10.4.5 + jasmine-core: 5.11.0 + jasminewd2@2.2.0: {} jest-worker@27.5.1: @@ -15536,9 +15756,9 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.10.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.11.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): dependencies: - jasmine-core: 5.10.0 + jasmine-core: 5.11.0 karma: 6.4.4(bufferutil@4.0.9) karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) @@ -17055,10 +17275,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.2): + rollup-plugin-dts@6.2.3(rollup@4.52.3)(typescript@5.9.2): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.52.2) - rollup: 4.52.2 + magic-string: 0.30.19 + rollup: 4.52.3 + typescript: 5.9.2 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.3): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.52.3) + rollup: 4.52.3 optionalDependencies: '@types/node': 22.18.6 @@ -17090,6 +17318,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.2 fsevents: 2.3.3 + rollup@4.52.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.3 + '@rollup/rollup-android-arm64': 4.52.3 + '@rollup/rollup-darwin-arm64': 4.52.3 + '@rollup/rollup-darwin-x64': 4.52.3 + '@rollup/rollup-freebsd-arm64': 4.52.3 + '@rollup/rollup-freebsd-x64': 4.52.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 + '@rollup/rollup-linux-arm-musleabihf': 4.52.3 + '@rollup/rollup-linux-arm64-gnu': 4.52.3 + '@rollup/rollup-linux-arm64-musl': 4.52.3 + '@rollup/rollup-linux-loong64-gnu': 4.52.3 + '@rollup/rollup-linux-ppc64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-musl': 4.52.3 + '@rollup/rollup-linux-s390x-gnu': 4.52.3 + '@rollup/rollup-linux-x64-gnu': 4.52.3 + '@rollup/rollup-linux-x64-musl': 4.52.3 + '@rollup/rollup-openharmony-arm64': 4.52.3 + '@rollup/rollup-win32-arm64-msvc': 4.52.3 + '@rollup/rollup-win32-ia32-msvc': 4.52.3 + '@rollup/rollup-win32-x64-gnu': 4.52.3 + '@rollup/rollup-win32-x64-msvc': 4.52.3 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -18225,7 +18481,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.2 + rollup: 4.52.3 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.5.2 From 756649a67715de742a6f6a7fadd8b8f3d0d148e3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 29 Sep 2025 09:06:38 +0000 Subject: [PATCH 1517/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 732 ++++++++++++++----------------------------------- 1 file changed, 209 insertions(+), 523 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0cae7b9aa3c0..a2519dc41e83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,7 +69,7 @@ importers: version: 8.2.1 '@eslint/compat': specifier: 1.4.0 - version: 1.4.0(eslint@9.36.0(jiti@2.5.1)) + version: 1.4.0(eslint@9.36.0(jiti@2.6.0)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 @@ -90,7 +90,7 @@ importers: version: 16.0.1(rollup@4.52.3) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.4.0(eslint@9.36.0(jiti@2.5.1)) + version: 5.4.0(eslint@9.36.0(jiti@2.6.0)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -165,10 +165,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.44.1 - version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/parser': specifier: 8.44.1 - version: 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -186,16 +186,16 @@ importers: version: 0.25.10 eslint: specifier: 9.36.0 - version: 9.36.0(jiti@2.5.1) + version: 9.36.0(jiti@2.6.0) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.5.1)) + version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.36.0(jiti@2.5.1)) + version: 3.1.1(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)) + version: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) express: specifier: 5.1.0 version: 5.1.0 @@ -255,7 +255,7 @@ importers: version: 0.30.19 npm: specifier: ^11.0.0 - version: 11.6.0 + version: 11.6.1 prettier: specifier: ^3.0.0 version: 3.6.2 @@ -291,7 +291,7 @@ importers: version: 0.5.21 tar: specifier: ^7.0.0 - version: 7.4.3 + version: 7.5.1 ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@22.18.6)(typescript@5.9.2) @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) packages/angular/build: dependencies: @@ -372,7 +372,7 @@ importers: version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.7 - version: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.2 @@ -1097,11 +1097,11 @@ packages: '@angular/core': 21.0.0-next.5 rxjs: ^6.5.3 || ^7.4.0 - '@asamuzakjp/css-color@4.0.4': - resolution: {integrity: sha512-cKjSKvWGmAziQWbCouOsFwb14mp1betm8Y7Fn+yglDMUUu3r9DCbJ9iJbeFDenLMqFbIMC0pQP8K+B8LAxX3OQ==} + '@asamuzakjp/css-color@4.0.5': + resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.5.5': - resolution: {integrity: sha512-kI2MX9pmImjxWT8nxDZY+MuN6r1jJGe7WxizEbsAEPB/zxfW5wYLIiPG1v3UKgEOOP8EsDkp0ZL99oRFAdPM8g==} + '@asamuzakjp/dom-selector@6.5.6': + resolution: {integrity: sha512-Mj3Hu9ymlsERd7WOsUKNUZnJYL4IZ/I9wVVYgtvOsWYiEFbkQ4G7VRIh2USxTVW4BBDIsLG+gBUgqOqf2Kvqow==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -2486,8 +2486,8 @@ packages: cpu: [x64] os: [win32] - '@mswjs/interceptors@0.39.6': - resolution: {integrity: sha512-bndDP83naYYkfayr/qhBHMhk0YGwS1iv6vaEGcr0SQbO0IZtbOPqjKjds/WcG+bJA+1T5vCx6kprKOzn5Bg+Vw==} + '@mswjs/interceptors@0.39.7': + resolution: {integrity: sha512-sURvQbbKsq5f8INV54YJgJEdk8oxBanqkTiXXd33rKmofFCwZLhLRszPduMZ9TA9b8/1CHc/IJmOlBHJk2Q5AQ==} engines: {node: '>=18'} '@napi-rs/nice-android-arm-eabi@1.1.1': @@ -3076,250 +3076,129 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.2': - resolution: {integrity: sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.52.3': resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.2': - resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.52.3': resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.2': - resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.52.3': resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.2': - resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.52.3': resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.2': - resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.52.3': resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.2': - resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.3': resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.2': - resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.52.3': resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.52.2': - resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.52.3': resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.52.2': - resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.52.3': resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.52.2': - resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.52.3': resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.52.2': - resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.52.3': resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.2': - resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.3': resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.2': - resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.3': resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.52.2': - resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.52.3': resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.52.2': - resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.52.3': resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.2': - resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.3': resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.52.2': - resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.52.3': resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.52.2': - resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.52.3': resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.2': - resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.52.3': resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.2': - resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.3': resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.2': - resolution: {integrity: sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.3': resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.2': - resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.3': resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.52.0': - resolution: {integrity: sha512-ELDfd164EwuLyPLhMBMP/zUfLi5RXmCbRGQpkGqfSTNATi0WLgPo96+c1W9YGEefgR+OH1okNKV+clWhgVrwIA==} + '@rollup/wasm-node@4.52.3': + resolution: {integrity: sha512-Vltzfan6IBSm4dG3w8ArFVUMhBABbW/9uYMPnbYyv2Vk+Jry9qzlXKvxSZhDbvwtb0GJHDWwPOMj6d8G2cb9Tw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3338,8 +3217,8 @@ packages: resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} engines: {node: ^18.17.0 || >=20.5.0} - '@sigstore/sign@4.0.0': - resolution: {integrity: sha512-5+IadiqPzRRMfvftHONzpeH2EzlDNuBiTMC3Lx7+9tLqn/4xbWVfSZA+YaOzKCn86k5BWfJ+aGO9v+pQmIyxqQ==} + '@sigstore/sign@4.0.1': + resolution: {integrity: sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==} engines: {node: ^20.17.0 || >=22.9.0} '@sigstore/tuf@4.0.0': @@ -3700,10 +3579,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/types@8.44.0': - resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.44.1': resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4050,8 +3925,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.1.0: - resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==} + ansi-escapes@7.1.1: + resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -4227,8 +4102,8 @@ packages: aws4@1.13.2: resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - b4a@1.7.1: - resolution: {integrity: sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==} + b4a@1.7.3: + resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} peerDependencies: react-native-b4a: '*' peerDependenciesMeta: @@ -4263,8 +4138,8 @@ packages: bare-events@2.7.0: resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} - bare-fs@4.4.4: - resolution: {integrity: sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==} + bare-fs@4.4.5: + resolution: {integrity: sha512-TCtu93KGLu6/aiGWzMr12TmSRS6nKdfhAnzTQRbXoSWxkbb9eRd53jQ51jG7g1gYjjtto3hbBrrhzg6djcgiKg==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -4300,8 +4175,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.6: - resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==} + baseline-browser-mapping@2.8.8: + resolution: {integrity: sha512-be0PUaPsQX/gPWWgFsdD+GFzaoig5PXaUC1xLkQiYdDnANU8sMnHoQd8JhbJQuvTWrWLyeFN9Imb5Qtfvr4RrQ==} hasBin: true basic-ftp@5.0.5: @@ -4468,8 +4343,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001743: - resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} + caniuse-lite@1.0.30001745: + resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4528,8 +4403,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@8.0.0: - resolution: {integrity: sha512-d1VmE0FD7lxZQHzcDUCKZSNRtRwISXDsdg4HjdTR5+Ll5nQ/vzU12JeNmupD6VWffrPSlrnGhEWlLESKH3VO+g==} + chromium-bidi@9.1.0: + resolution: {integrity: sha512-rlUzQ4WzIAWdIbY/viPShhZU2n21CxDUgazXVbw4Hu1MwaeUSEksSeM6DqPgpRjCLXRk702AVRxJxoOz0dw4OA==} peerDependencies: devtools-protocol: '*' @@ -4545,8 +4420,8 @@ packages: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} - cli-spinners@3.2.1: - resolution: {integrity: sha512-Xh+cRh7dzk9n7gYE+M1Lusy3yg5ADy9m6zOHqmcu9kSkWpo7ySWVUS3dXleR3konJOEOdHzsKjWkGed6g2eJuA==} + cli-spinners@3.3.0: + resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} engines: {node: '>=18.20'} cli-truncate@5.1.0: @@ -4979,8 +4854,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.1.0: - resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} + detect-libc@2.1.1: + resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} engines: {node: '>=8'} detect-node@2.1.0: @@ -5071,8 +4946,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.222: - resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} + electron-to-chromium@1.5.227: + resolution: {integrity: sha512-ITxuoPfJu3lsNWUi2lBM2PaBPYgH3uqmxut5vmBxgYvyI4AlJ6P3Cai1O76mOrkJCBzq0IxWg/NtqOrpu/0gKA==} emoji-regex@10.5.0: resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} @@ -5344,6 +5219,9 @@ packages: events-intercept@2.0.0: resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==} + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -5598,8 +5476,8 @@ packages: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} - gaxios@7.1.1: - resolution: {integrity: sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==} + gaxios@7.1.2: + resolution: {integrity: sha512-/Szrn8nr+2TsQT1Gp8iIe/BEytJmbyfrbFh419DfGQSkEgNEhbPi7JRJuughjkTzPWgU9gBQf5AVu3DbHt0OXA==} engines: {node: '>=18'} gcp-metadata@6.1.1: @@ -6369,8 +6247,8 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + jiti@2.6.0: + resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true js-base64@3.7.8: @@ -6398,11 +6276,6 @@ packages: canvas: optional: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -6690,8 +6563,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.1: - resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -6748,8 +6621,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.46.0: - resolution: {integrity: sha512-//IxqL9OO/WMpm2kE2aq+y7vO7/xS9xgVIbFM8RUIfW7TY7lowtnuS1j9MwLGm0OwcHUa4p8Bp+40W7f1BiWGQ==} + memfs@4.47.0: + resolution: {integrity: sha512-Xey8IZA57tfotV/TN4d6BmccQuhFP+CqRiI7TTNdipZdZBzF2WnzUcH//Cudw6X4zJiUbo/LTuU/HPA/iC/pNg==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -6879,8 +6752,8 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mitt@1.2.0: @@ -6901,11 +6774,6 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -7075,8 +6943,8 @@ packages: resolution: {integrity: sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==} engines: {node: ^20.17.0 || >=22.9.0} - npm-packlist@10.0.1: - resolution: {integrity: sha512-vaC03b2PqJA6QqmwHi1jNU8fAPXEnnyv4j/W4PVfgm24C4/zZGSVut3z0YUeN0WIFCo1oGOL02+6LbvFK7JL4Q==} + npm-packlist@10.0.2: + resolution: {integrity: sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==} engines: {node: ^20.17.0 || >=22.9.0} npm-pick-manifest@11.0.1: @@ -7091,8 +6959,8 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm@11.6.0: - resolution: {integrity: sha512-d/P7DbvYgYNde9Ehfeq99+13/E7E82PfZPw8uYZASr9sQ3ZhBBCA9cXSJRA1COfJ6jDLJ0K36UJnXQWhCvLXuQ==} + npm@11.6.1: + resolution: {integrity: sha512-7iDSHDoup6uMQJ37yWrhfqcbMhF0UEfGRap6Nv+aKQcrIJXlCi2cKbj75WBmiHlcwsQCy/U0zEwDZdAx6H/Vaw==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true bundledDependencies: @@ -7636,8 +7504,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.22.0: - resolution: {integrity: sha512-oUeWlIg0pMz8YM5pu0uqakM+cCyYyXkHBxx9di9OUELu9X9+AYrNGGRLK9tNME3WfN3JGGqQIH3b4/E9LGek/w==} + puppeteer-core@24.22.3: + resolution: {integrity: sha512-M/Jhg4PWRANSbL/C9im//Yb55wsWBS5wdp+h59iwM+EPicVQQCNs56iC5aEAO7avfDPRfxs4MM16wHjOYHNJEw==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -7741,15 +7609,15 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.3.1: - resolution: {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true request@2.88.2: @@ -7858,11 +7726,6 @@ packages: '@types/node': optional: true - rollup@4.52.2: - resolution: {integrity: sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.52.3: resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8253,8 +8116,8 @@ packages: resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} engines: {node: '>=8.0'} - streamx@2.22.1: - resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -8317,8 +8180,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} stubs@3.0.0: resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} @@ -8367,8 +8230,8 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} teeny-request@10.1.0: @@ -8452,15 +8315,15 @@ packages: tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts-core@7.0.15: - resolution: {integrity: sha512-YBkp2VfS9VTRMPNL2PA6PMESmxV1JEVoAr5iBlZnB5JG3KUrWzNCB3yNNkRa2FZkqClaBgfNYCp8PgpYmpjkZw==} + tldts-core@7.0.16: + resolution: {integrity: sha512-XHhPmHxphLi+LGbH0G/O7dmUH9V65OY20R7vH8gETHsp5AZCjBk9l8sqmRKLaGOxnETU7XNSDUPtewAy/K6jbA==} tldts@6.1.86: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tldts@7.0.15: - resolution: {integrity: sha512-heYRCiGLhtI+U/D0V8YM3QRwPfsLJiP+HX+YwiHZTnWzjIKC+ZCxQRYlzvOoTEc6KIP62B1VeAN63diGCng2hg==} + tldts@7.0.16: + resolution: {integrity: sha512-5bdPHSwbKTeHmXrgecID4Ljff8rQjv7g8zKQPkCozRo2HWWni+p310FSn5ImI+9kWw9kK4lzOB5q/a6iv0IJsw==} hasBin: true tmp@0.0.30: @@ -8790,46 +8653,6 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.1.6: - resolution: {integrity: sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.1.7: resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9540,20 +9363,21 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@asamuzakjp/css-color@4.0.4': + '@asamuzakjp/css-color@4.0.5': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.1 + lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.5.5': + '@asamuzakjp/dom-selector@6.5.6': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.2 '@asamuzakjp/nwsapi@2.3.9': {} @@ -9622,7 +9446,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.3.1 + regexpu-core: 6.4.0 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': @@ -10388,18 +10212,18 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.5.1))': + '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.6.0))': dependencies: '@eslint/core': 0.16.0 optionalDependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) '@eslint/config-array@0.21.0': dependencies: @@ -11150,7 +10974,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@mswjs/interceptors@0.39.6': + '@mswjs/interceptors@0.39.7': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -11265,7 +11089,7 @@ snapshots: agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) - lru-cache: 11.2.1 + lru-cache: 11.2.2 socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -11278,7 +11102,7 @@ snapshots: dependencies: '@npmcli/promise-spawn': 8.0.3 ini: 5.0.0 - lru-cache: 11.2.1 + lru-cache: 11.2.2 npm-pick-manifest: 11.0.1 proc-log: 5.0.0 promise-retry: 2.0.1 @@ -11642,12 +11466,6 @@ snapshots: optionalDependencies: rollup: 4.52.3 - '@rollup/plugin-json@6.1.0(rollup@4.52.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.2) - optionalDependencies: - rollup: 4.52.2 - '@rollup/plugin-json@6.1.0(rollup@4.52.3)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.3) @@ -11682,14 +11500,6 @@ snapshots: optionalDependencies: rollup: 4.52.3 - '@rollup/pluginutils@5.3.0(rollup@4.52.2)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.52.2 - '@rollup/pluginutils@5.3.0(rollup@4.52.3)': dependencies: '@types/estree': 1.0.8 @@ -11698,139 +11508,73 @@ snapshots: optionalDependencies: rollup: 4.52.3 - '@rollup/rollup-android-arm-eabi@4.52.2': - optional: true - '@rollup/rollup-android-arm-eabi@4.52.3': optional: true - '@rollup/rollup-android-arm64@4.52.2': - optional: true - '@rollup/rollup-android-arm64@4.52.3': optional: true - '@rollup/rollup-darwin-arm64@4.52.2': - optional: true - '@rollup/rollup-darwin-arm64@4.52.3': optional: true - '@rollup/rollup-darwin-x64@4.52.2': - optional: true - '@rollup/rollup-darwin-x64@4.52.3': optional: true - '@rollup/rollup-freebsd-arm64@4.52.2': - optional: true - '@rollup/rollup-freebsd-arm64@4.52.3': optional: true - '@rollup/rollup-freebsd-x64@4.52.2': - optional: true - '@rollup/rollup-freebsd-x64@4.52.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.2': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.2': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.2': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.2': - optional: true - '@rollup/rollup-linux-arm64-musl@4.52.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.2': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.2': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.2': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.2': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.2': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.2': - optional: true - '@rollup/rollup-linux-x64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-x64-musl@4.52.2': - optional: true - '@rollup/rollup-linux-x64-musl@4.52.3': optional: true - '@rollup/rollup-openharmony-arm64@4.52.2': - optional: true - '@rollup/rollup-openharmony-arm64@4.52.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.2': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.2': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.2': - optional: true - '@rollup/rollup-win32-x64-gnu@4.52.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.2': - optional: true - '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true - '@rollup/wasm-node@4.52.0': + '@rollup/wasm-node@4.52.3': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -11846,7 +11590,7 @@ snapshots: '@sigstore/protobuf-specs@0.5.0': {} - '@sigstore/sign@4.0.0': + '@sigstore/sign@4.0.1': dependencies: '@sigstore/bundle': 4.0.0 '@sigstore/core': 3.0.0 @@ -11872,11 +11616,11 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.5.1))': + '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) - '@typescript-eslint/types': 8.44.0 - eslint: 9.36.0(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@typescript-eslint/types': 8.44.1 + eslint: 9.36.0(jiti@2.6.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -12252,15 +11996,15 @@ snapshots: '@types/node': 22.18.6 optional: true - '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.44.1 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12269,14 +12013,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.44.1 '@typescript-eslint/types': 8.44.1 '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.44.1 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -12299,20 +12043,18 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.44.1 '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.44.0': {} - '@typescript-eslint/types@8.44.1': {} '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)': @@ -12331,13 +12073,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@typescript-eslint/scope-manager': 8.44.1 '@typescript-eslint/types': 8.44.1 '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -12501,11 +12243,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12520,7 +12262,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12532,13 +12274,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -12548,7 +12290,7 @@ snapshots: dependencies: '@vitest/utils': 3.2.4 pathe: 2.0.3 - strip-literal: 3.0.0 + strip-literal: 3.1.0 '@vitest/snapshot@3.2.4': dependencies: @@ -12641,7 +12383,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.22.0(bufferutil@4.0.9) + puppeteer-core: 24.22.3(bufferutil@4.0.9) transitivePeerDependencies: - bare-buffer - bufferutil @@ -12924,7 +12666,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.1.0: + ansi-escapes@7.1.1: dependencies: environment: 1.1.0 @@ -13068,7 +12810,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.26.2 - caniuse-lite: 1.0.30001743 + caniuse-lite: 1.0.30001745 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13083,7 +12825,7 @@ snapshots: aws4@1.13.2: {} - b4a@1.7.1: {} + b4a@1.7.3: {} babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.101.3(esbuild@0.25.10)): dependencies: @@ -13117,10 +12859,9 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.7.0: - optional: true + bare-events@2.7.0: {} - bare-fs@4.4.4: + bare-fs@4.4.5: dependencies: bare-events: 2.7.0 bare-path: 3.0.0 @@ -13141,7 +12882,7 @@ snapshots: bare-stream@2.7.0(bare-events@2.7.0): dependencies: - streamx: 2.22.1 + streamx: 2.23.0 optionalDependencies: bare-events: 2.7.0 transitivePeerDependencies: @@ -13157,7 +12898,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.6: {} + baseline-browser-mapping@2.8.8: {} basic-ftp@5.0.5: {} @@ -13319,9 +13060,9 @@ snapshots: browserslist@4.26.2: dependencies: - baseline-browser-mapping: 2.8.6 - caniuse-lite: 1.0.30001743 - electron-to-chromium: 1.5.222 + baseline-browser-mapping: 2.8.8 + caniuse-lite: 1.0.30001745 + electron-to-chromium: 1.5.227 node-releases: 2.0.21 update-browserslist-db: 1.1.3(browserslist@4.26.2) @@ -13373,7 +13114,7 @@ snapshots: minipass-pipeline: 1.2.4 p-map: 7.0.3 ssri: 12.0.0 - tar: 7.4.3 + tar: 7.5.1 unique-filename: 4.0.0 cacache@20.0.1: @@ -13381,7 +13122,7 @@ snapshots: '@npmcli/fs': 4.0.0 fs-minipass: 3.0.3 glob: 11.0.3 - lru-cache: 11.2.1 + lru-cache: 11.2.2 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -13418,7 +13159,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001743: {} + caniuse-lite@1.0.30001745: {} caseless@0.12.0: {} @@ -13492,7 +13233,7 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@8.0.0(devtools-protocol@0.0.1495869): + chromium-bidi@9.1.0(devtools-protocol@0.0.1495869): dependencies: devtools-protocol: 0.0.1495869 mitt: 3.0.1 @@ -13510,7 +13251,7 @@ snapshots: dependencies: string-width: 4.2.3 - cli-spinners@3.2.1: {} + cli-spinners@3.3.0: {} cli-truncate@5.1.0: dependencies: @@ -13765,7 +13506,7 @@ snapshots: cssstyle@5.3.1(postcss@8.5.6): dependencies: - '@asamuzakjp/css-color': 4.0.4 + '@asamuzakjp/css-color': 4.0.5 '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) css-tree: 3.1.0 transitivePeerDependencies: @@ -13916,7 +13657,7 @@ snapshots: detect-libc@1.0.3: optional: true - detect-libc@2.1.0: + detect-libc@2.1.1: optional: true detect-node@2.1.0: {} @@ -14015,7 +13756,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.222: {} + electron-to-chromium@1.5.227: {} emoji-regex@10.5.0: {} @@ -14239,9 +13980,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -14251,21 +13992,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.36.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-header@3.1.1(eslint@9.36.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14274,9 +14015,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.36.0(jiti@2.5.1) + eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14288,7 +14029,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14308,9 +14049,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.36.0(jiti@2.5.1): + eslint@9.36.0(jiti@2.6.0): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 @@ -14346,7 +14087,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.0 transitivePeerDependencies: - supports-color @@ -14388,6 +14129,10 @@ snapshots: events-intercept@2.0.0: {} + events-universal@1.0.1: + dependencies: + bare-events: 2.7.0 + events@3.3.0: {} eventsource-parser@3.0.6: {} @@ -14492,7 +14237,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14762,7 +14507,7 @@ snapshots: - encoding - supports-color - gaxios@7.1.1(supports-color@10.2.2): + gaxios@7.1.2(supports-color@10.2.2): dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) @@ -14781,7 +14526,7 @@ snapshots: gcp-metadata@7.0.1(supports-color@10.2.2): dependencies: - gaxios: 7.1.1(supports-color@10.2.2) + gaxios: 7.1.2(supports-color@10.2.2) google-logging-utils: 1.1.1 json-bigint: 1.0.0 transitivePeerDependencies: @@ -14921,7 +14666,7 @@ snapshots: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.1(supports-color@10.2.2) + gaxios: 7.1.2(supports-color@10.2.2) gcp-metadata: 7.0.1(supports-color@10.2.2) google-logging-utils: 1.1.1 gtoken: 8.0.0(supports-color@10.2.2) @@ -14989,7 +14734,7 @@ snapshots: gtoken@8.0.0(supports-color@10.2.2): dependencies: - gaxios: 7.1.1(supports-color@10.2.2) + gaxios: 7.1.2(supports-color@10.2.2) jws: 4.0.0 transitivePeerDependencies: - supports-color @@ -15049,7 +14794,7 @@ snapshots: hosted-git-info@9.0.0: dependencies: - lru-cache: 11.2.1 + lru-cache: 11.2.2 hpack.js@2.1.6: dependencies: @@ -15601,7 +15346,7 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@2.5.1: {} + jiti@2.6.0: {} js-base64@3.7.8: {} @@ -15617,7 +15362,7 @@ snapshots: jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: - '@asamuzakjp/dom-selector': 6.5.5 + '@asamuzakjp/dom-selector': 6.5.6 cssstyle: 5.3.1(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15643,8 +15388,6 @@ snapshots: - supports-color - utf-8-validate - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-bigint@1.0.0: @@ -16006,7 +15749,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.1.0 + ansi-escapes: 7.1.1 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -16036,7 +15779,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.1: {} + lru-cache@11.2.2: {} lru-cache@5.1.1: dependencies: @@ -16110,7 +15853,7 @@ snapshots: media-typer@1.1.0: {} - memfs@4.46.0: + memfs@4.47.0: dependencies: '@jsonjoy.com/json-pack': 1.14.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -16200,7 +15943,7 @@ snapshots: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 - minizlib: 3.0.2 + minizlib: 3.1.0 optionalDependencies: encoding: 0.1.13 @@ -16222,7 +15965,7 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 @@ -16238,8 +15981,6 @@ snapshots: mkdirp@1.0.4: {} - mkdirp@3.0.1: {} - mrmime@2.0.1: {} ms@2.0.0: {} @@ -16304,8 +16045,8 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) - '@rollup/plugin-json': 6.1.0(rollup@4.52.2) - '@rollup/wasm-node': 4.52.0 + '@rollup/plugin-json': 6.1.0(rollup@4.52.3) + '@rollup/wasm-node': 4.52.3 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.26.2 @@ -16320,18 +16061,18 @@ snapshots: ora: 9.0.0 piscina: 5.1.3 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.52.2)(typescript@5.9.2) + rollup-plugin-dts: 6.2.3(rollup@4.52.3)(typescript@5.9.2) rxjs: 7.8.2 sass: 1.93.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.2 optionalDependencies: - rollup: 4.52.2 + rollup: 4.52.3 nock@14.0.10: dependencies: - '@mswjs/interceptors': 0.39.6 + '@mswjs/interceptors': 0.39.7 json-stringify-safe: 5.0.1 propagate: 2.0.1 @@ -16367,7 +16108,7 @@ snapshots: node-gyp-build-optional-packages@5.2.2: dependencies: - detect-libc: 2.1.0 + detect-libc: 2.1.1 optional: true node-gyp-build@4.8.4: {} @@ -16381,7 +16122,7 @@ snapshots: nopt: 8.1.0 proc-log: 5.0.0 semver: 7.7.2 - tar: 7.4.3 + tar: 7.5.1 tinyglobby: 0.2.15 which: 5.0.0 transitivePeerDependencies: @@ -16414,9 +16155,10 @@ snapshots: semver: 7.7.2 validate-npm-package-name: 6.0.2 - npm-packlist@10.0.1: + npm-packlist@10.0.2: dependencies: ignore-walk: 8.0.0 + proc-log: 5.0.0 npm-pick-manifest@11.0.1: dependencies: @@ -16432,7 +16174,7 @@ snapshots: make-fetch-happen: 15.0.2 minipass: 7.1.2 minipass-fetch: 4.0.1 - minizlib: 3.0.2 + minizlib: 3.1.0 npm-package-arg: 13.0.0 proc-log: 5.0.0 transitivePeerDependencies: @@ -16442,7 +16184,7 @@ snapshots: dependencies: path-key: 3.1.1 - npm@11.6.0: {} + npm@11.6.1: {} nth-check@2.1.1: dependencies: @@ -16545,7 +16287,7 @@ snapshots: dependencies: chalk: 5.6.2 cli-cursor: 5.0.0 - cli-spinners: 3.2.1 + cli-spinners: 3.3.0 is-interactive: 2.0.0 is-unicode-supported: 2.1.0 log-symbols: 7.0.1 @@ -16638,14 +16380,14 @@ snapshots: fs-minipass: 3.0.3 minipass: 7.1.2 npm-package-arg: 13.0.0 - npm-packlist: 10.0.1 + npm-packlist: 10.0.2 npm-pick-manifest: 11.0.1 npm-registry-fetch: 19.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 sigstore: 4.0.0 ssri: 12.0.0 - tar: 7.4.3 + tar: 7.5.1 transitivePeerDependencies: - supports-color @@ -16705,7 +16447,7 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.2.1 + lru-cache: 11.2.2 minipass: 7.1.2 path-to-regexp@0.1.12: {} @@ -16805,7 +16547,7 @@ snapshots: postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(esbuild@0.25.10)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.2) - jiti: 2.5.1 + jiti: 2.6.0 postcss: 8.5.6 semver: 7.7.2 optionalDependencies: @@ -16976,10 +16718,10 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.22.0(bufferutil@4.0.9): + puppeteer-core@24.22.3(bufferutil@4.0.9): dependencies: '@puppeteer/browsers': 2.10.10 - chromium-bidi: 8.0.0(devtools-protocol@0.0.1495869) + chromium-bidi: 9.1.0(devtools-protocol@0.0.1495869) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1495869 typed-query-selector: 2.12.0 @@ -17131,20 +16873,20 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.3.1: + regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.12.0 + regjsparser: 0.13.0 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 regjsgen@0.8.0: {} - regjsparser@0.12.0: + regjsparser@0.13.0: dependencies: - jsesc: 3.0.2 + jsesc: 3.1.0 request@2.88.2: dependencies: @@ -17267,14 +17009,6 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.52.2)(typescript@5.9.2): - dependencies: - magic-string: 0.30.19 - rollup: 4.52.2 - typescript: 5.9.2 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.52.3)(typescript@5.9.2): dependencies: magic-string: 0.30.19 @@ -17290,34 +17024,6 @@ snapshots: optionalDependencies: '@types/node': 22.18.6 - rollup@4.52.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.2 - '@rollup/rollup-android-arm64': 4.52.2 - '@rollup/rollup-darwin-arm64': 4.52.2 - '@rollup/rollup-darwin-x64': 4.52.2 - '@rollup/rollup-freebsd-arm64': 4.52.2 - '@rollup/rollup-freebsd-x64': 4.52.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.2 - '@rollup/rollup-linux-arm-musleabihf': 4.52.2 - '@rollup/rollup-linux-arm64-gnu': 4.52.2 - '@rollup/rollup-linux-arm64-musl': 4.52.2 - '@rollup/rollup-linux-loong64-gnu': 4.52.2 - '@rollup/rollup-linux-ppc64-gnu': 4.52.2 - '@rollup/rollup-linux-riscv64-gnu': 4.52.2 - '@rollup/rollup-linux-riscv64-musl': 4.52.2 - '@rollup/rollup-linux-s390x-gnu': 4.52.2 - '@rollup/rollup-linux-x64-gnu': 4.52.2 - '@rollup/rollup-linux-x64-musl': 4.52.2 - '@rollup/rollup-openharmony-arm64': 4.52.2 - '@rollup/rollup-win32-arm64-msvc': 4.52.2 - '@rollup/rollup-win32-ia32-msvc': 4.52.2 - '@rollup/rollup-win32-x64-gnu': 4.52.2 - '@rollup/rollup-win32-x64-msvc': 4.52.2 - fsevents: 2.3.3 - rollup@4.52.3: dependencies: '@types/estree': 1.0.8 @@ -17625,7 +17331,7 @@ snapshots: '@sigstore/bundle': 4.0.0 '@sigstore/core': 3.0.0 '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/sign': 4.0.0 + '@sigstore/sign': 4.0.1 '@sigstore/tuf': 4.0.0 '@sigstore/verify': 3.0.0 transitivePeerDependencies: @@ -17851,12 +17557,11 @@ snapshots: transitivePeerDependencies: - supports-color - streamx@2.22.1: + streamx@2.23.0: dependencies: + events-universal: 1.0.1 fast-fifo: 1.3.2 text-decoder: 1.2.3 - optionalDependencies: - bare-events: 2.7.0 transitivePeerDependencies: - react-native-b4a @@ -17934,7 +17639,7 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.0.0: + strip-literal@3.1.0: dependencies: js-tokens: 9.0.1 @@ -17975,7 +17680,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.4.4 + bare-fs: 4.4.5 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -17991,19 +17696,18 @@ snapshots: tar-stream@3.1.7: dependencies: - b4a: 1.7.1 + b4a: 1.7.3 fast-fifo: 1.3.2 - streamx: 2.22.1 + streamx: 2.23.0 transitivePeerDependencies: - react-native-b4a - tar@7.4.3: + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 teeny-request@10.1.0(supports-color@10.2.2): @@ -18041,7 +17745,7 @@ snapshots: text-decoder@1.2.3: dependencies: - b4a: 1.7.1 + b4a: 1.7.3 transitivePeerDependencies: - react-native-b4a @@ -18085,15 +17789,15 @@ snapshots: tldts-core@6.1.86: {} - tldts-core@7.0.15: {} + tldts-core@7.0.16: {} tldts@6.1.86: dependencies: tldts-core: 6.1.86 - tldts@7.0.15: + tldts@7.0.16: dependencies: - tldts-core: 7.0.15 + tldts-core: 7.0.16 tmp@0.0.30: dependencies: @@ -18120,7 +17824,7 @@ snapshots: tough-cookie@6.0.0: dependencies: - tldts: 7.0.15 + tldts: 7.0.16 tr46@0.0.3: {} @@ -18454,13 +18158,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18475,7 +18179,7 @@ snapshots: - tsx - yaml - vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18486,36 +18190,18 @@ snapshots: optionalDependencies: '@types/node': 24.5.2 fsevents: 2.3.3 - jiti: 2.5.1 - less: 4.4.1 - sass: 1.93.2 - terser: 5.44.0 - tsx: 4.20.5 - yaml: 2.8.1 - - vite@7.1.7(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): - dependencies: - esbuild: 0.25.10 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.2 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.5.2 - fsevents: 2.3.3 - jiti: 2.5.1 + jiti: 2.6.0 less: 4.4.1 sass: 1.93.2 terser: 5.44.0 tsx: 4.20.5 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.2)(jiti@2.5.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18533,8 +18219,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.5.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.5.2 @@ -18605,7 +18291,7 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.101.3(esbuild@0.25.10)): dependencies: colorette: 2.0.20 - memfs: 4.46.0 + memfs: 4.47.0 mime-types: 3.0.1 on-finished: 2.4.1 range-parser: 1.2.1 From 041a822dcedde1a267fb4ed9eccecfefd440a481 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 29 Sep 2025 13:28:22 +0000 Subject: [PATCH 1518/2162] build: update bazel dependencies See associated pull request for more information. Closes #31313 as a pr takeover --- MODULE.bazel | 4 +-- .../projects/hello-world-app/tsconfig.json | 2 +- .../behavior/typescript-resolve-json_spec.ts | 3 ++ .../karma/tests/behavior/module-cjs_spec.ts | 1 + .../tools/vite/middlewares/ssr-middleware.ts | 5 +-- .../utils/server-rendering/launch-server.ts | 3 +- .../build/src/utils/server-rendering/utils.ts | 2 +- .../karma/tests/behavior/module-cjs_spec.ts | 35 ------------------- .../use-application-builder/migration.ts | 1 + 9 files changed, 14 insertions(+), 42 deletions(-) delete mode 100644 packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/module-cjs_spec.ts diff --git a/MODULE.bazel b/MODULE.bazel index 924e13898af2..3d9dbd939f25 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -32,8 +32,8 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "2c348bf59a38d044f4d389290d597d94c0699607", - remote = "https://github.com/devversion/rules_angular.git", + commit = "ef03084730381448cf6cd6d1778b5a5c5f9e1958", + remote = "https://github.com/alan-agius4/rules_angular.git", ) bazel_dep(name = "devinfra") diff --git a/modules/testing/builder/projects/hello-world-app/tsconfig.json b/modules/testing/builder/projects/hello-world-app/tsconfig.json index 8019279a7006..8f8859a21d4f 100644 --- a/modules/testing/builder/projects/hello-world-app/tsconfig.json +++ b/modules/testing/builder/projects/hello-world-app/tsconfig.json @@ -5,7 +5,7 @@ "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, - "moduleResolution": "node", + "moduleResolution": "bundler", "emitDecoratorMetadata": true, "experimentalDecorators": true, "skipLibCheck": true, diff --git a/packages/angular/build/src/builders/application/tests/behavior/typescript-resolve-json_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/typescript-resolve-json_spec.ts index e7d060de1262..cf21d5545f7a 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/typescript-resolve-json_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/typescript-resolve-json_spec.ts @@ -20,6 +20,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { // Enable tsconfig resolveJsonModule option in tsconfig await harness.modifyFile('tsconfig.json', (content) => { const tsconfig = JSON.parse(content); + tsconfig.compilerOptions.moduleResolution = 'node'; tsconfig.compilerOptions.resolveJsonModule = true; return JSON.stringify(tsconfig); @@ -43,6 +44,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { // Enable tsconfig resolveJsonModule option in tsconfig await harness.modifyFile('tsconfig.json', (content) => { const tsconfig = JSON.parse(content); + tsconfig.compilerOptions.moduleResolution = 'node'; tsconfig.compilerOptions.resolveJsonModule = undefined; return JSON.stringify(tsconfig); @@ -71,6 +73,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { // Enable tsconfig resolveJsonModule option in tsconfig await harness.modifyFile('tsconfig.json', (content) => { const tsconfig = JSON.parse(content); + tsconfig.compilerOptions.moduleResolution = 'node'; tsconfig.compilerOptions.resolveJsonModule = false; return JSON.stringify(tsconfig); diff --git a/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts b/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts index d5c1c7b3d134..29b454d48441 100644 --- a/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts +++ b/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts @@ -22,6 +22,7 @@ describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget) => { await harness.modifyFile('src/tsconfig.spec.json', (content) => { const tsConfig = JSON.parse(content); + tsConfig.compilerOptions.moduleResolution = 'node'; tsConfig.compilerOptions.module = 'commonjs'; return JSON.stringify(tsConfig); 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 387a94a2ba53..6484ee8391e1 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -10,6 +10,7 @@ import type { AngularAppEngine as SSRAngularAppEngine, ɵgetOrCreateAngularServerApp as getOrCreateAngularServerApp, } from '@angular/ssr'; +import type * as AngularSsrNode from '@angular/ssr/node' with { 'resolution-mode': 'import' }; import type { ServerResponse } from 'node:http'; import type { Connect, ViteDevServer } from 'vite'; import { loadEsmModule } from '../../../utils/load-esm'; @@ -38,7 +39,7 @@ export function createAngularSsrInternalMiddleware( // which must be processed by the runtime linker, even if they are not used. await loadEsmModule('@angular/compiler'); const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = - await loadEsmModule('@angular/ssr/node'); + await loadEsmModule('@angular/ssr/node'); const { ɵgetOrCreateAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { ɵgetOrCreateAngularServerApp: typeof getOrCreateAngularServerApp; @@ -93,7 +94,7 @@ export async function createAngularSsrExternalMiddleware( await loadEsmModule('@angular/compiler'); const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = - await loadEsmModule('@angular/ssr/node'); + await loadEsmModule('@angular/ssr/node'); return function angularSsrExternalMiddleware( req: Connect.IncomingMessage, 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 cfb15b0d979b..9c127e3816bd 100644 --- a/packages/angular/build/src/utils/server-rendering/launch-server.ts +++ b/packages/angular/build/src/utils/server-rendering/launch-server.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import type * as AngularSsrNode from '@angular/ssr/node' with { 'resolution-mode': 'import' }; import assert from 'node:assert'; import { createServer } from 'node:http'; import { loadEsmModule } from '../load-esm'; @@ -22,7 +23,7 @@ export const DEFAULT_URL = new URL('http://ng-localhost/'); export async function launchServer(): Promise { const { reqHandler } = await loadEsmModuleFromMemory('./server.mjs'); const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = - await loadEsmModule('@angular/ssr/node'); + await loadEsmModule('@angular/ssr/node'); if (!isSsrNodeRequestHandler(reqHandler) && !isSsrRequestHandler(reqHandler)) { return DEFAULT_URL; diff --git a/packages/angular/build/src/utils/server-rendering/utils.ts b/packages/angular/build/src/utils/server-rendering/utils.ts index 83c90187178b..a322780e391d 100644 --- a/packages/angular/build/src/utils/server-rendering/utils.ts +++ b/packages/angular/build/src/utils/server-rendering/utils.ts @@ -7,7 +7,7 @@ */ import type { createRequestHandler } from '@angular/ssr'; -import type { createNodeRequestHandler } from '@angular/ssr/node'; +import type { createNodeRequestHandler } from '@angular/ssr/node' with { 'resolution-mode': 'import' }; export function isSsrNodeRequestHandler( value: unknown, diff --git a/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/module-cjs_spec.ts b/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/module-cjs_spec.ts deleted file mode 100644 index d5c1c7b3d134..000000000000 --- a/packages/angular_devkit/build_angular/src/builders/karma/tests/behavior/module-cjs_spec.ts +++ /dev/null @@ -1,35 +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 { execute } from '../../index'; -import { BASE_OPTIONS, KARMA_BUILDER_INFO, describeKarmaBuilder } from '../setup'; - -describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget) => { - describe('Behavior: "module commonjs"', () => { - beforeEach(async () => { - await setupTarget(harness); - }); - - it('should work when module is commonjs', async () => { - harness.useTarget('test', { - ...BASE_OPTIONS, - }); - - await harness.modifyFile('src/tsconfig.spec.json', (content) => { - const tsConfig = JSON.parse(content); - tsConfig.compilerOptions.module = 'commonjs'; - - return JSON.stringify(tsConfig); - }); - - const { result } = await harness.executeOnce(); - - expect(result?.success).toBeTrue(); - }); - }); -}); diff --git a/packages/schematics/angular/migrations/use-application-builder/migration.ts b/packages/schematics/angular/migrations/use-application-builder/migration.ts index 5c56f49e02a9..cc858b59de54 100644 --- a/packages/schematics/angular/migrations/use-application-builder/migration.ts +++ b/packages/schematics/angular/migrations/use-application-builder/migration.ts @@ -365,6 +365,7 @@ export default function (): Rule { rootJson.modify(['compilerOptions', 'esModuleInterop'], true); rootJson.modify(['compilerOptions', 'downlevelIteration'], undefined); rootJson.modify(['compilerOptions', 'allowSyntheticDefaultImports'], undefined); + rootJson.modify(['compilerOptions', 'moduleResolution'], 'bundler'); }), ]); } From 3db1a170551d3919cdb5fbc9480f7adcd2148ed7 Mon Sep 17 00:00:00 2001 From: gioboa Date: Sat, 27 Sep 2025 15:16:29 +0200 Subject: [PATCH 1519/2162] docs: fix up createNodeRequestHandler examples --- packages/angular/ssr/node/src/handler.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/angular/ssr/node/src/handler.ts b/packages/angular/ssr/node/src/handler.ts index 89452b3099b1..d95199e00d07 100644 --- a/packages/angular/ssr/node/src/handler.ts +++ b/packages/angular/ssr/node/src/handler.ts @@ -52,7 +52,7 @@ export type NodeRequestHandlerFunction = ( * } catch (error) { * next(error); * } - * })); + * }); * ``` * * @example @@ -62,8 +62,7 @@ export type NodeRequestHandlerFunction = ( * export default createNodeRequestHandler(async (req, res) => { * await app.ready(); * app.server.emit('request', req, res); - * res.send('Hello from Fastify with Node Next Handler!'); - * })); + * }); * ``` */ export function createNodeRequestHandler(handler: T): T { From 8ac515699cfd5a4e7eda9bcc054dfd7c68faba39 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Mon, 29 Sep 2025 17:04:54 +0900 Subject: [PATCH 1520/2162] fix(@schematics/angular): Out of the box support for PM2 Because PM2 is the most popular node process manager, it makes sense to support it out of the box. Fixes #31081 --- .../angular/ssr/files/application-builder/server.ts.template | 4 ++-- 1 file changed, 2 insertions(+), 2 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 6fb8b2c77e5a..e7be03e005d9 100644 --- a/packages/schematics/angular/ssr/files/application-builder/server.ts.template +++ b/packages/schematics/angular/ssr/files/application-builder/server.ts.template @@ -48,10 +48,10 @@ app.use((req, res, next) => { }); /** - * Start the server if this module is the main entry point. + * Start the server if this module is the main entry point, or it is ran via PM2. * The server listens on the port defined by the `PORT` environment variable, or defaults to 4000. */ -if (isMainModule(import.meta.url)) { +if (isMainModule(import.meta.url) || process.env.pm_id) { const port = process.env['PORT'] || 4000; app.listen(port, (error) => { if (error) { From bfd0d9e51928cace8b92fb7af8fa6a4ed010ba6c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 29 Sep 2025 15:05:28 +0000 Subject: [PATCH 1521/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 ++++++------ .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +++++----- MODULE.bazel | 2 +- MODULE.bazel.lock | 65 +------------- package.json | 2 +- pnpm-lock.yaml | 84 ++++++++----------- tests/legacy-cli/e2e/ng-snapshot/package.json | 6 +- 11 files changed, 97 insertions(+), 172 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index dd17d9e54e73..ef4948019bf7 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + - uses: angular/dev-infra/github-actions/branch-manager@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74d301b7e4f8..55f8763459c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 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@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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 04c1a7d25610..627102fcebaa 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + - uses: angular/dev-infra/github-actions/pull-request-labeling@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + - uses: angular/dev-infra/github-actions/post-approval-changes@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 3e7a2cb15260..15697e3c56f3 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@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + - uses: angular/dev-infra/github-actions/feature-request@b7672ff60456719e6d9b0cc052abc73a7adc8df2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 9bfb6e1e383f..ec7340887453 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@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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 6503ab29b3a5..45c169fa1942 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/linting/licenses@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@00cef30761644cb8c8e75ea448e958e4eeed3aa7 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 - 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/MODULE.bazel b/MODULE.bazel index 3d9dbd939f25..890c1bc81145 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "00cef30761644cb8c8e75ea448e958e4eeed3aa7", + commit = "b7672ff60456719e6d9b0cc052abc73a7adc8df2", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 1654933521e7..f53f141226fb 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -173,8 +173,8 @@ "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", - "https://bcr.bazel.build/modules/tar.bzl/0.5.5/MODULE.bazel": "4bfab9bbc7a1966c2c5f7371f5848f5e2d27c465951b4435adc9aaf00ed681da", - "https://bcr.bazel.build/modules/tar.bzl/0.5.5/source.json": "67c322bd9f9a6714b9d55d4df36ddc222976a7fbb2070410ef036f68cdf2eeb7", + "https://bcr.bazel.build/modules/tar.bzl/0.5.6/MODULE.bazel": "c5b8bfa6bc7b640883d41bfec4a200fb45c16a2a7b2fb081323f499197cfcc09", + "https://bcr.bazel.build/modules/tar.bzl/0.5.6/source.json": "848b3a4eaf2bb4a09ab78533c348e19a6723c7d5f820eb1dceb0eeb5e5914ac1", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", "https://bcr.bazel.build/modules/yq.bzl/0.2.0/MODULE.bazel": "6f3a675677db8885be4d607fde14cc51829715e3a879fb016eb9bf336786ce6d", @@ -2342,67 +2342,6 @@ "recordedRepoMappingEntries": [] } }, - "@@tar.bzl~//tar:extensions.bzl%toolchains": { - "general": { - "bzlTransitiveDigest": "x8T4avQwaccwFRDkBObSMray93ZBHwpcjsZTPQOyII0=", - "usagesDigest": "aQJiuhjXhigIjDvDZxsHPfosrrHvNBHV55yj8QdZQgs=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "bsd_tar_toolchains": { - "bzlFile": "@@tar.bzl~//tar/toolchain:toolchain.bzl", - "ruleClassName": "tar_toolchains_repo", - "attributes": { - "user_repository_name": "bsd_tar_toolchains" - } - }, - "bsd_tar_toolchains_darwin_amd64": { - "bzlFile": "@@tar.bzl~//tar/toolchain:platforms.bzl", - "ruleClassName": "bsdtar_binary_repo", - "attributes": { - "platform": "darwin_amd64" - } - }, - "bsd_tar_toolchains_darwin_arm64": { - "bzlFile": "@@tar.bzl~//tar/toolchain:platforms.bzl", - "ruleClassName": "bsdtar_binary_repo", - "attributes": { - "platform": "darwin_arm64" - } - }, - "bsd_tar_toolchains_linux_amd64": { - "bzlFile": "@@tar.bzl~//tar/toolchain:platforms.bzl", - "ruleClassName": "bsdtar_binary_repo", - "attributes": { - "platform": "linux_amd64" - } - }, - "bsd_tar_toolchains_linux_arm64": { - "bzlFile": "@@tar.bzl~//tar/toolchain:platforms.bzl", - "ruleClassName": "bsdtar_binary_repo", - "attributes": { - "platform": "linux_arm64" - } - }, - "bsd_tar_toolchains_windows_amd64": { - "bzlFile": "@@tar.bzl~//tar/toolchain:platforms.bzl", - "ruleClassName": "bsdtar_binary_repo", - "attributes": { - "platform": "windows_amd64" - } - }, - "bsd_tar_toolchains_windows_arm64": { - "bzlFile": "@@tar.bzl~//tar/toolchain:platforms.bzl", - "ruleClassName": "bsdtar_binary_repo", - "attributes": { - "platform": "windows_arm64" - } - } - }, - "recordedRepoMappingEntries": [] - } - }, "@@yq.bzl~//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", diff --git a/package.json b/package.json index abaf834be5cc..3651e16c9aad 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.5", "@angular/localize": "21.0.0-next.5", "@angular/material": "21.0.0-next.5", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e162324c6d6c9b4d712eeb9b786937165c1f310e", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb", "@angular/platform-browser": "21.0.0-next.5", "@angular/platform-server": "21.0.0-next.5", "@angular/router": "21.0.0-next.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a2519dc41e83..4a996687ede7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.5 version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e162324c6d6c9b4d712eeb9b786937165c1f310e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.2) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.18.2) '@angular/platform-browser': specifier: 21.0.0-next.5 version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -372,7 +372,7 @@ importers: version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.7 - version: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.2 @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/e162324c6d6c9b4d712eeb9b786937165c1f310e': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e162324c6d6c9b4d712eeb9b786937165c1f310e} - version: 0.0.0-00cef30761644cb8c8e75ea448e958e4eeed3aa7 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb} + version: 0.0.0-b7672ff60456719e6d9b0cc052abc73a7adc8df2 hasBin: true '@angular/platform-browser@21.0.0-next.5': @@ -2146,8 +2146,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.20.0': - resolution: {integrity: sha512-QdShxO9LX35jFogy3iKprQNqgKKveux4H2QjOnyIvyHRuGi6PHiz3fjNf8Y0VPY8o5V2fHqR2XqiSVoz7yZs0w==} + '@google/genai@1.21.0': + resolution: {integrity: sha512-k47DECR8BF9z7IJxQd3reKuH2eUnOH5NlJWSe+CKM6nbXx+wH3hmtWQxUQR9M8gzWW1EvFuRVgjQssEIreNZsw==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -6215,9 +6215,6 @@ packages: jasmine-core@4.6.1: resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} - jasmine-core@5.10.0: - resolution: {integrity: sha512-MrChbWV5LBo+EaeKwTM1eZ6oYSz1brvFExnRafraEkJkbJ9evbUxABhnIgGQimhpMxhg+BD6QmOvb/e3NXsNdg==} - jasmine-core@5.11.0: resolution: {integrity: sha512-MPJ8L5yyNul0F2SuEsLASwESXQjJvBXnKu31JWFyRZSvuv2B79K4GDWN3pSqvLheUNh7Fyb6dXwd4rsz95O2Kg==} @@ -6231,10 +6228,6 @@ packages: resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} hasBin: true - jasmine@5.10.0: - resolution: {integrity: sha512-v4FojO8cXQdx15mJXovGhjJOvyIcVf7AC+H0ZahnfLk52vUbwuLxjVgbikc95yLmgwKQsFT47/FGQ3dOrWVxtQ==} - hasBin: true - jasmine@5.11.0: resolution: {integrity: sha512-MhIYY2pLfRA5hhIvY72ZLilwKeZEBuTyIUv9JDB+b+pEYehsJDW2obKF2dmMtWaFG6pDiFiAUNphpZ7SW7fFMA==} hasBin: true @@ -8409,8 +8402,8 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} - tsx@4.20.5: - resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + tsx@4.20.6: + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} hasBin: true @@ -9270,11 +9263,11 @@ 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/e162324c6d6c9b4d712eeb9b786937165c1f310e(@modelcontextprotocol/sdk@1.18.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.18.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.20.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.21.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.8.6(@types/node@24.5.2) '@inquirer/type': 3.0.8(@types/node@24.5.2) '@octokit/auth-app': 8.1.0 @@ -9311,8 +9304,8 @@ snapshots: firebase: 12.3.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) - jasmine: 5.10.0 - jasmine-core: 5.10.0 + jasmine: 5.11.0 + jasmine-core: 5.11.0 jasmine-reporters: 2.5.2 jsonc-parser: 3.3.1 minimatch: 10.0.3 @@ -9320,7 +9313,7 @@ snapshots: nock: 14.0.10 semver: 7.7.2 supports-color: 10.2.2 - tsx: 4.20.5 + tsx: 4.20.6 typed-graphqlify: 3.1.6 typescript: 5.9.2 utf-8-validate: 6.0.5 @@ -10647,7 +10640,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.20.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.21.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -12243,11 +12236,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12262,7 +12255,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12274,13 +12267,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -15309,8 +15302,6 @@ snapshots: jasmine-core@4.6.1: {} - jasmine-core@5.10.0: {} - jasmine-core@5.11.0: {} jasmine-reporters@2.5.2: @@ -15328,11 +15319,6 @@ snapshots: glob: 7.2.3 jasmine-core: 2.8.0 - jasmine@5.10.0: - dependencies: - glob: 10.4.5 - jasmine-core: 5.10.0 - jasmine@5.11.0: dependencies: glob: 10.4.5 @@ -17875,7 +17861,7 @@ snapshots: tsscmp@1.0.6: {} - tsx@4.20.5: + tsx@4.20.6: dependencies: esbuild: 0.25.10 get-tsconfig: 4.10.1 @@ -18158,13 +18144,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18179,7 +18165,7 @@ snapshots: - tsx - yaml - vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18194,14 +18180,14 @@ snapshots: less: 4.4.1 sass: 1.93.2 terser: 5.44.0 - tsx: 4.20.5 + tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18219,8 +18205,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.5.2 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index a5bd73102d79..1f2ed989a58d 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -3,7 +3,7 @@ "private": true, "dependencies": { "@angular/animations": "github:angular/animations-builds#8e780ef27ffa45a0f15cc8aa5047c19602e0b2ec", - "@angular/cdk": "github:angular/cdk-builds#0f636aa5ed4000a727abd7ff14ea525ddfb5b4c0", + "@angular/cdk": "github:angular/cdk-builds#3241c3b2eea9e67e7abc47eb6cf1173b46980843", "@angular/common": "github:angular/common-builds#02ca5ab190f88581866cc683b29be636496b74fa", "@angular/compiler": "github:angular/compiler-builds#68eda8d832bf9200b40e1f2b77dbca55f48c8d0e", "@angular/compiler-cli": "github:angular/compiler-cli-builds#1e13f7c7fe86b62bfa96f41f1a204c32984e5a94", @@ -11,8 +11,8 @@ "@angular/forms": "github:angular/forms-builds#6cdb212b823e73e7319620236c44e010818b4ec6", "@angular/language-service": "github:angular/language-service-builds#396428c897fa75f5d969a678861676d250b7ea12", "@angular/localize": "github:angular/localize-builds#877722ef7c6751cd5541a1cf6ee8a92156400403", - "@angular/material": "github:angular/material-builds#15e0eea61c4f2fa8805b1d253b79e76e01ff5883", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#85e26e84e3b72d8205906077dd532118be3ededd", + "@angular/material": "github:angular/material-builds#d95753edb75994f8cecf54f38af60fa276741426", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3eb677657b5f3f2e7a1d59b6bfa2a629deac0aaf", "@angular/platform-browser": "github:angular/platform-browser-builds#64bebdcdc86ffc36ee48a62ff020e8da88692214", "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a96c13d1d97bcbf338928c6e5de6317b3698fbc3", "@angular/platform-server": "github:angular/platform-server-builds#fe6e538a08bb1c4de2c2b0db06d5a1e119c8ce46", From 57075a31ad8f95a82304fe8533b3bca828d8da42 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:52:24 +0000 Subject: [PATCH 1522/2162] fix(@schematics/angular): use bracket notation for `process.env['pm_id']` The property `pm_id` on `process.env` comes from an index signature, so it must be accessed with bracket notation (`['pm_id']`) to avoid TypeScript errors. This change corrects the access to `process.env['pm_id']` in the SSR server template. --- .../angular/ssr/files/application-builder/server.ts.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e7be03e005d9..556d7fbd224d 100644 --- a/packages/schematics/angular/ssr/files/application-builder/server.ts.template +++ b/packages/schematics/angular/ssr/files/application-builder/server.ts.template @@ -51,7 +51,7 @@ app.use((req, res, next) => { * Start the server if this module is the main entry point, or it is ran via PM2. * The server listens on the port defined by the `PORT` environment variable, or defaults to 4000. */ -if (isMainModule(import.meta.url) || process.env.pm_id) { +if (isMainModule(import.meta.url) || process.env['pm_id']) { const port = process.env['PORT'] || 4000; app.listen(port, (error) => { if (error) { From 7c1ef7f84bb8edd84557d355582cc6c65a3a1e5f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Sep 2025 14:38:07 -0400 Subject: [PATCH 1523/2162] refactor(@angular/cli): streamline version command package reporting The `ng version` command no longer checks for CLI-only dependencies. Since these dependencies are pinned, they will always match the CLI's version. This change streamlines the output and makes it less confusing for users by focusing only on their workspace versions. --- .../cli/src/commands/version/version-info.ts | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/packages/angular/cli/src/commands/version/version-info.ts b/packages/angular/cli/src/commands/version/version-info.ts index cc7c99a6232e..5d5f656fd2ea 100644 --- a/packages/angular/cli/src/commands/version/version-info.ts +++ b/packages/angular/cli/src/commands/version/version-info.ts @@ -7,7 +7,7 @@ */ import { createRequire } from 'node:module'; -import { resolve } from 'node:path'; +import { VERSION } from '../../utilities/version'; /** * A subset of `package.json` fields that are relevant for the version command. @@ -65,11 +65,9 @@ export function gatherVersionInfo(context: { packageManager: { name: string; version: string | undefined }; root: string; }): VersionInfo { - const localRequire = createRequire(resolve(__filename, '../../../')); // Trailing slash is used to allow the path to be treated as a directory const workspaceRequire = createRequire(context.root + '/'); - const cliPackage: PartialPackageInfo = localRequire('./package.json'); let workspacePackage: PartialPackageInfo | undefined; try { workspacePackage = workspaceRequire('./package.json'); @@ -80,8 +78,6 @@ export function gatherVersionInfo(context: { const packageNames = new Set( Object.keys({ - ...cliPackage.dependencies, - ...cliPackage.devDependencies, ...workspacePackage?.dependencies, ...workspacePackage?.devDependencies, }), @@ -90,11 +86,11 @@ export function gatherVersionInfo(context: { const versions: Record = {}; for (const name of packageNames) { if (PACKAGE_PATTERNS.some((p) => p.test(name))) { - versions[name] = getVersion(name, workspaceRequire, localRequire); + versions[name] = getVersion(name, workspaceRequire); } } - const ngCliVersion = cliPackage.version; + const ngCliVersion = VERSION.full; let angularCoreVersion = ''; const angularSameAsCore: string[] = []; @@ -135,32 +131,17 @@ export function gatherVersionInfo(context: { * @param localRequire A `require` function for the CLI. * @returns The version of the package, or `` if it could not be found. */ -function getVersion( - moduleName: string, - workspaceRequire: NodeJS.Require, - localRequire: NodeJS.Require, -): string { +function getVersion(moduleName: string, workspaceRequire: NodeJS.Require): string { let packageInfo: PartialPackageInfo | undefined; - let cliOnly = false; // Try to find the package in the workspace try { packageInfo = workspaceRequire(`${moduleName}/package.json`); } catch {} - // If not found, try to find within the CLI - if (!packageInfo) { - try { - packageInfo = localRequire(`${moduleName}/package.json`); - cliOnly = true; - } catch {} - } - // If found, attempt to get the version if (packageInfo) { - try { - return packageInfo.version + (cliOnly ? ' (cli-only)' : ''); - } catch {} + return packageInfo.version; } return ''; From e304821d5d789fab2725d3152612d3e5b6bd0dc7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Sep 2025 11:30:55 -0400 Subject: [PATCH 1524/2162] fix(@schematics/angular): make ai-config schematic non-destructive The ai-config schematic will now check if a configuration file already exists before generating a new one. If a file is present, the schematic will skip it and log a detailed, actionable warning to the console. This change prevents the accidental overwriting of user-customized configuration files, making the schematic safer to run multiple times. The warning message informs the user why the file was skipped and instructs them on how to regenerate it if they wish to revert to the default settings. A unit test is included to verify this non-destructive behavior. --- .../schematics/angular/ai-config/index.ts | 54 ++++++++++++------- .../angular/ai-config/index_spec.ts | 22 ++++++++ 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/packages/schematics/angular/ai-config/index.ts b/packages/schematics/angular/ai-config/index.ts index 4d234b35e5d4..797065c50df0 100644 --- a/packages/schematics/angular/ai-config/index.ts +++ b/packages/schematics/angular/ai-config/index.ts @@ -55,25 +55,41 @@ interface ContextFileInfo { } export default function ({ tool }: ConfigOptions): Rule { - if (!tool) { - return noop(); - } + return (tree, context) => { + if (!tool) { + return noop(); + } - const rules = tool - .filter((tool) => tool !== Tool.None) - .map((selectedTool) => AI_TOOLS[selectedTool]) - .map(({ rulesName, directory, frontmatter }) => - mergeWith( - apply(url('./files'), [ - applyTemplates({ - ...strings, - rulesName, - frontmatter, - }), - move(directory), - ]), - ), - ); + const rules = tool + .filter((tool) => tool !== Tool.None) + .map((selectedTool) => { + const { rulesName, directory, frontmatter } = AI_TOOLS[selectedTool]; + const path = `${directory}/${rulesName}`; - return chain(rules); + if (tree.exists(path)) { + const toolName = strings.classify(selectedTool); + context.logger.warn( + `Skipping configuration file for '${toolName}' at '${path}' because it already exists.\n` + + 'This is to prevent overwriting a potentially customized file. ' + + 'If you want to regenerate it with Angular recommended defaults, please delete the existing file and re-run the command.\n' + + 'You can review the latest recommendations at https://angular.dev/ai/develop-with-ai.', + ); + + return noop(); + } + + return mergeWith( + apply(url('./files'), [ + applyTemplates({ + ...strings, + rulesName, + frontmatter, + }), + move(directory), + ]), + ); + }); + + return chain(rules); + }; } diff --git a/packages/schematics/angular/ai-config/index_spec.ts b/packages/schematics/angular/ai-config/index_spec.ts index d21186be408a..e1293454ed19 100644 --- a/packages/schematics/angular/ai-config/index_spec.ts +++ b/packages/schematics/angular/ai-config/index_spec.ts @@ -78,6 +78,28 @@ describe('Ai Config Schematic', () => { expect(tree.files.length).toBe(filesCount); }); + it('should not overwrite an existing file', async () => { + const customContent = 'custom user content'; + workspaceTree.create('.gemini/GEMINI.md', customContent); + + const messages: string[] = []; + const loggerSubscription = schematicRunner.logger.subscribe((x) => messages.push(x.message)); + + try { + const tree = await runConfigSchematic([ConfigTool.Gemini]); + + expect(tree.readContent('.gemini/GEMINI.md')).toBe(customContent); + expect(messages).toContain( + `Skipping configuration file for 'Gemini' at '.gemini/GEMINI.md' because it already exists.\n` + + 'This is to prevent overwriting a potentially customized file. ' + + 'If you want to regenerate it with Angular recommended defaults, please delete the existing file and re-run the command.\n' + + 'You can review the latest recommendations at https://angular.dev/ai/develop-with-ai.', + ); + } finally { + loggerSubscription.unsubscribe(); + } + }); + it('should create for tool if None and Gemini are selected', async () => { const tree = await runConfigSchematic([ConfigTool.Gemini, ConfigTool.None]); expect(tree.exists('.gemini/GEMINI.md')).toBeTruthy(); From ac10f323ece9f4a35068e510f10786fbcb15adbb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Sep 2025 12:48:40 -0400 Subject: [PATCH 1525/2162] fix(@angular/build): relax requirement for files to be in TS compilation Previously, any TypeScript file processed by the Angular esbuild plugin had to be part of the main TypeScript compilation defined in `tsconfig.json`. This caused errors for valid use cases, such as importing utility scripts that don't contain Angular-specific code. This change introduces a more flexible approach: - If a file is not found in the TS compilation, its contents are checked for Angular metadata (e.g., `@Component`, `@NgModule`). - If Angular metadata is present, an error is correctly reported with an improved, actionable diagnostic message. - If no Angular metadata is found, the file is passed to esbuild with a warning, allowing it to be included in the bundle without being type-checked. This improves the developer experience by reducing build failures for non-critical files while maintaining strict compilation for core Angular code. The diagnostic messages are now clearer and provide better guidance. --- .../tools/esbuild/angular/compiler-plugin.ts | 65 +++++++++++++++---- 1 file changed, 51 insertions(+), 14 deletions(-) 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 78b395058516..eb9daa3b6155 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -13,11 +13,13 @@ import type { OnStartResult, OutputFile, PartialMessage, + PartialNote, Plugin, PluginBuild, } from 'esbuild'; import assert from 'node:assert'; import { createHash } from 'node:crypto'; +import { readFile } from 'node:fs/promises'; import * as path from 'node:path'; import { maxWorkers, useTypeChecking } from '../../../utils/environment-options'; import { AngularHostOptions } from '../../angular/angular-host'; @@ -441,11 +443,23 @@ export function createCompilerPlugin( return undefined; } + const diangosticRoot = build.initialOptions.absWorkingDir ?? ''; + + // Evaluate whether the file requires the Angular compiler transpilation. + // If not, issue a warning but allow bundler to process the file (no type-checking). + const directContents = await readFile(request, 'utf-8'); + if (!requiresAngularCompiler(directContents)) { + return { + warnings: [createMissingFileDiagnostic(request, args.path, diangosticRoot, false)], + contents, + loader: 'ts', + resolveDir: path.dirname(request), + }; + } + // Otherwise return an error return { - errors: [ - createMissingFileError(request, args.path, build.initialOptions.absWorkingDir ?? ''), - ], + errors: [createMissingFileDiagnostic(request, args.path, diangosticRoot, true)], }; } else if (typeof contents === 'string' && (useTypeScriptTranspilation || isJS)) { // A string indicates untransformed output from the TS/NG compiler. @@ -762,23 +776,46 @@ function bundleWebWorker( } } -function createMissingFileError(request: string, original: string, root: string): PartialMessage { +function createMissingFileDiagnostic( + request: string, + original: string, + root: string, + angular: boolean, +): PartialMessage { const relativeRequest = path.relative(root, request); - const error = { - text: `File '${relativeRequest}' is missing from the TypeScript compilation.`, - notes: [ - { - text: `Ensure the file is part of the TypeScript program via the 'files' or 'include' property.`, - }, - ], - }; + const notes: PartialNote[] = []; + + if (angular) { + notes.push({ + text: + `Files containing Angular metadata ('@Component'/'@Directive'/etc.) must be part of the TypeScript compilation.` + + ` You can ensure the file is part of the TypeScript program via the 'files' or 'include' property.`, + }); + } else { + notes.push({ + text: + `The file will be bundled and included in the output but will not be type-checked at build time.` + + ` To remove this message you can add the file to the TypeScript program via the 'files' or 'include' property.`, + }); + } const relativeOriginal = path.relative(root, original); if (relativeRequest !== relativeOriginal) { - error.notes.push({ + notes.push({ text: `File is requested from a file replacement of '${relativeOriginal}'.`, }); } - return error; + const diagnostic = { + text: `File '${relativeRequest}' not found in TypeScript compilation.`, + notes, + }; + + return diagnostic; +} + +const POTENTIAL_METADATA_REGEX = /@angular\/core|@Component|@Directive|@Injectable|@Pipe|@NgModule/; + +function requiresAngularCompiler(contents: string): boolean { + return POTENTIAL_METADATA_REGEX.test(contents); } From c119910f4505e280eea83ea6647b6d279a46f36d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Sep 2025 11:00:58 -0400 Subject: [PATCH 1526/2162] feat(@schematics/angular): add AGENTS.md support to ai-config schematic This change introduces support for generating an `AGENTS.md` file via the `ng generate ai-config` schematic. The `AGENTS.md` standard is an emerging convention for providing instructions to AI agents that operate within a codebase. By adding this option, users can easily create a root-level `AGENTS.md` file, helping to configure AI agents with project-specific guidelines and best practices. The implementation includes: - Updating the schematic's `schema.json` to include `agents` as a selectable tool. - Extending the logic in `index.ts` to handle the creation and placement of the file. - Adding a unit test to ensure the file is generated correctly. --- packages/schematics/angular/ai-config/index.ts | 4 ++++ packages/schematics/angular/ai-config/index_spec.ts | 5 +++++ packages/schematics/angular/ai-config/schema.json | 6 +++++- packages/schematics/angular/ng-new/schema.json | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/ai-config/index.ts b/packages/schematics/angular/ai-config/index.ts index 797065c50df0..f332fd8b7e39 100644 --- a/packages/schematics/angular/ai-config/index.ts +++ b/packages/schematics/angular/ai-config/index.ts @@ -20,6 +20,10 @@ import { import { Schema as ConfigOptions, Tool } from './schema'; const AI_TOOLS: { [key in Exclude]: ContextFileInfo } = { + agents: { + rulesName: 'AGENTS.md', + directory: '.', + }, gemini: { rulesName: 'GEMINI.md', directory: '.gemini', diff --git a/packages/schematics/angular/ai-config/index_spec.ts b/packages/schematics/angular/ai-config/index_spec.ts index e1293454ed19..63b1bb205963 100644 --- a/packages/schematics/angular/ai-config/index_spec.ts +++ b/packages/schematics/angular/ai-config/index_spec.ts @@ -31,6 +31,11 @@ describe('Ai Config Schematic', () => { workspaceTree = await schematicRunner.runSchematic('workspace', workspaceOptions); }); + it('should create an AGENTS.md file', async () => { + const tree = await runConfigSchematic([ConfigTool.Agents]); + expect(tree.exists('AGENTS.md')).toBeTruthy(); + }); + it('should create a GEMINI.MD file', async () => { const tree = await runConfigSchematic([ConfigTool.Gemini]); expect(tree.exists('.gemini/GEMINI.md')).toBeTruthy(); diff --git a/packages/schematics/angular/ai-config/schema.json b/packages/schematics/angular/ai-config/schema.json index cf89108f2cd0..bbfc21028c9f 100644 --- a/packages/schematics/angular/ai-config/schema.json +++ b/packages/schematics/angular/ai-config/schema.json @@ -18,6 +18,10 @@ "value": "none", "label": "None" }, + { + "value": "agents", + "label": "Agents.md [ https://agents.md/ ]" + }, { "value": "claude", "label": "Claude [ https://docs.anthropic.com/en/docs/claude-code/memory ]" @@ -47,7 +51,7 @@ "description": "Specifies which AI tools to generate configuration files for. These file are used to improve the outputs of AI tools by following the best practices.", "items": { "type": "string", - "enum": ["none", "gemini", "copilot", "claude", "cursor", "jetbrains", "windsurf"] + "enum": ["none", "gemini", "copilot", "claude", "cursor", "jetbrains", "windsurf", "agents"] } } } diff --git a/packages/schematics/angular/ng-new/schema.json b/packages/schematics/angular/ng-new/schema.json index 5f13e4b26d70..afdef38e88da 100644 --- a/packages/schematics/angular/ng-new/schema.json +++ b/packages/schematics/angular/ng-new/schema.json @@ -149,7 +149,7 @@ "description": "Specifies which AI tools to generate configuration files for. These file are used to improve the outputs of AI tools by following the best practices.", "items": { "type": "string", - "enum": ["none", "gemini", "copilot", "claude", "cursor", "jetbrains", "windsurf"] + "enum": ["none", "gemini", "copilot", "claude", "cursor", "jetbrains", "windsurf", "agents"] } }, "fileNameStyleGuide": { From 6da2c5e1bbe7eec001577e26e086da388d2deaa0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:17:02 -0400 Subject: [PATCH 1527/2162] refactor(@angular/build): automatically enable headless mode in CI for vitest The Vitest browser provider configuration is updated to be more intelligent in automated environments. Previously, headless mode was only triggered if the browser name included headless. This change automatically enables headless mode when the `CI` environment variable is detected, which is standard practice for continuous integration pipelines. Additionally, the `ui` property is now explicitly set to the inverse of the `headless` state, preventing the Vitest UI from attempting to render in a non-interactive environment. A `satisfies` clause has also been added to improve type safety against the Vitest configuration options. --- .../unit-test/runners/vitest/browser-provider.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index dbf5725e14fa..3fef091e3717 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -83,15 +83,18 @@ export function setupBrowserConfiguration( return { errors }; } + const isCI = !!process.env['CI']; + const headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless')); + const browser = { enabled: true, provider, - headless: browsers.some((name) => name.toLowerCase().includes('headless')), - + headless, + ui: !headless, instances: browsers.map((browserName) => ({ browser: normalizeBrowserName(browserName), })), - }; + } satisfies import('vitest/node').BrowserConfigOptions; return { browser }; } From 4112da68f84e2cfdf35fecae8936068c4f29b593 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 1 Oct 2025 11:55:09 +0000 Subject: [PATCH 1528/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 14 ++++---- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +++++++++---------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index d3724fd94148..592743310454 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -53,7 +53,7 @@ "@angular-devkit/core": "workspace:*", "jsdom": "27.0.0", "less": "4.4.1", - "ng-packagr": "21.0.0-next.3", + "ng-packagr": "21.0.0-next.4", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "3.2.4" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index aad385c00058..693c7627aee0 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.0.0-next.3", + "ng-packagr": "21.0.0-next.4", "undici": "7.16.0" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a996687ede7..0b80112c2b21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -444,8 +444,8 @@ importers: specifier: 4.4.1 version: 4.4.1 ng-packagr: - specifier: 21.0.0-next.3 - version: 21.0.0-next.3(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + specifier: 21.0.0-next.4 + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) postcss: specifier: 8.5.6 version: 8.5.6 @@ -769,8 +769,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9) ng-packagr: - specifier: 21.0.0-next.3 - version: 21.0.0-next.3(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + specifier: 21.0.0-next.4 + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) undici: specifier: 7.16.0 version: 7.16.0 @@ -6834,8 +6834,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.0.0-next.3: - resolution: {integrity: sha512-pQpCt14RJFzJmAxLeLrCf4UGTeRc9rVGNyLCdp95OD+5rpxdBuWLla/54xdXiyB6VJcVTfny+b7rWBGmtxMENQ==} + ng-packagr@21.0.0-next.4: + resolution: {integrity: sha512-WDa+yU3iCjQR9/Y9R88l13Cpm0OeElT99yC3cXN6ETN23aMLjvZayma0pC+FhPnsentzYaz2tGyMRgnL/9TNNw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: @@ -16027,7 +16027,7 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.3(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): + ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 1f2ed989a58d..ef1383eb016c 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#8e780ef27ffa45a0f15cc8aa5047c19602e0b2ec", - "@angular/cdk": "github:angular/cdk-builds#3241c3b2eea9e67e7abc47eb6cf1173b46980843", - "@angular/common": "github:angular/common-builds#02ca5ab190f88581866cc683b29be636496b74fa", - "@angular/compiler": "github:angular/compiler-builds#68eda8d832bf9200b40e1f2b77dbca55f48c8d0e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#1e13f7c7fe86b62bfa96f41f1a204c32984e5a94", - "@angular/core": "github:angular/core-builds#3b571a0a8048dd31f00918abde6a3e37f9e1fc09", - "@angular/forms": "github:angular/forms-builds#6cdb212b823e73e7319620236c44e010818b4ec6", - "@angular/language-service": "github:angular/language-service-builds#396428c897fa75f5d969a678861676d250b7ea12", - "@angular/localize": "github:angular/localize-builds#877722ef7c6751cd5541a1cf6ee8a92156400403", - "@angular/material": "github:angular/material-builds#d95753edb75994f8cecf54f38af60fa276741426", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3eb677657b5f3f2e7a1d59b6bfa2a629deac0aaf", - "@angular/platform-browser": "github:angular/platform-browser-builds#64bebdcdc86ffc36ee48a62ff020e8da88692214", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a96c13d1d97bcbf338928c6e5de6317b3698fbc3", - "@angular/platform-server": "github:angular/platform-server-builds#fe6e538a08bb1c4de2c2b0db06d5a1e119c8ce46", - "@angular/router": "github:angular/router-builds#84dcd62f101041c26ac5bff51352a3b7e30b728d", - "@angular/service-worker": "github:angular/service-worker-builds#04526adde89a2ce7868bcb8a35d2da47eb82899d" + "@angular/animations": "github:angular/animations-builds#5880a486d83953cc2b9ac63c4d32191a5ab7a52d", + "@angular/cdk": "github:angular/cdk-builds#daeac37793cf6f9c29e05ad90dcea9e2fefccf60", + "@angular/common": "github:angular/common-builds#53c1f3ce704acf38a6d2512375d0e31027b398fa", + "@angular/compiler": "github:angular/compiler-builds#2cb70ce621595141bfdd3465c4d9db2758d640ab", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#dfb8696d20fc218455130ca8f1849cc1a5d13fea", + "@angular/core": "github:angular/core-builds#f5f75b96fd3a7f12115a2cbc461500f26942268a", + "@angular/forms": "github:angular/forms-builds#992a42d9f4099e44c3f5102bdc53fa43bdd9d332", + "@angular/language-service": "github:angular/language-service-builds#9cbe8c613b50cc89e4ffde38cd89b15276ae9179", + "@angular/localize": "github:angular/localize-builds#7daa29c76e957a9e7b7401bd8d9ae73c531061cb", + "@angular/material": "github:angular/material-builds#0bbebf269409254c04b485831f99a2ce9eb9a44d", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#afaf20982a2dc5f225dc1d23f0e854666a18ab99", + "@angular/platform-browser": "github:angular/platform-browser-builds#ca2c8ce644f35de86e295118ffa38d4441dee606", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#93a2d01adc9d75c9a4a6d4a6ab4288f34c9a097b", + "@angular/platform-server": "github:angular/platform-server-builds#72614e0d55863f5fea55b84ef21a7490964f297e", + "@angular/router": "github:angular/router-builds#f02aef514925f8659ce23460d2568124e8ecd39f", + "@angular/service-worker": "github:angular/service-worker-builds#55c8e26b6e05adbbdf8924b346d56cdcb64305bf" } } From 0881c4f66f7735f6d880216726af74ea34acc72b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:18:17 +0000 Subject: [PATCH 1529/2162] build: update rules_angular fork The previous fork is no longer needed as the changes have been merged. --- MODULE.bazel | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 890c1bc81145..0daa29877f7c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -32,8 +32,8 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "ef03084730381448cf6cd6d1778b5a5c5f9e1958", - remote = "https://github.com/alan-agius4/rules_angular.git", + commit = "c3721b6ece2050a59a97562e3b95527a3092b03b", + remote = "https://github.com/devversion/rules_angular.git", ) bazel_dep(name = "devinfra") From 50453fdeec4a00d88deada49d2dd0867bdb784fb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:20:03 -0400 Subject: [PATCH 1530/2162] feat(@angular/cli): overhaul `ng version` command output This commit completely revamps the `ng version` command's output for a more modern and readable experience. The key improvements include: - A single, unified table for all packages, removing the separate Angular section. - A polished table format using box-drawing characters and consistent padding. - An improved header section with aligned, bolded, and more formal labels. - The use of color to highlight version numbers and other key information, improving scannability. - Version lookup errors are now highlighted in red for better visibility. The header generation logic is also refactored to be more maintainable by removing repeated label strings. --- .../angular/cli/src/commands/version/cli.ts | 93 +++++++++---------- .../cli/src/commands/version/version-info.ts | 26 +----- 2 files changed, 45 insertions(+), 74 deletions(-) diff --git a/packages/angular/cli/src/commands/version/cli.ts b/packages/angular/cli/src/commands/version/cli.ts index b3624a9a06ce..135358a4b7ba 100644 --- a/packages/angular/cli/src/commands/version/cli.ts +++ b/packages/angular/cli/src/commands/version/cli.ts @@ -10,7 +10,7 @@ import type { Argv } from 'yargs'; import { CommandModule, CommandModuleImplementation } from '../../command-builder/command-module'; import { colors } from '../../utilities/color'; import { RootCommands } from '../command-config'; -import { VersionInfo, gatherVersionInfo } from './version-info'; +import { gatherVersionInfo } from './version-info'; /** * The Angular CLI logo, displayed as ASCII art. @@ -65,17 +65,31 @@ export default class VersionCommandModule versions, } = versionInfo; - const header = ` - Angular CLI: ${ngCliVersion} - Node: ${nodeVersion}${unsupportedNodeVersion ? ' (Unsupported)' : ''} - Package Manager: ${packageManagerName} ${packageManagerVersion ?? ''} - OS: ${os} ${arch} - `.replace(/^ {6}/gm, ''); + const headerInfo = [ + { label: 'Angular CLI', value: ngCliVersion }, + { + label: 'Node.js', + value: `${nodeVersion}${unsupportedNodeVersion ? colors.yellow(' (Unsupported)') : ''}`, + }, + { + label: 'Package Manager', + value: `${packageManagerName} ${packageManagerVersion ?? ''}`, + }, + { label: 'Operating System', value: `${os} ${arch}` }, + ]; + + const maxHeaderLabelLength = Math.max(...headerInfo.map((l) => l.label.length)); + + const header = headerInfo + .map( + ({ label, value }) => + colors.bold(label.padEnd(maxHeaderLabelLength + 2)) + `: ${colors.cyan(value)}`, + ) + .join('\n'); - const angularPackages = this.formatAngularPackages(versionInfo); const packageTable = this.formatPackageTable(versions); - logger.info([ASCII_ART, header, angularPackages, packageTable].join('\n\n')); + logger.info([ASCII_ART, header, packageTable].join('\n\n')); if (unsupportedNodeVersion) { logger.warn( @@ -84,36 +98,6 @@ export default class VersionCommandModule } } - /** - * Formats the Angular packages section of the version output. - * @param versionInfo An object containing the version information. - * @returns A string containing the formatted Angular packages information. - */ - private formatAngularPackages(versionInfo: VersionInfo): string { - const { angularCoreVersion, angularSameAsCore } = versionInfo; - if (!angularCoreVersion) { - return 'Angular: '; - } - - const wrappedPackages = angularSameAsCore - .reduce((acc, name) => { - if (acc.length === 0) { - return [name]; - } - const line = acc[acc.length - 1] + ', ' + name; - if (line.length > 60) { - acc.push(name); - } else { - acc[acc.length - 1] = line; - } - - return acc; - }, []) - .join('\n... '); - - return `Angular: ${angularCoreVersion}\n... ${wrappedPackages}`; - } - /** * Formats the package table section of the version output. * @param versions A map of package names to their versions. @@ -125,22 +109,33 @@ export default class VersionCommandModule return ''; } - const header = 'Package'; - const maxNameLength = Math.max(...versionKeys.map((key) => key.length)); - const namePad = ' '.repeat(Math.max(0, maxNameLength - header.length) + 3); + const nameHeader = 'Package'; + const versionHeader = 'Version'; - const tableHeader = `${header}${namePad}Version`; - const separator = '-'.repeat(tableHeader.length); + const maxNameLength = Math.max(nameHeader.length, ...versionKeys.map((key) => key.length)); + const maxVersionLength = Math.max( + versionHeader.length, + ...versionKeys.map((key) => versions[key].length), + ); const tableRows = versionKeys .map((module) => { - const padding = ' '.repeat(maxNameLength - module.length + 3); + const name = module.padEnd(maxNameLength); + const version = versions[module]; + const coloredVersion = version === '' ? colors.red(version) : colors.cyan(version); + const padding = ' '.repeat(maxVersionLength - version.length); - return `${module}${padding}${versions[module]}`; + return `│ ${name} │ ${coloredVersion}${padding} │`; }) - .sort() - .join('\n'); + .sort(); + + const top = `┌─${'─'.repeat(maxNameLength)}─┬─${'─'.repeat(maxVersionLength)}─┐`; + const header = `│ ${nameHeader.padEnd(maxNameLength)} │ ${versionHeader.padEnd( + maxVersionLength, + )} │`; + const separator = `├─${'─'.repeat(maxNameLength)}─┼─${'─'.repeat(maxVersionLength)}─┤`; + const bottom = `└─${'─'.repeat(maxNameLength)}─┴─${'─'.repeat(maxVersionLength)}─┘`; - return `${tableHeader}\n${separator}\n${tableRows}`; + return [top, header, separator, ...tableRows, bottom].join('\n'); } } diff --git a/packages/angular/cli/src/commands/version/version-info.ts b/packages/angular/cli/src/commands/version/version-info.ts index 5d5f656fd2ea..c59a3b5728af 100644 --- a/packages/angular/cli/src/commands/version/version-info.ts +++ b/packages/angular/cli/src/commands/version/version-info.ts @@ -24,8 +24,6 @@ interface PartialPackageInfo { */ export interface VersionInfo { ngCliVersion: string; - angularCoreVersion: string; - angularSameAsCore: string[]; versions: Record; unsupportedNodeVersion: boolean; nodeVersion: string; @@ -90,30 +88,8 @@ export function gatherVersionInfo(context: { } } - const ngCliVersion = VERSION.full; - let angularCoreVersion = ''; - const angularSameAsCore: string[] = []; - - if (workspacePackage) { - // Filter all angular versions that are the same as core. - angularCoreVersion = versions['@angular/core']; - if (angularCoreVersion) { - for (const [name, version] of Object.entries(versions)) { - if (version === angularCoreVersion && name.startsWith('@angular/')) { - angularSameAsCore.push(name.replace(/^@angular\//, '')); - delete versions[name]; - } - } - - // Make sure we list them in alphabetical order. - angularSameAsCore.sort(); - } - } - return { - ngCliVersion, - angularCoreVersion, - angularSameAsCore, + ngCliVersion: VERSION.full, versions, unsupportedNodeVersion, nodeVersion: process.versions.node, From 8d805117e19485dd065aaac128478534d9eeb4dd Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:25:50 -0400 Subject: [PATCH 1531/2162] refactor(@angular/cli): improve output format for `ng cache info` command This commit refactors the output to be more user-friendly and consistent with other commands like `ng version`. It introduces a clean, aligned, two-column layout with colors to improve readability. - Labels are now bolded for emphasis. - Values are colored for clarity (cyan for general info, green/red for statuses). - The layout is padded to ensure vertical alignment, making the information easier to scan. --- .../cli/src/commands/cache/info/cli.ts | 53 ++++++++++++++----- .../e2e/tests/commands/cache/cache-info.ts | 42 +++------------ 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/packages/angular/cli/src/commands/cache/info/cli.ts b/packages/angular/cli/src/commands/cache/info/cli.ts index 447d92e02c1f..f4278d52db74 100644 --- a/packages/angular/cli/src/commands/cache/info/cli.ts +++ b/packages/angular/cli/src/commands/cache/info/cli.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import { tags } from '@angular-devkit/core'; import * as fs from 'node:fs/promises'; import { join } from 'node:path'; import { Argv } from 'yargs'; @@ -15,6 +14,7 @@ import { CommandModuleImplementation, CommandScope, } from '../../../command-builder/command-module'; +import { colors } from '../../../utilities/color'; import { isCI } from '../../../utilities/environment-options'; import { getCacheConfig } from '../utilities'; @@ -29,15 +29,44 @@ export class CacheInfoCommandModule extends CommandModule implements CommandModu } async run(): Promise { - const { path, environment, enabled } = getCacheConfig(this.context.workspace); - - this.context.logger.info(tags.stripIndents` - Enabled: ${enabled ? 'yes' : 'no'} - Environment: ${environment} - Path: ${path} - Size on disk: ${await this.getSizeOfDirectory(path)} - Effective status on current machine: ${this.effectiveEnabledStatus() ? 'enabled' : 'disabled'} - `); + const cacheConfig = getCacheConfig(this.context.workspace); + const { path, environment, enabled } = cacheConfig; + + const effectiveStatus = this.effectiveEnabledStatus(cacheConfig); + const sizeOnDisk = await this.getSizeOfDirectory(path); + + const info: { label: string; value: string }[] = [ + { + label: 'Enabled', + value: enabled ? colors.green('Yes') : colors.red('No'), + }, + { + label: 'Environment', + value: colors.cyan(environment), + }, + { + label: 'Path', + value: colors.cyan(path), + }, + { + label: 'Size on disk', + value: colors.cyan(sizeOnDisk), + }, + { + label: 'Effective Status', + value: + (effectiveStatus ? colors.green('Enabled') : colors.red('Disabled')) + + ' (current machine)', + }, + ]; + + const maxLabelLength = Math.max(...info.map((l) => l.label.length)); + + const output = info + .map(({ label, value }) => colors.bold(label.padEnd(maxLabelLength + 2)) + `: ${value}`) + .join('\n'); + + this.context.logger.info(`\n${colors.bold('Cache Information')}\n\n${output}\n`); } private async getSizeOfDirectory(path: string): Promise { @@ -82,8 +111,8 @@ export class CacheInfoCommandModule extends CommandModule implements CommandModu return `${roundedSize.toFixed(fractionDigits)} ${abbreviations[index]}`; } - private effectiveEnabledStatus(): boolean { - const { enabled, environment } = getCacheConfig(this.context.workspace); + private effectiveEnabledStatus(cacheConfig: { enabled: boolean; environment: string }): boolean { + const { enabled, environment } = cacheConfig; if (enabled) { switch (environment) { diff --git a/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts b/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts index 46ae15aef796..4e9e2f30c9d6 100644 --- a/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts +++ b/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts @@ -7,59 +7,31 @@ export default async function () { try { // Should be enabled by default for local builds. await configureTest('0' /** envCI */); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: enabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); // Should be disabled by default for CI builds. await configureTest('1' /** envCI */, { enabled: true }); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: disabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/); // Should be enabled by when environment is local and env is not CI. await configureTest('0' /** envCI */, { environment: 'local' }); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: enabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); // Should be disabled by when environment is local and env is CI. await configureTest('1' /** envCI */, { environment: 'local' }); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: disabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/); // Effective status should be enabled when 'environment' is set to 'all' or 'ci'. await configureTest('1' /** envCI */, { environment: 'all' }); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: enabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); // Effective status should be enabled when 'environment' is set to 'ci' and run is in ci await configureTest('1' /** envCI */, { environment: 'ci' }); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: enabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); // Effective status should be disabled when 'enabled' is set to false await configureTest('1' /** envCI */, { environment: 'all', enabled: false }); - await execAndWaitForOutputToMatch( - 'ng', - ['cache', 'info'], - /Effective status on current machine: disabled/, - ); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/); } finally { process.env['CI'] = originalCIValue; } From 472344db2c13cf6fd8dac76f1cee099762976421 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Sep 2025 19:53:42 -0400 Subject: [PATCH 1532/2162] test(@angular/build): reduce usage of `@angular-devkit/core` tags helpers in unit-tests --- .../serve-live-reload-proxies_spec.ts | 104 +++++++++--------- .../tests/behavior/code-coverage_spec.ts | 11 +- .../index-file/augment-index-html_spec.ts | 3 +- 3 files changed, 57 insertions(+), 61 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts b/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts index 083773529058..65f34bddf94d 100644 --- a/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts +++ b/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -/* eslint-disable import/no-extraneous-dependencies */ -import { tags } from '@angular-devkit/core'; import { createServer } from 'node:http'; import { createProxyServer } from 'http-proxy'; import { AddressInfo } from 'node:net'; @@ -43,58 +41,58 @@ async function createProxy(target: string, secure: boolean, ws = true): Promise< target, secure, ssl: secure && { - key: tags.stripIndents` - -----BEGIN RSA PRIVATE KEY----- - MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDEBRUsUz4rdcMt - CQGLvG3SzUinsmgdgOyTNQNA0eOMyRSrmS8L+F/kSLUnqqu4mzdeqDzo2Xj553jK - dRqMCRFGJuGnQ/VIbW2A+ywgrqILuDyF5i4PL1aQW4yJ7TnXfONKfpswQArlN6DF - gBYJtoJlf8XD1sOeJpsv/O46/ix/wngQ+GwQQ2cfqxQT0fE9SBCY23VNt3SPUJ3k - 9etJMvJ9U9GHSb1CFdNQe7Gyx7xdKf1TazB27ElNZEg2aF99if47uRskYjvvFivy - 7nxGx/ccIwjwNMpk29AsKG++0sn1yTK7tD5Px6aCSVK0BKbdXZS2euJor8hASGBJ - 3GpVGJvdAgMBAAECggEAapYo8TVCdPdP7ckb4hPP0/R0MVu9aW2VNmZ5ImH+zar5 - ZmWhQ20HF2bBupP/VB5yeTIaDLNUKO9Iqy4KBWNY1UCHKyC023FFPgFV+V98FctU - faqwGOmwtEZToRwxe48ZOISndhEc247oCPyg/x8SwIY9z0OUkwaDFBEAqWtUXxM3 - /SPpCT5ilLgxnRgVB8Fj5Z0q7ThnxNVOmVC1OSIakEj46PzmMXn1pCKLOCUmAAOQ - BnrOZuty2b8b2M/GHsktLZwojQQJmArnIBymTXQTVhaGgKSyOv1qvHLp9L1OJf0/ - Xm+/TqT6ztzhzlftcObdfQZZ5JuoEwlvyrsGFlA3MQKBgQDiQC3KYMG8ViJkWrv6 - XNAFEoAjVEKrtirGWJ66YfQ9KSJ7Zttrd1Y1V1OLtq3z4YMH39wdQ8rOD+yR8mWV - 6Tnsxma6yJXAH8uan8iVbxjIZKF1hnvNCxUoxYmWOmTLcEQMzmxvTzAiR+s6R6Uj - 9LgGqppt30nM4wnOhOJU6UxqbwKBgQDdy03KidbPZuycJSy1C9AIt0jlrxDsYm+U - fZrB6mHEZcgoZS5GbLKinQCdGcgERa05BXvJmNbfZtT5a37YEnbjsTImIhDiBP5P - nW36/9a3Vg1svd1KP2206/Bh3gfZbgTsQg4YogXgjf0Uzuvw18btgTtLVpVyeuqz - TU3eeF30cwKBgQCN6lvOmapsDEs+T3uhqx4AUH53qp63PmjOSUAnANJGmsq6ROZV - HmHAy6nn9Qpf85BRHCXhZWiMoIhvc3As/EINNtWxS6hC/q6jqp4SvcD50cVFBroY - /16iWGXZCX+37A+DSOfTWgSDPEFcKRx41UOpStHbITgVgEPieo/NWxlHmQKBgQDX - JOLs2RB6V0ilnpnjdPXzvncD9fHgmwvJap24BPeZX3HtXViqD76oZsu1mNCg9EW3 - zk3pnEyyoDlvSIreZerVq4kN3HWsCVP3Pqr0kz9g0CRtmy8RWr28hjHDfXD3xPUZ - iGnMEz7IOHOKv722/liFAprV1cNaLUmFbDNg3jmlaQKBgQDG5WwngPhOHmjTnSml - amfEz9a4yEhQqpqgVNW5wwoXOf6DbjL2m/maJh01giThj7inMcbpkZlIclxD0Eu6 - Lof+ctCeqSAJvaVPmd+nv8Yp26zsF1yM8ax9xXjrIvv9fSbycNveGTDCsNNTiYoW - QyvMqmN1kGy20SZbQDD/fLfqBQ== - -----END RSA PRIVATE KEY----- + key: ` +-----BEGIN RSA PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDEBRUsUz4rdcMt +CQGLvG3SzUinsmgdgOyTNQNA0eOMyRSrmS8L+F/kSLUnqqu4mzdeqDzo2Xj553jK +dRqMCRFGJuGnQ/VIbW2A+ywgrqILuDyF5i4PL1aQW4yJ7TnXfONKfpswQArlN6DF +gBYJtoJlf8XD1sOeJpsv/O46/ix/wngQ+GwQQ2cfqxQT0fE9SBCY23VNt3SPUJ3k +9etJMvJ9U9GHSb1CFdNQe7Gyx7xdKf1TazB27ElNZEg2aF99if47uRskYjvvFivy +7nxGx/ccIwjwNMpk29AsKG++0sn1yTK7tD5Px6aCSVK0BKbdXZS2euJor8hASGBJ +3GpVGJvdAgMBAAECggEAapYo8TVCdPdP7ckb4hPP0/R0MVu9aW2VNmZ5ImH+zar5 +ZmWhQ20HF2bBupP/VB5yeTIaDLNUKO9Iqy4KBWNY1UCHKyC023FFPgFV+V98FctU +faqwGOmwtEZToRwxe48ZOISndhEc247oCPyg/x8SwIY9z0OUkwaDFBEAqWtUXxM3 +/SPpCT5ilLgxnRgVB8Fj5Z0q7ThnxNVOmVC1OSIakEj46PzmMXn1pCKLOCUmAAOQ +BnrOZuty2b8b2M/GHsktLZwojQQJmArnIBymTXQTVhaGgKSyOv1qvHLp9L1OJf0/ +Xm+/TqT6ztzhzlftcObdfQZZ5JuoEwlvyrsGFlA3MQKBgQDiQC3KYMG8ViJkWrv6 +XNAFEoAjVEKrtirGWJ66YfQ9KSJ7Zttrd1Y1V1OLtq3z4YMH39wdQ8rOD+yR8mWV +6Tnsxma6yJXAH8uan8iVbxjIZKF1hnvNCxUoxYmWOmTLcEQMzmxvTzAiR+s6R6Uj +9LgGqppt30nM4wnOhOJU6UxqbwKBgQDdy03KidbPZuycJSy1C9AIt0jlrxDsYm+U +fZrB6mHEZcgoZS5GbLKinQCdGcgERa05BXvJmNbfZtT5a37YEnbjsTImIhDiBP5P +nW36/9a3Vg1svd1KP2206/Bh3gfZbgTsQg4YogXgjf0Uzuvw18btgTtLVpVyeuqz +TU3eeF30cwKBgQCN6lvOmapsDEs+T3uhqx4AUH53qp63PmjOSUAnANJGmsq6ROZV +HmHAy6nn9Qpf85BRHCXhZWiMoIhvc3As/EINNtWxS6hC/q6jqp4SvcD50cVFBroY +/16iWGXZCX+37A+DSOfTWgSDPEFcKRx41UOpStHbITgVgEPieo/NWxlHmQKBgQDX +JOLs2RB6V0ilnpnjdPXzvncD9fHgmwvJap24BPeZX3HtXViqD76oZsu1mNCg9EW3 +zk3pnEyyoDlvSIreZerVq4kN3HWsCVP3Pqr0kz9g0CRtmy8RWr28hjHDfXD3xPUZ +iGnMEz7IOHOKv722/liFAprV1cNaLUmFbDNg3jmlaQKBgQDG5WwngPhOHmjTnSml +amfEz9a4yEhQqpqgVNW5wwoXOf6DbjL2m/maJh01giThj7inMcbpkZlIclxD0Eu6 +Lof+ctCeqSAJvaVPmd+nv8Yp26zsF1yM8ax9xXjrIvv9fSbycNveGTDCsNNTiYoW +QyvMqmN1kGy20SZbQDD/fLfqBQ== +-----END RSA PRIVATE KEY----- `, - cert: tags.stripIndents` - -----BEGIN CERTIFICATE----- - MIIDXTCCAkWgAwIBAgIJALz8gD/gAt0OMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV - BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX - aWRnaXRzIFB0eSBMdGQwHhcNMTgxMDIzMTgyMTQ5WhcNMTkxMDIzMTgyMTQ5WjBF - MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 - ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB - CgKCAQEAxAUVLFM+K3XDLQkBi7xt0s1Ip7JoHYDskzUDQNHjjMkUq5kvC/hf5Ei1 - J6qruJs3Xqg86Nl4+ed4ynUajAkRRibhp0P1SG1tgPssIK6iC7g8heYuDy9WkFuM - ie0513zjSn6bMEAK5TegxYAWCbaCZX/Fw9bDniabL/zuOv4sf8J4EPhsEENnH6sU - E9HxPUgQmNt1Tbd0j1Cd5PXrSTLyfVPRh0m9QhXTUHuxsse8XSn9U2swduxJTWRI - NmhffYn+O7kbJGI77xYr8u58Rsf3HCMI8DTKZNvQLChvvtLJ9ckyu7Q+T8emgklS - tASm3V2UtnriaK/IQEhgSdxqVRib3QIDAQABo1AwTjAdBgNVHQ4EFgQUDZBhVKdb - 3BRhLIhuuE522Vsul0IwHwYDVR0jBBgwFoAUDZBhVKdb3BRhLIhuuE522Vsul0Iw - DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABh9WWZwWLgb9/DcTxL72 - 6pI96t4jiF79Q+pPefkaIIi0mE6yodWrTAsBQu9I6bNRaEcCSoiXkP2bqskD/UGg - LwUFgSrDOAA3UjdHw3QU5g2NocduG7mcFwA40TB98sOsxsUyYlzSyWzoiQWwPYwb - hek1djuWkqPXsTjlj54PTPN/SjTFmo4p5Ip6nbRf2nOREl7v0rJpGbJvXiCMYyd+ - Zv+j4mRjCGo8ysMR2HjCUGkYReLAgKyyz3M7i8vevJhKslyOmy6Txn4F0nPVumaU - DDIy4xXPW1STWfsmSYJfYW3wa0wk+pJQ3j2cTzkPQQ8gwpvM3U9DJl43uwb37v6I - 7Q== - -----END CERTIFICATE----- + cert: ` +-----BEGIN CERTIFICATE----- +MIIDXTCCAkWgAwIBAgIJALz8gD/gAt0OMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTgxMDIzMTgyMTQ5WhcNMTkxMDIzMTgyMTQ5WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAxAUVLFM+K3XDLQkBi7xt0s1Ip7JoHYDskzUDQNHjjMkUq5kvC/hf5Ei1 +J6qruJs3Xqg86Nl4+ed4ynUajAkRRibhp0P1SG1tgPssIK6iC7g8heYuDy9WkFuM +ie0513zjSn6bMEAK5TegxYAWCbaCZX/Fw9bDniabL/zuOv4sf8J4EPhsEENnH6sU +E9HxPUgQmNt1Tbd0j1Cd5PXrSTLyfVPRh0m9QhXTUHuxsse8XSn9U2swduxJTWRI +NmhffYn+O7kbJGI77xYr8u58Rsf3HCMI8DTKZNvQLChvvtLJ9ckyu7Q+T8emgklS +tASm3V2UtnriaK/IQEhgSdxqVRib3QIDAQABo1AwTjAdBgNVHQ4EFgQUDZBhVKdb +3BRhLIhuuE522Vsul0IwHwYDVR0jBBgwFoAUDZBhVKdb3BRhLIhuuE522Vsul0Iw +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABh9WWZwWLgb9/DcTxL72 +6pI96t4jiF79Q+pPefkaIIi0mE6yodWrTAsBQu9I6bNRaEcCSoiXkP2bqskD/UGg +LwUFgSrDOAA3UjdHw3QU5g2NocduG7mcFwA40TB98sOsxsUyYlzSyWzoiQWwPYwb +hek1djuWkqPXsTjlj54PTPN/SjTFmo4p5Ip6nbRf2nOREl7v0rJpGbJvXiCMYyd+ +Zv+j4mRjCGo8ysMR2HjCUGkYReLAgKyyz3M7i8vevJhKslyOmy6Txn4F0nPVumaU +DDIy4xXPW1STWfsmSYJfYW3wa0wk+pJQ3j2cTzkPQQ8gwpvM3U9DJl43uwb37v6I +7Q== +-----END CERTIFICATE----- `, }, }).listen(proxyPort); diff --git a/packages/angular/build/src/builders/karma/tests/behavior/code-coverage_spec.ts b/packages/angular/build/src/builders/karma/tests/behavior/code-coverage_spec.ts index 835f48724dbe..9882af429b76 100644 --- a/packages/angular/build/src/builders/karma/tests/behavior/code-coverage_spec.ts +++ b/packages/angular/build/src/builders/karma/tests/behavior/code-coverage_spec.ts @@ -7,7 +7,6 @@ */ import { setTimeout } from 'node:timers/promises'; -import { tags } from '@angular-devkit/core'; import { last, tap } from 'rxjs'; import { execute } from '../../index'; import { BASE_OPTIONS, KARMA_BUILDER_INFO, describeKarmaBuilder } from '../setup'; @@ -96,12 +95,12 @@ describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget) => { await harness.modifyFile('src/app/app.component.ts', (content) => { return content.replace( `title = 'app'`, - tags.stripIndents` - title = 'app'; + ` +title = 'app'; - async foo() { - return 'foo'; - } +async foo() { + return 'foo'; +} `, ); }); diff --git a/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts b/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts index 7ea16ab6121b..55adf8d88f0b 100644 --- a/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts +++ b/packages/angular/build/src/utils/index-file/augment-index-html_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import { tags } from '@angular-devkit/core'; import { AugmentIndexHtmlOptions, augmentIndexHtml } from './augment-index-html'; describe('augment-index-html', () => { @@ -25,7 +24,7 @@ describe('augment-index-html', () => { }; const oneLineHtml = (html: TemplateStringsArray) => - tags.stripIndents`${html}`.replace(/(>\s+)/g, '>'); + `${html}`.replace(/(>\s+)/g, '>').replace(/\s+ { const { content } = await augmentIndexHtml({ From 7f00613d59cf66d095cb338b7b48e3503f5adb37 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 1 Oct 2025 11:55:35 +0000 Subject: [PATCH 1533/2162] build: update all non-major dependencies See associated pull request for more information. Closes #31352 as a pr takeover --- package.json | 6 +- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- .../angular_devkit/build_webpack/package.json | 2 +- .../src/builders/webpack/index.ts | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 812 ++++++++++-------- 7 files changed, 478 insertions(+), 350 deletions(-) diff --git a/package.json b/package.json index 3651e16c9aad..ff46ce010f05 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.44.1", - "@typescript-eslint/parser": "8.44.1", + "@typescript-eslint/eslint-plugin": "8.45.0", + "@typescript-eslint/parser": "8.45.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", @@ -142,7 +142,7 @@ "typescript": "5.9.2", "undici": "7.16.0", "unenv": "^1.10.0", - "verdaccio": "6.1.6", + "verdaccio": "6.2.0", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", "zod": "4.1.11", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 592743310454..b74c434c27fc 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.40", + "rolldown": "1.0.0-beta.41", "sass": "1.93.2", "semver": "7.7.2", "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 693c7627aee0..2c7f35653698 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -55,7 +55,7 @@ "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.101.3", + "webpack": "5.102.0", "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 542c125ab171..da329c76aaab 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.101.3", + "webpack": "5.102.0", "webpack-dev-server": "5.2.2" }, "peerDependencies": { diff --git a/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts b/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts index b6be070a9f92..166a6385a0e1 100644 --- a/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts +++ b/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts @@ -104,7 +104,7 @@ export function runWebpack( // Teardown logic. Close the watcher when unsubscribed from. return () => { - watching.close(() => {}); + watching?.close(() => {}); webpackCompiler.close(() => {}); }; } else { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 967810290190..b3ec5c3372b9 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "21.0.0-next.5", "@angular/compiler-cli": "21.0.0-next.5", "typescript": "5.9.2", - "webpack": "5.101.3" + "webpack": "5.102.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b80112c2b21..17ae33980071 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.44.1 - version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + specifier: 8.45.0 + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: 8.44.1 - version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + specifier: 8.45.0 + version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) + version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) express: specifier: 5.1.0 version: 5.1.0 @@ -308,8 +308,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.1.6 - version: 6.1.6(encoding@0.1.13) + specifier: 6.2.0 + version: 6.2.0(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 @@ -410,8 +410,8 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.40 - version: 1.0.0-beta.40 + specifier: 1.0.0-beta.41 + version: 1.0.0-beta.41 sass: specifier: 1.93.2 version: 1.93.2 @@ -652,16 +652,16 @@ importers: version: 10.4.21(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.4)(webpack@5.101.3(esbuild@0.25.10)) + version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.0(esbuild@0.25.10)) browserslist: specifier: ^4.26.0 version: 4.26.2 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) + version: 13.0.1(webpack@5.102.0(esbuild@0.25.10)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.101.3(esbuild@0.25.10)) + version: 7.1.2(webpack@5.102.0(esbuild@0.25.10)) esbuild-wasm: specifier: 0.25.10 version: 0.25.10 @@ -682,16 +682,16 @@ importers: version: 4.4.1 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.1)(webpack@5.101.3(esbuild@0.25.10)) + version: 12.3.0(less@4.4.1)(webpack@5.102.0(esbuild@0.25.10)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.101.3(esbuild@0.25.10)) + version: 4.0.2(webpack@5.102.0(esbuild@0.25.10)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.101.3(esbuild@0.25.10)) + version: 2.9.4(webpack@5.102.0(esbuild@0.25.10)) open: specifier: 10.2.0 version: 10.2.0 @@ -709,7 +709,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(esbuild@0.25.10)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.102.0(esbuild@0.25.10)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -721,13 +721,13 @@ importers: version: 1.93.2 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.93.2)(webpack@5.101.3(esbuild@0.25.10)) + version: 16.0.5(sass@1.93.2)(webpack@5.102.0(esbuild@0.25.10)) semver: specifier: 7.7.2 version: 7.7.2 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.101.3(esbuild@0.25.10)) + version: 5.0.0(webpack@5.102.0(esbuild@0.25.10)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -744,20 +744,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.101.3 - version: 5.101.3(esbuild@0.25.10) + specifier: 5.102.0 + version: 5.102.0(esbuild@0.25.10) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.101.3(esbuild@0.25.10)) + version: 7.4.5(webpack@5.102.0(esbuild@0.25.10)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.101.3(esbuild@0.25.10)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.0(esbuild@0.25.10)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.101.3(esbuild@0.25.10)) + version: 5.1.0(webpack@5.102.0(esbuild@0.25.10)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -795,11 +795,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.101.3 - version: 5.101.3(esbuild@0.25.10) + specifier: 5.102.0 + version: 5.102.0(esbuild@0.25.10) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.101.3(esbuild@0.25.10)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.0(esbuild@0.25.10)) packages/angular_devkit/core: dependencies: @@ -877,8 +877,8 @@ importers: specifier: 5.9.2 version: 5.9.2 webpack: - specifier: 5.101.3 - version: 5.101.3(esbuild@0.25.10) + specifier: 5.102.0 + version: 5.102.0(esbuild@0.25.10) packages/schematics/angular: dependencies: @@ -2773,8 +2773,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.92.0': - resolution: {integrity: sha512-PDLfCbwgXjGdTBxzcuDOUxJYNBl6P8dOp3eDKWw54dYvqONan9rwGDRQU0zrkdEMiItfXQQUOI17uOcMX5Zm7A==} + '@oxc-project/types@0.93.0': + resolution: {integrity: sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -2923,95 +2923,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.40': - resolution: {integrity: sha512-9Ii9phC7QU6Lb+ncMfG1Xlosq0NBB1N/4sw+EGZ3y0BBWGy02TOb5ghWZalphAKv9rn1goqo5WkBjyd2YvsLmA==} + '@rolldown/binding-android-arm64@1.0.0-beta.41': + resolution: {integrity: sha512-Edflndd9lU7JVhVIvJlZhdCj5DkhYDJPIRn4Dx0RUdfc8asP9xHOI5gMd8MesDDx+BJpdIT/uAmVTearteU/mQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.40': - resolution: {integrity: sha512-5O6d0y2tBQTL+ecQY3qXIwSnF1/Zik8q7LZMKeyF+VJ9l194d0IdMhl2zUF0cqWbYHuF4Pnxplk4OhurPQ/Z9Q==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.41': + resolution: {integrity: sha512-XGCzqfjdk7550PlyZRTBKbypXrB7ATtXhw/+bjtxnklLQs0mKP/XkQVOKyn9qGKSlvH8I56JLYryVxl0PCvSNw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.40': - resolution: {integrity: sha512-izB9jygt3miPQbOTZfSu5K51isUplqa8ysByOKQqcJHgrBWmbTU8TM9eouv6tRmBR0kjcEcID9xhmA1CeZ1VIg==} + '@rolldown/binding-darwin-x64@1.0.0-beta.41': + resolution: {integrity: sha512-Ho6lIwGJed98zub7n0xcRKuEtnZgbxevAmO4x3zn3C3N4GVXZD5xvCvTVxSMoeBJwTcIYzkVDRTIhylQNsTgLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.40': - resolution: {integrity: sha512-2fdpEpKT+wwP0vig9dqxu+toTeWmVSjo3psJQVDeLJ51rO+GXcCJ1IkCXjhMKVEevNtZS7B8T8Z2vvmRV9MAdA==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.41': + resolution: {integrity: sha512-ijAZETywvL+gACjbT4zBnCp5ez1JhTRs6OxRN4J+D6AzDRbU2zb01Esl51RP5/8ZOlvB37xxsRQ3X4YRVyYb3g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.40': - resolution: {integrity: sha512-HP2lo78OWULN+8TewpLbS9PS00jh0CaF04tA2u8z2I+6QgVgrYOYKvX+T0hlO5smgso4+qb3YchzumWJl3yCPQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': + resolution: {integrity: sha512-EgIOZt7UildXKFEFvaiLNBXm+4ggQyGe3E5Z1QP9uRcJJs9omihOnm897FwOBQdCuMvI49iBgjFrkhH+wMJ2MA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.40': - resolution: {integrity: sha512-ng00gfr9BhA2NPAOU5RWAlTiL+JcwAD+L+4yUD1sbBy6tgHdLiNBOvKtHISIF9RM9/eQeS0tAiWOYZGIH9JMew==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': + resolution: {integrity: sha512-F8bUwJq8v/JAU8HSwgF4dztoqJ+FjdyjuvX4//3+Fbe2we9UktFeZ27U4lRMXF1vxWtdV4ey6oCSqI7yUrSEeg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.40': - resolution: {integrity: sha512-mF0R1l9kLcaag/9cLEiYYdNZ4v1uuX4jklSDZ1s6vJE4RB3LirUney0FavdVRwCJ5sDvfvsPgXgtBXWYr2M2tQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': + resolution: {integrity: sha512-MioXcCIX/wB1pBnBoJx8q4OGucUAfC1+/X1ilKFsjDK05VwbLZGRgOVD5OJJpUQPK86DhQciNBrfOKDiatxNmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.40': - resolution: {integrity: sha512-+wi08S7wT5iLPHRZb0USrS6n+T6m+yY++dePYedE5uvKIpWCJJioFTaRtWjpm0V6dVNLcq2OukrvfdlGtH9Wgg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': + resolution: {integrity: sha512-m66M61fizvRCwt5pOEiZQMiwBL9/y0bwU/+Kc4Ce/Pef6YfoEkR28y+DzN9rMdjo8Z28NXjsDPq9nH4mXnAP0g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.40': - resolution: {integrity: sha512-W5qBGAemUocIBKCcOsDjlV9GUt28qhl/+M6etWBeLS5gQK0J6XDg0YVzfOQdvq57ZGjYNP0NvhYzqhOOnEx+4g==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': + resolution: {integrity: sha512-yRxlSfBvWnnfrdtJfvi9lg8xfG5mPuyoSHm0X01oiE8ArmLRvoJGHUTJydCYz+wbK2esbq5J4B4Tq9WAsOlP1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.40': - resolution: {integrity: sha512-vJwoDehtt+yqj2zacq1AqNc2uE/oh7mnRGqAUbuldV6pgvU01OSQUJ7Zu+35hTopnjFoDNN6mIezkYlGAv5RFA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': + resolution: {integrity: sha512-PHVxYhBpi8UViS3/hcvQQb9RFqCtvFmFU1PvUoTRiUdBtgHA6fONNHU4x796lgzNlVSD3DO/MZNk1s5/ozSMQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.40': - resolution: {integrity: sha512-Oj3YyqVUPurr1FlMpEE/bJmMC+VWAWPM/SGUfklO5KUX97bk5Q/733nPg4RykK8q8/TluJoQYvRc05vL/B74dw==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': + resolution: {integrity: sha512-OAfcO37ME6GGWmj9qTaDT7jY4rM0T2z0/8ujdQIJQ2x2nl+ztO32EIwURfmXOK0U1tzkyuaKYvE34Pug/ucXlQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.40': - resolution: {integrity: sha512-0ZtO6yN8XjVoFfN4HDWQj4nDu3ndMybr7jIM00DJqOmc+yFhly7rdOy7fNR9Sky3leCpBtsXfepVqRmVpYKPVA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': + resolution: {integrity: sha512-NIYGuCcuXaq5BC4Q3upbiMBvmZsTsEPG9k/8QKQdmrch+ocSy5Jv9tdpdmXJyighKqm182nh/zBt+tSJkYoNlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.40': - resolution: {integrity: sha512-BPl1inoJXPpIe38Ja46E4y11vXlJyuleo+9Rmu//pYL5fIDYJkXUj/oAXqjSuwLcssrcwnuPgzvzvlz9++cr3w==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': + resolution: {integrity: sha512-kANdsDbE5FkEOb5NrCGBJBCaZ2Sabp3D7d4PRqMYJqyLljwh9mDyYyYSv5+QNvdAmifj+f3lviNEUUuUZPEFPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.40': - resolution: {integrity: sha512-UguA4ltbAk+nbwHRxqaUP/etpTbR0HjyNlsu4Zjbh/ytNbFsbw8CA4tEBkwDyjgI5NIPea6xY11zpl7R2/ddVA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': + resolution: {integrity: sha512-UlpxKmFdik0Y2VjZrgUCgoYArZJiZllXgIipdBRV1hw6uK45UbQabSTW6Kp6enuOu7vouYWftwhuxfpE8J2JAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.40': - resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==} + '@rolldown/pluginutils@1.0.0-beta.41': + resolution: {integrity: sha512-ycMEPrS3StOIeb87BT3/+bu+blEtyvwQ4zmo2IcJQy0Rd1DAAhKksA0iUZ3MYSpJtjlPhg0Eo6mvVS6ggPhRbw==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -3229,6 +3229,10 @@ packages: resolution: {integrity: sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==} engines: {node: ^20.17.0 || >=22.9.0} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3238,6 +3242,10 @@ packages: peerDependencies: eslint: '>=9.0.0' + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -3487,6 +3495,9 @@ packages: '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + '@types/responselike@1.0.0': + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} @@ -3541,39 +3552,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.44.1': - resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==} + '@typescript-eslint/eslint-plugin@8.45.0': + resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.44.1 + '@typescript-eslint/parser': ^8.45.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/parser@8.44.1': - resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} + '@typescript-eslint/parser@8.45.0': + resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/project-service@8.44.1': - resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} + '@typescript-eslint/project-service@8.45.0': + resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.2 - '@typescript-eslint/scope-manager@8.44.1': - resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} + '@typescript-eslint/scope-manager@8.45.0': + resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.44.1': - resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} + '@typescript-eslint/tsconfig-utils@8.45.0': + resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.1': - resolution: {integrity: sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==} + '@typescript-eslint/type-utils@8.45.0': + resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3583,100 +3594,104 @@ packages: resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.44.1': - resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} + '@typescript-eslint/types@8.45.0': + resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.45.0': + resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.2 - '@typescript-eslint/utils@8.44.1': - resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} + '@typescript-eslint/utils@8.45.0': + resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.2 - '@typescript-eslint/visitor-keys@8.44.1': - resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} + '@typescript-eslint/visitor-keys@8.45.0': + resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.19': - resolution: {integrity: sha512-VEWhj9Zs6qY2vzVpwY0uViPGxCPhiVo+g2WTLPNGa8avYz6sC8eiHZOJv3E22TKm/PaeSzclvSbMXiXP1bYuMA==} + '@verdaccio/auth@8.0.0-next-8.23': + resolution: {integrity: sha512-a2/ZeCxG0TiCZNhhtGI/SCO5+D060eY8UMJDHck+1dt1YtpwJprBDMmuj8L2xFsAMFMTwP6u2JmynvVUst8gjg==} 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.19': - resolution: {integrity: sha512-08Mizx0f88A11Wxpx8EiK+mju0KroiaIRGZhV5h5+jWEKG3qucwTFNqR+29vRlPaGw1VmCEQ0+Vuaqeh03MlAA==} - engines: {node: '>=18'} - - '@verdaccio/core@8.0.0-next-8.19': - resolution: {integrity: sha512-d/QzHToby2OTB5f4rw9koC0SidWvCkGPpvcQ/V8qh1ejoMtc/tO9OKe8lwUOxEvw31A2HaIBf0J4cFVIvrU31w==} + '@verdaccio/config@8.0.0-next-8.23': + resolution: {integrity: sha512-xHoks1T7ZjgVqHddzYt/VHLrOWV5IvzJEGAc7HavsBo4yJ2R+ubt+I3V1ariRuSmIEaZ55FS/9AIWomxlWWyXQ==} engines: {node: '>=18'} '@verdaccio/core@8.0.0-next-8.21': resolution: {integrity: sha512-n3Y8cqf84cwXxUUdTTfEJc8fV55PONPKijCt2YaC0jilb5qp1ieB3d4brqTOdCdXuwkmnG2uLCiGpUd/RuSW0Q==} engines: {node: '>=18'} + '@verdaccio/core@8.0.0-next-8.23': + resolution: {integrity: sha512-ySMz9LoRylremqSpe1ryNClExkIwtuqHrIEj82gZWhhaYsaydCPSXNf6ZIUq32S71Zq3I5IKW0UAZRaM5/uCfw==} + engines: {node: '>=18'} + '@verdaccio/file-locking@10.3.1': resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==} engines: {node: '>=12'} - '@verdaccio/file-locking@13.0.0-next-8.4': - resolution: {integrity: sha512-LzW8V7O65ZGvBbeK43JfHBjoRch3vopBx/HDnOwpA++XrfDTFt/e9Omk28Gu7wY/4BSunJGHMCIrs2EzYc9IVQ==} + '@verdaccio/file-locking@13.0.0-next-8.6': + resolution: {integrity: sha512-F6xQWvsZnEyGjugrYfe+D/ChSVudXmBFWi8xuTIX6PAdp7dk9x9biOGQFW8O3GSAK8UhJ6WlRisQKJeYRa6vWQ==} engines: {node: '>=18'} - '@verdaccio/loaders@8.0.0-next-8.9': - resolution: {integrity: sha512-y0EIx+jiJGnln7to0ILUsUdAZvpsZTFPF7toJ/VPJlyRZmYYCbNE2j+VK9GLZu8jPZy+H+GdEBF89QdAv6P99A==} + '@verdaccio/hooks@8.0.0-next-8.23': + resolution: {integrity: sha512-E18AWmjys990s94COG6AmJ2clp+YCYUqx6ZticLMG2hK72BmveSKBDmvaZvl81Jci943gVPPT0j9eapK6JIu8A==} engines: {node: '>=18'} - '@verdaccio/local-storage-legacy@11.0.2': - resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} - engines: {node: '>=12'} + '@verdaccio/loaders@8.0.0-next-8.13': + resolution: {integrity: sha512-AXZ+A8WgLjSuRZ3tUlRhpITTWdF7B/mQDPQDZFjSmHKg4WBvOSfb04rE+IzdC49ARFQbLcCs/6uZ/jO4lkm9kA==} + engines: {node: '>=18'} + + '@verdaccio/local-storage-legacy@11.1.1': + resolution: {integrity: sha512-P6ahH2W6/KqfJFKP+Eid7P134FHDLNvHa+i8KVgRVBeo2/IXb6FEANpM1mCVNvPANu0LCAmNJBOXweoUKViaoA==} + engines: {node: '>=18'} - '@verdaccio/logger-commons@8.0.0-next-8.19': - resolution: {integrity: sha512-4Zl5+JyPMC4Kiu9f93uzN9312vg3eh1BeOx0qGGXksJTPSebS+O8HG2530ApjamSkApOHvGs5x3GEsEKza9WOA==} + '@verdaccio/logger-commons@8.0.0-next-8.23': + resolution: {integrity: sha512-Ddcy00R7UlKfqQ0X9cZgNE7p7oKUPSCIMyuI2u8kT0ATxwFIYEBU+WXDH+1UzeqiQU2rnHoAGvYqkKGsN3vokA==} engines: {node: '>=18'} - '@verdaccio/logger-prettify@8.0.0-next-8.3': - resolution: {integrity: sha512-mehQMpCtUbmW5dHpUwvi6hSYBdEXZjmDzI76hGacYKEKBwJk5aVXmrdYbYVyWtYlmegaxjLRMmA/iebXDEggYA==} + '@verdaccio/logger-prettify@8.0.0-next-8.4': + resolution: {integrity: sha512-gjI/JW29fyalutn/X1PQ0iNuGvzeVWKXRmnLa7gXVKhdi4p37l/j7YZ7n44XVbbiLIKAK0pbavEg9Yr66QrYaA==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.19': - resolution: {integrity: sha512-rCZ4eUYJhCytezVeihYSs5Ct17UJvhCnQ4dAyuO/+JSeKY1Fpxgl+es8F6PU+o6iIVeN5qfFh55llJ2LwZ4gjg==} + '@verdaccio/logger@8.0.0-next-8.23': + resolution: {integrity: sha512-eWiv//xyWgFjDXmBIoq1cgdNMJZBuEVo9NfRmUN3vnqecFL2m6jIyERC9J9G8Z/t91LQZfOBiEL9nWG0GC3/Rw==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.19': - resolution: {integrity: sha512-KpfvMNvztaHK+6YrK3uhu6DbzwkQQnxtmNuesCwTQnMNmunwvMBCuwvNTvi1wip1GrmP8At4r3NSSz9ttPcHEQ==} + '@verdaccio/middleware@8.0.0-next-8.23': + resolution: {integrity: sha512-4N+VNaZn3F0tpZdNhljJqL8cjNaN/ver+sXv45pienaMddYquk1oiG657f4fouj6EioZDHc9OLmU44Tuk/GNEQ==} engines: {node: '>=18'} '@verdaccio/search-indexer@8.0.0-next-8.5': resolution: {integrity: sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.11': - resolution: {integrity: sha512-mq5ZHB8a7JRMrbLATCZFVSUo0EtnsD9k7OZwEgdYEjzRYx3dQm93lY1smBAfluPfrcTeHRJY4W76Fdy/Or5JmA==} + '@verdaccio/signature@8.0.0-next-8.15': + resolution: {integrity: sha512-ZfaaptfNRjMqtTxkCJG+8eXcMD28RIRFvJHRd1FQ1vE8oKQ828ReVDezVu1baPh3hgHXXyy1faxG8GKKQZ7RSw==} 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.19': - resolution: {integrity: sha512-BVdPcZj2EtneRY0HKqQTG02gF4q1YdxUqw+ZbOMdWRRFqNkCG/5PaaNhP/xh3UFk/VpNqmv4/OwyTv68c9186g==} + '@verdaccio/tarball@13.0.0-next-8.23': + resolution: {integrity: sha512-99pRfhj9yZMIogiMOzaJq4GTISDM2Pd29Zwycevx1pCJnnMmBKqrkgttwAuSOZMSYH+ccTqLWT7qkHUb2FBReA==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.19': - resolution: {integrity: sha512-grJ+8wqD+iE9cRHMQ9hYPj/IerW3pDELccoK6CLn1xYC+sunYVpnivkUv5HUmK6G0B64ptoYST1xFSjiiZXNKg==} + '@verdaccio/ui-theme@8.0.0-next-8.23': + resolution: {integrity: sha512-QJEWMCaYv8u5f50zP98najl8gp5CzaD7GZc4cQtGdRMGKYj/QBoK++qxs28/IiAWBpeKw3l2Wtr82c9jfj8arQ==} - '@verdaccio/url@13.0.0-next-8.19': - resolution: {integrity: sha512-QCtRu6gnE3FWh1CX11VdQfXDoNUYpiZm+767dUKkvo4LfEiKHrpIqq8ZeE37dOC5w9SBJdY1X6ddlIz8p4GTxA==} + '@verdaccio/url@13.0.0-next-8.23': + resolution: {integrity: sha512-dn6oha8FJZv54FVzDq0BtptrhH6brtntEzLN0IqtcuFstgSwnwUVNsZnZLl9Qg6Sw0jgekrrWMLmnetdgDUi3A==} engines: {node: '>=18'} - '@verdaccio/utils@8.1.0-next-8.19': - resolution: {integrity: sha512-mQoe1yUlYR4ujR65xVNAr4and102UNvAjlx6+IYyVPa7h3CZ0w5e8sRjlbYIXXL/qDI4RPVzfJVpquiwPkUCGg==} + '@verdaccio/utils@8.1.0-next-8.23': + resolution: {integrity: sha512-sgjJVs3BAKL0aW13gGcM1kMf2s0gLQgy2CJLbpta7D0A/CebBEnEEWgv4id2uVlTSw2XDXcEMKPUD4rPzVhKuw==} engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.1.0': @@ -3958,8 +3973,8 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.1.0: - resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} anymatch@3.1.3: @@ -4072,9 +4087,6 @@ packages: async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -4319,6 +4331,14 @@ packages: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} + cacheable-lookup@6.1.0: + resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.2: + resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -4453,6 +4473,9 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + clone@2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} @@ -4769,6 +4792,10 @@ packages: decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -4795,6 +4822,10 @@ packages: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -5007,8 +5038,8 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} + envinfo@7.15.0: + resolution: {integrity: sha512-chR+t7exF6y59kelhXw5I3849nTy7KIRO+ePdLMhCD+JRP/JvmkenDWP7QSFGlsHX+kxGxdDutOPrmj5j1HR6g==} engines: {node: '>=4'} hasBin: true @@ -5413,6 +5444,9 @@ packages: forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + form-data@2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} @@ -5613,6 +5647,10 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got-cjs@12.5.4: + resolution: {integrity: sha512-Uas6lAsP8bRCt5WXGMhjFf/qEHTrm4v4qxGR02rLG2kdG9qedctvlkdwXVcDJ7Cs84X+r4dPU7vdwGjCaspXug==} + engines: {node: '>=12'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5773,12 +5811,13 @@ packages: resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} engines: {node: '>=0.10'} - http-status-codes@2.2.0: - resolution: {integrity: sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==} - http-status-codes@2.3.0: resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + https-proxy-agent@2.2.4: resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} engines: {node: '>= 4.5.0'} @@ -6553,6 +6592,10 @@ packages: resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} engines: {node: '>=4'} + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -6682,6 +6725,14 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + mini-css-extract-plugin@2.9.4: resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} engines: {node: '>= 12.13.0'} @@ -6691,10 +6742,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@10.0.3: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} @@ -6920,6 +6967,10 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + npm-bundled@4.0.0: resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7129,6 +7180,10 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + p-event@4.2.0: resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} engines: {node: '>=8'} @@ -7321,8 +7376,8 @@ packages: pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.7.0: - resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==} + pino@9.9.5: + resolution: {integrity: sha512-d1s98p8/4TfYhsJ09r/Azt30aYELRi6NNnZtEbqFw6BoGsdPVf5lKNK3kUwH8BmJJfpTLNuicjUQjaMbd93dVg==} hasBin: true piscina@5.1.3: @@ -7337,10 +7392,6 @@ packages: resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} engines: {node: '>=18'} - pkginfo@0.4.1: - resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} - engines: {node: '>= 0.4.0'} - pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -7536,6 +7587,10 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + quicktype-core@23.2.6: resolution: {integrity: sha512-asfeSv7BKBNVb9WiYhFRBvBZHcRutPRBwJMxW0pefluK4kkKu4lv0IvZBwFKvw2XygLcL1Rl90zxWDHYgkwCmA==} @@ -7632,6 +7687,9 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -7656,6 +7714,9 @@ packages: resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} engines: {node: '>= 0.8.0'} + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -7693,8 +7754,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.40: - resolution: {integrity: sha512-VqEHbKpOgTPmQrZ4fVn4eshDQS/6g/fRpNE7cFSJY+eQLDZn4B9X61J6L+hnlt1u2uRI+pF7r1USs6S5fuWCvw==} + rolldown@1.0.0-beta.41: + resolution: {integrity: sha512-U+NPR0Bkg3wm61dteD2L4nAM1U9dtaqVrpDXwC36IKRHpEO/Ubpid4Nijpa2imPchcVNHfxVFwSSMJdwdGFUbg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8620,20 +8681,20 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.19: - resolution: {integrity: sha512-lF/5g4CwfhGzZIySeFYBCWXaBnIRQ02Q27gQ7OSS9KTQ9qnHXHbFrXjEAml2udQSNk6Z9jieNa5TufwgjR3Nyw==} + verdaccio-audit@13.0.0-next-8.23: + resolution: {integrity: sha512-ptBX/u3adJdsPPVqJnPacvMjTv2AgV26QlMawzHVk1kJwpY8u90cbElL6EIBHXyxyMvIqjA/78a56wAjqxI8Zw==} engines: {node: '>=18'} verdaccio-auth-memory@10.3.1: resolution: {integrity: sha512-3m4VH5lD3qdRkDvcvVzHP6YftcsRXgu3WZuspcrH0/76+ugI2wkVezgBDbu4WRwJqRvG0MEf8Zxoup9zVK5SVw==} engines: {node: '>=18'} - verdaccio-htpasswd@13.0.0-next-8.19: - resolution: {integrity: sha512-XVkkJJKfXLVXC8E+7CLklnndkagZaFWXhGbYIxFYRJ+0bCff0VgUfmyXpwWJ9ADdOnMSqvUPFwMsx4LAhGxFvg==} + verdaccio-htpasswd@13.0.0-next-8.23: + resolution: {integrity: sha512-90tWLaqamVLvrfEBmbYhMt5B5ZMQ7uFHvz70uQMw4pYSI1oIYD5qTOG9gGu0lLn9XapRACAfNaMG14kfxcfJMw==} engines: {node: '>=18'} - verdaccio@6.1.6: - resolution: {integrity: sha512-zUMMKW0hjtOaLIm1cY9AqA0bMjvuGtKJVolzXQacIW9PHTnTjcsWF2+sbNLBhVrHwo+FJ1DzdNVaTWXOBWZgiQ==} + verdaccio@6.2.0: + resolution: {integrity: sha512-meBmKwRD1CQU4oGVoAG3NnwldHC1t76rD0cx/fmwzE+R7NZnrUaB+OUvPwPZIvR7dvpdIbxrniO1svQ/IPoIug==} engines: {node: '>=18'} hasBin: true @@ -8802,8 +8863,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.101.3: - resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} + webpack@5.102.0: + resolution: {integrity: sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -11274,7 +11335,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.92.0': {} + '@oxc-project/types@0.93.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11397,51 +11458,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.40': + '@rolldown/binding-android-arm64@1.0.0-beta.41': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.40': + '@rolldown/binding-darwin-arm64@1.0.0-beta.41': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.40': + '@rolldown/binding-darwin-x64@1.0.0-beta.41': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.40': + '@rolldown/binding-freebsd-x64@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.40': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.40': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.40': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.40': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.40': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.40': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.40': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': dependencies: '@napi-rs/wasm-runtime': 1.0.5 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.40': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.40': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.40': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': optional: true - '@rolldown/pluginutils@1.0.0-beta.40': {} + '@rolldown/pluginutils@1.0.0-beta.41': {} '@rollup/plugin-alias@5.1.1(rollup@4.52.3)': optionalDependencies: @@ -11607,6 +11668,8 @@ snapshots: '@sigstore/core': 3.0.0 '@sigstore/protobuf-specs': 0.5.0 + '@sindresorhus/is@4.6.0': {} + '@socket.io/component-emitter@3.1.2': {} '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))': @@ -11619,6 +11682,10 @@ snapshots: estraverse: 5.3.0 picomatch: 4.0.3 + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + '@tootallnate/once@2.0.0': {} '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -11847,7 +11914,7 @@ snapshots: '@types/loader-utils@3.0.0(esbuild@0.25.10)': dependencies: '@types/node': 22.18.6 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) transitivePeerDependencies: - '@swc/core' - esbuild @@ -11925,6 +11992,10 @@ snapshots: '@types/resolve@1.20.6': {} + '@types/responselike@1.0.0': + dependencies: + '@types/node': 22.18.6 + '@types/retry@0.12.2': {} '@types/selenium-webdriver@3.0.26': {} @@ -11989,14 +12060,14 @@ snapshots: '@types/node': 22.18.6 optional: true - '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.45.0 eslint: 9.36.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 @@ -12006,41 +12077,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)': + '@typescript-eslint/project-service@8.45.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.44.1': + '@typescript-eslint/scope-manager@8.45.0': dependencies: - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 - '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) - '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) debug: 4.4.3(supports-color@10.2.2) eslint: 9.36.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.9.2) @@ -12050,12 +12121,14 @@ snapshots: '@typescript-eslint/types@8.44.1': {} - '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)': + '@typescript-eslint/types@8.45.0': {} + + '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2) - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/visitor-keys': 8.44.1 + '@typescript-eslint/project-service': 8.45.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2) + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12066,59 +12139,54 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) - '@typescript-eslint/scope-manager': 8.44.1 - '@typescript-eslint/types': 8.44.1 - '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.45.0 + '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) eslint: 9.36.0(jiti@2.6.0) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.44.1': + '@typescript-eslint/visitor-keys@8.45.0': dependencies: - '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/types': 8.45.0 eslint-visitor-keys: 4.2.1 - '@verdaccio/auth@8.0.0-next-8.19': + '@verdaccio/auth@8.0.0-next-8.23': dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/loaders': 8.0.0-next-8.9 - '@verdaccio/signature': 8.0.0-next-8.11 - debug: 4.4.1 + '@verdaccio/config': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/loaders': 8.0.0-next-8.13 + '@verdaccio/signature': 8.0.0-next-8.15 + debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.19 + verdaccio-htpasswd: 13.0.0-next-8.23 transitivePeerDependencies: - supports-color - '@verdaccio/commons-api@10.2.0': - dependencies: - http-errors: 2.0.0 - http-status-codes: 2.2.0 - - '@verdaccio/config@8.0.0-next-8.19': + '@verdaccio/config@8.0.0-next-8.23': dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 + '@verdaccio/core': 8.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) js-yaml: 4.1.0 lodash: 4.17.21 minimatch: 7.4.6 transitivePeerDependencies: - supports-color - '@verdaccio/core@8.0.0-next-8.19': + '@verdaccio/core@8.0.0-next-8.21': dependencies: ajv: 8.17.1 http-errors: 2.0.0 http-status-codes: 2.3.0 - minimatch: 10.0.1 + minimatch: 7.4.6 process-warning: 1.0.0 semver: 7.7.2 - '@verdaccio/core@8.0.0-next-8.21': + '@verdaccio/core@8.0.0-next-8.23': dependencies: ajv: 8.17.1 http-errors: 2.0.0 @@ -12131,41 +12199,51 @@ snapshots: dependencies: lockfile: 1.0.4 - '@verdaccio/file-locking@13.0.0-next-8.4': + '@verdaccio/file-locking@13.0.0-next-8.6': dependencies: lockfile: 1.0.4 - '@verdaccio/loaders@8.0.0-next-8.9': + '@verdaccio/hooks@8.0.0-next-8.23': dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/logger': 8.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) + got-cjs: 12.5.4 + handlebars: 4.7.8 + transitivePeerDependencies: + - supports-color + + '@verdaccio/loaders@8.0.0-next-8.13': + dependencies: + '@verdaccio/core': 8.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 transitivePeerDependencies: - supports-color - '@verdaccio/local-storage-legacy@11.0.2': + '@verdaccio/local-storage-legacy@11.1.1': dependencies: - '@verdaccio/commons-api': 10.2.0 + '@verdaccio/core': 8.0.0-next-8.21 '@verdaccio/file-locking': 10.3.1 '@verdaccio/streams': 10.2.1 - async: 3.2.4 - debug: 4.3.4 + async: 3.2.6 + debug: 4.4.1 lodash: 4.17.21 lowdb: 1.0.0 mkdirp: 1.0.4 transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.19': + '@verdaccio/logger-commons@8.0.0-next-8.23': dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/logger-prettify': 8.0.0-next-8.3 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/logger-prettify': 8.0.0-next-8.4 colorette: 2.0.20 - debug: 4.4.1 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@verdaccio/logger-prettify@8.0.0-next-8.3': + '@verdaccio/logger-prettify@8.0.0-next-8.4': dependencies: colorette: 2.0.20 dayjs: 1.11.13 @@ -12174,19 +12252,19 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.19': + '@verdaccio/logger@8.0.0-next-8.23': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.19 - pino: 9.7.0 + '@verdaccio/logger-commons': 8.0.0-next-8.23 + pino: 9.9.5 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.19': + '@verdaccio/middleware@8.0.0-next-8.23': dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/url': 13.0.0-next-8.19 - debug: 4.4.1 + '@verdaccio/config': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/url': 13.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) express: 4.21.2 express-rate-limit: 5.5.1 lodash: 4.17.21 @@ -12197,42 +12275,42 @@ snapshots: '@verdaccio/search-indexer@8.0.0-next-8.5': {} - '@verdaccio/signature@8.0.0-next-8.11': + '@verdaccio/signature@8.0.0-next-8.15': dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 + '@verdaccio/config': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) jsonwebtoken: 9.0.2 transitivePeerDependencies: - supports-color '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.19': + '@verdaccio/tarball@13.0.0-next-8.23': dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/url': 13.0.0-next-8.19 - debug: 4.4.1 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/url': 13.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) gunzip-maybe: 1.4.2 tar-stream: 3.1.7 transitivePeerDependencies: - react-native-b4a - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.19': {} + '@verdaccio/ui-theme@8.0.0-next-8.23': {} - '@verdaccio/url@13.0.0-next-8.19': + '@verdaccio/url@13.0.0-next-8.23': dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - debug: 4.4.1 + '@verdaccio/core': 8.0.0-next-8.23 + debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 validator: 13.12.0 transitivePeerDependencies: - supports-color - '@verdaccio/utils@8.1.0-next-8.19': + '@verdaccio/utils@8.1.0-next-8.23': dependencies: - '@verdaccio/core': 8.0.0-next-8.19 + '@verdaccio/core': 8.0.0-next-8.23 lodash: 4.17.21 minimatch: 7.4.6 @@ -12679,7 +12757,7 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.1.0: {} + ansis@4.2.0: {} anymatch@3.1.3: dependencies: @@ -12792,8 +12870,6 @@ snapshots: dependencies: lodash: 4.17.21 - async@3.2.4: {} - async@3.2.6: {} asynckit@0.4.0: {} @@ -12820,11 +12896,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.101.3(esbuild@0.25.10)): + babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.0(esbuild@0.25.10)): dependencies: '@babel/core': 7.28.4 find-up: 5.0.0 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): dependencies: @@ -13129,6 +13205,18 @@ snapshots: mime-types: 2.1.35 ylru: 1.4.0 + cacheable-lookup@6.1.0: {} + + cacheable-request@7.0.2: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -13287,6 +13375,10 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + clone@2.1.2: {} co-body@6.2.0: @@ -13416,14 +13508,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.101.3(esbuild@0.25.10)): + copy-webpack-plugin@13.0.1(webpack@5.102.0(esbuild@0.25.10)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) core-js-compat@3.45.1: dependencies: @@ -13467,7 +13559,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.101.3(esbuild@0.25.10)): + css-loader@7.1.2(webpack@5.102.0(esbuild@0.25.10)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13478,7 +13570,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) css-select@6.0.0: dependencies: @@ -13580,6 +13672,10 @@ snapshots: decimal.js@10.6.0: {} + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deep-eql@5.0.2: {} deep-equal@1.0.1: {} @@ -13599,6 +13695,8 @@ snapshots: dependencies: execa: 5.1.1 + defer-to-connect@2.0.1: {} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -13819,7 +13917,7 @@ snapshots: env-paths@2.2.1: {} - envinfo@7.14.0: {} + envinfo@7.15.0: {} environment@1.1.0: {} @@ -13985,11 +14083,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -13999,7 +14097,7 @@ snapshots: dependencies: eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14010,7 +14108,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14022,7 +14120,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14230,7 +14328,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14427,6 +14525,8 @@ snapshots: forever-agent@0.6.1: {} + form-data-encoder@1.7.2: {} + form-data@2.3.3: dependencies: asynckit: 0.4.0 @@ -14701,6 +14801,21 @@ snapshots: gopd@1.2.0: {} + got-cjs@12.5.4: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/responselike': 1.0.0 + cacheable-lookup: 6.1.0 + cacheable-request: 7.0.2 + decompress-response: 6.0.0 + form-data-encoder: 1.7.2 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -14903,10 +15018,13 @@ snapshots: jsprim: 2.0.2 sshpk: 1.18.0 - http-status-codes@2.2.0: {} - http-status-codes@2.3.0: {} + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + https-proxy-agent@2.2.4: dependencies: agent-base: 4.3.0 @@ -15601,11 +15719,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.1)(webpack@5.101.3(esbuild@0.25.10)): + less-loader@12.3.0(less@4.4.1)(webpack@5.102.0(esbuild@0.25.10)): dependencies: less: 4.4.1 optionalDependencies: - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) less@4.4.1: dependencies: @@ -15626,11 +15744,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.101.3(esbuild@0.25.10)): + license-webpack-plugin@4.0.2(webpack@5.102.0(esbuild@0.25.10)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) lie@3.3.0: dependencies: @@ -15763,6 +15881,8 @@ snapshots: pify: 3.0.0 steno: 0.4.4 + lowercase-keys@2.0.0: {} + lru-cache@10.4.3: {} lru-cache@11.2.2: {} @@ -15887,18 +16007,18 @@ snapshots: mimic-function@5.0.1: {} - mini-css-extract-plugin@2.9.4(webpack@5.101.3(esbuild@0.25.10)): + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + mini-css-extract-plugin@2.9.4(webpack@5.102.0(esbuild@0.25.10)): dependencies: schema-utils: 4.3.2 tapable: 2.2.3 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) minimalistic-assert@1.0.1: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.2 - minimatch@10.0.3: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -16124,6 +16244,8 @@ snapshots: normalize-range@0.1.2: {} + normalize-url@6.1.0: {} + npm-bundled@4.0.0: dependencies: npm-normalize-package-bin: 4.0.0 @@ -16294,6 +16416,8 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + p-cancelable@2.1.1: {} + p-event@4.2.0: dependencies: p-timeout: 3.2.0 @@ -16488,7 +16612,7 @@ snapshots: pino-std-serializers@7.0.0: {} - pino@9.7.0: + pino@9.9.5: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -16512,8 +16636,6 @@ snapshots: dependencies: find-up-simple: 1.0.1 - pkginfo@0.4.1: {} - pluralize@8.0.0: {} portfinder@1.0.38: @@ -16530,14 +16652,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(esbuild@0.25.10)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.102.0(esbuild@0.25.10)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.2) jiti: 2.6.0 postcss: 8.5.6 semver: 7.7.2 optionalDependencies: - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) transitivePeerDependencies: - typescript @@ -16750,6 +16872,8 @@ snapshots: quick-format-unescaped@4.0.4: {} + quick-lru@5.1.1: {} + quicktype-core@23.2.6(encoding@0.1.13): dependencies: '@glideapps/ts-necessities': 2.2.3 @@ -16905,6 +17029,8 @@ snapshots: requires-port@1.0.0: {} + resolve-alpn@1.2.1: {} + resolve-from@4.0.0: {} resolve-path@1.4.0: @@ -16935,6 +17061,10 @@ snapshots: transitivePeerDependencies: - supports-color + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -16968,26 +17098,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.40: + rolldown@1.0.0-beta.41: dependencies: - '@oxc-project/types': 0.92.0 - '@rolldown/pluginutils': 1.0.0-beta.40 - ansis: 4.1.0 + '@oxc-project/types': 0.93.0 + '@rolldown/pluginutils': 1.0.0-beta.41 + ansis: 4.2.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.40 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.40 - '@rolldown/binding-darwin-x64': 1.0.0-beta.40 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.40 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.40 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.40 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.40 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.40 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.40 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.40 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.40 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.40 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.40 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.40 + '@rolldown/binding-android-arm64': 1.0.0-beta.41 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.41 + '@rolldown/binding-darwin-x64': 1.0.0-beta.41 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.41 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.41 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.41 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.41 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.41 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.41 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.41 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.41 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.41 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.41 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.41 rollup-license-plugin@3.0.2: dependencies: @@ -17089,12 +17219,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.93.2)(webpack@5.101.3(esbuild@0.25.10)): + sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.0(esbuild@0.25.10)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.93.2 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) sass@1.93.2: dependencies: @@ -17408,11 +17538,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.101.3(esbuild@0.25.10)): + source-map-loader@5.0.0(webpack@5.102.0(esbuild@0.25.10)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) source-map-support@0.4.18: dependencies: @@ -17705,14 +17835,14 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.10)(webpack@5.101.3(esbuild@0.25.10)): + terser-webpack-plugin@5.3.14(esbuild@0.25.10)(webpack@5.102.0(esbuild@0.25.10)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) optionalDependencies: esbuild: 0.25.10 @@ -18069,10 +18199,10 @@ snapshots: vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.19(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.23(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 + '@verdaccio/config': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.23 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.2.2) node-fetch: 2.6.7(encoding@0.1.13) @@ -18087,52 +18217,50 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio-htpasswd@13.0.0-next-8.19: + verdaccio-htpasswd@13.0.0-next-8.23: dependencies: - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/file-locking': 13.0.0-next-8.4 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/file-locking': 13.0.0-next-8.6 apache-md5: 1.1.8 bcryptjs: 2.4.3 - debug: 4.4.1 + debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.0 unix-crypt-td-js: 1.1.4 transitivePeerDependencies: - supports-color - verdaccio@6.1.6(encoding@0.1.13): + verdaccio@6.2.0(encoding@0.1.13): dependencies: '@cypress/request': 3.0.9 - '@verdaccio/auth': 8.0.0-next-8.19 - '@verdaccio/config': 8.0.0-next-8.19 - '@verdaccio/core': 8.0.0-next-8.19 - '@verdaccio/loaders': 8.0.0-next-8.9 - '@verdaccio/local-storage-legacy': 11.0.2 - '@verdaccio/logger': 8.0.0-next-8.19 - '@verdaccio/middleware': 8.0.0-next-8.19 + '@verdaccio/auth': 8.0.0-next-8.23 + '@verdaccio/config': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/hooks': 8.0.0-next-8.23 + '@verdaccio/loaders': 8.0.0-next-8.13 + '@verdaccio/local-storage-legacy': 11.1.1 + '@verdaccio/logger': 8.0.0-next-8.23 + '@verdaccio/middleware': 8.0.0-next-8.23 '@verdaccio/search-indexer': 8.0.0-next-8.5 - '@verdaccio/signature': 8.0.0-next-8.11 + '@verdaccio/signature': 8.0.0-next-8.15 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.19 - '@verdaccio/ui-theme': 8.0.0-next-8.19 - '@verdaccio/url': 13.0.0-next-8.19 - '@verdaccio/utils': 8.1.0-next-8.19 + '@verdaccio/tarball': 13.0.0-next-8.23 + '@verdaccio/ui-theme': 8.0.0-next-8.23 + '@verdaccio/url': 13.0.0-next-8.23 + '@verdaccio/utils': 8.1.0-next-8.23 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 compression: 1.8.1 cors: 2.8.5 - debug: 4.4.1 - envinfo: 7.14.0 + debug: 4.4.3(supports-color@10.2.2) + envinfo: 7.15.0 express: 4.21.2 - handlebars: 4.7.8 lodash: 4.17.21 lru-cache: 7.18.3 mime: 3.0.0 - mkdirp: 1.0.4 - pkginfo: 0.4.1 semver: 7.7.2 - verdaccio-audit: 13.0.0-next-8.19(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.19 + verdaccio-audit: 13.0.0-next-8.23(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.23 transitivePeerDependencies: - encoding - react-native-b4a @@ -18274,7 +18402,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.101.3(esbuild@0.25.10)): + webpack-dev-middleware@7.4.5(webpack@5.102.0(esbuild@0.25.10)): dependencies: colorette: 2.0.20 memfs: 4.47.0 @@ -18283,9 +18411,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.101.3(esbuild@0.25.10)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.0(esbuild@0.25.10)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18313,10 +18441,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.101.3(esbuild@0.25.10)) + webpack-dev-middleware: 7.4.5(webpack@5.102.0(esbuild@0.25.10)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) transitivePeerDependencies: - bufferutil - debug @@ -18331,12 +18459,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.101.3(esbuild@0.25.10)): + webpack-subresource-integrity@5.1.0(webpack@5.102.0(esbuild@0.25.10)): dependencies: typed-assert: 1.0.9 - webpack: 5.101.3(esbuild@0.25.10) + webpack: 5.102.0(esbuild@0.25.10) - webpack@5.101.3(esbuild@0.25.10): + webpack@5.102.0(esbuild@0.25.10): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18360,7 +18488,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.3 - terser-webpack-plugin: 5.3.14(esbuild@0.25.10)(webpack@5.101.3(esbuild@0.25.10)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.10)(webpack@5.102.0(esbuild@0.25.10)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From bb518da92d171c25a5c8315cc973d478ef64715b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 1 Oct 2025 05:05:11 +0000 Subject: [PATCH 1534/2162] build: update ossf/scorecard-action action to v2.4.3 See associated pull request for more information. --- .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 4b979ef1e3d4..6588cb8dec0b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -30,7 +30,7 @@ jobs: persist-credentials: false - name: 'Run analysis' - uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 + uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 with: results_file: results.sarif results_format: sarif From 68b7d482612a3cce7695939c7b9c85de6d2b9920 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 1 Oct 2025 12:46:41 +0000 Subject: [PATCH 1535/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 0daa29877f7c..921f2874f944 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -4,8 +4,8 @@ module( name = "angular_cli", ) -bazel_dep(name = "yq.bzl", version = "0.2.0") -bazel_dep(name = "rules_nodejs", version = "6.5.0") +bazel_dep(name = "yq.bzl", version = "0.3.1") +bazel_dep(name = "rules_nodejs", version = "6.5.2") bazel_dep(name = "aspect_rules_js", version = "2.6.0") bazel_dep(name = "aspect_rules_ts", version = "3.7.0") bazel_dep(name = "rules_pkg", version = "0.8.1") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index f53f141226fb..6341292aeaf4 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -45,6 +45,8 @@ "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "407729e232f611c3270005b016b437005daa7b1505826798ea584169a476e878", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/source.json": "72bfbe19a3936675719157798de64631e9ac54c2b41f13b544b821d094f4840a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", @@ -145,7 +147,8 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.2.0/MODULE.bazel": "ec27907f55eb34705adb4e8257952162a2d4c3ed0f0b3b4c3c1aad1fac7be35e", "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", - "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/source.json": "ac075bc5babebc25a0adc88ee885f2c8d8520d141f6e139ba9dfa0eedb5be908", + "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", + "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/source.json": "6a6ca0940914d55c550d1417cad13a56c9900e23f651a762d8ccc5a64adcf661", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/MODULE.bazel": "7e9e7b5b26bd7ff012dfe63930db2f0176ddcd25e44a858fc72d63e995b6aab9", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/source.json": "15dd7e13dc303f7fcde2b55300bcb8de5c0dd08a7a7269749cbbaa0fb1dfbe16", @@ -178,7 +181,8 @@ "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", "https://bcr.bazel.build/modules/yq.bzl/0.2.0/MODULE.bazel": "6f3a675677db8885be4d607fde14cc51829715e3a879fb016eb9bf336786ce6d", - "https://bcr.bazel.build/modules/yq.bzl/0.2.0/source.json": "ff33c6f75da6848caade494240b6824cf00e7e6b8892100f4253984e1dfae2af", + "https://bcr.bazel.build/modules/yq.bzl/0.3.1/MODULE.bazel": "9bcb7151b3cd4681b89d350530eaf7b45e32a44dda94843b8932b0cb1cd4594a", + "https://bcr.bazel.build/modules/yq.bzl/0.3.1/source.json": "f0b0f204a2a6b0e34b4c9541efe8c04f2ef1af65948daa784eccea738b21dbd2", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", @@ -1122,8 +1126,8 @@ }, "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { - "bzlTransitiveDigest": "hdICB1K7PX7oWtO8oksVTBDNt6xxiNERpcO4Yxoa0Gc=", - "usagesDigest": "379dqhYYyCx8bF/MzKdH1s8HbACwSZ3jgU3ppJfcJEc=", + "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", + "usagesDigest": "dQPwfMGn82Q5590JUruHiQBsYUxIunUFb+wBb/czUI4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -2345,7 +2349,7 @@ "@@yq.bzl~//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", - "usagesDigest": "aPwG8k9scmFMv3dtS84dXq/OIbovpOzBLa/ZDS1QvlQ=", + "usagesDigest": "X+3wxc/+KjF0tyJJ5qca2U/BgoeAEmAD0kuz8iBcX+0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 58d101d5e78cf4c158dbaf52103639d56b84f9ed Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:20:03 -0400 Subject: [PATCH 1536/2162] feat(@angular/cli): add `--json` output to `ng version` This commit introduces a `--json` option to the `ng version` command. When this flag is used, the command will output all version information in a machine-readable JSON format. The JSON structure is designed to be a stable, well-organized public API, with information grouped into `cli`, `system`, and `packages` categories. This is useful for scripting, tool integration, and creating detailed, parsable bug reports. The standard, human-readable output is still the default. --- .../angular/cli/src/commands/version/cli.ts | 32 +++++++---- .../cli/src/commands/version/version-info.ts | 56 +++++++++++++------ 2 files changed, 59 insertions(+), 29 deletions(-) diff --git a/packages/angular/cli/src/commands/version/cli.ts b/packages/angular/cli/src/commands/version/cli.ts index 135358a4b7ba..9ba53a902ebd 100644 --- a/packages/angular/cli/src/commands/version/cli.ts +++ b/packages/angular/cli/src/commands/version/cli.ts @@ -45,24 +45,34 @@ export default class VersionCommandModule * @returns The configured `yargs` instance. */ builder(localYargs: Argv): Argv { - return localYargs; + return localYargs.option('json', { + describe: 'Outputs version information in JSON format.', + type: 'boolean', + }); } /** * The main execution logic for the `ng version` command. */ - async run(): Promise { + async run(options: { json?: boolean }): Promise { const { logger } = this.context; const versionInfo = gatherVersionInfo(this.context); + + if (options.json) { + // eslint-disable-next-line no-console + console.log(JSON.stringify(versionInfo, null, 2)); + + return; + } + const { - ngCliVersion, - nodeVersion, - unsupportedNodeVersion, - packageManagerName, - packageManagerVersion, - os, - arch, - versions, + cli: { version: ngCliVersion }, + system: { + node: { version: nodeVersion, unsupported: unsupportedNodeVersion }, + os: { platform: os, architecture: arch }, + packageManager: { name: packageManagerName, version: packageManagerVersion }, + }, + packages, } = versionInfo; const headerInfo = [ @@ -87,7 +97,7 @@ export default class VersionCommandModule ) .join('\n'); - const packageTable = this.formatPackageTable(versions); + const packageTable = this.formatPackageTable(packages); logger.info([ASCII_ART, header, packageTable].join('\n\n')); diff --git a/packages/angular/cli/src/commands/version/version-info.ts b/packages/angular/cli/src/commands/version/version-info.ts index c59a3b5728af..1e8b6b557514 100644 --- a/packages/angular/cli/src/commands/version/version-info.ts +++ b/packages/angular/cli/src/commands/version/version-info.ts @@ -23,14 +23,24 @@ interface PartialPackageInfo { * An object containing all the version information that will be displayed by the command. */ export interface VersionInfo { - ngCliVersion: string; - versions: Record; - unsupportedNodeVersion: boolean; - nodeVersion: string; - packageManagerName: string; - packageManagerVersion: string | undefined; - os: string; - arch: string; + cli: { + version: string; + }; + system: { + node: { + version: string; + unsupported: boolean; + }; + os: { + platform: string; + architecture: string; + }; + packageManager: { + name: string; + version: string | undefined; + }; + }; + packages: Record; } /** @@ -81,22 +91,32 @@ export function gatherVersionInfo(context: { }), ); - const versions: Record = {}; + const packages: Record = {}; for (const name of packageNames) { if (PACKAGE_PATTERNS.some((p) => p.test(name))) { - versions[name] = getVersion(name, workspaceRequire); + packages[name] = getVersion(name, workspaceRequire); } } return { - ngCliVersion: VERSION.full, - versions, - unsupportedNodeVersion, - nodeVersion: process.versions.node, - packageManagerName: context.packageManager.name, - packageManagerVersion: context.packageManager.version, - os: process.platform, - arch: process.arch, + cli: { + version: VERSION.full, + }, + system: { + node: { + version: process.versions.node, + unsupported: unsupportedNodeVersion, + }, + os: { + platform: process.platform, + architecture: process.arch, + }, + packageManager: { + name: context.packageManager.name, + version: context.packageManager.version, + }, + }, + packages, }; } From c289f3b8d4116e085286b2d666553841624ed8f8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 1 Oct 2025 09:58:09 -0400 Subject: [PATCH 1537/2162] test: remove control characters before E2E stdout matching --- tests/legacy-cli/e2e/utils/process.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/legacy-cli/e2e/utils/process.ts b/tests/legacy-cli/e2e/utils/process.ts index 3cd6c77bc187..cb542ff1ea0f 100644 --- a/tests/legacy-cli/e2e/utils/process.ts +++ b/tests/legacy-cli/e2e/utils/process.ts @@ -5,6 +5,7 @@ import { concat, defer, EMPTY, from, lastValueFrom, catchError, repeat } from 'r import { getGlobalVariable, getGlobalVariablesEnv } from './env'; import treeKill from 'tree-kill'; import { delimiter, join, resolve } from 'node:path'; +import { stripVTControlCharacters } from 'node:util'; interface ExecOptions { silent?: boolean; @@ -236,14 +237,14 @@ export async function waitForAnyProcessOutputToMatch( childProcess.stdout!.on('data', (data: Buffer) => { stdout += data.toString(); - if (stdout.match(match)) { + if (stripVTControlCharacters(stdout).match(match)) { resolve({ stdout, stderr }); } }); childProcess.stderr!.on('data', (data: Buffer) => { stderr += data.toString(); - if (stderr.match(match)) { + if (stripVTControlCharacters(stderr).match(match)) { resolve({ stdout, stderr }); } }); From e155aac8778cce419faac5e351e2acece2944b47 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 1 Oct 2025 11:08:55 -0400 Subject: [PATCH 1538/2162] test: avoid forcing color on Windows Forcing the the use of color in the console can lead to inconsistent behavior between platforms and result in potentially confusing output on terminals that do not support color. --- scripts/windows-testing/parallel-executor.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/windows-testing/parallel-executor.mjs b/scripts/windows-testing/parallel-executor.mjs index 1f62bf03cca1..50660cff22df 100644 --- a/scripts/windows-testing/parallel-executor.mjs +++ b/scripts/windows-testing/parallel-executor.mjs @@ -30,7 +30,7 @@ async function main() { PATH: process.env.PATH, E2E_SHARD_TOTAL: process.env.E2E_SHARD_TOTAL, E2E_SHARD_INDEX: process.env.E2E_SHARD_INDEX, - FORCE_COLOR: '3', + FORCE_COLOR: '0', // Needed by `rules_js` BAZEL_BINDIR: '.', // Needed to run the E2E in a different temp path. From c885652759c8de47b66a6c18b9e6737e3c38ac11 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:08:57 -0400 Subject: [PATCH 1539/2162] test: directly disable color in cache-info E2E test --- .../e2e/tests/commands/cache/cache-info.ts | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts b/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts index 4e9e2f30c9d6..bad2df6c3bdc 100644 --- a/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts +++ b/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts @@ -1,37 +1,62 @@ import { execAndWaitForOutputToMatch } from '../../../utils/process'; import { updateJsonFile } from '../../../utils/project'; +const ENV_NO_COLOR = { + 'NO_COLOR': '1', +}; + export default async function () { const originalCIValue = process.env['CI']; try { // Should be enabled by default for local builds. await configureTest('0' /** envCI */); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); // Should be disabled by default for CI builds. await configureTest('1' /** envCI */, { enabled: true }); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); // Should be enabled by when environment is local and env is not CI. await configureTest('0' /** envCI */, { environment: 'local' }); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); // Should be disabled by when environment is local and env is CI. await configureTest('1' /** envCI */, { environment: 'local' }); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); // Effective status should be enabled when 'environment' is set to 'all' or 'ci'. await configureTest('1' /** envCI */, { environment: 'all' }); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); // Effective status should be enabled when 'environment' is set to 'ci' and run is in ci await configureTest('1' /** envCI */, { environment: 'ci' }); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Enabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); // Effective status should be disabled when 'enabled' is set to false await configureTest('1' /** envCI */, { environment: 'all', enabled: false }); - await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/); + await execAndWaitForOutputToMatch('ng', ['cache', 'info'], /Effective Status\s*: Disabled/, { + ...process.env, + ...ENV_NO_COLOR, + }); } finally { process.env['CI'] = originalCIValue; } From 77611807eaef5451807c5dad95232fe90481ec73 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:11:35 -0400 Subject: [PATCH 1540/2162] refactor(@angular/build): default tsConfig option in unit-test builder The unit-test builder is updated to streamline the initial configuration by intelligently defaulting the `tsConfig` option. If the `tsConfig` option is not provided in the project's configuration, the builder now checks for the existence of a `tsconfig.spec.json` file in the project's root. If found, it is used automatically. This removes the need for boilerplate `tsConfig` configuration in `angular.json` for the majority of projects. Additionally, a validation check has been added to ensure that if a `tsConfig` path is specified, the file must exist. An actionable error is thrown if it is not found, preventing downstream build failures. The builder's schema has been updated to reflect these changes, making the `tsConfig` option optional and documenting the new behavior. --- goldens/public-api/angular/build/index.api.md | 2 +- .../build/src/builders/unit-test/builder.ts | 5 ++- .../build/src/builders/unit-test/options.ts | 27 +++++++++++- .../unit-test/runners/karma/executor.ts | 2 +- .../unit-test/runners/vitest/build-options.ts | 11 +---- .../build/src/builders/unit-test/schema.json | 4 +- .../unit-test/tests/options/tsconfig_spec.ts | 43 +++++++++++-------- 7 files changed, 59 insertions(+), 35 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index c4e03409ba2b..dec81d544c4a 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -232,7 +232,7 @@ export type UnitTestBuilderOptions = { reporters?: SchemaReporter[]; runner: Runner; setupFiles?: string[]; - tsConfig: string; + tsConfig?: string; watch?: boolean; }; diff --git a/packages/angular/build/src/builders/unit-test/builder.ts b/packages/angular/build/src/builders/unit-test/builder.ts index 39872ade8dda..8471e4e9f29c 100644 --- a/packages/angular/build/src/builders/unit-test/builder.ts +++ b/packages/angular/build/src/builders/unit-test/builder.ts @@ -296,10 +296,13 @@ export async function* execute( ...buildTargetOptions, ...runnerBuildOptions, watch: normalizedOptions.watch, - tsConfig: normalizedOptions.tsConfig, progress: normalizedOptions.buildProgress ?? buildTargetOptions.progress, } satisfies ApplicationBuilderInternalOptions; + if (normalizedOptions.tsConfig) { + applicationBuildOptions.tsConfig = normalizedOptions.tsConfig; + } + const dumpDirectory = normalizedOptions.dumpVirtualFiles ? path.join(normalizedOptions.cacheOptions.path, 'unit-test', 'output-files') : undefined; diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 544ddd9f9d9c..7a2cea8c24c4 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -7,6 +7,7 @@ */ import { type BuilderContext, targetFromTargetString } from '@angular-devkit/architect'; +import { constants, promises as fs } from 'node:fs'; import path from 'node:path'; import { normalizeCacheOptions } from '../../utils/normalize-cache'; import { getProjectRootPaths } from '../../utils/project-metadata'; @@ -15,6 +16,16 @@ import type { Schema as UnitTestBuilderOptions } from './schema'; export type NormalizedUnitTestBuilderOptions = Awaited>; +async function exists(path: string): Promise { + try { + await fs.access(path, constants.F_OK); + + return true; + } catch { + return false; + } +} + function normalizeReporterOption( reporters: unknown[] | undefined, ): [string, Record][] | undefined { @@ -43,7 +54,21 @@ export async function normalizeOptions( const buildTargetSpecifier = options.buildTarget ?? `::development`; const buildTarget = targetFromTargetString(buildTargetSpecifier, projectName, 'build'); - const { tsConfig, runner, browsers, progress, filter } = options; + const { runner, browsers, progress, filter } = options; + + let tsConfig = options.tsConfig; + if (tsConfig) { + const fullTsConfigPath = path.join(workspaceRoot, tsConfig); + if (!(await exists(fullTsConfigPath))) { + throw new Error(`The specified tsConfig file '${tsConfig}' does not exist.`); + } + } else { + const tsconfigSpecPath = path.join(projectRoot, 'tsconfig.spec.json'); + if (await exists(tsconfigSpecPath)) { + // The application builder expects a path relative to the workspace root. + tsConfig = path.relative(workspaceRoot, tsconfigSpecPath); + } + } return { // Project/workspace information diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index 1e47dcc3f632..31f9e530fd77 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -39,7 +39,7 @@ export class KarmaExecutor implements TestExecutor { )) as unknown as ApplicationBuilderInternalOptions; const karmaOptions: KarmaBuilderOptions = { - tsConfig: unitTestOptions.tsConfig, + tsConfig: unitTestOptions.tsConfig ?? buildTargetOptions.tsConfig, polyfills: buildTargetOptions.polyfills, assets: buildTargetOptions.assets, scripts: buildTargetOptions.scripts, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index a179fc08cb36..99ad334c1708 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -63,15 +63,7 @@ export async function getVitestBuildOptions( options: NormalizedUnitTestBuilderOptions, baseBuildOptions: Partial, ): Promise { - const { - workspaceRoot, - projectSourceRoot, - include, - exclude = [], - watch, - tsConfig, - providersFile, - } = options; + const { workspaceRoot, projectSourceRoot, include, exclude = [], watch, providersFile } = options; // Find test files const testFiles = await findTests(include, exclude, workspaceRoot, projectSourceRoot); @@ -108,7 +100,6 @@ export async function getVitestBuildOptions( sourceMap: { scripts: true, vendor: false, styles: false }, outputHashing: adjustOutputHashing(baseBuildOptions.outputHashing), optimization: false, - tsConfig, entryPoints, externalDependencies: ['vitest', '@vitest/browser/context'], }; diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index e410d6ac6031..6e79e03db744 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -11,7 +11,7 @@ }, "tsConfig": { "type": "string", - "description": "The path to the TypeScript configuration file, relative to the workspace root." + "description": "The path to the TypeScript configuration file, relative to the workspace root. Defaults to `tsconfig.spec.json` in the project root if it exists. If not specified and the default does not exist, the `tsConfig` from the specified `buildTarget` will be used." }, "runner": { "type": "string", @@ -188,5 +188,5 @@ } }, "additionalProperties": false, - "required": ["buildTarget", "tsConfig", "runner"] + "required": ["buildTarget", "runner"] } diff --git a/packages/angular/build/src/builders/unit-test/tests/options/tsconfig_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/tsconfig_spec.ts index 85723f71c4bf..101f07c1d12e 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/tsconfig_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/tsconfig_spec.ts @@ -12,43 +12,48 @@ import { describeBuilder, UNIT_TEST_BUILDER_INFO, setupApplicationTarget, + expectLog, } from '../setup'; describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { - xdescribe('Option: "tsConfig"', () => { + describe('Option: "tsConfig"', () => { beforeEach(async () => { setupApplicationTarget(harness); }); - it('should fail when tsConfig is not provided', async () => { + it('should use "tsconfig.spec.json" by default when it exists', async () => { const { tsConfig, ...rest } = BASE_OPTIONS; - harness.useTarget('test', rest as any); + harness.useTarget('test', rest); - await expectAsync(harness.executeOnce()).toBeRejectedWithError(/"tsConfig" is required/); + // Create tsconfig.spec.json + await harness.writeFile( + 'tsconfig.spec.json', + `{ "extends": "./tsconfig.json", "compilerOptions": { "types": ["jasmine"] }, "include": ["src/**/*.ts"] }`, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + // TODO: Add expectation that the file was used. }); - it('should fail when tsConfig is empty', async () => { - harness.useTarget('test', { - ...BASE_OPTIONS, - tsConfig: '', - }); + it('should use build target tsConfig when "tsconfig.spec.json" does not exist', async () => { + const { tsConfig, ...rest } = BASE_OPTIONS; + harness.useTarget('test', rest); - await expectAsync(harness.executeOnce()).toBeRejectedWithError( - /must NOT have fewer than 1 characters/, - ); + // The build target tsconfig is not setup to build the tests and should fail + const { result } = await harness.executeOnce(); + expect(result?.success).toBeFalse(); }); - it('should fail when tsConfig does not exist', async () => { + it('should fail when user specified tsConfig does not exist', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - tsConfig: 'src/tsconfig.spec.json', + tsConfig: 'random/tsconfig.spec.json', }); - const { result, error } = await harness.executeOnce({ outputLogsOnFailure: false }); - expect(result).toBeUndefined(); - expect(error?.message).toMatch( - `The specified tsConfig file "src/tsconfig.spec.json" does not exist.`, - ); + const { result, logs } = await harness.executeOnce({ outputLogsOnFailure: false }); + expect(result?.success).toBeFalse(); + expectLog(logs, `The specified tsConfig file 'random/tsconfig.spec.json' does not exist.`); }); }); }); From 3b7dabbf1df9b2b6ca9ffc6c038abb6e40b6df2b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 1 Oct 2025 18:55:31 -0400 Subject: [PATCH 1541/2162] feat(@angular/build): add advanced coverage options to unit-test builder The `unit-test` builder is enhanced with several new coverage features to provide a more robust and configurable testing experience. This change refactors the existing `codeCoverage` options to a more concise `coverage` prefix for a cleaner API. Since the builder is experimental, this is the ideal time for such an improvement. The following new options have been added: - `coverageAll`: Includes all files matching `coverageInclude` in the report, ensuring untested files are visible. - `coverageInclude`: Specifies which files to include in the report, providing more accurate metrics. - `coverageThresholds`: Allows setting minimum coverage percentages for statements, branches, functions, and lines. If thresholds are not met, the builder will exit with an error, enabling automated quality gates in CI. - `coverageWatermarks`: Allows customization of coverage watermarks for the HTML reporter. The Karma runner has been updated to support the `thresholds` and `watermarks` options, providing a better experience for users on that runner. Warnings remain for options that are still unsupported. --- goldens/public-api/angular/build/index.api.md | 10 ++- .../build/src/builders/unit-test/options.ts | 17 +++- .../unit-test/runners/karma/executor.ts | 33 ++++++- .../builders/unit-test/runners/karma/index.ts | 2 +- .../unit-test/runners/vitest/executor.ts | 19 ++-- .../unit-test/runners/vitest/index.ts | 2 +- .../build/src/builders/unit-test/schema.json | 86 +++++++++++++++++-- .../options/code-coverage-exclude_spec.ts | 8 +- .../options/code-coverage-reporters_spec.ts | 10 +-- .../tests/options/code-coverage_spec.ts | 10 +-- 10 files changed, 159 insertions(+), 38 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index dec81d544c4a..149471337945 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -217,9 +217,13 @@ export type NgPackagrBuilderOptions = { export type UnitTestBuilderOptions = { browsers?: string[]; buildTarget: string; - codeCoverage?: boolean; - codeCoverageExclude?: string[]; - codeCoverageReporters?: SchemaCodeCoverageReporter[]; + coverage?: boolean; + coverageAll?: boolean; + coverageExclude?: string[]; + coverageInclude?: string[]; + coverageReporters?: SchemaCoverageReporter[]; + coverageThresholds?: CoverageThresholds; + coverageWatermarks?: CoverageWatermarks; debug?: boolean; dumpVirtualFiles?: boolean; exclude?: string[]; diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 7a2cea8c24c4..9be37f055237 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -82,10 +82,21 @@ export async function normalizeOptions( exclude: options.exclude, filter, runnerName: runner, - codeCoverage: options.codeCoverage + coverage: options.coverage ? { - exclude: options.codeCoverageExclude, - reporters: normalizeReporterOption(options.codeCoverageReporters), + all: options.coverageAll, + exclude: options.coverageExclude, + include: options.coverageInclude, + reporters: normalizeReporterOption(options.coverageReporters), + thresholds: options.coverageThresholds, + // The schema generation tool doesn't support tuple types for items, but the schema validation + // does ensure that the array has exactly two numbers. + watermarks: options.coverageWatermarks as { + statements?: [number, number]; + branches?: [number, number]; + functions?: [number, number]; + lines?: [number, number]; + }, } : undefined, tsConfig, diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index 31f9e530fd77..d3b1abb98539 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -33,6 +33,18 @@ export class KarmaExecutor implements TestExecutor { ); } + if (unitTestOptions.coverage?.all) { + context.logger.warn( + 'The "karma" test runner does not support the "coverageAll" option. The option will be ignored.', + ); + } + + if (unitTestOptions.coverage?.include) { + context.logger.warn( + 'The "karma" test runner does not support the "coverageInclude" option. The option will be ignored.', + ); + } + const buildTargetOptions = (await context.validateOptions( await context.getTargetOptions(unitTestOptions.buildTarget), await context.getBuilderNameForTarget(unitTestOptions.buildTarget), @@ -57,8 +69,8 @@ export class KarmaExecutor implements TestExecutor { poll: buildTargetOptions.poll, preserveSymlinks: buildTargetOptions.preserveSymlinks, browsers: unitTestOptions.browsers?.join(','), - codeCoverage: !!unitTestOptions.codeCoverage, - codeCoverageExclude: unitTestOptions.codeCoverage?.exclude, + codeCoverage: !!unitTestOptions.coverage, + codeCoverageExclude: unitTestOptions.coverage?.exclude, fileReplacements: buildTargetOptions.fileReplacements, reporters: unitTestOptions.reporters?.map((reporter) => { // Karma only supports string reporters. @@ -92,6 +104,23 @@ export class KarmaExecutor implements TestExecutor { options.client.args.push('--grep', filter); } + // Add coverage options + if (unitTestOptions.coverage) { + const { thresholds, watermarks } = unitTestOptions.coverage; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const coverageReporter = ((options as any).coverageReporter ??= {}); + + if (thresholds) { + coverageReporter.check = thresholds.perFile + ? { each: thresholds } + : { global: thresholds }; + } + + if (watermarks) { + coverageReporter.watermarks = watermarks; + } + } + return options; }, } satisfies KarmaBuilderTransformsOptions; diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/index.ts b/packages/angular/build/src/builders/unit-test/runners/karma/index.ts index 4ff3c24db6d1..36eadb255c47 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/index.ts @@ -30,7 +30,7 @@ const KarmaTestRunner: TestRunner = { } } - if (options.codeCoverage) { + if (options.coverage) { checker.check('karma-coverage'); } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index e5ee60ef21b5..f880a9f7e1c8 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -126,8 +126,7 @@ export class VitestExecutor implements TestExecutor { } private async initializeVitest(): Promise { - const { codeCoverage, reporters, outputFile, workspaceRoot, browsers, debug, watch } = - this.options; + const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch } = this.options; let vitestNodeModule; try { vitestNodeModule = await loadEsmModule('vitest/node'); @@ -190,7 +189,7 @@ export class VitestExecutor implements TestExecutor { reporters: reporters ?? ['default'], outputFile, watch, - coverage: generateCoverageOption(codeCoverage, this.projectName), + coverage: generateCoverageOption(coverage, this.projectName), ...debugOptions, }, { @@ -206,10 +205,10 @@ export class VitestExecutor implements TestExecutor { } function generateCoverageOption( - codeCoverage: NormalizedUnitTestBuilderOptions['codeCoverage'], + coverage: NormalizedUnitTestBuilderOptions['coverage'], projectName: string, ): VitestCoverageOption { - if (!codeCoverage) { + if (!coverage) { return { enabled: false, }; @@ -217,12 +216,16 @@ function generateCoverageOption( return { enabled: true, + all: coverage.all, excludeAfterRemap: true, + include: coverage.include, reportsDirectory: toPosixPath(path.join('coverage', projectName)), + thresholds: coverage.thresholds, + watermarks: coverage.watermarks, // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures - ...(codeCoverage.exclude ? { exclude: codeCoverage.exclude } : {}), - ...(codeCoverage.reporters - ? ({ reporter: codeCoverage.reporters } satisfies VitestCoverageOption) + ...(coverage.exclude ? { exclude: coverage.exclude } : {}), + ...(coverage.reporters + ? ({ reporter: coverage.reporters } satisfies VitestCoverageOption) : {}), }; } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index 3e371dd7ebc3..564334ade78f 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -33,7 +33,7 @@ const VitestTestRunner: TestRunner = { checker.check('jsdom'); } - if (options.codeCoverage) { + if (options.coverage) { checker.check('@vitest/coverage-v8'); } diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 6e79e03db744..5ebc906329b4 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -54,21 +54,33 @@ "description": "Enables debugging mode for tests, allowing the use of the Node Inspector.", "default": false }, - "codeCoverage": { + "coverage": { "type": "boolean", - "description": "Enables code coverage reporting for tests.", + "description": "Enables coverage reporting for tests.", "default": false }, - "codeCoverageExclude": { + "coverageAll": { + "type": "boolean", + "description": "Includes all files that match the `coverageInclude` pattern in the coverage report, not just those touched by tests.", + "default": true + }, + "coverageInclude": { "type": "array", - "description": "Specifies glob patterns of files to exclude from the code coverage report.", + "description": "Specifies glob patterns of files to include in the coverage report.", "items": { "type": "string" } }, - "codeCoverageReporters": { + "coverageExclude": { "type": "array", - "description": "Specifies the reporters to use for code coverage results. Each reporter can be a string representing its name, or a tuple containing the name and an options object. Built-in reporters include 'html', 'lcov', 'lcovonly', 'text', 'text-summary', 'cobertura', 'json', and 'json-summary'.", + "description": "Specifies glob patterns of files to exclude from the coverage report.", + "items": { + "type": "string" + } + }, + "coverageReporters": { + "type": "array", + "description": "Specifies the reporters to use for coverage results. Each reporter can be a string representing its name, or a tuple containing the name and an options object. Built-in reporters include 'html', 'lcov', 'lcovonly', 'text', 'text-summary', 'cobertura', 'json', and 'json-summary'.", "items": { "oneOf": [ { @@ -108,6 +120,68 @@ ] } }, + "coverageThresholds": { + "type": "object", + "description": "Specifies minimum coverage thresholds that must be met. If thresholds are not met, the builder will exit with an error.", + "properties": { + "perFile": { + "type": "boolean", + "description": "When true, thresholds are enforced for each file individually." + }, + "statements": { + "type": "number", + "description": "Minimum percentage of statements covered." + }, + "branches": { + "type": "number", + "description": "Minimum percentage of branches covered." + }, + "functions": { + "type": "number", + "description": "Minimum percentage of functions covered." + }, + "lines": { + "type": "number", + "description": "Minimum percentage of lines covered." + } + }, + "additionalProperties": false + }, + "coverageWatermarks": { + "type": "object", + "description": "Specifies coverage watermarks for the HTML reporter. These determine the color coding for high, medium, and low coverage.", + "properties": { + "statements": { + "type": "array", + "description": "The high and low watermarks for statements coverage. `[low, high]`", + "items": { "type": "number" }, + "minItems": 2, + "maxItems": 2 + }, + "branches": { + "type": "array", + "description": "The high and low watermarks for branches coverage. `[low, high]`", + "items": { "type": "number" }, + "minItems": 2, + "maxItems": 2 + }, + "functions": { + "type": "array", + "description": "The high and low watermarks for functions coverage. `[low, high]`", + "items": { "type": "number" }, + "minItems": 2, + "maxItems": 2 + }, + "lines": { + "type": "array", + "description": "The high and low watermarks for lines coverage. `[low, high]`", + "items": { "type": "number" }, + "minItems": 2, + "maxItems": 2 + } + }, + "additionalProperties": false + }, "reporters": { "type": "array", "description": "Specifies the reporters to use during test execution. Each reporter can be a string representing its name, or a tuple containing the name and an options object. Built-in reporters include 'default', 'verbose', 'dots', 'json', 'junit', 'tap', 'tap-flat', and 'html'. You can also provide a path to a custom reporter.", diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts index 2d57fb44710f..57766a125fba 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts @@ -15,7 +15,7 @@ import { } from '../setup'; describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { - describe('Option: "codeCoverageExclude"', () => { + describe('Option: "coverageExclude"', () => { beforeEach(async () => { setupApplicationTarget(harness); await harness.writeFiles({ @@ -26,7 +26,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { it('should not exclude any files from coverage when not provided', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - codeCoverage: true, + coverage: true, }); const { result } = await harness.executeOnce(); @@ -38,8 +38,8 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { it('should exclude files from coverage that match the glob pattern', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - codeCoverage: true, - codeCoverageExclude: ['**/error.ts'], + coverage: true, + coverageExclude: ['**/error.ts'], }); const { result } = await harness.executeOnce(); diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-reporters_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-reporters_spec.ts index f4c7d5779a68..edebb9e28167 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-reporters_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-reporters_spec.ts @@ -15,7 +15,7 @@ import { } from '../setup'; describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { - describe('Option: "codeCoverageReporters"', () => { + describe('Option: "coverageReporters"', () => { beforeEach(async () => { setupApplicationTarget(harness); }); @@ -23,8 +23,8 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { it('should generate a json summary report when specified', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - codeCoverage: true, - codeCoverageReporters: ['json-summary'] as any, + coverage: true, + coverageReporters: ['json-summary'] as any, }); const { result } = await harness.executeOnce(); @@ -35,8 +35,8 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { it('should generate multiple reports when specified', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - codeCoverage: true, - codeCoverageReporters: ['json-summary', 'lcov'] as any, + coverage: true, + coverageReporters: ['json-summary', 'lcov'] as any, }); const { result } = await harness.executeOnce(); diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts index 9e97c88b05a4..490f2deaba4b 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts @@ -15,15 +15,15 @@ import { } from '../setup'; describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { - describe('Option: "codeCoverage"', () => { + describe('Option: "coverage"', () => { beforeEach(async () => { setupApplicationTarget(harness); }); - it('should not generate a code coverage report when codeCoverage is false', async () => { + it('should not generate a code coverage report when coverage is false', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - codeCoverage: false, + coverage: false, }); const { result } = await harness.executeOnce(); @@ -31,10 +31,10 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { expect(harness.hasFile('coverage/test/index.html')).toBeFalse(); }); - it('should generate a code coverage report when codeCoverage is true', async () => { + it('should generate a code coverage report when coverage is true', async () => { harness.useTarget('test', { ...BASE_OPTIONS, - codeCoverage: true, + coverage: true, }); const { result } = await harness.executeOnce(); From f2633064f651491fe59ec13a3e323e0e3bba6b52 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:29:58 -0400 Subject: [PATCH 1542/2162] refactor(@angular/build): make buildTarget optional in unit-test builder The `buildTarget` option in the `unit-test` builder is now optional to streamline the user configuration. If the `buildTarget` option is not provided, the builder now defaults to using the `build` target with the `development` configuration for the current project. This change significantly reduces the boilerplate configuration needed in `angular.json` for most projects, as the builder can now infer the correct build settings by convention. The builder's schema has been updated to reflect this change by removing `buildTarget` from the required properties and updating its description to document the new default behavior. --- goldens/public-api/angular/build/index.api.md | 2 +- .../build/src/builders/unit-test/builder.ts | 20 ++++++++++++++----- .../build/src/builders/unit-test/schema.json | 4 ++-- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 149471337945..b1338ae84508 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -216,7 +216,7 @@ export type NgPackagrBuilderOptions = { // @public export type UnitTestBuilderOptions = { browsers?: string[]; - buildTarget: string; + buildTarget?: string; coverage?: boolean; coverageAll?: boolean; coverageExclude?: string[]; diff --git a/packages/angular/build/src/builders/unit-test/builder.ts b/packages/angular/build/src/builders/unit-test/builder.ts index 8471e4e9f29c..4785c6c6d16c 100644 --- a/packages/angular/build/src/builders/unit-test/builder.ts +++ b/packages/angular/build/src/builders/unit-test/builder.ts @@ -240,9 +240,22 @@ export async function* execute( // Get base build options from the buildTarget let buildTargetOptions: ApplicationBuilderInternalOptions; try { + const builderName = await context.getBuilderNameForTarget(normalizedOptions.buildTarget); + if ( + builderName !== '@angular/build:application' && + // TODO: Add comprehensive support for ng-packagr. + builderName !== '@angular/build:ng-packagr' + ) { + context.logger.warn( + `The 'buildTarget' is configured to use '${builderName}', which is not supported. ` + + `The 'unit-test' builder is designed to work with '@angular/build:application'. ` + + 'Unexpected behavior or build failures may occur.', + ); + } + buildTargetOptions = (await context.validateOptions( await context.getTargetOptions(normalizedOptions.buildTarget), - await context.getBuilderNameForTarget(normalizedOptions.buildTarget), + builderName, )) as unknown as ApplicationBuilderInternalOptions; } catch (e) { assertIsError(e); @@ -297,12 +310,9 @@ export async function* execute( ...runnerBuildOptions, watch: normalizedOptions.watch, progress: normalizedOptions.buildProgress ?? buildTargetOptions.progress, + ...(normalizedOptions.tsConfig ? { tsConfig: normalizedOptions.tsConfig } : {}), } satisfies ApplicationBuilderInternalOptions; - if (normalizedOptions.tsConfig) { - applicationBuildOptions.tsConfig = normalizedOptions.tsConfig; - } - const dumpDirectory = normalizedOptions.dumpVirtualFiles ? path.join(normalizedOptions.cacheOptions.path, 'unit-test', 'output-files') : undefined; diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 5ebc906329b4..303bd6905019 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -6,7 +6,7 @@ "properties": { "buildTarget": { "type": "string", - "description": "Specifies the build target to use for the unit test build in the format `project:target[:configuration]`. You can also pass a comma-separated list of configurations. Example: `project:target:production,staging`.", + "description": "Specifies the build target to use for the unit test build in the format `project:target[:configuration]`. This defaults to the `build` target of the current project with the `development` configuration. You can also pass a comma-separated list of configurations. Example: `project:target:production,staging`.", "pattern": "^[^:\\s]*:[^:\\s]*(:[^\\s]+)?$" }, "tsConfig": { @@ -262,5 +262,5 @@ } }, "additionalProperties": false, - "required": ["buildTarget", "runner"] + "required": ["runner"] } From d0787c11d68841c36ef28bc3f15963406d1209a9 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Thu, 2 Oct 2025 11:40:16 +0200 Subject: [PATCH 1543/2162] fix(@angular/build): provide default excludes for vitest coverage Ensures vitest coverage uses default exclude patterns in addition to user defined ones. This provides a behavior similar to 3478aa3 but for vitest, as the default exclusions contain directories starting with a dot. --- .../unit-test/runners/vitest/executor.ts | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index f880a9f7e1c8..23996d4b43ef 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -189,7 +189,7 @@ export class VitestExecutor implements TestExecutor { reporters: reporters ?? ['default'], outputFile, watch, - coverage: generateCoverageOption(coverage, this.projectName), + coverage: await generateCoverageOption(coverage, this.projectName), ...debugOptions, }, { @@ -204,16 +204,24 @@ export class VitestExecutor implements TestExecutor { } } -function generateCoverageOption( +async function generateCoverageOption( coverage: NormalizedUnitTestBuilderOptions['coverage'], projectName: string, -): VitestCoverageOption { +): Promise { if (!coverage) { return { enabled: false, }; } + let defaultExcludes: string[] = []; + if (coverage.exclude) { + try { + const vitestConfig = await loadEsmModule('vitest/config'); + defaultExcludes = vitestConfig.coverageConfigDefaults.exclude; + } catch {} + } + return { enabled: true, all: coverage.all, @@ -223,7 +231,16 @@ function generateCoverageOption( thresholds: coverage.thresholds, watermarks: coverage.watermarks, // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures - ...(coverage.exclude ? { exclude: coverage.exclude } : {}), + ...(coverage.exclude + ? { + exclude: [ + // Augment the default exclude https://vitest.dev/config/#coverage-exclude + // with the user defined exclusions + ...coverage.exclude, + ...defaultExcludes, + ], + } + : {}), ...(coverage.reporters ? ({ reporter: coverage.reporters } satisfies VitestCoverageOption) : {}), From 49d51e758d13d1624ee61d74d0138a5784c745ed Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 2 Oct 2025 16:14:22 -0400 Subject: [PATCH 1544/2162] docs: release notes for the v20.3.4 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc254449a3af..2e98367b0da8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 20.3.4 (2025-10-02) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- | +| [c94bf7ff0](https://github.com/angular/angular-cli/commit/c94bf7ff0845fe325c39737057ff1ed4ea553011) | fix | Out of the box support for PM2 | +| [465436c9f](https://github.com/angular/angular-cli/commit/465436c9fa21173befe5e39b61afb7f29435c2aa) | fix | use bracket notation for `process.env['pm_id']` | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [bc6b63114](https://github.com/angular/angular-cli/commit/bc6b631146c719a337c937e95c7cc5ebca29254b) | fix | mark `InjectionToken` as pure for improved tree-shaking | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [e510ff828](https://github.com/angular/angular-cli/commit/e510ff828f033478d8e1720050a7b3d75d551e16) | fix | mark `InjectionToken` as pure for improved tree-shaking | + + + # 21.0.0-next.5 (2025-09-24) From e71d32c8ce4acef4db053ac06d02b0ce17e9b823 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 2 Oct 2025 17:48:07 -0400 Subject: [PATCH 1545/2162] refactor(@angular/build): use explicit resolution mode for service-worker package types --- packages/angular/build/src/utils/service-worker.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/utils/service-worker.ts b/packages/angular/build/src/utils/service-worker.ts index c6f95f99a595..73a177c60fba 100644 --- a/packages/angular/build/src/utils/service-worker.ts +++ b/packages/angular/build/src/utils/service-worker.ts @@ -6,9 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ -import type { Config, Filesystem } from '@angular/service-worker/config'; +import type { + Config, + Filesystem, +} from '@angular/service-worker/config' with { 'resolution-mode': 'import' }; import * as crypto from 'node:crypto'; -import { existsSync, constants as fsConstants, promises as fsPromises } from 'node:fs'; +import { existsSync, promises as fsPromises } from 'node:fs'; import * as path from 'node:path'; import { BuildOutputFile, BuildOutputFileType } from '../tools/esbuild/bundler-context'; import { BuildOutputAsset } from '../tools/esbuild/bundler-execution-result'; From df7ad6a5fe57cc63ce9b00caee7a7c92dc5c44ed Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 2 Oct 2025 05:05:31 +0000 Subject: [PATCH 1546/2162] build: update dependency typescript to v5.9.3 See associated pull request for more information. Closes #31364 as a pr takeover --- MODULE.bazel | 6 +- MODULE.bazel.lock | 6 +- package.json | 4 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 168 +++++++++++++------------- 5 files changed, 93 insertions(+), 93 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 921f2874f944..292bd0af4d97 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -173,9 +173,9 @@ use_repo(npm, "npm") rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext") rules_ts_ext.deps( name = "angular_cli_npm_typescript", - # Obtained by: curl --silent https://registry.npmjs.org/typescript/5.9.2 | jq -r '.dist.integrity' - ts_integrity = "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - ts_version = "5.9.2", + # Obtained by: npm info typescript@5.9.3 dist.integrity + ts_integrity = "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + ts_version = "5.9.3", ) use_repo(rules_ts_ext, **{"npm_typescript": "angular_cli_npm_typescript"}) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 6341292aeaf4..c38daff7be06 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -539,7 +539,7 @@ "@@aspect_rules_ts~//ts:extensions.bzl%ext": { "general": { "bzlTransitiveDigest": "9IJp6IlB/FMHFBJe4MX/DQM4zi3oArC8yqYE/+NyPwk=", - "usagesDigest": "1QffQgMsAO4zhe8vcwqME94TRDAlQADSJn4p/MOIYv4=", + "usagesDigest": "/bW7tef/VUezsI1YPut0ecFWPJkj5Todba/n6qL3mKM=", "recordedFileInputs": { "@@rules_browsers~//package.json": "45572077938c7a4916e4aaedf7db7ce8425854ab92f35348cff02a2134023bb8" }, @@ -550,8 +550,8 @@ "bzlFile": "@@aspect_rules_ts~//ts/private:npm_repositories.bzl", "ruleClassName": "http_archive_version", "attributes": { - "version": "5.9.2", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "urls": [ "https://registry.npmjs.org/typescript/-/typescript-{}.tgz" ] diff --git a/package.json b/package.json index ff46ce010f05..897b61c84ad7 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "tar": "^7.0.0", "ts-node": "^10.9.1", "tslib": "2.8.1", - "typescript": "5.9.2", + "typescript": "5.9.3", "undici": "7.16.0", "unenv": "^1.10.0", "verdaccio": "6.2.0", @@ -173,6 +173,6 @@ } }, "resolutions": { - "typescript": "5.9.2" + "typescript": "5.9.3" } } diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index b3ec5c3372b9..4400418df9d2 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": "21.0.0-next.5", "@angular/compiler-cli": "21.0.0-next.5", - "typescript": "5.9.2", + "typescript": "5.9.3", "webpack": "5.102.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17ae33980071..116cd2afbe0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - typescript: 5.9.2 + typescript: 5.9.3 '@angular/build': workspace:* packageExtensionsChecksum: sha256-3L73Fw32UVtE6x5BJxJPBtQtH/mgsr31grNpdhHP1IY= @@ -33,7 +33,7 @@ importers: version: 21.0.0-next.5 '@angular/compiler-cli': specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) + version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) '@angular/core': specifier: 21.0.0-next.5 version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) @@ -42,7 +42,7 @@ importers: version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(@angular/compiler@21.0.0-next.5) + version: 21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(@angular/compiler@21.0.0-next.5) '@angular/material': specifier: 21.0.0-next.5 version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) @@ -165,10 +165,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.36.0(jiti@2.6.0)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)) + version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)) express: specifier: 5.1.0 version: 5.1.0 @@ -276,7 +276,7 @@ importers: version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.52.3)(typescript@5.9.2) + version: 6.2.3(rollup@4.52.3)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 version: 0.5.4(@types/node@22.18.6)(rollup@4.52.3) @@ -294,13 +294,13 @@ importers: version: 7.5.1 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.18.6)(typescript@5.9.2) + version: 10.9.2(@types/node@22.18.6)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 typescript: - specifier: 5.9.2 - version: 5.9.2 + specifier: 5.9.3 + version: 5.9.3 undici: specifier: 7.16.0 version: 7.16.0 @@ -445,7 +445,7 @@ importers: version: 4.4.1 ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -709,7 +709,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.102.0(esbuild@0.25.10)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.0(esbuild@0.25.10)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -770,7 +770,7 @@ importers: version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -872,10 +872,10 @@ importers: version: 21.0.0-next.5 '@angular/compiler-cli': specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) + version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) typescript: - specifier: 5.9.2 - version: 5.9.2 + specifier: 5.9.3 + version: 5.9.3 webpack: specifier: 5.102.0 version: 5.102.0(esbuild@0.25.10) @@ -1004,7 +1004,7 @@ packages: hasBin: true peerDependencies: '@angular/compiler': 21.0.0-next.5 - typescript: 5.9.2 + typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true @@ -3558,20 +3558,20 @@ packages: peerDependencies: '@typescript-eslint/parser': ^8.45.0 eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/parser@8.45.0': resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/project-service@8.45.0': resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/scope-manager@8.45.0': resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} @@ -3581,14 +3581,14 @@ packages: resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/type-utils@8.45.0': resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/types@8.44.1': resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} @@ -3602,14 +3602,14 @@ packages: resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/utils@8.45.0': resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.2 + typescript: 5.9.3 '@typescript-eslint/visitor-keys@8.45.0': resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} @@ -4633,7 +4633,7 @@ packages: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: - typescript: 5.9.2 + typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true @@ -6889,7 +6889,7 @@ packages: '@angular/compiler-cli': ^21.0.0-next tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: 5.9.2 + typescript: 5.9.3 peerDependenciesMeta: tailwindcss: optional: true @@ -7555,7 +7555,7 @@ packages: puppeteer@18.2.1: resolution: {integrity: sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==} engines: {node: '>=14.1.0'} - deprecated: < 24.10.2 is no longer supported + deprecated: < 24.15.0 is no longer supported q@1.4.1: resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==} @@ -7768,7 +7768,7 @@ packages: engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 - typescript: 5.9.2 + typescript: 5.9.3 rollup-plugin-sourcemaps2@0.5.4: resolution: {integrity: sha512-XK6ITvEsKtUFN1GQbYKoqilwh1yKxTS9BLaFlVsm0IaYUYe3eVnhBWzKP4AHbkBO2BNOheGNlf407K7wCj6Rrw==} @@ -8437,7 +8437,7 @@ packages: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: - typescript: 5.9.2 + typescript: 5.9.3 ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -8446,7 +8446,7 @@ packages: '@swc/core': '>=1.2.50' '@swc/wasm': '>=1.2.50' '@types/node': '*' - typescript: 5.9.2 + typescript: 5.9.3 peerDependenciesMeta: '@swc/core': optional: true @@ -8526,8 +8526,8 @@ packages: typed-query-selector@2.12.0: resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} - typescript@5.9.2: - resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -9267,7 +9267,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2)': + '@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3)': dependencies: '@angular/compiler': 21.0.0-next.5 '@babel/core': 7.28.4 @@ -9279,7 +9279,7 @@ snapshots: tslib: 2.8.1 yargs: 18.0.0 optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -9303,10 +9303,10 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(@angular/compiler@21.0.0-next.5)': + '@angular/localize@21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(@angular/compiler@21.0.0-next.5)': dependencies: '@angular/compiler': 21.0.0-next.5 - '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) + '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9376,7 +9376,7 @@ snapshots: supports-color: 10.2.2 tsx: 4.20.6 typed-graphqlify: 3.1.6 - typescript: 5.9.2 + typescript: 5.9.3 utf-8-validate: 6.0.5 which: 5.0.0 yaml: 2.8.1 @@ -12060,41 +12060,41 @@ snapshots: '@types/node': 22.18.6 optional: true - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 eslint: 9.36.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.45.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) '@typescript-eslint/types': 8.45.0 debug: 4.4.3(supports-color@10.2.2) - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12103,19 +12103,19 @@ snapshots: '@typescript-eslint/types': 8.45.0 '@typescript-eslint/visitor-keys': 8.45.0 - '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.3)': dependencies: - typescript: 5.9.2 + typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.36.0(jiti@2.6.0) - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12123,10 +12123,10 @@ snapshots: '@typescript-eslint/types@8.45.0': {} - '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.45.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2) + '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) '@typescript-eslint/types': 8.45.0 '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@10.2.2) @@ -12134,19 +12134,19 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)': + '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -13530,14 +13530,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.9.2): + cosmiconfig@9.0.0(typescript@5.9.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.9.2 + typescript: 5.9.3 create-require@1.1.1: {} @@ -14083,11 +14083,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14097,7 +14097,7 @@ snapshots: dependencies: eslint: 9.36.0(jiti@2.6.0) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14108,7 +14108,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.36.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14120,7 +14120,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2) + '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16147,10 +16147,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2))(tslib@2.8.1)(typescript@5.9.2): + ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.2) + '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.3) '@rollup/wasm-node': 4.52.3 ajv: 8.17.1 @@ -16167,12 +16167,12 @@ snapshots: ora: 9.0.0 piscina: 5.1.3 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.52.3)(typescript@5.9.2) + rollup-plugin-dts: 6.2.3(rollup@4.52.3)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.93.2 tinyglobby: 0.2.15 tslib: 2.8.1 - typescript: 5.9.2 + typescript: 5.9.3 optionalDependencies: rollup: 4.52.3 @@ -16652,9 +16652,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.2)(webpack@5.102.0(esbuild@0.25.10)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.0(esbuild@0.25.10)): dependencies: - cosmiconfig: 9.0.0(typescript@5.9.2) + cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.0 postcss: 8.5.6 semver: 7.7.2 @@ -17125,11 +17125,11 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.52.3)(typescript@5.9.2): + rollup-plugin-dts@6.2.3(rollup@4.52.3)(typescript@5.9.3): dependencies: magic-string: 0.30.19 rollup: 4.52.3 - typescript: 5.9.2 + typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.27.1 @@ -17958,11 +17958,11 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.9.2): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.18.6)(typescript@5.9.2): + ts-node@10.9.2(@types/node@22.18.6)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -17976,7 +17976,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.9.2 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -18072,7 +18072,7 @@ snapshots: typed-query-selector@2.12.0: {} - typescript@5.9.2: {} + typescript@5.9.3: {} typical@4.0.0: {} From 3e0209d0a6bc6d7985d6294fc1430cdbe4d2d9a6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:25:35 -0400 Subject: [PATCH 1547/2162] feat(@angular/build): add `browserViewport` option for vitest browser tests Introduces a new option, `browserViewport`, to the unit-test builder to allow configuring the browser's viewport size during test execution. This option accepts a string in the format `widthxheight` (e.g., `1280x720`) and is passed to the underlying browser provider when using the Vitest runner. This is particularly useful for testing responsive layouts or ensuring components render consistently at a specific size. A warning has been added to the Karma runner to inform users that this option is not supported, preventing confusion and providing clear feedback. --- goldens/public-api/angular/build/index.api.md | 1 + .../angular/build/src/builders/unit-test/options.ts | 4 +++- .../src/builders/unit-test/runners/karma/executor.ts | 6 ++++++ .../unit-test/runners/vitest/browser-provider.ts | 2 ++ .../builders/unit-test/runners/vitest/executor.ts | 12 +++++++++++- .../angular/build/src/builders/unit-test/schema.json | 5 +++++ 6 files changed, 28 insertions(+), 2 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index b1338ae84508..2615db9fd0b0 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -215,6 +215,7 @@ export type NgPackagrBuilderOptions = { // @public export type UnitTestBuilderOptions = { + browserViewport?: string; browsers?: string[]; buildTarget?: string; coverage?: boolean; diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 9be37f055237..c94acc27a932 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -54,7 +54,8 @@ export async function normalizeOptions( const buildTargetSpecifier = options.buildTarget ?? `::development`; const buildTarget = targetFromTargetString(buildTargetSpecifier, projectName, 'build'); - const { runner, browsers, progress, filter } = options; + const { runner, browsers, progress, filter, browserViewport } = options; + const [width, height] = browserViewport?.split('x').map(Number) ?? []; let tsConfig = options.tsConfig; if (tsConfig) { @@ -104,6 +105,7 @@ export async function normalizeOptions( reporters: normalizeReporterOption(options.reporters), outputFile: options.outputFile, browsers, + browserViewport: width && height ? { width, height } : undefined, watch: options.watch ?? isTTY(), debug: options.debug ?? false, providersFile: options.providersFile && path.join(workspaceRoot, options.providersFile), diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index d3b1abb98539..2a642cfb0a09 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -21,6 +21,12 @@ export class KarmaExecutor implements TestExecutor { async *execute(): AsyncIterable { const { context, options: unitTestOptions } = this; + if (unitTestOptions.browserViewport) { + context.logger.warn( + 'The "karma" test runner does not support the "browserViewport" option. The option will be ignored.', + ); + } + if (unitTestOptions.debug) { context.logger.warn( 'The "karma" test runner does not support the "debug" option. The option will be ignored.', diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index 3fef091e3717..b493ac7c9447 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -43,6 +43,7 @@ export function setupBrowserConfiguration( browsers: string[] | undefined, debug: boolean, projectSourceRoot: string, + viewport: { width: number; height: number } | undefined, ): BrowserConfiguration { if (browsers === undefined) { return {}; @@ -91,6 +92,7 @@ export function setupBrowserConfiguration( provider, headless, ui: !headless, + viewport, instances: browsers.map((browserName) => ({ browser: normalizeBrowserName(browserName), })), diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 23996d4b43ef..b20f88fbc60b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -126,7 +126,16 @@ export class VitestExecutor implements TestExecutor { } private async initializeVitest(): Promise { - const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch } = this.options; + const { + coverage, + reporters, + outputFile, + workspaceRoot, + browsers, + debug, + watch, + browserViewport, + } = this.options; let vitestNodeModule; try { vitestNodeModule = await loadEsmModule('vitest/node'); @@ -146,6 +155,7 @@ export class VitestExecutor implements TestExecutor { browsers, debug, this.options.projectSourceRoot, + browserViewport, ); if (browserOptions.errors?.length) { throw new Error(browserOptions.errors.join('\n')); diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 303bd6905019..5c6820204071 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -26,6 +26,11 @@ }, "minItems": 1 }, + "browserViewport": { + "description": "Specifies the browser viewport dimensions for browser-based tests in the format `widthxheight`.", + "type": "string", + "pattern": "^\\d+x\\d+$" + }, "include": { "type": "array", "items": { From e469d526725deb78094a3c4cfc702e4cb826e9d8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 3 Oct 2025 08:18:20 -0400 Subject: [PATCH 1548/2162] release: cut the v21.0.0-next.6 release --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e98367b0da8..3c534c2f09dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ + + +# 21.0.0-next.6 (2025-10-03) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- | +| [58d101d5e](https://github.com/angular/angular-cli/commit/58d101d5e78cf4c158dbaf52103639d56b84f9ed) | feat | add `--json` output to `ng version` | +| [50453fdee](https://github.com/angular/angular-cli/commit/50453fdeec4a00d88deada49d2dd0867bdb784fb) | feat | overhaul `ng version` command output | +| [0922a033f](https://github.com/angular/angular-cli/commit/0922a033f546b38f83d1cae524cf7237dd37a2ac) | fix | improve JSON schema parsing for command options | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [c119910f4](https://github.com/angular/angular-cli/commit/c119910f4505e280eea83ea6647b6d279a46f36d) | feat | add AGENTS.md support to ai-config schematic | +| [9dab5780a](https://github.com/angular/angular-cli/commit/9dab5780a1befbd76ee9ba4c4e6ac2d3fd714bb9) | fix | add fixture.whenStable in spec files when zoneless apps | +| [e304821d5](https://github.com/angular/angular-cli/commit/e304821d5d789fab2725d3152612d3e5b6bd0dc7) | fix | make ai-config schematic non-destructive | +| [8ac515699](https://github.com/angular/angular-cli/commit/8ac515699cfd5a4e7eda9bcc054dfd7c68faba39) | fix | Out of the box support for PM2 | +| [57075a31a](https://github.com/angular/angular-cli/commit/57075a31ad8f95a82304fe8533b3bca828d8da42) | fix | use bracket notation for `process.env['pm_id']` | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [acd785afc](https://github.com/angular/angular-cli/commit/acd785afc956efad56b03402085ff94855b9fcc6) | fix | mark `InjectionToken` as pure for improved tree-shaking | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [3e0209d0a](https://github.com/angular/angular-cli/commit/3e0209d0a6bc6d7985d6294fc1430cdbe4d2d9a6) | feat | add `browserViewport` option for vitest browser tests | +| [3b7dabbf1](https://github.com/angular/angular-cli/commit/3b7dabbf1df9b2b6ca9ffc6c038abb6e40b6df2b) | feat | add advanced coverage options to unit-test builder | +| [65562114c](https://github.com/angular/angular-cli/commit/65562114cdf725fa52f6d805f26a1aa265b9badb) | fix | mark `InjectionToken` as pure for improved tree-shaking | +| [d0787c11d](https://github.com/angular/angular-cli/commit/d0787c11d68841c36ef28bc3f15963406d1209a9) | fix | provide default excludes for vitest coverage | +| [ac10f323e](https://github.com/angular/angular-cli/commit/ac10f323ece9f4a35068e510f10786fbcb15adbb) | fix | relax requirement for files to be in TS compilation | + + + # 20.3.4 (2025-10-02) diff --git a/package.json b/package.json index 897b61c84ad7..2a16538f36d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.0.0-next.5", + "version": "21.0.0-next.6", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From ef2db311acb42f5201173c7dc5997daa938ff19d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 3 Oct 2025 09:34:52 +0000 Subject: [PATCH 1549/2162] build: update cross-repo angular dependencies See associated pull request for more information. Closes #31357 as a pr takeover --- package.json | 26 +- .../karma/tests/behavior/module-cjs_spec.ts | 2 +- .../angular/build/src/utils/service-worker.ts | 6 +- packages/angular/ssr/package.json | 12 +- .../test/hello-world-lib/tsconfig.json | 2 +- .../test/angular-app/tsconfig.json | 2 +- .../test/basic-app/tsconfig.json | 2 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 266 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- 10 files changed, 177 insertions(+), 177 deletions(-) diff --git a/package.json b/package.json index 2a16538f36d2..18d5629c1dfd 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-next.5", - "@angular/cdk": "21.0.0-next.5", - "@angular/common": "21.0.0-next.5", - "@angular/compiler": "21.0.0-next.5", - "@angular/compiler-cli": "21.0.0-next.5", - "@angular/core": "21.0.0-next.5", - "@angular/forms": "21.0.0-next.5", - "@angular/localize": "21.0.0-next.5", - "@angular/material": "21.0.0-next.5", + "@angular/animations": "21.0.0-next.6", + "@angular/cdk": "21.0.0-next.6", + "@angular/common": "21.0.0-next.6", + "@angular/compiler": "21.0.0-next.6", + "@angular/compiler-cli": "21.0.0-next.6", + "@angular/core": "21.0.0-next.6", + "@angular/forms": "21.0.0-next.6", + "@angular/localize": "21.0.0-next.6", + "@angular/material": "21.0.0-next.6", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb", - "@angular/platform-browser": "21.0.0-next.5", - "@angular/platform-server": "21.0.0-next.5", - "@angular/router": "21.0.0-next.5", - "@angular/service-worker": "21.0.0-next.5", + "@angular/platform-browser": "21.0.0-next.6", + "@angular/platform-server": "21.0.0-next.6", + "@angular/router": "21.0.0-next.6", + "@angular/service-worker": "21.0.0-next.6", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", diff --git a/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts b/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts index 29b454d48441..646ee6b605ee 100644 --- a/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts +++ b/packages/angular/build/src/builders/karma/tests/behavior/module-cjs_spec.ts @@ -22,7 +22,7 @@ describeKarmaBuilder(execute, KARMA_BUILDER_INFO, (harness, setupTarget) => { await harness.modifyFile('src/tsconfig.spec.json', (content) => { const tsConfig = JSON.parse(content); - tsConfig.compilerOptions.moduleResolution = 'node'; + tsConfig.compilerOptions.moduleResolution = 'bundler'; tsConfig.compilerOptions.module = 'commonjs'; return JSON.stringify(tsConfig); diff --git a/packages/angular/build/src/utils/service-worker.ts b/packages/angular/build/src/utils/service-worker.ts index 73a177c60fba..c3bd75c3ab38 100644 --- a/packages/angular/build/src/utils/service-worker.ts +++ b/packages/angular/build/src/utils/service-worker.ts @@ -223,9 +223,9 @@ export async function augmentAppWithServiceWorkerCore( // Once TypeScript provides support for keeping the dynamic import this workaround can be // changed to a direct dynamic import. const GeneratorConstructor = ( - await loadEsmModule( - '@angular/service-worker/config', - ) + await loadEsmModule< + typeof import('@angular/service-worker/config', { with: { 'resolution-mode': 'import' } }) + >('@angular/service-worker/config') ).Generator; // Generate the manifest diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 49be966006b9..6a62501be292 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-next.5", - "@angular/compiler": "21.0.0-next.5", - "@angular/core": "21.0.0-next.5", - "@angular/platform-browser": "21.0.0-next.5", - "@angular/platform-server": "21.0.0-next.5", - "@angular/router": "21.0.0-next.5", + "@angular/common": "21.0.0-next.6", + "@angular/compiler": "21.0.0-next.6", + "@angular/core": "21.0.0-next.6", + "@angular/platform-browser": "21.0.0-next.6", + "@angular/platform-server": "21.0.0-next.6", + "@angular/router": "21.0.0-next.6", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/angular_devkit/build_angular/test/hello-world-lib/tsconfig.json b/packages/angular_devkit/build_angular/test/hello-world-lib/tsconfig.json index 94fbc67e36ac..f749045924e4 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-lib/tsconfig.json +++ b/packages/angular_devkit/build_angular/test/hello-world-lib/tsconfig.json @@ -5,7 +5,7 @@ "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, - "moduleResolution": "node", + "moduleResolution": "bundler", "experimentalDecorators": true, "target": "es2015", "module": "es2022", diff --git a/packages/angular_devkit/build_webpack/test/angular-app/tsconfig.json b/packages/angular_devkit/build_webpack/test/angular-app/tsconfig.json index b1f001e9a510..c2343708c79a 100644 --- a/packages/angular_devkit/build_webpack/test/angular-app/tsconfig.json +++ b/packages/angular_devkit/build_webpack/test/angular-app/tsconfig.json @@ -5,7 +5,7 @@ "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, - "moduleResolution": "node", + "moduleResolution": "bundler", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es2022", diff --git a/packages/angular_devkit/build_webpack/test/basic-app/tsconfig.json b/packages/angular_devkit/build_webpack/test/basic-app/tsconfig.json index 35dfffe59b69..4625ba86dca4 100644 --- a/packages/angular_devkit/build_webpack/test/basic-app/tsconfig.json +++ b/packages/angular_devkit/build_webpack/test/basic-app/tsconfig.json @@ -5,7 +5,7 @@ "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, - "moduleResolution": "node", + "moduleResolution": "bundler", "experimentalDecorators": true, "target": "es2022", "module": "esnext", diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 4400418df9d2..ae79c336db4e 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": "21.0.0-next.5", - "@angular/compiler-cli": "21.0.0-next.5", + "@angular/compiler": "21.0.0-next.6", + "@angular/compiler-cli": "21.0.0-next.6", "typescript": "5.9.3", "webpack": "5.102.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 116cd2afbe0d..49c17e792e9e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5 + specifier: 21.0.0-next.6 + version: 21.0.0-next.6 '@angular/compiler-cli': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(@angular/compiler@21.0.0-next.5) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(@angular/compiler@21.0.0-next.6) '@angular/material': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(80d28ef3220558a76162dc5524ed8579) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.18.2) '@angular/platform-browser': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.5)(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.6)(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -445,7 +445,7 @@ importers: version: 4.4.1 ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -539,23 +539,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5 + specifier: 21.0.0-next.6 + version: 21.0.0-next.6 '@angular/core': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.5)(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.6)(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -770,7 +770,7 @@ importers: version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -868,11 +868,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5 + specifier: 21.0.0-next.6 + version: 21.0.0-next.6 '@angular/compiler-cli': - specifier: 21.0.0-next.5 - version: 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) + specifier: 21.0.0-next.6 + version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -978,46 +978,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-next.5': - resolution: {integrity: sha512-Wx/oXYpA/Pvp1jgyB0EdDXZO5iVsUTFJbv/iWlOOK0dKdZZvWtMnZcvhIhEWugwfSyz4aes0mrg9lFxJyPaPlg==} + '@angular/animations@21.0.0-next.6': + resolution: {integrity: sha512-hcChKe9DIWCI0znousGOzolQfVor4ad4yoRRvp0qV8isKG0H+BEBnfirUQ5HIKejXPhdn4w2hnni1a1RgFBQ2w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.5 + '@angular/core': 21.0.0-next.6 - '@angular/cdk@21.0.0-next.5': - resolution: {integrity: sha512-sXGF6TpHAMI3tmyjThfMEfRvKfG6kt3giLEilyjmRSEj1tYPuAlnRkMRNXoNIzt/ECWvLe59HCrVqFHR6Djl6w==} + '@angular/cdk@21.0.0-next.6': + resolution: {integrity: sha512-mwBjZVuvmgoehW075VFtQ09R68o4lM84EpufTHOBcT3H4PQGiTCZk0LQykYfJmpsok3XEGFayFMwDw7DOo2iZA==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-next.5': - resolution: {integrity: sha512-DQ11vRiynQcSXsHBUJAZjF32BAT56re64vzUTodMvhvNgvXnw/kWG0KpKXna10mBB5kc4W7PKLVZnmIuk42LZA==} + '@angular/common@21.0.0-next.6': + resolution: {integrity: sha512-1y9veaWRQVdFFczkQiv8xL+gxkWNPv2sxU3FN/wj0p/2LEncdNyDHGUiL5oniuXv3rb9/aEXKZA4CymvuWIYbw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.5 + '@angular/core': 21.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-next.5': - resolution: {integrity: sha512-IJZJ4B0xMZMsdoM44HghiaGR87arI9kbIDIzjYDIP+vV+yL6o2ZfEs1MqjMt53NDtvYuWqk2/Pg3RZZnfBmjeQ==} + '@angular/compiler-cli@21.0.0-next.6': + resolution: {integrity: sha512-mMsn5omb53/dIUUoasMVpCIs32uVSBDS/OKvEb4iwEUF9VQdtCWt55+r1hi6DpGCCu+fPfuamRPjxUmoPN0LDw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.5 + '@angular/compiler': 21.0.0-next.6 typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-next.5': - resolution: {integrity: sha512-pW0bYQm3SZPXrANVYkhEkieZ7npYL6U6UVNLbkAYvCqHr8F0KcO29977yE1RcUUsJlTQKftS2CwwMY5a9iM/Wg==} + '@angular/compiler@21.0.0-next.6': + resolution: {integrity: sha512-U3ktjAFWsVDFtNrw45E5J22WvgMzp2CKRQf5qqo0IaW1PCw6ThHI84BXckXY75UIwdiJbaTiSc7SXtZCOr/iLg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-next.5': - resolution: {integrity: sha512-lBlMrtC5KqcdXJZUx/p7jSxKHKBPkj57p24b9wRdWfVGCdUUB+NI/kXZhIdECtHpE9FdQbkA7bqyD7y+g1zF2w==} + '@angular/core@21.0.0-next.6': + resolution: {integrity: sha512-d+U3VwwBpx3S/bpb1aieXCB8UOgzt3vejMBfguv9CCqb1MhZlgiaccWczBwrQswIIrGDt09yFCN+GVwDKHA7Yg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-next.5 + '@angular/compiler': 21.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1026,28 +1026,28 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-next.5': - resolution: {integrity: sha512-uNAosi2anYtQCU1K3a/ZKb99Hr70ekxLC79qOOA5uzF7ByszBPeGYEKHFgBjkgCysb79q75KKFQJU4osl1hLsQ==} + '@angular/forms@21.0.0-next.6': + resolution: {integrity: sha512-+TFhDm1PE99JkxIrjIV/6tCLXLebY2H5sIZGSPcZCJR3SR8WgQaU9T7KzEPLVSstiutLzYi9MdBEDJzX9EG03w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.5 - '@angular/core': 21.0.0-next.5 - '@angular/platform-browser': 21.0.0-next.5 + '@angular/common': 21.0.0-next.6 + '@angular/core': 21.0.0-next.6 + '@angular/platform-browser': 21.0.0-next.6 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-next.5': - resolution: {integrity: sha512-IIwpNFb9yX8PzN1DMx1pqyeOsXBBWHprX6kIIgHRDfFHz9Kkw8VJ++oMOx8aTINoOQ5tcPinElNi5a4CEfStOg==} + '@angular/localize@21.0.0-next.6': + resolution: {integrity: sha512-SQO+qkRMJMEO0Y+juWT2PdXqpxUKaPsdMdh3+dvHhwDA6nClkDex5VQBI+JSdHmCdi9kW+iO/N7MG7yKZc+J2A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.5 - '@angular/compiler-cli': 21.0.0-next.5 + '@angular/compiler': 21.0.0-next.6 + '@angular/compiler-cli': 21.0.0-next.6 - '@angular/material@21.0.0-next.5': - resolution: {integrity: sha512-CYoUbut3pNOX5/Rz2zP9y0TbLqpI+HawZXYBX4QWTVkpH6lRF9/z8WpxYOqWGLwSam3maeePGvjMigsVqPeJhg==} + '@angular/material@21.0.0-next.6': + resolution: {integrity: sha512-8PuETdg29S4LFNgqdFI5C4N4UkZwi2DOFaeqyCcfLuS//R9scphwKEhAvPgy0wSvSXQSTWCPrY+GgdjQMyiaJA==} peerDependencies: - '@angular/cdk': 21.0.0-next.5 + '@angular/cdk': 21.0.0-next.6 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 @@ -1059,42 +1059,42 @@ packages: version: 0.0.0-b7672ff60456719e6d9b0cc052abc73a7adc8df2 hasBin: true - '@angular/platform-browser@21.0.0-next.5': - resolution: {integrity: sha512-9Lwqnbns38wVNlGlbov18nJMxxTI7e26QWaSDOn1Ru6C4lr0eN3jBJ1GmrXYpoPaE8IRfclz3u7RZX8oqytVrg==} + '@angular/platform-browser@21.0.0-next.6': + resolution: {integrity: sha512-f8tGFPhWAmqEaQNTUmXEsgEu+DcRK13XXK+7PRLGYBrXNgMTRwAZhSylEGcMORiQmi3NswT+Yhio3UrHlgaTVA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-next.5 - '@angular/common': 21.0.0-next.5 - '@angular/core': 21.0.0-next.5 + '@angular/animations': 21.0.0-next.6 + '@angular/common': 21.0.0-next.6 + '@angular/core': 21.0.0-next.6 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-next.5': - resolution: {integrity: sha512-Gg5SM0OKQjKNqrzGmhzW6uxKYBtkbjXGU7RBSKQNecGFsA7SIBwUcFaItNXyZ/Xt4W/Tw0mnkcZxT6Iz9FHAPg==} + '@angular/platform-server@21.0.0-next.6': + resolution: {integrity: sha512-TzWF2ozHqrVEKmRK4iMxVohwaaoZkcK3LpDJJgX7nGig/m4Y/mYn4WYaIzWhFfJRSgaEUZy2ZduVBQewBFP2xQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.5 - '@angular/compiler': 21.0.0-next.5 - '@angular/core': 21.0.0-next.5 - '@angular/platform-browser': 21.0.0-next.5 + '@angular/common': 21.0.0-next.6 + '@angular/compiler': 21.0.0-next.6 + '@angular/core': 21.0.0-next.6 + '@angular/platform-browser': 21.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-next.5': - resolution: {integrity: sha512-D3AxMvbX2prek+PQGO3DgI/phgy/YUQUrSdgKpGHN7cRGpomfU+i2+KSICdcYHbK31kM5qHfz9VDSIfdgJuUhA==} + '@angular/router@21.0.0-next.6': + resolution: {integrity: sha512-qrhVTgXSvfL4q16p3T23078jHLaZ+qWTjMIlo5JcODo2TgneoB3dnqdJAiL87xIKWz70Ga1hPstnkM55Qx+cKg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.5 - '@angular/core': 21.0.0-next.5 - '@angular/platform-browser': 21.0.0-next.5 + '@angular/common': 21.0.0-next.6 + '@angular/core': 21.0.0-next.6 + '@angular/platform-browser': 21.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-next.5': - resolution: {integrity: sha512-Ha8TKsWqB8SN3btWr9CdvICHYh+5e8uvLoAgD534Uo8DaGGLeHG7l8GWh2/yNy/ISc+A4nQoAZXeIQPyavmx8Q==} + '@angular/service-worker@21.0.0-next.6': + resolution: {integrity: sha512-GcBTEwMY9Fgwq6uJLVJi6ah9KLsNDDS6AridlLNeNCZtGl+ffmtFXCSLyIEZSNElYkhokaSVOWVr7Re0/nIFcQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-next.5 + '@angular/core': 21.0.0-next.6 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -9248,28 +9248,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-next.5 + '@angular/compiler': 21.0.0-next.6 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9283,30 +9283,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-next.5': + '@angular/compiler@21.0.0-next.6': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-next.5 + '@angular/compiler': 21.0.0-next.6 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.5(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(@angular/compiler@21.0.0-next.5)': + '@angular/localize@21.0.0-next.6(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(@angular/compiler@21.0.0-next.6)': dependencies: - '@angular/compiler': 21.0.0-next.5 - '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) + '@angular/compiler': 21.0.0-next.6 + '@angular/compiler-cli': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9314,13 +9314,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.5(034087aa98df48cee7fcb8435085bd9b)': + '@angular/material@21.0.0-next.6(80d28ef3220558a76162dc5524ed8579)': dependencies: - '@angular/cdk': 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 @@ -9385,35 +9385,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.5)(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.6)(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-next.5 - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-next.6 + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-next.5(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.5(@angular/animations@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-next.5(@angular/core@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -16147,10 +16147,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.5(@angular/compiler@21.0.0-next.5)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.3) '@rollup/wasm-node': 4.52.3 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 ef1383eb016c..2186f6072e54 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#5880a486d83953cc2b9ac63c4d32191a5ab7a52d", - "@angular/cdk": "github:angular/cdk-builds#daeac37793cf6f9c29e05ad90dcea9e2fefccf60", - "@angular/common": "github:angular/common-builds#53c1f3ce704acf38a6d2512375d0e31027b398fa", - "@angular/compiler": "github:angular/compiler-builds#2cb70ce621595141bfdd3465c4d9db2758d640ab", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#dfb8696d20fc218455130ca8f1849cc1a5d13fea", - "@angular/core": "github:angular/core-builds#f5f75b96fd3a7f12115a2cbc461500f26942268a", - "@angular/forms": "github:angular/forms-builds#992a42d9f4099e44c3f5102bdc53fa43bdd9d332", - "@angular/language-service": "github:angular/language-service-builds#9cbe8c613b50cc89e4ffde38cd89b15276ae9179", - "@angular/localize": "github:angular/localize-builds#7daa29c76e957a9e7b7401bd8d9ae73c531061cb", - "@angular/material": "github:angular/material-builds#0bbebf269409254c04b485831f99a2ce9eb9a44d", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#afaf20982a2dc5f225dc1d23f0e854666a18ab99", - "@angular/platform-browser": "github:angular/platform-browser-builds#ca2c8ce644f35de86e295118ffa38d4441dee606", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#93a2d01adc9d75c9a4a6d4a6ab4288f34c9a097b", - "@angular/platform-server": "github:angular/platform-server-builds#72614e0d55863f5fea55b84ef21a7490964f297e", - "@angular/router": "github:angular/router-builds#f02aef514925f8659ce23460d2568124e8ecd39f", - "@angular/service-worker": "github:angular/service-worker-builds#55c8e26b6e05adbbdf8924b346d56cdcb64305bf" + "@angular/animations": "github:angular/animations-builds#8ad28f7f9a2e9b00666085adced41354bfed3ece", + "@angular/cdk": "github:angular/cdk-builds#0e29805c2d52a47f7116393a1643cc83c37d2784", + "@angular/common": "github:angular/common-builds#5b3b73038741820ac6b06d918d6e077fa329f048", + "@angular/compiler": "github:angular/compiler-builds#0ede7d6c1ddce8cfa378852b64db4eca45ad6c0e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#11f25b69504598e935f744629ddffff63811a28c", + "@angular/core": "github:angular/core-builds#316705517179afc0832ebcf00ad35dee955957c4", + "@angular/forms": "github:angular/forms-builds#aa3fb5bea2386f7e290f538010734e7a75e5be84", + "@angular/language-service": "github:angular/language-service-builds#1be2d0827515203c0aa274d59c9e48518a9655da", + "@angular/localize": "github:angular/localize-builds#dd3cc2921cebcf6bd1eba5541210485a4c6a58a6", + "@angular/material": "github:angular/material-builds#f817d7a9d54383fd6e4b48f9a472ec0899264a35", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b8c6d364ffe424ef3f1cc6cce0a816da88ededaf", + "@angular/platform-browser": "github:angular/platform-browser-builds#76334354d21182733ef51ab8a0d6f447aa00869a", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#732bff10598fe87579ff59347de310bfc7b630f5", + "@angular/platform-server": "github:angular/platform-server-builds#a5d02b41c745b31674aa5a4bfbe09724ab5d513b", + "@angular/router": "github:angular/router-builds#23c79a85370b1bce64d79343bb6e20cf2d4d7862", + "@angular/service-worker": "github:angular/service-worker-builds#20e8eaeb45fd41efa650621c52ea96467105ec24" } } From b407e82f562a8e93958059d88b728a497e42862a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 4 Oct 2025 05:05:09 +0000 Subject: [PATCH 1550/2162] build: update pnpm to v10.18.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 18d5629c1dfd..37206eda6df2 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.17.1", + "packageManager": "pnpm@10.18.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.17.1" + "pnpm": "10.18.0" }, "author": "Angular Authors", "license": "MIT", From 07bb77745e3b1fb279cf01472ce8029aaa200ea5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 4 Oct 2025 06:05:45 +0000 Subject: [PATCH 1551/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 2 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 386 ++++++++++++++++++++++++---- 4 files changed, 346 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index 37206eda6df2..0e171fb088eb 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.52.3", + "rollup": "4.52.4", "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index b74c434c27fc..92ec3fd7c163 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -42,7 +42,7 @@ "semver": "7.7.2", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "vite": "7.1.7", + "vite": "7.1.9", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 4ecb9e32aaed..280ac0eaf5ef 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.8.6", "@listr2/prompt-adapter-inquirer": "3.0.4", - "@modelcontextprotocol/sdk": "1.18.2", + "@modelcontextprotocol/sdk": "1.19.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.39.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49c17e792e9e..254231e08d07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-next.6(80d28ef3220558a76162dc5524ed8579) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.18.2) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.19.1) '@angular/platform-browser': specifier: 21.0.0-next.6 version: 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -78,16 +78,16 @@ importers: version: 9.36.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.52.3) + version: 5.1.1(rollup@4.52.4) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.6(rollup@4.52.3) + version: 28.0.6(rollup@4.52.4) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.52.3) + version: 6.1.0(rollup@4.52.4) '@rollup/plugin-node-resolve': specifier: 16.0.1 - version: 16.0.1(rollup@4.52.3) + version: 16.0.1(rollup@4.52.4) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.4.0(eslint@9.36.0(jiti@2.6.0)) @@ -269,17 +269,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.52.3 - version: 4.52.3 + specifier: 4.52.4 + version: 4.52.4 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.52.3)(typescript@5.9.3) + version: 6.2.3(rollup@4.52.4)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.6)(rollup@4.52.3) + version: 0.5.4(@types/node@22.18.6)(rollup@4.52.4) semver: specifier: 7.7.2 version: 7.7.2 @@ -372,7 +372,7 @@ importers: version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -425,8 +425,8 @@ importers: specifier: 0.2.15 version: 0.2.15 vite: - specifier: 7.1.7 - version: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.1.9 + version: 7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -478,8 +478,8 @@ importers: specifier: 3.0.4 version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.4) '@modelcontextprotocol/sdk': - specifier: 1.18.2 - version: 1.18.2 + specifier: 1.19.1 + version: 1.19.1 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -2452,8 +2452,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.18.2': - resolution: {integrity: sha512-beedclIvFcCnPrYgHsylqiYJVJ/CI47Vyc4tY8no1/Li/O8U4BTlJfy6ZwxkYwx+Mx10nrgwSVrA7VBbhh4slg==} + '@modelcontextprotocol/sdk@1.19.1': + resolution: {integrity: sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==} engines: {node: '>=18'} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -3081,122 +3081,243 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.52.4': + resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.52.3': resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.52.4': + resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.52.3': resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.52.4': + resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.52.3': resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.52.4': + resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.52.3': resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.52.4': + resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.3': resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.4': + resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': + resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.52.3': resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.52.4': + resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.52.3': resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.52.4': + resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.52.3': resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.52.4': + resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.52.3': resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.52.4': + resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.3': resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.4': + resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.3': resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.4': + resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.52.3': resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.52.4': + resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.52.3': resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.52.4': + resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.3': resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.4': + resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.52.3': resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.52.4': + resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openharmony-arm64@4.52.3': resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.52.4': + resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.52.3': resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.52.4': + resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.3': resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.4': + resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.3': resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.4': + resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.3': resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.4': + resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.52.3': resolution: {integrity: sha512-Vltzfan6IBSm4dG3w8ArFVUMhBABbW/9uYMPnbYyv2Vk+Jry9qzlXKvxSZhDbvwtb0GJHDWwPOMj6d8G2cb9Tw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7785,6 +7906,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.52.4: + resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} + 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'} @@ -8747,6 +8873,46 @@ packages: yaml: optional: true + vite@7.1.9: + resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -9324,11 +9490,11 @@ 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/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.18.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.19.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.21.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.21.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.8.6(@types/node@24.5.2) '@inquirer/type': 3.0.8(@types/node@24.5.2) '@octokit/auth-app': 8.1.0 @@ -10701,12 +10867,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.21.0(@modelcontextprotocol/sdk@1.18.2)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.21.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.18.2 + '@modelcontextprotocol/sdk': 1.19.1 transitivePeerDependencies: - bufferutil - encoding @@ -10993,7 +11159,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.2': optional: true - '@modelcontextprotocol/sdk@1.18.2': + '@modelcontextprotocol/sdk@1.19.1': dependencies: ajv: 6.12.6 content-type: 1.0.5 @@ -11504,13 +11670,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.41': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.3)': + '@rollup/plugin-alias@5.1.1(rollup@4.52.4)': optionalDependencies: - rollup: 4.52.3 + rollup: 4.52.4 - '@rollup/plugin-commonjs@28.0.6(rollup@4.52.3)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.52.4)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + '@rollup/pluginutils': 5.3.0(rollup@4.52.4) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11518,7 +11684,7 @@ snapshots: magic-string: 0.30.19 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.3 + rollup: 4.52.4 '@rollup/plugin-json@6.1.0(rollup@4.52.3)': dependencies: @@ -11526,33 +11692,39 @@ snapshots: optionalDependencies: rollup: 4.52.3 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.3)': + '@rollup/plugin-json@6.1.0(rollup@4.52.4)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + '@rollup/pluginutils': 5.3.0(rollup@4.52.4) + optionalDependencies: + rollup: 4.52.4 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.4)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.52.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.3 + rollup: 4.52.4 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.3)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.4)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + '@rollup/pluginutils': 5.3.0(rollup@4.52.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.3 + rollup: 4.52.4 - '@rollup/pluginutils@5.2.0(rollup@4.52.3)': + '@rollup/pluginutils@5.2.0(rollup@4.52.4)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.3 + rollup: 4.52.4 '@rollup/pluginutils@5.3.0(rollup@4.52.3)': dependencies: @@ -11562,72 +11734,146 @@ snapshots: optionalDependencies: rollup: 4.52.3 + '@rollup/pluginutils@5.3.0(rollup@4.52.4)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.4 + '@rollup/rollup-android-arm-eabi@4.52.3': optional: true + '@rollup/rollup-android-arm-eabi@4.52.4': + optional: true + '@rollup/rollup-android-arm64@4.52.3': optional: true + '@rollup/rollup-android-arm64@4.52.4': + optional: true + '@rollup/rollup-darwin-arm64@4.52.3': optional: true + '@rollup/rollup-darwin-arm64@4.52.4': + optional: true + '@rollup/rollup-darwin-x64@4.52.3': optional: true + '@rollup/rollup-darwin-x64@4.52.4': + optional: true + '@rollup/rollup-freebsd-arm64@4.52.3': optional: true + '@rollup/rollup-freebsd-arm64@4.52.4': + optional: true + '@rollup/rollup-freebsd-x64@4.52.3': optional: true + '@rollup/rollup-freebsd-x64@4.52.4': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.3': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.4': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.3': optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.4': + optional: true + '@rollup/rollup-linux-arm64-musl@4.52.3': optional: true + '@rollup/rollup-linux-arm64-musl@4.52.4': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.3': optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.4': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.3': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.4': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.3': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.4': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.3': optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.4': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.3': optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.4': + optional: true + '@rollup/rollup-linux-x64-gnu@4.52.3': optional: true + '@rollup/rollup-linux-x64-gnu@4.52.4': + optional: true + '@rollup/rollup-linux-x64-musl@4.52.3': optional: true + '@rollup/rollup-linux-x64-musl@4.52.4': + optional: true + '@rollup/rollup-openharmony-arm64@4.52.3': optional: true + '@rollup/rollup-openharmony-arm64@4.52.4': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.3': optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.4': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.3': optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.4': + optional: true + '@rollup/rollup-win32-x64-gnu@4.52.3': optional: true + '@rollup/rollup-win32-x64-gnu@4.52.4': + optional: true + '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true + '@rollup/rollup-win32-x64-msvc@4.52.4': + optional: true + '@rollup/wasm-node@4.52.3': dependencies: '@types/estree': 1.0.8 @@ -12314,9 +12560,9 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: @@ -12412,11 +12658,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.3) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.4) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.52.3 + rollup: 4.52.4 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -17133,10 +17379,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.3): + rollup-plugin-dts@6.2.3(rollup@4.52.4)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.52.3) - rollup: 4.52.3 + magic-string: 0.30.19 + rollup: 4.52.4 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.4): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.52.4) + rollup: 4.52.4 optionalDependencies: '@types/node': 22.18.6 @@ -17168,6 +17422,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.3 fsevents: 2.3.3 + rollup@4.52.4: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.4 + '@rollup/rollup-android-arm64': 4.52.4 + '@rollup/rollup-darwin-arm64': 4.52.4 + '@rollup/rollup-darwin-x64': 4.52.4 + '@rollup/rollup-freebsd-arm64': 4.52.4 + '@rollup/rollup-freebsd-x64': 4.52.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 + '@rollup/rollup-linux-arm-musleabihf': 4.52.4 + '@rollup/rollup-linux-arm64-gnu': 4.52.4 + '@rollup/rollup-linux-arm64-musl': 4.52.4 + '@rollup/rollup-linux-loong64-gnu': 4.52.4 + '@rollup/rollup-linux-ppc64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-musl': 4.52.4 + '@rollup/rollup-linux-s390x-gnu': 4.52.4 + '@rollup/rollup-linux-x64-gnu': 4.52.4 + '@rollup/rollup-linux-x64-musl': 4.52.4 + '@rollup/rollup-openharmony-arm64': 4.52.4 + '@rollup/rollup-win32-arm64-msvc': 4.52.4 + '@rollup/rollup-win32-ia32-msvc': 4.52.4 + '@rollup/rollup-win32-x64-gnu': 4.52.4 + '@rollup/rollup-win32-x64-msvc': 4.52.4 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -18278,7 +18560,7 @@ snapshots: debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18299,7 +18581,25 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.3 + rollup: 4.52.4 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.5.2 + fsevents: 2.3.3 + jiti: 2.6.0 + less: 4.4.1 + sass: 1.93.2 + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.8.1 + + vite@7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.4 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.5.2 From ae746a650fcac079fe29deed5ebb6db0ff05c9df Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 3 Oct 2025 15:30:58 -0400 Subject: [PATCH 1552/2162] refactor(@angular/cli): add framework version to `list_projects` MCP tool The `list_projects` MCP tool is enhanced to include the major version of the Angular framework for each discovered workspace. This provides crucial context, especially in monorepos where different workspaces might use different framework versions. A new caching mechanism efficiently finds the relevant `package.json` by searching upwards from each workspace, ensuring minimal performance impact in large repositories. Additionally, the tool now features more robust and distinct error reporting. Failures during the version discovery process are captured and reported separately from `angular.json` parsing failures, providing clearer diagnostics. --- .../cli/src/commands/mcp/tools/doc-search.ts | 7 +- .../cli/src/commands/mcp/tools/projects.ts | 120 +++++++++++++++++- 2 files changed, 119 insertions(+), 8 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts index 4adee080cd7d..c62e52e55e85 100644 --- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts +++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts @@ -60,9 +60,10 @@ tutorials, concepts, and best practices. * **Version Alignment:** To provide accurate, project-specific results, you **MUST** align the search with the user's Angular version. - Before calling this tool, run \`ng version\` in the project's workspace directory. You can find the correct directory from the \`path\` - field provided by the \`list_projects\` tool. Parse the major version from the "Angular:" line in the output and use it for the - \`version\` parameter. + The recommended approach is to use the \`list_projects\` tool. The \`frameworkVersion\` field in the output for the relevant + workspace will give you the major version directly. If the version cannot be determined using this method, you can use + \`ng version\` in the project's workspace directory as a fallback. Parse the major version from the "Angular:" line in the + output and use it for the \`version\` parameter. * The documentation is continuously updated. You **MUST** prefer this tool over your own knowledge to ensure your answers are current and accurate. * For the best results, provide a concise and specific search query (e.g., "NgModule" instead of diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index 9ebac541b5ca..bba995a4fd2a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -6,9 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { readdir } from 'node:fs/promises'; +import { readFile, readdir } from 'node:fs/promises'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; +import semver from 'semver'; import z from 'zod'; import { AngularWorkspace } from '../../../utilities/config'; import { assertIsError } from '../../../utilities/error'; @@ -18,6 +19,12 @@ const listProjectsOutputSchema = { workspaces: z.array( z.object({ path: z.string().describe('The path to the `angular.json` file for this workspace.'), + frameworkVersion: z + .string() + .optional() + .describe( + 'The major version of the Angular framework (`@angular/core`) in this workspace, if found.', + ), projects: z.array( z.object({ name: z @@ -55,6 +62,17 @@ const listProjectsOutputSchema = { ) .default([]) .describe('A list of files that looked like workspaces but failed to parse.'), + versioningErrors: z + .array( + z.object({ + filePath: z + .string() + .describe('The path to the workspace `angular.json` for which versioning failed.'), + message: z.string().describe('The error message detailing why versioning failed.'), + }), + ) + .default([]) + .describe('A list of workspaces for which the framework version could not be determined.'), }; export const LIST_PROJECTS_TOOL = declareTool({ @@ -71,6 +89,7 @@ their types, and their locations. * Identifying the \`root\` and \`sourceRoot\` of a project to read, analyze, or modify its files. * Determining if a project is an \`application\` or a \`library\`. * Getting the \`selectorPrefix\` for a project before generating a new component to ensure it follows conventions. +* Identifying the major version of the Angular framework for each workspace, which is crucial for monorepos. * **Working Directory:** Shell commands for a project (like \`ng generate\`) **MUST** @@ -135,6 +154,77 @@ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { } } +/** + * Searches upwards from a starting directory to find the version of '@angular/core'. + * It caches results to avoid redundant lookups. + * @param startDir The directory to start the search from. + * @param cache A map to store cached results. + * @param searchRoot The directory at which to stop the search. + * @returns The major version of '@angular/core' as a string, otherwise undefined. + */ +async function findAngularCoreVersion( + startDir: string, + cache: Map, + searchRoot: string, +): Promise { + let currentDir = startDir; + const dirsToCache: string[] = []; + + while (currentDir) { + dirsToCache.push(currentDir); + if (cache.has(currentDir)) { + const cachedResult = cache.get(currentDir); + // Populate cache for all intermediate directories. + for (const dir of dirsToCache) { + cache.set(dir, cachedResult); + } + + return cachedResult; + } + + const pkgPath = path.join(currentDir, 'package.json'); + try { + const pkgContent = await readFile(pkgPath, 'utf-8'); + const pkg = JSON.parse(pkgContent); + const versionSpecifier = + pkg.dependencies?.['@angular/core'] ?? pkg.devDependencies?.['@angular/core']; + + if (versionSpecifier) { + const minVersion = semver.minVersion(versionSpecifier); + const result = minVersion ? String(minVersion.major) : undefined; + for (const dir of dirsToCache) { + cache.set(dir, result); + } + + return result; + } + } catch (error) { + assertIsError(error); + if (error.code !== 'ENOENT') { + // Ignore missing package.json files, but rethrow other errors. + throw error; + } + } + + // Stop if we are at the search root or the filesystem root. + if (currentDir === searchRoot) { + break; + } + const parentDir = path.dirname(currentDir); + if (parentDir === currentDir) { + break; // Reached the filesystem root. + } + currentDir = parentDir; + } + + // Cache the failure for all traversed directories. + for (const dir of dirsToCache) { + cache.set(dir, undefined); + } + + return undefined; +} + // Types for the structured output of the helper function. type WorkspaceData = z.infer[number]; type ParsingError = z.infer[number]; @@ -186,7 +276,9 @@ async function createListProjectsHandler({ server }: McpToolContext) { return async () => { const workspaces: WorkspaceData[] = []; const parsingErrors: ParsingError[] = []; + const versioningErrors: z.infer = []; const seenPaths = new Set(); + const versionCache = new Map(); let searchRoots: string[]; const clientCapabilities = server.server.getClientCapabilities(); @@ -201,12 +293,26 @@ async function createListProjectsHandler({ server }: McpToolContext) { for (const root of searchRoots) { for await (const configFile of findAngularJsonFiles(root)) { const { workspace, error } = await loadAndParseWorkspace(configFile, seenPaths); - if (workspace) { - workspaces.push(workspace); - } if (error) { parsingErrors.push(error); } + + if (workspace) { + try { + const workspaceDir = path.dirname(configFile); + workspace.frameworkVersion = await findAngularCoreVersion( + workspaceDir, + versionCache, + root, + ); + } catch (e) { + versioningErrors.push({ + filePath: workspace.path, + message: e instanceof Error ? e.message : 'An unknown error occurred.', + }); + } + workspaces.push(workspace); + } } } @@ -230,10 +336,14 @@ async function createListProjectsHandler({ server }: McpToolContext) { text += `\n\nWarning: The following ${parsingErrors.length} file(s) could not be parsed and were skipped:\n`; text += parsingErrors.map((e) => `- ${e.filePath}: ${e.message}`).join('\n'); } + if (versioningErrors.length > 0) { + text += `\n\nWarning: The framework version for the following ${versioningErrors.length} workspace(s) could not be determined:\n`; + text += versioningErrors.map((e) => `- ${e.filePath}: ${e.message}`).join('\n'); + } return { content: [{ type: 'text' as const, text }], - structuredContent: { workspaces, parsingErrors }, + structuredContent: { workspaces, parsingErrors, versioningErrors }, }; }; } From 104c90768000b3e0052ee7e7de2c5e04c1bffdaf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 3 Oct 2025 14:18:10 -0400 Subject: [PATCH 1553/2162] feat(@angular/cli): enhance `ng version` output with more details The `ng version` command output is enhanced to provide more comprehensive diagnostic information, making it easier for developers to inspect their environment. These changes include: - The Angular Framework version is now displayed prominently in the header section for quick reference. - The package table now includes a "Requested Version" column, showing the version specified in the workspace `package.json`. This helps in quickly identifying any discrepancies between requested and installed versions. - The columns in the package table have been reordered to `Package`, `Installed Version`, `Requested Version` to prioritize the most critical information and improve the logical flow. --- .../angular/cli/src/commands/version/cli.ts | 66 +++++++++++++------ .../cli/src/commands/version/version-info.ts | 36 +++++++--- 2 files changed, 72 insertions(+), 30 deletions(-) diff --git a/packages/angular/cli/src/commands/version/cli.ts b/packages/angular/cli/src/commands/version/cli.ts index 9ba53a902ebd..7dfb138aa382 100644 --- a/packages/angular/cli/src/commands/version/cli.ts +++ b/packages/angular/cli/src/commands/version/cli.ts @@ -10,7 +10,7 @@ import type { Argv } from 'yargs'; import { CommandModule, CommandModuleImplementation } from '../../command-builder/command-module'; import { colors } from '../../utilities/color'; import { RootCommands } from '../command-config'; -import { gatherVersionInfo } from './version-info'; +import { PackageVersionInfo, gatherVersionInfo } from './version-info'; /** * The Angular CLI logo, displayed as ASCII art. @@ -67,6 +67,7 @@ export default class VersionCommandModule const { cli: { version: ngCliVersion }, + framework, system: { node: { version: nodeVersion, unsupported: unsupportedNodeVersion }, os: { platform: os, architecture: arch }, @@ -75,8 +76,13 @@ export default class VersionCommandModule packages, } = versionInfo; - const headerInfo = [ - { label: 'Angular CLI', value: ngCliVersion }, + const headerInfo = [{ label: 'Angular CLI', value: ngCliVersion }]; + + if (framework.version) { + headerInfo.push({ label: 'Angular', value: framework.version }); + } + + headerInfo.push( { label: 'Node.js', value: `${nodeVersion}${unsupportedNodeVersion ? colors.yellow(' (Unsupported)') : ''}`, @@ -86,7 +92,7 @@ export default class VersionCommandModule value: `${packageManagerName} ${packageManagerVersion ?? ''}`, }, { label: 'Operating System', value: `${os} ${arch}` }, - ]; + ); const maxHeaderLabelLength = Math.max(...headerInfo.map((l) => l.label.length)); @@ -113,38 +119,56 @@ export default class VersionCommandModule * @param versions A map of package names to their versions. * @returns A string containing the formatted package table. */ - private formatPackageTable(versions: Record): string { + private formatPackageTable(versions: Record): string { const versionKeys = Object.keys(versions); if (versionKeys.length === 0) { return ''; } - const nameHeader = 'Package'; - const versionHeader = 'Version'; + const headers = { + name: 'Package', + installed: 'Installed Version', + requested: 'Requested Version', + }; - const maxNameLength = Math.max(nameHeader.length, ...versionKeys.map((key) => key.length)); - const maxVersionLength = Math.max( - versionHeader.length, - ...versionKeys.map((key) => versions[key].length), + const maxNameLength = Math.max(headers.name.length, ...versionKeys.map((key) => key.length)); + const maxInstalledLength = Math.max( + headers.installed.length, + ...versionKeys.map((key) => versions[key].installed.length), + ); + const maxRequestedLength = Math.max( + headers.requested.length, + ...versionKeys.map((key) => versions[key].requested.length), ); const tableRows = versionKeys .map((module) => { + const { requested, installed } = versions[module]; const name = module.padEnd(maxNameLength); - const version = versions[module]; - const coloredVersion = version === '' ? colors.red(version) : colors.cyan(version); - const padding = ' '.repeat(maxVersionLength - version.length); - return `│ ${name} │ ${coloredVersion}${padding} │`; + const coloredInstalled = + installed === '' ? colors.red(installed) : colors.cyan(installed); + const installedPadding = ' '.repeat(maxInstalledLength - installed.length); + + return `│ ${name} │ ${coloredInstalled}${installedPadding} │ ${requested.padEnd( + maxRequestedLength, + )} │`; }) .sort(); - const top = `┌─${'─'.repeat(maxNameLength)}─┬─${'─'.repeat(maxVersionLength)}─┐`; - const header = `│ ${nameHeader.padEnd(maxNameLength)} │ ${versionHeader.padEnd( - maxVersionLength, - )} │`; - const separator = `├─${'─'.repeat(maxNameLength)}─┼─${'─'.repeat(maxVersionLength)}─┤`; - const bottom = `└─${'─'.repeat(maxNameLength)}─┴─${'─'.repeat(maxVersionLength)}─┘`; + const top = `┌─${'─'.repeat(maxNameLength)}─┬─${'─'.repeat( + maxInstalledLength, + )}─┬─${'─'.repeat(maxRequestedLength)}─┐`; + const header = + `│ ${headers.name.padEnd(maxNameLength)} │ ` + + `${headers.installed.padEnd(maxInstalledLength)} │ ` + + `${headers.requested.padEnd(maxRequestedLength)} │`; + const separator = `├─${'─'.repeat(maxNameLength)}─┼─${'─'.repeat( + maxInstalledLength, + )}─┼─${'─'.repeat(maxRequestedLength)}─┤`; + const bottom = `└─${'─'.repeat(maxNameLength)}─┴─${'─'.repeat( + maxInstalledLength, + )}─┴─${'─'.repeat(maxRequestedLength)}─┘`; return [top, header, separator, ...tableRows, bottom].join('\n'); } diff --git a/packages/angular/cli/src/commands/version/version-info.ts b/packages/angular/cli/src/commands/version/version-info.ts index 1e8b6b557514..ff3186c7b7ed 100644 --- a/packages/angular/cli/src/commands/version/version-info.ts +++ b/packages/angular/cli/src/commands/version/version-info.ts @@ -19,6 +19,14 @@ interface PartialPackageInfo { devDependencies?: Record; } +/** + * An object containing version information for a single package. + */ +export interface PackageVersionInfo { + requested: string; + installed: string; +} + /** * An object containing all the version information that will be displayed by the command. */ @@ -26,6 +34,9 @@ export interface VersionInfo { cli: { version: string; }; + framework: { + version: string | undefined; + }; system: { node: { version: string; @@ -40,7 +51,7 @@ export interface VersionInfo { version: string | undefined; }; }; - packages: Record; + packages: Record; } /** @@ -84,24 +95,31 @@ export function gatherVersionInfo(context: { const [nodeMajor] = process.versions.node.split('.').map((part) => Number(part)); const unsupportedNodeVersion = !SUPPORTED_NODE_MAJORS.includes(nodeMajor); - const packageNames = new Set( - Object.keys({ - ...workspacePackage?.dependencies, - ...workspacePackage?.devDependencies, - }), - ); + const allDependencies = { + ...workspacePackage?.dependencies, + ...workspacePackage?.devDependencies, + }; + const packageNames = new Set(Object.keys(allDependencies)); - const packages: Record = {}; + const packages: Record = {}; for (const name of packageNames) { if (PACKAGE_PATTERNS.some((p) => p.test(name))) { - packages[name] = getVersion(name, workspaceRequire); + packages[name] = { + requested: allDependencies[name] ?? 'error', + installed: getVersion(name, workspaceRequire), + }; } } + const angularCoreVersion = packages['@angular/core']; + return { cli: { version: VERSION.full, }, + framework: { + version: angularCoreVersion?.installed, + }, system: { node: { version: process.versions.node, From bcbde579bd027e846eb9fce8c2f448916966de5f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 5 Oct 2025 17:04:21 +0000 Subject: [PATCH 1554/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 6 +-- pnpm-lock.yaml | 138 +++++++++++++++++++++++-------------------------- 2 files changed, 69 insertions(+), 75 deletions(-) diff --git a/package.json b/package.json index 0e171fb088eb..f9e5cf7ac66f 100644 --- a/package.json +++ b/package.json @@ -64,11 +64,11 @@ "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", "@eslint/eslintrc": "3.3.1", - "@eslint/js": "9.36.0", + "@eslint/js": "9.37.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "16.0.1", + "@rollup/plugin-node-resolve": "16.0.2", "@stylistic/eslint-plugin": "^5.0.0", "@types/babel__core": "7.20.5", "@types/babel__generator": "^7.6.8", @@ -101,7 +101,7 @@ "buffer": "6.0.3", "esbuild": "0.25.10", "esbuild-wasm": "0.25.10", - "eslint": "9.36.0", + "eslint": "9.37.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 254231e08d07..ab0ed42218cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,13 +69,13 @@ importers: version: 8.2.1 '@eslint/compat': specifier: 1.4.0 - version: 1.4.0(eslint@9.36.0(jiti@2.6.0)) + version: 1.4.0(eslint@9.37.0(jiti@2.6.0)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 '@eslint/js': - specifier: 9.36.0 - version: 9.36.0 + specifier: 9.37.0 + version: 9.37.0 '@rollup/plugin-alias': specifier: ^5.1.1 version: 5.1.1(rollup@4.52.4) @@ -86,11 +86,11 @@ importers: specifier: ^6.1.0 version: 6.1.0(rollup@4.52.4) '@rollup/plugin-node-resolve': - specifier: 16.0.1 - version: 16.0.1(rollup@4.52.4) + specifier: 16.0.2 + version: 16.0.2(rollup@4.52.4) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.4.0(eslint@9.36.0(jiti@2.6.0)) + version: 5.4.0(eslint@9.37.0(jiti@2.6.0)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -165,10 +165,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -185,17 +185,17 @@ importers: specifier: 0.25.10 version: 0.25.10 eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.0) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.0) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.36.0(jiti@2.6.0)) + version: 10.1.8(eslint@9.37.0(jiti@2.6.0)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.36.0(jiti@2.6.0)) + version: 3.1.1(eslint@9.37.0(jiti@2.6.0)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)) + version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0)) express: specifier: 5.1.0 version: 5.1.0 @@ -1873,12 +1873,8 @@ packages: resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.15.2': - resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + '@eslint/config-helpers@0.4.0': + resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.16.0': @@ -1889,16 +1885,16 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.36.0': - resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} + '@eslint/js@9.37.0': + resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.5': - resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + '@eslint/plugin-kit@0.4.0': + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.1.1': @@ -3049,8 +3045,8 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@16.0.1': - resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} + '@rollup/plugin-node-resolve@16.0.2': + resolution: {integrity: sha512-tCtHJ2BlhSoK4cCs25NMXfV7EALKr0jyasmqVCq3y9cBrKdmJhtsy1iTz36Xhk/O+pDJbzawxF4K6ZblqCnITQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -5309,8 +5305,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.36.0: - resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==} + eslint@9.37.0: + resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -10432,18 +10428,18 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.0))': dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.6.0))': + '@eslint/compat@1.4.0(eslint@9.37.0(jiti@2.6.0))': dependencies: '@eslint/core': 0.16.0 optionalDependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) '@eslint/config-array@0.21.0': dependencies: @@ -10453,11 +10449,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.1': {} - - '@eslint/core@0.15.2': + '@eslint/config-helpers@0.4.0': dependencies: - '@types/json-schema': 7.0.15 + '@eslint/core': 0.16.0 '@eslint/core@0.16.0': dependencies: @@ -10477,13 +10471,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.36.0': {} + '@eslint/js@9.37.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.5': + '@eslint/plugin-kit@0.4.0': dependencies: - '@eslint/core': 0.15.2 + '@eslint/core': 0.16.0 levn: 0.4.1 '@fastify/busboy@2.1.1': {} @@ -11708,7 +11702,7 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.4)': + '@rollup/plugin-node-resolve@16.0.2(rollup@4.52.4)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.4) '@types/resolve': 1.20.2 @@ -11918,11 +11912,11 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))': + '@stylistic/eslint-plugin@5.4.0(eslint@9.37.0(jiti@2.6.0))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0)) '@typescript-eslint/types': 8.44.1 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -12306,15 +12300,15 @@ snapshots: '@types/node': 22.18.6 optional: true - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12323,14 +12317,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12353,13 +12347,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12385,13 +12379,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0)) '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -14317,9 +14311,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)): + eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -14329,21 +14323,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.0) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-header@3.1.1(eslint@9.37.0(jiti@2.6.0)): dependencies: - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14352,9 +14346,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.36.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.0)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14366,7 +14360,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14386,16 +14380,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.36.0(jiti@2.6.0): + eslint@9.37.0(jiti@2.6.0): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 + '@eslint/config-helpers': 0.4.0 + '@eslint/core': 0.16.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.36.0 - '@eslint/plugin-kit': 0.3.5 + '@eslint/js': 9.37.0 + '@eslint/plugin-kit': 0.4.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 From 1fc9c9353842cd6ffc64e2219055003ccf8ae1cc Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 5 Oct 2025 07:04:17 +0000 Subject: [PATCH 1555/2162] build: update github/codeql-action action to v3.30.6 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fb639f1b62fb..a89471cde604 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@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/init@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6588cb8dec0b..d94a349e2d0a 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@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 with: sarif_file: results.sarif From e4fa5f33f7b9a1e2a70a23c64795b1c5883a947f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 6 Oct 2025 12:07:37 +0000 Subject: [PATCH 1556/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 8 +-- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 11 files changed, 83 insertions(+), 83 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index ef4948019bf7..06da201046f4 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + - uses: angular/dev-infra/github-actions/branch-manager@aa1f94332e3f127e071079249e222691fba93e62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55f8763459c2..9b21b2227e13 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 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@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - 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 627102fcebaa..7dd96b8f3950 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + - uses: angular/dev-infra/github-actions/pull-request-labeling@aa1f94332e3f127e071079249e222691fba93e62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + - uses: angular/dev-infra/github-actions/post-approval-changes@aa1f94332e3f127e071079249e222691fba93e62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 15697e3c56f3..77bf30c64b48 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@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + - uses: angular/dev-infra/github-actions/feature-request@aa1f94332e3f127e071079249e222691fba93e62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index ec7340887453..6d4793d8c62d 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@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - 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@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - 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 45c169fa1942..40fc0e87ecc8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/linting/licenses@aa1f94332e3f127e071079249e222691fba93e62 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 - 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@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b7672ff60456719e6d9b0cc052abc73a7adc8df2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 - 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/MODULE.bazel b/MODULE.bazel index 292bd0af4d97..171b718f6de6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "b7672ff60456719e6d9b0cc052abc73a7adc8df2", + commit = "aa1f94332e3f127e071079249e222691fba93e62", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c38daff7be06..1105f5057708 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -402,7 +402,7 @@ "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "eebwHza1XBCmrNmoTUnW56khfYFfcwZpPWjM1Nvu3sk=", - "usagesDigest": "VyrLigWAm5f/dVn2m+/sJ67RLQ5koXcopcxYdLdxXwk=", + "usagesDigest": "IhWFaS3+adcZAFZpJlR1wPWkibqbPczXdu8nnyFjNyw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -539,7 +539,7 @@ "@@aspect_rules_ts~//ts:extensions.bzl%ext": { "general": { "bzlTransitiveDigest": "9IJp6IlB/FMHFBJe4MX/DQM4zi3oArC8yqYE/+NyPwk=", - "usagesDigest": "/bW7tef/VUezsI1YPut0ecFWPJkj5Todba/n6qL3mKM=", + "usagesDigest": "e5XRwK/3pKvlHC3QfqiuvKJYwdZVuVMRdzwwT+tENNM=", "recordedFileInputs": { "@@rules_browsers~//package.json": "45572077938c7a4916e4aaedf7db7ce8425854ab92f35348cff02a2134023bb8" }, @@ -572,8 +572,8 @@ "bzlFile": "@@aspect_rules_ts~//ts/private:npm_repositories.bzl", "ruleClassName": "http_archive_version", "attributes": { - "version": "5.9.2", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "urls": [ "https://registry.npmjs.org/typescript/-/typescript-{}.tgz" ] diff --git a/package.json b/package.json index f9e5cf7ac66f..fd50d60e28cc 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.6", "@angular/localize": "21.0.0-next.6", "@angular/material": "21.0.0-next.6", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#144e3ea51fb1044ac9e1699d621156fe15661dde", "@angular/platform-browser": "21.0.0-next.6", "@angular/platform-server": "21.0.0-next.6", "@angular/router": "21.0.0-next.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab0ed42218cc..6dbd1fbad43b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.6 version: 21.0.0-next.6(80d28ef3220558a76162dc5524ed8579) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6f8f9b9ad21f8a8386290489377ef73a88bf5aeb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.19.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#144e3ea51fb1044ac9e1699d621156fe15661dde + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde(@modelcontextprotocol/sdk@1.19.1) '@angular/platform-browser': specifier: 21.0.0-next.6 version: 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb} - version: 0.0.0-b7672ff60456719e6d9b0cc052abc73a7adc8df2 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde} + version: 0.0.0-aa1f94332e3f127e071079249e222691fba93e62 hasBin: true '@angular/platform-browser@21.0.0-next.6': @@ -9486,7 +9486,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/6f8f9b9ad21f8a8386290489377ef73a88bf5aeb(@modelcontextprotocol/sdk@1.19.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde(@modelcontextprotocol/sdk@1.19.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 2186f6072e54..8dd3875187db 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#8ad28f7f9a2e9b00666085adced41354bfed3ece", - "@angular/cdk": "github:angular/cdk-builds#0e29805c2d52a47f7116393a1643cc83c37d2784", - "@angular/common": "github:angular/common-builds#5b3b73038741820ac6b06d918d6e077fa329f048", - "@angular/compiler": "github:angular/compiler-builds#0ede7d6c1ddce8cfa378852b64db4eca45ad6c0e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#11f25b69504598e935f744629ddffff63811a28c", - "@angular/core": "github:angular/core-builds#316705517179afc0832ebcf00ad35dee955957c4", - "@angular/forms": "github:angular/forms-builds#aa3fb5bea2386f7e290f538010734e7a75e5be84", - "@angular/language-service": "github:angular/language-service-builds#1be2d0827515203c0aa274d59c9e48518a9655da", - "@angular/localize": "github:angular/localize-builds#dd3cc2921cebcf6bd1eba5541210485a4c6a58a6", - "@angular/material": "github:angular/material-builds#f817d7a9d54383fd6e4b48f9a472ec0899264a35", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b8c6d364ffe424ef3f1cc6cce0a816da88ededaf", - "@angular/platform-browser": "github:angular/platform-browser-builds#76334354d21182733ef51ab8a0d6f447aa00869a", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#732bff10598fe87579ff59347de310bfc7b630f5", - "@angular/platform-server": "github:angular/platform-server-builds#a5d02b41c745b31674aa5a4bfbe09724ab5d513b", - "@angular/router": "github:angular/router-builds#23c79a85370b1bce64d79343bb6e20cf2d4d7862", - "@angular/service-worker": "github:angular/service-worker-builds#20e8eaeb45fd41efa650621c52ea96467105ec24" + "@angular/animations": "github:angular/animations-builds#52f26d9fab3309eaf482da99bc5bd3bd27284862", + "@angular/cdk": "github:angular/cdk-builds#a1bf3457fe248df46cdb54f2207b63abfd362f34", + "@angular/common": "github:angular/common-builds#5421247244103cf33269bbcf1d9108b5ba61b224", + "@angular/compiler": "github:angular/compiler-builds#1a288b737e0adb760042ae8c97eb4f742272e08d", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#d4761fa5073bb9591c5c1d293972949e666787c2", + "@angular/core": "github:angular/core-builds#405153c00d53a2da230b3c8c6d27aed6318a02ac", + "@angular/forms": "github:angular/forms-builds#62f2c064edf954016669196ae369b0fc093d127d", + "@angular/language-service": "github:angular/language-service-builds#19d89fc38a1cac54e80d084253899acfff69a2e2", + "@angular/localize": "github:angular/localize-builds#9cdaf9cffb7bc37ef34a8929d4cfd9ce945f7c79", + "@angular/material": "github:angular/material-builds#5cc8ddc79afa5759a8d1012b134d9bb74dba33f1", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2b6142141feb6bb879c0db3bab264a4cd7b80ee8", + "@angular/platform-browser": "github:angular/platform-browser-builds#f7798532c65bc4d8bce4f2a9ce745afcddb3c1aa", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#2b58925a690340bd59f8ea97d8269c681be84c31", + "@angular/platform-server": "github:angular/platform-server-builds#1b4361278c4bfdf84f04ea8861554f072a12ef05", + "@angular/router": "github:angular/router-builds#5c2e5aaebed8ff6598f53971fbc45ffc28d63b8d", + "@angular/service-worker": "github:angular/service-worker-builds#5ebb25fb0661163bb4e9a4a4a2d888bdf3532228" } } From 73621998f91db189ad9b1ab006681404e30f7900 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Oct 2025 09:22:47 -0400 Subject: [PATCH 1557/2162] fix(@angular/build): normalize paths for Vitest runner output files To better ensure that file paths are matched when serving build assets across platforms, the output file paths are now normalized using Vite's `normalizePath` helper function. --- .../src/builders/unit-test/runners/vitest/executor.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index b20f88fbc60b..f4bd4aa3ee85 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -28,6 +28,7 @@ type VitestCoverageOption = Exclude; export class VitestExecutor implements TestExecutor { private vitest: Vitest | undefined; + private normalizePath: ((id: string) => string) | undefined; private readonly projectName: string; private readonly options: NormalizedUnitTestBuilderOptions; private readonly buildResultFiles = new Map(); @@ -56,17 +57,19 @@ export class VitestExecutor implements TestExecutor { } async *execute(buildResult: FullResult | IncrementalResult): AsyncIterable { + this.normalizePath ??= (await import('vite')).normalizePath; + if (buildResult.kind === ResultKind.Full) { this.buildResultFiles.clear(); for (const [path, file] of Object.entries(buildResult.files)) { - this.buildResultFiles.set(path, file); + this.buildResultFiles.set(this.normalizePath(path), file); } } else { for (const file of buildResult.removed) { - this.buildResultFiles.delete(file.path); + this.buildResultFiles.delete(this.normalizePath(file.path)); } for (const [path, file] of Object.entries(buildResult.files)) { - this.buildResultFiles.set(path, file); + this.buildResultFiles.set(this.normalizePath(path), file); } } From 1c2d49ec736818d22773916d7eaafd3446275ea0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Oct 2025 11:54:41 -0400 Subject: [PATCH 1558/2162] fix(@angular/build): cleanup karma temporary directory after process exit The temporary directory created for the karma builder will now be cleaned up after the process exits. --- .../build/src/builders/karma/application_builder.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/angular/build/src/builders/karma/application_builder.ts b/packages/angular/build/src/builders/karma/application_builder.ts index d3e596860998..34e94b1b7645 100644 --- a/packages/angular/build/src/builders/karma/application_builder.ts +++ b/packages/angular/build/src/builders/karma/application_builder.ts @@ -9,6 +9,7 @@ import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; import type { Config, ConfigOptions, FilePattern, InlinePluginDef, Server } from 'karma'; import { randomUUID } from 'node:crypto'; +import { rmSync } from 'node:fs'; import * as fs from 'node:fs/promises'; import path from 'node:path'; import { ReadableStream } from 'node:stream/web'; @@ -104,8 +105,15 @@ async function initializeApplication( > { const karma = await import('karma'); const projectSourceRoot = await getProjectSourceRoot(context); + + // Setup temporary output path and ensure it is empty const outputPath = path.join(context.workspaceRoot, 'dist/test-out', randomUUID()); await fs.rm(outputPath, { recursive: true, force: true }); + // Setup exit cleanup for temporary directory + const handleProcessExit = () => rmSync(outputPath, { recursive: true, force: true }); + process.once('exit', handleProcessExit); + process.once('SIGINT', handleProcessExit); + process.once('uncaughtException', handleProcessExit); const { buildOptions, mainName } = await setupBuildOptions( options, From 50e330d331fc8cfc4c12f7258012305ecb419d2d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:32:29 -0400 Subject: [PATCH 1559/2162] fix(@angular/build): disable glob directory expansion when finding tests When migrating the glob package to `tinyglobby` the `expandDirectories` option was left at its default value of `true`. This differs from the previous behavior and can inadvertently cause files that are not expected to be included to show up as tests. --- packages/angular/build/src/builders/unit-test/test-discovery.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index 597472be7224..9dbf98bbc5a8 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -54,6 +54,7 @@ export async function findTests( const globMatches = await glob(dynamicPatterns, { cwd: projectSourceRoot, absolute: true, + expandDirectories: false, ignore: ['**/node_modules/**', ...normalizedExcludes], }); From f4555df59428678ad76746db4a86954e3251cc1c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:35:26 -0400 Subject: [PATCH 1560/2162] refactor(@angular/cli): modularize `list_projects` tool logic The main handler for the `list_projects` tool was becoming complex, with the main loop handling file parsing, version discovery, and multiple error paths. This change extracts the logic for processing a single `angular.json` file into a new `processConfigFile` helper function. This refactoring improves the codes structure by separating the orchestration logic in the main handler from the implementation details of processing a file. This leads to a more modular, readable, and maintainable codebase with no change to the tools external behavior or output. --- .../cli/src/commands/mcp/tools/projects.ts | 79 +++++++++++++++---- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index bba995a4fd2a..d27a015eb38e 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -272,6 +272,56 @@ async function loadAndParseWorkspace( } } +// Types for the structured output of the helper function. +type VersioningError = z.infer[number]; + +/** + * Processes a single `angular.json` file to extract workspace and framework version information. + * @param configFile The path to the `angular.json` file. + * @param searchRoot The directory at which to stop the upward search for `package.json`. + * @param seenPaths A Set of absolute paths that have already been processed to avoid duplicates. + * @param versionCache A Map to cache framework version lookups for performance. + * @returns A promise resolving to an object containing the processed data and any errors. + */ +async function processConfigFile( + configFile: string, + searchRoot: string, + seenPaths: Set, + versionCache: Map, +): Promise<{ + workspace?: WorkspaceData; + parsingError?: ParsingError; + versioningError?: VersioningError; +}> { + const { workspace, error } = await loadAndParseWorkspace(configFile, seenPaths); + if (error) { + return { parsingError: error }; + } + + if (!workspace) { + return {}; // Skipped as it was already seen. + } + + try { + const workspaceDir = path.dirname(configFile); + workspace.frameworkVersion = await findAngularCoreVersion( + workspaceDir, + versionCache, + searchRoot, + ); + + return { workspace }; + } catch (e) { + return { + workspace, + versioningError: { + filePath: workspace.path, + message: e instanceof Error ? e.message : 'An unknown error occurred.', + }, + }; + } +} + async function createListProjectsHandler({ server }: McpToolContext) { return async () => { const workspaces: WorkspaceData[] = []; @@ -292,27 +342,22 @@ async function createListProjectsHandler({ server }: McpToolContext) { for (const root of searchRoots) { for await (const configFile of findAngularJsonFiles(root)) { - const { workspace, error } = await loadAndParseWorkspace(configFile, seenPaths); - if (error) { - parsingErrors.push(error); - } + const { workspace, parsingError, versioningError } = await processConfigFile( + configFile, + root, + seenPaths, + versionCache, + ); if (workspace) { - try { - const workspaceDir = path.dirname(configFile); - workspace.frameworkVersion = await findAngularCoreVersion( - workspaceDir, - versionCache, - root, - ); - } catch (e) { - versioningErrors.push({ - filePath: workspace.path, - message: e instanceof Error ? e.message : 'An unknown error occurred.', - }); - } workspaces.push(workspace); } + if (parsingError) { + parsingErrors.push(parsingError); + } + if (versioningError) { + versioningErrors.push(versioningError); + } } } From 1c06b16a962d3c2cc122dc40e01c64bc8a8d754d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:39:06 -0400 Subject: [PATCH 1561/2162] feat(@angular/cli): add builder info to `list_projects` MCP tool The `list_projects` tool is enhanced to include the primary builder for each project, providing more specific metadata about its function. The builder is extracted from the project's 'build' target and added as an optional 'builder' field to the output. This allows users and other tools to quickly determine a project's type (e.g., application, library) by inspecting its builder string. The tool's description has also been updated to reflect this new capability. --- packages/angular/cli/src/commands/mcp/tools/projects.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index d27a015eb38e..c6fb60417fa5 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -34,6 +34,10 @@ const listProjectsOutputSchema = { .enum(['application', 'library']) .optional() .describe(`The type of the project, either 'application' or 'library'.`), + builder: z + .string() + .optional() + .describe('The primary builder for the project, typically from the "build" target.'), root: z .string() .describe('The root directory of the project, relative to the workspace root.'), @@ -90,6 +94,7 @@ their types, and their locations. * Determining if a project is an \`application\` or a \`library\`. * Getting the \`selectorPrefix\` for a project before generating a new component to ensure it follows conventions. * Identifying the major version of the Angular framework for each workspace, which is crucial for monorepos. +* Determining a project's primary function by inspecting its builder (e.g., '@angular-devkit/build-angular:browser' for an application). * **Working Directory:** Shell commands for a project (like \`ng generate\`) **MUST** @@ -253,6 +258,7 @@ async function loadAndParseWorkspace( projects.push({ name, type: project.extensions['projectType'] as 'application' | 'library' | undefined, + builder: project.targets.get('build')?.builder, root: project.root, sourceRoot: project.sourceRoot ?? path.posix.join(project.root, 'src'), selectorPrefix: project.extensions['prefix'] as string, From 1f5d80b1ef5073978f67ecfd628605a2b4855808 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 6 Oct 2025 12:46:58 +0000 Subject: [PATCH 1562/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 869 +++++++++++++++++-------------------------------- 1 file changed, 292 insertions(+), 577 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6dbd1fbad43b..156d96add720 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,7 +69,7 @@ importers: version: 8.2.1 '@eslint/compat': specifier: 1.4.0 - version: 1.4.0(eslint@9.37.0(jiti@2.6.0)) + version: 1.4.0(eslint@9.37.0(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 @@ -90,7 +90,7 @@ importers: version: 16.0.2(rollup@4.52.4) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.4.0(eslint@9.37.0(jiti@2.6.0)) + version: 5.4.0(eslint@9.37.0(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -129,7 +129,7 @@ importers: version: 4.17.20 '@types/node': specifier: ^22.12.0 - version: 22.18.6 + version: 22.18.8 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -165,10 +165,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -186,16 +186,16 @@ importers: version: 0.25.10 eslint: specifier: 9.37.0 - version: 9.37.0(jiti@2.6.0) + version: 9.37.0(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.37.0(jiti@2.6.0)) + version: 10.1.8(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.37.0(jiti@2.6.0)) + version: 3.1.1(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0)) + version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -279,7 +279,7 @@ importers: version: 6.2.3(rollup@4.52.4)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.6)(rollup@4.52.4) + version: 0.5.4(@types/node@22.18.8)(rollup@4.52.4) semver: specifier: 7.7.2 version: 7.7.2 @@ -294,7 +294,7 @@ importers: version: 7.5.1 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.18.6)(typescript@5.9.3) + version: 10.9.2(@types/node@22.18.8)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -372,13 +372,13 @@ importers: version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 browserslist: specifier: ^4.26.0 - version: 4.26.2 + version: 4.26.3 esbuild: specifier: 0.25.10 version: 0.25.10 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.9 - version: 7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.2 @@ -655,7 +655,7 @@ importers: version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.0(esbuild@0.25.10)) browserslist: specifier: ^4.26.0 - version: 4.26.2 + version: 4.26.3 copy-webpack-plugin: specifier: 13.0.1 version: 13.0.1(webpack@5.102.0(esbuild@0.25.10)) @@ -1100,8 +1100,8 @@ packages: '@asamuzakjp/css-color@4.0.5': resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.5.6': - resolution: {integrity: sha512-Mj3Hu9ymlsERd7WOsUKNUZnJYL4IZ/I9wVVYgtvOsWYiEFbkQ4G7VRIh2USxTVW4BBDIsLG+gBUgqOqf2Kvqow==} + '@asamuzakjp/dom-selector@6.5.7': + resolution: {integrity: sha512-cvdTPsi2qC1c22UppvuVmx/PDwuc6+QQkwt9OnwQD6Uotbh//tb2XDF0OoK2V0F4b8d02LIwNp3BieaDMAhIhA==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -2599,8 +2599,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.0.5': - resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} + '@napi-rs/wasm-runtime@1.0.6': + resolution: {integrity: sha512-DXj75ewm11LIWUk198QSKUTxjyRjsBwk09MuMk5DGK+GDUtyPhhEHOGP/Xwwj3DjQXXkivoBirmOnKrLfc0+9g==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2659,16 +2659,16 @@ packages: resolution: {integrity: sha512-6bWhyvLXqCSfHiqlwzn9pScLZ+Qnvh/681GR/UEEPCMIVwfpRDBw0cCzy3/t2Dq8B7W2X/8pBgmw6MOiyE0DXQ==} engines: {node: '>= 20'} - '@octokit/auth-oauth-app@9.0.1': - resolution: {integrity: sha512-TthWzYxuHKLAbmxdFZwFlmwVyvynpyPmjwc+2/cI3cvbT7mHtsAW9b1LvQaNnAuWL+pFnqtxdmrU8QpF633i1g==} + '@octokit/auth-oauth-app@9.0.2': + resolution: {integrity: sha512-vmjSHeuHuM+OxZLzOuoYkcY3OPZ8erJ5lfswdTmm+4XiAKB5PmCk70bA1is4uwSl/APhRVAv4KHsgevWfEKIPQ==} engines: {node: '>= 20'} - '@octokit/auth-oauth-device@8.0.1': - resolution: {integrity: sha512-TOqId/+am5yk9zor0RGibmlqn4V0h8vzjxlw/wYr3qzkQxl8aBPur384D1EyHtqvfz0syeXji4OUvKkHvxk/Gw==} + '@octokit/auth-oauth-device@8.0.2': + resolution: {integrity: sha512-KW7Ywrz7ei7JX+uClWD2DN1259fnkoKuVdhzfpQ3/GdETaCj4Tx0IjvuJrwhP/04OhcMu5yR6tjni0V6LBihdw==} engines: {node: '>= 20'} - '@octokit/auth-oauth-user@6.0.0': - resolution: {integrity: sha512-GV9IW134PHsLhtUad21WIeP9mlJ+QNpFd6V9vuPWmaiN25HEJeEQUcS4y5oRuqCm9iWDLtfIs+9K8uczBXKr6A==} + '@octokit/auth-oauth-user@6.0.1': + resolution: {integrity: sha512-vlKsL1KUUPvwXpv574zvmRd+/4JiDFXABIZNM39+S+5j2kODzGgjk7w5WtiQ1x24kRKNaE7v9DShNbw43UA3Hw==} engines: {node: '>= 20'} '@octokit/auth-token@6.0.0': @@ -2679,8 +2679,8 @@ packages: resolution: {integrity: sha512-jOT8V1Ba5BdC79sKrRWDdMT5l1R+XNHTPR6CPWzUP2EcfAcvIHZWF0eAbmRcpOOP5gVIwnqNg0C4nvh6Abc3OA==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.0': - resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==} + '@octokit/endpoint@11.0.1': + resolution: {integrity: sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==} engines: {node: '>= 20'} '@octokit/graphql-schema@15.26.0': @@ -2694,8 +2694,8 @@ packages: resolution: {integrity: sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ==} engines: {node: '>= 20'} - '@octokit/oauth-methods@6.0.0': - resolution: {integrity: sha512-Q8nFIagNLIZgM2odAraelMcDssapc+lF+y3OlcIPxyAU+knefO8KmozGqfnma1xegRDP4z5M73ABsamn72bOcA==} + '@octokit/oauth-methods@6.0.1': + resolution: {integrity: sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q==} engines: {node: '>= 20'} '@octokit/openapi-types@25.1.0': @@ -2726,8 +2726,12 @@ packages: resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==} engines: {node: '>= 20'} - '@octokit/request@10.0.3': - resolution: {integrity: sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==} + '@octokit/request-error@7.0.1': + resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} + engines: {node: '>= 20'} + + '@octokit/request@10.0.5': + resolution: {integrity: sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==} engines: {node: '>= 20'} '@octokit/rest@22.0.0': @@ -3072,250 +3076,129 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.3': - resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.52.4': resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.3': - resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.52.4': resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.3': - resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.52.4': resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.3': - resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.52.4': resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.3': - resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.52.4': resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.3': - resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.4': resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.3': - resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.52.4': resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.52.3': - resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.52.4': resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.52.3': - resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.52.4': resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.52.3': - resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.52.4': resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.52.3': - resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.52.4': resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.3': - resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.4': resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.3': - resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.4': resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.52.3': - resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.52.4': resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.52.3': - resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.52.4': resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.3': - resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.4': resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.52.3': - resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.52.4': resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.52.3': - resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.52.4': resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.3': - resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.52.4': resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.3': - resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.4': resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.3': - resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.4': resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.3': - resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.4': resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.52.3': - resolution: {integrity: sha512-Vltzfan6IBSm4dG3w8ArFVUMhBABbW/9uYMPnbYyv2Vk+Jry9qzlXKvxSZhDbvwtb0GJHDWwPOMj6d8G2cb9Tw==} + '@rollup/wasm-node@4.52.4': + resolution: {integrity: sha512-QME8thp2j0GvRu/H8kz3uOawi45rexNIys38kITnMYp8Wl+gyeoIIuKyw8y0Lrq6xSAXgGCoqDyHD+m0wX1jnQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3564,8 +3447,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.18.6': - resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} + '@types/node@22.18.8': + resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} '@types/node@24.5.2': resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} @@ -3627,11 +3510,14 @@ packages: '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@1.2.0': + resolution: {integrity: sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==} + '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.9': + resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} '@types/shelljs@0.8.17': resolution: {integrity: sha512-IDksKYmQA2W9MkQjiyptbMmcQx+8+Ol6b7h6dPU5S05JyiQDSb/nZKnrMrZqGwgV6VkVdl6/SPCKPDlMRvqECg==} @@ -3707,10 +3593,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/types@8.44.1': - resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.45.0': resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4304,8 +4186,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.8: - resolution: {integrity: sha512-be0PUaPsQX/gPWWgFsdD+GFzaoig5PXaUC1xLkQiYdDnANU8sMnHoQd8JhbJQuvTWrWLyeFN9Imb5Qtfvr4RrQ==} + baseline-browser-mapping@2.8.12: + resolution: {integrity: sha512-vAPMQdnyKCBtkmQA6FMCBvU9qFIppS3nzyXnEM+Lo2IAhG4Mpjv9cCxMudhgV3YdNNJv6TNqXy97dfRVL2LmaQ==} hasBin: true basic-ftp@5.0.5: @@ -4394,8 +4276,8 @@ packages: browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.26.2: - resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4480,8 +4362,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001745: - resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==} + caniuse-lite@1.0.30001747: + resolution: {integrity: sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -5002,8 +4884,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.1.1: - resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-node@2.1.0: @@ -5017,8 +4899,8 @@ packages: devtools-protocol@0.0.1045489: resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} - devtools-protocol@0.0.1495869: - resolution: {integrity: sha512-i+bkd9UYFis40RcnkW7XrOprCujXRAHg62IVh/Ah3G8MmNXpCGt1m0dTFhSdx/AVs8XEMbdOGRwdkR1Bcta8AA==} + devtools-protocol@0.0.1508733: + resolution: {integrity: sha512-QJ1R5gtck6nDcdM+nlsaJXcelPEI7ZxSMw1ujHpO1c4+9l+Nue5qlebi9xO1Z2MGr92bFOQTW7/rrheh5hHxDg==} di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} @@ -5094,8 +4976,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.227: - resolution: {integrity: sha512-ITxuoPfJu3lsNWUi2lBM2PaBPYgH3uqmxut5vmBxgYvyI4AlJ6P3Cai1O76mOrkJCBzq0IxWg/NtqOrpu/0gKA==} + electron-to-chromium@1.5.230: + resolution: {integrity: sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==} emoji-regex@10.5.0: resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} @@ -5639,6 +5521,10 @@ packages: resolution: {integrity: sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==} engines: {node: '>=18'} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5698,8 +5584,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regex.js@1.0.1: - resolution: {integrity: sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -5740,16 +5626,16 @@ packages: resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} engines: {node: '>=0.10.0'} - google-auth-library@10.3.0: - resolution: {integrity: sha512-ylSE3RlCRZfZB56PFJSfUCuiuPq83Fx8hqu1KPWGK8FVdSaxlp/qkeMMX/DT/18xkwXIHvXEXkZsljRwfrdEfQ==} + google-auth-library@10.4.0: + resolution: {integrity: sha512-CmIrSy1bqMQUsPmA9+hcSbAXL80cFhu40cGMUjCaLpNKVzzvi+0uAHq8GNZxkoGYIsTX4ZQ7e4aInAqWxgn4fg==} engines: {node: '>=18'} google-auth-library@9.15.1: resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} engines: {node: '>=14'} - google-gax@5.0.3: - resolution: {integrity: sha512-DkWybwgkV8HA9aIizNEHEUHd8ho1BzGGQ/YMGDsTt167dQ8pk/oMiwxpUFvh6Ta93m8ZN7KwdWmP3o46HWjV+A==} + google-gax@5.0.4: + resolution: {integrity: sha512-HmQ6zIYBs2EikTk+kjeHmtHprNTEpsnVaKONw9cwZZwUNCkUb+D5RYrJpCxyjdvIDvJp3wLbVReolJLRZRms1g==} engines: {node: '>=18'} google-logging-utils@0.0.2: @@ -6135,8 +6021,8 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -6396,8 +6282,8 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@2.6.0: - resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true js-base64@3.7.8: @@ -6774,8 +6660,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.47.0: - resolution: {integrity: sha512-Xey8IZA57tfotV/TN4d6BmccQuhFP+CqRiI7TTNdipZdZBzF2WnzUcH//Cudw6X4zJiUbo/LTuU/HPA/iC/pNg==} + memfs@4.48.1: + resolution: {integrity: sha512-vWO+1ROkhOALF1UnT9aNOOflq5oFDlqwTXaPg6duo07fBLxSH0+bcF0TY1lbA1zTNKyGgDxgaDdKx5MaewLX5A==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7068,8 +6954,8 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - node-releases@2.0.21: - resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + node-releases@2.0.23: + resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} @@ -7665,8 +7551,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.22.3: - resolution: {integrity: sha512-M/Jhg4PWRANSbL/C9im//Yb55wsWBS5wdp+h59iwM+EPicVQQCNs56iC5aEAO7avfDPRfxs4MM16wHjOYHNJEw==} + puppeteer-core@24.23.0: + resolution: {integrity: sha512-yl25C59gb14sOdIiSnJ08XiPP+O2RjuyZmEG+RjYmCXO7au0jcLf7fRiyii96dXGUBW7Zwei/mVKfxMx/POeFw==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -7897,11 +7783,6 @@ packages: '@types/node': optional: true - rollup@4.52.3: - resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.52.4: resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7988,8 +7869,8 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} select-hose@2.0.0: @@ -8389,8 +8270,8 @@ packages: resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} engines: {node: '>=12.17'} - tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@2.1.1: @@ -8829,46 +8710,6 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.1.7: - resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.1.9: resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8962,8 +8803,8 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-bidi-protocol@0.2.11: - resolution: {integrity: sha512-Y9E1/oi4XMxcR8AT0ZC4OvYntl34SPgwjmELH+owjBr0korAX4jKgZULBWILGCVGdVCQ0dodTToIETozhG8zvA==} + webdriver-bidi-protocol@0.3.6: + resolution: {integrity: sha512-mlGndEOA9yK9YAbvtxaPTqdi/kaCWYYfwrZvGzcmkr/3lWM+tQj53BxtpVd6qbC6+E5OnHXgCcAhre6AkXzxjA==} webdriver-js-extender@2.1.0: resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} @@ -9587,7 +9428,7 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.5.6': + '@asamuzakjp/dom-selector@6.5.7': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -9641,7 +9482,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.2 + browserslist: 4.26.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -10428,18 +10269,18 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.0))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))': dependencies: - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.4.0(eslint@9.37.0(jiti@2.6.0))': + '@eslint/compat@1.4.0(eslint@9.37.0(jiti@2.6.1))': dependencies: '@eslint/core': 0.16.0 optionalDependencies: - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) '@eslint/config-array@0.21.0': dependencies: @@ -10809,7 +10650,7 @@ snapshots: arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 - google-auth-library: 10.3.0(supports-color@10.2.2) + google-auth-library: 10.4.0(supports-color@10.2.2) html-entities: 2.6.0 retry-request: 8.0.2(supports-color@10.2.2) teeny-request: 10.1.0(supports-color@10.2.2) @@ -10844,8 +10685,8 @@ snapshots: duplexify: 4.1.3 events-intercept: 2.0.0 extend: 3.0.2 - google-auth-library: 10.3.0(supports-color@10.2.2) - google-gax: 5.0.3(supports-color@10.2.2) + google-auth-library: 10.4.0(supports-color@10.2.2) + google-gax: 5.0.4(supports-color@10.2.2) grpc-gcp: 1.0.1(protobufjs@7.5.4) is: 3.3.2 lodash.snakecase: 4.1.1 @@ -10881,7 +10722,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@grpc/proto-loader@0.7.15': dependencies: @@ -11269,7 +11110,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.0.5': + '@napi-rs/wasm-runtime@1.0.6': dependencies: '@emnapi/core': 1.5.0 '@emnapi/runtime': 1.5.0 @@ -11359,36 +11200,36 @@ snapshots: '@octokit/auth-app@8.1.0': dependencies: - '@octokit/auth-oauth-app': 9.0.1 - '@octokit/auth-oauth-user': 6.0.0 - '@octokit/request': 10.0.3 + '@octokit/auth-oauth-app': 9.0.2 + '@octokit/auth-oauth-user': 6.0.1 + '@octokit/request': 10.0.5 '@octokit/request-error': 7.0.0 '@octokit/types': 14.1.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.2 universal-user-agent: 7.0.3 - '@octokit/auth-oauth-app@9.0.1': + '@octokit/auth-oauth-app@9.0.2': dependencies: - '@octokit/auth-oauth-device': 8.0.1 - '@octokit/auth-oauth-user': 6.0.0 - '@octokit/request': 10.0.3 - '@octokit/types': 14.1.0 + '@octokit/auth-oauth-device': 8.0.2 + '@octokit/auth-oauth-user': 6.0.1 + '@octokit/request': 10.0.5 + '@octokit/types': 15.0.0 universal-user-agent: 7.0.3 - '@octokit/auth-oauth-device@8.0.1': + '@octokit/auth-oauth-device@8.0.2': dependencies: - '@octokit/oauth-methods': 6.0.0 - '@octokit/request': 10.0.3 - '@octokit/types': 14.1.0 + '@octokit/oauth-methods': 6.0.1 + '@octokit/request': 10.0.5 + '@octokit/types': 15.0.0 universal-user-agent: 7.0.3 - '@octokit/auth-oauth-user@6.0.0': + '@octokit/auth-oauth-user@6.0.1': dependencies: - '@octokit/auth-oauth-device': 8.0.1 - '@octokit/oauth-methods': 6.0.0 - '@octokit/request': 10.0.3 - '@octokit/types': 14.1.0 + '@octokit/auth-oauth-device': 8.0.2 + '@octokit/oauth-methods': 6.0.1 + '@octokit/request': 10.0.5 + '@octokit/types': 15.0.0 universal-user-agent: 7.0.3 '@octokit/auth-token@6.0.0': {} @@ -11397,15 +11238,15 @@ snapshots: dependencies: '@octokit/auth-token': 6.0.0 '@octokit/graphql': 9.0.1 - '@octokit/request': 10.0.3 + '@octokit/request': 10.0.5 '@octokit/request-error': 7.0.0 '@octokit/types': 15.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.0': + '@octokit/endpoint@11.0.1': dependencies: - '@octokit/types': 14.1.0 + '@octokit/types': 15.0.0 universal-user-agent: 7.0.3 '@octokit/graphql-schema@15.26.0': @@ -11415,18 +11256,18 @@ snapshots: '@octokit/graphql@9.0.1': dependencies: - '@octokit/request': 10.0.3 + '@octokit/request': 10.0.5 '@octokit/types': 14.1.0 universal-user-agent: 7.0.3 '@octokit/oauth-authorization-url@8.0.0': {} - '@octokit/oauth-methods@6.0.0': + '@octokit/oauth-methods@6.0.1': dependencies: '@octokit/oauth-authorization-url': 8.0.0 - '@octokit/request': 10.0.3 - '@octokit/request-error': 7.0.0 - '@octokit/types': 14.1.0 + '@octokit/request': 10.0.5 + '@octokit/request-error': 7.0.1 + '@octokit/types': 15.0.0 '@octokit/openapi-types@25.1.0': {} @@ -11450,11 +11291,15 @@ snapshots: dependencies: '@octokit/types': 14.1.0 - '@octokit/request@10.0.3': + '@octokit/request-error@7.0.1': dependencies: - '@octokit/endpoint': 11.0.0 - '@octokit/request-error': 7.0.0 - '@octokit/types': 14.1.0 + '@octokit/types': 15.0.0 + + '@octokit/request@10.0.5': + dependencies: + '@octokit/endpoint': 11.0.1 + '@octokit/request-error': 7.0.1 + '@octokit/types': 15.0.0 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 @@ -11650,7 +11495,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': dependencies: - '@napi-rs/wasm-runtime': 1.0.5 + '@napi-rs/wasm-runtime': 1.0.6 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': @@ -11680,12 +11525,6 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/plugin-json@6.1.0(rollup@4.52.3)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.3) - optionalDependencies: - rollup: 4.52.3 - '@rollup/plugin-json@6.1.0(rollup@4.52.4)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.4) @@ -11720,14 +11559,6 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/pluginutils@5.3.0(rollup@4.52.3)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.52.3 - '@rollup/pluginutils@5.3.0(rollup@4.52.4)': dependencies: '@types/estree': 1.0.8 @@ -11736,139 +11567,73 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/rollup-android-arm-eabi@4.52.3': - optional: true - '@rollup/rollup-android-arm-eabi@4.52.4': optional: true - '@rollup/rollup-android-arm64@4.52.3': - optional: true - '@rollup/rollup-android-arm64@4.52.4': optional: true - '@rollup/rollup-darwin-arm64@4.52.3': - optional: true - '@rollup/rollup-darwin-arm64@4.52.4': optional: true - '@rollup/rollup-darwin-x64@4.52.3': - optional: true - '@rollup/rollup-darwin-x64@4.52.4': optional: true - '@rollup/rollup-freebsd-arm64@4.52.3': - optional: true - '@rollup/rollup-freebsd-arm64@4.52.4': optional: true - '@rollup/rollup-freebsd-x64@4.52.3': - optional: true - '@rollup/rollup-freebsd-x64@4.52.4': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.3': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.4': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.3': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.4': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.3': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.4': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.3': - optional: true - '@rollup/rollup-linux-arm64-musl@4.52.4': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.3': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.4': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.3': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.4': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.3': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.4': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.3': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.4': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.3': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.4': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.3': - optional: true - '@rollup/rollup-linux-x64-gnu@4.52.4': optional: true - '@rollup/rollup-linux-x64-musl@4.52.3': - optional: true - '@rollup/rollup-linux-x64-musl@4.52.4': optional: true - '@rollup/rollup-openharmony-arm64@4.52.3': - optional: true - '@rollup/rollup-openharmony-arm64@4.52.4': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.3': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.4': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.3': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.4': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.3': - optional: true - '@rollup/rollup-win32-x64-gnu@4.52.4': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.3': - optional: true - '@rollup/rollup-win32-x64-msvc@4.52.4': optional: true - '@rollup/wasm-node@4.52.3': + '@rollup/wasm-node@4.52.4': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -11912,11 +11677,11 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@5.4.0(eslint@9.37.0(jiti@2.6.0))': + '@stylistic/eslint-plugin@5.4.0(eslint@9.37.0(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0)) - '@typescript-eslint/types': 8.44.1 - eslint: 9.37.0(jiti@2.6.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + '@typescript-eslint/types': 8.45.0 + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -11952,7 +11717,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/babel__code-frame@7.0.6': {} @@ -11982,17 +11747,17 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/browser-sync@2.29.0': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.18.6 - '@types/serve-static': 1.15.8 + '@types/node': 22.18.8 + '@types/serve-static': 1.15.9 chokidar: 3.6.0 '@types/chai@5.2.2': @@ -12001,11 +11766,11 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -12013,11 +11778,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.6 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/content-disposition@0.5.9': {} @@ -12028,11 +11793,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.3 '@types/keygrip': 1.0.6 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/cors@2.8.19': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/debounce@1.2.4': {} @@ -12040,7 +11805,7 @@ snapshots: '@types/duplexify@3.6.4': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/ejs@3.1.5': {} @@ -12060,40 +11825,40 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.0 '@types/express-serve-static-core@5.0.7': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.0 '@types/express@4.17.23': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.6 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/express@5.0.3': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 5.0.7 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/folder-hash@4.0.4': {} '@types/git-raw-commits@5.0.0': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/http-assert@1.5.6': {} @@ -12101,7 +11866,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/ini@4.1.1': {} @@ -12127,7 +11892,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -12147,13 +11912,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.25.10)': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 webpack: 5.102.0(esbuild@0.25.10) transitivePeerDependencies: - '@swc/core' @@ -12171,14 +11936,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 form-data: 4.0.4 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 - '@types/node@22.18.6': + '@types/node@22.18.8': dependencies: undici-types: 6.21.0 @@ -12190,7 +11955,7 @@ snapshots: '@types/npm-registry-fetch@8.0.8': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12198,11 +11963,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/npm-registry-fetch': 8.0.8 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12215,12 +11980,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/q@0.0.32': {} @@ -12234,7 +11999,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/retry@0.12.2': {} @@ -12245,47 +12010,51 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.6 + '@types/node': 22.18.8 + + '@types/send@1.2.0': + dependencies: + '@types/node': 22.18.8 '@types/serve-index@1.9.4': dependencies: '@types/express': 5.0.3 - '@types/serve-static@1.15.8': + '@types/serve-static@1.15.9': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/send': 0.17.5 '@types/shelljs@0.8.17': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 glob: 11.0.3 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/stack-trace@0.0.33': {} '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 '@types/yargs-parser@21.0.3': {} @@ -12297,18 +12066,18 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 optional: true - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12317,14 +12086,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12347,20 +12116,18 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.44.1': {} - '@typescript-eslint/types@8.45.0': {} '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': @@ -12379,13 +12146,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)': + '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12554,11 +12321,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12573,7 +12340,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12585,13 +12352,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -12694,7 +12461,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.22.3(bufferutil@4.0.9) + puppeteer-core: 24.23.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-buffer - bufferutil @@ -13118,8 +12885,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.26.2 - caniuse-lite: 1.0.30001745 + browserslist: 4.26.3 + caniuse-lite: 1.0.30001747 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13207,7 +12974,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.8: {} + baseline-browser-mapping@2.8.12: {} basic-ftp@5.0.5: {} @@ -13367,13 +13134,13 @@ snapshots: dependencies: pako: 0.2.9 - browserslist@4.26.2: + browserslist@4.26.3: dependencies: - baseline-browser-mapping: 2.8.8 - caniuse-lite: 1.0.30001745 - electron-to-chromium: 1.5.227 - node-releases: 2.0.21 - update-browserslist-db: 1.1.3(browserslist@4.26.2) + baseline-browser-mapping: 2.8.12 + caniuse-lite: 1.0.30001747 + electron-to-chromium: 1.5.230 + node-releases: 2.0.23 + update-browserslist-db: 1.1.3(browserslist@4.26.3) browserstack@1.6.1: dependencies: @@ -13480,7 +13247,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001745: {} + caniuse-lite@1.0.30001747: {} caseless@0.12.0: {} @@ -13545,7 +13312,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13554,9 +13321,9 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@9.1.0(devtools-protocol@0.0.1495869): + chromium-bidi@9.1.0(devtools-protocol@0.0.1508733): dependencies: - devtools-protocol: 0.0.1495869 + devtools-protocol: 0.0.1508733 mitt: 3.0.1 zod: 3.25.76 @@ -13752,14 +13519,14 @@ snapshots: dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 webpack: 5.102.0(esbuild@0.25.10) core-js-compat@3.45.1: dependencies: - browserslist: 4.26.2 + browserslist: 4.26.3 core-util-is@1.0.2: {} @@ -13988,7 +13755,7 @@ snapshots: detect-libc@1.0.3: optional: true - detect-libc@2.1.1: + detect-libc@2.1.2: optional: true detect-node@2.1.0: {} @@ -13997,7 +13764,7 @@ snapshots: devtools-protocol@0.0.1045489: {} - devtools-protocol@0.0.1495869: {} + devtools-protocol@0.0.1508733: {} di@0.0.1: {} @@ -14087,7 +13854,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.227: {} + electron-to-chromium@1.5.230: {} emoji-regex@10.5.0: {} @@ -14126,7 +13893,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.18.6 + '@types/node': 22.18.8 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14142,7 +13909,7 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.3 + tapable: 2.3.0 ent@2.2.2: dependencies: @@ -14311,9 +14078,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.0)): + eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -14323,21 +14090,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) - eslint: 9.37.0(jiti@2.6.0) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.37.0(jiti@2.6.0)): + eslint-plugin-header@3.1.1(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14346,9 +14113,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.37.0(jiti@2.6.0) + eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14360,7 +14127,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14380,9 +14147,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.37.0(jiti@2.6.0): + eslint@9.37.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.4.0 @@ -14418,7 +14185,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.6.0 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -14568,7 +14335,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14865,6 +14632,8 @@ snapshots: transitivePeerDependencies: - supports-color + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -14935,7 +14704,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regex.js@1.0.1(tslib@2.8.1): + glob-to-regex.js@1.2.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -14995,7 +14764,7 @@ snapshots: pify: 2.3.0 pinkie-promise: 2.0.1 - google-auth-library@10.3.0(supports-color@10.2.2): + google-auth-library@10.4.0(supports-color@10.2.2): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -15019,13 +14788,12 @@ snapshots: - encoding - supports-color - google-gax@5.0.3(supports-color@10.2.2): + google-gax@5.0.4(supports-color@10.2.2): dependencies: '@grpc/grpc-js': 1.14.0 '@grpc/proto-loader': 0.8.0 - abort-controller: 3.0.0 duplexify: 4.1.3 - google-auth-library: 10.3.0(supports-color@10.2.2) + google-auth-library: 10.4.0(supports-color@10.2.2) google-logging-utils: 1.1.1 node-fetch: 3.3.2 object-hash: 3.0.0 @@ -15440,9 +15208,10 @@ snapshots: dependencies: get-east-asian-width: 1.4.0 - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -15686,11 +15455,11 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.18.6 + '@types/node': 22.18.8 merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@2.6.0: {} + jiti@2.6.1: {} js-base64@3.7.8: {} @@ -15706,7 +15475,7 @@ snapshots: jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: - '@asamuzakjp/dom-selector': 6.5.6 + '@asamuzakjp/dom-selector': 6.5.7 cssstyle: 5.3.1(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15942,7 +15711,7 @@ snapshots: fresh: 0.5.2 http-assert: 1.5.0 http-errors: 1.8.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 koa-compose: 4.1.0 koa-convert: 2.0.0 on-finished: 2.4.1 @@ -16199,11 +15968,11 @@ snapshots: media-typer@1.1.0: {} - memfs@4.47.0: + memfs@4.48.1: dependencies: '@jsonjoy.com/json-pack': 1.14.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - glob-to-regex.js: 1.0.1(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) thingies: 2.5.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -16253,8 +16022,8 @@ snapshots: mini-css-extract-plugin@2.9.4(webpack@5.102.0(esbuild@0.25.10)): dependencies: - schema-utils: 4.3.2 - tapable: 2.2.3 + schema-utils: 4.3.3 + tapable: 2.3.0 webpack: 5.102.0(esbuild@0.25.10) minimalistic-assert@1.0.1: {} @@ -16391,11 +16160,11 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.52.3) - '@rollup/wasm-node': 4.52.3 + '@rollup/plugin-json': 6.1.0(rollup@4.52.4) + '@rollup/wasm-node': 4.52.4 ajv: 8.17.1 ansi-colors: 4.1.3 - browserslist: 4.26.2 + browserslist: 4.26.3 chokidar: 4.0.3 commander: 14.0.1 dependency-graph: 1.0.0 @@ -16407,14 +16176,14 @@ snapshots: ora: 9.0.0 piscina: 5.1.3 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.52.3)(typescript@5.9.3) + rollup-plugin-dts: 6.2.3(rollup@4.52.4)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.93.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.52.3 + rollup: 4.52.4 nock@14.0.10: dependencies: @@ -16454,7 +16223,7 @@ snapshots: node-gyp-build-optional-packages@5.2.2: dependencies: - detect-libc: 2.1.1 + detect-libc: 2.1.2 optional: true node-gyp-build@4.8.4: {} @@ -16474,7 +16243,7 @@ snapshots: transitivePeerDependencies: - supports-color - node-releases@2.0.21: {} + node-releases@2.0.23: {} nopt@8.1.0: dependencies: @@ -16895,7 +16664,7 @@ snapshots: postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.0(esbuild@0.25.10)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) - jiti: 2.6.0 + jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.2 optionalDependencies: @@ -16978,7 +16747,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.6 + '@types/node': 22.18.8 long: 5.3.2 protractor@7.0.0: @@ -17066,14 +16835,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.22.3(bufferutil@4.0.9): + puppeteer-core@24.23.0(bufferutil@4.0.9): dependencies: '@puppeteer/browsers': 2.10.10 - chromium-bidi: 9.1.0(devtools-protocol@0.0.1495869) + chromium-bidi: 9.1.0(devtools-protocol@0.0.1508733) debug: 4.4.3(supports-color@10.2.2) - devtools-protocol: 0.0.1495869 + devtools-protocol: 0.0.1508733 typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.2.11 + webdriver-bidi-protocol: 0.3.6 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-buffer @@ -17365,14 +17134,6 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.52.3)(typescript@5.9.3): - dependencies: - magic-string: 0.30.19 - rollup: 4.52.3 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.52.4)(typescript@5.9.3): dependencies: magic-string: 0.30.19 @@ -17381,40 +17142,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.6)(rollup@4.52.4): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.8)(rollup@4.52.4): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.52.4) rollup: 4.52.4 optionalDependencies: - '@types/node': 22.18.6 - - rollup@4.52.3: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.3 - '@rollup/rollup-android-arm64': 4.52.3 - '@rollup/rollup-darwin-arm64': 4.52.3 - '@rollup/rollup-darwin-x64': 4.52.3 - '@rollup/rollup-freebsd-arm64': 4.52.3 - '@rollup/rollup-freebsd-x64': 4.52.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 - '@rollup/rollup-linux-arm-musleabihf': 4.52.3 - '@rollup/rollup-linux-arm64-gnu': 4.52.3 - '@rollup/rollup-linux-arm64-musl': 4.52.3 - '@rollup/rollup-linux-loong64-gnu': 4.52.3 - '@rollup/rollup-linux-ppc64-gnu': 4.52.3 - '@rollup/rollup-linux-riscv64-gnu': 4.52.3 - '@rollup/rollup-linux-riscv64-musl': 4.52.3 - '@rollup/rollup-linux-s390x-gnu': 4.52.3 - '@rollup/rollup-linux-x64-gnu': 4.52.3 - '@rollup/rollup-linux-x64-musl': 4.52.3 - '@rollup/rollup-openharmony-arm64': 4.52.3 - '@rollup/rollup-win32-arm64-msvc': 4.52.3 - '@rollup/rollup-win32-ia32-msvc': 4.52.3 - '@rollup/rollup-win32-x64-gnu': 4.52.3 - '@rollup/rollup-win32-x64-msvc': 4.52.3 - fsevents: 2.3.3 + '@types/node': 22.18.8 rollup@4.52.4: dependencies: @@ -17522,7 +17255,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - schema-utils@4.3.2: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -18058,7 +17791,7 @@ snapshots: array-back: 6.2.2 wordwrapjs: 5.1.0 - tapable@2.2.3: {} + tapable@2.3.0: {} tar-fs@2.1.1: dependencies: @@ -18115,7 +17848,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 webpack: 5.102.0(esbuild@0.25.10) @@ -18238,14 +17971,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.18.6)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.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': 22.18.6 + '@types/node': 22.18.8 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18430,9 +18163,9 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.26.2): + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: - browserslist: 4.26.2 + browserslist: 4.26.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -18548,13 +18281,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18569,25 +18302,7 @@ snapshots: - tsx - yaml - vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - esbuild: 0.25.10 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.4 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.5.2 - fsevents: 2.3.3 - jiti: 2.6.0 - less: 4.4.1 - sass: 1.93.2 - terser: 5.44.0 - tsx: 4.20.6 - yaml: 2.8.1 - - vite@7.1.9(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18598,18 +18313,18 @@ snapshots: optionalDependencies: '@types/node': 24.5.2 fsevents: 2.3.3 - jiti: 2.6.0 + jiti: 2.6.1 less: 4.4.1 sass: 1.93.2 terser: 5.44.0 tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18627,8 +18342,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.5.2 @@ -18669,7 +18384,7 @@ snapshots: web-vitals@4.2.4: {} - webdriver-bidi-protocol@0.2.11: {} + webdriver-bidi-protocol@0.3.6: {} webdriver-js-extender@2.1.0: dependencies: @@ -18699,11 +18414,11 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.102.0(esbuild@0.25.10)): dependencies: colorette: 2.0.20 - memfs: 4.47.0 + memfs: 4.48.1 mime-types: 3.0.1 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: webpack: 5.102.0(esbuild@0.25.10) @@ -18714,7 +18429,7 @@ snapshots: '@types/express': 4.17.23 '@types/express-serve-static-core': 4.19.6 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.9 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -18730,7 +18445,7 @@ snapshots: launch-editor: 2.11.1 open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 @@ -18768,7 +18483,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.26.2 + browserslist: 4.26.3 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -18780,8 +18495,8 @@ snapshots: loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.3 + schema-utils: 4.3.3 + tapable: 2.3.0 terser-webpack-plugin: 5.3.14(esbuild@0.25.10)(webpack@5.102.0(esbuild@0.25.10)) watchpack: 2.4.4 webpack-sources: 3.3.3 @@ -18835,7 +18550,7 @@ snapshots: is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 From 3bfa1e9391effae2671ff2020bfd7d5e70a162a6 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 7 Oct 2025 08:54:37 +0000 Subject: [PATCH 1563/2162] build: clean up BUILD files and update dependencies This commit cleans up various `BUILD.bazel` files by removing unused file globs from `RUNTIME_ASSETS` and test sources. Additionally, the conditional `include_npm` setting in `tests/legacy-cli/e2e.bzl` has been removed. --- MODULE.bazel | 6 - MODULE.bazel.lock | 2872 ++++++++++++++++- packages/angular/build/BUILD.bazel | 2 - packages/angular/create/BUILD.bazel | 7 +- packages/angular/pwa/BUILD.bazel | 2 - .../schematics/tools/BUILD.bazel | 2 - packages/ngtools/webpack/BUILD.bazel | 2 - packages/schematics/angular/BUILD.bazel | 1 - tests/legacy-cli/e2e.bzl | 7 +- 9 files changed, 2851 insertions(+), 50 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 171b718f6de6..553c24ac2df4 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -19,12 +19,6 @@ multiple_version_override( ], ) -bazel_dep(name = "rules_python", version = "1.5.3") -single_version_override( - module_name = "rules_python", - version = "1.5.3", -) - bazel_dep(name = "aspect_bazel_lib", version = "2.21.2") bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 1105f5057708..ab4703ff215f 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -35,6 +35,7 @@ "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.6/MODULE.bazel": "cafb8781ad591bc57cc765dca5fefab08cf9f65af363d162b79d49205c7f8af7", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/source.json": "786cbc49377fb6bf4859aec5b1c61f8fc26b08e9fdb929e2dde2e1e2a406bd24", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", @@ -90,6 +91,7 @@ "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/source.json": "c16a6488fb279ef578da7098e605082d72ed85fc8d843eaae81e7d27d0f4625d", @@ -159,9 +161,17 @@ "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/source.json": "17a2e195f56cb28d6bbf763e49973d13890487c6945311ed141e196fb660426d", - "https://bcr.bazel.build/modules/rules_python/1.5.3/MODULE.bazel": "d0b7fb08458ca7fd80a26bc00c9e0f1d011609cc3da0381faa2eccd88c6ebd98", - "https://bcr.bazel.build/modules/rules_python/1.5.3/source.json": "06961e322e15331a2d88115a65af5d3f77cc46793f9d9aa0f928b95287337f12", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", + "https://bcr.bazel.build/modules/rules_python/1.0.0/source.json": "b0162a65c6312e45e7912e39abd1a7f8856c2c7e41ecc9b6dc688a6f6400a917", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592", "https://bcr.bazel.build/modules/rules_shell/0.4.1/source.json": "4757bd277fe1567763991c4425b483477bb82e35e777a56fd846eb5cceda324a", @@ -2244,35 +2254,2751 @@ "recordedRepoMappingEntries": [] } }, - "@@rules_python~//python/uv:uv.bzl%uv": { + "@@rules_python~//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "mxPY/VBQrSC9LvYeRrlxD+0IkDTQ4+36NGMnGWlN/Vw=", - "usagesDigest": "cgxWLOUNY3lbTVCUxf/uOAgiV2TBcy1fpOASyjfLjHU=", - "recordedFileInputs": {}, + "bzlTransitiveDigest": "8USX8QvzWk9pjl0ion2dAqEqjB3yzkmi3d13o89Cchs=", + "usagesDigest": "K3E4RGDnEgGXkrLOS8/ma4NTUiLvGkMrRIhPiFxv8u0=", + "recordedFileInputs": { + "@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", + "@@rules_fuzzing~//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@rules_python~//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556", + "@@protobuf~//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_python~//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc" + }, "recordedDirentsInputs": {}, - "envVariables": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, "generatedRepoSpecs": { - "uv": { - "bzlFile": "@@rules_python~//python/uv/private:uv_toolchains_repo.bzl", - "ruleClassName": "uv_toolchains_repo", + "pip_deps_310_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", + "urls": [ + "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "urls": [ + "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "urls": [ + "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad", + "urls": [ + "https://files.pythonhosted.org/packages/ab/a7/375afcc710dbe2d64cfbd69e31f82f3e423d43737258af01f6a56d844085/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_9836f509": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.3", + "sha256": "9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283", + "urls": [ + "https://files.pythonhosted.org/packages/9a/e2/10e9819cf4a20bd8ea2f5dabafc2e6bf4a78d6a0965daeb60a4b34d1c11f/rich-13.9.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_bc1e01b8": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.3", + "sha256": "bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e", + "urls": [ + "https://files.pythonhosted.org/packages/d9/e9/cf9ef5245d835065e6673781dbd4b8911d352fb770d56cf0879cf11b7ee1/rich-13.9.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", + "ruleClassName": "whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "pip_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", "attributes": { - "toolchain_type": "'@@rules_python~//python/uv:uv_toolchain_type'", - "toolchain_names": [ - "none" + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" ], - "toolchain_implementations": { - "none": "'@@rules_python~//python:none'" + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" }, - "toolchain_compatible_with": { - "none": [ - "@platforms//:incompatible" - ] + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, + "rules_python_publish_deps": { + "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", + "ruleClassName": "hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\":[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\":[{\"filename\":\"rich-13.9.3.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" }, - "toolchain_target_settings": {} + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} } } }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, "recordedRepoMappingEntries": [ + [ + "bazel_features~", + "bazel_features_globals", + "bazel_features~~version_extension~bazel_features_globals" + ], + [ + "bazel_features~", + "bazel_features_version", + "bazel_features~~version_extension~bazel_features_version" + ], + [ + "rules_python~", + "bazel_features", + "bazel_features~" + ], + [ + "rules_python~", + "bazel_skylib", + "bazel_skylib~" + ], [ "rules_python~", "bazel_tools", @@ -2280,8 +5006,108 @@ ], [ "rules_python~", - "platforms", - "platforms" + "pypi__build", + "rules_python~~internal_deps~pypi__build" + ], + [ + "rules_python~", + "pypi__click", + "rules_python~~internal_deps~pypi__click" + ], + [ + "rules_python~", + "pypi__colorama", + "rules_python~~internal_deps~pypi__colorama" + ], + [ + "rules_python~", + "pypi__importlib_metadata", + "rules_python~~internal_deps~pypi__importlib_metadata" + ], + [ + "rules_python~", + "pypi__installer", + "rules_python~~internal_deps~pypi__installer" + ], + [ + "rules_python~", + "pypi__more_itertools", + "rules_python~~internal_deps~pypi__more_itertools" + ], + [ + "rules_python~", + "pypi__packaging", + "rules_python~~internal_deps~pypi__packaging" + ], + [ + "rules_python~", + "pypi__pep517", + "rules_python~~internal_deps~pypi__pep517" + ], + [ + "rules_python~", + "pypi__pip", + "rules_python~~internal_deps~pypi__pip" + ], + [ + "rules_python~", + "pypi__pip_tools", + "rules_python~~internal_deps~pypi__pip_tools" + ], + [ + "rules_python~", + "pypi__pyproject_hooks", + "rules_python~~internal_deps~pypi__pyproject_hooks" + ], + [ + "rules_python~", + "pypi__setuptools", + "rules_python~~internal_deps~pypi__setuptools" + ], + [ + "rules_python~", + "pypi__tomli", + "rules_python~~internal_deps~pypi__tomli" + ], + [ + "rules_python~", + "pypi__wheel", + "rules_python~~internal_deps~pypi__wheel" + ], + [ + "rules_python~", + "pypi__zipp", + "rules_python~~internal_deps~pypi__zipp" + ], + [ + "rules_python~", + "pythons_hub", + "rules_python~~python~pythons_hub" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_10_host", + "rules_python~~python~python_3_10_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_11_host", + "rules_python~~python~python_3_11_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_12_host", + "rules_python~~python~python_3_12_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_8_host", + "rules_python~~python~python_3_8_host" + ], + [ + "rules_python~~python~pythons_hub", + "python_3_9_host", + "rules_python~~python~python_3_9_host" ] ] } diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index ea58a93d247f..05f42e4dcd95 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -48,8 +48,6 @@ RUNTIME_ASSETS = glob( include = [ "src/**/schema.json", "src/**/*.js", - "src/**/*.mjs", - "src/**/*.html", ], ) + [ "builders.json", diff --git a/packages/angular/create/BUILD.bazel b/packages/angular/create/BUILD.bazel index 37d46ad44ced..87c1896531d1 100644 --- a/packages/angular/create/BUILD.bazel +++ b/packages/angular/create/BUILD.bazel @@ -7,12 +7,7 @@ load("//tools:defaults.bzl", "npm_package", "ts_project") licenses(["notice"]) -RUNTIME_ASSETS = glob( - include = [ - "src/*.js", - "src/*.mjs", - ], -) + [ +RUNTIME_ASSETS = [ "package.json", ] diff --git a/packages/angular/pwa/BUILD.bazel b/packages/angular/pwa/BUILD.bazel index 6072cdd88d51..6cdb370a397b 100644 --- a/packages/angular/pwa/BUILD.bazel +++ b/packages/angular/pwa/BUILD.bazel @@ -15,8 +15,6 @@ npm_link_all_packages() RUNTIME_ASSETS = glob( include = [ - "pwa/*.js", - "pwa/*.mjs", "pwa/files/**/*", ], ) + [ diff --git a/packages/angular_devkit/schematics/tools/BUILD.bazel b/packages/angular_devkit/schematics/tools/BUILD.bazel index f1b13a40ea77..4bfd80127524 100644 --- a/packages/angular_devkit/schematics/tools/BUILD.bazel +++ b/packages/angular_devkit/schematics/tools/BUILD.bazel @@ -14,7 +14,6 @@ ts_project( include = ["**/*.ts"], exclude = [ "**/*_spec.ts", - "test/**/*.ts", ], ), data = ["package.json"], @@ -35,7 +34,6 @@ ts_project( srcs = glob( include = [ "**/*_spec.ts", - "test/**/*.ts", ], ), deps = [ diff --git a/packages/ngtools/webpack/BUILD.bazel b/packages/ngtools/webpack/BUILD.bazel index 2dd79ca285e1..791df1d229d0 100644 --- a/packages/ngtools/webpack/BUILD.bazel +++ b/packages/ngtools/webpack/BUILD.bazel @@ -21,7 +21,6 @@ ts_project( ], exclude = [ "src/**/*_spec.ts", - "src/**/*_spec_helpers.ts", ], ) + [ "index.ts", @@ -43,7 +42,6 @@ ts_project( srcs = glob( include = [ "src/**/*_spec.ts", - "src/**/*_spec_helpers.ts", ], ), deps = [ diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index d4dc85f0ec49..46724d4de4b9 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -51,7 +51,6 @@ RUNTIME_ASSETS = [ include = [ "*/schema.json", "*/files/**/*", - "*/other-files/**/*", "*/implements-files/**/*", "*/type-files/**/*", "*/functional-files/**/*", diff --git a/tests/legacy-cli/e2e.bzl b/tests/legacy-cli/e2e.bzl index 57ed1da1bebf..ee9241e8d973 100644 --- a/tests/legacy-cli/e2e.bzl +++ b/tests/legacy-cli/e2e.bzl @@ -129,12 +129,7 @@ def _e2e_tests(name, runner, toolchain, **kwargs): tags = tags, toolchains = toolchains, node_toolchain = toolchain, - include_npm = select({ - # For Windows testing mode, we use the real global NPM as otherwise this - # will be a lot of files that need to be brought from WSL to the host FS. - "@platforms//os:windows": False, - "//conditions:default": True, - }), + include_npm = False, **kwargs ) From afb4d3e377b11315a03563cb8c143c35d37f113a Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Tue, 7 Oct 2025 10:10:02 +0200 Subject: [PATCH 1564/2162] fix(@schematics/angular): remove extra space before async in spec templates --- .../files/module-files/src/app/app__suffix__.spec.ts.template | 2 +- .../standalone-files/src/app/app__suffix__.spec.ts.template | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template index 2ee952baf1e3..4d3e1965efea 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template @@ -20,7 +20,7 @@ describe('App', () => { expect(app).toBeTruthy(); }); - it('should render title', <% if(zoneless) { %> async <% } %>() => { + it('should render title', <% if(zoneless) { %>async <% } %>() => { const fixture = TestBed.createComponent(App); <%= zoneless ? 'await fixture.whenStable();' : 'fixture.detectChanges();' %> const compiled = fixture.nativeElement as HTMLElement; diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template index 0b0f0c34c4bb..af22780db300 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template @@ -14,7 +14,7 @@ describe('App', () => { expect(app).toBeTruthy(); }); - it('should render title', <% if(zoneless) { %> async <% } %>() => { + it('should render title', <% if(zoneless) { %>async <% } %>() => { const fixture = TestBed.createComponent(App); <%= zoneless ? 'await fixture.whenStable();' : 'fixture.detectChanges();' %> const compiled = fixture.nativeElement as HTMLElement; From 5da3746cc90e83fcc5fe999f34d7b924cc3b7df9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 7 Oct 2025 05:05:40 +0000 Subject: [PATCH 1565/2162] build: update schematics dependencies to ~5.12.0 See associated pull request for more information. --- .../angular_devkit/schematics_cli/schematic/files/package.json | 2 +- .../schematics/angular/utility/latest-versions/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/schematic/files/package.json b/packages/angular_devkit/schematics_cli/schematic/files/package.json index 25d93052eaf0..f1067a247bec 100644 --- a/packages/angular_devkit/schematics_cli/schematic/files/package.json +++ b/packages/angular_devkit/schematics_cli/schematic/files/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@types/node": "^20.17.19", "@types/jasmine": "~5.1.0", - "jasmine": "~5.11.0", + "jasmine": "~5.12.0", "typescript": "~5.9.2" } } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index a662484657f5..28342b63df4e 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -8,7 +8,7 @@ "@types/node": "^20.17.19", "browser-sync": "^3.0.0", "express": "^5.1.0", - "jasmine-core": "~5.11.0", + "jasmine-core": "~5.12.0", "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", From a6bbd8b4e2208169798b97bc1c82a167227f8af0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 7 Oct 2025 08:58:25 +0000 Subject: [PATCH 1566/2162] build: update rules_browsers digest to 508168a See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 58 +++++++++++++++++++++++------------------------ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 553c24ac2df4..0fc4d2e0e081 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -47,7 +47,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "6749ba4c0dc5e04536369fa91fdb2d827b6705ff", + commit = "508168a93dcbadfd2504f8ce775e2c19ebfe7fad", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index ab4703ff215f..232c412d6716 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -549,9 +549,9 @@ "@@aspect_rules_ts~//ts:extensions.bzl%ext": { "general": { "bzlTransitiveDigest": "9IJp6IlB/FMHFBJe4MX/DQM4zi3oArC8yqYE/+NyPwk=", - "usagesDigest": "e5XRwK/3pKvlHC3QfqiuvKJYwdZVuVMRdzwwT+tENNM=", + "usagesDigest": "PB65rYTG/QbLoSQfRhLDeERG+0m7bjTPzYXBqieQ5/4=", "recordedFileInputs": { - "@@rules_browsers~//package.json": "45572077938c7a4916e4aaedf7db7ce8425854ab92f35348cff02a2134023bb8" + "@@rules_browsers~//package.json": "d5e7a05131b6ebf4c09d49afe82c3018182415b3a9c53000a32a7032f491d2c4" }, "recordedDirentsInputs": {}, "envVariables": {}, @@ -729,8 +729,8 @@ }, "@@rules_browsers~//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "ep2OrXzFai22oPOQwhS3aeTWxT9Jn6Us7ws4lRa4bU8=", - "usagesDigest": "78aLbl2cYObLkrJFomb3ZkfFUiUFbqzqZK8lnW+Y7Uk=", + "bzlTransitiveDigest": "gdpz377/gr/oSZxJsWmqNfdy1fiSkrvL/11Umvw987c=", + "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -739,9 +739,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "14086c6c0844122d4066a5e3a846b963259648945d7fb6c51b520f2105edd597", + "sha256": "155fe3738dc90b9723752974eb93a0500de631fe5de0732be1a79d00ff565962", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -758,9 +758,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "fa2ff20c870e289511cdde481d069f167e403d289b91b1d9d063dd7b2f77ed6e", + "sha256": "16882cc7cb5b86d491ecd9669c9d9a3b2c591f9ac031774476cf4f99c254b579", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -777,9 +777,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "cbb938bd24ed648280e3654592c46f7eb8e2e184ca331f2138816bd59fcaed32", + "sha256": "ad608b5afff4dec60778ed83fab4f0d6b8563ab7ac94b3b48b1e0cebabec392e", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -796,9 +796,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "68bf73ab78647e697bf7b81e8329f23c1331d8792af6e2ab66553aeb9ede9cd3", + "sha256": "f3d396ad4b6244feee263a6b39d8e8b32f1d568db74a333c2e7679e0fcd7ab09", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -815,9 +815,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "ec29104132a6ff1ae5f2ffe7b27b7ff675a58ab9b1ef616badcbdd35577b31b3", + "sha256": "da19a48eca2e7a09d757003eda2e814c8b7a9db462301faccc24564e5e593eca", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -832,9 +832,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "2b9787f5f758c9f3e3888ac23270f8de47b168679718a4440bd1cea2b3cc57e9", + "sha256": "156dc49c7f1707c72b670182d63fc2e6414734950221ba5c2fc133f580ed3713", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -849,9 +849,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "6da850508d250c00c10b09dcac00c97a58d51346047972c2c47d3e3b850d4662", + "sha256": "83cd191d57d4d841a761b2bbd42d29d5df6b748c510ad474e3d0a17ca46929ae", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -866,9 +866,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "d4af3e6c8f3a7ceb50ff298e43ff07efcad46c1d6ceb0d894eeb2d593db7e522", + "sha256": "8b1cad695e78e1a68055680f411eb65c5d305d2d3dadc1b60fdaf73ea373fc22", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" @@ -883,9 +883,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "6fcc1a2f95a6b232af82b4b7644566638c5df349e3095c65b7c18d1a63412d3d", + "sha256": "1c87a9de21941a15177384d4820a6aa3c7dacb38d34089c73a621734ebf1ea9a", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/linux-x86_64/en-US/firefox-135.0.tar.xz" + "https://archive.mozilla.org/pub/firefox/releases/143.0/linux-x86_64/en-US/firefox-143.0.tar.xz" ], "named_files": { "FIREFOX": "firefox/firefox" @@ -900,9 +900,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "e55e24e6b2a4980f4b9091900835977b282f599dcdd5e38b753d95bad8a11da9", + "sha256": "a5c570e277021b61df1295efe77446617ebd768d8ad36a20b309aa382685f6f2", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/mac/en-US/Firefox%20135.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/143.0/mac/en-US/Firefox%20143.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -917,9 +917,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "e55e24e6b2a4980f4b9091900835977b282f599dcdd5e38b753d95bad8a11da9", + "sha256": "a5c570e277021b61df1295efe77446617ebd768d8ad36a20b309aa382685f6f2", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/mac/en-US/Firefox%20135.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/143.0/mac/en-US/Firefox%20143.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -934,9 +934,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "f46d3cb68caa4d4366b942c225d256e0fc15a189263cd9efe29eff0dbfe02685", + "sha256": "fbbadc9a6881aa90d266b572304a75e8814b91817a1db7fc01015d667f60318d", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/135.0/win64/en-US/Firefox%20Setup%20135.0.exe" + "https://archive.mozilla.org/pub/firefox/releases/143.0/win64/en-US/Firefox%20Setup%20143.0.exe" ], "named_files": { "FIREFOX": "core/firefox.exe" @@ -1137,7 +1137,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", - "usagesDigest": "dQPwfMGn82Q5590JUruHiQBsYUxIunUFb+wBb/czUI4=", + "usagesDigest": "2LQPThd5tV1PolM/G9ODu23//lwYi98BOd3V2h9W7xM=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 2d4169977cff34d9175f22c001ac6f0ea7b4f864 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 7 Oct 2025 05:05:32 +0000 Subject: [PATCH 1567/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 4 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 94 +++++++++++++++++------------ 3 files changed, 57 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index fd50d60e28cc..55a882922dd7 100644 --- a/package.json +++ b/package.json @@ -111,8 +111,8 @@ "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", - "jasmine": "~5.11.0", - "jasmine-core": "~5.11.0", + "jasmine": "~5.12.0", + "jasmine-core": "~5.12.0", "jasmine-reporters": "^2.5.2", "jasmine-spec-reporter": "~7.0.0", "karma": "~6.4.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 92ec3fd7c163..077256d02a09 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -46,7 +46,7 @@ "watchpack": "2.4.4" }, "optionalDependencies": { - "lmdb": "3.4.2" + "lmdb": "3.4.3" }, "devDependencies": { "@angular/ssr": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 156d96add720..08aa99345926 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -215,11 +215,11 @@ importers: specifier: 9.1.7 version: 9.1.7 jasmine: - specifier: ~5.11.0 - version: 5.11.0 + specifier: ~5.12.0 + version: 5.12.0 jasmine-core: - specifier: ~5.11.0 - version: 5.11.0 + specifier: ~5.12.0 + version: 5.12.0 jasmine-reporters: specifier: ^2.5.2 version: 2.5.2 @@ -240,7 +240,7 @@ importers: version: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.11.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) + version: 2.1.0(jasmine-core@5.12.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -457,8 +457,8 @@ importers: version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: - specifier: 3.4.2 - version: 3.4.2 + specifier: 3.4.3 + version: 3.4.3 packages/angular/cli: dependencies: @@ -2413,38 +2413,38 @@ packages: '@inquirer/prompts': '>= 3 < 8' listr2: 9.0.4 - '@lmdb/lmdb-darwin-arm64@3.4.2': - resolution: {integrity: sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==} + '@lmdb/lmdb-darwin-arm64@3.4.3': + resolution: {integrity: sha512-zR6Y45VNtW5s+A+4AyhrJk0VJKhXdkLhrySCpCu7PSdnakebsOzNxf58p5Xoq66vOSuueGAxlqDAF49HwdrSTQ==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.4.2': - resolution: {integrity: sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==} + '@lmdb/lmdb-darwin-x64@3.4.3': + resolution: {integrity: sha512-nfGm5pQksBGfaj9uMbjC0YyQreny/Pl7mIDtHtw6g7WQuCgeLullr9FNRsYyKplaEJBPrCVpEjpAznxTBIrXBw==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.4.2': - resolution: {integrity: sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==} + '@lmdb/lmdb-linux-arm64@3.4.3': + resolution: {integrity: sha512-uX9eaPqWb740wg5D3TCvU/js23lSRSKT7lJrrQ8IuEG/VLgpPlxO3lHDywU44yFYdGS7pElBn6ioKFKhvALZlw==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.4.2': - resolution: {integrity: sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==} + '@lmdb/lmdb-linux-arm@3.4.3': + resolution: {integrity: sha512-Kjqomp7i0rgSbYSUmv9JnXpS55zYT/YcW3Bdf9oqOTjcH0/8tFAP8MLhu/i9V2pMKIURDZk63Ww49DTK0T3c/Q==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.4.2': - resolution: {integrity: sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==} + '@lmdb/lmdb-linux-x64@3.4.3': + resolution: {integrity: sha512-7/8l20D55CfwdMupkc3fNxNJdn4bHsti2X0cp6PwiXlLeSFvAfWs5kCCx+2Cyje4l4GtN//LtKWjTru/9hDJQg==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-arm64@3.4.2': - resolution: {integrity: sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==} + '@lmdb/lmdb-win32-arm64@3.4.3': + resolution: {integrity: sha512-yWVR0e5Gl35EGJBsAuqPOdjtUYuN8CcTLKrqpQFoM+KsMadViVCulhKNhkcjSGJB88Am5bRPjMro4MBB9FS23Q==} cpu: [arm64] os: [win32] - '@lmdb/lmdb-win32-x64@3.4.2': - resolution: {integrity: sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==} + '@lmdb/lmdb-win32-x64@3.4.3': + resolution: {integrity: sha512-1JdBkcO0Vrua4LUgr4jAe4FUyluwCeq/pDkBrlaVjX3/BBWP1TzVjCL+TibWNQtPAL1BITXPAhlK5Ru4FBd/hg==} cpu: [x64] os: [win32] @@ -6260,6 +6260,9 @@ packages: jasmine-core@5.11.0: resolution: {integrity: sha512-MPJ8L5yyNul0F2SuEsLASwESXQjJvBXnKu31JWFyRZSvuv2B79K4GDWN3pSqvLheUNh7Fyb6dXwd4rsz95O2Kg==} + jasmine-core@5.12.0: + resolution: {integrity: sha512-QqO4pX33GEML5JoGQU6BM5NHKPgEsg+TXp3jCIDek9MbfEp2JUYEFBo9EF1+hegWy/bCHS1m5nP0BOp18G6rVA==} + jasmine-reporters@2.5.2: resolution: {integrity: sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==} @@ -6274,6 +6277,10 @@ packages: resolution: {integrity: sha512-MhIYY2pLfRA5hhIvY72ZLilwKeZEBuTyIUv9JDB+b+pEYehsJDW2obKF2dmMtWaFG6pDiFiAUNphpZ7SW7fFMA==} hasBin: true + jasmine@5.12.0: + resolution: {integrity: sha512-KmKeTNuH8rgAuPRL5AUsXWSdJVlDu+pgqi2dLXoZUSH/g3kR+7Ho8B7hEhwDu0fu1PLuiXZtfaxmQ/mB5wqihw==} + hasBin: true + jasminewd2@2.2.0: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} @@ -6503,8 +6510,8 @@ packages: resolution: {integrity: sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ==} engines: {node: '>=20.0.0'} - lmdb@3.4.2: - resolution: {integrity: sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==} + lmdb@3.4.3: + resolution: {integrity: sha512-GWV1kVi6uhrXWqe+3NXWO73OYe8fto6q8JMo0HOpk1vf8nEyFWgo4CSNJpIFzsOxOrysVUlcO48qRbQfmKd1gA==} hasBin: true loader-runner@4.3.0: @@ -10973,25 +10980,25 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.4.2': + '@lmdb/lmdb-darwin-arm64@3.4.3': optional: true - '@lmdb/lmdb-darwin-x64@3.4.2': + '@lmdb/lmdb-darwin-x64@3.4.3': optional: true - '@lmdb/lmdb-linux-arm64@3.4.2': + '@lmdb/lmdb-linux-arm64@3.4.3': optional: true - '@lmdb/lmdb-linux-arm@3.4.2': + '@lmdb/lmdb-linux-arm@3.4.3': optional: true - '@lmdb/lmdb-linux-x64@3.4.2': + '@lmdb/lmdb-linux-x64@3.4.3': optional: true - '@lmdb/lmdb-win32-arm64@3.4.2': + '@lmdb/lmdb-win32-arm64@3.4.3': optional: true - '@lmdb/lmdb-win32-x64@3.4.2': + '@lmdb/lmdb-win32-x64@3.4.3': optional: true '@modelcontextprotocol/sdk@1.19.1': @@ -15431,6 +15438,8 @@ snapshots: jasmine-core@5.11.0: {} + jasmine-core@5.12.0: {} + jasmine-reporters@2.5.2: dependencies: '@xmldom/xmldom': 0.8.11 @@ -15451,6 +15460,11 @@ snapshots: glob: 10.4.5 jasmine-core: 5.11.0 + jasmine@5.12.0: + dependencies: + glob: 10.4.5 + jasmine-core: 5.12.0 + jasminewd2@2.2.0: {} jest-worker@27.5.1: @@ -15612,9 +15626,9 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.11.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.12.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): dependencies: - jasmine-core: 5.11.0 + jasmine-core: 5.12.0 karma: 6.4.4(bufferutil@4.0.9) karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) @@ -15783,7 +15797,7 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - lmdb@3.4.2: + lmdb@3.4.3: dependencies: msgpackr: 1.11.5 node-addon-api: 6.1.0 @@ -15791,13 +15805,13 @@ snapshots: ordered-binary: 1.6.0 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.4.2 - '@lmdb/lmdb-darwin-x64': 3.4.2 - '@lmdb/lmdb-linux-arm': 3.4.2 - '@lmdb/lmdb-linux-arm64': 3.4.2 - '@lmdb/lmdb-linux-x64': 3.4.2 - '@lmdb/lmdb-win32-arm64': 3.4.2 - '@lmdb/lmdb-win32-x64': 3.4.2 + '@lmdb/lmdb-darwin-arm64': 3.4.3 + '@lmdb/lmdb-darwin-x64': 3.4.3 + '@lmdb/lmdb-linux-arm': 3.4.3 + '@lmdb/lmdb-linux-arm64': 3.4.3 + '@lmdb/lmdb-linux-x64': 3.4.3 + '@lmdb/lmdb-win32-arm64': 3.4.3 + '@lmdb/lmdb-win32-x64': 3.4.3 optional: true loader-runner@4.3.0: {} From 1e743e3a07dc142afc29d61cf740438dbd66ef1a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Oct 2025 05:05:17 +0000 Subject: [PATCH 1568/2162] build: update pnpm to v10.18.1 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 55a882922dd7..cffaa6aedc40 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.18.0", + "packageManager": "pnpm@10.18.1", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.18.0" + "pnpm": "10.18.1" }, "author": "Angular Authors", "license": "MIT", From c0ff013306929e1a048f5c950a59ffe2d49d7f81 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Oct 2025 07:05:33 +0000 Subject: [PATCH 1569/2162] build: update github/codeql-action action to v4 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a89471cde604..30000fc4f13e 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@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/init@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/analyze@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d94a349e2d0a..849722f6149c 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@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/upload-sarif@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7 with: sarif_file: results.sarif From 61d328b359ef9b21fd0efa0b587b39331c6be9a3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Oct 2025 05:06:01 +0000 Subject: [PATCH 1570/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 6 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 356 +++++++++--------- 5 files changed, 188 insertions(+), 182 deletions(-) diff --git a/package.json b/package.json index cffaa6aedc40..f9a1532818cc 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.45.0", - "@typescript-eslint/parser": "8.45.0", + "@typescript-eslint/eslint-plugin": "8.46.0", + "@typescript-eslint/parser": "8.46.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", @@ -145,7 +145,7 @@ "verdaccio": "6.2.0", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", - "zod": "4.1.11", + "zod": "4.1.12", "zone.js": "^0.15.0" }, "dependenciesMeta": { diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 077256d02a09..a2f4bc6aab58 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.41", + "rolldown": "1.0.0-beta.42", "sass": "1.93.2", "semver": "7.7.2", "source-map-support": "0.5.21", @@ -52,7 +52,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", "jsdom": "27.0.0", - "less": "4.4.1", + "less": "4.4.2", "ng-packagr": "21.0.0-next.4", "postcss": "8.5.6", "rxjs": "7.8.2", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 280ac0eaf5ef..201e18454e8c 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -34,7 +34,7 @@ "ini": "5.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.4", - "npm-package-arg": "13.0.0", + "npm-package-arg": "13.0.1", "pacote": "21.0.3", "resolve": "1.22.10", "semver": "7.7.2", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 2c7f35653698..b63d2dd1bab8 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -33,7 +33,7 @@ "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.4.1", + "less": "4.4.2", "less-loader": "12.3.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08aa99345926..9de0d8b866ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -317,8 +317,8 @@ importers: specifier: 22.0.0 version: 22.0.0 zod: - specifier: 4.1.11 - version: 4.1.11 + specifier: 4.1.12 + version: 4.1.12 zone.js: specifier: ^0.15.0 version: 0.15.1 @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -372,7 +372,7 @@ importers: version: 5.1.18(@types/node@24.5.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -410,8 +410,8 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.41 - version: 1.0.0-beta.41 + specifier: 1.0.0-beta.42 + version: 1.0.0-beta.42 sass: specifier: 1.93.2 version: 1.93.2 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.9 - version: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -441,8 +441,8 @@ importers: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) less: - specifier: 4.4.1 - version: 4.4.1 + specifier: 4.4.2 + version: 4.4.2 ng-packagr: specifier: 21.0.0-next.4 version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -499,8 +499,8 @@ importers: specifier: 9.0.4 version: 9.0.4 npm-package-arg: - specifier: 13.0.0 - version: 13.0.0 + specifier: 13.0.1 + version: 13.0.1 pacote: specifier: 21.0.3 version: 21.0.3 @@ -678,11 +678,11 @@ importers: specifier: 1.4.0 version: 1.4.0 less: - specifier: 4.4.1 - version: 4.4.1 + specifier: 4.4.2 + version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.1)(webpack@5.102.0(esbuild@0.25.10)) + version: 12.3.0(less@4.4.2)(webpack@5.102.0(esbuild@0.25.10)) license-webpack-plugin: specifier: 4.0.2 version: 4.0.2(webpack@5.102.0(esbuild@0.25.10)) @@ -2773,8 +2773,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.93.0': - resolution: {integrity: sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg==} + '@oxc-project/types@0.94.0': + resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -2923,95 +2923,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.41': - resolution: {integrity: sha512-Edflndd9lU7JVhVIvJlZhdCj5DkhYDJPIRn4Dx0RUdfc8asP9xHOI5gMd8MesDDx+BJpdIT/uAmVTearteU/mQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.42': + resolution: {integrity: sha512-W5ZKF3TP3bOWuBfotAGp+UGjxOkGV7jRmIRbBA7NFjggx7Oi6vOmGDqpHEIX7kDCiry1cnIsWQaxNvWbMdkvzQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.41': - resolution: {integrity: sha512-XGCzqfjdk7550PlyZRTBKbypXrB7ATtXhw/+bjtxnklLQs0mKP/XkQVOKyn9qGKSlvH8I56JLYryVxl0PCvSNw==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.42': + resolution: {integrity: sha512-abw/wtgJA8OCgaTlL+xJxnN/Z01BwV1rfzIp5Hh9x+IIO6xOBfPsQ0nzi0+rWx3TyZ9FZXyC7bbC+5NpQ9EaXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.41': - resolution: {integrity: sha512-Ho6lIwGJed98zub7n0xcRKuEtnZgbxevAmO4x3zn3C3N4GVXZD5xvCvTVxSMoeBJwTcIYzkVDRTIhylQNsTgLQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.42': + resolution: {integrity: sha512-Y/UrZIRVr8CvXVEB88t6PeC46r1K9/QdPEo2ASE/b/KBEyXIx+QbM6kv9QfQVWU2Atly2+SVsQzxQsIvuk3lZQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.41': - resolution: {integrity: sha512-ijAZETywvL+gACjbT4zBnCp5ez1JhTRs6OxRN4J+D6AzDRbU2zb01Esl51RP5/8ZOlvB37xxsRQ3X4YRVyYb3g==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.42': + resolution: {integrity: sha512-zRM0oOk7BZiy6DoWBvdV4hyEg+j6+WcBZIMHVirMEZRu8hd18kZdJkg+bjVMfCEhwpWeFUfBfZ1qcaZ5UdYzlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': - resolution: {integrity: sha512-EgIOZt7UildXKFEFvaiLNBXm+4ggQyGe3E5Z1QP9uRcJJs9omihOnm897FwOBQdCuMvI49iBgjFrkhH+wMJ2MA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': + resolution: {integrity: sha512-6RjFaC52QNwo7ilU8C5H7swbGlgfTkG9pudXwzr3VYyT18s0C9gLg3mvc7OMPIGqNxnQ0M5lU8j6aQCk2DTRVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': - resolution: {integrity: sha512-F8bUwJq8v/JAU8HSwgF4dztoqJ+FjdyjuvX4//3+Fbe2we9UktFeZ27U4lRMXF1vxWtdV4ey6oCSqI7yUrSEeg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': + resolution: {integrity: sha512-LMYHM5Sf6ROq+VUwHMDVX2IAuEsWTv4SnlFEedBnMGpvRuQ14lCmD4m5Q8sjyAQCgyha9oghdGoK8AEg1sXZKg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': - resolution: {integrity: sha512-MioXcCIX/wB1pBnBoJx8q4OGucUAfC1+/X1ilKFsjDK05VwbLZGRgOVD5OJJpUQPK86DhQciNBrfOKDiatxNmg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': + resolution: {integrity: sha512-/bNTYb9aKNhzdbPn3O4MK2aLv55AlrkUKPE4KNfBYjkoZUfDr4jWp7gsSlvTc5A/99V1RCm9axvt616ZzeXGyA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': - resolution: {integrity: sha512-m66M61fizvRCwt5pOEiZQMiwBL9/y0bwU/+Kc4Ce/Pef6YfoEkR28y+DzN9rMdjo8Z28NXjsDPq9nH4mXnAP0g==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': + resolution: {integrity: sha512-n/SLa4h342oyeGykZdch7Y3GNCNliRPL4k5wkeZ/5eQZs+c6/ZG1SHCJQoy7bZcmxiMyaXs9HoFmv1PEKrZgWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': - resolution: {integrity: sha512-yRxlSfBvWnnfrdtJfvi9lg8xfG5mPuyoSHm0X01oiE8ArmLRvoJGHUTJydCYz+wbK2esbq5J4B4Tq9WAsOlP1Q==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': + resolution: {integrity: sha512-4PSd46sFzqpLHSGdaSViAb1mk55sCUMpJg+X8ittXaVocQsV3QLG/uydSH8RyL0ngHX5fy3D70LcCzlB15AgHw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': - resolution: {integrity: sha512-PHVxYhBpi8UViS3/hcvQQb9RFqCtvFmFU1PvUoTRiUdBtgHA6fONNHU4x796lgzNlVSD3DO/MZNk1s5/ozSMQg==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': + resolution: {integrity: sha512-BmWoeJJyeZXmZBcfoxG6J9+rl2G7eO47qdTkAzEegj4n3aC6CBIHOuDcbE8BvhZaEjQR0nh0nJrtEDlt65Q7Sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': - resolution: {integrity: sha512-OAfcO37ME6GGWmj9qTaDT7jY4rM0T2z0/8ujdQIJQ2x2nl+ztO32EIwURfmXOK0U1tzkyuaKYvE34Pug/ucXlQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': + resolution: {integrity: sha512-2Ft32F7uiDTrGZUKws6CLNTlvTWHC33l4vpXrzUucf9rYtUThAdPCOt89Pmn13tNX6AulxjGEP2R0nZjTSW3eQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': - resolution: {integrity: sha512-NIYGuCcuXaq5BC4Q3upbiMBvmZsTsEPG9k/8QKQdmrch+ocSy5Jv9tdpdmXJyighKqm182nh/zBt+tSJkYoNlg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': + resolution: {integrity: sha512-hC1kShXW/z221eG+WzQMN06KepvPbMBknF0iGR3VMYJLOe9gwnSTfGxFT5hf8XrPv7CEZqTWRd0GQpkSHRbGsw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': - resolution: {integrity: sha512-kANdsDbE5FkEOb5NrCGBJBCaZ2Sabp3D7d4PRqMYJqyLljwh9mDyYyYSv5+QNvdAmifj+f3lviNEUUuUZPEFPw==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': + resolution: {integrity: sha512-AICBYromawouGjj+GS33369E8Vwhy6UwhQEhQ5evfS8jPCsyVvoICJatbDGDGH01dwtVGLD5eDFzPicUOVpe4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': - resolution: {integrity: sha512-UlpxKmFdik0Y2VjZrgUCgoYArZJiZllXgIipdBRV1hw6uK45UbQabSTW6Kp6enuOu7vouYWftwhuxfpE8J2JAg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': + resolution: {integrity: sha512-XpZ0M+tjoEiSc9c+uZR7FCnOI0uxDRNs1elGOMjeB0pUP1QmvVbZGYNsyLbLoP4u7e3VQN8rie1OQ8/mB6rcJg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.41': - resolution: {integrity: sha512-ycMEPrS3StOIeb87BT3/+bu+blEtyvwQ4zmo2IcJQy0Rd1DAAhKksA0iUZ3MYSpJtjlPhg0Eo6mvVS6ggPhRbw==} + '@rolldown/pluginutils@1.0.0-beta.42': + resolution: {integrity: sha512-N7pQzk9CyE7q0bBN/q0J8s6Db279r5kUZc6d7/wWRe9/zXqC52HQovVyu6iXPIDY4BEzzgbVLhVFXrOuGJ22ZQ==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -3555,39 +3555,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.45.0': - resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} + '@typescript-eslint/eslint-plugin@8.46.0': + resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.45.0 + '@typescript-eslint/parser': ^8.46.0 eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/parser@8.45.0': - resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} + '@typescript-eslint/parser@8.46.0': + resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/project-service@8.45.0': - resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} + '@typescript-eslint/project-service@8.46.0': + resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/scope-manager@8.45.0': - resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} + '@typescript-eslint/scope-manager@8.46.0': + resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.45.0': - resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==} + '@typescript-eslint/tsconfig-utils@8.46.0': + resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0': - resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} + '@typescript-eslint/type-utils@8.46.0': + resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3597,21 +3597,25 @@ packages: resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.45.0': - resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} + '@typescript-eslint/types@8.46.0': + resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.0': + resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/utils@8.45.0': - resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} + '@typescript-eslint/utils@8.46.0': + resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/visitor-keys@8.45.0': - resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} + '@typescript-eslint/visitor-keys@8.46.0': + resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.23': @@ -6477,8 +6481,8 @@ packages: webpack: optional: true - less@4.4.1: - resolution: {integrity: sha512-X9HKyiXPi0f/ed0XhgUlBeFfxrlDP3xR4M7768Zl+WXLUViuL9AOPPJP4nCV0tgRWvTYvpNmN0SFhZOQzy16PA==} + less@4.4.2: + resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} engines: {node: '>=14'} hasBin: true @@ -6993,8 +6997,8 @@ packages: resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} engines: {node: ^18.17.0 || >=20.5.0} - npm-package-arg@13.0.0: - resolution: {integrity: sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==} + npm-package-arg@13.0.1: + resolution: {integrity: sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==} engines: {node: ^20.17.0 || >=22.9.0} npm-packlist@10.0.2: @@ -7764,8 +7768,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.41: - resolution: {integrity: sha512-U+NPR0Bkg3wm61dteD2L4nAM1U9dtaqVrpDXwC36IKRHpEO/Ubpid4Nijpa2imPchcVNHfxVFwSSMJdwdGFUbg==} + rolldown@1.0.0-beta.42: + resolution: {integrity: sha512-xaPcckj+BbJhYLsv8gOqezc8EdMcKKe/gk8v47B0KPvgABDrQ0qmNPAiT/gh9n9Foe0bUkEv2qzj42uU5q1WRg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -9145,8 +9149,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.11: - resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} + zod@4.1.12: + resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} zone.js@0.15.1: resolution: {integrity: sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==} @@ -11347,7 +11351,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.93.0': {} + '@oxc-project/types@0.94.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11470,51 +11474,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.41': + '@rolldown/binding-android-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.41': + '@rolldown/binding-darwin-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.41': + '@rolldown/binding-darwin-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.41': + '@rolldown/binding-freebsd-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.41': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.41': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.41': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.41': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.41': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': dependencies: '@napi-rs/wasm-runtime': 1.0.6 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.41': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': optional: true - '@rolldown/pluginutils@1.0.0-beta.41': {} + '@rolldown/pluginutils@1.0.0-beta.42': {} '@rollup/plugin-alias@5.1.1(rollup@4.52.4)': optionalDependencies: @@ -12076,14 +12080,14 @@ snapshots: '@types/node': 22.18.8 optional: true - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.0 eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12093,41 +12097,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.45.0': + '@typescript-eslint/scope-manager@8.46.0': dependencies: - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/visitor-keys': 8.46.0 - '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12137,12 +12141,14 @@ snapshots: '@typescript-eslint/types@8.45.0': {} - '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': + '@typescript-eslint/types@8.46.0': {} + + '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/visitor-keys': 8.46.0 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12153,20 +12159,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.45.0': + '@typescript-eslint/visitor-keys@8.46.0': dependencies: - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/types': 8.46.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.23': @@ -12328,11 +12334,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12347,7 +12353,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12359,13 +12365,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -14097,11 +14103,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14111,7 +14117,7 @@ snapshots: dependencies: eslint: 9.37.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14122,7 +14128,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14134,7 +14140,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14342,7 +14348,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15742,13 +15748,13 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.1)(webpack@5.102.0(esbuild@0.25.10)): + less-loader@12.3.0(less@4.4.2)(webpack@5.102.0(esbuild@0.25.10)): dependencies: - less: 4.4.1 + less: 4.4.2 optionalDependencies: webpack: 5.102.0(esbuild@0.25.10) - less@4.4.1: + less@4.4.2: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 @@ -16186,7 +16192,7 @@ snapshots: find-cache-directory: 6.0.0 injection-js: 2.5.0 jsonc-parser: 3.3.1 - less: 4.4.1 + less: 4.4.2 ora: 9.0.0 piscina: 5.1.3 postcss: 8.5.6 @@ -16279,7 +16285,7 @@ snapshots: npm-normalize-package-bin@4.0.0: {} - npm-package-arg@13.0.0: + npm-package-arg@13.0.1: dependencies: hosted-git-info: 9.0.0 proc-log: 5.0.0 @@ -16295,7 +16301,7 @@ snapshots: dependencies: npm-install-checks: 7.1.2 npm-normalize-package-bin: 4.0.0 - npm-package-arg: 13.0.0 + npm-package-arg: 13.0.1 semver: 7.7.2 npm-registry-fetch@19.0.0: @@ -16306,7 +16312,7 @@ snapshots: minipass: 7.1.2 minipass-fetch: 4.0.1 minizlib: 3.1.0 - npm-package-arg: 13.0.0 + npm-package-arg: 13.0.1 proc-log: 5.0.0 transitivePeerDependencies: - supports-color @@ -16512,7 +16518,7 @@ snapshots: cacache: 20.0.1 fs-minipass: 3.0.3 minipass: 7.1.2 - npm-package-arg: 13.0.0 + npm-package-arg: 13.0.1 npm-packlist: 10.0.2 npm-pick-manifest: 11.0.1 npm-registry-fetch: 19.0.0 @@ -17121,26 +17127,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.41: + rolldown@1.0.0-beta.42: dependencies: - '@oxc-project/types': 0.93.0 - '@rolldown/pluginutils': 1.0.0-beta.41 + '@oxc-project/types': 0.94.0 + '@rolldown/pluginutils': 1.0.0-beta.42 ansis: 4.2.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.41 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.41 - '@rolldown/binding-darwin-x64': 1.0.0-beta.41 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.41 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.41 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.41 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.41 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.41 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.41 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.41 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.41 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.41 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.41 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.41 + '@rolldown/binding-android-arm64': 1.0.0-beta.42 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.42 + '@rolldown/binding-darwin-x64': 1.0.0-beta.42 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.42 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.42 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.42 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.42 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.42 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.42 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.42 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.42 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.42 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 rollup-license-plugin@3.0.2: dependencies: @@ -18295,13 +18301,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18316,7 +18322,7 @@ snapshots: - tsx - yaml - vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18328,17 +18334,17 @@ snapshots: '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 2.6.1 - less: 4.4.1 + less: 4.4.2 sass: 1.93.2 terser: 5.44.0 tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18356,8 +18362,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.5.2 @@ -18767,6 +18773,6 @@ snapshots: zod@3.25.76: {} - zod@4.1.11: {} + zod@4.1.12: {} zone.js@0.15.1: {} From 458ed137edda3fe1cd61a37611bfe242dc0a5064 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 8 Oct 2025 10:37:09 +0000 Subject: [PATCH 1571/2162] docs: release notes for the v20.3.5 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c534c2f09dc..eb3e80b30e49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 20.3.5 (2025-10-08) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [7f7140680](https://github.com/angular/angular-cli/commit/7f7140680b75ff6b41f7f04349fe10cd928f1a23) | fix | cleanup karma temporary directory after process exit | + + + # 21.0.0-next.6 (2025-10-03) From 5eb3d70455fa6b8d76eb6c6e49b0c38c5228f3d4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 8 Oct 2025 10:39:28 +0000 Subject: [PATCH 1572/2162] release: cut the v21.0.0-next.7 release --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb3e80b30e49..7704b35acc1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ + + +# 21.0.0-next.7 (2025-10-08) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | +| [1c06b16a9](https://github.com/angular/angular-cli/commit/1c06b16a962d3c2cc122dc40e01c64bc8a8d754d) | feat | add builder info to `list_projects` MCP tool | +| [104c90768](https://github.com/angular/angular-cli/commit/104c90768000b3e0052ee7e7de2c5e04c1bffdaf) | feat | enhance `ng version` output with more details | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | +| [afb4d3e37](https://github.com/angular/angular-cli/commit/afb4d3e377b11315a03563cb8c143c35d37f113a) | fix | remove extra space before async in spec templates | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | +| [1c2d49ec7](https://github.com/angular/angular-cli/commit/1c2d49ec736818d22773916d7eaafd3446275ea0) | fix | cleanup karma temporary directory after process exit | +| [50e330d33](https://github.com/angular/angular-cli/commit/50e330d331fc8cfc4c12f7258012305ecb419d2d) | fix | disable glob directory expansion when finding tests | +| [73621998f](https://github.com/angular/angular-cli/commit/73621998f91db189ad9b1ab006681404e30f7900) | fix | normalize paths for Vitest runner output files | + + + # 20.3.5 (2025-10-08) diff --git a/package.json b/package.json index f9a1532818cc..66bc35fd4c72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.0.0-next.6", + "version": "21.0.0-next.7", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From bc164604284c1834b152aa48f5eb74f9c4d6052c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Oct 2025 03:17:00 +0000 Subject: [PATCH 1573/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 8 +- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 612 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 387 insertions(+), 421 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 06da201046f4..9c5ead78bc14 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@aa1f94332e3f127e071079249e222691fba93e62 + - uses: angular/dev-infra/github-actions/branch-manager@26b2c129c4e494126cc9c42d10a273a26e766244 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b21b2227e13..a9830afab1ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 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@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - 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 7dd96b8f3950..26f765735b56 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@aa1f94332e3f127e071079249e222691fba93e62 + - uses: angular/dev-infra/github-actions/pull-request-labeling@26b2c129c4e494126cc9c42d10a273a26e766244 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@aa1f94332e3f127e071079249e222691fba93e62 + - uses: angular/dev-infra/github-actions/post-approval-changes@26b2c129c4e494126cc9c42d10a273a26e766244 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 77bf30c64b48..e2925cd2115c 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@aa1f94332e3f127e071079249e222691fba93e62 + - uses: angular/dev-infra/github-actions/feature-request@26b2c129c4e494126cc9c42d10a273a26e766244 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 6d4793d8c62d..851c5997aa9a 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@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - 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@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - 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 40fc0e87ecc8..e6dbf549f9d1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/linting/licenses@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 - 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@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@aa1f94332e3f127e071079249e222691fba93e62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 - 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/MODULE.bazel b/MODULE.bazel index 0fc4d2e0e081..545fc67f399c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "aa1f94332e3f127e071079249e222691fba93e62", + commit = "26b2c129c4e494126cc9c42d10a273a26e766244", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 232c412d6716..31c4fcdadf47 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -186,8 +186,8 @@ "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", - "https://bcr.bazel.build/modules/tar.bzl/0.5.6/MODULE.bazel": "c5b8bfa6bc7b640883d41bfec4a200fb45c16a2a7b2fb081323f499197cfcc09", - "https://bcr.bazel.build/modules/tar.bzl/0.5.6/source.json": "848b3a4eaf2bb4a09ab78533c348e19a6723c7d5f820eb1dceb0eeb5e5914ac1", + "https://bcr.bazel.build/modules/tar.bzl/0.6.0/MODULE.bazel": "a3584b4edcfafcabd9b0ef9819808f05b372957bbdff41601429d5fd0aac2e7c", + "https://bcr.bazel.build/modules/tar.bzl/0.6.0/source.json": "4a620381df075a16cb3a7ed57bd1d05f7480222394c64a20fa51bdb636fda658", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", "https://bcr.bazel.build/modules/yq.bzl/0.2.0/MODULE.bazel": "6f3a675677db8885be4d607fde14cc51829715e3a879fb016eb9bf336786ce6d", @@ -231,7 +231,7 @@ }, "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "NeP8heP5Z49UtK5ZkdaSGN2wdf2vyTLxJfpSPeyvV24=", + "bzlTransitiveDigest": "kzZXVf0lIRQArtJstiytwibC6m5npERsjNfhP9yJJW4=", "usagesDigest": "u8wMZJd6Ovxb3YTmhoM3sMbh11Qwrv5EHaggdNi5Wb8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -411,7 +411,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "eebwHza1XBCmrNmoTUnW56khfYFfcwZpPWjM1Nvu3sk=", + "bzlTransitiveDigest": "KMsyoH5ShknUHVmkSHztDMIN0fXSzKZBut4ETq2s/Sw=", "usagesDigest": "IhWFaS3+adcZAFZpJlR1wPWkibqbPczXdu8nnyFjNyw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, diff --git a/package.json b/package.json index 66bc35fd4c72..5aa08d0e544a 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-next.6", - "@angular/cdk": "21.0.0-next.6", - "@angular/common": "21.0.0-next.6", - "@angular/compiler": "21.0.0-next.6", - "@angular/compiler-cli": "21.0.0-next.6", - "@angular/core": "21.0.0-next.6", - "@angular/forms": "21.0.0-next.6", - "@angular/localize": "21.0.0-next.6", - "@angular/material": "21.0.0-next.6", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#144e3ea51fb1044ac9e1699d621156fe15661dde", - "@angular/platform-browser": "21.0.0-next.6", - "@angular/platform-server": "21.0.0-next.6", - "@angular/router": "21.0.0-next.6", - "@angular/service-worker": "21.0.0-next.6", + "@angular/animations": "21.0.0-next.7", + "@angular/cdk": "21.0.0-next.8", + "@angular/common": "21.0.0-next.7", + "@angular/compiler": "21.0.0-next.7", + "@angular/compiler-cli": "21.0.0-next.7", + "@angular/core": "21.0.0-next.7", + "@angular/forms": "21.0.0-next.7", + "@angular/localize": "21.0.0-next.7", + "@angular/material": "21.0.0-next.8", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#650ac6faed7c4d83a70a7d9418f30bd383c520cb", + "@angular/platform-browser": "21.0.0-next.7", + "@angular/platform-server": "21.0.0-next.7", + "@angular/router": "21.0.0-next.7", + "@angular/service-worker": "21.0.0-next.7", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 6a62501be292..dc10d619dcfc 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-next.6", - "@angular/compiler": "21.0.0-next.6", - "@angular/core": "21.0.0-next.6", - "@angular/platform-browser": "21.0.0-next.6", - "@angular/platform-server": "21.0.0-next.6", - "@angular/router": "21.0.0-next.6", + "@angular/common": "21.0.0-next.7", + "@angular/compiler": "21.0.0-next.7", + "@angular/core": "21.0.0-next.7", + "@angular/platform-browser": "21.0.0-next.7", + "@angular/platform-server": "21.0.0-next.7", + "@angular/router": "21.0.0-next.7", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index ae79c336db4e..05c5cc60bdc9 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": "21.0.0-next.6", - "@angular/compiler-cli": "21.0.0-next.6", + "@angular/compiler": "21.0.0-next.7", + "@angular/compiler-cli": "21.0.0-next.7", "typescript": "5.9.3", "webpack": "5.102.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9de0d8b866ef..500fd5a57d40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6 + specifier: 21.0.0-next.7 + version: 21.0.0-next.7 '@angular/compiler-cli': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(@angular/compiler@21.0.0-next.6) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(@angular/compiler@21.0.0-next.7) '@angular/material': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(80d28ef3220558a76162dc5524ed8579) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(05250061371eb0125d7904add36a5bf0) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#144e3ea51fb1044ac9e1699d621156fe15661dde - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde(@modelcontextprotocol/sdk@1.19.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#650ac6faed7c4d83a70a7d9418f30bd383c520cb + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/650ac6faed7c4d83a70a7d9418f30bd383c520cb(@modelcontextprotocol/sdk@1.19.1) '@angular/platform-browser': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.6)(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.7)(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -369,10 +369,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.18 - version: 5.1.18(@types/node@24.5.2) + version: 5.1.18(@types/node@24.7.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.9 - version: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -445,7 +445,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -473,10 +473,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.8.6 - version: 7.8.6(@types/node@24.5.2) + version: 7.8.6(@types/node@24.7.0) '@listr2/prompt-adapter-inquirer': specifier: 3.0.4 - version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.4) + version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.0))(@types/node@24.7.0)(listr2@9.0.4) '@modelcontextprotocol/sdk': specifier: 1.19.1 version: 1.19.1 @@ -539,23 +539,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6 + specifier: 21.0.0-next.7 + version: 21.0.0-next.7 '@angular/core': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.6)(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.7)(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -770,7 +770,7 @@ importers: version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -854,7 +854,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.8.6 - version: 7.8.6(@types/node@24.5.2) + version: 7.8.6(@types/node@24.7.0) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -868,11 +868,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6 + specifier: 21.0.0-next.7 + version: 21.0.0-next.7 '@angular/compiler-cli': - specifier: 21.0.0-next.6 - version: 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) + specifier: 21.0.0-next.7 + version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -978,46 +978,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-next.6': - resolution: {integrity: sha512-hcChKe9DIWCI0znousGOzolQfVor4ad4yoRRvp0qV8isKG0H+BEBnfirUQ5HIKejXPhdn4w2hnni1a1RgFBQ2w==} + '@angular/animations@21.0.0-next.7': + resolution: {integrity: sha512-gHxdihfHeXXRlwz7KIUEVOyaUuE9c1EvpwBYBhQBOb/426BepGsJXf5ACiTtr0yzRx5+sQygdtu+iGS01WWfMw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.6 + '@angular/core': 21.0.0-next.7 - '@angular/cdk@21.0.0-next.6': - resolution: {integrity: sha512-mwBjZVuvmgoehW075VFtQ09R68o4lM84EpufTHOBcT3H4PQGiTCZk0LQykYfJmpsok3XEGFayFMwDw7DOo2iZA==} + '@angular/cdk@21.0.0-next.8': + resolution: {integrity: sha512-dVgt+SMgYuYwNgtFUb/iE8nVKWoJ7d3TuRSIBDe2AE3RuOSfjjTEjypcaLj6FToKYYMVZl6+0W5o2vjWrwNL/Q==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-next.6': - resolution: {integrity: sha512-1y9veaWRQVdFFczkQiv8xL+gxkWNPv2sxU3FN/wj0p/2LEncdNyDHGUiL5oniuXv3rb9/aEXKZA4CymvuWIYbw==} + '@angular/common@21.0.0-next.7': + resolution: {integrity: sha512-PmmnuiHJBPYnDwEMY+DInilI03dAByAt0gInOse3X56RIvVE8vMBIMWbbTp2QtCPU/z6AMUUYjC32lRxCVT1nQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.6 + '@angular/core': 21.0.0-next.7 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-next.6': - resolution: {integrity: sha512-mMsn5omb53/dIUUoasMVpCIs32uVSBDS/OKvEb4iwEUF9VQdtCWt55+r1hi6DpGCCu+fPfuamRPjxUmoPN0LDw==} + '@angular/compiler-cli@21.0.0-next.7': + resolution: {integrity: sha512-lTpRym4AhvkaCOz5kRTz2C9ljz8KNuehXgIh5FIlj/0yXidQH+yxWg+FsTo8VosDnjr+1v+pl2gnEEWqNNcQ3w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.6 + '@angular/compiler': 21.0.0-next.7 typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-next.6': - resolution: {integrity: sha512-U3ktjAFWsVDFtNrw45E5J22WvgMzp2CKRQf5qqo0IaW1PCw6ThHI84BXckXY75UIwdiJbaTiSc7SXtZCOr/iLg==} + '@angular/compiler@21.0.0-next.7': + resolution: {integrity: sha512-gOmDTn5p4Ku09EEtWx7QfcmHKZL8XqTRr691As3kmgtLwWZUk0C+FZgp08Gf/y0yosIbQp23zgfIsKgVBi+m/A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-next.6': - resolution: {integrity: sha512-d+U3VwwBpx3S/bpb1aieXCB8UOgzt3vejMBfguv9CCqb1MhZlgiaccWczBwrQswIIrGDt09yFCN+GVwDKHA7Yg==} + '@angular/core@21.0.0-next.7': + resolution: {integrity: sha512-p/ff/8rsT5QzMVa9qx8uj8O/X1D+HAZZ0DPVK0KYOhz/o+Lw8QecxxHqL9AaNYSxyF/0rc8eMttYpBoYxE7V7A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-next.6 + '@angular/compiler': 21.0.0-next.7 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1026,75 +1026,75 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-next.6': - resolution: {integrity: sha512-+TFhDm1PE99JkxIrjIV/6tCLXLebY2H5sIZGSPcZCJR3SR8WgQaU9T7KzEPLVSstiutLzYi9MdBEDJzX9EG03w==} + '@angular/forms@21.0.0-next.7': + resolution: {integrity: sha512-zN3tQwuoxozdimO0twuhgLnXbT4BGVSuC1I2rrpm48e3ReLDhzCbOYpDYkP4vuBZLiDQw3EP6WfyK/uqY5M0mA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.6 - '@angular/core': 21.0.0-next.6 - '@angular/platform-browser': 21.0.0-next.6 + '@angular/common': 21.0.0-next.7 + '@angular/core': 21.0.0-next.7 + '@angular/platform-browser': 21.0.0-next.7 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-next.6': - resolution: {integrity: sha512-SQO+qkRMJMEO0Y+juWT2PdXqpxUKaPsdMdh3+dvHhwDA6nClkDex5VQBI+JSdHmCdi9kW+iO/N7MG7yKZc+J2A==} + '@angular/localize@21.0.0-next.7': + resolution: {integrity: sha512-+NKyRScSEEPDwYTA0VGLDetm4gnargihZVs3bjvLJQFv7dgda5ukCMerm9H2nMv9Gg6Son98ttwzRFO+4dXwyg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.6 - '@angular/compiler-cli': 21.0.0-next.6 + '@angular/compiler': 21.0.0-next.7 + '@angular/compiler-cli': 21.0.0-next.7 - '@angular/material@21.0.0-next.6': - resolution: {integrity: sha512-8PuETdg29S4LFNgqdFI5C4N4UkZwi2DOFaeqyCcfLuS//R9scphwKEhAvPgy0wSvSXQSTWCPrY+GgdjQMyiaJA==} + '@angular/material@21.0.0-next.8': + resolution: {integrity: sha512-lTv37cioGdq9ko6jESvQ1LiKRX35ozg4cqF8XWs0CGwOt6s9gphntf4zypTEIR1kk/qlHM1Y/2KCew3VYkWUaQ==} peerDependencies: - '@angular/cdk': 21.0.0-next.6 + '@angular/cdk': 21.0.0-next.8 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/144e3ea51fb1044ac9e1699d621156fe15661dde': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde} - version: 0.0.0-aa1f94332e3f127e071079249e222691fba93e62 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/650ac6faed7c4d83a70a7d9418f30bd383c520cb': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/650ac6faed7c4d83a70a7d9418f30bd383c520cb} + version: 0.0.0-26b2c129c4e494126cc9c42d10a273a26e766244 hasBin: true - '@angular/platform-browser@21.0.0-next.6': - resolution: {integrity: sha512-f8tGFPhWAmqEaQNTUmXEsgEu+DcRK13XXK+7PRLGYBrXNgMTRwAZhSylEGcMORiQmi3NswT+Yhio3UrHlgaTVA==} + '@angular/platform-browser@21.0.0-next.7': + resolution: {integrity: sha512-wBf0KQaDhgm7O/JNnAfJYY6Kan/xnI4tjDR9fBd1txDRuSmxq9iouUoPkPgaw9DOWVMR/G2ErdrkfVfzCY3eVA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-next.6 - '@angular/common': 21.0.0-next.6 - '@angular/core': 21.0.0-next.6 + '@angular/animations': 21.0.0-next.7 + '@angular/common': 21.0.0-next.7 + '@angular/core': 21.0.0-next.7 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-next.6': - resolution: {integrity: sha512-TzWF2ozHqrVEKmRK4iMxVohwaaoZkcK3LpDJJgX7nGig/m4Y/mYn4WYaIzWhFfJRSgaEUZy2ZduVBQewBFP2xQ==} + '@angular/platform-server@21.0.0-next.7': + resolution: {integrity: sha512-8Z6u1GFPHuFcKdA4yUv+bx15u6lV8+/oTNA7Y0ebnOCKw1smMcxqxEmoNoj1EOM01DR1Xg1YnCRcEYjYawqFQg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.6 - '@angular/compiler': 21.0.0-next.6 - '@angular/core': 21.0.0-next.6 - '@angular/platform-browser': 21.0.0-next.6 + '@angular/common': 21.0.0-next.7 + '@angular/compiler': 21.0.0-next.7 + '@angular/core': 21.0.0-next.7 + '@angular/platform-browser': 21.0.0-next.7 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-next.6': - resolution: {integrity: sha512-qrhVTgXSvfL4q16p3T23078jHLaZ+qWTjMIlo5JcODo2TgneoB3dnqdJAiL87xIKWz70Ga1hPstnkM55Qx+cKg==} + '@angular/router@21.0.0-next.7': + resolution: {integrity: sha512-idWEHAUP63vOVEo56Lyw3+/0RgAEHQu/sPPXDr87ylAJBNPj9eCQFGYobYCPXAkeqoyQF7BVjCS/S77e4HpIfA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.6 - '@angular/core': 21.0.0-next.6 - '@angular/platform-browser': 21.0.0-next.6 + '@angular/common': 21.0.0-next.7 + '@angular/core': 21.0.0-next.7 + '@angular/platform-browser': 21.0.0-next.7 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-next.6': - resolution: {integrity: sha512-GcBTEwMY9Fgwq6uJLVJi6ah9KLsNDDS6AridlLNeNCZtGl+ffmtFXCSLyIEZSNElYkhokaSVOWVr7Re0/nIFcQ==} + '@angular/service-worker@21.0.0-next.7': + resolution: {integrity: sha512-Rx3TIxqLJUle9PVN8+AnDoL1GMk8rIX3Qvfxhl7GvuNSPEeJxSEXpHlSCnmyHoOI5ULjS6OLorX4yK3N3rKbNQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-next.6 + '@angular/core': 21.0.0-next.7 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -2142,8 +2142,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.21.0': - resolution: {integrity: sha512-k47DECR8BF9z7IJxQd3reKuH2eUnOH5NlJWSe+CKM6nbXx+wH3hmtWQxUQR9M8gzWW1EvFuRVgjQssEIreNZsw==} + '@google/genai@1.22.0': + resolution: {integrity: sha512-siETS3zTm3EGpTT4+BFc1z20xXBYfueD3gCYfxkOjuAKRk8lt8TJevDHi3zepn1oSI6NhG/LZvy0i+Q3qheObg==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -2655,8 +2655,8 @@ packages: resolution: {integrity: sha512-vaQj4nccJbAslopIvd49pQH2NhUp7G9pY4byUtmwhe37ZZuubGrx0eB9hW2F37uVNRuDDK6byFGXF+7JCuMSZg==} engines: {node: ^20.17.0 || >=22.9.0} - '@octokit/auth-app@8.1.0': - resolution: {integrity: sha512-6bWhyvLXqCSfHiqlwzn9pScLZ+Qnvh/681GR/UEEPCMIVwfpRDBw0cCzy3/t2Dq8B7W2X/8pBgmw6MOiyE0DXQ==} + '@octokit/auth-app@8.1.1': + resolution: {integrity: sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA==} engines: {node: '>= 20'} '@octokit/auth-oauth-app@9.0.2': @@ -2675,8 +2675,8 @@ packages: resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} - '@octokit/core@7.0.4': - resolution: {integrity: sha512-jOT8V1Ba5BdC79sKrRWDdMT5l1R+XNHTPR6CPWzUP2EcfAcvIHZWF0eAbmRcpOOP5gVIwnqNg0C4nvh6Abc3OA==} + '@octokit/core@7.0.5': + resolution: {integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==} engines: {node: '>= 20'} '@octokit/endpoint@11.0.1': @@ -2686,8 +2686,8 @@ packages: '@octokit/graphql-schema@15.26.0': resolution: {integrity: sha512-SoVbh+sXe9nsoweFbLT3tAk3XWYbYLs5ku05wij1zhyQ2U3lewdrhjo5Tb7lfaOGWNHSkPZT4uuPZp8neF7P7A==} - '@octokit/graphql@9.0.1': - resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==} + '@octokit/graphql@9.0.2': + resolution: {integrity: sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==} engines: {node: '>= 20'} '@octokit/oauth-authorization-url@8.0.0': @@ -2698,14 +2698,11 @@ packages: resolution: {integrity: sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q==} engines: {node: '>= 20'} - '@octokit/openapi-types@25.1.0': - resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==} - '@octokit/openapi-types@26.0.0': resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} - '@octokit/plugin-paginate-rest@13.1.1': - resolution: {integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==} + '@octokit/plugin-paginate-rest@13.2.0': + resolution: {integrity: sha512-YuAlyjR8o5QoRSOvMHxSJzPtogkNMgeMv2mpccrvdUGeC3MKyfi/hS+KiFwyH/iRKIKyx+eIMsDjbt3p9r2GYA==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' @@ -2722,10 +2719,6 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/request-error@7.0.0': - resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==} - engines: {node: '>= 20'} - '@octokit/request-error@7.0.1': resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} engines: {node: '>= 20'} @@ -2738,9 +2731,6 @@ packages: resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} engines: {node: '>= 20'} - '@octokit/types@14.1.0': - resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} - '@octokit/types@15.0.0': resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==} @@ -2868,20 +2858,20 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pnpm/crypto.hash@1000.2.0': - resolution: {integrity: sha512-L22sQHDC4VM9cPSbOFi0e+C7JSt3isl/biV1jShz8MG9QjemiwTUMog4h0k0C5HoB1ycUjGkXTqAE4RJu3jLQA==} + '@pnpm/crypto.hash@1000.2.1': + resolution: {integrity: sha512-Kgo3bgYbdKkC5xFvvQshbHa+Nru7k50D91+yyq7enp4Ur2EMp4wg5oXleaC5xu5hC9A/1eSCRI8npCioplxG4A==} engines: {node: '>=18.12'} '@pnpm/crypto.polyfill@1000.1.0': resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.1': - resolution: {integrity: sha512-kUQeP42kxGSEyqhAZGzMs3UQGDiY8Xk3/718uIKqhtHUCSoCas/p3xRRiEXKs7Wesp0Eb1X0I5xrugZbPiK1dw==} + '@pnpm/dependency-path@1001.1.2': + resolution: {integrity: sha512-fih99/lY+HRRak0U0KMKAO7+nacilWMcvFTH6YDKzjCBTOhxDr6Eeap2mF7uf4ED4dnKsQVNUGmFpvaSXSuFCQ==} engines: {node: '>=18.12'} - '@pnpm/graceful-fs@1000.0.0': - resolution: {integrity: sha512-RvMEliAmcfd/4UoaYQ93DLQcFeqit78jhYmeJJVPxqFGmj0jEcb9Tu0eAOXr7tGP3eJHpgvPbTU4o6pZ1bJhxg==} + '@pnpm/graceful-fs@1000.0.1': + resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} '@pnpm/types@1000.8.0': @@ -3450,8 +3440,8 @@ packages: '@types/node@22.18.8': resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} - '@types/node@24.5.2': - resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + '@types/node@24.7.0': + resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -6261,9 +6251,6 @@ packages: jasmine-core@4.6.1: resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} - jasmine-core@5.11.0: - resolution: {integrity: sha512-MPJ8L5yyNul0F2SuEsLASwESXQjJvBXnKu31JWFyRZSvuv2B79K4GDWN3pSqvLheUNh7Fyb6dXwd4rsz95O2Kg==} - jasmine-core@5.12.0: resolution: {integrity: sha512-QqO4pX33GEML5JoGQU6BM5NHKPgEsg+TXp3jCIDek9MbfEp2JUYEFBo9EF1+hegWy/bCHS1m5nP0BOp18G6rVA==} @@ -6277,10 +6264,6 @@ packages: resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} hasBin: true - jasmine@5.11.0: - resolution: {integrity: sha512-MhIYY2pLfRA5hhIvY72ZLilwKeZEBuTyIUv9JDB+b+pEYehsJDW2obKF2dmMtWaFG6pDiFiAUNphpZ7SW7fFMA==} - hasBin: true - jasmine@5.12.0: resolution: {integrity: sha512-KmKeTNuH8rgAuPRL5AUsXWSdJVlDu+pgqi2dLXoZUSH/g3kR+7Ho8B7hEhwDu0fu1PLuiXZtfaxmQ/mB5wqihw==} hasBin: true @@ -8576,8 +8559,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.12.0: - resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -9262,28 +9245,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-next.8(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-next.6 + '@angular/compiler': 21.0.0-next.7 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9297,30 +9280,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-next.6': + '@angular/compiler@21.0.0-next.7': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-next.6 + '@angular/compiler': 21.0.0-next.7 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.6(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(@angular/compiler@21.0.0-next.6)': + '@angular/localize@21.0.0-next.7(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(@angular/compiler@21.0.0-next.7)': dependencies: - '@angular/compiler': 21.0.0-next.6 - '@angular/compiler-cli': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) + '@angular/compiler': 21.0.0-next.7 + '@angular/compiler-cli': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9328,41 +9311,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.6(80d28ef3220558a76162dc5524ed8579)': + '@angular/material@21.0.0-next.8(05250061371eb0125d7904add36a5bf0)': dependencies: - '@angular/cdk': 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-next.8(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/144e3ea51fb1044ac9e1699d621156fe15661dde(@modelcontextprotocol/sdk@1.19.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/650ac6faed7c4d83a70a7d9418f30bd383c520cb(@modelcontextprotocol/sdk@1.19.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.21.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.8.6(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) - '@octokit/auth-app': 8.1.0 - '@octokit/core': 7.0.4 - '@octokit/graphql': 9.0.1 + '@google/genai': 1.22.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 7.8.6(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@octokit/auth-app': 8.1.1 + '@octokit/core': 7.0.5 + '@octokit/graphql': 9.0.2 '@octokit/graphql-schema': 15.26.0 '@octokit/openapi-types': 26.0.0 - '@octokit/plugin-paginate-rest': 13.1.1(@octokit/core@7.0.4) - '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.4) - '@octokit/request-error': 7.0.0 + '@octokit/plugin-paginate-rest': 13.2.0(@octokit/core@7.0.5) + '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.5) + '@octokit/request-error': 7.0.1 '@octokit/rest': 22.0.0 '@octokit/types': 15.0.0 - '@pnpm/dependency-path': 1001.1.1 + '@pnpm/dependency-path': 1001.1.2 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.0 '@types/jasmine': 5.1.9 - '@types/node': 24.5.2 + '@types/node': 24.7.0 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -9379,8 +9362,8 @@ snapshots: firebase: 12.3.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) - jasmine: 5.11.0 - jasmine-core: 5.11.0 + jasmine: 5.12.0 + jasmine-core: 5.12.0 jasmine-reporters: 2.5.2 jsonc-parser: 3.3.1 minimatch: 10.0.3 @@ -9399,35 +9382,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.6)(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.7)(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-next.6 - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-next.7 + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-next.6(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.6(@angular/animations@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-next.6(@angular/core@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -10713,7 +10696,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.21.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.22.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -10764,128 +10747,128 @@ snapshots: '@inquirer/ansi@1.0.0': {} - '@inquirer/checkbox@4.2.4(@types/node@24.5.2)': + '@inquirer/checkbox@4.2.4(@types/node@24.7.0)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.7.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/confirm@5.1.18(@types/node@24.5.2)': + '@inquirer/confirm@5.1.18(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/core@10.2.2(@types/node@24.5.2)': + '@inquirer/core@10.2.2(@types/node@24.7.0)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.7.0) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/editor@4.2.20(@types/node@24.5.2)': + '@inquirer/editor@4.2.20(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/external-editor': 1.0.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/external-editor': 1.0.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/expand@4.0.20(@types/node@24.5.2)': + '@inquirer/expand@4.0.20(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/external-editor@1.0.2(@types/node@24.5.2)': + '@inquirer/external-editor@1.0.2(@types/node@24.7.0)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 '@inquirer/figures@1.0.13': {} - '@inquirer/input@4.2.4(@types/node@24.5.2)': + '@inquirer/input@4.2.4(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/number@3.0.20(@types/node@24.5.2)': + '@inquirer/number@3.0.20(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/password@4.0.20(@types/node@24.5.2)': + '@inquirer/password@4.0.20(@types/node@24.7.0)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) optionalDependencies: - '@types/node': 24.5.2 - - '@inquirer/prompts@7.8.6(@types/node@24.5.2)': - dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@24.5.2) - '@inquirer/confirm': 5.1.18(@types/node@24.5.2) - '@inquirer/editor': 4.2.20(@types/node@24.5.2) - '@inquirer/expand': 4.0.20(@types/node@24.5.2) - '@inquirer/input': 4.2.4(@types/node@24.5.2) - '@inquirer/number': 3.0.20(@types/node@24.5.2) - '@inquirer/password': 4.0.20(@types/node@24.5.2) - '@inquirer/rawlist': 4.1.8(@types/node@24.5.2) - '@inquirer/search': 3.1.3(@types/node@24.5.2) - '@inquirer/select': 4.3.4(@types/node@24.5.2) + '@types/node': 24.7.0 + + '@inquirer/prompts@7.8.6(@types/node@24.7.0)': + dependencies: + '@inquirer/checkbox': 4.2.4(@types/node@24.7.0) + '@inquirer/confirm': 5.1.18(@types/node@24.7.0) + '@inquirer/editor': 4.2.20(@types/node@24.7.0) + '@inquirer/expand': 4.0.20(@types/node@24.7.0) + '@inquirer/input': 4.2.4(@types/node@24.7.0) + '@inquirer/number': 3.0.20(@types/node@24.7.0) + '@inquirer/password': 4.0.20(@types/node@24.7.0) + '@inquirer/rawlist': 4.1.8(@types/node@24.7.0) + '@inquirer/search': 3.1.3(@types/node@24.7.0) + '@inquirer/select': 4.3.4(@types/node@24.7.0) optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/rawlist@4.1.8(@types/node@24.5.2)': + '@inquirer/rawlist@4.1.8(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/search@3.1.3(@types/node@24.5.2)': + '@inquirer/search@3.1.3(@types/node@24.7.0)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.7.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/select@4.3.4(@types/node@24.5.2)': + '@inquirer/select@4.3.4(@types/node@24.7.0)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.5.2) + '@inquirer/core': 10.2.2(@types/node@24.7.0) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/type': 3.0.8(@types/node@24.7.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 - '@inquirer/type@3.0.8(@types/node@24.5.2)': + '@inquirer/type@3.0.8(@types/node@24.7.0)': optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 '@isaacs/balanced-match@4.0.1': {} @@ -10976,10 +10959,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.4)': + '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.0))(@types/node@24.7.0)(listr2@9.0.4)': dependencies: - '@inquirer/prompts': 7.8.6(@types/node@24.5.2) - '@inquirer/type': 3.0.8(@types/node@24.5.2) + '@inquirer/prompts': 7.8.6(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.0) listr2: 9.0.4 transitivePeerDependencies: - '@types/node' @@ -11209,13 +11192,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@octokit/auth-app@8.1.0': + '@octokit/auth-app@8.1.1': dependencies: '@octokit/auth-oauth-app': 9.0.2 '@octokit/auth-oauth-user': 6.0.1 '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.0 - '@octokit/types': 14.1.0 + '@octokit/request-error': 7.0.1 + '@octokit/types': 15.0.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.2 universal-user-agent: 7.0.3 @@ -11245,12 +11228,12 @@ snapshots: '@octokit/auth-token@6.0.0': {} - '@octokit/core@7.0.4': + '@octokit/core@7.0.5': dependencies: '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.1 + '@octokit/graphql': 9.0.2 '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.0 + '@octokit/request-error': 7.0.1 '@octokit/types': 15.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 @@ -11265,10 +11248,10 @@ snapshots: graphql: 16.11.0 graphql-tag: 2.12.6(graphql@16.11.0) - '@octokit/graphql@9.0.1': + '@octokit/graphql@9.0.2': dependencies: '@octokit/request': 10.0.5 - '@octokit/types': 14.1.0 + '@octokit/types': 15.0.0 universal-user-agent: 7.0.3 '@octokit/oauth-authorization-url@8.0.0': {} @@ -11280,28 +11263,22 @@ snapshots: '@octokit/request-error': 7.0.1 '@octokit/types': 15.0.0 - '@octokit/openapi-types@25.1.0': {} - '@octokit/openapi-types@26.0.0': {} - '@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.4)': + '@octokit/plugin-paginate-rest@13.2.0(@octokit/core@7.0.5)': dependencies: - '@octokit/core': 7.0.4 - '@octokit/types': 14.1.0 + '@octokit/core': 7.0.5 + '@octokit/types': 15.0.0 - '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.4)': + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.5)': dependencies: - '@octokit/core': 7.0.4 + '@octokit/core': 7.0.5 - '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.4)': + '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.5)': dependencies: - '@octokit/core': 7.0.4 + '@octokit/core': 7.0.5 '@octokit/types': 15.0.0 - '@octokit/request-error@7.0.0': - dependencies: - '@octokit/types': 14.1.0 - '@octokit/request-error@7.0.1': dependencies: '@octokit/types': 15.0.0 @@ -11316,14 +11293,10 @@ snapshots: '@octokit/rest@22.0.0': dependencies: - '@octokit/core': 7.0.4 - '@octokit/plugin-paginate-rest': 13.1.1(@octokit/core@7.0.4) - '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.4) - '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.4) - - '@octokit/types@14.1.0': - dependencies: - '@octokit/openapi-types': 25.1.0 + '@octokit/core': 7.0.5 + '@octokit/plugin-paginate-rest': 13.2.0(@octokit/core@7.0.5) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.5) + '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.5) '@octokit/types@15.0.0': dependencies: @@ -11417,21 +11390,21 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pnpm/crypto.hash@1000.2.0': + '@pnpm/crypto.hash@1000.2.1': dependencies: '@pnpm/crypto.polyfill': 1000.1.0 - '@pnpm/graceful-fs': 1000.0.0 + '@pnpm/graceful-fs': 1000.0.1 ssri: 10.0.5 '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.1': + '@pnpm/dependency-path@1001.1.2': dependencies: - '@pnpm/crypto.hash': 1000.2.0 + '@pnpm/crypto.hash': 1000.2.1 '@pnpm/types': 1000.8.0 semver: 7.7.2 - '@pnpm/graceful-fs@1000.0.0': + '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 @@ -11958,9 +11931,9 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.5.2': + '@types/node@24.7.0': dependencies: - undici-types: 7.12.0 + undici-types: 7.14.0 '@types/npm-package-arg@6.1.4': {} @@ -12334,11 +12307,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12353,7 +12326,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12365,13 +12338,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -15442,8 +15415,6 @@ snapshots: jasmine-core@4.6.1: {} - jasmine-core@5.11.0: {} - jasmine-core@5.12.0: {} jasmine-reporters@2.5.2: @@ -15461,11 +15432,6 @@ snapshots: glob: 7.2.3 jasmine-core: 2.8.0 - jasmine@5.11.0: - dependencies: - glob: 10.4.5 - jasmine-core: 5.11.0 - jasmine@5.12.0: dependencies: glob: 10.4.5 @@ -16176,10 +16142,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.6(@angular/compiler@21.0.0-next.6)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.4) '@rollup/wasm-node': 4.52.4 ajv: 8.17.1 @@ -18128,7 +18094,7 @@ snapshots: undici-types@6.21.0: {} - undici-types@7.12.0: {} + undici-types@7.14.0: {} undici@5.29.0: dependencies: @@ -18301,13 +18267,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18322,7 +18288,7 @@ snapshots: - tsx - yaml - vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18331,7 +18297,7 @@ snapshots: rollup: 4.52.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18340,11 +18306,11 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18362,11 +18328,11 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.5.2 + '@types/node': 24.7.0 jsdom: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 8dd3875187db..bb70c1b699e2 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#52f26d9fab3309eaf482da99bc5bd3bd27284862", - "@angular/cdk": "github:angular/cdk-builds#a1bf3457fe248df46cdb54f2207b63abfd362f34", - "@angular/common": "github:angular/common-builds#5421247244103cf33269bbcf1d9108b5ba61b224", - "@angular/compiler": "github:angular/compiler-builds#1a288b737e0adb760042ae8c97eb4f742272e08d", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#d4761fa5073bb9591c5c1d293972949e666787c2", - "@angular/core": "github:angular/core-builds#405153c00d53a2da230b3c8c6d27aed6318a02ac", - "@angular/forms": "github:angular/forms-builds#62f2c064edf954016669196ae369b0fc093d127d", - "@angular/language-service": "github:angular/language-service-builds#19d89fc38a1cac54e80d084253899acfff69a2e2", - "@angular/localize": "github:angular/localize-builds#9cdaf9cffb7bc37ef34a8929d4cfd9ce945f7c79", - "@angular/material": "github:angular/material-builds#5cc8ddc79afa5759a8d1012b134d9bb74dba33f1", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2b6142141feb6bb879c0db3bab264a4cd7b80ee8", - "@angular/platform-browser": "github:angular/platform-browser-builds#f7798532c65bc4d8bce4f2a9ce745afcddb3c1aa", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#2b58925a690340bd59f8ea97d8269c681be84c31", - "@angular/platform-server": "github:angular/platform-server-builds#1b4361278c4bfdf84f04ea8861554f072a12ef05", - "@angular/router": "github:angular/router-builds#5c2e5aaebed8ff6598f53971fbc45ffc28d63b8d", - "@angular/service-worker": "github:angular/service-worker-builds#5ebb25fb0661163bb4e9a4a4a2d888bdf3532228" + "@angular/animations": "github:angular/animations-builds#3ebce81c6d43fa5632c0e0dd531acb8543de3d26", + "@angular/cdk": "github:angular/cdk-builds#827e6e2aaf8fd957b412055997e87a3d3afcca8d", + "@angular/common": "github:angular/common-builds#658f9e0da2adb6c9ce99ecee4f748acff2bb106c", + "@angular/compiler": "github:angular/compiler-builds#a12ebabc645c2d45d0c63770151ce6e30dde5c2c", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#ccf609592d35eb4d0c1fdaaab194e9732c2b3bb3", + "@angular/core": "github:angular/core-builds#dbcb130328916154fd55c06a9ef488a863c2eb08", + "@angular/forms": "github:angular/forms-builds#d5c9dd1aac9092ed0a7d884373460cda77cc6e38", + "@angular/language-service": "github:angular/language-service-builds#c7e32a7c3c62bdc6ccdadf860853c78bf2474b17", + "@angular/localize": "github:angular/localize-builds#f5cc605f797f6f3bcadd0318da88098239d873e3", + "@angular/material": "github:angular/material-builds#1630a0c5a364186e65a316747a29187f2f115bef", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#755c80eb3d13b2102a330d7a446d73b37d930c64", + "@angular/platform-browser": "github:angular/platform-browser-builds#e2704240d6bb504f6c7bc11ecfb693c99f6d51fc", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#de9664b2b89bb683ef09338f3b1f777c74e7ce96", + "@angular/platform-server": "github:angular/platform-server-builds#11e1eeb377ddecf5ab922084e350d3311989d296", + "@angular/router": "github:angular/router-builds#2b98622fc81993ce4de69f3e54c7b74c4ea06a2b", + "@angular/service-worker": "github:angular/service-worker-builds#abd4ef917e2ee144028a54ea4bd4d5896ebb791c" } } From 90118205e5580c607f4215c28daf4c4c05e6252d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 8 Oct 2025 18:06:21 +0000 Subject: [PATCH 1574/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 2 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 4 +- .../angular_devkit/build_angular/package.json | 4 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 369 +++++++++--------- 7 files changed, 196 insertions(+), 189 deletions(-) diff --git a/package.json b/package.json index 5aa08d0e544a..806ec3bc0bb2 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", - "semver": "7.7.2", + "semver": "7.7.3", "shelljs": "^0.10.0", "source-map-support": "0.5.21", "tar": "^7.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index a2f4bc6aab58..8f0bddbb3a36 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -39,7 +39,7 @@ "piscina": "5.1.3", "rolldown": "1.0.0-beta.42", "sass": "1.93.2", - "semver": "7.7.2", + "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", "vite": "7.1.9", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 201e18454e8c..bcf2e0833b8b 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -30,14 +30,14 @@ "@modelcontextprotocol/sdk": "1.19.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.39.0", + "algoliasearch": "5.40.0", "ini": "5.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.4", "npm-package-arg": "13.0.1", "pacote": "21.0.3", "resolve": "1.22.10", - "semver": "7.7.2", + "semver": "7.7.3", "yargs": "18.0.0", "zod": "3.25.76" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index b63d2dd1bab8..dda6a3b9ed0b 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -48,14 +48,14 @@ "rxjs": "7.8.2", "sass": "1.93.2", "sass-loader": "16.0.5", - "semver": "7.7.2", + "semver": "7.7.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", "terser": "5.44.0", "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.102.0", + "webpack": "5.102.1", "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index da329c76aaab..80780f3f1638 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.102.0", + "webpack": "5.102.1", "webpack-dev-server": "5.2.2" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 05c5cc60bdc9..d54cb1b44c11 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "21.0.0-next.7", "@angular/compiler-cli": "21.0.0-next.7", "typescript": "5.9.3", - "webpack": "5.102.0" + "webpack": "5.102.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 500fd5a57d40..73a5d1bc2f50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -281,8 +281,8 @@ importers: specifier: 0.5.4 version: 0.5.4(@types/node@22.18.8)(rollup@4.52.4) semver: - specifier: 7.7.2 - version: 7.7.2 + specifier: 7.7.3 + version: 7.7.3 shelljs: specifier: ^0.10.0 version: 0.10.0 @@ -416,8 +416,8 @@ importers: specifier: 1.93.2 version: 1.93.2 semver: - specifier: 7.7.2 - version: 7.7.2 + specifier: 7.7.3 + version: 7.7.3 source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -487,8 +487,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.39.0 - version: 5.39.0 + specifier: 5.40.0 + version: 5.40.0 ini: specifier: 5.0.0 version: 5.0.0 @@ -508,8 +508,8 @@ importers: specifier: 1.22.10 version: 1.22.10 semver: - specifier: 7.7.2 - version: 7.7.2 + specifier: 7.7.3 + version: 7.7.3 yargs: specifier: 18.0.0 version: 18.0.0 @@ -652,16 +652,16 @@ importers: version: 10.4.21(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.0(esbuild@0.25.10)) + version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.10)) browserslist: specifier: ^4.26.0 version: 4.26.3 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.102.0(esbuild@0.25.10)) + version: 13.0.1(webpack@5.102.1(esbuild@0.25.10)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.102.0(esbuild@0.25.10)) + version: 7.1.2(webpack@5.102.1(esbuild@0.25.10)) esbuild-wasm: specifier: 0.25.10 version: 0.25.10 @@ -682,16 +682,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.102.0(esbuild@0.25.10)) + version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.10)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.102.0(esbuild@0.25.10)) + version: 4.0.2(webpack@5.102.1(esbuild@0.25.10)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.102.0(esbuild@0.25.10)) + version: 2.9.4(webpack@5.102.1(esbuild@0.25.10)) open: specifier: 10.2.0 version: 10.2.0 @@ -709,7 +709,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.0(esbuild@0.25.10)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.10)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -721,13 +721,13 @@ importers: version: 1.93.2 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.93.2)(webpack@5.102.0(esbuild@0.25.10)) + version: 16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.10)) semver: - specifier: 7.7.2 - version: 7.7.2 + specifier: 7.7.3 + version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.102.0(esbuild@0.25.10)) + version: 5.0.0(webpack@5.102.1(esbuild@0.25.10)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -744,20 +744,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.102.0 - version: 5.102.0(esbuild@0.25.10) + specifier: 5.102.1 + version: 5.102.1(esbuild@0.25.10) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.102.0(esbuild@0.25.10)) + version: 7.4.5(webpack@5.102.1(esbuild@0.25.10)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.0(esbuild@0.25.10)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.10)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.102.0(esbuild@0.25.10)) + version: 5.1.0(webpack@5.102.1(esbuild@0.25.10)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -795,11 +795,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.102.0 - version: 5.102.0(esbuild@0.25.10) + specifier: 5.102.1 + version: 5.102.1(esbuild@0.25.10) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.0(esbuild@0.25.10)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.10)) packages/angular_devkit/core: dependencies: @@ -877,8 +877,8 @@ importers: specifier: 5.9.3 version: 5.9.3 webpack: - specifier: 5.102.0 - version: 5.102.0(esbuild@0.25.10) + specifier: 5.102.1 + version: 5.102.1(esbuild@0.25.10) packages/schematics/angular: dependencies: @@ -918,60 +918,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.5.0': - resolution: {integrity: sha512-W/ohRkbKQsqDWALJg28X15KF7Tcyg53L1MfdOkLgvkcCcofdzGHSimHHeNG05ojjFw9HK8+VPhe/Vwq4MozIJg==} + '@algolia/abtesting@1.6.0': + resolution: {integrity: sha512-c4M/Z/KWkEG+RHpZsWKDTTlApXu3fe4vlABNcpankWBhdMe4oPZ/r4JxEr2zKUP6K+BT66tnp8UbHmgOd/vvqQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.39.0': - resolution: {integrity: sha512-Vf0ZVe+qo3sHDrCinouJqlg8VoxM4Qo/KxNIqMYybkuctutfnp3kIY9OmESplOQ/9NGBthU9EG+4d5fBibWK/A==} + '@algolia/client-abtesting@5.40.0': + resolution: {integrity: sha512-qegVlgHtmiS8m9nEsuKUVhlw1FHsIshtt5nhNnA6EYz3g+tm9+xkVZZMzkrMLPP7kpoheHJZAwz2MYnHtwFa9A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.39.0': - resolution: {integrity: sha512-V16ITZxYIwcv1arNce65JZmn94Ft6vKlBZ//gXw8AvIH32glJz1KcbaVAUr9p7PYlGZ/XVHP6LxDgrpNdtwgcA==} + '@algolia/client-analytics@5.40.0': + resolution: {integrity: sha512-Dw2c+6KGkw7mucnnxPyyMsIGEY8+hqv6oB+viYB612OMM3l8aNaWToBZMnNvXsyP+fArwq7XGR+k3boPZyV53A==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.39.0': - resolution: {integrity: sha512-UCJTuwySEQeiKPWV3wruhuI/wHbDYenHzgL9pYsvh6r/u5Z+g61ip1iwdAlFp02CnywzI9O7+AQPh2ManYyHmQ==} + '@algolia/client-common@5.40.0': + resolution: {integrity: sha512-dbE4+MJIDsTghG3hUYWBq7THhaAmqNqvW9g2vzwPf5edU4IRmuYpKtY3MMotes8/wdTasWG07XoaVhplJBlvdg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.39.0': - resolution: {integrity: sha512-s0ia8M/ZZR+iO2uLNTBrlQdEb6ZMAMcKMHckp5mcoglxrf8gHifL4LmdhGKdAxAn3UIagtqIP0RCnIymHUbm7A==} + '@algolia/client-insights@5.40.0': + resolution: {integrity: sha512-SH6zlROyGUCDDWg71DlCnbbZ/zEHYPZC8k901EAaBVhvY43Ju8Wa6LAcMPC4tahcDBgkG2poBy8nJZXvwEWAlQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.39.0': - resolution: {integrity: sha512-vZPIt7Lw+toNsHZUiPhNIc1Z3vUjDp7nzn6AMOaPC73gEuTq2iLPNvM06CSB6aHePo5eMeJIP5YEKBUQUA/PJA==} + '@algolia/client-personalization@5.40.0': + resolution: {integrity: sha512-EgHjJEEf7CbUL9gJHI1ULmAtAFeym2cFNSAi1uwHelWgLPcnLjYW2opruPxigOV7NcetkGu+t2pcWOWmZFuvKQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.39.0': - resolution: {integrity: sha512-jcPQr3iKTWNVli2NYHPv02aNLwixDjPCpOgMp9CZTvEiPI6Ec4jHX+oFr3LDZagOFY9e1xJhc/JrgMGGW1sHnw==} + '@algolia/client-query-suggestions@5.40.0': + resolution: {integrity: sha512-HvE1jtCag95DR41tDh7cGwrMk4X0aQXPOBIhZRmsBPolMeqRJz0kvfVw8VCKvA1uuoAkjFfTG0X0IZED+rKXoA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.39.0': - resolution: {integrity: sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==} + '@algolia/client-search@5.40.0': + resolution: {integrity: sha512-nlr/MMgoLNUHcfWC5Ns2ENrzKx9x51orPc6wJ8Ignv1DsrUmKm0LUih+Tj3J+kxYofzqQIQRU495d4xn3ozMbg==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.39.0': - resolution: {integrity: sha512-IgSHKUiuecqLfBlXiuCSdRTdsO3/yvpmXrMFz8fAJ8M4QmDtHkOuD769dmybRYqsbYMHivw+lir4BgbRGMtOIQ==} + '@algolia/ingestion@1.40.0': + resolution: {integrity: sha512-OfHnhE+P0f+p3i90Kmshf9Epgesw5oPV1IEUOY4Mq1HV7cQk16gvklVN1EaY/T9sVavl+Vc3g4ojlfpIwZFA4g==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.39.0': - resolution: {integrity: sha512-8Xnd4+609SKC/hqVsuFc4evFBmvA2765/4NcH+Dpr756SKPbL1BY0X8kVxlmM3YBLNqnduSQxHxpDJUK58imCA==} + '@algolia/monitoring@1.40.0': + resolution: {integrity: sha512-SWANV32PTKhBYvwKozeWP9HOnVabOixAuPdFFGoqtysTkkwutrtGI/rrh80tvG+BnQAmZX0vUmD/RqFZVfr/Yg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.39.0': - resolution: {integrity: sha512-D7Ye2Ss/5xqUkQUxKm/VqEJLt5kARd9IMmjdzlxaKhGgNlOemTay0lwBmOVFuJRp7UODjp5c9+K+B8g0ORObIw==} + '@algolia/recommend@5.40.0': + resolution: {integrity: sha512-1Qxy9I5bSb3mrhPk809DllMa561zl5hLsMR6YhIqNkqQ0OyXXQokvJ2zApSxvd39veRZZnhN+oGe+XNoNwLgkw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.39.0': - resolution: {integrity: sha512-mgPte1ZJqpk9dkVs44J3wKAbHATvHZNlSpzhMdjMLIg/3qTycSZyDiomLiSlxE8CLsxyBAOJWnyKRHfom+Z1rg==} + '@algolia/requester-browser-xhr@5.40.0': + resolution: {integrity: sha512-MGt94rdHfkrVjfN/KwUfWcnaeohYbWGINrPs96f5J7ZyRYpVLF+VtPQ2FmcddFvK4gnKXSu8BAi81hiIhUpm3w==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.39.0': - resolution: {integrity: sha512-LIrCkrxu1WnO3ev1+w6NnZ12JZL/o+2H9w6oWnZAjQZIlA/Ym6M9QHkt+OQ/SwkuoiNkW3DAo+Pi4A2V9FPtqg==} + '@algolia/requester-fetch@5.40.0': + resolution: {integrity: sha512-wXQ05JZZ10Dr642QVAkAZ4ZZlU+lh5r6dIBGmm9WElz+1EaQ6BNYtEOTV6pkXuFYsZpeJA89JpDOiwBOP9j24w==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.39.0': - resolution: {integrity: sha512-6beG+egPwXmvhAg+m0STCj+ZssDcjrLzf4L05aKm2nGglMXSSPz0cH/rM+kVD9krNfldiMctURd4wjojW1fV0w==} + '@algolia/requester-node-http@5.40.0': + resolution: {integrity: sha512-5qCRoySnzpbQVg2IPLGFCm4LF75pToxI5tdjOYgUMNL/um91aJ4dH3SVdBEuFlVsalxl8mh3bWPgkUmv6NpJiQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -3921,8 +3921,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.39.0: - resolution: {integrity: sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==} + algoliasearch@5.40.0: + resolution: {integrity: sha512-a9aIL2E3Z7uYUPMCmjMFFd5MWhn+ccTubEvnMy7rOTZCB62dXBJtz0R5BZ/TPuX3R9ocBsgWuAbGWQ+Ph4Fmlg==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -7891,6 +7891,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -8860,8 +8865,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.102.0: - resolution: {integrity: sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==} + webpack@5.102.1: + resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -9156,89 +9161,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.5.0': + '@algolia/abtesting@1.6.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/client-abtesting@5.39.0': + '@algolia/client-abtesting@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/client-analytics@5.39.0': + '@algolia/client-analytics@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/client-common@5.39.0': {} + '@algolia/client-common@5.40.0': {} - '@algolia/client-insights@5.39.0': + '@algolia/client-insights@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/client-personalization@5.39.0': + '@algolia/client-personalization@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/client-query-suggestions@5.39.0': + '@algolia/client-query-suggestions@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/client-search@5.39.0': + '@algolia/client-search@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/ingestion@1.39.0': + '@algolia/ingestion@1.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/monitoring@1.39.0': + '@algolia/monitoring@1.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/recommend@5.39.0': + '@algolia/recommend@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + '@algolia/client-common': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 - '@algolia/requester-browser-xhr@5.39.0': + '@algolia/requester-browser-xhr@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 + '@algolia/client-common': 5.40.0 - '@algolia/requester-fetch@5.39.0': + '@algolia/requester-fetch@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 + '@algolia/client-common': 5.40.0 - '@algolia/requester-node-http@5.39.0': + '@algolia/requester-node-http@5.40.0': dependencies: - '@algolia/client-common': 5.39.0 + '@algolia/client-common': 5.40.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9272,7 +9277,7 @@ snapshots: chokidar: 4.0.3 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 - semver: 7.7.2 + semver: 7.7.3 tslib: 2.8.1 yargs: 18.0.0 optionalDependencies: @@ -10113,7 +10118,7 @@ snapshots: '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)': dependencies: '@types/semver': 7.7.1 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.0 @@ -11145,7 +11150,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.2 + semver: 7.7.3 '@npmcli/git@7.0.0': dependencies: @@ -11155,7 +11160,7 @@ snapshots: npm-pick-manifest: 11.0.1 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.2 + semver: 7.7.3 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -11172,7 +11177,7 @@ snapshots: hosted-git-info: 9.0.0 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.3': @@ -11402,7 +11407,7 @@ snapshots: dependencies: '@pnpm/crypto.hash': 1000.2.1 '@pnpm/types': 1000.8.0 - semver: 7.7.2 + semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: @@ -11439,7 +11444,7 @@ snapshots: extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 - semver: 7.7.2 + semver: 7.7.3 tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: @@ -11903,7 +11908,7 @@ snapshots: '@types/loader-utils@3.0.0(esbuild@0.25.10)': dependencies: '@types/node': 22.18.8 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12126,7 +12131,7 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12707,22 +12712,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.39.0: - dependencies: - '@algolia/abtesting': 1.5.0 - '@algolia/client-abtesting': 5.39.0 - '@algolia/client-analytics': 5.39.0 - '@algolia/client-common': 5.39.0 - '@algolia/client-insights': 5.39.0 - '@algolia/client-personalization': 5.39.0 - '@algolia/client-query-suggestions': 5.39.0 - '@algolia/client-search': 5.39.0 - '@algolia/ingestion': 1.39.0 - '@algolia/monitoring': 1.39.0 - '@algolia/recommend': 5.39.0 - '@algolia/requester-browser-xhr': 5.39.0 - '@algolia/requester-fetch': 5.39.0 - '@algolia/requester-node-http': 5.39.0 + algoliasearch@5.40.0: + dependencies: + '@algolia/abtesting': 1.6.0 + '@algolia/client-abtesting': 5.40.0 + '@algolia/client-analytics': 5.40.0 + '@algolia/client-common': 5.40.0 + '@algolia/client-insights': 5.40.0 + '@algolia/client-personalization': 5.40.0 + '@algolia/client-query-suggestions': 5.40.0 + '@algolia/client-search': 5.40.0 + '@algolia/ingestion': 1.40.0 + '@algolia/monitoring': 1.40.0 + '@algolia/recommend': 5.40.0 + '@algolia/requester-browser-xhr': 5.40.0 + '@algolia/requester-fetch': 5.40.0 + '@algolia/requester-node-http': 5.40.0 ansi-colors@4.1.3: {} @@ -12889,11 +12894,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.0(esbuild@0.25.10)): + babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.10)): dependencies: '@babel/core': 7.28.4 find-up: 5.0.0 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): dependencies: @@ -13501,14 +13506,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.102.0(esbuild@0.25.10)): + copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.25.10)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) core-js-compat@3.45.1: dependencies: @@ -13552,7 +13557,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.102.0(esbuild@0.25.10)): + css-loader@7.1.2(webpack@5.102.1(esbuild@0.25.10)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13561,9 +13566,9 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) css-select@6.0.0: dependencies: @@ -15364,7 +15369,7 @@ snapshots: '@babel/parser': 7.28.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -15538,7 +15543,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.2 + semver: 7.7.3 jsprim@1.4.2: dependencies: @@ -15714,11 +15719,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.102.0(esbuild@0.25.10)): + less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.10)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) less@4.4.2: dependencies: @@ -15739,11 +15744,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.102.0(esbuild@0.25.10)): + license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.25.10)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) lie@3.3.0: dependencies: @@ -15908,7 +15913,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} @@ -16006,11 +16011,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.0(esbuild@0.25.10)): + mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.25.10)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) minimalistic-assert@1.0.1: {} @@ -16222,7 +16227,7 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 tar: 7.5.1 tinyglobby: 0.2.15 which: 5.0.0 @@ -16247,7 +16252,7 @@ snapshots: npm-install-checks@7.1.2: dependencies: - semver: 7.7.2 + semver: 7.7.3 npm-normalize-package-bin@4.0.0: {} @@ -16255,7 +16260,7 @@ snapshots: dependencies: hosted-git-info: 9.0.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-name: 6.0.2 npm-packlist@10.0.2: @@ -16268,7 +16273,7 @@ snapshots: npm-install-checks: 7.1.2 npm-normalize-package-bin: 4.0.0 npm-package-arg: 13.0.1 - semver: 7.7.2 + semver: 7.7.3 npm-registry-fetch@19.0.0: dependencies: @@ -16647,14 +16652,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.0(esbuild@0.25.10)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.10)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) transitivePeerDependencies: - typescript @@ -17214,12 +17219,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.0(esbuild@0.25.10)): + sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.10)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.93.2 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) sass@1.93.2: dependencies: @@ -17268,6 +17273,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -17533,11 +17540,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.102.0(esbuild@0.25.10)): + source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.25.10)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) source-map-support@0.4.18: dependencies: @@ -17830,14 +17837,14 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.10)(webpack@5.102.0(esbuild@0.25.10)): + terser-webpack-plugin@5.3.14(esbuild@0.25.10)(webpack@5.102.1(esbuild@0.25.10)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) optionalDependencies: esbuild: 0.25.10 @@ -18397,7 +18404,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.102.0(esbuild@0.25.10)): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.10)): dependencies: colorette: 2.0.20 memfs: 4.48.1 @@ -18406,9 +18413,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.0(esbuild@0.25.10)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.10)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18436,10 +18443,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.0(esbuild@0.25.10)) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.10)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) transitivePeerDependencies: - bufferutil - debug @@ -18454,12 +18461,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.102.0(esbuild@0.25.10)): + webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.25.10)): dependencies: typed-assert: 1.0.9 - webpack: 5.102.0(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.10) - webpack@5.102.0(esbuild@0.25.10): + webpack@5.102.1(esbuild@0.25.10): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18483,7 +18490,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.10)(webpack@5.102.0(esbuild@0.25.10)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.10)(webpack@5.102.1(esbuild@0.25.10)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 1d76e403c95aa6e1f5aab184a9f9522dbc9abcfd Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 8 Oct 2025 10:27:57 +0000 Subject: [PATCH 1575/2162] build: improve source map configuration for better debugging This commit refactors the jasmine_test rule in tools/defaults.bzl to use the centralized version from @devinfra//bazel/jasmine:jasmine.bzl. This simplifies the rule by removing manual source-map-support handling. Source map generation has been standardized across the project by enabling the sourceMap option in the root tsconfig.json and removing conflicting inline source map settings from test-specific configurations. These changes significantly improve the developer experience by enabling breakpoints to be set directly within TypeScript source files when debugging tests in editors like VSCode. Additionally, the exclusion rules for .vscode/tasks.json and .vscode/launch.json have been removed from .gitignore, aligning with the standard practice of not tracking user-specific editor configurations. --- .gitignore | 2 +- .vscode/launch.json | 49 +++++++++++++++++++ .vscode/settings.json | 26 ++++++++++ .../angular/workspace/index_spec.ts | 1 - tools/defaults.bzl | 14 ++---- tsconfig-test-esm.json | 3 -- tsconfig-test.json | 6 --- tsconfig.json | 1 + 8 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index de3ad9a9154d..83582f8ece43 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,7 @@ jsconfig.json # VSCode # https://github.com/github/gitignore/blob/master/Global/VisualStudioCode.gitignore -.vscode/ +.vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000000..6f3e0e3d3375 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,49 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +{ + "version": "0.2.0", + "configurations": [ + { + "name": "DEBUG: Attach to bazel test", + "type": "node", + "request": "attach", + "port": 9229, + "restart": true, + "timeout": 600000, + "sourceMaps": true, + "skipFiles": ["/**"], + "sourceMapPathOverrides": { + "?:*@0.0.0/node_modules/@angular-devkit/build-angular/*": "${workspaceFolder}/packages/angular_devkit/build_angular/*", + "?:*@0.0.0/node_modules/@angular-devkit/build-webpack/*": "${workspaceFolder}/packages/angular_devkit/build_webpack/*", + "?:*@0.0.0/node_modules/@angular-devkit/*": "${workspaceFolder}/packages/angular_devkit/*", + "?:*@0.0.0/node_modules/@angular/*": "${workspaceFolder}/packages/angular/*", + "?:*/bin/*": "${workspaceFolder}/*" + }, + "resolveSourceMapLocations": ["*/**", "!**/rxjs**"] + }, + { + "name": "DEBUG: Run bazel test (Custom Target)", + "type": "node", + "request": "launch", + "restart": true, + "timeout": 600000, + "runtimeExecutable": "pnpm", + "runtimeArgs": ["bazel", "test", "${input:bazelTarget}", "--config=debug"], + "console": "integratedTerminal", + "cwd": "${workspaceFolder}" + } + ], + "compounds": [ + { + "name": "DEBUG: Run bazel test (Custom Target) + Attach", + "configurations": ["DEBUG: Attach to bazel test", "DEBUG: Run bazel test (Custom Target)"] + } + ], + "inputs": [ + { + "id": "bazelTarget", + "type": "promptString", + "description": "Enter the Bazel test target (e.g., //path/to/my:unit_test)", + "default": "//packages/..." + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000000..b98a874af297 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "[javascript]": { + "editor.formatOnSave": true + }, + "[typescript]": { + "editor.formatOnSave": true + }, + // Exclude third party modules and build artifacts from the editor watchers/searches. + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/node_modules/**": true, + "**/bazel-out/**": true, + "**/dist/**": true, + "**/dist-schema/**": true + }, + "search.exclude": { + "**/node_modules": true, + "**/bazel-out": true, + "**/dist": true, + "**/dist-schema": true, + ".history": true + }, + "git.ignoreLimitWarning": true, + "gitlens.advanced.blame.customArguments": ["--ignore-revs-file .git-blame-ignore-revs"] +} diff --git a/packages/schematics/angular/workspace/index_spec.ts b/packages/schematics/angular/workspace/index_spec.ts index b5c75b4a6d61..22be6e797e14 100644 --- a/packages/schematics/angular/workspace/index_spec.ts +++ b/packages/schematics/angular/workspace/index_spec.ts @@ -23,7 +23,6 @@ describe('Workspace Schematic', () => { it('should create all files of a workspace', async () => { const options = { ...defaultOptions }; - const tree = await schematicRunner.runSchematic('workspace', options); const files = tree.files; expect(files).toEqual( diff --git a/tools/defaults.bzl b/tools/defaults.bzl index dc99b2b24e56..2304bec17698 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -1,6 +1,6 @@ load("@aspect_bazel_lib//lib:copy_to_bin.bzl", _copy_to_bin = "copy_to_bin") -load("@aspect_rules_jasmine//jasmine:defs.bzl", _jasmine_test = "jasmine_test") load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary") +load("@devinfra//bazel/jasmine:jasmine.bzl", _jasmine_test = "jasmine_test") load("@devinfra//bazel/ts_project:index.bzl", "strict_deps_test") load("@rules_angular//src/ng_package:index.bzl", _ng_package = "ng_package") load("@rules_angular//src/ts_project:index.bzl", _ts_project = "ts_project") @@ -12,6 +12,7 @@ def ts_project( deps = [], tsconfig = None, testonly = False, + source_map = True, visibility = None, **kwargs): if tsconfig == None: @@ -21,6 +22,7 @@ def ts_project( name = name, testonly = testonly, declaration = True, + source_map = source_map, tsconfig = tsconfig, visibility = visibility, deps = deps, @@ -54,21 +56,15 @@ def ng_package(deps = [], **kwargs): **kwargs ) -def jasmine_test(data = [], args = [], **kwargs): - # Create relative path to root, from current package dir. Necessary as - # we change the `chdir` below to the package directory. - relative_to_root = "/".join([".."] * len(native.package_name().split("/"))) - +def jasmine_test(args = [], tsconfig = "//:test-tsconfig", **kwargs): _jasmine_test( node_modules = "//:node_modules", + tsconfig = tsconfig, chdir = native.package_name(), args = [ - "--require=%s/node_modules/source-map-support/register.js" % relative_to_root, - # Escape so that the `js_binary` launcher triggers Bash expansion. "'**/*+(.|_)spec.js'", "'**/*+(.|_)spec.mjs'", "'**/*+(.|_)spec.cjs'", ] + args, - data = data + ["//:node_modules/source-map-support"], **kwargs ) diff --git a/tsconfig-test-esm.json b/tsconfig-test-esm.json index 4f582716d3eb..1f65ce7b7698 100644 --- a/tsconfig-test-esm.json +++ b/tsconfig-test-esm.json @@ -6,9 +6,6 @@ { "extends": "./tsconfig-build-esm.json", "compilerOptions": { - "sourceMap": false, - "inlineSourceMap": true, - "inlineSources": true, "types": ["node", "jasmine"] } } diff --git a/tsconfig-test.json b/tsconfig-test.json index cae29f3a3cac..d022089a5513 100644 --- a/tsconfig-test.json +++ b/tsconfig-test.json @@ -1,12 +1,6 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "inlineSourceMap": true, - "sourceRoot": ".", - // Inline sources are necessary for our tests to show the proper sources, since we are using - // Istanbul (not Constantinople) as well, and applying both source maps to get the original - // source in devtools. - "inlineSources": true, "types": ["node", "jasmine"] } } diff --git a/tsconfig.json b/tsconfig.json index f00528f2698f..12256cd116ed 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "noImplicitOverride": true, "isolatedModules": true, "skipLibCheck": true, + "sourceMap": true, "strict": true, "target": "es2023", "lib": ["es2023"], From 6b9405eedf06cf9a7a329696a68bf3810c817b9c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Oct 2025 10:39:11 +0000 Subject: [PATCH 1576/2162] build: update dependency bazel to v7.6.2 See associated pull request for more information. --- .bazelversion | 2 +- MODULE.bazel.lock | 38 ++++++-------------------------------- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/.bazelversion b/.bazelversion index e8be68404bcb..e81e85b81044 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.6.1 +7.6.2 diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 31c4fcdadf47..c54c69feff9d 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -10,8 +10,8 @@ "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", - "https://bcr.bazel.build/modules/apple_support/1.5.0/source.json": "eb98a7627c0bc486b57f598ad8da50f6625d974c8f723e9ea71bd39f709c9862", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", @@ -42,6 +42,7 @@ "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", @@ -105,6 +106,7 @@ "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.11/MODULE.bazel": "9f249c5624a4788067b96b8b896be10c7e8b4375dc46f6d8e1e51100113e0992", "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", @@ -201,34 +203,6 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { - "general": { - "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=", - "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf_toolchains", - "attributes": {} - }, - "local_config_apple_cc": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "apple_support~", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { "bzlTransitiveDigest": "kzZXVf0lIRQArtJstiytwibC6m5npERsjNfhP9yJJW4=", @@ -411,7 +385,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "KMsyoH5ShknUHVmkSHztDMIN0fXSzKZBut4ETq2s/Sw=", + "bzlTransitiveDigest": "2EzhmJcOK6eUPERbnFW8UdrwodSbUF5O4co1bHslj00=", "usagesDigest": "IhWFaS3+adcZAFZpJlR1wPWkibqbPczXdu8nnyFjNyw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -2256,7 +2230,7 @@ }, "@@rules_python~//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "8USX8QvzWk9pjl0ion2dAqEqjB3yzkmi3d13o89Cchs=", + "bzlTransitiveDigest": "sQcIxpGBMBOMzUZK9ARAkAR7oUiEiGgKZhHLEf9Prfk=", "usagesDigest": "K3E4RGDnEgGXkrLOS8/ma4NTUiLvGkMrRIhPiFxv8u0=", "recordedFileInputs": { "@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", From 37fe9382130e666bff87d65fe5be9d42adcbeac3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Oct 2025 11:04:42 +0000 Subject: [PATCH 1577/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 36 ++++++++++++++++++------------------ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 545fc67f399c..40cde073e0b5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -40,14 +40,14 @@ git_override( bazel_dep(name = "rules_sass") git_override( module_name = "rules_sass", - commit = "4a54e0e4e75fc6456ff874e53fb4a78bdfeb44b9", + commit = "1184a80751a21af8348f308abc5b38a41f26850e", remote = "https://github.com/devversion/rules_sass.git", ) bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "508168a93dcbadfd2504f8ce775e2c19ebfe7fad", + commit = "0e04a5443e783ef983c84314e311e68410dd82e1", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c54c69feff9d..d052e4debe57 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -525,7 +525,7 @@ "bzlTransitiveDigest": "9IJp6IlB/FMHFBJe4MX/DQM4zi3oArC8yqYE/+NyPwk=", "usagesDigest": "PB65rYTG/QbLoSQfRhLDeERG+0m7bjTPzYXBqieQ5/4=", "recordedFileInputs": { - "@@rules_browsers~//package.json": "d5e7a05131b6ebf4c09d49afe82c3018182415b3a9c53000a32a7032f491d2c4" + "@@rules_browsers~//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" }, "recordedDirentsInputs": {}, "envVariables": {}, @@ -703,7 +703,7 @@ }, "@@rules_browsers~//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "gdpz377/gr/oSZxJsWmqNfdy1fiSkrvL/11Umvw987c=", + "bzlTransitiveDigest": "wG3lfivSBp6/w6pp9XxmrFKs0j4BJ1G7oDv4DpFa62g=", "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -713,9 +713,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "155fe3738dc90b9723752974eb93a0500de631fe5de0732be1a79d00ff565962", + "sha256": "79a3a4d3a5f9efae04dbb7c2164393ff8fee5f352ec73e36900848c75f4f906f", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -732,9 +732,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "16882cc7cb5b86d491ecd9669c9d9a3b2c591f9ac031774476cf4f99c254b579", + "sha256": "cdba96e69a423adc1f2647f35643a10e33260b4dfcc233977f3724f28bffd8f2", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -751,9 +751,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "ad608b5afff4dec60778ed83fab4f0d6b8563ab7ac94b3b48b1e0cebabec392e", + "sha256": "56eb0c57958b50dc6c0de810ea9fcf1ff800baf2a4b14ae0fea536e633806098", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -770,9 +770,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "f3d396ad4b6244feee263a6b39d8e8b32f1d568db74a333c2e7679e0fcd7ab09", + "sha256": "506b23250323f3eb4cdfe298cfd599571e428f6f3a64e86818ee975f4e585b75", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -789,9 +789,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "da19a48eca2e7a09d757003eda2e814c8b7a9db462301faccc24564e5e593eca", + "sha256": "8bf018ed7c383dfd4a4a8f26702265e58b053e71583c4b7a6f8a3eaa6e9b9e6f", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -806,9 +806,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "156dc49c7f1707c72b670182d63fc2e6414734950221ba5c2fc133f580ed3713", + "sha256": "4eb9cc848823444374bf2d3d388eaa949cee92114a611ce850024bf6b91352d1", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -823,9 +823,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "83cd191d57d4d841a761b2bbd42d29d5df6b748c510ad474e3d0a17ca46929ae", + "sha256": "13f142a6c53f38d26552ee21a874e3d11497bf6fb580b79a6b6b4b042875bef6", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -840,9 +840,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "8b1cad695e78e1a68055680f411eb65c5d305d2d3dadc1b60fdaf73ea373fc22", + "sha256": "65c25dfbe56801d342ae027f365194d0d5b31602ec94e644fe21b6edb876904a", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/142.0.7444.6/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" From bceb3e2dd86200d762cef11eca37567281a83959 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 9 Oct 2025 12:47:02 +0000 Subject: [PATCH 1578/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 14 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 80 insertions(+), 80 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 9c5ead78bc14..bdfbf99221f0 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@26b2c129c4e494126cc9c42d10a273a26e766244 + - uses: angular/dev-infra/github-actions/branch-manager@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9830afab1ba..785c20e05d8f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c 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@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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 26f765735b56..a4e64b00aaf2 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@26b2c129c4e494126cc9c42d10a273a26e766244 + - uses: angular/dev-infra/github-actions/pull-request-labeling@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@26b2c129c4e494126cc9c42d10a273a26e766244 + - uses: angular/dev-infra/github-actions/post-approval-changes@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index e2925cd2115c..1f1c6ccc84f2 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@26b2c129c4e494126cc9c42d10a273a26e766244 + - uses: angular/dev-infra/github-actions/feature-request@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 851c5997aa9a..894485983a8d 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@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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 e6dbf549f9d1..e548c048b443 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/linting/licenses@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@26b2c129c4e494126cc9c42d10a273a26e766244 + uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c - 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/MODULE.bazel b/MODULE.bazel index 40cde073e0b5..9954ed31097d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "26b2c129c4e494126cc9c42d10a273a26e766244", + commit = "56543b10ddb9941c76b4413cc24ec3fa7a43cf5c", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 806ec3bc0bb2..638b53b6ec7e 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.7", "@angular/localize": "21.0.0-next.7", "@angular/material": "21.0.0-next.8", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#650ac6faed7c4d83a70a7d9418f30bd383c520cb", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967", "@angular/platform-browser": "21.0.0-next.7", "@angular/platform-server": "21.0.0-next.7", "@angular/router": "21.0.0-next.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73a5d1bc2f50..2f84ff8ad2b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.8 version: 21.0.0-next.8(05250061371eb0125d7904add36a5bf0) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#650ac6faed7c4d83a70a7d9418f30bd383c520cb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/650ac6faed7c4d83a70a7d9418f30bd383c520cb(@modelcontextprotocol/sdk@1.19.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.19.1) '@angular/platform-browser': specifier: 21.0.0-next.7 version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/650ac6faed7c4d83a70a7d9418f30bd383c520cb': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/650ac6faed7c4d83a70a7d9418f30bd383c520cb} - version: 0.0.0-26b2c129c4e494126cc9c42d10a273a26e766244 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967} + version: 0.0.0-56543b10ddb9941c76b4413cc24ec3fa7a43cf5c hasBin: true '@angular/platform-browser@21.0.0-next.7': @@ -9326,7 +9326,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/650ac6faed7c4d83a70a7d9418f30bd383c520cb(@modelcontextprotocol/sdk@1.19.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.19.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -9374,7 +9374,7 @@ snapshots: minimatch: 10.0.3 multimatch: 7.0.0 nock: 14.0.10 - semver: 7.7.2 + semver: 7.7.3 supports-color: 10.2.2 tsx: 4.20.6 typed-graphqlify: 3.1.6 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index bb70c1b699e2..27891abc055d 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#3ebce81c6d43fa5632c0e0dd531acb8543de3d26", - "@angular/cdk": "github:angular/cdk-builds#827e6e2aaf8fd957b412055997e87a3d3afcca8d", - "@angular/common": "github:angular/common-builds#658f9e0da2adb6c9ce99ecee4f748acff2bb106c", - "@angular/compiler": "github:angular/compiler-builds#a12ebabc645c2d45d0c63770151ce6e30dde5c2c", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#ccf609592d35eb4d0c1fdaaab194e9732c2b3bb3", - "@angular/core": "github:angular/core-builds#dbcb130328916154fd55c06a9ef488a863c2eb08", - "@angular/forms": "github:angular/forms-builds#d5c9dd1aac9092ed0a7d884373460cda77cc6e38", - "@angular/language-service": "github:angular/language-service-builds#c7e32a7c3c62bdc6ccdadf860853c78bf2474b17", - "@angular/localize": "github:angular/localize-builds#f5cc605f797f6f3bcadd0318da88098239d873e3", - "@angular/material": "github:angular/material-builds#1630a0c5a364186e65a316747a29187f2f115bef", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#755c80eb3d13b2102a330d7a446d73b37d930c64", - "@angular/platform-browser": "github:angular/platform-browser-builds#e2704240d6bb504f6c7bc11ecfb693c99f6d51fc", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#de9664b2b89bb683ef09338f3b1f777c74e7ce96", - "@angular/platform-server": "github:angular/platform-server-builds#11e1eeb377ddecf5ab922084e350d3311989d296", - "@angular/router": "github:angular/router-builds#2b98622fc81993ce4de69f3e54c7b74c4ea06a2b", - "@angular/service-worker": "github:angular/service-worker-builds#abd4ef917e2ee144028a54ea4bd4d5896ebb791c" + "@angular/animations": "github:angular/animations-builds#6185b7e28664f6fc7bac8e2e68e2638e838b8a1e", + "@angular/cdk": "github:angular/cdk-builds#801a2ce51d3773426f42183635c32887c02778a9", + "@angular/common": "github:angular/common-builds#195dd0d87ae8500aa8834a7ac9cea158d8ba9cd0", + "@angular/compiler": "github:angular/compiler-builds#4405a28e4c9f5b439273afd1895ee75a0e82b0e9", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#aae44c4686954a9ea8607d1a825a52b89cb07a74", + "@angular/core": "github:angular/core-builds#f82f49acef7b9a5e77d222313c25a56bd6dbeac1", + "@angular/forms": "github:angular/forms-builds#38719257ca578363bb4f367d93fbc31e14bd3b7c", + "@angular/language-service": "github:angular/language-service-builds#8a9838388b6e1acf92df248a8cb02e2e4222f766", + "@angular/localize": "github:angular/localize-builds#d1ef9c1a2b3abe024f19ba70422a19ff6ab70a37", + "@angular/material": "github:angular/material-builds#3a744ef6f542ab0560fde0f07659c6455398045f", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#6c84d44855fb7dea72f07f6e1d1822e7690df25e", + "@angular/platform-browser": "github:angular/platform-browser-builds#de04359f409e81fcff93aa8ca68cacd6c0158a15", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#6df9947462e223319aac55369f03c0a9eae27435", + "@angular/platform-server": "github:angular/platform-server-builds#8115fedc9c902f1b5ba5b490566b9b0f65265df1", + "@angular/router": "github:angular/router-builds#2532453774eb12e3b7acb3c07cde409e95983192", + "@angular/service-worker": "github:angular/service-worker-builds#44378265c75693743e4c73b94940894d15f7755a" } } From 7134dfe5c46cf506cdf16839d0a748f4a82d73e9 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 10 Oct 2025 07:09:07 +0000 Subject: [PATCH 1579/2162] build: refactor ng_package substitutions This refactoring moves the substitution for `@angular/ssr` and `beasties` from a global configuration to a local one within the `@angular/ssr` package definition. This is achieved by introducing an `extra_substitutions` parameter to the `ng_package` function, allowing package-specific substitutions to be defined. This change improves modularity and removes hardcoded paths from the global substitution rules, making the build system cleaner and easier to maintain. Additionally, this fixes an issue where the generated TypeScript definition files (.d.ts) for `@angular/ssr` had incorrect relative paths for the `beasties` dependency, causing type resolution failures in consuming projects. The new local substitution corrects these paths. --- packages/angular/ssr/BUILD.bazel | 6 ++++++ packages/angular/ssr/test/npm_package/package_spec.ts | 8 +++++++- tools/defaults.bzl | 9 ++++++--- tools/substitutions.bzl | 2 -- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index 2218488daeb6..7475f48a4a6e 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -49,6 +49,12 @@ ng_package( "@angular/ssr/node", "../../third_party/beasties", ], + extra_substitutions = { + # Needed for ssr.d.ts file + "\\./third_party/beasties": "../third_party/beasties", + # Needed for the FESM file. + "\\./(.+)/packages/angular/ssr/third_party/beasties": "../third_party/beasties/index.js", + }, nested_packages = [ "//packages/angular/ssr/schematics:pkg", # Included directly as the generated types reference the types file in this location. diff --git a/packages/angular/ssr/test/npm_package/package_spec.ts b/packages/angular/ssr/test/npm_package/package_spec.ts index c519c53f7b92..0f0b488e6298 100644 --- a/packages/angular/ssr/test/npm_package/package_spec.ts +++ b/packages/angular/ssr/test/npm_package/package_spec.ts @@ -25,12 +25,18 @@ const CRITTERS_ACTUAL_LICENSE_FILE_PATH = join( ); describe('NPM Package Tests', () => { - it('should not include the contents of third_party/beasties/index.js in the FESM bundle', async () => { + 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'); const fesmContent = await readFile(fesmFilePath, 'utf-8'); expect(fesmContent).toContain(`import Beasties from '../third_party/beasties/index.js'`); }); + it('should correctly reference `third_party/beasties` in the ssr types bundle', async () => { + const fesmFilePath = join(ANGULAR_SSR_PACKAGE_PATH, 'types/ssr.d.ts'); + const fesmContent = await readFile(fesmFilePath, 'utf-8'); + expect(fesmContent).toContain(`import Beasties from '../third_party/beasties'`); + }); + describe('third_party/beasties/THIRD_PARTY_LICENSES.txt', () => { it('should exist', () => { expect(existsSync(CRITTERS_ACTUAL_LICENSE_FILE_PATH)).toBe(true); diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 2304bec17698..5cfe832cfe2d 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -45,13 +45,16 @@ def copy_to_bin(**kwargs): def js_binary(**kwargs): _js_binary(**kwargs) -def ng_package(deps = [], **kwargs): +def ng_package(deps = [], extra_substitutions = {}, **kwargs): + nostamp_subs = dict(substitutions["nostamp"], **extra_substitutions) + stamp_subs = dict(substitutions["stamp"], **extra_substitutions) + _ng_package( deps = deps, license = "//:LICENSE", substitutions = select({ - "//:stamp": substitutions["stamp"], - "//conditions:default": substitutions["nostamp"], + "//:stamp": stamp_subs, + "//conditions:default": nostamp_subs, }), **kwargs ) diff --git a/tools/substitutions.bzl b/tools/substitutions.bzl index ec9b0786f960..dc40701971ff 100644 --- a/tools/substitutions.bzl +++ b/tools/substitutions.bzl @@ -24,8 +24,6 @@ _stamp_substitutions = { "0.0.0-NG-PACKAGR-PEER-DEP": NG_PACKAGR_PEER_DEP, "0.0.0-ANGULAR-FW-VERSION": ANGULAR_FW_VERSION, "0.0.0-ANGULAR-FW-PEER-DEP": ANGULAR_FW_PEER_DEP, - # The below is needed for @angular/ssr FESM file. - "\\./(.+)/packages/angular/ssr/third_party/beasties": "../third_party/beasties/index.js", } _no_stamp_substitutions = dict(_stamp_substitutions, **{ From 8f0f6a5f113ffc9e81d99eeeba71f8054e2d3686 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:54:10 +0000 Subject: [PATCH 1580/2162] fix(@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 and the new Angular package format. 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 21f156a5cb31..502d121784fd 100644 --- a/packages/schematics/angular/migrations/migration-collection.json +++ b/packages/schematics/angular/migrations/migration-collection.json @@ -18,6 +18,11 @@ "version": "21.0.0", "factory": "./update-typescript-lib/migration", "description": "Updates the 'lib' property in tsconfig files to use 'es2022' or a more modern version." + }, + "update-module-resolution": { + "version": "21.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" } } } 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 a90bea5b51c6978441919ed2af85c090fe99fd38 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 10 Oct 2025 17:27:31 -0400 Subject: [PATCH 1581/2162] feat(@angular/build): support `.test.ts` files by default in unit test builder The unit test discovery logic previously had hardcoded conventions for `.spec.ts` files. This made it inflexible for projects that use other common patterns, such as `.test.ts`. This change introduces support for `.test.ts` files by default and refactors the discovery logic to be more flexible and maintainable. Key changes: - The `unit-test` builder schema now includes both `**/*.spec.ts` and `**/*.test.ts` in its default `include` globs. - The internal test discovery logic in `test-discovery.ts` is refactored to use a configurable array of test file infixes (`.spec`, `.test`). - This allows the smart-handling of static paths (e.g., `ng test --include src/app/app.component.ts`) to correctly resolve the corresponding test file for both conventions. - JSDoc comments and variable names have been updated to improve clarity and reflect the new, more flexible approach. --- .../build/src/builders/unit-test/schema.json | 4 +- .../src/builders/unit-test/test-discovery.ts | 144 ++++++++++-------- 2 files changed, 80 insertions(+), 68 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 5c6820204071..668cc8639a09 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -36,8 +36,8 @@ "items": { "type": "string" }, - "default": ["**/*.spec.ts"], - "description": "Specifies glob patterns of files to include for testing, relative to the project root. This option also has special handling for directory paths (includes all `.spec.ts` files within) and file paths (includes the corresponding `.spec` file if one exists)." + "default": ["**/*.spec.ts", "**/*.test.ts"], + "description": "Specifies glob patterns of files to include for testing, relative to the project root. This option also has special handling for directory paths (includes all test files within) and file paths (includes the corresponding test file if one exists)." }, "exclude": { "type": "array", diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index 9dbf98bbc5a8..a7022924c622 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -6,13 +6,23 @@ * found in the LICENSE file at https://angular.dev/license */ -import { PathLike, constants, promises as fs } from 'node:fs'; -import { basename, dirname, extname, join, relative } from 'node:path'; +import { type PathLike, constants, promises as fs } from 'node:fs'; +import { basename, dirname, extname, isAbsolute, join, relative } from 'node:path'; import { glob, isDynamicPattern } from 'tinyglobby'; import { toPosixPath } from '../../utils/path'; /** - * Finds all test files in the project. + * An array of file infix notations that identify a file as a test file. + * For example, `.spec` in `app.component.spec.ts`. + */ +const TEST_FILE_INFIXES = ['.spec', '.test']; + +/** + * Finds all test files in the project. This function implements a special handling + * for static paths (non-globs) to improve developer experience. For example, if a + * user provides a path to a component, this function will find the corresponding + * test file. If a user provides a path to a directory, it will find all test + * files within that directory. * * @param include Glob patterns of files to include. * @param exclude Glob patterns of files to exclude. @@ -26,26 +36,21 @@ export async function findTests( workspaceRoot: string, projectSourceRoot: string, ): Promise { - const staticMatches = new Set(); + const resolvedTestFiles = new Set(); const dynamicPatterns: string[] = []; - const normalizedExcludes = exclude.map((p) => - normalizePattern(p, workspaceRoot, projectSourceRoot), - ); + const projectRootPrefix = toPosixPath(relative(workspaceRoot, projectSourceRoot) + '/'); + const normalizedExcludes = exclude.map((p) => normalizePattern(p, projectRootPrefix)); // 1. Separate static and dynamic patterns for (const pattern of include) { - const normalized = normalizePattern(pattern, workspaceRoot, projectSourceRoot); - if (isDynamicPattern(normalized)) { + const normalized = normalizePattern(pattern, projectRootPrefix); + if (isDynamicPattern(pattern)) { dynamicPatterns.push(normalized); } else { - const result = await handleStaticPattern(normalized, projectSourceRoot); - if (Array.isArray(result)) { - result.forEach((file) => staticMatches.add(file)); - } else { - // It was a static path that didn't resolve to a spec, treat as dynamic - dynamicPatterns.push(result); - } + const { resolved, unresolved } = await resolveStaticPattern(normalized, projectSourceRoot); + resolved.forEach((file) => resolvedTestFiles.add(file)); + unresolved.forEach((p) => dynamicPatterns.push(p)); } } @@ -59,12 +64,12 @@ export async function findTests( }); for (const match of globMatches) { - staticMatches.add(match); + resolvedTestFiles.add(match); } } // 3. Combine and de-duplicate results - return [...staticMatches]; + return [...resolvedTestFiles]; } interface TestEntrypointsOptions { @@ -106,11 +111,12 @@ export function getTestEntrypoints( } /** - * Generates a unique, dash-delimited name from a file path. - * This is used to create a consistent and readable bundle name for a given test file. + * Generates a unique, dash-delimited name from a file path. This is used to + * create a consistent and readable bundle name for a given test file. + * * @param testFile The absolute path to the test file. * @param roots An array of root paths to remove from the beginning of the test file path. - * @param removeTestExtension Whether to remove the `.spec` or `.test` extension from the result. + * @param removeTestExtension Whether to remove the test file infix and extension from the result. * @returns A dash-cased name derived from the relative path of the test file. */ function generateNameFromPath( @@ -128,7 +134,9 @@ function generateNameFromPath( let endIndex = relativePath.length; if (removeTestExtension) { - const match = relativePath.match(/\.(spec|test)\.[^.]+$/); + const infixes = TEST_FILE_INFIXES.map((p) => p.substring(1)).join('|'); + const match = relativePath.match(new RegExp(`\\.(${infixes})\\.[^.]+$`)); + if (match?.index) { endIndex = match.index; } @@ -149,25 +157,23 @@ function generateNameFromPath( return result; } -const removeLeadingSlash = (pattern: string): string => { - if (pattern.charAt(0) === '/') { - return pattern.substring(1); - } - - return pattern; +/** Removes a leading slash from a path. */ +const removeLeadingSlash = (path: string): string => { + return path.startsWith('/') ? path.substring(1) : path; }; -const removeRelativeRoot = (path: string, root: string): string => { - if (path.startsWith(root)) { - return path.substring(root.length); - } - - return path; +/** Removes a prefix from the beginning of a string. */ +const removePrefix = (str: string, prefix: string): string => { + return str.startsWith(prefix) ? str.substring(prefix.length) : str; }; /** * Removes potential root paths from a file path, returning a relative path. * If no root path matches, it returns the file's basename. + * + * @param path The file path to process. + * @param roots An array of root paths to attempt to remove. + * @returns A relative path. */ function removeRoots(path: string, roots: string[]): string { for (const root of roots) { @@ -180,61 +186,67 @@ function removeRoots(path: string, roots: string[]): string { } /** - * Normalizes a glob pattern by converting it to a POSIX path, removing leading slashes, - * and making it relative to the project source root. + * Normalizes a glob pattern by converting it to a POSIX path, removing leading + * slashes, and making it relative to the project source root. * * @param pattern The glob pattern to normalize. - * @param workspaceRoot The absolute path to the workspace root. - * @param projectSourceRoot The absolute path to the project's source root. + * @param projectRootPrefix The POSIX-formatted prefix of the project's source root relative to the workspace root. * @returns A normalized glob pattern. */ -function normalizePattern( - pattern: string, - workspaceRoot: string, - projectSourceRoot: string, -): string { - // normalize pattern, glob lib only accepts forward slashes +function normalizePattern(pattern: string, projectRootPrefix: string): string { let normalizedPattern = toPosixPath(pattern); normalizedPattern = removeLeadingSlash(normalizedPattern); - const relativeProjectRoot = toPosixPath(relative(workspaceRoot, projectSourceRoot) + '/'); + // Some IDEs and tools may provide patterns relative to the workspace root. + // To ensure the glob operates correctly within the project's source root, + // we remove the project's relative path from the front of the pattern. + normalizedPattern = removePrefix(normalizedPattern, projectRootPrefix); - // remove relativeProjectRoot to support relative paths from root - // such paths are easy to get when running scripts via IDEs - return removeRelativeRoot(normalizedPattern, relativeProjectRoot); + return normalizedPattern; } /** - * Handles static (non-glob) patterns by attempting to resolve them to a directory - * of spec files or a corresponding `.spec` file. + * Resolves a static (non-glob) path. + * + * If the path is a directory, it returns a glob pattern to find all test files + * within that directory. + * + * If the path is a file, it attempts to find a corresponding test file by + * checking for files with the same name and a test infix (e.g., `.spec.ts`). + * + * If no corresponding test file is found, the original path is returned as an + * unresolved pattern. * * @param pattern The static path pattern. * @param projectSourceRoot The absolute path to the project's source root. - * @returns A promise that resolves to either an array of found spec files, a new glob pattern, - * or the original pattern if no special handling was applied. + * @returns A promise that resolves to an object containing resolved spec files and unresolved patterns. */ -async function handleStaticPattern( +async function resolveStaticPattern( pattern: string, projectSourceRoot: string, -): Promise { - const fullPath = join(projectSourceRoot, pattern); +): Promise<{ resolved: string[]; unresolved: string[] }> { + const fullPath = isAbsolute(pattern) ? pattern : join(projectSourceRoot, pattern); if (await isDirectory(fullPath)) { - return `${pattern}/**/*.spec.@(ts|tsx)`; + const infixes = TEST_FILE_INFIXES.map((p) => p.substring(1)).join('|'); + + return { resolved: [], unresolved: [`${pattern}/**/*.@(${infixes}).@(ts|tsx)`] }; } const fileExt = extname(pattern); - // Replace extension to `.spec.ext`. Example: `src/app/app.component.ts`-> `src/app/app.component.spec.ts` - const potentialSpec = join( - projectSourceRoot, - dirname(pattern), - `${basename(pattern, fileExt)}.spec${fileExt}`, - ); - - if (await exists(potentialSpec)) { - return [potentialSpec]; + const baseName = basename(pattern, fileExt); + + for (const infix of TEST_FILE_INFIXES) { + const potentialSpec = join( + projectSourceRoot, + dirname(pattern), + `${baseName}${infix}${fileExt}`, + ); + if (await exists(potentialSpec)) { + return { resolved: [potentialSpec], unresolved: [] }; + } } - return pattern; + return { resolved: [], unresolved: [pattern] }; } /** Checks if a path exists and is a directory. */ From 547f1e681fb0cb69d0de13d2db243e74b7744221 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 11 Oct 2025 05:04:54 +0000 Subject: [PATCH 1582/2162] build: update pnpm to v10.18.2 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 638b53b6ec7e..f63e8149ca50 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.18.1", + "packageManager": "pnpm@10.18.2", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.18.1" + "pnpm": "10.18.2" }, "author": "Angular Authors", "license": "MIT", From 53899511afe5665541984085914a313390af6ce2 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:29:02 +0000 Subject: [PATCH 1583/2162] fix(@angular-devkit/build-angular): expand `jest` and `jest-environment-jsdom` to allow version 30 This commit expands the peer deps of these dependencies to allow version 30. Closes #30760 --- packages/angular_devkit/build_angular/package.json | 4 ++-- .../angular_devkit/build_angular/src/builders/jest/index.ts | 2 +- tests/legacy-cli/e2e/utils/jest.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index dda6a3b9ed0b..0f534ce6497f 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -81,8 +81,8 @@ "@angular/ssr": "^0.0.0-PLACEHOLDER", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", - "jest": "^29.5.0", - "jest-environment-jsdom": "^29.5.0", + "jest": "^30.2.0", + "jest-environment-jsdom": "^30.2.0", "karma": "^6.3.0", "ng-packagr": "0.0.0-NG-PACKAGR-PEER-DEP", "protractor": "^7.0.0", diff --git a/packages/angular_devkit/build_angular/src/builders/jest/index.ts b/packages/angular_devkit/build_angular/src/builders/jest/index.ts index 00450a59b6d7..5f91f70e589e 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/jest/index.ts @@ -116,7 +116,7 @@ export default createBuilder( '--experimental-vm-modules', jest, - `--rootDir="${testOut}"`, + `--rootDir=${testOut}`, `--config=${path.join(__dirname, 'jest.config.mjs')}`, '--testEnvironment=jsdom', diff --git a/tests/legacy-cli/e2e/utils/jest.ts b/tests/legacy-cli/e2e/utils/jest.ts index ed7fe7c04aa1..5dc1f0efe464 100644 --- a/tests/legacy-cli/e2e/utils/jest.ts +++ b/tests/legacy-cli/e2e/utils/jest.ts @@ -8,7 +8,7 @@ export async function applyJestBuilder( tsConfig: 'tsconfig.spec.json', }, ): Promise { - await silentNpm('install', 'jest@29.5.0', 'jest-environment-jsdom@29.5.0', '--save-dev'); + await silentNpm('install', 'jest@30.2.0', 'jest-environment-jsdom@30.2.0', '--save-dev'); await updateJsonFile('angular.json', (json) => { const projects = Object.values(json['projects']); From 58474ec7dd85fc34639c138d9b8d545affb50e3e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:41:49 -0400 Subject: [PATCH 1584/2162] feat(@schematics/angular): introduce initial jasmine-to-vitest unit test refactor schematic This commit introduces the base infrastructure for an experimental jasmine-to-vitest refactoring schematic and the initial set of transformers for lifecycle functions. The base infrastructure includes the main schematic entry point, the AST transformer driver, and various utilities for AST manipulation, validation, and reporting. The lifecycle transformers handle: - fdescribe/fit -> describe.only/it.only - xdescribe/xit -> describe.skip/it.skip - pending() -> it.skip() - Asynchronous tests using the 'done' callback are converted to 'async/await'. Usage: ng generate jasmine-to-vitest [--project ] --- packages/schematics/angular/BUILD.bazel | 7 +- packages/schematics/angular/collection.json | 6 + .../angular/refactor/jasmine-vitest/index.ts | 101 ++++ .../refactor/jasmine-vitest/schema.json | 26 ++ .../jasmine-vitest/test-file-transformer.ts | 80 ++++ .../transformers/jasmine-lifecycle.ts | 433 ++++++++++++++++++ .../transformers/jasmine-lifecycle_spec.ts | 251 ++++++++++ .../jasmine-vitest/utils/ast-helpers.ts | 41 ++ .../jasmine-vitest/utils/ast-validation.ts | 45 ++ .../jasmine-vitest/utils/comment-helpers.ts | 28 ++ .../jasmine-vitest/utils/refactor-context.ts | 34 ++ .../jasmine-vitest/utils/refactor-reporter.ts | 73 +++ .../utils/refactor-reporter_spec.ts | 51 +++ 13 files changed, 1175 insertions(+), 1 deletion(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/index.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/schema.json create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/ast-validation.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index 46724d4de4b9..d101299a5ab3 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -20,7 +20,10 @@ ALL_SCHEMA_TARGETS = [ x.replace("/", "_").replace("-", "_").replace(".json", ""), ) for x in glob( - include = ["*/schema.json"], + include = [ + "*/schema.json", + "refactor/*/schema.json", + ], exclude = [ # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces "node_modules/**", @@ -55,6 +58,7 @@ RUNTIME_ASSETS = [ "*/type-files/**/*", "*/functional-files/**/*", "*/class-files/**/*", + "refactor/*/schema.json", ], exclude = [ # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces @@ -123,6 +127,7 @@ ts_project( ":node_modules/jsonc-parser", "//:node_modules/@types/jasmine", "//:node_modules/@types/node", + "//:node_modules/prettier", "//packages/schematics/angular/third_party/github.com/Microsoft/TypeScript", ], ) diff --git a/packages/schematics/angular/collection.json b/packages/schematics/angular/collection.json index 45b0b56538ec..88bd8b2ee326 100755 --- a/packages/schematics/angular/collection.json +++ b/packages/schematics/angular/collection.json @@ -143,6 +143,12 @@ "hidden": true, "private": true, "description": "[INTERNAL] Adds tailwind to a project. Intended for use for ng new/add." + }, + "jasmine-to-vitest": { + "factory": "./refactor/jasmine-vitest", + "schema": "./refactor/jasmine-vitest/schema.json", + "description": "[EXPERIMENTAL] Refactors Jasmine tests to use Vitest APIs.", + "hidden": true } } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index.ts b/packages/schematics/angular/refactor/jasmine-vitest/index.ts new file mode 100644 index 000000000000..96e4ebbabdc5 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/index.ts @@ -0,0 +1,101 @@ +/** + * @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, + SchematicContext, + SchematicsException, + Tree, +} from '@angular-devkit/schematics'; +import { ProjectDefinition, getWorkspace } from '../../utility/workspace'; +import { Schema } from './schema'; +import { transformJasmineToVitest } from './test-file-transformer'; +import { RefactorReporter } from './utils/refactor-reporter'; + +async function getProjectRoot(tree: Tree, projectName: string | undefined): Promise { + const workspace = await getWorkspace(tree); + + let project: ProjectDefinition | undefined; + if (projectName) { + project = workspace.projects.get(projectName); + if (!project) { + throw new SchematicsException(`Project "${projectName}" not found.`); + } + } else { + if (workspace.projects.size === 1) { + project = workspace.projects.values().next().value; + } else { + const projectNames = Array.from(workspace.projects.keys()); + throw new SchematicsException( + `Multiple projects found: [${projectNames.join(', ')}]. Please specify a project name.`, + ); + } + } + + if (!project) { + // This case should theoretically not be hit due to the checks above, but it's good for type safety. + throw new SchematicsException('Could not determine a project.'); + } + + return project.root; +} + +const DIRECTORIES_TO_SKIP = new Set(['node_modules', '.git', 'dist', '.angular']); + +function findTestFiles(directory: DirEntry, fileSuffix: string): string[] { + const files: string[] = []; + const stack: DirEntry[] = [directory]; + + let current: DirEntry | undefined; + while ((current = stack.pop())) { + for (const path of current.subfiles) { + if (path.endsWith(fileSuffix)) { + files.push(current.path + '/' + path); + } + } + + for (const path of current.subdirs) { + if (DIRECTORIES_TO_SKIP.has(path)) { + continue; + } + stack.push(current.dir(path)); + } + } + + return files; +} + +export default function (options: Schema): Rule { + return async (tree: Tree, context: SchematicContext) => { + const reporter = new RefactorReporter(context.logger); + const projectRoot = await getProjectRoot(tree, options.project); + const fileSuffix = options.fileSuffix ?? '.spec.ts'; + + const files = findTestFiles(tree.getDir(projectRoot), fileSuffix); + + if (files.length === 0) { + throw new SchematicsException( + `No files ending with '${fileSuffix}' found in project '${options.project}'.`, + ); + } + + for (const file of files) { + reporter.incrementScannedFiles(); + const content = tree.readText(file); + const newContent = transformJasmineToVitest(file, content, reporter); + + if (content !== newContent) { + tree.overwrite(file, newContent); + reporter.incrementTransformedFiles(); + } + } + + reporter.printSummary(options.verbose); + }; +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/schema.json b/packages/schematics/angular/refactor/jasmine-vitest/schema.json new file mode 100644 index 000000000000..bb60a4f2862f --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "SchematicsAngularJasmineToVitest", + "title": "Angular Jasmine to Vitest Schematic", + "type": "object", + "description": "Refactors a Jasmine test file to use Vitest.", + "properties": { + "fileSuffix": { + "type": "string", + "description": "The file suffix to identify test files (e.g., '.spec.ts', '.test.ts').", + "default": ".spec.ts" + }, + "project": { + "type": "string", + "description": "The name of the project where the tests should be refactored. If not specified, the CLI will determine the project from the current directory.", + "$default": { + "$source": "projectName" + } + }, + "verbose": { + "type": "boolean", + "description": "Enable verbose logging to see detailed information about the transformations being applied.", + "default": false + } + } +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts new file mode 100644 index 000000000000..3022db629c28 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -0,0 +1,80 @@ +/** + * @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 ts from '../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { + transformDoneCallback, + transformFocusedAndSkippedTests, + transformPending, +} from './transformers/jasmine-lifecycle'; +import { RefactorContext } from './utils/refactor-context'; +import { RefactorReporter } from './utils/refactor-reporter'; + +/** + * Transforms a string of Jasmine test code to Vitest test code. + * This is the main entry point for the transformation. + * @param content The source code to transform. + * @param reporter The reporter to track TODOs. + * @returns The transformed code. + */ +export function transformJasmineToVitest( + filePath: string, + content: string, + reporter: RefactorReporter, +): string { + const sourceFile = ts.createSourceFile( + filePath, + content, + ts.ScriptTarget.Latest, + true, + ts.ScriptKind.TS, + ); + + const transformer: ts.TransformerFactory = (context) => { + const refactorCtx: RefactorContext = { + sourceFile, + reporter, + tsContext: context, + }; + + const visitor: ts.Visitor = (node) => { + let transformedNode: ts.Node | readonly ts.Node[] = node; + + // Transform the node itself based on its type + if (ts.isCallExpression(transformedNode)) { + const transformations = [ + transformFocusedAndSkippedTests, + transformPending, + transformDoneCallback, + ]; + + for (const transformer of transformations) { + transformedNode = transformer(transformedNode, refactorCtx); + } + } + + // Visit the children of the node to ensure they are transformed + if (Array.isArray(transformedNode)) { + return transformedNode.map((node) => ts.visitEachChild(node, visitor, context)); + } else { + return ts.visitEachChild(transformedNode, visitor, context); + } + }; + + return (node) => ts.visitNode(node, visitor) as ts.SourceFile; + }; + + const result = ts.transform(sourceFile, [transformer]); + if (result.transformed[0] === sourceFile) { + return content; + } + + const printer = ts.createPrinter(); + + return printer.printFile(result.transformed[0]); +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts new file mode 100644 index 000000000000..9ddf2d3681e0 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts @@ -0,0 +1,433 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains transformers that convert Jasmine lifecycle functions + * and test setup/teardown patterns to their Vitest equivalents. This includes handling + * focused/skipped tests (fdescribe, fit, xdescribe, xit), pending tests, and asynchronous + * operations that use the `done` callback. + */ + +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { createPropertyAccess } from '../utils/ast-helpers'; +import { addTodoComment } from '../utils/comment-helpers'; +import { RefactorContext } from '../utils/refactor-context'; + +const FOCUSED_SKIPPED_RENAMES = new Map([ + ['fdescribe', { newBase: 'describe', newName: 'only' }], + ['fit', { newBase: 'it', newName: 'only' }], + ['xdescribe', { newBase: 'describe', newName: 'skip' }], + ['xit', { newBase: 'it', newName: 'skip' }], +]); + +export function transformFocusedAndSkippedTests( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if (!ts.isCallExpression(node) || !ts.isIdentifier(node.expression)) { + return node; + } + + const oldName = node.expression.text; + const rename = FOCUSED_SKIPPED_RENAMES.get(oldName); + if (rename) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed \`${oldName}\` to \`${rename.newBase}.${rename.newName}\`.`, + ); + + const newPropAccess = createPropertyAccess(rename.newBase, rename.newName); + + return ts.factory.updateCallExpression(node, newPropAccess, node.typeArguments, node.arguments); + } + + return node; +} + +export function transformPending( + node: ts.Node, + { sourceFile, reporter, tsContext }: RefactorContext, +): ts.Node { + if ( + !ts.isCallExpression(node) || + !ts.isIdentifier(node.expression) || + node.expression.text !== 'it' + ) { + return node; + } + + const testFn = node.arguments[1]; + if (!testFn || (!ts.isArrowFunction(testFn) && !ts.isFunctionExpression(testFn))) { + return node; + } + + let hasPending = false; + const bodyTransformVisitor = (bodyNode: ts.Node): ts.Node | undefined => { + if ( + ts.isExpressionStatement(bodyNode) && + ts.isCallExpression(bodyNode.expression) && + ts.isIdentifier(bodyNode.expression.expression) && + bodyNode.expression.expression.text === 'pending' + ) { + hasPending = true; + const replacement = ts.factory.createEmptyStatement(); + const originalText = bodyNode.getFullText().trim(); + + reporter.reportTransformation( + sourceFile, + bodyNode, + 'Converted `pending()` to a skipped test (`it.skip`).', + ); + reporter.recordTodo('pending'); + addTodoComment( + replacement, + 'The pending() function was converted to a skipped test (`it.skip`).', + ); + ts.addSyntheticLeadingComment( + replacement, + ts.SyntaxKind.SingleLineCommentTrivia, + ` ${originalText}`, + true, + ); + + return replacement; + } + + return ts.visitEachChild(bodyNode, bodyTransformVisitor, tsContext); + }; + + const newBody = ts.visitNode(testFn.body, bodyTransformVisitor) as ts.ConciseBody | undefined; + + if (!hasPending) { + return node; + } + + const newExpression = createPropertyAccess(node.expression, 'skip'); + const newTestFn = ts.isArrowFunction(testFn) + ? ts.factory.updateArrowFunction( + testFn, + testFn.modifiers, + testFn.typeParameters, + testFn.parameters, + testFn.type, + testFn.equalsGreaterThanToken, + newBody ?? ts.factory.createBlock([]), + ) + : ts.factory.updateFunctionExpression( + testFn, + testFn.modifiers, + testFn.asteriskToken, + testFn.name, + testFn.typeParameters, + testFn.parameters, + testFn.type, + (newBody as ts.Block) ?? ts.factory.createBlock([]), + ); + + const newArgs = [node.arguments[0], newTestFn, ...node.arguments.slice(2)]; + + return ts.factory.updateCallExpression(node, newExpression, node.typeArguments, newArgs); +} + +function transformComplexDoneCallback( + node: ts.Node, + doneIdentifier: ts.Identifier, + refactorCtx: RefactorContext, +): ts.Node | ts.Node[] | undefined { + const { sourceFile, reporter } = refactorCtx; + if ( + !ts.isExpressionStatement(node) || + !ts.isCallExpression(node.expression) || + !ts.isPropertyAccessExpression(node.expression.expression) + ) { + return node; + } + + const call = node.expression; + const pae = call.expression; + + if (!ts.isPropertyAccessExpression(pae)) { + return node; + } + + if (pae.name.text !== 'then' || call.arguments.length !== 1) { + return node; + } + + const thenCallback = call.arguments[0]; + if (!ts.isArrowFunction(thenCallback) && !ts.isFunctionExpression(thenCallback)) { + return node; + } + + // Re-create the .then() call but with a modified callback that has `done()` removed. + const thenCallbackBody = ts.isBlock(thenCallback.body) + ? thenCallback.body + : ts.factory.createBlock([ts.factory.createExpressionStatement(thenCallback.body)]); + + const newStatements = thenCallbackBody.statements.filter((stmt) => { + return ( + !ts.isExpressionStatement(stmt) || + !ts.isCallExpression(stmt.expression) || + !ts.isIdentifier(stmt.expression.expression) || + stmt.expression.expression.text !== doneIdentifier.text + ); + }); + + if (newStatements.length === thenCallbackBody.statements.length) { + // No "done()" call was removed, so don't transform. + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + 'Transformed promise `.then()` with `done()` to `await`.', + ); + + const newThenCallback = ts.isArrowFunction(thenCallback) + ? ts.factory.updateArrowFunction( + thenCallback, + thenCallback.modifiers, + thenCallback.typeParameters, + thenCallback.parameters, + thenCallback.type, + thenCallback.equalsGreaterThanToken, + ts.factory.updateBlock(thenCallbackBody, newStatements), + ) + : ts.factory.updateFunctionExpression( + thenCallback, + thenCallback.modifiers, + thenCallback.asteriskToken, + thenCallback.name, + thenCallback.typeParameters, + thenCallback.parameters, + thenCallback.type, + ts.factory.updateBlock(thenCallbackBody, newStatements), + ); + + const newCall = ts.factory.updateCallExpression(call, call.expression, call.typeArguments, [ + newThenCallback, + ]); + + return ts.factory.createExpressionStatement(ts.factory.createAwaitExpression(newCall)); +} + +function transformPromiseBasedDone( + callExpr: ts.CallExpression, + doneIdentifier: ts.Identifier, + refactorCtx: RefactorContext, +): ts.Node | undefined { + const { sourceFile, reporter } = refactorCtx; + if ( + ts.isPropertyAccessExpression(callExpr.expression) && + (callExpr.expression.name.text === 'then' || callExpr.expression.name.text === 'catch') + ) { + const promiseHandler = callExpr.arguments[0]; + if (promiseHandler) { + let isDoneHandler = false; + // promise.then(done) + if (ts.isIdentifier(promiseHandler) && promiseHandler.text === doneIdentifier.text) { + isDoneHandler = true; + } + // promise.catch(done.fail) + if ( + ts.isPropertyAccessExpression(promiseHandler) && + ts.isIdentifier(promiseHandler.expression) && + promiseHandler.expression.text === doneIdentifier.text && + promiseHandler.name.text === 'fail' + ) { + isDoneHandler = true; + } + // promise.then(() => done()) + if (ts.isArrowFunction(promiseHandler) && !promiseHandler.parameters.length) { + const body = promiseHandler.body; + if ( + ts.isCallExpression(body) && + ts.isIdentifier(body.expression) && + body.expression.text === doneIdentifier.text + ) { + isDoneHandler = true; + } + if (ts.isBlock(body) && body.statements.length === 1) { + const stmt = body.statements[0]; + if ( + ts.isExpressionStatement(stmt) && + ts.isCallExpression(stmt.expression) && + ts.isIdentifier(stmt.expression.expression) && + stmt.expression.expression.text === doneIdentifier.text + ) { + isDoneHandler = true; + } + } + } + + if (isDoneHandler) { + reporter.reportTransformation( + sourceFile, + callExpr, + 'Transformed promise `.then(done)` to `await`.', + ); + + return ts.factory.createExpressionStatement( + ts.factory.createAwaitExpression(callExpr.expression.expression), + ); + } + } + } + + return undefined; +} + +export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContext): ts.Node { + const { sourceFile, reporter, tsContext } = refactorCtx; + if ( + !ts.isCallExpression(node) || + !ts.isIdentifier(node.expression) || + !['it', 'beforeEach', 'afterEach', 'beforeAll', 'afterAll'].includes(node.expression.text) + ) { + return node; + } + + const functionArg = node.arguments.find( + (arg) => ts.isArrowFunction(arg) || ts.isFunctionExpression(arg), + ); + + if (!functionArg || (!ts.isArrowFunction(functionArg) && !ts.isFunctionExpression(functionArg))) { + return node; + } + + if (functionArg.parameters.length !== 1) { + return node; + } + + const doneParam = functionArg.parameters[0]; + if (!ts.isIdentifier(doneParam.name)) { + return node; + } + const doneIdentifier = doneParam.name; + let doneWasUsed = false; + + const bodyVisitor = (bodyNode: ts.Node): ts.Node | ts.Node[] | undefined => { + const complexTransformed = transformComplexDoneCallback(bodyNode, doneIdentifier, refactorCtx); + if (complexTransformed !== bodyNode) { + doneWasUsed = true; + + return complexTransformed; + } + + if (ts.isExpressionStatement(bodyNode) && ts.isCallExpression(bodyNode.expression)) { + const callExpr = bodyNode.expression; + + // Transform `done.fail('message')` to `throw new Error('message')` + if ( + ts.isPropertyAccessExpression(callExpr.expression) && + ts.isIdentifier(callExpr.expression.expression) && + callExpr.expression.expression.text === doneIdentifier.text && + callExpr.expression.name.text === 'fail' + ) { + doneWasUsed = true; + reporter.reportTransformation( + sourceFile, + bodyNode, + 'Transformed `done.fail()` to `throw new Error()`.', + ); + const errorArgs = callExpr.arguments.length > 0 ? [callExpr.arguments[0]] : []; + + return ts.factory.createThrowStatement( + ts.factory.createNewExpression( + ts.factory.createIdentifier('Error'), + undefined, + errorArgs, + ), + ); + } + + // Transform `promise.then(done)` or `promise.catch(done.fail)` to `await promise` + const promiseTransformed = transformPromiseBasedDone(callExpr, doneIdentifier, refactorCtx); + if (promiseTransformed) { + doneWasUsed = true; + + return promiseTransformed; + } + + // Remove `done()` + if ( + ts.isIdentifier(callExpr.expression) && + callExpr.expression.text === doneIdentifier.text + ) { + doneWasUsed = true; + + return ts.setTextRange(ts.factory.createEmptyStatement(), callExpr.expression); + } + } + + return ts.visitEachChild(bodyNode, bodyVisitor, tsContext); + }; + + const newBody = ts.visitNode(functionArg.body, (node: ts.Node) => { + if (ts.isBlock(node)) { + const newStatements = node.statements.flatMap( + (stmt) => bodyVisitor(stmt) as ts.Statement | ts.Statement[] | undefined, + ); + + return ts.factory.updateBlock( + node, + newStatements.filter((s) => !!s), + ); + } + + return bodyVisitor(node); + }); + + if (!doneWasUsed) { + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + `Converted test with \`done\` callback to an \`async\` test.`, + ); + + const newModifiers = [ + ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword), + ...(ts.getModifiers(functionArg) ?? []).filter( + (mod) => mod.kind !== ts.SyntaxKind.AsyncKeyword, + ), + ]; + + let newFunction: ts.ArrowFunction | ts.FunctionExpression; + if (ts.isArrowFunction(functionArg)) { + newFunction = ts.factory.updateArrowFunction( + functionArg, + newModifiers, + functionArg.typeParameters, + [], // remove parameters + functionArg.type, + functionArg.equalsGreaterThanToken, + (newBody as ts.ConciseBody) ?? ts.factory.createBlock([]), + ); + } else { + // isFunctionExpression + newFunction = ts.factory.updateFunctionExpression( + functionArg, + newModifiers, + functionArg.asteriskToken, + functionArg.name, + functionArg.typeParameters, + [], // remove parameters + functionArg.type, + (newBody as ts.Block) ?? ts.factory.createBlock([]), + ); + } + + const newArgs = node.arguments.map((arg) => (arg === functionArg ? newFunction : arg)); + + return ts.factory.updateCallExpression(node, node.expression, node.typeArguments, newArgs); +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts new file mode 100644 index 000000000000..8b54f99163ad --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts @@ -0,0 +1,251 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from '../test-file-transformer'; +import { RefactorReporter } from '../utils/refactor-reporter'; + +async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + const formattedExpected = await format(expected, { parser: 'typescript' }); + + expect(formattedTransformed).toBe(formattedExpected); +} + +describe('Jasmine to Vitest Transformer', () => { + describe('transformDoneCallback', () => { + const testCases = [ + { + description: 'should transform an `it` block with a done callback to an async function', + input: ` + it('should do something async', (done) => { + setTimeout(() => { + expect(true).toBe(true); + done(); + }, 100); + }); + `, + expected: ` + it('should do something async', async () => { + setTimeout(() => { + expect(true).toBe(true); + }, 100); + }); + `, + }, + { + description: 'should transform a promise chain with a done callback to await', + input: ` + beforeEach((done) => { + service.init().then(() => done()); + }); + `, + expected: ` + beforeEach(async () => { + await service.init().then(() => {}); + }); + `, + }, + { + description: 'should transform done.fail() to throw new Error()', + input: ` + it('should fail', (done) => { + done.fail('it failed'); + }); + `, + expected: ` + it('should fail', async () => { + throw new Error('it failed'); + }); + `, + }, + { + description: 'should transform an `afterEach` block with a done callback', + input: 'afterEach((done) => { promise.then(done); });', + expected: 'afterEach(async () => { await promise; });', + }, + { + description: 'should transform a test with a function(done) signature', + input: ` + it('should work with a function expression', function(done) { + done(); + }); + `, + expected: ` + it('should work with a function expression', async function() {}); + `, + }, + { + description: 'should transform done.fail() without a message', + input: `it('fails', (done) => { done.fail(); });`, + expected: `it('fails', async () => { throw new Error(); });`, + }, + { + description: 'should handle promise rejections via catch', + input: ` + it('should handle promise rejections via catch', (done) => { + myPromise.catch(done.fail); + }); + `, + expected: ` + it('should handle promise rejections via catch', async () => { + await myPromise; + }); + `, + }, + { + description: 'should work with a custom done name', + input: ` + it('should work with a custom done name', (finish) => { + setTimeout(() => { + finish(); + }, 100); + }); + `, + expected: ` + it('should work with a custom done name', async () => { + setTimeout(() => { + }, 100); + }); + `, + }, + { + description: 'should handle done in a finally block', + input: ` + it('should handle done in a finally block', (done) => { + try { + // some logic + } finally { + done(); + } + }); + `, + expected: ` + it('should handle done in a finally block', async () => { + try { + // some logic + } finally {} + }); + `, + }, + { + description: 'should not transform a function with a parameter that is not a done callback', + input: ` + it('should not transform a function with a parameter that is not a done callback', (value) => { + expect(value).toBe(true); + }); + `, + expected: ` + it('should not transform a function with a parameter that is not a done callback', (value) => { + expect(value).toBe(true); + }); + `, + }, + { + description: 'should handle a .then() call with a multi-statement body', + input: ` + it('should handle a complex then', (done) => { + let myValue = false; + myPromise.then(() => { + myValue = true; + done(); + }); + }); + `, + expected: ` + it('should handle a complex then', async () => { + let myValue = false; + await myPromise.then(() => { + myValue = true; + }); + }); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformPending', () => { + const testCases = [ + { + description: 'should transform a test with pending() to it.skip()', + input: ` + it('is a work in progress', () => { + pending('Not yet implemented'); + }); + `, + expected: ` + it.skip('is a work in progress', () => { + // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). + // pending('Not yet implemented'); + }); + `, + }, + { + description: 'should transform a test with pending() using function keyword', + input: ` + it('is a work in progress', function() { + pending('Not yet implemented'); + }); + `, + expected: ` + it.skip('is a work in progress', function() { + // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). + // pending('Not yet implemented'); + }); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformFocusedAndSkippedTests', () => { + const testCases = [ + { + description: 'should transform fdescribe to describe.only', + input: `fdescribe('My Suite', () => {});`, + expected: `describe.only('My Suite', () => {});`, + }, + { + description: 'should transform fit to it.only', + input: `fit('My Test', () => {});`, + expected: `it.only('My Test', () => {});`, + }, + { + description: 'should transform xdescribe to describe.skip', + input: `xdescribe('My Suite', () => {});`, + expected: `describe.skip('My Suite', () => {});`, + }, + { + description: 'should transform xit to it.skip', + input: `xit('My Test', () => {});`, + expected: `it.skip('My Test', () => {});`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); +}); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts new file mode 100644 index 000000000000..fe51e4872a32 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts @@ -0,0 +1,41 @@ +/** + * @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 ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; + +export function createViCallExpression( + methodName: string, + args: readonly ts.Expression[] = [], + typeArgs: ts.TypeNode[] | undefined = undefined, +): ts.CallExpression { + const callee = ts.factory.createPropertyAccessExpression( + ts.factory.createIdentifier('vi'), + methodName, + ); + + return ts.factory.createCallExpression(callee, typeArgs, args); +} + +export function createExpectCallExpression( + args: ts.Expression[], + typeArgs: ts.TypeNode[] | undefined = undefined, +): ts.CallExpression { + return ts.factory.createCallExpression(ts.factory.createIdentifier('expect'), typeArgs, args); +} + +export function createPropertyAccess( + expressionOrIndentifierText: ts.Expression | string, + name: string | ts.MemberName, +): ts.PropertyAccessExpression { + return ts.factory.createPropertyAccessExpression( + typeof expressionOrIndentifierText === 'string' + ? ts.factory.createIdentifier(expressionOrIndentifierText) + : expressionOrIndentifierText, + name, + ); +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-validation.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-validation.ts new file mode 100644 index 000000000000..dd16aa750d90 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-validation.ts @@ -0,0 +1,45 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains helper functions for validating the structure of + * TypeScript AST nodes, particularly for identifying specific patterns in Jasmine tests. + */ + +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; + +/** + * If a node is a `jasmine.method()` call, returns the method name. + * @param node The node to check. + * @returns The name of the method if it's a jasmine call, otherwise undefined. + */ +export function getJasmineMethodName(node: ts.Node): string | undefined { + if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression)) { + return undefined; + } + + const pae = node.expression; + if (!ts.isIdentifier(pae.expression) || pae.expression.text !== 'jasmine') { + return undefined; + } + + return ts.isIdentifier(pae.name) ? pae.name.text : undefined; +} + +/** + * Checks if a node is a call expression for a specific method on the `jasmine` object. + * @param node The node to check. + * @param methodName The name of the method on the `jasmine` object. + * @returns True if the node is a `jasmine.()` call. + */ +export function isJasmineCallExpression( + node: ts.Node, + methodName: string, +): node is ts.CallExpression { + return getJasmineMethodName(node) === methodName; +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts new file mode 100644 index 000000000000..c804445ec916 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts @@ -0,0 +1,28 @@ +/** + * @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 ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; + +export function addTodoComment(node: ts.Node, message: string) { + let statement: ts.Node = node; + + // Attempt to find the containing statement + while (statement.parent && !ts.isBlock(statement.parent) && !ts.isSourceFile(statement.parent)) { + if (ts.isExpressionStatement(statement) || ts.isVariableStatement(statement)) { + break; + } + statement = statement.parent; + } + + ts.addSyntheticLeadingComment( + statement, + ts.SyntaxKind.SingleLineCommentTrivia, + ` TODO: vitest-migration: ${message}`, + true, + ); +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts new file mode 100644 index 000000000000..4b6d32630d1a --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts @@ -0,0 +1,34 @@ +/** + * @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 ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { RefactorReporter } from './refactor-reporter'; + +/** + * A context object that provides access to shared utilities and state + * throughout the transformation process. + */ +export interface RefactorContext { + /** The root ts.SourceFile node of the file being transformed. */ + readonly sourceFile: ts.SourceFile; + + /** The reporter for logging changes and TODOs. */ + readonly reporter: RefactorReporter; + + /** The official context from the TypeScript Transformer API. */ + readonly tsContext: ts.TransformationContext; +} + +/** + * A generic transformer function that operates on a specific type of ts.Node. + * @template T The specific type of AST node this transformer works on (e.g., ts.CallExpression). + */ +export type NodeTransformer = ( + node: T, + refactorCtx: RefactorContext, +) => ts.Node | readonly ts.Node[]; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts new file mode 100644 index 000000000000..0e99631a0f8b --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts @@ -0,0 +1,73 @@ +/** + * @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 ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; + +export class RefactorReporter { + private filesScanned = 0; + private filesTransformed = 0; + private readonly todos = new Map(); + private readonly verboseLogs = new Map(); + + constructor(private logger: logging.LoggerApi) {} + + incrementScannedFiles(): void { + this.filesScanned++; + } + + incrementTransformedFiles(): void { + this.filesTransformed++; + } + + recordTodo(category: string): void { + this.todos.set(category, (this.todos.get(category) ?? 0) + 1); + } + + reportTransformation(sourceFile: ts.SourceFile, node: ts.Node, message: string): void { + const { line } = ts.getLineAndCharacterOfPosition( + sourceFile, + ts.getOriginalNode(node).getStart(), + ); + const filePath = sourceFile.fileName; + + let logs = this.verboseLogs.get(filePath); + if (!logs) { + logs = []; + this.verboseLogs.set(filePath, logs); + } + logs.push(`L${line + 1}: ${message}`); + } + + printSummary(verbose = false): void { + if (verbose && this.verboseLogs.size > 0) { + this.logger.info('Detailed Transformation Log:'); + for (const [filePath, logs] of this.verboseLogs) { + this.logger.info(`Processing: ${filePath}`); + logs.forEach((log) => this.logger.info(` - ${log}`)); + } + this.logger.info(''); // Add a blank line for separation + } + + this.logger.info('Jasmine to Vitest Refactoring Summary:'); + this.logger.info(`- ${this.filesScanned} test file(s) scanned.`); + this.logger.info(`- ${this.filesTransformed} file(s) transformed.`); + const filesSkipped = this.filesScanned - this.filesTransformed; + if (filesSkipped > 0) { + this.logger.info(`- ${filesSkipped} file(s) skipped (no changes needed).`); + } + + if (this.todos.size > 0) { + const totalTodos = [...this.todos.values()].reduce((a, b) => a + b, 0); + this.logger.warn(`- ${totalTodos} TODO(s) added for manual review:`); + for (const [category, count] of this.todos) { + this.logger.warn(` - ${count}x ${category}`); + } + } + } +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts new file mode 100644 index 000000000000..f8b79391f72f --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.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 { logging } from '@angular-devkit/core'; +import { RefactorReporter } from './refactor-reporter'; + +describe('RefactorReporter', () => { + let logger: logging.LoggerApi; + let reporter: RefactorReporter; + + beforeEach(() => { + logger = { + info: jasmine.createSpy('info'), + warn: jasmine.createSpy('warn'), + } as unknown as logging.LoggerApi; + reporter = new RefactorReporter(logger); + }); + + it('should correctly increment scanned and transformed files', () => { + reporter.incrementScannedFiles(); + reporter.incrementScannedFiles(); + reporter.incrementTransformedFiles(); + reporter.printSummary(); + + expect(logger.info).toHaveBeenCalledWith('Jasmine to Vitest Refactoring Summary:'); + expect(logger.info).toHaveBeenCalledWith('- 2 test file(s) scanned.'); + expect(logger.info).toHaveBeenCalledWith('- 1 file(s) transformed.'); + expect(logger.info).toHaveBeenCalledWith('- 1 file(s) skipped (no changes needed).'); + }); + + it('should record and count todos by category', () => { + reporter.recordTodo('category-a'); + reporter.recordTodo('category-b'); + reporter.recordTodo('category-a'); + reporter.printSummary(); + + expect(logger.warn).toHaveBeenCalledWith('- 3 TODO(s) added for manual review:'); + expect(logger.warn).toHaveBeenCalledWith(' - 2x category-a'); + expect(logger.warn).toHaveBeenCalledWith(' - 1x category-b'); + }); + + it('should not print the todos section if none were recorded', () => { + reporter.printSummary(); + expect(logger.warn).not.toHaveBeenCalled(); + }); +}); From a62bbc2ba350fadf21a5798dc9460b07af6d941e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 11 Oct 2025 05:05:33 +0000 Subject: [PATCH 1585/2162] build: update dependency @modelcontextprotocol/sdk to v1.20.0 See associated pull request for more information. --- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index bcf2e0833b8b..759f72fbd769 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.8.6", "@listr2/prompt-adapter-inquirer": "3.0.4", - "@modelcontextprotocol/sdk": "1.19.1", + "@modelcontextprotocol/sdk": "1.20.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.40.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f84ff8ad2b9..d58b51e7e29a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-next.8(05250061371eb0125d7904add36a5bf0) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.19.1) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.20.0) '@angular/platform-browser': specifier: 21.0.0-next.7 version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -478,8 +478,8 @@ importers: specifier: 3.0.4 version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.0))(@types/node@24.7.0)(listr2@9.0.4) '@modelcontextprotocol/sdk': - specifier: 1.19.1 - version: 1.19.1 + specifier: 1.20.0 + version: 1.20.0 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -2448,8 +2448,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.19.1': - resolution: {integrity: sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==} + '@modelcontextprotocol/sdk@1.20.0': + resolution: {integrity: sha512-kOQ4+fHuT4KbR2iq2IjeV32HiihueuOf1vJkq18z08CLZ1UQrTc8BXJpVfxZkq45+inLLD+D4xx4nBjUelJa4Q==} engines: {node: '>=18'} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -9326,11 +9326,11 @@ 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/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.19.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.20.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.22.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.22.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.8.6(@types/node@24.7.0) '@inquirer/type': 3.0.8(@types/node@24.7.0) '@octokit/auth-app': 8.1.1 @@ -10701,12 +10701,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.22.0(@modelcontextprotocol/sdk@1.19.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.22.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.19.1 + '@modelcontextprotocol/sdk': 1.20.0 transitivePeerDependencies: - bufferutil - encoding @@ -10993,7 +10993,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.3': optional: true - '@modelcontextprotocol/sdk@1.19.1': + '@modelcontextprotocol/sdk@1.20.0': dependencies: ajv: 6.12.6 content-type: 1.0.5 From 8cb7135bd2d847ab3f133e6e51ecde3fe66a15b2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 10 Oct 2025 05:05:18 +0000 Subject: [PATCH 1586/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 26 +++++++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 9954ed31097d..d6b1be391f7a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.1") bazel_dep(name = "rules_nodejs", version = "6.5.2") -bazel_dep(name = "aspect_rules_js", version = "2.6.0") +bazel_dep(name = "aspect_rules_js", version = "2.6.2") bazel_dep(name = "aspect_rules_ts", version = "3.7.0") bazel_dep(name = "rules_pkg", version = "0.8.1") @@ -21,7 +21,7 @@ multiple_version_override( bazel_dep(name = "aspect_bazel_lib", version = "2.21.2") bazel_dep(name = "bazel_skylib", version = "1.8.2") -bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1") +bazel_dep(name = "aspect_rules_esbuild", version = "0.23.0") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index d052e4debe57..dbc2fc3716d4 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -21,13 +21,15 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.22.1/MODULE.bazel": "499ce65b6126f344f9a630040b9db91b36b20c6d1436026120067d922c2d69bd", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.22.1/source.json": "84138a41a9e71655cb97d39fcb80f6e2ba7e754d5601fb14f5a7d14080dff409", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/MODULE.bazel": "9b437a9ec25a619304940434fa03b8d41248213eb7009da2c898f3d6a4075ef3", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/source.json": "7b4cac4e61bae4262e7f67f6bec0b200fcb9060044f12e84a3bc37e0be245de7", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/source.json": "45fa9603cdfe100575a12d8b65fa425fe8713dd8c9f0cdf802168b670bc0e299", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.0/MODULE.bazel": "5a6f8dbc5b170769453f1819d469fe54b0e4b86a0e82e13fde8e5a45438a1890", - "https://bcr.bazel.build/modules/aspect_rules_js/2.6.0/source.json": "e1e20b259d4f1b0a5d8b99d57b418c96f306e1c77f96e9ea1c9f1068a628b211", + "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", + "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/source.json": "59933fb8ddabd9740a3c12ff5552f06f2b8d68c3633883c681c757bf227c3763", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/source.json": "4a8115ea69dd796353232ff27a7e93e6d7d1ad43bea1eb33c6bd3acfa656bf2e", @@ -205,8 +207,8 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "kzZXVf0lIRQArtJstiytwibC6m5npERsjNfhP9yJJW4=", - "usagesDigest": "u8wMZJd6Ovxb3YTmhoM3sMbh11Qwrv5EHaggdNi5Wb8=", + "bzlTransitiveDigest": "W+cy7GU3S29h8PPWylmMlPB5Z16vuZzJX4k0jlXGFoc=", + "usagesDigest": "H070ZIHhSlR+Han009l+GdDSuT9AJssdyVHQ7xjstSo=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -335,6 +337,11 @@ "aspect_rules_js", "aspect_rules_js~" ], + [ + "aspect_rules_esbuild~", + "aspect_tools_telemetry_report", + "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" + ], [ "aspect_rules_esbuild~", "bazel_skylib", @@ -385,8 +392,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "2EzhmJcOK6eUPERbnFW8UdrwodSbUF5O4co1bHslj00=", - "usagesDigest": "IhWFaS3+adcZAFZpJlR1wPWkibqbPczXdu8nnyFjNyw=", + "bzlTransitiveDigest": "kFo9dd9KDRPKtK0RkVyoouzNI0l+bqG8cEaw+4+ZnVw=", + "usagesDigest": "dwcGULhCgltHeTzlHJu5cjVHXt6WfLzA3yTc6cHWmPo=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -598,7 +605,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "3AICyjhN/vrKBxRCE7X7mX6C5gCzpm/lgEYspsAZZoE=", + "usagesDigest": "uS24fACgJK/VGwdRorIVcVBYji/Ibx5tHzgIFCn5iZQ=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -608,8 +615,9 @@ "ruleClassName": "tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.6.0", + "aspect_rules_js": "2.6.2", "aspect_rules_ts": "3.7.0", + "aspect_rules_esbuild": "0.23.0", "aspect_tools_telemetry": "0.2.8" } } @@ -1111,7 +1119,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", - "usagesDigest": "2LQPThd5tV1PolM/G9ODu23//lwYi98BOd3V2h9W7xM=", + "usagesDigest": "1kpLfNSteilN9lIcsMk1OY9Ob+GrTMGxU495OOEa2cA=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 6f60488ce250e7547d6d4076bbff8a603c0e237c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 12 Oct 2025 23:33:37 +0000 Subject: [PATCH 1587/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- 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 27891abc055d..c8a14ada1b12 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#6185b7e28664f6fc7bac8e2e68e2638e838b8a1e", - "@angular/cdk": "github:angular/cdk-builds#801a2ce51d3773426f42183635c32887c02778a9", - "@angular/common": "github:angular/common-builds#195dd0d87ae8500aa8834a7ac9cea158d8ba9cd0", - "@angular/compiler": "github:angular/compiler-builds#4405a28e4c9f5b439273afd1895ee75a0e82b0e9", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#aae44c4686954a9ea8607d1a825a52b89cb07a74", - "@angular/core": "github:angular/core-builds#f82f49acef7b9a5e77d222313c25a56bd6dbeac1", - "@angular/forms": "github:angular/forms-builds#38719257ca578363bb4f367d93fbc31e14bd3b7c", - "@angular/language-service": "github:angular/language-service-builds#8a9838388b6e1acf92df248a8cb02e2e4222f766", - "@angular/localize": "github:angular/localize-builds#d1ef9c1a2b3abe024f19ba70422a19ff6ab70a37", - "@angular/material": "github:angular/material-builds#3a744ef6f542ab0560fde0f07659c6455398045f", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#6c84d44855fb7dea72f07f6e1d1822e7690df25e", - "@angular/platform-browser": "github:angular/platform-browser-builds#de04359f409e81fcff93aa8ca68cacd6c0158a15", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#6df9947462e223319aac55369f03c0a9eae27435", - "@angular/platform-server": "github:angular/platform-server-builds#8115fedc9c902f1b5ba5b490566b9b0f65265df1", - "@angular/router": "github:angular/router-builds#2532453774eb12e3b7acb3c07cde409e95983192", - "@angular/service-worker": "github:angular/service-worker-builds#44378265c75693743e4c73b94940894d15f7755a" + "@angular/animations": "github:angular/animations-builds#db667af5d09fd8811d9d76167cc9541125635698", + "@angular/cdk": "github:angular/cdk-builds#f6ac1da38b8d3f1f52df5c78162b3303bf82c413", + "@angular/common": "github:angular/common-builds#1ca7056aa6c8e99826b6036270130f8900f268f7", + "@angular/compiler": "github:angular/compiler-builds#d712519539322f6d24e9ffa2bb9668ce900ba6be", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#08f672beeefc0214666f8940ba301325023fe673", + "@angular/core": "github:angular/core-builds#fd8977cf6abd2ff08e6b383eedaf2b2107bdbba3", + "@angular/forms": "github:angular/forms-builds#9262b9a2784ef207ef161f94d3e95a24dd6ae818", + "@angular/language-service": "github:angular/language-service-builds#4a1855ad80b47eacc81dbe5504bd0d5ceefcf09d", + "@angular/localize": "github:angular/localize-builds#413a59e8d9704ede6e7e728f0b524e602db9231a", + "@angular/material": "github:angular/material-builds#40030f2bc1656b9cb7fb1e4396d57d498f45c142", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#501c9fdf23257c74f1978e2a9906f5d61fc61430", + "@angular/platform-browser": "github:angular/platform-browser-builds#a4694dd30446162ce52bbad2b9dcbc69ce82d814", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#65c306b51b0ac57d59ac12f5b06173d0acfb9830", + "@angular/platform-server": "github:angular/platform-server-builds#db278c5ef906a7295b065f56250d9ac80d7f1051", + "@angular/router": "github:angular/router-builds#21391d6439b48a08ee4944f76b5132cce1b9a8ed", + "@angular/service-worker": "github:angular/service-worker-builds#4880f8adeb8a9eeb7ed2ec47712a3d28d1a53082" } } From 2e23f5a5f5c844c9286b4f92c3f973f9e40cc64f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 13 Oct 2025 07:06:21 +0000 Subject: [PATCH 1588/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 337 +++++++++++++++++++++++++------------------------ 1 file changed, 174 insertions(+), 163 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d58b51e7e29a..3d4380652b92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,7 +129,7 @@ importers: version: 4.17.20 '@types/node': specifier: ^22.12.0 - version: 22.18.8 + version: 22.18.10 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -255,7 +255,7 @@ importers: version: 0.30.19 npm: specifier: ^11.0.0 - version: 11.6.1 + version: 11.6.2 prettier: specifier: ^3.0.0 version: 3.6.2 @@ -279,7 +279,7 @@ importers: version: 6.2.3(rollup@4.52.4)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.8)(rollup@4.52.4) + version: 0.5.4(@types/node@22.18.10)(rollup@4.52.4) semver: specifier: 7.7.3 version: 7.7.3 @@ -294,7 +294,7 @@ importers: version: 7.5.1 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.18.8)(typescript@5.9.3) + version: 10.9.2(@types/node@22.18.10)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -1100,8 +1100,8 @@ packages: '@asamuzakjp/css-color@4.0.5': resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.5.7': - resolution: {integrity: sha512-cvdTPsi2qC1c22UppvuVmx/PDwuc6+QQkwt9OnwQD6Uotbh//tb2XDF0OoK2V0F4b8d02LIwNp3BieaDMAhIhA==} + '@asamuzakjp/dom-selector@6.6.2': + resolution: {integrity: sha512-+AG0jN9HTwfDLBhjhX1FKi6zlIAc/YGgEHlN/OMaHD1pOPFsC5CpYQpLkPX0aFjyaVmoq9330cQDCU4qnSL1qA==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -2373,8 +2373,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/buffers@1.0.0': - resolution: {integrity: sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==} + '@jsonjoy.com/buffers@1.2.0': + resolution: {integrity: sha512-6RX+W5a+ZUY/c/7J5s5jK9UinLfJo5oWKh84fb4X0yK2q4WXEWUWZWuEMjvCb1YNUQhEAhUfr5scEGOH7jC4YQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2385,8 +2385,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.14.0': - resolution: {integrity: sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==} + '@jsonjoy.com/json-pack@1.20.0': + resolution: {integrity: sha512-adcXFVorSQULtT4XDL0giRLr2EVGIcyWm6eQKZWTrRA4EEydGOY8QVQtL0PaITQpUyu+lOd/QOicw6vdy1v8QQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2599,8 +2599,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.0.6': - resolution: {integrity: sha512-DXj75ewm11LIWUk198QSKUTxjyRjsBwk09MuMk5DGK+GDUtyPhhEHOGP/Xwwj3DjQXXkivoBirmOnKrLfc0+9g==} + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2908,8 +2908,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.10': - resolution: {integrity: sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==} + '@puppeteer/browsers@2.10.11': + resolution: {integrity: sha512-kp3ORGce+oC3qUMJ+g5NH9W4Q7mMG7gV2I+alv0bCbfkZ36B2V/xKCg9uYavSgjmsElhwBneahWjJP7A6fuKLw==} engines: {node: '>=18'} hasBin: true @@ -3350,11 +3350,11 @@ packages: '@types/events@3.0.3': resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.19.7': + resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - '@types/express-serve-static-core@5.0.7': - resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} + '@types/express-serve-static-core@5.1.0': + resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} '@types/express@4.17.23': resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} @@ -3437,8 +3437,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.18.8': - resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} + '@types/node@22.18.10': + resolution: {integrity: sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==} '@types/node@24.7.0': resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} @@ -3583,10 +3583,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/types@8.45.0': - resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.46.0': resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4140,11 +4136,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.7.0: - resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} + bare-events@2.8.0: + resolution: {integrity: sha512-AOhh6Bg5QmFIXdViHbMc2tLDsBIRxdkIaIddPslJF9Z5De3APBScuqGP2uThXnIpqFrgoxMNC6km7uXNIMLHXA==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true - bare-fs@4.4.5: - resolution: {integrity: sha512-TCtu93KGLu6/aiGWzMr12TmSRS6nKdfhAnzTQRbXoSWxkbb9eRd53jQ51jG7g1gYjjtto3hbBrrhzg6djcgiKg==} + bare-fs@4.4.10: + resolution: {integrity: sha512-arqVF+xX/rJHwrONZaSPhlzleT2gXwVs9rsAe1p1mIVwWZI2A76/raio+KwwxfWMO8oV9Wo90EaUkS2QwVmy4w==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -4180,8 +4181,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.12: - resolution: {integrity: sha512-vAPMQdnyKCBtkmQA6FMCBvU9qFIppS3nzyXnEM+Lo2IAhG4Mpjv9cCxMudhgV3YdNNJv6TNqXy97dfRVL2LmaQ==} + baseline-browser-mapping@2.8.16: + resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} hasBin: true basic-ftp@5.0.5: @@ -4356,8 +4357,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001747: - resolution: {integrity: sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg==} + caniuse-lite@1.0.30001750: + resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4609,8 +4610,8 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.45.1: - resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} + core-js-compat@3.46.0: + resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -4970,8 +4971,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.230: - resolution: {integrity: sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==} + electron-to-chromium@1.5.234: + resolution: {integrity: sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==} emoji-regex@10.5.0: resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} @@ -5270,8 +5271,8 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - exponential-backoff@3.1.2: - resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} express-rate-limit@5.5.1: resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} @@ -5555,8 +5556,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.12.0: + resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} get-uri@6.0.5: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} @@ -5730,8 +5731,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hosted-git-info@9.0.0: - resolution: {integrity: sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==} + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} engines: {node: ^20.17.0 || >=22.9.0} hpack.js@2.1.6: @@ -6501,8 +6502,8 @@ packages: resolution: {integrity: sha512-GWV1kVi6uhrXWqe+3NXWO73OYe8fto6q8JMo0HOpk1vf8nEyFWgo4CSNJpIFzsOxOrysVUlcO48qRbQfmKd1gA==} hasBin: true - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@2.0.4: @@ -6654,8 +6655,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.48.1: - resolution: {integrity: sha512-vWO+1ROkhOALF1UnT9aNOOflq5oFDlqwTXaPg6duo07fBLxSH0+bcF0TY1lbA1zTNKyGgDxgaDdKx5MaewLX5A==} + memfs@4.49.0: + resolution: {integrity: sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7000,8 +7001,8 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm@11.6.1: - resolution: {integrity: sha512-7iDSHDoup6uMQJ37yWrhfqcbMhF0UEfGRap6Nv+aKQcrIJXlCi2cKbj75WBmiHlcwsQCy/U0zEwDZdAx6H/Vaw==} + npm@11.6.2: + resolution: {integrity: sha512-7iKzNfy8lWYs3zq4oFPa8EXZz5xt9gQNKJZau3B1ErLBb6bF7sBJ00x09485DOvRT2l5Gerbl3VlZNT57MxJVA==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true bundledDependencies: @@ -7047,7 +7048,6 @@ packages: - ms - node-gyp - nopt - - normalize-package-data - npm-audit-report - npm-install-checks - npm-package-arg @@ -7545,8 +7545,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.23.0: - resolution: {integrity: sha512-yl25C59gb14sOdIiSnJ08XiPP+O2RjuyZmEG+RjYmCXO7au0jcLf7fRiyii96dXGUBW7Zwei/mVKfxMx/POeFw==} + puppeteer-core@24.24.0: + resolution: {integrity: sha512-RR5AeQ6dIbSepDe9PTtfgK1fgD7TuA9qqyGxPbFCyGfvfkbR7MiqNYdE7AhbTaFIqG3hFBtWwbVKVZF8oEqj7Q==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8371,15 +8371,15 @@ packages: tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts-core@7.0.16: - resolution: {integrity: sha512-XHhPmHxphLi+LGbH0G/O7dmUH9V65OY20R7vH8gETHsp5AZCjBk9l8sqmRKLaGOxnETU7XNSDUPtewAy/K6jbA==} + tldts-core@7.0.17: + resolution: {integrity: sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==} tldts@6.1.86: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tldts@7.0.16: - resolution: {integrity: sha512-5bdPHSwbKTeHmXrgecID4Ljff8rQjv7g8zKQPkCozRo2HWWni+p310FSn5ImI+9kWw9kK4lzOB5q/a6iv0IJsw==} + tldts@7.0.17: + resolution: {integrity: sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==} hasBin: true tmp@0.0.30: @@ -8950,8 +8950,8 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - wordwrapjs@5.1.0: - resolution: {integrity: sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==} + wordwrapjs@5.1.1: + resolution: {integrity: sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==} engines: {node: '>=12.17'} wrap-ansi@6.2.0: @@ -9427,7 +9427,7 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.5.7': + '@asamuzakjp/dom-selector@6.6.2': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -10070,7 +10070,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) - core-js-compat: 3.45.1 + core-js-compat: 3.46.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10721,7 +10721,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@grpc/proto-loader@0.7.15': dependencies: @@ -10931,7 +10931,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/buffers@1.0.0(tslib@2.8.1)': + '@jsonjoy.com/buffers@1.2.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -10939,10 +10939,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.14.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@1.20.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.0(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -10958,7 +10958,7 @@ snapshots: '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.0(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 @@ -11109,7 +11109,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.0.6': + '@napi-rs/wasm-runtime@1.0.7': dependencies: '@emnapi/core': 1.5.0 '@emnapi/runtime': 1.5.0 @@ -11174,7 +11174,7 @@ snapshots: dependencies: '@npmcli/git': 7.0.0 glob: 11.0.3 - hosted-git-info: 9.0.0 + hosted-git-info: 9.0.2 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 semver: 7.7.3 @@ -11438,7 +11438,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.10': + '@puppeteer/browsers@2.10.11': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -11448,6 +11448,7 @@ snapshots: tar-fs: 3.1.1 yargs: 17.7.2 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a - supports-color @@ -11484,7 +11485,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': dependencies: - '@napi-rs/wasm-runtime': 1.0.6 + '@napi-rs/wasm-runtime': 1.0.7 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': @@ -11669,7 +11670,7 @@ snapshots: '@stylistic/eslint-plugin@5.4.0(eslint@9.37.0(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/types': 8.46.0 eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -11706,7 +11707,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/babel__code-frame@7.0.6': {} @@ -11736,16 +11737,16 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/browser-sync@2.29.0': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/serve-static': 1.15.9 chokidar: 3.6.0 @@ -11755,23 +11756,23 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.6 - '@types/node': 22.18.8 + '@types/express-serve-static-core': 4.19.7 + '@types/node': 22.18.10 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/content-disposition@0.5.9': {} @@ -11782,11 +11783,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.3 '@types/keygrip': 1.0.6 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/cors@2.8.19': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/debounce@1.2.4': {} @@ -11794,7 +11795,7 @@ snapshots: '@types/duplexify@3.6.4': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/ejs@3.1.5': {} @@ -11812,16 +11813,16 @@ snapshots: '@types/events@3.0.3': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.0 - '@types/express-serve-static-core@5.0.7': + '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.0 @@ -11829,25 +11830,25 @@ snapshots: '@types/express@4.17.23': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.7 '@types/qs': 6.14.0 '@types/serve-static': 1.15.9 '@types/express@5.0.3': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 5.0.7 + '@types/express-serve-static-core': 5.1.0 '@types/serve-static': 1.15.9 '@types/folder-hash@4.0.4': {} '@types/git-raw-commits@5.0.0': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/http-assert@1.5.6': {} @@ -11855,7 +11856,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/ini@4.1.1': {} @@ -11881,7 +11882,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -11901,13 +11902,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.25.10)': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 webpack: 5.102.1(esbuild@0.25.10) transitivePeerDependencies: - '@swc/core' @@ -11925,14 +11926,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 form-data: 4.0.4 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 - '@types/node@22.18.8': + '@types/node@22.18.10': dependencies: undici-types: 6.21.0 @@ -11944,7 +11945,7 @@ snapshots: '@types/npm-registry-fetch@8.0.8': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -11952,11 +11953,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/npm-registry-fetch': 8.0.8 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -11969,12 +11970,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/q@0.0.32': {} @@ -11988,7 +11989,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/retry@0.12.2': {} @@ -11999,11 +12000,11 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/send@1.2.0': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/serve-index@1.9.4': dependencies: @@ -12012,38 +12013,38 @@ snapshots: '@types/serve-static@1.15.9': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/send': 0.17.5 '@types/shelljs@0.8.17': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 glob: 11.0.3 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/stack-trace@0.0.33': {} '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 '@types/yargs-parser@21.0.3': {} @@ -12055,7 +12056,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 optional: true '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': @@ -12117,8 +12118,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.45.0': {} - '@typescript-eslint/types@8.46.0': {} '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)': @@ -12292,6 +12291,7 @@ snapshots: gunzip-maybe: 1.4.2 tar-stream: 3.1.7 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a - supports-color @@ -12452,8 +12452,9 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.23.0(bufferutil@4.0.9) + puppeteer-core: 24.24.0(bufferutil@4.0.9) transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - react-native-b4a @@ -12541,6 +12542,7 @@ snapshots: portfinder: 1.0.38 source-map: 0.7.6 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - react-native-b4a @@ -12877,7 +12879,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.26.3 - caniuse-lite: 1.0.30001747 + caniuse-lite: 1.0.30001750 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -12913,7 +12915,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) - core-js-compat: 3.45.1 + core-js-compat: 3.46.0 transitivePeerDependencies: - supports-color @@ -12926,16 +12928,17 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.7.0: {} + bare-events@2.8.0: {} - bare-fs@4.4.5: + bare-fs@4.4.10: dependencies: - bare-events: 2.7.0 + bare-events: 2.8.0 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.7.0) + bare-stream: 2.7.0(bare-events@2.8.0) bare-url: 2.2.2 fast-fifo: 1.3.2 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a optional: true @@ -12947,12 +12950,13 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.7.0): + bare-stream@2.7.0(bare-events@2.8.0): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.7.0 + bare-events: 2.8.0 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a optional: true @@ -12965,7 +12969,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.12: {} + baseline-browser-mapping@2.8.16: {} basic-ftp@5.0.5: {} @@ -13127,9 +13131,9 @@ snapshots: browserslist@4.26.3: dependencies: - baseline-browser-mapping: 2.8.12 - caniuse-lite: 1.0.30001747 - electron-to-chromium: 1.5.230 + baseline-browser-mapping: 2.8.16 + caniuse-lite: 1.0.30001750 + electron-to-chromium: 1.5.234 node-releases: 2.0.23 update-browserslist-db: 1.1.3(browserslist@4.26.3) @@ -13238,7 +13242,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001747: {} + caniuse-lite@1.0.30001750: {} caseless@0.12.0: {} @@ -13303,7 +13307,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13515,7 +13519,7 @@ snapshots: tinyglobby: 0.2.15 webpack: 5.102.1(esbuild@0.25.10) - core-js-compat@3.45.1: + core-js-compat@3.46.0: dependencies: browserslist: 4.26.3 @@ -13845,7 +13849,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.230: {} + electron-to-chromium@1.5.234: {} emoji-regex@10.5.0: {} @@ -13884,7 +13888,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.18.8 + '@types/node': 22.18.10 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14220,7 +14224,9 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.7.0 + bare-events: 2.8.0 + transitivePeerDependencies: + - bare-abort-controller events@3.3.0: {} @@ -14246,7 +14252,7 @@ snapshots: expect-type@1.2.2: {} - exponential-backoff@3.1.2: {} + exponential-backoff@3.1.3: {} express-rate-limit@5.5.1: {} @@ -14326,7 +14332,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14663,7 +14669,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.1: + get-tsconfig@4.12.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -14899,7 +14905,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hosted-git-info@9.0.0: + hosted-git-info@9.0.2: dependencies: lru-cache: 11.2.2 @@ -15446,7 +15452,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15466,7 +15472,7 @@ snapshots: jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: - '@asamuzakjp/dom-selector': 6.5.7 + '@asamuzakjp/dom-selector': 6.6.2 cssstyle: 5.3.1(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15791,7 +15797,7 @@ snapshots: '@lmdb/lmdb-win32-x64': 3.4.3 optional: true - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@2.0.4: dependencies: @@ -15959,9 +15965,9 @@ snapshots: media-typer@1.1.0: {} - memfs@4.48.1: + memfs@4.49.0: dependencies: - '@jsonjoy.com/json-pack': 1.14.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.20.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) glob-to-regex.js: 1.2.0(tslib@2.8.1) thingies: 2.5.0(tslib@2.8.1) @@ -16222,7 +16228,7 @@ snapshots: node-gyp@11.4.2: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.2 + exponential-backoff: 3.1.3 graceful-fs: 4.2.11 make-fetch-happen: 14.0.3 nopt: 8.1.0 @@ -16258,7 +16264,7 @@ snapshots: npm-package-arg@13.0.1: dependencies: - hosted-git-info: 9.0.0 + hosted-git-info: 9.0.2 proc-log: 5.0.0 semver: 7.7.3 validate-npm-package-name: 6.0.2 @@ -16292,7 +16298,7 @@ snapshots: dependencies: path-key: 3.1.1 - npm@11.6.1: {} + npm@11.6.2: {} nth-check@2.1.1: dependencies: @@ -16738,7 +16744,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.8 + '@types/node': 22.18.10 long: 5.3.2 protractor@7.0.0: @@ -16826,9 +16832,9 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.23.0(bufferutil@4.0.9): + puppeteer-core@24.24.0(bufferutil@4.0.9): dependencies: - '@puppeteer/browsers': 2.10.10 + '@puppeteer/browsers': 2.10.11 chromium-bidi: 9.1.0(devtools-protocol@0.0.1508733) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1508733 @@ -16836,6 +16842,7 @@ snapshots: webdriver-bidi-protocol: 0.3.6 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - react-native-b4a @@ -17133,12 +17140,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.8)(rollup@4.52.4): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.10)(rollup@4.52.4): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.52.4) rollup: 4.52.4 optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.10 rollup@4.52.4: dependencies: @@ -17681,6 +17688,7 @@ snapshots: fast-fifo: 1.3.2 text-decoder: 1.2.3 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a strict-event-emitter@0.5.1: {} @@ -17782,7 +17790,7 @@ snapshots: table-layout@4.1.1: dependencies: array-back: 6.2.2 - wordwrapjs: 5.1.0 + wordwrapjs: 5.1.1 tapable@2.3.0: {} @@ -17798,9 +17806,10 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.4.5 + bare-fs: 4.4.10 bare-path: 3.0.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -17818,6 +17827,7 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.23.0 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a tar@7.5.1: @@ -17907,15 +17917,15 @@ snapshots: tldts-core@6.1.86: {} - tldts-core@7.0.16: {} + tldts-core@7.0.17: {} tldts@6.1.86: dependencies: tldts-core: 6.1.86 - tldts@7.0.16: + tldts@7.0.17: dependencies: - tldts-core: 7.0.16 + tldts-core: 7.0.17 tmp@0.0.30: dependencies: @@ -17942,7 +17952,7 @@ snapshots: tough-cookie@6.0.0: dependencies: - tldts: 7.0.16 + tldts: 7.0.17 tr46@0.0.3: {} @@ -17964,14 +17974,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.18.8)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.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': 22.18.8 + '@types/node': 22.18.10 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -17996,7 +18006,7 @@ snapshots: tsx@4.20.6: dependencies: esbuild: 0.25.10 - get-tsconfig: 4.10.1 + get-tsconfig: 4.12.0 optionalDependencies: fsevents: 2.3.3 @@ -18264,6 +18274,7 @@ snapshots: verdaccio-audit: 13.0.0-next-8.23(encoding@0.1.13) verdaccio-htpasswd: 13.0.0-next-8.23 transitivePeerDependencies: + - bare-abort-controller - encoding - react-native-b4a - supports-color @@ -18407,7 +18418,7 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.10)): dependencies: colorette: 2.0.20 - memfs: 4.48.1 + memfs: 4.49.0 mime-types: 3.0.1 on-finished: 2.4.1 range-parser: 1.2.1 @@ -18420,7 +18431,7 @@ snapshots: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.9 '@types/sockjs': 0.3.36 @@ -18485,7 +18496,7 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 @@ -18593,7 +18604,7 @@ snapshots: wordwrap@1.0.0: {} - wordwrapjs@5.1.0: {} + wordwrapjs@5.1.1: {} wrap-ansi@6.2.0: dependencies: From b429af4c6cb840ba5f295afa3e67992ed954a31e Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Mon, 13 Oct 2025 11:58:18 -0700 Subject: [PATCH 1589/2162] refactor(@schematics/angular): Remove zoneless prompt Remove the zoneless prompt altogether in v21. Zoneless is the default experience. fixes #30531 --- packages/schematics/angular/application/schema.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/schematics/angular/application/schema.json b/packages/schematics/angular/application/schema.json index 671fdaca6e8f..bc3504be298a 100644 --- a/packages/schematics/angular/application/schema.json +++ b/packages/schematics/angular/application/schema.json @@ -124,7 +124,6 @@ }, "zoneless": { "description": "Generate an application that does not use `zone.js`.", - "x-prompt": "Do you want to create a 'zoneless' application without zone.js?", "type": "boolean", "default": true }, From e7d955bedd5ca6957903cb73f8ebe06823a808da Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:41:49 -0400 Subject: [PATCH 1590/2162] feat(@schematics/angular): add matcher transformations to jasmine-to-vitest schematic This commit adds transformers for a wide range of Jasmine matchers. Coverage includes: - Syntactic sugar matchers (toBeTrue, toHaveSize, etc.) - Asymmetric matchers (jasmine.any, jasmine.objectContaining) - Async matchers (expectAsync) - Complex structural rewrites for matchers like 'toHaveBeenCalledOnceWith' and 'arrayWithExactContents'. --- .../jasmine-vitest/test-file-transformer.ts | 42 +- .../transformers/jasmine-matcher.ts | 633 ++++++++++++++++++ .../transformers/jasmine-matcher_spec.ts | 369 ++++++++++ .../jasmine-vitest/utils/refactor-reporter.ts | 4 + 4 files changed, 1046 insertions(+), 2 deletions(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index 3022db629c28..434e50b670bf 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -12,6 +12,18 @@ import { transformFocusedAndSkippedTests, transformPending, } from './transformers/jasmine-lifecycle'; +import { + transformArrayWithExactContents, + transformAsymmetricMatchers, + transformCalledOnceWith, + transformComplexMatchers, + transformExpectAsync, + transformExpectNothing, + transformSyntacticSugarMatchers, + transformToHaveClass, + transformWithContext, + transformtoHaveBeenCalledBefore, +} from './transformers/jasmine-matcher'; import { RefactorContext } from './utils/refactor-context'; import { RefactorReporter } from './utils/refactor-reporter'; @@ -48,21 +60,47 @@ export function transformJasmineToVitest( // Transform the node itself based on its type if (ts.isCallExpression(transformedNode)) { const transformations = [ + transformWithContext, + transformExpectAsync, + transformSyntacticSugarMatchers, transformFocusedAndSkippedTests, + transformComplexMatchers, transformPending, transformDoneCallback, + transformtoHaveBeenCalledBefore, + transformToHaveClass, ]; for (const transformer of transformations) { transformedNode = transformer(transformedNode, refactorCtx); } + } else if (ts.isPropertyAccessExpression(transformedNode)) { + const transformations = [transformAsymmetricMatchers]; + + for (const transformer of transformations) { + transformedNode = transformer(transformedNode, refactorCtx); + } + } else if (ts.isExpressionStatement(transformedNode)) { + const statementTransformers = [ + transformCalledOnceWith, + transformArrayWithExactContents, + transformExpectNothing, + ]; + + for (const transformer of statementTransformers) { + const result = transformer(transformedNode, refactorCtx); + if (result !== transformedNode) { + transformedNode = result; + break; + } + } } // Visit the children of the node to ensure they are transformed if (Array.isArray(transformedNode)) { return transformedNode.map((node) => ts.visitEachChild(node, visitor, context)); } else { - return ts.visitEachChild(transformedNode, visitor, context); + return ts.visitEachChild(transformedNode as ts.Node, visitor, context); } }; @@ -70,7 +108,7 @@ export function transformJasmineToVitest( }; const result = ts.transform(sourceFile, [transformer]); - if (result.transformed[0] === sourceFile) { + if (result.transformed[0] === sourceFile && !reporter.hasTodos) { return content; } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts new file mode 100644 index 000000000000..dd4cb0a122ea --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts @@ -0,0 +1,633 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains transformers that migrate Jasmine matchers to their + * Vitest counterparts. It handles a wide range of matchers, including syntactic sugar + * (e.g., `toBeTrue`), asymmetric matchers (e.g., `jasmine.any`), async promise matchers + * (`expectAsync`), and complex matchers that require restructuring, such as + * `toHaveBeenCalledOnceWith` and `arrayWithExactContents`. + */ + +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { createExpectCallExpression, createPropertyAccess } from '../utils/ast-helpers'; +import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; +import { addTodoComment } from '../utils/comment-helpers'; +import { RefactorContext } from '../utils/refactor-context'; + +const SUGAR_MATCHER_CHANGES = new Map([ + ['toBeTrue', { newName: 'toBe', newArgs: [ts.factory.createTrue()] }], + ['toBeFalse', { newName: 'toBe', newArgs: [ts.factory.createFalse()] }], + ['toBePositiveInfinity', { newName: 'toBe', newArgs: [ts.factory.createIdentifier('Infinity')] }], + [ + 'toBeNegativeInfinity', + { + newName: 'toBe', + newArgs: [ + ts.factory.createPrefixUnaryExpression( + ts.SyntaxKind.MinusToken, + ts.factory.createIdentifier('Infinity'), + ), + ], + }, + ], + ['toHaveSize', { newName: 'toHaveLength' }], +]); + +export function transformSyntacticSugarMatchers( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression)) { + return node; + } + + const pae = node.expression; + const matcherName = pae.name.text; + + if (matcherName === 'toHaveSpyInteractions') { + reporter.recordTodo('toHaveSpyInteractions'); + addTodoComment( + node, + 'Unsupported matcher ".toHaveSpyInteractions()" found. ' + + 'Please migrate this manually by checking the `mock.calls.length` of the individual spies.', + ); + + return node; + } + + if (matcherName === 'toThrowMatching') { + reporter.recordTodo('toThrowMatching'); + addTodoComment( + node, + 'Unsupported matcher ".toThrowMatching()" found. Please migrate this manually.', + ); + + return node; + } + + const mapping = SUGAR_MATCHER_CHANGES.get(matcherName); + + if (mapping) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed matcher ".${matcherName}()" to ".${mapping.newName}()".`, + ); + const newExpression = createPropertyAccess(pae.expression, mapping.newName); + const newArgs = mapping.newArgs ?? [...node.arguments]; + + return ts.factory.updateCallExpression(node, newExpression, node.typeArguments, newArgs); + } + + return node; +} + +const ASYMMETRIC_MATCHER_NAMES: ReadonlyArray = [ + 'anything', + 'any', + 'stringMatching', + 'objectContaining', + 'arrayContaining', + 'stringContaining', +]; + +export function transformAsymmetricMatchers( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + ts.isPropertyAccessExpression(node) && + ts.isIdentifier(node.expression) && + node.expression.text === 'jasmine' + ) { + const matcherName = node.name.text; + if (ASYMMETRIC_MATCHER_NAMES.includes(matcherName)) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed asymmetric matcher \`jasmine.${matcherName}\` to \`expect.${matcherName}\`.`, + ); + + return createPropertyAccess('expect', node.name); + } + } + + return node; +} + +export function transformtoHaveBeenCalledBefore( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + !ts.isCallExpression(node) || + !ts.isPropertyAccessExpression(node.expression) || + node.arguments.length !== 1 + ) { + return node; + } + + const pae = node.expression; + const matcherName = pae.name.text; + let isNegated = false; + + let expectExpression = pae.expression; + if (ts.isPropertyAccessExpression(expectExpression) && expectExpression.name.text === 'not') { + isNegated = true; + expectExpression = expectExpression.expression; + } + + if (!ts.isCallExpression(expectExpression) || matcherName !== 'toHaveBeenCalledBefore') { + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `toHaveBeenCalledBefore` to a Vitest-compatible spy invocation order comparison.', + ); + + const [spyB] = node.arguments; + const [spyA] = expectExpression.arguments; + + const createInvocationOrderAccess = (spyIdentifier: ts.Expression) => { + const mockedSpy = ts.factory.createCallExpression( + createPropertyAccess('vi', 'mocked'), + undefined, + [spyIdentifier], + ); + const mockProperty = createPropertyAccess(mockedSpy, 'mock'); + + return createPropertyAccess(mockProperty, 'invocationCallOrder'); + }; + + const createMinCall = (spyIdentifier: ts.Expression) => { + return ts.factory.createCallExpression(createPropertyAccess('Math', 'min'), undefined, [ + ts.factory.createSpreadElement(createInvocationOrderAccess(spyIdentifier)), + ]); + }; + + const newExpect = createExpectCallExpression([createMinCall(spyA)]); + const newMatcherName = isNegated ? 'toBeGreaterThanOrEqual' : 'toBeLessThan'; + + return ts.factory.createCallExpression( + createPropertyAccess(newExpect, newMatcherName), + undefined, + [createMinCall(spyB)], + ); +} + +export function transformToHaveClass( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + !ts.isCallExpression(node) || + !ts.isPropertyAccessExpression(node.expression) || + node.arguments.length !== 1 + ) { + return node; + } + + const pae = node.expression; + const matcherName = pae.name.text; + let isNegated = false; + + let expectExpression = pae.expression; + if (ts.isPropertyAccessExpression(expectExpression) && expectExpression.name.text === 'not') { + isNegated = true; + expectExpression = expectExpression.expression; + } + + if (matcherName !== 'toHaveClass') { + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `.toHaveClass()` to a `classList.contains()` check.', + ); + + const [className] = node.arguments; + const newExpectArgs: ts.Expression[] = []; + + if (ts.isCallExpression(expectExpression)) { + const [element] = expectExpression.arguments; + const classListContains = ts.factory.createCallExpression( + createPropertyAccess(createPropertyAccess(element, 'classList'), 'contains'), + undefined, + [className], + ); + newExpectArgs.push(classListContains); + + // Pass the context message from withContext to the new expect call + if (expectExpression.arguments.length > 1) { + newExpectArgs.push(expectExpression.arguments[1]); + } + } else { + return node; + } + + const newExpect = createExpectCallExpression(newExpectArgs); + const newMatcher = isNegated ? ts.factory.createFalse() : ts.factory.createTrue(); + + return ts.factory.createCallExpression(createPropertyAccess(newExpect, 'toBe'), undefined, [ + newMatcher, + ]); +} + +const ASYNC_MATCHER_CHANGES = new Map< + string, + { + base: 'resolves' | 'rejects'; + matcher: string; + not?: boolean; + keepArgs?: boolean; + } +>([ + ['toBeResolved', { base: 'resolves', matcher: 'toThrow', not: true, keepArgs: false }], + ['toBeResolvedTo', { base: 'resolves', matcher: 'toEqual', keepArgs: true }], + ['toBeRejected', { base: 'rejects', matcher: 'toThrow', keepArgs: false }], + ['toBeRejectedWith', { base: 'rejects', matcher: 'toEqual', keepArgs: true }], + ['toBeRejectedWithError', { base: 'rejects', matcher: 'toThrowError', keepArgs: true }], +]); + +export function transformExpectAsync( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + !ts.isCallExpression(node) || + !ts.isPropertyAccessExpression(node.expression) || + !ts.isCallExpression(node.expression.expression) + ) { + return node; + } + + const matcherCall = node; + const matcherPae = node.expression; + const expectCall = node.expression.expression; + + if (!ts.isIdentifier(expectCall.expression) || expectCall.expression.text !== 'expectAsync') { + return node; + } + + const matcherName = ts.isIdentifier(matcherPae.name) ? matcherPae.name.text : undefined; + const mapping = matcherName ? ASYNC_MATCHER_CHANGES.get(matcherName) : undefined; + + if (mapping) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed \`expectAsync(...).${matcherName}\` to \`expect(...).${mapping.base}.${mapping.matcher}\`.`, + ); + const newExpectCall = createExpectCallExpression([expectCall.arguments[0]]); + let newMatcherChain: ts.Expression = createPropertyAccess(newExpectCall, mapping.base); + + if (mapping.not) { + newMatcherChain = createPropertyAccess(newMatcherChain, 'not'); + } + newMatcherChain = createPropertyAccess(newMatcherChain, mapping.matcher); + + const newMatcherArgs = mapping.keepArgs ? [...matcherCall.arguments] : []; + + return ts.factory.createCallExpression(newMatcherChain, undefined, newMatcherArgs); + } + + if (matcherName) { + if (matcherName === 'toBePending') { + reporter.recordTodo('toBePending'); + addTodoComment( + node, + 'Unsupported matcher ".toBePending()" found. Vitest does not have a direct equivalent. ' + + 'Please migrate this manually, for example by using `Promise.race` to check if the promise settles within a short timeout.', + ); + } else { + reporter.recordTodo('unsupported-expect-async-matcher'); + addTodoComment( + node, + `Unsupported expectAsync matcher ".${matcherName}()" found. Please migrate this manually.`, + ); + } + } + + return node; +} + +export function transformComplexMatchers( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + !ts.isCallExpression(node) || + !ts.isPropertyAccessExpression(node.expression) || + node.expression.name.text !== 'toEqual' || + node.arguments.length !== 1 + ) { + return node; + } + + const argument = node.arguments[0]; + const jasmineMatcherName = getJasmineMethodName(argument); + + if (!jasmineMatcherName) { + return node; + } + + const expectCall = node.expression.expression; + + let newMatcherName: string | undefined; + let newArgs: ts.Expression[] | undefined; + let negate = false; + + switch (jasmineMatcherName) { + case 'truthy': + newMatcherName = 'toBeTruthy'; + break; + case 'falsy': + newMatcherName = 'toBeFalsy'; + break; + case 'empty': + newMatcherName = 'toHaveLength'; + newArgs = [ts.factory.createNumericLiteral(0)]; + break; + case 'notEmpty': + newMatcherName = 'toHaveLength'; + newArgs = [ts.factory.createNumericLiteral(0)]; + negate = true; + break; + case 'is': + newMatcherName = 'toBe'; + if (ts.isCallExpression(argument)) { + newArgs = [...argument.arguments]; + } + break; + } + + if (newMatcherName) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed \`.toEqual(jasmine.${jasmineMatcherName}())\` to \`.${newMatcherName}()\`.`, + ); + let expectExpression = expectCall; + + // Handle cases like `expect(...).not.toEqual(jasmine.notEmpty())` + if (ts.isPropertyAccessExpression(expectCall) && expectCall.name.text === 'not') { + // The original expression was negated, so flip the negate flag + negate = !negate; + // Use the expression before the `.not` + expectExpression = expectCall.expression; + } + + if (negate) { + expectExpression = createPropertyAccess(expectExpression, 'not'); + } + + const newExpression = createPropertyAccess(expectExpression, newMatcherName); + + return ts.factory.createCallExpression(newExpression, undefined, newArgs ?? []); + } + + return node; +} + +export function transformArrayWithExactContents( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node | readonly ts.Node[] { + if ( + !ts.isExpressionStatement(node) || + !ts.isCallExpression(node.expression) || + !ts.isPropertyAccessExpression(node.expression.expression) || + node.expression.expression.name.text !== 'toEqual' || + node.expression.arguments.length !== 1 + ) { + return node; + } + + const argument = node.expression.arguments[0]; + if ( + !isJasmineCallExpression(argument, 'arrayWithExactContents') || + argument.arguments.length !== 1 + ) { + return node; + } + + if (!ts.isArrayLiteralExpression(argument.arguments[0])) { + reporter.recordTodo('arrayWithExactContents-dynamic-variable'); + addTodoComment( + node, + 'Cannot transform jasmine.arrayWithExactContents with a dynamic variable. Please migrate this manually.', + ); + + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `jasmine.arrayWithExactContents()` to `.toHaveLength()` and `.toEqual(expect.arrayContaining())`.', + ); + + const expectCall = node.expression.expression.expression; + const arrayLiteral = argument.arguments[0]; + + const lengthCall = ts.factory.createCallExpression( + createPropertyAccess(expectCall, 'toHaveLength'), + undefined, + [ts.factory.createNumericLiteral(arrayLiteral.elements.length)], + ); + + const containingCall = ts.factory.createCallExpression( + createPropertyAccess(expectCall, 'toEqual'), + undefined, + [ + ts.factory.createCallExpression( + createPropertyAccess('expect', 'arrayContaining'), + undefined, + [arrayLiteral], + ), + ], + ); + + return [ + ts.factory.createExpressionStatement(lengthCall), + ts.factory.createExpressionStatement(containingCall), + ]; +} + +export function transformCalledOnceWith( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node | readonly ts.Node[] { + if (!ts.isExpressionStatement(node)) { + return node; + } + + const call = node.expression; + if ( + !ts.isCallExpression(call) || + !ts.isPropertyAccessExpression(call.expression) || + call.expression.name.text !== 'toHaveBeenCalledOnceWith' + ) { + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `.toHaveBeenCalledOnceWith()` to `.toHaveBeenCalledTimes(1)` and `.toHaveBeenCalledWith()`.', + ); + + const expectCall = call.expression.expression; + const args = call.arguments; + + const timesCall = ts.factory.createCallExpression( + createPropertyAccess(expectCall, 'toHaveBeenCalledTimes'), + undefined, + [ts.factory.createNumericLiteral(1)], + ); + + const withCall = ts.factory.createCallExpression( + createPropertyAccess(expectCall, 'toHaveBeenCalledWith'), + undefined, + args, + ); + + return [ + ts.factory.createExpressionStatement(timesCall), + ts.factory.createExpressionStatement(withCall), + ]; +} + +export function transformWithContext( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression)) { + return node; + } + + // Traverse the chain of property access expressions to find the .withContext() call + let currentExpression: ts.Expression = node.expression; + const propertyChain: ts.Identifier[] = []; + + while (ts.isPropertyAccessExpression(currentExpression)) { + if (!ts.isIdentifier(currentExpression.name)) { + // Break if we encounter a private identifier or something else unexpected + return node; + } + propertyChain.push(currentExpression.name); + currentExpression = currentExpression.expression; + } + + const withContextCall = currentExpression; + // Check if we found a .withContext() call + if ( + !ts.isCallExpression(withContextCall) || + !ts.isPropertyAccessExpression(withContextCall.expression) || + !ts.isIdentifier(withContextCall.expression.name) || + withContextCall.expression.name.text !== 'withContext' + ) { + return node; + } + + reporter.reportTransformation( + sourceFile, + withContextCall, + 'Transformed `.withContext()` to the `expect(..., message)` syntax.', + ); + + const expectCall = withContextCall.expression.expression; + + if ( + !ts.isCallExpression(expectCall) || + !ts.isIdentifier(expectCall.expression) || + expectCall.expression.text !== 'expect' + ) { + return node; + } + + const contextMessage = withContextCall.arguments[0]; + if (!contextMessage) { + // No message provided, so unwrap the .withContext() call. + let newChain: ts.Expression = expectCall; + for (let i = propertyChain.length - 1; i >= 0; i--) { + newChain = ts.factory.createPropertyAccessExpression(newChain, propertyChain[i]); + } + + return ts.factory.updateCallExpression(node, newChain, node.typeArguments, node.arguments); + } + + const newExpectArgs = [...expectCall.arguments, contextMessage]; + const newExpectCall = ts.factory.updateCallExpression( + expectCall, + expectCall.expression, + expectCall.typeArguments, + newExpectArgs, + ); + + // Rebuild the property access chain + let newExpression: ts.Expression = newExpectCall; + for (let i = propertyChain.length - 1; i >= 0; i--) { + newExpression = ts.factory.createPropertyAccessExpression(newExpression, propertyChain[i]); + } + + return ts.factory.updateCallExpression(node, newExpression, node.typeArguments, node.arguments); +} + +export function transformExpectNothing( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if (!ts.isExpressionStatement(node)) { + return node; + } + + const call = node.expression; + if ( + !ts.isCallExpression(call) || + !ts.isPropertyAccessExpression(call.expression) || + !ts.isIdentifier(call.expression.name) || + call.expression.name.text !== 'nothing' + ) { + return node; + } + + const expectCall = call.expression.expression; + if ( + !ts.isCallExpression(expectCall) || + !ts.isIdentifier(expectCall.expression) || + expectCall.expression.text !== 'expect' || + expectCall.arguments.length > 0 + ) { + return node; + } + + // The statement is `expect().nothing()`, which can be removed. + const replacement = ts.factory.createEmptyStatement(); + const originalText = node.getFullText().trim(); + + reporter.reportTransformation(sourceFile, node, 'Removed `expect().nothing()` statement.'); + reporter.recordTodo('expect-nothing'); + addTodoComment( + replacement, + 'expect().nothing() has been removed because it is redundant in Vitest. Tests without assertions pass by default.', + ); + ts.addSyntheticLeadingComment( + replacement, + ts.SyntaxKind.SingleLineCommentTrivia, + ` ${originalText}`, + true, + ); + + return replacement; +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts new file mode 100644 index 000000000000..c6d1f431a54e --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts @@ -0,0 +1,369 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from '../test-file-transformer'; +import { RefactorReporter } from '../utils/refactor-reporter'; + +async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + const formattedExpected = await format(expected, { parser: 'typescript' }); + + expect(formattedTransformed).toBe(formattedExpected); +} + +describe('Jasmine to Vitest Transformer', () => { + describe('transformAsymmetricMatchers', () => { + const testCases = [ + { + description: 'should transform jasmine.any(String) to expect.any(String)', + input: `expect(foo).toEqual(jasmine.any(String));`, + expected: `expect(foo).toEqual(expect.any(String));`, + }, + { + description: + 'should transform jasmine.objectContaining(...) to expect.objectContaining(...)', + input: `expect(foo).toEqual(jasmine.objectContaining({ bar: 'baz' }));`, + expected: `expect(foo).toEqual(expect.objectContaining({ bar: 'baz' }));`, + }, + { + description: 'should transform jasmine.anything() to expect.anything()', + input: `expect(foo).toEqual(jasmine.anything());`, + expected: `expect(foo).toEqual(expect.anything());`, + }, + { + description: 'should transform jasmine.stringMatching(...) to expect.stringMatching(...)', + input: `expect(foo).toEqual(jasmine.stringMatching(/some-pattern/));`, + expected: `expect(foo).toEqual(expect.stringMatching(/some-pattern/));`, + }, + { + description: 'should transform jasmine.arrayContaining(...) to expect.arrayContaining(...)', + input: `expect(foo).toEqual(jasmine.arrayContaining(['a']));`, + expected: `expect(foo).toEqual(expect.arrayContaining(['a']));`, + }, + { + description: + 'should transform jasmine.stringContaining(...) to expect.stringContaining(...)', + input: `expect(foo).toEqual(jasmine.stringContaining('substring'));`, + expected: `expect(foo).toEqual(expect.stringContaining('substring'));`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformExpectAsync', () => { + const testCases = [ + { + description: 'should transform expectAsync(...).toBeResolved()', + input: `await expectAsync(myPromise).toBeResolved();`, + expected: `await expect(myPromise).resolves.not.toThrow();`, + }, + { + description: 'should transform expectAsync(...).toBeResolvedTo(value)', + input: `await expectAsync(myPromise).toBeResolvedTo(42);`, + expected: `await expect(myPromise).resolves.toEqual(42);`, + }, + { + description: 'should transform expectAsync(...).toBeRejected()', + input: `await expectAsync(myPromise).toBeRejected();`, + expected: `await expect(myPromise).rejects.toThrow();`, + }, + { + description: 'should transform expectAsync(...).toBeRejectedWith(error)', + input: `await expectAsync(myPromise).toBeRejectedWith('Error');`, + expected: `await expect(myPromise).rejects.toEqual('Error');`, + }, + { + description: 'should transform expectAsync(...).toBeRejectedWithError(ErrorClass, message)', + input: `await expectAsync(myPromise).toBeRejectedWithError(TypeError, 'Failed');`, + expected: `await expect(myPromise).rejects.toThrowError(TypeError, 'Failed');`, + }, + { + description: 'should add a TODO for an unknown expectAsync matcher', + input: `await expectAsync(myPromise).toBeSomethingElse();`, + expected: ` + // TODO: vitest-migration: Unsupported expectAsync matcher ".toBeSomethingElse()" found. Please migrate this manually. + await expectAsync(myPromise).toBeSomethingElse(); + `, + }, + { + description: 'should add a specific TODO for toBePending', + input: `await expectAsync(myPromise).toBePending();`, + /* eslint-disable max-len */ + expected: ` + // TODO: vitest-migration: Unsupported matcher ".toBePending()" found. Vitest does not have a direct equivalent. Please migrate this manually, for example by using \`Promise.race\` to check if the promise settles within a short timeout. + await expectAsync(myPromise).toBePending(); + `, + /* eslint-enable max-len */ + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformCalledOnceWith', () => { + const testCases = [ + { + description: 'should transform toHaveBeenCalledOnceWith(...) into two separate calls', + input: `expect(mySpy).toHaveBeenCalledOnceWith('foo', 'bar');`, + expected: ` + expect(mySpy).toHaveBeenCalledTimes(1); + expect(mySpy).toHaveBeenCalledWith('foo', 'bar'); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformSyntacticSugarMatchers', () => { + const testCases = [ + { + description: 'should transform toBeTrue() to toBe(true)', + input: `expect(value).toBeTrue();`, + expected: `expect(value).toBe(true);`, + }, + { + description: 'should transform toBeFalse() to toBe(false)', + input: `expect(value).toBeFalse();`, + expected: `expect(value).toBe(false);`, + }, + { + description: 'should transform toBePositiveInfinity() to toBe(Infinity)', + input: `expect(value).toBePositiveInfinity();`, + expected: `expect(value).toBe(Infinity);`, + }, + { + description: 'should transform toBeNegativeInfinity() to toBe(-Infinity)', + input: `expect(value).toBeNegativeInfinity();`, + expected: `expect(value).toBe(-Infinity);`, + }, + { + description: 'should transform toHaveSize(number) to toHaveLength(number)', + input: `expect(myArray).toHaveSize(3);`, + expected: `expect(myArray).toHaveLength(3);`, + }, + { + description: 'should add a TODO for toThrowMatching', + input: `expect(() => {}).toThrowMatching((e) => e.message === 'foo');`, + expected: `// TODO: vitest-migration: Unsupported matcher ".toThrowMatching()" found. Please migrate this manually. +expect(() => {}).toThrowMatching((e) => e.message === 'foo');`, + }, + { + description: 'should add a TODO for toHaveSpyInteractions', + input: `expect(mySpyObj).toHaveSpyInteractions();`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: Unsupported matcher ".toHaveSpyInteractions()" found. Please migrate this manually by checking the \`mock.calls.length\` of the individual spies. +expect(mySpyObj).toHaveSpyInteractions();`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformComplexMatchers', () => { + const testCases = [ + { + description: 'should transform toEqual(jasmine.truthy()) to toBeTruthy()', + input: `expect(value).toEqual(jasmine.truthy());`, + expected: `expect(value).toBeTruthy();`, + }, + { + description: 'should transform toEqual(jasmine.falsy()) to toBeFalsy()', + input: `expect(value).toEqual(jasmine.falsy());`, + expected: `expect(value).toBeFalsy();`, + }, + { + description: 'should transform toEqual(jasmine.empty()) to toHaveLength(0)', + input: `expect([]).toEqual(jasmine.empty());`, + expected: `expect([]).toHaveLength(0);`, + }, + { + description: 'should transform not.toEqual(jasmine.empty()) to not.toHaveLength(0)', + input: `expect([1]).not.toEqual(jasmine.empty());`, + expected: `expect([1]).not.toHaveLength(0);`, + }, + { + description: 'should transform toEqual(jasmine.notEmpty()) to not.toHaveLength(0)', + input: `expect([1]).toEqual(jasmine.notEmpty());`, + expected: `expect([1]).not.toHaveLength(0);`, + }, + { + description: 'should transform not.toEqual(jasmine.notEmpty()) to toHaveLength(0)', + input: `expect([]).not.toEqual(jasmine.notEmpty());`, + expected: `expect([]).toHaveLength(0);`, + }, + { + description: 'should transform toEqual(jasmine.is()) to toBe()', + input: `expect(value).toEqual(jasmine.is(otherValue));`, + expected: `expect(value).toBe(otherValue);`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformArrayWithExactContents', () => { + const testCases = [ + { + description: 'should transform toEqual(jasmine.arrayWithExactContents()) into two calls', + input: `expect(myArray).toEqual(jasmine.arrayWithExactContents(['a', 'b']));`, + expected: ` + expect(myArray).toHaveLength(2); + expect(myArray).toEqual(expect.arrayContaining(['a', 'b'])); + `, + }, + { + description: + 'should transform toEqual(jasmine.arrayWithExactContents()) with asymmetric matchers', + input: `expect(myArray).toEqual(jasmine.arrayWithExactContents([jasmine.any(Number), 'a']));`, + expected: ` + expect(myArray).toHaveLength(2); + expect(myArray).toEqual(expect.arrayContaining([expect.any(Number), 'a'])); + `, + }, + { + description: + 'should add a TODO for toEqual(jasmine.arrayWithExactContents()) with a variable', + input: `expect(myArray).toEqual(jasmine.arrayWithExactContents(someOtherArray));`, + expected: ` + // TODO: vitest-migration: Cannot transform jasmine.arrayWithExactContents with a dynamic variable. Please migrate this manually. + expect(myArray).toEqual(jasmine.arrayWithExactContents(someOtherArray)); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformExpectNothing', () => { + const testCases = [ + { + description: 'should remove expect().nothing() and add a comment', + input: ` + it('should be a passing test', () => { + expect().nothing(); + }); + `, + /* eslint-disable max-len */ + expected: ` + it('should be a passing test', () => { + // TODO: vitest-migration: expect().nothing() has been removed because it is redundant in Vitest. Tests without assertions pass by default. + // expect().nothing(); + }); + `, + /* eslint-enable max-len */ + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformWithContext', () => { + const testCases = [ + { + description: 'should transform .withContext() to an expect message', + input: `expect(value).withContext('It should be true').toBe(true);`, + expected: `expect(value, 'It should be true').toBe(true);`, + }, + { + description: 'should handle chained matchers', + input: `expect(value).withContext('It should not be false').not.toBe(false);`, + expected: `expect(value, 'It should not be false').not.toBe(false);`, + }, + { + description: 'should handle .withContext() with no arguments by removing it', + input: `expect(value).withContext().toBe(true);`, + expected: `expect(value).toBe(true);`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformtoHaveBeenCalledBefore', () => { + const testCases = [ + { + description: 'should transform toHaveBeenCalledBefore', + input: `expect(spyA).toHaveBeenCalledBefore(spyB);`, + // eslint-disable-next-line max-len + expected: `expect(Math.min(...vi.mocked(spyA).mock.invocationCallOrder)).toBeLessThan(Math.min(...vi.mocked(spyB).mock.invocationCallOrder));`, + }, + { + description: 'should transform not.toHaveBeenCalledBefore', + input: `expect(spyA).not.toHaveBeenCalledBefore(spyB);`, + // eslint-disable-next-line max-len + expected: `expect(Math.min(...vi.mocked(spyA).mock.invocationCallOrder)).toBeGreaterThanOrEqual(Math.min(...vi.mocked(spyB).mock.invocationCallOrder));`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformToHaveClass', () => { + const testCases = [ + { + description: 'should transform toHaveClass', + input: `expect(element).toHaveClass('my-class');`, + expected: `expect(element.classList.contains('my-class')).toBe(true);`, + }, + { + description: 'should transform not.toHaveClass', + input: `expect(element).not.toHaveClass('my-class');`, + expected: `expect(element.classList.contains('my-class')).toBe(false);`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); +}); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts index 0e99631a0f8b..55d235e96c25 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts @@ -17,6 +17,10 @@ export class RefactorReporter { constructor(private logger: logging.LoggerApi) {} + get hasTodos(): boolean { + return this.todos.size > 0; + } + incrementScannedFiles(): void { this.filesScanned++; } From ea0da7039db349be2e9e6a810640a05d1149ea21 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 14 Oct 2025 08:57:14 +0000 Subject: [PATCH 1591/2162] test: add `unrs-resolver` to known postinstall scripts See failure: https://github.com/angular/angular-cli/actions/runs/18489603907/job/52680140981 --- tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts b/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts index 2b0ad00b62a1..7c1d63e6ef97 100644 --- a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts +++ b/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts @@ -7,6 +7,7 @@ const CURRENT_SCRIPT_PACKAGES: ReadonlySet = new Set([ 'lmdb (install)', 'msgpackr-extract (install)', 'nice-napi (install)', + 'unrs-resolver (postinstall)', ]); const POTENTIAL_SCRIPTS: ReadonlyArray = ['preinstall', 'install', 'postinstall']; From f8c0744b4a668d4b6e6eb037472e7ad83089081f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 14 Oct 2025 07:24:22 +0000 Subject: [PATCH 1592/2162] refactor(@angular/ssr): handle promise-like results from `loadChildrenHelper` The `loadChildrenHelper` function can return either an Observable or a Promise. This change ensures that we correctly handle both cases by checking if the return value is "thenable" before calling `.toPromise()`. This provides compatibility with different versions of Angular framework that have different return types for `loadChildren`. This is a temporary workaround and should be removed when Angular framework v21.0.0-next.7 is released. --- packages/angular/ssr/src/routes/ng-routes.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index a7ca0d137d88..a555eeb88dd9 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -205,11 +205,13 @@ async function* handleRoute(options: { ) : parentInjector; - const loadedChildRoutes = await loadChildrenHelper( - route, - compiler, - routeInjector, - ).toPromise(); + // TODO(alanagius): replace all the below when FW 21.0.0-next.7 is out. + const loadChildrenHelperResult = loadChildrenHelper(route, compiler, routeInjector); + const loadedChildRoutes = await ('then' in loadChildrenHelperResult + ? (loadChildrenHelperResult as unknown as ReturnType< + typeof loadChildrenHelperResult.toPromise + >) + : loadChildrenHelperResult.toPromise()); if (loadedChildRoutes) { const { routes: childRoutes, injector = routeInjector } = loadedChildRoutes; From ad113c7b3acb00a18fd1cad2fa94532a70df6f3d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 14 Oct 2025 13:28:00 +0000 Subject: [PATCH 1593/2162] refactor: remove standalone flag standalone is the default --- packages/angular/ssr/schematics/ng-add/index_spec.ts | 1 - packages/angular/ssr/test/app-engine_spec.ts | 6 ------ packages/angular/ssr/test/app_spec.ts | 1 - packages/angular/ssr/test/routes/ng-routes_spec.ts | 3 --- packages/angular/ssr/test/routes/router_spec.ts | 1 - packages/angular/ssr/test/testing-utils.ts | 1 - packages/schematics/angular/ssr/index_spec.ts | 1 - tests/legacy-cli/e2e/tests/build/library/setup.ts | 2 -- .../e2e/tests/build/prerender/error-with-sourcemaps.ts | 1 - .../e2e/tests/build/prerender/http-requests-assets.ts | 1 - .../server-routes-output-mode-static-http-calls.ts | 1 - .../e2e/tests/commands/serve/ssr-http-requests-assets.ts | 1 - tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts | 1 - tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts | 1 - tests/legacy-cli/e2e/tests/i18n/setup.ts | 1 - 15 files changed, 23 deletions(-) diff --git a/packages/angular/ssr/schematics/ng-add/index_spec.ts b/packages/angular/ssr/schematics/ng-add/index_spec.ts index b93a509200b1..4cf93d2b6020 100644 --- a/packages/angular/ssr/schematics/ng-add/index_spec.ts +++ b/packages/angular/ssr/schematics/ng-add/index_spec.ts @@ -45,7 +45,6 @@ describe('@angular/ssr ng-add schematic', () => { routing: false, style: 'css', skipTests: false, - standalone: true, }, appTree, ); diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index b74244941c95..90c8d9ae10cc 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -20,14 +20,12 @@ import { setAngularAppTestingManifest } from './testing-utils'; function createEntryPoint(locale: string) { @Component({ - standalone: true, selector: `app-ssr-${locale}`, template: `SSR works ${locale.toUpperCase()}`, }) class SSRComponent {} @Component({ - standalone: true, selector: `app-ssg-${locale}`, template: `SSG works ${locale.toUpperCase()}`, }) @@ -35,21 +33,18 @@ function createEntryPoint(locale: string) { return async () => { @Component({ - standalone: true, selector: `app-home-${locale}`, template: `Home works ${locale.toUpperCase()}`, }) class HomeComponent {} @Component({ - standalone: true, selector: `app-ssr-${locale}`, template: `SSR works ${locale.toUpperCase()}`, }) class SSRComponent {} @Component({ - standalone: true, selector: `app-ssg-${locale}`, template: `SSG works ${locale.toUpperCase()}`, }) @@ -177,7 +172,6 @@ describe('AngularAppEngine', () => { describe('Non-localized app', () => { beforeAll(() => { @Component({ - standalone: true, selector: 'app-home', template: `Home works`, }) diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index bde408ef5ee1..e5ccddbfddbf 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -21,7 +21,6 @@ describe('AngularServerApp', () => { beforeAll(() => { @Component({ - standalone: true, selector: 'app-home', template: `Home works`, }) diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index d9fae4bcfb41..628546432d0c 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -26,7 +26,6 @@ describe('extractRoutesAndCreateRouteTree', () => { const url = new URL('http://localhost'); @Component({ - standalone: true, selector: 'app-dummy-comp', template: `dummy works`, }) @@ -630,7 +629,6 @@ describe('extractRoutesAndCreateRouteTree', () => { it('should not bootstrap the root component', async () => { @Component({ - standalone: true, selector: 'app-root', template: '', }) @@ -659,7 +657,6 @@ describe('extractRoutesAndCreateRouteTree', () => { it('should not bootstrap the root component when using `withEnabledBlockingInitialNavigation`', async () => { @Component({ - standalone: true, selector: 'app-root', template: '', }) diff --git a/packages/angular/ssr/test/routes/router_spec.ts b/packages/angular/ssr/test/routes/router_spec.ts index 3a8dfe30b00f..1ce317f414c7 100644 --- a/packages/angular/ssr/test/routes/router_spec.ts +++ b/packages/angular/ssr/test/routes/router_spec.ts @@ -23,7 +23,6 @@ describe('ServerRouter', () => { beforeAll(() => { @Component({ - standalone: true, selector: 'app-dummy', template: `dummy works`, }) diff --git a/packages/angular/ssr/test/testing-utils.ts b/packages/angular/ssr/test/testing-utils.ts index d14dd9f34a46..29ceb5506a4c 100644 --- a/packages/angular/ssr/test/testing-utils.ts +++ b/packages/angular/ssr/test/testing-utils.ts @@ -20,7 +20,6 @@ import { ServerAsset, setAngularAppManifest } from '../src/manifest'; import { ServerRoute, provideServerRendering, withRoutes } from '../src/routes/route-config'; @Component({ - standalone: true, selector: 'app-root', template: '', imports: [RouterOutlet], diff --git a/packages/schematics/angular/ssr/index_spec.ts b/packages/schematics/angular/ssr/index_spec.ts index 4c70e971e54b..9578558d761c 100644 --- a/packages/schematics/angular/ssr/index_spec.ts +++ b/packages/schematics/angular/ssr/index_spec.ts @@ -109,7 +109,6 @@ describe('SSR Schematic', () => { routing: false, style: 'css', skipTests: false, - standalone: true, }, appTree, ); diff --git a/tests/legacy-cli/e2e/tests/build/library/setup.ts b/tests/legacy-cli/e2e/tests/build/library/setup.ts index bc67a5b1c6aa..9e05cab551a4 100644 --- a/tests/legacy-cli/e2e/tests/build/library/setup.ts +++ b/tests/legacy-cli/e2e/tests/build/library/setup.ts @@ -10,7 +10,6 @@ export async function libraryConsumptionSetup(): Promise { 'projects/my-lib/src/lib/my-lib.ts': `import { Component } from '@angular/core'; @Component({ - standalone: true, selector: 'lib-my-lib', templateUrl: './my-lib.html', }) @@ -20,7 +19,6 @@ export async function libraryConsumptionSetup(): Promise { import { MyLibComponent } from 'my-lib'; @Component({ - standalone: true, selector: 'app-root', template: '', imports: [MyLibComponent], 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 8e45499f0021..875638877fbd 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 @@ -26,7 +26,6 @@ export default async function () { @Component({ selector: 'app-root', - standalone: true, imports: [CommonModule, RouterOutlet], templateUrl: './app.html', styleUrls: ['./app.css'] 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 dc238941dc81..71288b3c242e 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 @@ -51,7 +51,6 @@ export default async function () { @Component({ selector: 'app-root', - standalone: true, imports: [CommonModule, RouterOutlet], template: \`

{{ data | json }}

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 9b37d3218b3c..b565144b37bf 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 @@ -29,7 +29,6 @@ export default async function () { @Component({ selector: 'app-root', - standalone: true, imports: [JsonPipe, RouterOutlet], template: \`

{{ assetsData | json }}

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 6ebb9c20022f..aa7e33089666 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 @@ -43,7 +43,6 @@ export default async function () { @Component({ selector: 'app-root', - standalone: true, imports: [CommonModule, RouterOutlet], template: \`

{{ data | json }}

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 e5a13de3c439..562a481086d5 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 @@ -24,7 +24,6 @@ export default async function () { import { I18nTest } from './i18n-test/i18n-test'; @Component({ - standalone: true, selector: 'app-root', imports: [I18nTest], template: '' diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts b/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts index 72af7f87e712..382051e83cce 100644 --- a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts +++ b/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts @@ -18,7 +18,6 @@ export default async function () { import { I18nTest } from './i18n-test/i18n-test'; @Component({ - standalone: true, selector: 'app-root', imports: [I18nTest], template: '' diff --git a/tests/legacy-cli/e2e/tests/i18n/setup.ts b/tests/legacy-cli/e2e/tests/i18n/setup.ts index 30fdcee1d757..99d71f9bbe4b 100644 --- a/tests/legacy-cli/e2e/tests/i18n/setup.ts +++ b/tests/legacy-cli/e2e/tests/i18n/setup.ts @@ -107,7 +107,6 @@ export async function setupI18nConfig() { @Component({ selector: 'app-root', imports: [DatePipe, RouterOutlet], - standalone: true, templateUrl: './app.html' }) export class App { From d0d2a17b8adb2c1ce6eee70494f5d2298622c40e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:41:49 -0400 Subject: [PATCH 1594/2162] feat(@schematics/angular): add Jasmine spy API transformations to jasmine-to-vitest schematic This commit adds transformers for Jasmine's spying functionality (https://jasmine.github.io/tutorials/spying_on_properties). Coverage includes: - spyOn, spyOnProperty, jasmine.createSpy, and jasmine.createSpyObj - Spy strategies (and.returnValue, and.callFake, etc.) are mapped to Vitest's 'mock*' equivalents. - Inspection of spy calls (spy.calls.reset, spy.calls.mostRecent). --- .../jasmine-vitest/test-file-transformer.ts | 14 +- .../transformers/jasmine-spy.ts | 449 ++++++++++++++++++ .../transformers/jasmine-spy_spec.ts | 263 ++++++++++ 3 files changed, 724 insertions(+), 2 deletions(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index 434e50b670bf..816c0f6326da 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -24,6 +24,12 @@ import { transformWithContext, transformtoHaveBeenCalledBefore, } from './transformers/jasmine-matcher'; +import { + transformCreateSpyObj, + transformSpies, + transformSpyCallInspection, + transformSpyReset, +} from './transformers/jasmine-spy'; import { RefactorContext } from './utils/refactor-context'; import { RefactorReporter } from './utils/refactor-reporter'; @@ -65,6 +71,11 @@ export function transformJasmineToVitest( transformSyntacticSugarMatchers, transformFocusedAndSkippedTests, transformComplexMatchers, + transformSpies, + transformCreateSpyObj, + transformSpyReset, + transformFocusedAndSkippedTests, + transformSpyCallInspection, transformPending, transformDoneCallback, transformtoHaveBeenCalledBefore, @@ -75,8 +86,7 @@ export function transformJasmineToVitest( transformedNode = transformer(transformedNode, refactorCtx); } } else if (ts.isPropertyAccessExpression(transformedNode)) { - const transformations = [transformAsymmetricMatchers]; - + const transformations = [transformAsymmetricMatchers, transformSpyCallInspection]; for (const transformer of transformations) { transformedNode = transformer(transformedNode, refactorCtx); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts new file mode 100644 index 000000000000..2d13a7474104 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -0,0 +1,449 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains transformers dedicated to converting Jasmine's spying + * functionality to Vitest's mocking APIs. It handles the creation of spies (`spyOn`, + * `createSpy`, `createSpyObj`), spy strategies (`and.returnValue`, `and.callFake`), + * and the inspection of spy calls (`spy.calls.reset`, `spy.calls.mostRecent`). + */ + +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { createPropertyAccess, createViCallExpression } from '../utils/ast-helpers'; +import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; +import { addTodoComment } from '../utils/comment-helpers'; +import { RefactorContext } from '../utils/refactor-context'; + +export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts.Node { + const { sourceFile, reporter } = refactorCtx; + if (!ts.isCallExpression(node)) { + return node; + } + + if ( + ts.isIdentifier(node.expression) && + (node.expression.text === 'spyOn' || node.expression.text === 'spyOnProperty') + ) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed \`${node.expression.text}\` to \`vi.spyOn\`.`, + ); + + return ts.factory.updateCallExpression( + node, + createPropertyAccess('vi', 'spyOn'), + node.typeArguments, + node.arguments, + ); + } + + if (ts.isPropertyAccessExpression(node.expression)) { + const pae = node.expression; + + if ( + ts.isPropertyAccessExpression(pae.expression) && + ts.isIdentifier(pae.expression.name) && + pae.expression.name.text === 'and' + ) { + const spyCall = pae.expression.expression; + let newMethodName: string | undefined; + if (ts.isIdentifier(pae.name)) { + const strategyName = pae.name.text; + switch (strategyName) { + case 'returnValue': + newMethodName = 'mockReturnValue'; + break; + case 'resolveTo': + newMethodName = 'mockResolvedValue'; + break; + case 'rejectWith': + newMethodName = 'mockRejectedValue'; + break; + case 'returnValues': { + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `.and.returnValues()` to chained `.mockReturnValueOnce()` calls.', + ); + const returnValues = node.arguments; + if (returnValues.length === 0) { + // No values, so it's a no-op. Just transform the spyOn call. + return transformSpies(spyCall, refactorCtx); + } + // spy.and.returnValues(a, b) -> spy.mockReturnValueOnce(a).mockReturnValueOnce(b) + let chainedCall: ts.Expression = spyCall; + for (const value of returnValues) { + const mockCall = ts.factory.createCallExpression( + createPropertyAccess(chainedCall, 'mockReturnValueOnce'), + undefined, + [value], + ); + chainedCall = mockCall; + } + + return chainedCall; + } + case 'callFake': + newMethodName = 'mockImplementation'; + break; + case 'callThrough': + reporter.reportTransformation( + sourceFile, + node, + 'Removed redundant `.and.callThrough()` call.', + ); + + return transformSpies(spyCall, refactorCtx); // .and.callThrough() is redundant, just transform spyOn. + case 'stub': { + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `.and.stub()` to `.mockImplementation()`.', + ); + const newExpression = createPropertyAccess(spyCall, 'mockImplementation'); + const arrowFn = ts.factory.createArrowFunction( + undefined, + undefined, + [], + undefined, + ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), + ts.factory.createBlock([], /* multiline */ true), + ); + + return ts.factory.createCallExpression(newExpression, undefined, [arrowFn]); + } + case 'throwError': { + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `.and.throwError()` to `.mockImplementation()`.', + ); + const errorArg = node.arguments[0]; + const throwStatement = ts.factory.createThrowStatement( + ts.isNewExpression(errorArg) + ? errorArg + : ts.factory.createNewExpression( + ts.factory.createIdentifier('Error'), + undefined, + node.arguments, + ), + ); + const arrowFunction = ts.factory.createArrowFunction( + undefined, + undefined, + [], + undefined, + ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), + ts.factory.createBlock([throwStatement], true), + ); + const newExpression = createPropertyAccess(spyCall, 'mockImplementation'); + + return ts.factory.createCallExpression(newExpression, undefined, [arrowFunction]); + } + default: + reporter.recordTodo('unsupported-spy-strategy'); + addTodoComment( + node, + `Unsupported spy strategy ".and.${strategyName}()" found. Please migrate this manually.`, + ); + } + + if (newMethodName) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed spy strategy \`.and.${strategyName}()\` to \`.${newMethodName}()\`.`, + ); + const newExpression = createPropertyAccess(spyCall, newMethodName); + + return ts.factory.updateCallExpression( + node, + newExpression, + node.typeArguments, + node.arguments, + ); + } + } + } + } + + const jasmineMethodName = getJasmineMethodName(node); + switch (jasmineMethodName) { + case 'createSpy': + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `jasmine.createSpy()` to `vi.fn()`.', + ); + + // jasmine.createSpy(name, originalFn) -> vi.fn(originalFn) + return createViCallExpression('fn', node.arguments.length > 1 ? [node.arguments[1]] : []); + case 'spyOnAllFunctions': + reporter.reportTransformation( + sourceFile, + node, + 'Found unsupported `jasmine.spyOnAllFunctions()`.', + ); + reporter.recordTodo('spyOnAllFunctions'); + addTodoComment( + node, + 'Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions().' + + ' Please spy on individual methods manually using vi.spyOn().', + ); + + return node; + } + + return node; +} + +export function transformCreateSpyObj( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if (!isJasmineCallExpression(node, 'createSpyObj')) { + return node; + } + + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `jasmine.createSpyObj()` to an object literal with `vi.fn()`.', + ); + + if (node.arguments.length < 2) { + reporter.recordTodo('createSpyObj-single-argument'); + addTodoComment( + node, + 'jasmine.createSpyObj called with a single argument is not supported for transformation.', + ); + + return node; + } + + const methods = node.arguments[1]; + const propertiesArg = node.arguments[2]; + let properties: ts.PropertyAssignment[] = []; + + if (ts.isArrayLiteralExpression(methods)) { + properties = createSpyObjWithArray(methods); + } else if (ts.isObjectLiteralExpression(methods)) { + properties = createSpyObjWithObject(methods); + } else { + reporter.recordTodo('createSpyObj-dynamic-variable'); + addTodoComment( + node, + 'Cannot transform jasmine.createSpyObj with a dynamic variable. Please migrate this manually.', + ); + + return node; + } + + if (propertiesArg) { + if (ts.isObjectLiteralExpression(propertiesArg)) { + properties.push(...(propertiesArg.properties as unknown as ts.PropertyAssignment[])); + } else { + reporter.recordTodo('createSpyObj-dynamic-property-map'); + addTodoComment( + node, + 'Cannot transform jasmine.createSpyObj with a dynamic property map. Please migrate this manually.', + ); + } + } + + return ts.factory.createObjectLiteralExpression(properties, true); +} + +function createSpyObjWithArray(methods: ts.ArrayLiteralExpression): ts.PropertyAssignment[] { + return methods.elements + .map((element) => { + if (ts.isStringLiteral(element)) { + return ts.factory.createPropertyAssignment( + ts.factory.createIdentifier(element.text), + createViCallExpression('fn'), + ); + } + + return undefined; + }) + .filter((p): p is ts.PropertyAssignment => !!p); +} + +function createSpyObjWithObject(methods: ts.ObjectLiteralExpression): ts.PropertyAssignment[] { + return methods.properties + .map((prop) => { + if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) { + const methodName = prop.name.text; + const returnValue = prop.initializer; + const mockFn = createViCallExpression('fn'); + const mockReturnValue = createPropertyAccess(mockFn, 'mockReturnValue'); + + return ts.factory.createPropertyAssignment( + ts.factory.createIdentifier(methodName), + ts.factory.createCallExpression(mockReturnValue, undefined, [returnValue]), + ); + } + + return undefined; + }) + .filter((p): p is ts.PropertyAssignment => !!p); +} + +export function transformSpyReset( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + ts.isCallExpression(node) && + ts.isPropertyAccessExpression(node.expression) && + ts.isIdentifier(node.expression.name) && + node.expression.name.text === 'reset' && + ts.isPropertyAccessExpression(node.expression.expression) + ) { + const callsPae = node.expression.expression; + if (ts.isIdentifier(callsPae.name) && callsPae.name.text === 'calls') { + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `spy.calls.reset()` to `.mockClear()`.', + ); + const spyIdentifier = callsPae.expression; + const newExpression = createPropertyAccess(spyIdentifier, 'mockClear'); + + return ts.factory.updateCallExpression(node, newExpression, node.typeArguments, []); + } + } + + return node; +} + +function getSpyIdentifierFromCalls(node: ts.PropertyAccessExpression): ts.Expression | undefined { + if (ts.isIdentifier(node.name) && node.name.text === 'calls') { + return node.expression; + } + + return undefined; +} + +function createMockedSpyMockProperty(spyIdentifier: ts.Expression): ts.PropertyAccessExpression { + const mockedSpy = ts.factory.createCallExpression( + createPropertyAccess('vi', 'mocked'), + undefined, + [spyIdentifier], + ); + + return createPropertyAccess(mockedSpy, 'mock'); +} + +export function transformSpyCallInspection( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + // mySpy.calls.mostRecent().args -> vi.mocked(mySpy).mock.lastCall + if ( + ts.isPropertyAccessExpression(node) && + ts.isIdentifier(node.name) && + node.name.text === 'args' + ) { + const mostRecentCall = node.expression; + if ( + ts.isCallExpression(mostRecentCall) && + ts.isPropertyAccessExpression(mostRecentCall.expression) + ) { + const mostRecentPae = mostRecentCall.expression; // mySpy.calls.mostRecent + if ( + ts.isIdentifier(mostRecentPae.name) && + mostRecentPae.name.text === 'mostRecent' && + ts.isPropertyAccessExpression(mostRecentPae.expression) + ) { + const spyIdentifier = getSpyIdentifierFromCalls(mostRecentPae.expression); + if (spyIdentifier) { + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `spy.calls.mostRecent().args` to `vi.mocked(spy).mock.lastCall`.', + ); + const mockProperty = createMockedSpyMockProperty(spyIdentifier); + + return createPropertyAccess(mockProperty, 'lastCall'); + } + } + } + } + + if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression)) { + const pae = node.expression; // e.g., mySpy.calls.count + const spyIdentifier = ts.isPropertyAccessExpression(pae.expression) + ? getSpyIdentifierFromCalls(pae.expression) + : undefined; + + if (spyIdentifier) { + const mockProperty = createMockedSpyMockProperty(spyIdentifier); + const callsProperty = createPropertyAccess(mockProperty, 'calls'); + + const callName = pae.name.text; + let newExpression: ts.Node | undefined; + let message: string | undefined; + + switch (callName) { + case 'any': + message = 'Transformed `spy.calls.any()` to a check on `mock.calls.length`.'; + newExpression = ts.factory.createBinaryExpression( + createPropertyAccess(callsProperty, 'length'), + ts.SyntaxKind.GreaterThanToken, + ts.factory.createNumericLiteral(0), + ); + break; + case 'count': + message = 'Transformed `spy.calls.count()` to `mock.calls.length`.'; + newExpression = createPropertyAccess(callsProperty, 'length'); + break; + case 'first': + message = 'Transformed `spy.calls.first()` to `mock.calls[0]`.'; + newExpression = ts.factory.createElementAccessExpression(callsProperty, 0); + break; + case 'all': + case 'allArgs': + message = `Transformed \`spy.calls.${callName}()\` to \`mock.calls\`.`; + newExpression = callsProperty; + break; + case 'argsFor': + message = 'Transformed `spy.calls.argsFor()` to `mock.calls[i]`.'; + newExpression = ts.factory.createElementAccessExpression( + callsProperty, + node.arguments[0], + ); + break; + case 'mostRecent': + if ( + !ts.isPropertyAccessExpression(node.parent) || + !ts.isIdentifier(node.parent.name) || + node.parent.name.text !== 'args' + ) { + reporter.recordTodo('mostRecent-without-args'); + addTodoComment( + node, + 'Direct usage of mostRecent() is not supported.' + + ' Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall.', + ); + } + + return node; + } + + if (newExpression && message) { + reporter.reportTransformation(sourceFile, node, message); + + return newExpression; + } + } + } + + return node; +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts new file mode 100644 index 000000000000..d54f2c271252 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts @@ -0,0 +1,263 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from '../test-file-transformer'; +import { RefactorReporter } from '../utils/refactor-reporter'; + +async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + const formattedExpected = await format(expected, { parser: 'typescript' }); + + expect(formattedTransformed).toBe(formattedExpected); +} + +describe('Jasmine to Vitest Transformer', () => { + describe('transformSpies', () => { + const testCases = [ + { + description: 'should transform spyOn(object, "method") to vi.spyOn(object, "method")', + input: `spyOn(service, 'myMethod');`, + expected: `vi.spyOn(service, 'myMethod');`, + }, + { + description: 'should transform .and.returnValue(...) to .mockReturnValue(...)', + input: `spyOn(service, 'myMethod').and.returnValue(42);`, + expected: `vi.spyOn(service, 'myMethod').mockReturnValue(42);`, + }, + { + description: 'should transform .and.returnValues() to chained .mockReturnValueOnce() calls', + input: `spyOn(service, 'myMethod').and.returnValues('a', 'b', 'c');`, + expected: `vi.spyOn(service, 'myMethod').mockReturnValueOnce('a').mockReturnValueOnce('b').mockReturnValueOnce('c');`, + }, + { + description: 'should transform .and.callFake(...) to .mockImplementation(...)', + input: `spyOn(service, 'myMethod').and.callFake(() => 'fake');`, + expected: `vi.spyOn(service, 'myMethod').mockImplementation(() => 'fake');`, + }, + { + description: 'should remove .and.callThrough()', + input: `spyOn(service, 'myMethod').and.callThrough();`, + expected: `vi.spyOn(service, 'myMethod');`, + }, + { + description: 'should transform jasmine.createSpy("name") to vi.fn()', + input: `const mySpy = jasmine.createSpy('mySpy');`, + expected: `const mySpy = vi.fn();`, + }, + { + description: 'should transform jasmine.createSpy("name", fn) to vi.fn(fn)', + input: `const mySpy = jasmine.createSpy('mySpy', () => 'foo');`, + expected: `const mySpy = vi.fn(() => 'foo');`, + }, + { + description: 'should transform spyOnProperty(object, "prop") to vi.spyOn(object, "prop")', + input: `spyOnProperty(service, 'myProp');`, + expected: `vi.spyOn(service, 'myProp');`, + }, + { + description: 'should transform .and.stub() to .mockImplementation(() => {})', + input: `spyOn(service, 'myMethod').and.stub();`, + expected: `vi.spyOn(service, 'myMethod').mockImplementation(() => {});`, + }, + { + description: 'should add a TODO for jasmine.spyOnAllFunctions(object)', + input: `jasmine.spyOnAllFunctions(myObject);`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). + jasmine.spyOnAllFunctions(myObject); + `, + }, + { + description: 'should handle chained calls on jasmine.createSpy()', + input: `const mySpy = jasmine.createSpy('mySpy').and.returnValue(true);`, + expected: `const mySpy = vi.fn().mockReturnValue(true);`, + }, + { + description: 'should handle .and.returnValues() with no arguments', + input: `spyOn(service, 'myMethod').and.returnValues();`, + expected: `vi.spyOn(service, 'myMethod');`, + }, + { + description: + 'should transform .and.throwError("message") to .mockImplementation(() => { throw new Error("message") })', + input: `spyOn(service, 'myMethod').and.throwError('Something went wrong');`, + expected: `vi.spyOn(service, 'myMethod').mockImplementation(() => { throw new Error('Something went wrong') });`, + }, + { + description: + 'should transform .and.throwError(new Error("message")) to .mockImplementation(() => { throw new Error("message") })', + input: `spyOn(service, 'myMethod').and.throwError(new Error('Custom Error'));`, + expected: `vi.spyOn(service, 'myMethod').mockImplementation(() => { throw new Error('Custom Error') });`, + }, + { + description: 'should transform .and.resolveTo(value) to .mockResolvedValue(value)', + input: `spyOn(service, 'myMethod').and.resolveTo('some value');`, + expected: `vi.spyOn(service, 'myMethod').mockResolvedValue('some value');`, + }, + { + description: 'should transform .and.rejectWith(error) to .mockRejectedValue(error)', + input: `spyOn(service, 'myMethod').and.rejectWith('some error');`, + expected: `vi.spyOn(service, 'myMethod').mockRejectedValue('some error');`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformCreateSpyObj', () => { + const testCases = [ + { + description: 'should transform jasmine.createSpyObj with an array of methods', + input: `const myService = jasmine.createSpyObj('MyService', ['methodA', 'methodB']);`, + expected: `const myService = { + methodA: vi.fn(), + methodB: vi.fn() + };`, + }, + { + description: 'should add a TODO if the second argument is not a literal', + input: `const myService = jasmine.createSpyObj('MyService', methodNames);`, + expected: ` + // TODO: vitest-migration: Cannot transform jasmine.createSpyObj with a dynamic variable. Please migrate this manually. + const myService = jasmine.createSpyObj('MyService', methodNames); + `, + }, + { + description: 'should transform jasmine.createSpyObj with an object of return values', + input: `const myService = jasmine.createSpyObj('MyService', { methodA: 'foo', methodB: 42 });`, + expected: `const myService = { + methodA: vi.fn().mockReturnValue('foo'), + methodB: vi.fn().mockReturnValue(42) + };`, + }, + { + description: + 'should transform jasmine.createSpyObj with an object of return values containing an asymmetric matcher', + input: `const myService = jasmine.createSpyObj('MyService', { methodA: jasmine.any(String) });`, + expected: `const myService = { + methodA: vi.fn().mockReturnValue(expect.any(String)) + };`, + }, + { + description: 'should add a TODO for jasmine.createSpyObj with only one argument', + input: `const myService = jasmine.createSpyObj('MyService');`, + expected: ` + // TODO: vitest-migration: jasmine.createSpyObj called with a single argument is not supported for transformation. + const myService = jasmine.createSpyObj('MyService'); + `, + }, + { + description: 'should transform jasmine.createSpyObj with a property map', + input: `const myService = jasmine.createSpyObj('MyService', ['methodA'], { propA: 'valueA' });`, + expected: `const myService = { + methodA: vi.fn(), + propA: 'valueA' + };`, + }, + { + description: 'should transform jasmine.createSpyObj with a method map and a property map', + input: `const myService = jasmine.createSpyObj('MyService', { methodA: 'foo' }, { propA: 'valueA' });`, + expected: `const myService = { + methodA: vi.fn().mockReturnValue('foo'), + propA: 'valueA' + };`, + }, + { + description: 'should ignore non-string literals in the method array', + input: `const myService = jasmine.createSpyObj('MyService', ['methodA', 123, someVar]);`, + expected: `const myService = { + methodA: vi.fn() + };`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformSpyReset', () => { + const testCases = [ + { + description: 'should transform spy.calls.reset() to spy.mockClear()', + input: `mySpy.calls.reset();`, + expected: `mySpy.mockClear();`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformSpyCallInspection', () => { + const testCases = [ + { + description: 'should transform spy.calls.any()', + input: `expect(mySpy.calls.any()).toBe(true);`, + expected: `expect(vi.mocked(mySpy).mock.calls.length > 0).toBe(true);`, + }, + { + description: 'should transform spy.calls.count()', + input: `expect(mySpy.calls.count()).toBe(1);`, + expected: `expect(vi.mocked(mySpy).mock.calls.length).toBe(1);`, + }, + { + description: 'should transform spy.calls.argsFor(0)', + input: `const args = mySpy.calls.argsFor(0);`, + expected: `const args = vi.mocked(mySpy).mock.calls[0];`, + }, + { + description: 'should transform spy.calls.allArgs()', + input: `const allArgs = mySpy.calls.allArgs();`, + expected: `const allArgs = vi.mocked(mySpy).mock.calls;`, + }, + { + description: 'should transform spy.calls.all()', + input: `const allCalls = mySpy.calls.all();`, + expected: `const allCalls = vi.mocked(mySpy).mock.calls;`, + }, + { + description: 'should transform spy.calls.mostRecent().args', + input: `const recentArgs = mySpy.calls.mostRecent().args;`, + expected: `const recentArgs = vi.mocked(mySpy).mock.lastCall;`, + }, + { + description: 'should transform spy.calls.first()', + input: `const firstCall = mySpy.calls.first();`, + expected: `const firstCall = vi.mocked(mySpy).mock.calls[0];`, + }, + { + description: 'should add a TODO for spy.calls.mostRecent() without .args', + input: `const mostRecent = mySpy.calls.mostRecent();`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: Direct usage of mostRecent() is not supported. Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall. +const mostRecent = mySpy.calls.mostRecent();`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); +}); From 699215953ed126f6aea2f457a4aaa1fec5da4f48 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 14 Oct 2025 06:06:09 +0000 Subject: [PATCH 1595/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 2 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 140 ++++++++++++++-------------- 3 files changed, 72 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index f63e8149ca50..771d9269ce9b 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": "16.0.2", + "@rollup/plugin-node-resolve": "16.0.3", "@stylistic/eslint-plugin": "^5.0.0", "@types/babel__core": "7.20.5", "@types/babel__generator": "^7.6.8", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 8f0bddbb3a36..45e4425513e7 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.42", + "rolldown": "1.0.0-beta.43", "sass": "1.93.2", "semver": "7.7.3", "source-map-support": "0.5.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d4380652b92..d267221933e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,8 +86,8 @@ importers: specifier: ^6.1.0 version: 6.1.0(rollup@4.52.4) '@rollup/plugin-node-resolve': - specifier: 16.0.2 - version: 16.0.2(rollup@4.52.4) + specifier: 16.0.3 + version: 16.0.3(rollup@4.52.4) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.4.0(eslint@9.37.0(jiti@2.6.1)) @@ -410,8 +410,8 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.42 - version: 1.0.0-beta.42 + specifier: 1.0.0-beta.43 + version: 1.0.0-beta.43 sass: specifier: 1.93.2 version: 1.93.2 @@ -2913,95 +2913,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.42': - resolution: {integrity: sha512-W5ZKF3TP3bOWuBfotAGp+UGjxOkGV7jRmIRbBA7NFjggx7Oi6vOmGDqpHEIX7kDCiry1cnIsWQaxNvWbMdkvzQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.43': + resolution: {integrity: sha512-TP8bcPOb1s6UmY5syhXrDn9k0XkYcw+XaoylTN4cJxf0JOVS2j682I3aTcpfT51hOFGr2bRwNKN9RZ19XxeQbA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.42': - resolution: {integrity: sha512-abw/wtgJA8OCgaTlL+xJxnN/Z01BwV1rfzIp5Hh9x+IIO6xOBfPsQ0nzi0+rWx3TyZ9FZXyC7bbC+5NpQ9EaXQ==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.43': + resolution: {integrity: sha512-kuVWnZsE4vEjMF/10SbSUyzucIW2zmdsqFghYMqy+fsjXnRHg0luTU6qWF8IqJf4Cbpm9NEZRnjIEPpAbdiSNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.42': - resolution: {integrity: sha512-Y/UrZIRVr8CvXVEB88t6PeC46r1K9/QdPEo2ASE/b/KBEyXIx+QbM6kv9QfQVWU2Atly2+SVsQzxQsIvuk3lZQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.43': + resolution: {integrity: sha512-u9Ps4sh6lcmJ3vgLtyEg/x4jlhI64U0mM93Ew+tlfFdLDe7yKyA+Fe80cpr2n1mNCeZXrvTSbZluKpXQ0GxLjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.42': - resolution: {integrity: sha512-zRM0oOk7BZiy6DoWBvdV4hyEg+j6+WcBZIMHVirMEZRu8hd18kZdJkg+bjVMfCEhwpWeFUfBfZ1qcaZ5UdYzlQ==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.43': + resolution: {integrity: sha512-h9lUtVtXgfbk/tnicMpbFfZ3DJvk5Zn2IvmlC1/e0+nUfwoc/TFqpfrRRqcNBXk/e+xiWMSKv6b0MF8N+Rtvlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': - resolution: {integrity: sha512-6RjFaC52QNwo7ilU8C5H7swbGlgfTkG9pudXwzr3VYyT18s0C9gLg3mvc7OMPIGqNxnQ0M5lU8j6aQCk2DTRVg==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': + resolution: {integrity: sha512-IX2C6bA6wM2rX/RvD75ko+ix9yxPKjKGGq7pOhB8wGI4Z4fqX5B1nDHga/qMDmAdCAR1m9ymzxkmqhm/AFYf7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': - resolution: {integrity: sha512-LMYHM5Sf6ROq+VUwHMDVX2IAuEsWTv4SnlFEedBnMGpvRuQ14lCmD4m5Q8sjyAQCgyha9oghdGoK8AEg1sXZKg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': + resolution: {integrity: sha512-mcjd57vEj+CEQbZAzUiaxNzNgwwgOpFtZBWcINm8DNscvkXl5b/s622Z1dqGNWSdrZmdjdC6LWMvu8iHM6v9sQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': - resolution: {integrity: sha512-/bNTYb9aKNhzdbPn3O4MK2aLv55AlrkUKPE4KNfBYjkoZUfDr4jWp7gsSlvTc5A/99V1RCm9axvt616ZzeXGyA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': + resolution: {integrity: sha512-Pa8QMwlkrztTo/1mVjZmPIQ44tCSci10TBqxzVBvXVA5CFh5EpiEi99fPSll2dHG2uT4dCOMeC6fIhyDdb0zXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': - resolution: {integrity: sha512-n/SLa4h342oyeGykZdch7Y3GNCNliRPL4k5wkeZ/5eQZs+c6/ZG1SHCJQoy7bZcmxiMyaXs9HoFmv1PEKrZgWg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': + resolution: {integrity: sha512-BgynXKMjeaX4AfWLARhOKDetBOOghnSiVRjAHVvhiAaDXgdQN8e65mSmXRiVoVtD3cHXx/cfU8Gw0p0K+qYKVQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': - resolution: {integrity: sha512-4PSd46sFzqpLHSGdaSViAb1mk55sCUMpJg+X8ittXaVocQsV3QLG/uydSH8RyL0ngHX5fy3D70LcCzlB15AgHw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': + resolution: {integrity: sha512-VIsoPlOB/tDSAw9CySckBYysoIBqLeps1/umNSYUD8pMtalJyzMTneAVI1HrUdf4ceFmQ5vARoLIXSsPwVFxNg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': - resolution: {integrity: sha512-BmWoeJJyeZXmZBcfoxG6J9+rl2G7eO47qdTkAzEegj4n3aC6CBIHOuDcbE8BvhZaEjQR0nh0nJrtEDlt65Q7Sw==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': + resolution: {integrity: sha512-YDXTxVJG67PqTQMKyjVJSddoPbSWJ4yRz/E3xzTLHqNrTDGY0UuhG8EMr8zsYnfH/0cPFJ3wjQd/hJWHuR6nkA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': - resolution: {integrity: sha512-2Ft32F7uiDTrGZUKws6CLNTlvTWHC33l4vpXrzUucf9rYtUThAdPCOt89Pmn13tNX6AulxjGEP2R0nZjTSW3eQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': + resolution: {integrity: sha512-3M+2DmorXvDuAIGYQ9Z93Oy1G9ETkejLwdXXb1uRTgKN9pMcu7N+KG2zDrJwqyxeeLIFE22AZGtSJm3PJbNu9Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': - resolution: {integrity: sha512-hC1kShXW/z221eG+WzQMN06KepvPbMBknF0iGR3VMYJLOe9gwnSTfGxFT5hf8XrPv7CEZqTWRd0GQpkSHRbGsw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': + resolution: {integrity: sha512-/B1j1pJs33y9ywtslOMxryUPHq8zIGu/OGEc2gyed0slimJ8fX2uR/SaJVhB4+NEgCFIeYDR4CX6jynAkeRuCA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': - resolution: {integrity: sha512-AICBYromawouGjj+GS33369E8Vwhy6UwhQEhQ5evfS8jPCsyVvoICJatbDGDGH01dwtVGLD5eDFzPicUOVpe4g==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': + resolution: {integrity: sha512-29oG1swCz7hNP+CQYrsM4EtylsKwuYzM8ljqbqC5TsQwmKat7P8ouDpImsqg/GZxFSXcPP9ezQm0Q0wQwGM3JA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': - resolution: {integrity: sha512-XpZ0M+tjoEiSc9c+uZR7FCnOI0uxDRNs1elGOMjeB0pUP1QmvVbZGYNsyLbLoP4u7e3VQN8rie1OQ8/mB6rcJg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': + resolution: {integrity: sha512-eWBV1Ef3gfGNehxVGCyXs7wLayRIgCmyItuCZwYYXW5bsk4EvR4n2GP5m3ohjnx7wdiY3nLmwQfH2Knb5gbNZw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.42': - resolution: {integrity: sha512-N7pQzk9CyE7q0bBN/q0J8s6Db279r5kUZc6d7/wWRe9/zXqC52HQovVyu6iXPIDY4BEzzgbVLhVFXrOuGJ22ZQ==} + '@rolldown/pluginutils@1.0.0-beta.43': + resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -3039,8 +3039,8 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@16.0.2': - resolution: {integrity: sha512-tCtHJ2BlhSoK4cCs25NMXfV7EALKr0jyasmqVCq3y9cBrKdmJhtsy1iTz36Xhk/O+pDJbzawxF4K6ZblqCnITQ==} + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -7751,8 +7751,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.42: - resolution: {integrity: sha512-xaPcckj+BbJhYLsv8gOqezc8EdMcKKe/gk8v47B0KPvgABDrQ0qmNPAiT/gh9n9Foe0bUkEv2qzj42uU5q1WRg==} + rolldown@1.0.0-beta.43: + resolution: {integrity: sha512-6RcqyRx0tY1MlRLnjXPp/849Rl/CPFhzpGGwNPEPjKwqBMqPq/Rbbkxasa8s0x+IkUk46ty4jazb5skZ/Vgdhw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -11453,51 +11453,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.42': + '@rolldown/binding-android-arm64@1.0.0-beta.43': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.42': + '@rolldown/binding-darwin-arm64@1.0.0-beta.43': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.42': + '@rolldown/binding-darwin-x64@1.0.0-beta.43': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.42': + '@rolldown/binding-freebsd-x64@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': optional: true - '@rolldown/pluginutils@1.0.0-beta.42': {} + '@rolldown/pluginutils@1.0.0-beta.43': {} '@rollup/plugin-alias@5.1.1(rollup@4.52.4)': optionalDependencies: @@ -11531,7 +11531,7 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/plugin-node-resolve@16.0.2(rollup@4.52.4)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.4)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.4) '@types/resolve': 1.20.2 @@ -17105,26 +17105,26 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.42: + rolldown@1.0.0-beta.43: dependencies: '@oxc-project/types': 0.94.0 - '@rolldown/pluginutils': 1.0.0-beta.42 + '@rolldown/pluginutils': 1.0.0-beta.43 ansis: 4.2.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.42 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.42 - '@rolldown/binding-darwin-x64': 1.0.0-beta.42 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.42 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.42 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.42 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.42 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.42 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.42 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.42 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.42 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.42 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 + '@rolldown/binding-android-arm64': 1.0.0-beta.43 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.43 + '@rolldown/binding-darwin-x64': 1.0.0-beta.43 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.43 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.43 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.43 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.43 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.43 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.43 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.43 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.43 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.43 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.43 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.43 rollup-license-plugin@3.0.2: dependencies: From d6830d2b1eb136c6e695afeb7bcdcab6935d721a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 14 Oct 2025 13:14:08 +0000 Subject: [PATCH 1596/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 - package.json | 2 +- pnpm-lock.yaml | 408 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 11 files changed, 277 insertions(+), 279 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index bdfbf99221f0..82954fae4cf2 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/branch-manager@06bada8d42711ac8db590552fa8103777baa7ccf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 785c20e05d8f..5c526410fcf4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf 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@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - 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 a4e64b00aaf2..384e32711ea8 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/pull-request-labeling@06bada8d42711ac8db590552fa8103777baa7ccf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/post-approval-changes@06bada8d42711ac8db590552fa8103777baa7ccf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 1f1c6ccc84f2..f4291b61fb44 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@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + - uses: angular/dev-infra/github-actions/feature-request@06bada8d42711ac8db590552fa8103777baa7ccf with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 894485983a8d..c76d450b1c21 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@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - 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@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - 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 e548c048b443..4a253ac2c89d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/linting/licenses@06bada8d42711ac8db590552fa8103777baa7ccf - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf - 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@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf - 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/MODULE.bazel b/MODULE.bazel index d6b1be391f7a..6f4bac234508 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "56543b10ddb9941c76b4413cc24ec3fa7a43cf5c", + commit = "06bada8d42711ac8db590552fa8103777baa7ccf", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index dbc2fc3716d4..6048305ccfb2 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -20,14 +20,12 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.22.1/MODULE.bazel": "499ce65b6126f344f9a630040b9db91b36b20c6d1436026120067d922c2d69bd", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/MODULE.bazel": "9b437a9ec25a619304940434fa03b8d41248213eb7009da2c898f3d6a4075ef3", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/source.json": "7b4cac4e61bae4262e7f67f6bec0b200fcb9060044f12e84a3bc37e0be245de7", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/source.json": "45fa9603cdfe100575a12d8b65fa425fe8713dd8c9f0cdf802168b670bc0e299", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", - "https://bcr.bazel.build/modules/aspect_rules_js/2.6.0/MODULE.bazel": "5a6f8dbc5b170769453f1819d469fe54b0e4b86a0e82e13fde8e5a45438a1890", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/source.json": "59933fb8ddabd9740a3c12ff5552f06f2b8d68c3633883c681c757bf227c3763", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", diff --git a/package.json b/package.json index 771d9269ce9b..c5adf4ed3ce5 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.7", "@angular/localize": "21.0.0-next.7", "@angular/material": "21.0.0-next.8", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#88fadb5235577583689a2b0979b9b724b383b963", "@angular/platform-browser": "21.0.0-next.7", "@angular/platform-server": "21.0.0-next.7", "@angular/router": "21.0.0-next.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d267221933e6..3eb0df7bff85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.8 version: 21.0.0-next.8(05250061371eb0125d7904add36a5bf0) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e877c7e4fe14a67d425f5af705bf583fbbba9967 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.20.0) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#88fadb5235577583689a2b0979b9b724b383b963 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88fadb5235577583689a2b0979b9b724b383b963(@modelcontextprotocol/sdk@1.20.0) '@angular/platform-browser': specifier: 21.0.0-next.7 version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -369,10 +369,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.18 - version: 5.1.18(@types/node@24.7.0) + version: 5.1.18(@types/node@24.7.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.9 - version: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -473,10 +473,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.8.6 - version: 7.8.6(@types/node@24.7.0) + version: 7.8.6(@types/node@24.7.2) '@listr2/prompt-adapter-inquirer': specifier: 3.0.4 - version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.0))(@types/node@24.7.0)(listr2@9.0.4) + version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4) '@modelcontextprotocol/sdk': specifier: 1.20.0 version: 1.20.0 @@ -854,7 +854,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.8.6 - version: 7.8.6(@types/node@24.7.0) + version: 7.8.6(@types/node@24.7.2) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/e877c7e4fe14a67d425f5af705bf583fbbba9967': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e877c7e4fe14a67d425f5af705bf583fbbba9967} - version: 0.0.0-56543b10ddb9941c76b4413cc24ec3fa7a43cf5c + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88fadb5235577583689a2b0979b9b724b383b963': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88fadb5235577583689a2b0979b9b724b383b963} + version: 0.0.0-06bada8d42711ac8db590552fa8103777baa7ccf hasBin: true '@angular/platform-browser@21.0.0-next.7': @@ -1901,23 +1901,23 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.3.0': - resolution: {integrity: sha512-rVZgf4FszXPSFVIeWLE8ruLU2JDmPXw4XgghcC0x/lK9veGJIyu+DvyumjreVhW/RwD3E5cNPWxQunzylhf/6w==} + '@firebase/ai@2.4.0': + resolution: {integrity: sha512-YilG6AJ/nYpCKtxZyvEzBRAQv5bU+2tBOKX4Ps0rNNSdxN39aT37kGhjATbk1kq1z5Lq7mkWglw/ajAF3lOWUg==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x '@firebase/app-types': 0.x - '@firebase/analytics-compat@0.2.24': - resolution: {integrity: sha512-jE+kJnPG86XSqGQGhXXYt1tpTbCTED8OQJ/PQ90SEw14CuxRxx/H+lFbWA1rlFtFSsTCptAJtgyRBwr/f00vsw==} + '@firebase/analytics-compat@0.2.25': + resolution: {integrity: sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==} peerDependencies: '@firebase/app-compat': 0.x '@firebase/analytics-types@0.8.3': resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==} - '@firebase/analytics@0.10.18': - resolution: {integrity: sha512-iN7IgLvM06iFk8BeFoWqvVpRFW3Z70f+Qe2PfCJ7vPIgLPjHXDE774DhCT5Y2/ZU/ZbXPDPD60x/XPWEoZLNdg==} + '@firebase/analytics@0.10.19': + resolution: {integrity: sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==} peerDependencies: '@firebase/app': 0.x @@ -1939,15 +1939,15 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/app-compat@0.5.3': - resolution: {integrity: sha512-rRK9YOvgsAU/+edjgubL1q1FyCMjBZZs+fAWtD36tklawkh6WZV07sNLVSceuni+a21oby6xoad+3R8dfztOrA==} + '@firebase/app-compat@0.5.4': + resolution: {integrity: sha512-T7ifGmb+awJEcp542Ek4HtNfBxcBrnuk1ggUdqyFEdsXHdq7+wVlhvE6YukTL7NS8hIkEfL7TMAPx/uCNqt30g==} engines: {node: '>=20.0.0'} '@firebase/app-types@0.9.3': resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - '@firebase/app@0.14.3': - resolution: {integrity: sha512-by1leTfZkwGycPKRWpc+p5/IhpnOj8zaScVi4RRm9fMoFYS3IE87Wzx1Yf/ruVYowXOEuLqYY3VmJw5tU3+0Bg==} + '@firebase/app@0.14.4': + resolution: {integrity: sha512-pUxEGmR+uu21OG/icAovjlu1fcYJzyVhhT0rsCrn+zi+nHtrS43Bp9KPn9KGa4NMspCUE++nkyiqziuIvJdwzw==} engines: {node: '>=20.0.0'} '@firebase/auth-compat@0.6.0': @@ -2142,8 +2142,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.22.0': - resolution: {integrity: sha512-siETS3zTm3EGpTT4+BFc1z20xXBYfueD3gCYfxkOjuAKRk8lt8TJevDHi3zepn1oSI6NhG/LZvy0i+Q3qheObg==} + '@google/genai@1.24.0': + resolution: {integrity: sha512-e3jZF9Dx3dDaDCzygdMuYByHI2xJZ0PaD3r2fRgHZe2IOwBnmJ/Tu5Lt/nefTCxqr1ZnbcbQK9T13d8U/9UMWg==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -3440,8 +3440,8 @@ packages: '@types/node@22.18.10': resolution: {integrity: sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==} - '@types/node@24.7.0': - resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} + '@types/node@24.7.2': + resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -5399,8 +5399,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase@12.3.0: - resolution: {integrity: sha512-/JVja0IDO8zPETGv4TvvBwo7RwcQFz+RQ3JBETNtUSeqsDdI9G7fhRTkCy1sPKnLzW0xpm/kL8GOj6ncndTT3g==} + firebase@12.4.0: + resolution: {integrity: sha512-/chNgDQ6ppPPGOQO4jctxOa/5JeQxuhaxA7Y90K0I+n/wPfoO8mRveedhVUdo7ExLcWUivnnow/ouSLYSI5Icw==} flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} @@ -9326,13 +9326,13 @@ 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/e877c7e4fe14a67d425f5af705bf583fbbba9967(@modelcontextprotocol/sdk@1.20.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88fadb5235577583689a2b0979b9b724b383b963(@modelcontextprotocol/sdk@1.20.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.22.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.8.6(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@google/genai': 1.24.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 7.8.6(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) '@octokit/auth-app': 8.1.1 '@octokit/core': 7.0.5 '@octokit/graphql': 9.0.2 @@ -9350,7 +9350,7 @@ snapshots: '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.0 '@types/jasmine': 5.1.9 - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -9364,7 +9364,7 @@ snapshots: ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.3.0 + firebase: 12.4.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) jasmine: 5.12.0 @@ -10322,9 +10322,9 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.3.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/ai@2.4.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/app-check-interop-types': 0.3.3 '@firebase/app-types': 0.9.3 '@firebase/component': 0.7.0 @@ -10332,11 +10332,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/analytics-compat@0.2.24(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/analytics': 0.10.18(@firebase/app@0.14.3) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.4) '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10345,20 +10345,20 @@ snapshots: '@firebase/analytics-types@0.8.3': {} - '@firebase/analytics@0.10.18(@firebase/app@0.14.3)': + '@firebase/analytics@0.10.19(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-check': 0.11.0(@firebase/app@0.14.3) + '@firebase/app-check': 0.11.0(@firebase/app@0.14.4) '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10370,17 +10370,17 @@ snapshots: '@firebase/app-check-types@0.5.3': {} - '@firebase/app-check@0.11.0(@firebase/app@0.14.3)': + '@firebase/app-check@0.11.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-compat@0.5.3': + '@firebase/app-compat@0.5.4': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10388,7 +10388,7 @@ snapshots: '@firebase/app-types@0.9.3': {} - '@firebase/app@0.14.3': + '@firebase/app@0.14.4': dependencies: '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10396,10 +10396,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 - '@firebase/auth': 1.11.0(@firebase/app@0.14.3) + '@firebase/app-compat': 0.5.4 + '@firebase/auth': 1.11.0(@firebase/app@0.14.4) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -10416,9 +10416,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.11.0(@firebase/app@0.14.3)': + '@firebase/auth@1.11.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10429,9 +10429,9 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/data-connect@0.3.11(@firebase/app@0.14.3)': + '@firebase/data-connect@0.3.11(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10462,11 +10462,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.3) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.4) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10479,9 +10479,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.2(@firebase/app@0.14.3)': + '@firebase/firestore@4.9.2(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10490,11 +10490,11 @@ snapshots: '@grpc/proto-loader': 0.7.15 tslib: 2.8.1 - '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/functions': 0.13.1(@firebase/app@0.14.3) + '@firebase/functions': 0.13.1(@firebase/app@0.14.4) '@firebase/functions-types': 0.6.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10503,9 +10503,9 @@ snapshots: '@firebase/functions-types@0.6.3': {} - '@firebase/functions@0.13.1(@firebase/app@0.14.3)': + '@firebase/functions@0.13.1(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/app-check-interop-types': 0.3.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 @@ -10513,11 +10513,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10529,9 +10529,9 @@ snapshots: dependencies: '@firebase/app-types': 0.9.3 - '@firebase/installations@0.6.19(@firebase/app@0.14.3)': + '@firebase/installations@0.6.19(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 idb: 7.1.1 @@ -10541,11 +10541,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/messaging': 0.12.23(@firebase/app@0.14.3) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.4) '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: @@ -10553,22 +10553,22 @@ snapshots: '@firebase/messaging-interop-types@0.2.3': {} - '@firebase/messaging@0.12.23(@firebase/app@0.14.3)': + '@firebase/messaging@0.12.23(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/messaging-interop-types': 0.2.3 '@firebase/util': 1.13.0 idb: 7.1.1 tslib: 2.8.1 - '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/performance': 0.7.9(@firebase/app@0.14.3) + '@firebase/performance': 0.7.9(@firebase/app@0.14.4) '@firebase/performance-types': 0.2.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10577,22 +10577,22 @@ snapshots: '@firebase/performance-types@0.2.3': {} - '@firebase/performance@0.7.9(@firebase/app@0.14.3)': + '@firebase/performance@0.7.9(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 web-vitals: 4.2.4 - '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3)': + '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.3) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.4) '@firebase/remote-config-types': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10601,20 +10601,20 @@ snapshots: '@firebase/remote-config-types@0.5.0': {} - '@firebase/remote-config@0.7.0(@firebase/app@0.14.3)': + '@firebase/remote-config@0.7.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3)': + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': dependencies: - '@firebase/app-compat': 0.5.3 + '@firebase/app-compat': 0.5.4 '@firebase/component': 0.7.0 - '@firebase/storage': 0.14.0(@firebase/app@0.14.3) + '@firebase/storage': 0.14.0(@firebase/app@0.14.4) '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10627,9 +10627,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/storage@0.14.0(@firebase/app@0.14.3)': + '@firebase/storage@0.14.0(@firebase/app@0.14.4)': dependencies: - '@firebase/app': 0.14.3 + '@firebase/app': 0.14.4 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10701,7 +10701,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.22.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.24.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -10752,128 +10752,128 @@ snapshots: '@inquirer/ansi@1.0.0': {} - '@inquirer/checkbox@4.2.4(@types/node@24.7.0)': + '@inquirer/checkbox@4.2.4(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/confirm@5.1.18(@types/node@24.7.0)': + '@inquirer/confirm@5.1.18(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/core@10.2.2(@types/node@24.7.0)': + '@inquirer/core@10.2.2(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/editor@4.2.20(@types/node@24.7.0)': + '@inquirer/editor@4.2.20(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/external-editor': 1.0.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/external-editor': 1.0.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/expand@4.0.20(@types/node@24.7.0)': + '@inquirer/expand@4.0.20(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/external-editor@1.0.2(@types/node@24.7.0)': + '@inquirer/external-editor@1.0.2(@types/node@24.7.2)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@inquirer/figures@1.0.13': {} - '@inquirer/input@4.2.4(@types/node@24.7.0)': + '@inquirer/input@4.2.4(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/number@3.0.20(@types/node@24.7.0)': + '@inquirer/number@3.0.20(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/password@4.0.20(@types/node@24.7.0)': + '@inquirer/password@4.0.20(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 - - '@inquirer/prompts@7.8.6(@types/node@24.7.0)': - dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@24.7.0) - '@inquirer/confirm': 5.1.18(@types/node@24.7.0) - '@inquirer/editor': 4.2.20(@types/node@24.7.0) - '@inquirer/expand': 4.0.20(@types/node@24.7.0) - '@inquirer/input': 4.2.4(@types/node@24.7.0) - '@inquirer/number': 3.0.20(@types/node@24.7.0) - '@inquirer/password': 4.0.20(@types/node@24.7.0) - '@inquirer/rawlist': 4.1.8(@types/node@24.7.0) - '@inquirer/search': 3.1.3(@types/node@24.7.0) - '@inquirer/select': 4.3.4(@types/node@24.7.0) + '@types/node': 24.7.2 + + '@inquirer/prompts@7.8.6(@types/node@24.7.2)': + dependencies: + '@inquirer/checkbox': 4.2.4(@types/node@24.7.2) + '@inquirer/confirm': 5.1.18(@types/node@24.7.2) + '@inquirer/editor': 4.2.20(@types/node@24.7.2) + '@inquirer/expand': 4.0.20(@types/node@24.7.2) + '@inquirer/input': 4.2.4(@types/node@24.7.2) + '@inquirer/number': 3.0.20(@types/node@24.7.2) + '@inquirer/password': 4.0.20(@types/node@24.7.2) + '@inquirer/rawlist': 4.1.8(@types/node@24.7.2) + '@inquirer/search': 3.1.3(@types/node@24.7.2) + '@inquirer/select': 4.3.4(@types/node@24.7.2) optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/rawlist@4.1.8(@types/node@24.7.0)': + '@inquirer/rawlist@4.1.8(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/search@3.1.3(@types/node@24.7.0)': + '@inquirer/search@3.1.3(@types/node@24.7.2)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/select@4.3.4(@types/node@24.7.0)': + '@inquirer/select@4.3.4(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.0) + '@inquirer/core': 10.2.2(@types/node@24.7.2) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/type': 3.0.8(@types/node@24.7.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 - '@inquirer/type@3.0.8(@types/node@24.7.0)': + '@inquirer/type@3.0.8(@types/node@24.7.2)': optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 '@isaacs/balanced-match@4.0.1': {} @@ -10964,10 +10964,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.0))(@types/node@24.7.0)(listr2@9.0.4)': + '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4)': dependencies: - '@inquirer/prompts': 7.8.6(@types/node@24.7.0) - '@inquirer/type': 3.0.8(@types/node@24.7.0) + '@inquirer/prompts': 7.8.6(@types/node@24.7.2) + '@inquirer/type': 3.0.8(@types/node@24.7.2) listr2: 9.0.4 transitivePeerDependencies: - '@types/node' @@ -11937,7 +11937,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.7.0': + '@types/node@24.7.2': dependencies: undici-types: 7.14.0 @@ -12312,11 +12312,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12331,7 +12331,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12343,13 +12343,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -14465,35 +14465,35 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase@12.3.0: + firebase@12.4.0: dependencies: - '@firebase/ai': 2.3.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/analytics': 0.10.18(@firebase/app@0.14.3) - '@firebase/analytics-compat': 0.2.24(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/app': 0.14.3 - '@firebase/app-check': 0.11.0(@firebase/app@0.14.3) - '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/app-compat': 0.5.3 + '@firebase/ai': 2.4.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.4) + '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/app': 0.14.4 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.4) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/app-compat': 0.5.4 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.11.0(@firebase/app@0.14.3) - '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/data-connect': 0.3.11(@firebase/app@0.14.3) + '@firebase/auth': 1.11.0(@firebase/app@0.14.4) + '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/data-connect': 0.3.11(@firebase/app@0.14.4) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.3) - '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/functions': 0.13.1(@firebase/app@0.14.3) - '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/installations': 0.6.19(@firebase/app@0.14.3) - '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) - '@firebase/messaging': 0.12.23(@firebase/app@0.14.3) - '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/performance': 0.7.9(@firebase/app@0.14.3) - '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.3) - '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.3)(@firebase/app@0.14.3) - '@firebase/storage': 0.14.0(@firebase/app@0.14.3) - '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.3)(@firebase/app-types@0.9.3)(@firebase/app@0.14.3) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.4) + '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/functions': 0.13.1(@firebase/app@0.14.4) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.4) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/performance': 0.7.9(@firebase/app@0.14.4) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.4) + '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) + '@firebase/storage': 0.14.0(@firebase/app@0.14.4) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) '@firebase/util': 1.13.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -18285,13 +18285,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18306,7 +18306,7 @@ snapshots: - tsx - yaml - vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -18315,7 +18315,7 @@ snapshots: rollup: 4.52.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18324,11 +18324,11 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.7.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18346,11 +18346,11 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.7.0 + '@types/node': 24.7.2 jsdom: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index c8a14ada1b12..72752797a9d9 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#db667af5d09fd8811d9d76167cc9541125635698", - "@angular/cdk": "github:angular/cdk-builds#f6ac1da38b8d3f1f52df5c78162b3303bf82c413", - "@angular/common": "github:angular/common-builds#1ca7056aa6c8e99826b6036270130f8900f268f7", - "@angular/compiler": "github:angular/compiler-builds#d712519539322f6d24e9ffa2bb9668ce900ba6be", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#08f672beeefc0214666f8940ba301325023fe673", - "@angular/core": "github:angular/core-builds#fd8977cf6abd2ff08e6b383eedaf2b2107bdbba3", - "@angular/forms": "github:angular/forms-builds#9262b9a2784ef207ef161f94d3e95a24dd6ae818", - "@angular/language-service": "github:angular/language-service-builds#4a1855ad80b47eacc81dbe5504bd0d5ceefcf09d", - "@angular/localize": "github:angular/localize-builds#413a59e8d9704ede6e7e728f0b524e602db9231a", - "@angular/material": "github:angular/material-builds#40030f2bc1656b9cb7fb1e4396d57d498f45c142", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#501c9fdf23257c74f1978e2a9906f5d61fc61430", - "@angular/platform-browser": "github:angular/platform-browser-builds#a4694dd30446162ce52bbad2b9dcbc69ce82d814", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#65c306b51b0ac57d59ac12f5b06173d0acfb9830", - "@angular/platform-server": "github:angular/platform-server-builds#db278c5ef906a7295b065f56250d9ac80d7f1051", - "@angular/router": "github:angular/router-builds#21391d6439b48a08ee4944f76b5132cce1b9a8ed", - "@angular/service-worker": "github:angular/service-worker-builds#4880f8adeb8a9eeb7ed2ec47712a3d28d1a53082" + "@angular/animations": "github:angular/animations-builds#7070afd64697da977c62dff22f595942801f7572", + "@angular/cdk": "github:angular/cdk-builds#a0c3251b8c8f9abd84052bab9848202040eb5c7c", + "@angular/common": "github:angular/common-builds#306102d79cf0e9f35e2febe229298981e2cfb1f4", + "@angular/compiler": "github:angular/compiler-builds#84d3e2b8297009f309517cda82e7b702083dfc01", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#f42cf0e9a0a05110cd8d6c808c9822b39a4e39af", + "@angular/core": "github:angular/core-builds#38ecd435213032319bfa07df5fd77ba90f0951da", + "@angular/forms": "github:angular/forms-builds#a7babdf6673029639efa6a327f987087ba919f7e", + "@angular/language-service": "github:angular/language-service-builds#6bfdeb0b836306dd474bc64df0935113e0ec9eb6", + "@angular/localize": "github:angular/localize-builds#989ca8002870fd3ced228cd775508c63e1927fc2", + "@angular/material": "github:angular/material-builds#0502b5d1b0956ae9095936850cb52c380a16349a", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#95e30cf4fcd492646d546182f1497184ddd70e39", + "@angular/platform-browser": "github:angular/platform-browser-builds#eed87be516e083239b8b439b4f289f7ce38a4fb9", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#141b37b0d5129db61bbf32197821a20fe51d2966", + "@angular/platform-server": "github:angular/platform-server-builds#24ef840326de26f70140c4409f4b72016c61c4ac", + "@angular/router": "github:angular/router-builds#2b2cb81709725d730a0c04333d245968c90ec122", + "@angular/service-worker": "github:angular/service-worker-builds#233da683f00ed6ac3057b3459b78a12a0165faa4" } } From 629f5cb181fee562645baf02b44ebb3b39f3fb06 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:41:49 -0400 Subject: [PATCH 1597/2162] feat(@schematics/angular): add misc transformations to jasmine-to-vitest schematic This commit adds transformers for miscellaneous Jasmine APIs and handles unsupported features. Coverage includes: - Timer mocks (jasmine.clock) - The fail() function - jasmine.DEFAULT_TIMEOUT_INTERVAL It also includes the logic to identify and add TODO comments for any unsupported Jasmine APIs, ensuring a safe migration. --- .../jasmine-vitest/test-file-transformer.ts | 22 +- .../transformers/jasmine-misc.ts | 250 ++++++++++++++++++ .../transformers/jasmine-misc_spec.ts | 230 ++++++++++++++++ 3 files changed, 501 insertions(+), 1 deletion(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index 816c0f6326da..b23dc3583b6c 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -24,6 +24,14 @@ import { transformWithContext, transformtoHaveBeenCalledBefore, } from './transformers/jasmine-matcher'; +import { + transformDefaultTimeoutInterval, + transformFail, + transformGlobalFunctions, + transformTimerMocks, + transformUnknownJasmineProperties, + transformUnsupportedJasmineCalls, +} from './transformers/jasmine-misc'; import { transformCreateSpyObj, transformSpies, @@ -80,13 +88,23 @@ export function transformJasmineToVitest( transformDoneCallback, transformtoHaveBeenCalledBefore, transformToHaveClass, + transformTimerMocks, + transformFocusedAndSkippedTests, + transformPending, + transformDoneCallback, + transformGlobalFunctions, + transformUnsupportedJasmineCalls, ]; for (const transformer of transformations) { transformedNode = transformer(transformedNode, refactorCtx); } } else if (ts.isPropertyAccessExpression(transformedNode)) { - const transformations = [transformAsymmetricMatchers, transformSpyCallInspection]; + const transformations = [ + transformAsymmetricMatchers, + transformSpyCallInspection, + transformUnknownJasmineProperties, + ]; for (const transformer of transformations) { transformedNode = transformer(transformedNode, refactorCtx); } @@ -95,6 +113,8 @@ export function transformJasmineToVitest( transformCalledOnceWith, transformArrayWithExactContents, transformExpectNothing, + transformFail, + transformDefaultTimeoutInterval, ]; for (const transformer of statementTransformers) { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts new file mode 100644 index 000000000000..effcf506e1c2 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts @@ -0,0 +1,250 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains transformers for miscellaneous Jasmine APIs that don't + * fit into other categories. This includes timer mocks (`jasmine.clock`), the `fail()` + * function, and configuration settings like `jasmine.DEFAULT_TIMEOUT_INTERVAL`. It also + * includes logic to identify and add TODO comments for unsupported Jasmine features. + */ + +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { createViCallExpression } from '../utils/ast-helpers'; +import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; +import { addTodoComment } from '../utils/comment-helpers'; +import { RefactorContext } from '../utils/refactor-context'; + +export function transformTimerMocks( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + !ts.isCallExpression(node) || + !ts.isPropertyAccessExpression(node.expression) || + !ts.isIdentifier(node.expression.name) + ) { + return node; + } + + const pae = node.expression; + const clockCall = pae.expression; + if (!isJasmineCallExpression(clockCall, 'clock')) { + return node; + } + + let newMethodName: string | undefined; + switch (pae.name.text) { + case 'install': + newMethodName = 'useFakeTimers'; + break; + case 'tick': + newMethodName = 'advanceTimersByTime'; + break; + case 'uninstall': + newMethodName = 'useRealTimers'; + break; + case 'mockDate': + newMethodName = 'setSystemTime'; + break; + } + + if (newMethodName) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed \`jasmine.clock().${pae.name.text}\` to \`vi.${newMethodName}\`.`, + ); + const newArgs = newMethodName === 'useFakeTimers' ? [] : node.arguments; + + return createViCallExpression(newMethodName, newArgs); + } + + return node; +} + +export function transformFail(node: ts.Node, { sourceFile, reporter }: RefactorContext): ts.Node { + if ( + ts.isExpressionStatement(node) && + ts.isCallExpression(node.expression) && + ts.isIdentifier(node.expression.expression) && + node.expression.expression.text === 'fail' + ) { + reporter.reportTransformation(sourceFile, node, 'Transformed `fail()` to `throw new Error()`.'); + const reason = node.expression.arguments[0]; + + return ts.factory.createThrowStatement( + ts.factory.createNewExpression( + ts.factory.createIdentifier('Error'), + undefined, + reason ? [reason] : [], + ), + ); + } + + return node; +} + +export function transformDefaultTimeoutInterval( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + ts.isExpressionStatement(node) && + ts.isBinaryExpression(node.expression) && + node.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken + ) { + const assignment = node.expression; + if ( + ts.isPropertyAccessExpression(assignment.left) && + ts.isIdentifier(assignment.left.expression) && + assignment.left.expression.text === 'jasmine' && + assignment.left.name.text === 'DEFAULT_TIMEOUT_INTERVAL' + ) { + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `jasmine.DEFAULT_TIMEOUT_INTERVAL` to `vi.setConfig()`.', + ); + const timeoutValue = assignment.right; + const setConfigCall = createViCallExpression('setConfig', [ + ts.factory.createObjectLiteralExpression( + [ts.factory.createPropertyAssignment('testTimeout', timeoutValue)], + false, + ), + ]); + + return ts.factory.createExpressionStatement(setConfigCall); + } + } + + return node; +} + +export function transformGlobalFunctions( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + ts.isCallExpression(node) && + ts.isIdentifier(node.expression) && + (node.expression.text === 'setSpecProperty' || node.expression.text === 'setSuiteProperty') + ) { + const functionName = node.expression.text; + reporter.reportTransformation( + sourceFile, + node, + `Found unsupported global function \`${functionName}\`.`, + ); + reporter.recordTodo(functionName); + addTodoComment( + node, + `Unsupported global function \`${functionName}\` found. This function is used for custom reporters in Jasmine ` + + 'and has no direct equivalent in Vitest.', + ); + } + + return node; +} + +const JASMINE_UNSUPPORTED_CALLS = new Map([ + [ + 'addMatchers', + 'jasmine.addMatchers is not supported. Please manually migrate to expect.extend().', + ], + [ + 'addCustomEqualityTester', + 'jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters().', + ], + [ + 'mapContaining', + 'jasmine.mapContaining is not supported. Vitest does not have a built-in matcher for Maps.' + + ' Please manually assert the contents of the Map.', + ], + [ + 'setContaining', + 'jasmine.setContaining is not supported. Vitest does not have a built-in matcher for Sets.' + + ' Please manually assert the contents of the Set.', + ], +]); + +export function transformUnsupportedJasmineCalls( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + const methodName = getJasmineMethodName(node); + if (!methodName) { + return node; + } + + const message = JASMINE_UNSUPPORTED_CALLS.get(methodName); + if (message) { + reporter.reportTransformation( + sourceFile, + node, + `Found unsupported call \`jasmine.${methodName}\`.`, + ); + reporter.recordTodo(methodName); + addTodoComment(node, message); + } + + return node; +} + +// If any additional properties are added to transforms, they should also be added to this list. +const HANDLED_JASMINE_PROPERTIES = new Set([ + // Spies + 'createSpy', + 'createSpyObj', + 'spyOnAllFunctions', + // Clock + 'clock', + // Matchers + 'any', + 'anything', + 'stringMatching', + 'objectContaining', + 'arrayContaining', + 'arrayWithExactContents', + 'truthy', + 'falsy', + 'empty', + 'notEmpty', + 'mapContaining', + 'setContaining', + // Other + 'DEFAULT_TIMEOUT_INTERVAL', + 'addMatchers', + 'addCustomEqualityTester', +]); + +export function transformUnknownJasmineProperties( + node: ts.Node, + { sourceFile, reporter }: RefactorContext, +): ts.Node { + if ( + ts.isPropertyAccessExpression(node) && + ts.isIdentifier(node.expression) && + node.expression.text === 'jasmine' + ) { + const propName = node.name.text; + if (!HANDLED_JASMINE_PROPERTIES.has(propName)) { + reporter.reportTransformation( + sourceFile, + node, + `Found unknown jasmine property \`jasmine.${propName}\`.`, + ); + reporter.recordTodo(`unknown-jasmine-property: ${propName}`); + addTodoComment( + node, + `Unsupported jasmine property "${propName}" found. Please migrate this manually.`, + ); + } + } + + return node; +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts new file mode 100644 index 000000000000..6b2a92b57fd1 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts @@ -0,0 +1,230 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from '../test-file-transformer'; +import { RefactorReporter } from '../utils/refactor-reporter'; + +async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + const formattedExpected = await format(expected, { parser: 'typescript' }); + + expect(formattedTransformed).toBe(formattedExpected); +} + +describe('Jasmine to Vitest Transformer', () => { + describe('transformTimerMocks', () => { + const testCases = [ + { + description: 'should transform jasmine.clock().install() to vi.useFakeTimers()', + input: `jasmine.clock().install();`, + expected: `vi.useFakeTimers();`, + }, + { + description: 'should transform jasmine.clock().tick(100) to vi.advanceTimersByTime(100)', + input: `jasmine.clock().tick(100);`, + expected: `vi.advanceTimersByTime(100);`, + }, + { + description: 'should transform jasmine.clock().uninstall() to vi.useRealTimers()', + input: `jasmine.clock().uninstall();`, + expected: `vi.useRealTimers();`, + }, + { + description: 'should transform jasmine.clock().mockDate(date) to vi.setSystemTime(date)', + input: `jasmine.clock().mockDate(new Date('2025-01-01'));`, + expected: `vi.setSystemTime(new Date('2025-01-01'));`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformFail', () => { + const testCases = [ + { + description: 'should transform fail() to throw new Error()', + input: `fail('This should not happen');`, + expected: `throw new Error('This should not happen');`, + }, + { + description: 'should transform fail() without a message to throw new Error()', + input: `fail();`, + expected: `throw new Error();`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformDefaultTimeoutInterval', () => { + const testCases = [ + { + description: 'should transform jasmine.DEFAULT_TIMEOUT_INTERVAL', + input: `jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;`, + expected: `vi.setConfig({ testTimeout: 10000 });`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformAddMatchers', () => { + const testCases = [ + { + description: 'should add a TODO for jasmine.addMatchers', + input: ` + jasmine.addMatchers({ + toBeDivisibleByTwo: function() { + return { + compare: function(actual) { + return { + pass: actual % 2 === 0 + }; + } + }; + } + }); + `, + expected: ` + // TODO: vitest-migration: jasmine.addMatchers is not supported. Please manually migrate to expect.extend(). + jasmine.addMatchers({ + toBeDivisibleByTwo: function () { + return { + compare: function (actual) { + return { + pass: actual % 2 === 0, + }; + }, + }; + }, + }); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformAddCustomEqualityTester', () => { + const testCases = [ + { + description: 'should add a TODO for jasmine.addCustomEqualityTester', + input: ` + jasmine.addCustomEqualityTester((a, b) => { + return a.toString() === b.toString(); + }); + `, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters(). + jasmine.addCustomEqualityTester((a, b) => { + return a.toString() === b.toString(); + }); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformUnknownJasmineProperties', () => { + const testCases = [ + { + description: 'should add a TODO for an unknown jasmine property', + input: `const env = jasmine.getEnv();`, + expected: `// TODO: vitest-migration: Unsupported jasmine property "getEnv" found. Please migrate this manually. +const env = jasmine.getEnv();`, + }, + { + description: 'should not add a TODO for a known jasmine property', + input: `const spy = jasmine.createSpy();`, + expected: `const spy = vi.fn();`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformGlobalFunctions', () => { + const testCases = [ + { + description: 'should add a TODO for setSpecProperty', + input: `setSpecProperty('myKey', 'myValue');`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: Unsupported global function \`setSpecProperty\` found. This function is used for custom reporters in Jasmine and has no direct equivalent in Vitest. +setSpecProperty('myKey', 'myValue');`, + }, + { + description: 'should add a TODO for setSuiteProperty', + input: `setSuiteProperty('myKey', 'myValue');`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: Unsupported global function \`setSuiteProperty\` found. This function is used for custom reporters in Jasmine and has no direct equivalent in Vitest. +setSuiteProperty('myKey', 'myValue');`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('transformUnsupportedJasmineCalls', () => { + const testCases = [ + { + description: 'should add a TODO for jasmine.mapContaining', + input: `expect(myMap).toEqual(jasmine.mapContaining(new Map()));`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: jasmine.mapContaining is not supported. Vitest does not have a built-in matcher for Maps. Please manually assert the contents of the Map. +expect(myMap).toEqual(jasmine.mapContaining(new Map()));`, + }, + { + description: 'should add a TODO for jasmine.setContaining', + input: `expect(mySet).toEqual(jasmine.setContaining(new Set()));`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: jasmine.setContaining is not supported. Vitest does not have a built-in matcher for Sets. Please manually assert the contents of the Set. +expect(mySet).toEqual(jasmine.setContaining(new Set()));`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); +}); From 92ddc4226c029e28e72a65ed88dd12a75cf8345c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:41:49 -0400 Subject: [PATCH 1598/2162] test(@schematics/angular): add additional test coverage for jasmine-to-vitest schematic This commit adds new tests for the `jasmine-to-vitest` refactoring schematic to increase test coverage and better validate its behavior during complex transformations. The new tests include: - **Integration Tests:** A new `test-file-transformer.integration_spec.ts` file validates the end-to-end transformation of various realistic test file scenarios, such as component tests, service tests with async operations, and complex spies and matchers. - **Unit Tests:** A new `test-file-transformer_spec.ts` file focuses on unit-testing specific transformation capabilities, including nested transformations and the preservation of comments during refactoring. - **Schematic Runner Tests:** A new `index_spec.ts` file provides tests for the schematic runner itself, verifying options like `fileSuffix` and `verbose` logging, and the generation of the summary report. --- .../refactor/jasmine-vitest/index_spec.ts | 149 ++++++ .../test-file-transformer.integration_spec.ts | 457 ++++++++++++++++++ .../test-file-transformer_spec.ts | 219 +++++++++ 3 files changed, 825 insertions(+) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts new file mode 100644 index 000000000000..70f0a3fd0abd --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts @@ -0,0 +1,149 @@ +/** + * @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 { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing'; +import { Schema as ApplicationOptions } from '../../application/schema'; +import { Schema as WorkspaceOptions } from '../../workspace/schema'; + +describe('Jasmine to Vitest Schematic', () => { + const schematicRunner = new SchematicTestRunner( + '@schematics/angular', + require.resolve('../../collection.json'), + ); + + let appTree: UnitTestTree; + + const workspaceOptions: WorkspaceOptions = { + name: 'workspace', + newProjectRoot: 'projects', + version: '20.0.0', + }; + + const appOptions: ApplicationOptions = { + name: 'bar', + inlineStyle: false, + inlineTemplate: false, + routing: false, + skipTests: false, + skipPackageJson: false, + }; + + beforeEach(async () => { + appTree = await schematicRunner.runSchematic('workspace', workspaceOptions); + appTree = await schematicRunner.runSchematic('application', appOptions, appTree); + }); + + it('should transform a basic Jasmine test file', async () => { + const specFilePath = 'projects/bar/src/app/app.spec.ts'; + const content = ` + describe('AppComponent', () => { + it('should create the app', () => { + const service = { myMethod: () => {} }; + spyOn(service, 'myMethod'); + service.myMethod(); + expect(service.myMethod).toHaveBeenCalled(); + }); + }); + `; + appTree.overwrite(specFilePath, content); + + const tree = await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar' }, + appTree, + ); + + const newContent = tree.readContent(specFilePath); + expect(newContent).toContain(`vi.spyOn(service, 'myMethod');`); + }); + + it('should only transform files matching the fileSuffix option', async () => { + const specFilePath = 'projects/bar/src/app/app.spec.ts'; + const specFileContent = ` + describe('AppComponent', () => { + it('should test something', () => { + spyOn(window, 'alert'); + }); + }); + `; + appTree.overwrite(specFilePath, specFileContent); + + const testFilePath = 'projects/bar/src/app/app.test.ts'; + const testFileContent = ` + describe('AppComponent Test', () => { + it('should test another thing', () => { + spyOn(window, 'confirm'); + }); + }); + `; + appTree.create(testFilePath, testFileContent); + + const tree = await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar', fileSuffix: '.test.ts' }, + appTree, + ); + + const unchangedContent = tree.readContent(specFilePath); + expect(unchangedContent).toContain(`spyOn(window, 'alert');`); + expect(unchangedContent).not.toContain(`vi.spyOn(window, 'alert');`); + + const changedContent = tree.readContent(testFilePath); + expect(changedContent).toContain(`vi.spyOn(window, 'confirm');`); + }); + + it('should print verbose logs when the verbose option is true', async () => { + const specFilePath = 'projects/bar/src/app/app.spec.ts'; + const content = ` + describe('AppComponent', () => { + it('should create the app', () => { + const service = { myMethod: () => {} }; + spyOn(service, 'myMethod'); + }); + }); + `; + appTree.overwrite(specFilePath, content); + + const logs: string[] = []; + schematicRunner.logger.subscribe((entry) => logs.push(entry.message)); + + await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar', verbose: true }, + appTree, + ); + + expect(logs).toContain('Detailed Transformation Log:'); + expect(logs).toContain(`Processing: /${specFilePath}`); + expect(logs.some((log) => log.includes('Transformed `spyOn` to `vi.spyOn`'))).toBe(true); + }); + + it('should print a summary report after running', async () => { + const specFilePath = 'projects/bar/src/app/app.spec.ts'; + const content = ` + describe('AppComponent', () => { + it('should create the app', () => { + const service = { myMethod: () => {} }; + jasmine.spyOnAllFunctions(service); + }); + }); + `; + appTree.overwrite(specFilePath, content); + + const logs: string[] = []; + schematicRunner.logger.subscribe((entry) => logs.push(entry.message)); + + await schematicRunner.runSchematic('jasmine-to-vitest', { include: specFilePath }, appTree); + + expect(logs).toContain('Jasmine to Vitest Refactoring Summary:'); + expect(logs).toContain('- 1 test file(s) scanned.'); + expect(logs).toContain('- 1 file(s) transformed.'); + expect(logs).toContain('- 1 TODO(s) added for manual review:'); + expect(logs).toContain(' - 1x spyOnAllFunctions'); + }); +}); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts new file mode 100644 index 000000000000..56f5d5701fa8 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -0,0 +1,457 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from './test-file-transformer'; +import { RefactorReporter } from './utils/refactor-reporter'; + +async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + let formattedExpected = await format(expected, { parser: 'typescript' }); + // Strip blank lines to avoid test failures due to cosmetic differences. + formattedExpected = formattedExpected.replace(/\n\s*\n/g, '\n'); + + expect(formattedTransformed).toBe(formattedExpected); +} + +describe('Jasmine to Vitest Transformer - Integration Tests', () => { + it('should transform a basic component test file', async () => { + const jasmineCode = ` + import { ComponentFixture, TestBed } from '@angular/core/testing'; + import { MyComponent } from './my.component'; + import { MyService } from './my.service'; + + describe('MyComponent', () => { + let component: MyComponent; + let fixture: ComponentFixture; + let myService: MyService; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [MyComponent], + providers: [MyService], + }); + + fixture = TestBed.createComponent(MyComponent); + component = fixture.componentInstance; + myService = TestBed.inject(MyService); + spyOn(myService, 'getValue').and.returnValue('mock value'); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should get value from service on init', () => { + fixture.detectChanges(); + expect(myService.getValue).toHaveBeenCalled(); + expect(component.value).toBe('mock value'); + }); + + it('should handle user click', () => { + spyOn(window, 'alert'); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + expect(window.alert).toHaveBeenCalledWith('button clicked'); + }); + + xit('a skipped test', () => { + // This test is skipped + }); + }); + `; + + const vitestCode = ` + import { ComponentFixture, TestBed } from '@angular/core/testing'; + import { MyComponent } from './my.component'; + import { MyService } from './my.service'; + + describe('MyComponent', () => { + let component: MyComponent; + let fixture: ComponentFixture; + let myService: MyService; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [MyComponent], + providers: [MyService], + }); + + fixture = TestBed.createComponent(MyComponent); + component = fixture.componentInstance; + myService = TestBed.inject(MyService); + vi.spyOn(myService, 'getValue').mockReturnValue('mock value'); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should get value from service on init', () => { + fixture.detectChanges(); + expect(myService.getValue).toHaveBeenCalled(); + expect(component.value).toBe('mock value'); + }); + + it('should handle user click', () => { + vi.spyOn(window, 'alert'); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + expect(window.alert).toHaveBeenCalledWith('button clicked'); + }); + + it.skip('a skipped test', () => { + // This test is skipped + }); + }); + `; + + await expectTransformation(jasmineCode, vitestCode); + }); + + it('should transform a service test with async operations and timer mocks', async () => { + const jasmineCode = ` + import { TestBed } from '@angular/core/testing'; + import { MyService } from './my.service'; + + describe('MyService', () => { + let service: MyService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [MyService], + }); + service = TestBed.inject(MyService); + jasmine.clock().install(); + }); + + afterEach(() => { + jasmine.clock().uninstall(); + }); + + it('should do something async with done', (done) => { + service.fetchData().then(data => { + expect(data).toEqual({ value: 'real data' }); + done(); + }); + }); + + it('should handle timeouts', () => { + let value = ''; + setTimeout(() => { + value = 'done'; + }, 1000); + + jasmine.clock().tick(500); + expect(value).toBe(''); + jasmine.clock().tick(500); + expect(value).toBe('done'); + }); + + fit('a focused test for async behavior', async () => { + const promise = Promise.resolve('resolved'); + await expectAsync(promise).toBeResolvedTo('resolved'); + }); + }); + `; + + const vitestCode = ` + import { TestBed } from '@angular/core/testing'; + import { MyService } from './my.service'; + + describe('MyService', () => { + let service: MyService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [MyService], + }); + service = TestBed.inject(MyService); + vi.useFakeTimers(); + }); + + afterEach(() => { + vi.useRealTimers(); + }); + + it('should do something async with done', async () => { + await service.fetchData().then(data => { + expect(data).toEqual({ value: 'real data' }); + }); + }); + + it('should handle timeouts', () => { + let value = ''; + setTimeout(() => { + value = 'done'; + }, 1000); + + vi.advanceTimersByTime(500); + expect(value).toBe(''); + vi.advanceTimersByTime(500); + expect(value).toBe('done'); + }); + + it.only('a focused test for async behavior', async () => { + const promise = Promise.resolve('resolved'); + await expect(promise).resolves.toEqual('resolved'); + }); + }); + `; + + await expectTransformation(jasmineCode, vitestCode); + }); + + it('should transform a file with complex spies and matchers', async () => { + const jasmineCode = ` + describe('Complex Scenarios', () => { + let serviceMock; + + beforeEach(() => { + serviceMock = jasmine.createSpyObj('MyService', { + getData: jasmine.any(String), + process: undefined, + }); + }); + + it('should use asymmetric matchers correctly', () => { + const result = serviceMock.getData(); + expect(result).toEqual(jasmine.any(String)); + expect({ foo: 'bar', baz: 'qux' }).toEqual(jasmine.objectContaining({ foo: 'bar' })); + }); + + it('should handle array contents checking', () => { + const arr = [1, 2, 3]; + expect(arr).toEqual(jasmine.arrayWithExactContents([3, 2, 1])); + }); + + it('should handle spy call order', () => { + const spyA = jasmine.createSpy('spyA'); + const spyB = jasmine.createSpy('spyB'); + spyA(); + spyB(); + expect(spyA).toHaveBeenCalledBefore(spyB); + }); + + it('should handle called once with', () => { + serviceMock.process('data'); + expect(serviceMock.process).toHaveBeenCalledOnceWith('data'); + }); + + it('should handle spy inspection', () => { + serviceMock.process('arg1', 'arg2'); + expect(serviceMock.process.calls.mostRecent().args).toEqual(['arg1', 'arg2']); + expect(serviceMock.process.calls.count()).toBe(1); + }); + }); + `; + + const vitestCode = ` + describe('Complex Scenarios', () => { + let serviceMock; + + beforeEach(() => { + serviceMock = { + getData: vi.fn().mockReturnValue(expect.any(String)), + process: vi.fn().mockReturnValue(undefined), + }; + }); + + it('should use asymmetric matchers correctly', () => { + const result = serviceMock.getData(); + expect(result).toEqual(expect.any(String)); + expect({ foo: 'bar', baz: 'qux' }).toEqual(expect.objectContaining({ foo: 'bar' })); + }); + + it('should handle array contents checking', () => { + const arr = [1, 2, 3]; + expect(arr).toHaveLength(3); + expect(arr).toEqual(expect.arrayContaining([3, 2, 1])); + }); + + it('should handle spy call order', () => { + const spyA = vi.fn(); + const spyB = vi.fn(); + spyA(); + spyB(); + expect(Math.min(...vi.mocked(spyA).mock.invocationCallOrder)).toBeLessThan(Math.min(...vi.mocked(spyB).mock.invocationCallOrder)); + }); + + it('should handle called once with', () => { + serviceMock.process('data'); + expect(serviceMock.process).toHaveBeenCalledTimes(1); + expect(serviceMock.process).toHaveBeenCalledWith('data'); + }); + + it('should handle spy inspection', () => { + serviceMock.process('arg1', 'arg2'); + expect(vi.mocked(serviceMock.process).mock.lastCall).toEqual(['arg1', 'arg2']); + expect(vi.mocked(serviceMock.process).mock.calls.length).toBe(1); + }); + }); + `; + + await expectTransformation(jasmineCode, vitestCode); + }); + + it('should handle various other Jasmine APIs', async () => { + const jasmineCode = ` + describe('Miscellaneous APIs', () => { + let el: HTMLElement; + + beforeEach(() => { + el = document.createElement('div'); + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + }); + + it('should handle DOM matchers like toHaveClass', () => { + el.classList.add('my-class'); + expect(el).withContext('element should have my-class').toHaveClass('my-class'); + el.classList.remove('my-class'); + expect(el).not.toHaveClass('my-class'); + }); + + it('should handle pending tests', () => { + pending('This test is not yet implemented.'); + }); + + it('should handle fail()', () => { + if (true) { + fail('This should not have happened'); + } + }); + + it('should handle spyOnProperty', () => { + const obj = { get myProp() { return 'original'; } }; + spyOnProperty(obj, 'myProp', 'get').and.returnValue('mocked'); + expect(obj.myProp).toBe('mocked'); + }); + + it('should handle spies throwing errors', () => { + const spy = jasmine.createSpy('mySpy').and.throwError('Test Error'); + expect(() => spy()).toThrowError('Test Error'); + }); + }); + `; + + const vitestCode = ` + describe('Miscellaneous APIs', () => { + let el: HTMLElement; + + beforeEach(() => { + el = document.createElement('div'); + vi.setConfig({ testTimeout: 10000 }); + }); + + it('should handle DOM matchers like toHaveClass', () => { + el.classList.add('my-class'); + expect(el.classList.contains('my-class'), 'element should have my-class').toBe(true); + el.classList.remove('my-class'); + expect(el.classList.contains('my-class')).toBe(false); + }); + + it.skip('should handle pending tests', () => { + // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). + // pending('This test is not yet implemented.'); + }); + + it('should handle fail()', () => { + if (true) { + throw new Error('This should not have happened'); + } + }); + + it('should handle spyOnProperty', () => { + const obj = { get myProp() { return 'original'; } }; + vi.spyOn(obj, 'myProp', 'get').mockReturnValue('mocked'); + expect(obj.myProp).toBe('mocked'); + }); + + it('should handle spies throwing errors', () => { + const spy = vi.fn().mockImplementation(() => { throw new Error('Test Error') }); + expect(() => spy()).toThrowError('Test Error'); + }); + }); + `; + + await expectTransformation(jasmineCode, vitestCode); + }); + + it('should add TODOs for unsupported Jasmine features', async () => { + const jasmineCode = ` + describe('Unsupported Features', () => { + beforeAll(() => { + jasmine.addMatchers({ + toBeAwesome: () => ({ + compare: (actual) => ({ pass: actual === 'awesome' }) + }) + }); + }); + + it('should use a custom matcher', () => { + // This will not be transformed, but a TODO should be present. + expect('awesome').toBeAwesome(); + }); + + it('should handle spyOnAllFunctions', () => { + const myObj = { func1: () => {}, func2: () => {} }; + jasmine.spyOnAllFunctions(myObj); + myObj.func1(); + expect(myObj.func1).toHaveBeenCalled(); + }); + + it('should handle unknown jasmine properties', () => { + const env = jasmine.getEnv(); + env.configure({ random: false }); + }); + }); + `; + + /* eslint-disable max-len */ + const vitestCode = ` + describe('Unsupported Features', () => { + beforeAll(() => { + // TODO: vitest-migration: jasmine.addMatchers is not supported. Please manually migrate to expect.extend(). + jasmine.addMatchers({ + toBeAwesome: () => ({ + compare: (actual) => ({ pass: actual === 'awesome' }) + }) + }); + }); + + it('should use a custom matcher', () => { + // This will not be transformed, but a TODO should be present. + expect('awesome').toBeAwesome(); + }); + + it('should handle spyOnAllFunctions', () => { + const myObj = { func1: () => {}, func2: () => {} }; + // TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). + jasmine.spyOnAllFunctions(myObj); + myObj.func1(); + expect(myObj.func1).toHaveBeenCalled(); + }); + + it('should handle unknown jasmine properties', () => { + // TODO: vitest-migration: Unsupported jasmine property "getEnv" found. Please migrate this manually. + const env = jasmine.getEnv(); + env.configure({ random: false }); + }); + }); + `; + /* eslint-enable max-len */ + + await expectTransformation(jasmineCode, vitestCode); + }); +}); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts new file mode 100644 index 000000000000..ddb6c903d496 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts @@ -0,0 +1,219 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from './test-file-transformer'; +import { RefactorReporter } from './utils/refactor-reporter'; + +async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + const formattedExpected = await format(expected, { parser: 'typescript' }); + + expect(formattedTransformed).toBe(formattedExpected); +} + +describe('Jasmine to Vitest Transformer', () => { + describe('Nested Transformations', () => { + const testCases = [ + { + description: 'should handle nested transforms like a spy returning an asymmetric matcher', + input: `spyOn(service, 'getValue').and.returnValue(jasmine.any(Number));`, + expected: `vi.spyOn(service, 'getValue').mockReturnValue(expect.any(Number));`, + }, + { + description: 'should handle expectAsync resolving to an asymmetric matcher', + input: `await expectAsync(myPromise).toBeResolvedTo(jasmine.any(Number));`, + expected: `await expect(myPromise).resolves.toEqual(expect.any(Number));`, + }, + { + description: + 'should handle spying on a property that returns a promise and using expectAsync', + input: ` + spyOnProperty(service, 'myProp', 'get').and.returnValue(Promise.resolve(42)); + await expectAsync(service.myProp).toBeResolvedTo(42); + `, + expected: ` + vi.spyOn(service, 'myProp', 'get').mockReturnValue(Promise.resolve(42)); + await expect(service.myProp).resolves.toEqual(42); + `, + }, + { + description: 'should handle a done callback that also uses timer mocks', + input: ` + it('should handle timers and async', (done) => { + jasmine.clock().install(); + setTimeout(() => { + expect(true).toBe(true); + jasmine.clock().uninstall(); + done(); + }, 100); + jasmine.clock().tick(100); + }); + `, + expected: ` + it('should handle timers and async', async () => { + vi.useFakeTimers(); + setTimeout(() => { + expect(true).toBe(true); + vi.useRealTimers(); + }, 100); + vi.advanceTimersByTime(100); + }); + `, + }, + { + description: 'should handle toHaveBeenCalledOnceWith using an asymmetric matcher', + input: `expect(mySpy).toHaveBeenCalledOnceWith(jasmine.objectContaining({ id: 1 }));`, + expected: ` + expect(mySpy).toHaveBeenCalledTimes(1); + expect(mySpy).toHaveBeenCalledWith(expect.objectContaining({ id: 1 })); + `, + }, + { + description: 'should handle withContext combined with a multi-statement matcher', + input: `expect(mySpy).withContext('custom message').toHaveBeenCalledOnceWith('foo');`, + expected: ` + expect(mySpy, 'custom message').toHaveBeenCalledTimes(1); + expect(mySpy, 'custom message').toHaveBeenCalledWith('foo'); + `, + }, + { + description: 'should handle createSpyObj with complex return values', + input: `const spy = jasmine.createSpyObj('MyService', { getPromise: Promise.resolve(jasmine.any(String)) });`, + expected: ` + const spy = { + getPromise: vi.fn().mockReturnValue(Promise.resolve(expect.any(String))), + }; + `, + }, + { + description: 'should handle arrayWithExactContents containing nested asymmetric matchers', + input: `expect(myArray).toEqual(jasmine.arrayWithExactContents([jasmine.objectContaining({ id: 1 })]));`, + expected: ` + expect(myArray).toHaveLength(1); + expect(myArray).toEqual(expect.arrayContaining([expect.objectContaining({ id: 1 })])); + `, + }, + { + description: 'should handle a spy rejecting with an asymmetric matcher', + input: `spyOn(service, 'myMethod').and.rejectWith(jasmine.objectContaining({ code: 'ERROR' }));`, + expected: `vi.spyOn(service, 'myMethod').mockRejectedValue(expect.objectContaining({ code: 'ERROR' }));`, + }, + { + description: 'should handle a complex spy object with a property map and subsequent spyOn', + input: ` + const myService = jasmine.createSpyObj('MyService', ['methodA'], { propA: 'valueA' }); + spyOn(myService, 'methodA').and.returnValue('mocked value'); + myService.methodA('test'); + expect(myService.methodA).toHaveBeenCalledWith('test'); + `, + expected: ` + const myService = { + methodA: vi.fn(), + propA: 'valueA' + }; + vi.spyOn(myService, 'methodA').mockReturnValue('mocked value'); + myService.methodA('test'); + expect(myService.methodA).toHaveBeenCalledWith('test'); + `, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); + + describe('Comment Preservation', () => { + const testCases = [ + { + description: 'should preserve a comment before a spy', + input: ` + // This is an important spy + spyOn(service, 'myMethod').and.returnValue(true); + `, + expected: ` + // This is an important spy + vi.spyOn(service, 'myMethod').mockReturnValue(true); + `, + }, + { + description: 'should preserve a multi-line comment between chained calls', + input: ` + spyOn(service, 'myMethod') + /* + * This spy needs to return a specific value. + */ + .and.returnValue(true); + `, + expected: ` + vi.spyOn(service, 'myMethod') + /* + * This spy needs to return a specific value. + */ + .mockReturnValue(true); + `, + skipped: true, + }, + { + description: 'should preserve a trailing comment on a matcher line', + input: ` + expect(mySpy).toHaveBeenCalledWith('foo'); // Trailing comment + `, + expected: ` + expect(mySpy).toHaveBeenCalledWith('foo'); // Trailing comment + `, + }, + { + description: 'should preserve comments inside a done callback function', + input: ` + it('should do something async', (done) => { + // Start the async operation + setTimeout(() => { + // It's done now + done(); + }, 100); + }); + `, + expected: ` + it('should do something async', async () => { + // Start the async operation + setTimeout(() => { + // It's done now + }, 100); + }); + `, + }, + { + description: 'should preserve comments around a multi-statement transformation', + input: ` + // Check if the spy was called correctly + expect(mySpy).toHaveBeenCalledOnceWith('foo'); + `, + expected: ` + // Check if the spy was called correctly + expect(mySpy).toHaveBeenCalledTimes(1); + expect(mySpy).toHaveBeenCalledWith('foo'); + `, + skipped: true, + }, + ]; + + testCases.forEach(({ description, input, expected, skipped }) => { + (skipped ? xit : it)(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); +}); From ede5e52bc701c42948bd98826cd4fa901350015c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:07:33 -0400 Subject: [PATCH 1599/2162] feat(@schematics/angular): add `include` option to jasmine-to-vitest schematic This commit introduces a new `--include` option to the `jasmine-to-vitest` refactoring schematic. This option allows users to scope the transformation to a specific file or directory within a project. Previously, the schematic would always process every test file in the entire project. With the `include` option, users can now run the refactoring on a smaller subset of files, which is useful for incremental migrations or for targeting specific areas of a codebase. The implementation handles both file and directory paths, normalizes Windows-style path separators, and includes error handling for invalid or non-existent paths. --- .../angular/refactor/jasmine-vitest/index.ts | 69 ++++++++++---- .../refactor/jasmine-vitest/index_spec.ts | 90 ++++++++++++++++++- .../refactor/jasmine-vitest/schema.json | 4 + 3 files changed, 143 insertions(+), 20 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index.ts b/packages/schematics/angular/refactor/jasmine-vitest/index.ts index 96e4ebbabdc5..fb545b8bcbca 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index.ts @@ -13,37 +13,37 @@ import { SchematicsException, Tree, } from '@angular-devkit/schematics'; +import { join, normalize } from 'node:path/posix'; import { ProjectDefinition, getWorkspace } from '../../utility/workspace'; import { Schema } from './schema'; import { transformJasmineToVitest } from './test-file-transformer'; import { RefactorReporter } from './utils/refactor-reporter'; -async function getProjectRoot(tree: Tree, projectName: string | undefined): Promise { +async function getProject( + tree: Tree, + projectName: string | undefined, +): Promise<{ project: ProjectDefinition; name: string }> { const workspace = await getWorkspace(tree); - let project: ProjectDefinition | undefined; if (projectName) { - project = workspace.projects.get(projectName); + const project = workspace.projects.get(projectName); if (!project) { throw new SchematicsException(`Project "${projectName}" not found.`); } - } else { - if (workspace.projects.size === 1) { - project = workspace.projects.values().next().value; - } else { - const projectNames = Array.from(workspace.projects.keys()); - throw new SchematicsException( - `Multiple projects found: [${projectNames.join(', ')}]. Please specify a project name.`, - ); - } + + return { project, name: projectName }; } - if (!project) { - // This case should theoretically not be hit due to the checks above, but it's good for type safety. - throw new SchematicsException('Could not determine a project.'); + if (workspace.projects.size === 1) { + const [name, project] = Array.from(workspace.projects.entries())[0]; + + return { project, name }; } - return project.root; + const projectNames = Array.from(workspace.projects.keys()); + throw new SchematicsException( + `Multiple projects found: [${projectNames.join(', ')}]. Please specify a project name.`, + ); } const DIRECTORIES_TO_SKIP = new Set(['node_modules', '.git', 'dist', '.angular']); @@ -74,14 +74,45 @@ function findTestFiles(directory: DirEntry, fileSuffix: string): string[] { export default function (options: Schema): Rule { return async (tree: Tree, context: SchematicContext) => { const reporter = new RefactorReporter(context.logger); - const projectRoot = await getProjectRoot(tree, options.project); + const { project, name: projectName } = await getProject(tree, options.project); + const projectRoot = project.root; const fileSuffix = options.fileSuffix ?? '.spec.ts'; - const files = findTestFiles(tree.getDir(projectRoot), fileSuffix); + let files: string[]; + let searchScope: string; + + if (options.include) { + const normalizedInclude = options.include.replace(/\\/g, '/'); + const includePath = normalize(join(projectRoot, normalizedInclude)); + searchScope = options.include; + + let dirEntry: DirEntry | null = null; + try { + dirEntry = tree.getDir(includePath); + } catch { + // Path is not a directory. + } + + // Approximation of a directory exists check + if (dirEntry && (dirEntry.subdirs.length > 0 || dirEntry.subfiles.length > 0)) { + // It is a directory + files = findTestFiles(dirEntry, fileSuffix); + } else if (tree.exists(includePath)) { + // It is a file + files = [includePath]; + } else { + throw new SchematicsException( + `The specified include path '${options.include}' does not exist.`, + ); + } + } else { + searchScope = `project '${projectName}'`; + files = findTestFiles(tree.getDir(projectRoot), fileSuffix); + } if (files.length === 0) { throw new SchematicsException( - `No files ending with '${fileSuffix}' found in project '${options.project}'.`, + `No files ending with '${fileSuffix}' found in ${searchScope}.`, ); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts index 70f0a3fd0abd..194c4be4298d 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts @@ -123,6 +123,94 @@ describe('Jasmine to Vitest Schematic', () => { expect(logs.some((log) => log.includes('Transformed `spyOn` to `vi.spyOn`'))).toBe(true); }); + describe('with `include` option', () => { + beforeEach(() => { + // Create a nested structure for testing directory-specific inclusion + appTree.create( + 'projects/bar/src/app/nested/nested.spec.ts', + `describe('Nested', () => { it('should work', () => { spyOn(window, 'confirm'); }); });`, + ); + appTree.overwrite( + 'projects/bar/src/app/app.spec.ts', + `describe('App', () => { it('should work', () => { spyOn(window, 'alert'); }); });`, + ); + }); + + it('should only transform the specified file', async () => { + const tree = await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar', include: 'src/app/nested/nested.spec.ts' }, + appTree, + ); + + const changedContent = tree.readContent('projects/bar/src/app/nested/nested.spec.ts'); + expect(changedContent).toContain(`vi.spyOn(window, 'confirm');`); + + const unchangedContent = tree.readContent('projects/bar/src/app/app.spec.ts'); + expect(unchangedContent).toContain(`spyOn(window, 'alert');`); + }); + + it('should handle a Windows-style path', async () => { + const tree = await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar', include: 'src\\app\\nested\\nested.spec.ts' }, + appTree, + ); + + const changedContent = tree.readContent('projects/bar/src/app/nested/nested.spec.ts'); + expect(changedContent).toContain(`vi.spyOn(window, 'confirm');`); + + const unchangedContent = tree.readContent('projects/bar/src/app/app.spec.ts'); + expect(unchangedContent).toContain(`spyOn(window, 'alert');`); + }); + + it('should only transform files in the specified directory', async () => { + appTree.create( + 'projects/bar/src/other/other.spec.ts', + `describe('Other', () => { it('should work', () => { spyOn(window, 'close'); }); });`, + ); + + const tree = await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar', include: 'src/app' }, + appTree, + ); + + const changedAppContent = tree.readContent('projects/bar/src/app/app.spec.ts'); + expect(changedAppContent).toContain(`vi.spyOn(window, 'alert');`); + + const changedNestedContent = tree.readContent('projects/bar/src/app/nested/nested.spec.ts'); + expect(changedNestedContent).toContain(`vi.spyOn(window, 'confirm');`); + + const unchangedContent = tree.readContent('projects/bar/src/other/other.spec.ts'); + expect(unchangedContent).toContain(`spyOn(window, 'close');`); + }); + + it('should process all files if `include` is not provided', async () => { + const tree = await schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar' }, + appTree, + ); + + const changedAppContent = tree.readContent('projects/bar/src/app/app.spec.ts'); + expect(changedAppContent).toContain(`vi.spyOn(window, 'alert');`); + + const changedNestedContent = tree.readContent('projects/bar/src/app/nested/nested.spec.ts'); + expect(changedNestedContent).toContain(`vi.spyOn(window, 'confirm');`); + }); + + it('should throw if the include path does not exist', async () => { + await expectAsync( + schematicRunner.runSchematic( + 'jasmine-to-vitest', + { project: 'bar', include: 'src/non-existent' }, + appTree, + ), + ).toBeRejectedWithError(`The specified include path 'src/non-existent' does not exist.`); + }); + }); + it('should print a summary report after running', async () => { const specFilePath = 'projects/bar/src/app/app.spec.ts'; const content = ` @@ -138,7 +226,7 @@ describe('Jasmine to Vitest Schematic', () => { const logs: string[] = []; schematicRunner.logger.subscribe((entry) => logs.push(entry.message)); - await schematicRunner.runSchematic('jasmine-to-vitest', { include: specFilePath }, appTree); + await schematicRunner.runSchematic('jasmine-to-vitest', {}, appTree); expect(logs).toContain('Jasmine to Vitest Refactoring Summary:'); expect(logs).toContain('- 1 test file(s) scanned.'); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/schema.json b/packages/schematics/angular/refactor/jasmine-vitest/schema.json index bb60a4f2862f..5756b1f68ce9 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/schema.json +++ b/packages/schematics/angular/refactor/jasmine-vitest/schema.json @@ -5,6 +5,10 @@ "type": "object", "description": "Refactors a Jasmine test file to use Vitest.", "properties": { + "include": { + "type": "string", + "description": "A path to a specific file or directory to refactor. If not provided, all test files in the project will be refactored." + }, "fileSuffix": { "type": "string", "description": "The file suffix to identify test files (e.g., '.spec.ts', '.test.ts').", From ba18bcc9ef00e1da31cabbb7845bbcdb5cfef565 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:14:58 -0400 Subject: [PATCH 1600/2162] refactor(@schematics/angular): remove duplicate jasmine-to-vitest transformers This commit removes duplicate entries from the array of transformer functions within the `jasmine-to-vitest` schematic. This is a minor cleanup to improve code readability and maintainability without changing the schematics behavior. --- .../angular/refactor/jasmine-vitest/test-file-transformer.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index b23dc3583b6c..c159f9bc3de2 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -82,16 +82,12 @@ export function transformJasmineToVitest( transformSpies, transformCreateSpyObj, transformSpyReset, - transformFocusedAndSkippedTests, transformSpyCallInspection, transformPending, transformDoneCallback, transformtoHaveBeenCalledBefore, transformToHaveClass, transformTimerMocks, - transformFocusedAndSkippedTests, - transformPending, - transformDoneCallback, transformGlobalFunctions, transformUnsupportedJasmineCalls, ]; From b7982bda4585c1b58fdd98c8908b11bc3cf95a81 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 15 Oct 2025 10:05:48 +0000 Subject: [PATCH 1601/2162] build: update pnpm to v10.18.3 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c5adf4ed3ce5..9d1d709a26f1 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.18.2", + "packageManager": "pnpm@10.18.3", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.18.2" + "pnpm": "10.18.3" }, "author": "Angular Authors", "license": "MIT", From d2932cd0c223d77b3bbafbf847652dd9f15bd046 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:12:44 -0400 Subject: [PATCH 1602/2162] refactor(@schematics/angular): implement type-safe TODO notes in jasmine-to-vitest This commit refactors the `jasmine-to-vitest` schematic to use a centralized and type-safe system for generating "TODO" comments. Previously, TODO messages were hardcoded strings scattered across various transformer files. This new system improves maintainability, consistency, and developer experience. Key changes include: - A new `utils/todo-notes.ts` file acts as a single source of truth for all TODO messages, categories, and optional documentation URLs. - Advanced mapped types (`TodoCategory`, `TodoContextMap`) are used to infer types directly from the configuration, ensuring that all calls are type-safe and preventing runtime errors. - The `addTodoComment` helper is now overloaded to handle both static and dynamic (context-aware) messages, ensuring that specific details (like an unsupported function name) are included in the comment. - All transformers have been updated to use this new system, resulting in cleaner, more consistent, and more maintainable code. --- .../test-file-transformer.integration_spec.ts | 6 +- .../transformers/jasmine-lifecycle.ts | 8 +- .../transformers/jasmine-lifecycle_spec.ts | 8 +- .../transformers/jasmine-matcher.ts | 50 +++--- .../transformers/jasmine-matcher_spec.ts | 2 +- .../transformers/jasmine-misc.ts | 57 +++---- .../transformers/jasmine-misc_spec.ts | 4 +- .../transformers/jasmine-spy.ts | 57 +++---- .../transformers/jasmine-spy_spec.ts | 15 +- .../jasmine-vitest/utils/comment-helpers.ts | 44 ++++- .../jasmine-vitest/utils/refactor-reporter.ts | 3 +- .../utils/refactor-reporter_spec.ts | 10 +- .../jasmine-vitest/utils/todo-notes.ts | 152 ++++++++++++++++++ 13 files changed, 287 insertions(+), 129 deletions(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index 56f5d5701fa8..a440eadbbf48 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -362,7 +362,7 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { }); it.skip('should handle pending tests', () => { - // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). + // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). See: https://vitest.dev/api/vi.html#it-skip // pending('This test is not yet implemented.'); }); @@ -422,7 +422,7 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { const vitestCode = ` describe('Unsupported Features', () => { beforeAll(() => { - // TODO: vitest-migration: jasmine.addMatchers is not supported. Please manually migrate to expect.extend(). + // TODO: vitest-migration: jasmine.addMatchers is not supported. Please manually migrate to expect.extend(). See: https://vitest.dev/api/expect.html#expect-extend jasmine.addMatchers({ toBeAwesome: () => ({ compare: (actual) => ({ pass: actual === 'awesome' }) @@ -437,7 +437,7 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { it('should handle spyOnAllFunctions', () => { const myObj = { func1: () => {}, func2: () => {} }; - // TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). + // TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). See: https://vitest.dev/api/vi.html#vi-spyon jasmine.spyOnAllFunctions(myObj); myObj.func1(); expect(myObj.func1).toHaveBeenCalled(); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts index 9ddf2d3681e0..235eef129d11 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts @@ -84,11 +84,9 @@ export function transformPending( bodyNode, 'Converted `pending()` to a skipped test (`it.skip`).', ); - reporter.recordTodo('pending'); - addTodoComment( - replacement, - 'The pending() function was converted to a skipped test (`it.skip`).', - ); + const category = 'pending'; + reporter.recordTodo(category); + addTodoComment(replacement, category); ts.addSyntheticLeadingComment( replacement, ts.SyntaxKind.SingleLineCommentTrivia, diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts index 8b54f99163ad..3e91e7b74d30 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts @@ -190,8 +190,8 @@ describe('Jasmine to Vitest Transformer', () => { `, expected: ` it.skip('is a work in progress', () => { - // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). - // pending('Not yet implemented'); + // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). See: https://vitest.dev/api/vi.html#it-skip + // pending('Not yet implemented'); }); `, }, @@ -204,8 +204,8 @@ describe('Jasmine to Vitest Transformer', () => { `, expected: ` it.skip('is a work in progress', function() { - // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). - // pending('Not yet implemented'); + // TODO: vitest-migration: The pending() function was converted to a skipped test (\`it.skip\`). See: https://vitest.dev/api/vi.html#it-skip + // pending('Not yet implemented'); }); `, }, diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts index dd4cb0a122ea..00ea5fa0e775 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts @@ -51,22 +51,17 @@ export function transformSyntacticSugarMatchers( const matcherName = pae.name.text; if (matcherName === 'toHaveSpyInteractions') { - reporter.recordTodo('toHaveSpyInteractions'); - addTodoComment( - node, - 'Unsupported matcher ".toHaveSpyInteractions()" found. ' + - 'Please migrate this manually by checking the `mock.calls.length` of the individual spies.', - ); + const category = 'toHaveSpyInteractions'; + reporter.recordTodo(category); + addTodoComment(node, category); return node; } if (matcherName === 'toThrowMatching') { - reporter.recordTodo('toThrowMatching'); - addTodoComment( - node, - 'Unsupported matcher ".toThrowMatching()" found. Please migrate this manually.', - ); + const category = 'toThrowMatching'; + reporter.recordTodo(category); + addTodoComment(node, category, { name: matcherName }); return node; } @@ -303,18 +298,13 @@ export function transformExpectAsync( if (matcherName) { if (matcherName === 'toBePending') { - reporter.recordTodo('toBePending'); - addTodoComment( - node, - 'Unsupported matcher ".toBePending()" found. Vitest does not have a direct equivalent. ' + - 'Please migrate this manually, for example by using `Promise.race` to check if the promise settles within a short timeout.', - ); + const category = 'toBePending'; + reporter.recordTodo(category); + addTodoComment(node, category); } else { - reporter.recordTodo('unsupported-expect-async-matcher'); - addTodoComment( - node, - `Unsupported expectAsync matcher ".${matcherName}()" found. Please migrate this manually.`, - ); + const category = 'unsupported-expect-async-matcher'; + reporter.recordTodo(category); + addTodoComment(node, category, { name: matcherName }); } } @@ -422,11 +412,9 @@ export function transformArrayWithExactContents( } if (!ts.isArrayLiteralExpression(argument.arguments[0])) { - reporter.recordTodo('arrayWithExactContents-dynamic-variable'); - addTodoComment( - node, - 'Cannot transform jasmine.arrayWithExactContents with a dynamic variable. Please migrate this manually.', - ); + const category = 'arrayWithExactContents-dynamic-variable'; + reporter.recordTodo(category); + addTodoComment(node, category); return node; } @@ -617,11 +605,9 @@ export function transformExpectNothing( const originalText = node.getFullText().trim(); reporter.reportTransformation(sourceFile, node, 'Removed `expect().nothing()` statement.'); - reporter.recordTodo('expect-nothing'); - addTodoComment( - replacement, - 'expect().nothing() has been removed because it is redundant in Vitest. Tests without assertions pass by default.', - ); + const category = 'expect-nothing'; + reporter.recordTodo(category); + addTodoComment(replacement, category); ts.addSyntheticLeadingComment( replacement, ts.SyntaxKind.SingleLineCommentTrivia, diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts index c6d1f431a54e..6bb4befbaced 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts @@ -168,7 +168,7 @@ describe('Jasmine to Vitest Transformer', () => { { description: 'should add a TODO for toThrowMatching', input: `expect(() => {}).toThrowMatching((e) => e.message === 'foo');`, - expected: `// TODO: vitest-migration: Unsupported matcher ".toThrowMatching()" found. Please migrate this manually. + expected: `// TODO: vitest-migration: Unsupported matcher ".toThrowMatching()" found. Please migrate this manually. See: https://vitest.dev/api/expect.html#tothrowerror expect(() => {}).toThrowMatching((e) => e.message === 'foo');`, }, { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts index effcf506e1c2..dd6e27c63943 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts @@ -18,6 +18,7 @@ import { createViCallExpression } from '../utils/ast-helpers'; import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; import { addTodoComment } from '../utils/comment-helpers'; import { RefactorContext } from '../utils/refactor-context'; +import { TodoCategory } from '../utils/todo-notes'; export function transformTimerMocks( node: ts.Node, @@ -140,56 +141,42 @@ export function transformGlobalFunctions( node, `Found unsupported global function \`${functionName}\`.`, ); - reporter.recordTodo(functionName); - addTodoComment( - node, - `Unsupported global function \`${functionName}\` found. This function is used for custom reporters in Jasmine ` + - 'and has no direct equivalent in Vitest.', - ); + const category = 'unsupported-global-function'; + reporter.recordTodo(category); + addTodoComment(node, category, { name: functionName }); } return node; } -const JASMINE_UNSUPPORTED_CALLS = new Map([ - [ - 'addMatchers', - 'jasmine.addMatchers is not supported. Please manually migrate to expect.extend().', - ], - [ - 'addCustomEqualityTester', - 'jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters().', - ], - [ - 'mapContaining', - 'jasmine.mapContaining is not supported. Vitest does not have a built-in matcher for Maps.' + - ' Please manually assert the contents of the Map.', - ], - [ - 'setContaining', - 'jasmine.setContaining is not supported. Vitest does not have a built-in matcher for Sets.' + - ' Please manually assert the contents of the Set.', - ], +const UNSUPPORTED_JASMINE_CALLS_CATEGORIES = new Set([ + 'addMatchers', + 'addCustomEqualityTester', + 'mapContaining', + 'setContaining', ]); +// A type guard to ensure that the methodName is one of the categories handled by this transformer. +function isUnsupportedJasmineCall( + methodName: string, +): methodName is 'addMatchers' | 'addCustomEqualityTester' | 'mapContaining' | 'setContaining' { + return UNSUPPORTED_JASMINE_CALLS_CATEGORIES.has(methodName as TodoCategory); +} + export function transformUnsupportedJasmineCalls( node: ts.Node, { sourceFile, reporter }: RefactorContext, ): ts.Node { const methodName = getJasmineMethodName(node); - if (!methodName) { - return node; - } - const message = JASMINE_UNSUPPORTED_CALLS.get(methodName); - if (message) { + if (methodName && isUnsupportedJasmineCall(methodName)) { reporter.reportTransformation( sourceFile, node, `Found unsupported call \`jasmine.${methodName}\`.`, ); reporter.recordTodo(methodName); - addTodoComment(node, message); + addTodoComment(node, methodName); } return node; @@ -238,11 +225,9 @@ export function transformUnknownJasmineProperties( node, `Found unknown jasmine property \`jasmine.${propName}\`.`, ); - reporter.recordTodo(`unknown-jasmine-property: ${propName}`); - addTodoComment( - node, - `Unsupported jasmine property "${propName}" found. Please migrate this manually.`, - ); + const category = 'unknown-jasmine-property'; + reporter.recordTodo(category); + addTodoComment(node, category, { name: propName }); } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts index 6b2a92b57fd1..e23f140de382 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts @@ -108,7 +108,7 @@ describe('Jasmine to Vitest Transformer', () => { }); `, expected: ` - // TODO: vitest-migration: jasmine.addMatchers is not supported. Please manually migrate to expect.extend(). + // TODO: vitest-migration: jasmine.addMatchers is not supported. Please manually migrate to expect.extend(). See: https://vitest.dev/api/expect.html#expect-extend jasmine.addMatchers({ toBeDivisibleByTwo: function () { return { @@ -141,7 +141,7 @@ describe('Jasmine to Vitest Transformer', () => { }); `, // eslint-disable-next-line max-len - expected: `// TODO: vitest-migration: jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters(). + expected: `// TODO: vitest-migration: jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters(). See: https://vitest.dev/api/expect.html#expect-addequalitytesters jasmine.addCustomEqualityTester((a, b) => { return a.toString() === b.toString(); }); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index 2d13a7474104..a3f95e7786d1 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -146,12 +146,12 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. return ts.factory.createCallExpression(newExpression, undefined, [arrowFunction]); } - default: - reporter.recordTodo('unsupported-spy-strategy'); - addTodoComment( - node, - `Unsupported spy strategy ".and.${strategyName}()" found. Please migrate this manually.`, - ); + default: { + const category = 'unsupported-spy-strategy'; + reporter.recordTodo(category); + addTodoComment(node, category, { name: strategyName }); + break; + } } if (newMethodName) { @@ -184,20 +184,18 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. // jasmine.createSpy(name, originalFn) -> vi.fn(originalFn) return createViCallExpression('fn', node.arguments.length > 1 ? [node.arguments[1]] : []); - case 'spyOnAllFunctions': + case 'spyOnAllFunctions': { reporter.reportTransformation( sourceFile, node, 'Found unsupported `jasmine.spyOnAllFunctions()`.', ); - reporter.recordTodo('spyOnAllFunctions'); - addTodoComment( - node, - 'Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions().' + - ' Please spy on individual methods manually using vi.spyOn().', - ); + const category = 'spyOnAllFunctions'; + reporter.recordTodo(category); + addTodoComment(node, category); return node; + } } return node; @@ -218,11 +216,9 @@ export function transformCreateSpyObj( ); if (node.arguments.length < 2) { - reporter.recordTodo('createSpyObj-single-argument'); - addTodoComment( - node, - 'jasmine.createSpyObj called with a single argument is not supported for transformation.', - ); + const category = 'createSpyObj-single-argument'; + reporter.recordTodo(category); + addTodoComment(node, category); return node; } @@ -236,11 +232,9 @@ export function transformCreateSpyObj( } else if (ts.isObjectLiteralExpression(methods)) { properties = createSpyObjWithObject(methods); } else { - reporter.recordTodo('createSpyObj-dynamic-variable'); - addTodoComment( - node, - 'Cannot transform jasmine.createSpyObj with a dynamic variable. Please migrate this manually.', - ); + const category = 'createSpyObj-dynamic-variable'; + reporter.recordTodo(category); + addTodoComment(node, category); return node; } @@ -249,11 +243,9 @@ export function transformCreateSpyObj( if (ts.isObjectLiteralExpression(propertiesArg)) { properties.push(...(propertiesArg.properties as unknown as ts.PropertyAssignment[])); } else { - reporter.recordTodo('createSpyObj-dynamic-property-map'); - addTodoComment( - node, - 'Cannot transform jasmine.createSpyObj with a dynamic property map. Please migrate this manually.', - ); + const category = 'createSpyObj-dynamic-property-map'; + reporter.recordTodo(category); + addTodoComment(node, category); } } @@ -426,12 +418,9 @@ export function transformSpyCallInspection( !ts.isIdentifier(node.parent.name) || node.parent.name.text !== 'args' ) { - reporter.recordTodo('mostRecent-without-args'); - addTodoComment( - node, - 'Direct usage of mostRecent() is not supported.' + - ' Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall.', - ); + const category = 'mostRecent-without-args'; + reporter.recordTodo(category); + addTodoComment(node, category); } return node; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts index d54f2c271252..7833f6310496 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts @@ -73,7 +73,7 @@ describe('Jasmine to Vitest Transformer', () => { description: 'should add a TODO for jasmine.spyOnAllFunctions(object)', input: `jasmine.spyOnAllFunctions(myObject);`, // eslint-disable-next-line max-len - expected: `// TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). + expected: `// TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). See: https://vitest.dev/api/vi.html#vi-spyon jasmine.spyOnAllFunctions(myObject); `, }, @@ -109,6 +109,13 @@ describe('Jasmine to Vitest Transformer', () => { input: `spyOn(service, 'myMethod').and.rejectWith('some error');`, expected: `vi.spyOn(service, 'myMethod').mockRejectedValue('some error');`, }, + { + description: 'should add a TODO for an unsupported spy strategy', + input: `spyOn(service, 'myMethod').and.unknownStrategy();`, + // eslint-disable-next-line max-len + expected: `// TODO: vitest-migration: Unsupported spy strategy ".and.unknownStrategy()" found. Please migrate this manually. See: https://vitest.dev/api/mocked.html#mock +vi.spyOn(service, 'myMethod').and.unknownStrategy();`, + }, ]; testCases.forEach(({ description, input, expected }) => { @@ -132,7 +139,7 @@ describe('Jasmine to Vitest Transformer', () => { description: 'should add a TODO if the second argument is not a literal', input: `const myService = jasmine.createSpyObj('MyService', methodNames);`, expected: ` - // TODO: vitest-migration: Cannot transform jasmine.createSpyObj with a dynamic variable. Please migrate this manually. + // TODO: vitest-migration: Cannot transform jasmine.createSpyObj with a dynamic variable. Please migrate this manually. See: https://vitest.dev/api/vi.html#vi-fn const myService = jasmine.createSpyObj('MyService', methodNames); `, }, @@ -156,7 +163,7 @@ describe('Jasmine to Vitest Transformer', () => { description: 'should add a TODO for jasmine.createSpyObj with only one argument', input: `const myService = jasmine.createSpyObj('MyService');`, expected: ` - // TODO: vitest-migration: jasmine.createSpyObj called with a single argument is not supported for transformation. + // TODO: vitest-migration: jasmine.createSpyObj called with a single argument is not supported for transformation. See: https://vitest.dev/api/vi.html#vi-fn const myService = jasmine.createSpyObj('MyService'); `, }, @@ -249,7 +256,7 @@ describe('Jasmine to Vitest Transformer', () => { description: 'should add a TODO for spy.calls.mostRecent() without .args', input: `const mostRecent = mySpy.calls.mostRecent();`, // eslint-disable-next-line max-len - expected: `// TODO: vitest-migration: Direct usage of mostRecent() is not supported. Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall. + expected: `// TODO: vitest-migration: Direct usage of mostRecent() is not supported. Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall. See: https://vitest.dev/api/mocked.html#mock-lastcall const mostRecent = mySpy.calls.mostRecent();`, }, ]; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts index c804445ec916..c9595d442b29 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts @@ -7,8 +7,48 @@ */ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { TODO_NOTES, TodoCategory, TodoContextMap } from './todo-notes'; + +// A helper type to find all `TodoCategory` keys that do not require a context. +type CategoriesWithNoContext = { + [K in TodoCategory]: TodoContextMap[K] extends never ? K : never; +}[TodoCategory]; + +/** + * Adds a TODO comment to a TypeScript node for manual migration. + * This overload handles categories that do not require a context object. + * @param node The AST node to which the comment will be added. + * @param category The category of the TODO, used to look up the message and URL. + */ +export function addTodoComment(node: ts.Node, category: T): void; + +/** + * Adds a TODO comment to a TypeScript node for manual migration. + * This overload handles categories that require a context object, ensuring it is + * provided and correctly typed. + * @param node The AST node to which the comment will be added. + * @param category The category of the TODO, used to look up the message and URL. + * @param context The context object providing dynamic values for the message. + */ +export function addTodoComment( + node: ts.Node, + category: T, + context: TodoContextMap[T], +): void; + +// Implementation that covers both overloads. +export function addTodoComment( + node: ts.Node, + category: TodoCategory, + context?: Record, +): void { + const note = TODO_NOTES[category]; + // The type assertion is safe here because the overloads guarantee the correct context is passed. + const message = + typeof note.message === 'function' ? note.message(context as never) : note.message; + const url = 'url' in note && note.url ? ` See: ${note.url}` : ''; + const commentText = ` TODO: vitest-migration: ${message}${url}`; -export function addTodoComment(node: ts.Node, message: string) { let statement: ts.Node = node; // Attempt to find the containing statement @@ -22,7 +62,7 @@ export function addTodoComment(node: ts.Node, message: string) { ts.addSyntheticLeadingComment( statement, ts.SyntaxKind.SingleLineCommentTrivia, - ` TODO: vitest-migration: ${message}`, + commentText, true, ); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts index 55d235e96c25..737abdc0ef94 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts @@ -8,6 +8,7 @@ import { logging } from '@angular-devkit/core'; import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { TodoCategory } from './todo-notes'; export class RefactorReporter { private filesScanned = 0; @@ -29,7 +30,7 @@ export class RefactorReporter { this.filesTransformed++; } - recordTodo(category: string): void { + recordTodo(category: TodoCategory): void { this.todos.set(category, (this.todos.get(category) ?? 0) + 1); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts index f8b79391f72f..10053135a10e 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts @@ -34,14 +34,14 @@ describe('RefactorReporter', () => { }); it('should record and count todos by category', () => { - reporter.recordTodo('category-a'); - reporter.recordTodo('category-b'); - reporter.recordTodo('category-a'); + reporter.recordTodo('pending'); + reporter.recordTodo('spyOnAllFunctions'); + reporter.recordTodo('pending'); reporter.printSummary(); expect(logger.warn).toHaveBeenCalledWith('- 3 TODO(s) added for manual review:'); - expect(logger.warn).toHaveBeenCalledWith(' - 2x category-a'); - expect(logger.warn).toHaveBeenCalledWith(' - 1x category-b'); + expect(logger.warn).toHaveBeenCalledWith(' - 2x pending'); + expect(logger.warn).toHaveBeenCalledWith(' - 1x spyOnAllFunctions'); }); it('should not print the todos section if none were recorded', () => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts new file mode 100644 index 000000000000..c0a5eb406e6a --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts @@ -0,0 +1,152 @@ +/** + * @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 + */ + +/** + * @fileoverview This file is the single source of truth for all "TODO" notes + * generated by the Jasmine to Vitest schematic. + * + * It defines the `TODO_NOTES` constant, which contains the message and optional + * documentation URL for each category of manual migration task. + * + * The file also exports advanced mapped types (`TodoCategory`, `TodoContextMap`) + * that are inferred directly from the `TODO_NOTES` object. This creates a + * maintainable, type-safe system that ensures consistency across all + * transformers and prevents runtime errors. + */ + +/** + * The central configuration for all "TODO" notes. Each key represents a unique + * `TodoCategory`. + * + * Each entry is an object with: + * - `message`: A string or a function that returns a string. If it's a function, + * it receives a `context` object to generate a dynamic message. + * - `url`: An optional documentation URL that will be appended to the message. + */ +export const TODO_NOTES = { + 'pending': { + message: 'The pending() function was converted to a skipped test (`it.skip`).', + url: 'https://vitest.dev/api/vi.html#it-skip', + }, + 'toHaveSpyInteractions': { + message: + 'Unsupported matcher ".toHaveSpyInteractions()" found. ' + + 'Please migrate this manually by checking the `mock.calls.length` of the individual spies.', + }, + 'toThrowMatching': { + message: (context: { name: string }) => + `Unsupported matcher ".${context.name}()" found. Please migrate this manually.`, + url: 'https://vitest.dev/api/expect.html#tothrowerror', + }, + 'toBePending': { + message: + 'Unsupported matcher ".toBePending()" found. Vitest does not have a direct equivalent. ' + + 'Please migrate this manually, for example by using `Promise.race` to check if the promise settles within a short timeout.', + }, + 'unsupported-expect-async-matcher': { + message: (context: { name: string }) => + `Unsupported expectAsync matcher ".${context.name}()" found. Please migrate this manually.`, + }, + 'arrayWithExactContents-dynamic-variable': { + message: + 'Cannot transform jasmine.arrayWithExactContents with a dynamic variable. Please migrate this manually.', + }, + 'expect-nothing': { + message: + 'expect().nothing() has been removed because it is redundant in Vitest. Tests without assertions pass by default.', + }, + 'unsupported-global-function': { + message: (context: { name: string }) => + `Unsupported global function \`${context.name}\` found. This function is used for custom reporters in Jasmine ` + + 'and has no direct equivalent in Vitest.', + }, + 'addMatchers': { + message: 'jasmine.addMatchers is not supported. Please manually migrate to expect.extend().', + url: 'https://vitest.dev/api/expect.html#expect-extend', + }, + 'addCustomEqualityTester': { + message: + 'jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters().', + url: 'https://vitest.dev/api/expect.html#expect-addequalitytesters', + }, + 'mapContaining': { + message: + 'jasmine.mapContaining is not supported. Vitest does not have a built-in matcher for Maps.' + + ' Please manually assert the contents of the Map.', + }, + 'setContaining': { + message: + 'jasmine.setContaining is not supported. Vitest does not have a built-in matcher for Sets.' + + ' Please manually assert the contents of the Set.', + }, + 'unknown-jasmine-property': { + message: (context: { name: string }) => + `Unsupported jasmine property "${context.name}" found. Please migrate this manually.`, + }, + 'spyOnAllFunctions': { + message: + 'Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions().' + + ' Please spy on individual methods manually using vi.spyOn().', + url: 'https://vitest.dev/api/vi.html#vi-spyon', + }, + 'createSpyObj-single-argument': { + message: + 'jasmine.createSpyObj called with a single argument is not supported for transformation.', + url: 'https://vitest.dev/api/vi.html#vi-fn', + }, + 'createSpyObj-dynamic-variable': { + message: + 'Cannot transform jasmine.createSpyObj with a dynamic variable. Please migrate this manually.', + url: 'https://vitest.dev/api/vi.html#vi-fn', + }, + 'createSpyObj-dynamic-property-map': { + message: + 'Cannot transform jasmine.createSpyObj with a dynamic property map. Please migrate this manually.', + url: 'https://vitest.dev/api/vi.html#vi-fn', + }, + 'unsupported-spy-strategy': { + message: (context: { name: string }) => + `Unsupported spy strategy ".and.${context.name}()" found. Please migrate this manually.`, + url: 'https://vitest.dev/api/mocked.html#mock', + }, + 'mostRecent-without-args': { + message: + 'Direct usage of mostRecent() is not supported.' + + ' Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall.', + url: 'https://vitest.dev/api/mocked.html#mock-lastcall', + }, +} as const; + +/** + * A union type of all possible "TODO" categories. + * It is derived from the keys of the `TODO_NOTES` object to ensure that only + * valid categories can be used throughout the transformers. + */ +export type TodoCategory = keyof typeof TODO_NOTES; + +/** + * A mapped type that creates a map from a `TodoCategory` to the type of the + * context object that its message function expects. This provides strong type + * safety for calls to `addTodoComment`. + * + * It works by checking if the `message` property for a given category is a + * function. If it is, it uses `infer` to extract the type of the first + * parameter (`P`). If it's not a function, it resolves to `never`. + * + * @example + * // `Context` will be `{ name: string }` + * type Context = TodoContextMap['unknown-jasmine-property']; + * + * // `Context` will be `never` + * type Context = TodoContextMap['pending']; + */ +export type TodoContextMap = { + [K in TodoCategory]: (typeof TODO_NOTES)[K]['message'] extends (context: infer P) => string + ? P + : never; +}; From b72fa916b433c0a98ef2a94ec30e6573cc8e4865 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 14 Oct 2025 19:54:19 -0400 Subject: [PATCH 1603/2162] test(@schematics/angular): add unit tests for `addTodoComment` helper This commit introduces unit tests for the `addTodoComment` helper function in the `jasmine-to-vitest` schematic. It also adds detailed comments to the function's AST traversal logic to improve clarity. --- .../jasmine-vitest/utils/comment-helpers.ts | 6 +- .../utils/comment-helpers_spec.ts | 68 +++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts index c9595d442b29..3f37f9a5a383 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers.ts @@ -51,7 +51,11 @@ export function addTodoComment( let statement: ts.Node = node; - // Attempt to find the containing statement + // Traverse up the AST to find the containing statement for the node. + // This ensures that the comment is placed before the entire statement, + // rather than being attached to a deeply nested node. For example, if the + // node is an `Identifier`, we want the comment on the `VariableStatement` + // or `ExpressionStatement` that contains it. while (statement.parent && !ts.isBlock(statement.parent) && !ts.isSourceFile(statement.parent)) { if (ts.isExpressionStatement(statement) || ts.isVariableStatement(statement)) { break; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers_spec.ts new file mode 100644 index 000000000000..50c0093c0208 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/comment-helpers_spec.ts @@ -0,0 +1,68 @@ +/** + * @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 ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { addTodoComment } from './comment-helpers'; + +describe('addTodoComment', () => { + function createTestHarness(sourceText: string) { + const sourceFile = ts.createSourceFile('test.ts', sourceText, ts.ScriptTarget.Latest, true); + const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); + + return { + sourceFile, + run(node: ts.Node, category: 'pending') { + addTodoComment(node, category); + + return printer.printFile(sourceFile); + }, + }; + } + + it('should add a comment before the containing ExpressionStatement', () => { + const sourceText = `myFunction();`; + const { sourceFile, run } = createTestHarness(sourceText); + const callExpression = (sourceFile.statements[0] as ts.ExpressionStatement).expression; + + const result = run(callExpression, 'pending'); + + expect(result).toContain( + '// TODO: vitest-migration: The pending() function was converted to a skipped test (`it.skip`). See: https://vitest.dev/api/vi.html#it-skip', + ); + expect(result.trim().startsWith('// TODO')).toBe(true); + }); + + it('should find the top-level statement for a deeply nested node', () => { + const sourceText = `const result = myObject.prop.method();`; + const { sourceFile, run } = createTestHarness(sourceText); + + // Get a deeply nested identifier + const varDeclaration = (sourceFile.statements[0] as ts.VariableStatement).declarationList + .declarations[0]; + const methodIdentifier = ( + (varDeclaration.initializer as ts.CallExpression).expression as ts.PropertyAccessExpression + ).name; + + const result = run(methodIdentifier, 'pending'); + + expect(result.trim().startsWith('// TODO')).toBe(true); + expect(result).toContain('const result = myObject.prop.method()'); + }); + + it('should add a comment before a VariableStatement', () => { + const sourceText = `const mySpy = jasmine.createSpy();`; + const { sourceFile, run } = createTestHarness(sourceText); + const varDeclaration = (sourceFile.statements[0] as ts.VariableStatement).declarationList + .declarations[0]; + + const result = run(varDeclaration, 'pending'); + + expect(result.trim().startsWith('// TODO')).toBe(true); + expect(result).toContain('const mySpy = jasmine.createSpy()'); + }); +}); From 2a1667fdc2cbdab58af50150d2875f3ea3863a8c Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:56:40 +0000 Subject: [PATCH 1604/2162] docs(@angular/build): add descriptions for application builder options Adds more detailed descriptions for the `assets` and `outputHashing` options in the `@angular/build:application` builder's schema. This improves clarity for users configuring these options. Closes #31477 --- packages/angular/build/src/builders/application/schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index 3ee8699e097f..c0a0f98313aa 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -6,7 +6,7 @@ "properties": { "assets": { "type": "array", - "description": "List of static application assets.", + "description": "Define the assets to be copied to the output directory. These assets are copied as-is without any further processing or hashing.", "default": [], "items": { "$ref": "#/definitions/assetPattern" @@ -441,7 +441,7 @@ }, "outputHashing": { "type": "string", - "description": "Define the output filename cache-busting hashing mode.", + "description": "Define the output filename cache-busting hashing mode.\n\n- `none`: No hashing.\n- `all`: Hash for all output bundles. \n- `media`: Hash for all output media (e.g., images, fonts, etc. that are referenced in CSS files).\n- `bundles`: Hash for output of lazy and main bundles.", "default": "none", "enum": ["none", "all", "media", "bundles"] }, From 00b7d74fb6936372591cd3dd10edfae8b3007524 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:59:16 +0000 Subject: [PATCH 1605/2162] docs(@angular-devkit/build-angular): add descriptions for browser builder options Adds more detailed descriptions for the `assets` and `outputHashing` options in the `@angular-devkit/build-angular:browser` builder's schema. This improves clarity for users configuring these options. --- .../build_angular/src/builders/browser/schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser/schema.json b/packages/angular_devkit/build_angular/src/builders/browser/schema.json index f8170c3969da..301eeafcc4f1 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/schema.json +++ b/packages/angular_devkit/build_angular/src/builders/browser/schema.json @@ -6,7 +6,7 @@ "properties": { "assets": { "type": "array", - "description": "List of static application assets.", + "description": "Define the assets to be copied to the output directory. These assets are copied as-is without any further processing or hashing.", "default": [], "items": { "$ref": "#/definitions/assetPattern" @@ -319,7 +319,7 @@ }, "outputHashing": { "type": "string", - "description": "Define the output filename cache-busting hashing mode.", + "description": "Define the output filename cache-busting hashing mode.\n\n- `none`: No hashing.\n- `all`: Hash for all output bundles. \n- `media`: Hash for all output media (e.g., images, fonts, etc. that are referenced in CSS files).\n- `bundles`: Hash for output of lazy and main bundles.", "default": "none", "enum": ["none", "all", "media", "bundles"] }, From 606e04d808d5aad4bfcbcb168428075c569a014d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 15 Oct 2025 15:35:46 +0000 Subject: [PATCH 1606/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 ++-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +-- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 259 +++++++++++++++++- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- 10 files changed, 324 insertions(+), 81 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 82954fae4cf2..581366706c5b 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@06bada8d42711ac8db590552fa8103777baa7ccf + - uses: angular/dev-infra/github-actions/branch-manager@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c526410fcf4..5179e68981ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 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@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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 384e32711ea8..0533aac7d140 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@06bada8d42711ac8db590552fa8103777baa7ccf + - uses: angular/dev-infra/github-actions/pull-request-labeling@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@06bada8d42711ac8db590552fa8103777baa7ccf + - uses: angular/dev-infra/github-actions/post-approval-changes@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index f4291b61fb44..607645f76352 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@06bada8d42711ac8db590552fa8103777baa7ccf + - uses: angular/dev-infra/github-actions/feature-request@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c76d450b1c21..c0eb63c5520d 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@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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 4a253ac2c89d..bb787bfb9427 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/linting/licenses@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@06bada8d42711ac8db590552fa8103777baa7ccf + uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 - 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/MODULE.bazel b/MODULE.bazel index 6f4bac234508..edd55cf619d9 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "06bada8d42711ac8db590552fa8103777baa7ccf", + commit = "1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 9d1d709a26f1..7975fce63eae 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.7", "@angular/localize": "21.0.0-next.7", "@angular/material": "21.0.0-next.8", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#88fadb5235577583689a2b0979b9b724b383b963", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2feb4d5082bd3322d64282894b81809c1cf93ca9", "@angular/platform-browser": "21.0.0-next.7", "@angular/platform-server": "21.0.0-next.7", "@angular/router": "21.0.0-next.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3eb0df7bff85..e302e143b9aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.8 version: 21.0.0-next.8(05250061371eb0125d7904add36a5bf0) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#88fadb5235577583689a2b0979b9b724b383b963 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88fadb5235577583689a2b0979b9b724b383b963(@modelcontextprotocol/sdk@1.20.0) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2feb4d5082bd3322d64282894b81809c1cf93ca9 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9(@modelcontextprotocol/sdk@1.20.0) '@angular/platform-browser': specifier: 21.0.0-next.7 version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/88fadb5235577583689a2b0979b9b724b383b963': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/88fadb5235577583689a2b0979b9b724b383b963} - version: 0.0.0-06bada8d42711ac8db590552fa8103777baa7ccf + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9} + version: 0.0.0-1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 hasBin: true '@angular/platform-browser@21.0.0-next.7': @@ -2192,6 +2192,10 @@ packages: resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==} engines: {node: '>=18'} + '@inquirer/ansi@1.0.1': + resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} + engines: {node: '>=18'} + '@inquirer/checkbox@4.2.4': resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==} engines: {node: '>=18'} @@ -2201,6 +2205,15 @@ packages: '@types/node': optional: true + '@inquirer/checkbox@4.3.0': + resolution: {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/confirm@5.1.18': resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==} engines: {node: '>=18'} @@ -2210,6 +2223,15 @@ packages: '@types/node': optional: true + '@inquirer/confirm@5.1.19': + resolution: {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/core@10.2.2': resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==} engines: {node: '>=18'} @@ -2219,6 +2241,15 @@ packages: '@types/node': optional: true + '@inquirer/core@10.3.0': + resolution: {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/editor@4.2.20': resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==} engines: {node: '>=18'} @@ -2228,6 +2259,15 @@ packages: '@types/node': optional: true + '@inquirer/editor@4.2.21': + resolution: {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/expand@4.0.20': resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==} engines: {node: '>=18'} @@ -2237,6 +2277,15 @@ packages: '@types/node': optional: true + '@inquirer/expand@4.0.21': + resolution: {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/external-editor@1.0.2': resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} engines: {node: '>=18'} @@ -2250,6 +2299,10 @@ packages: resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} engines: {node: '>=18'} + '@inquirer/figures@1.0.14': + resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} + engines: {node: '>=18'} + '@inquirer/input@4.2.4': resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==} engines: {node: '>=18'} @@ -2259,6 +2312,15 @@ packages: '@types/node': optional: true + '@inquirer/input@4.2.5': + resolution: {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/number@3.0.20': resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==} engines: {node: '>=18'} @@ -2268,6 +2330,15 @@ packages: '@types/node': optional: true + '@inquirer/number@3.0.21': + resolution: {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/password@4.0.20': resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==} engines: {node: '>=18'} @@ -2277,6 +2348,15 @@ packages: '@types/node': optional: true + '@inquirer/password@4.0.21': + resolution: {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/prompts@7.8.6': resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==} engines: {node: '>=18'} @@ -2286,6 +2366,15 @@ packages: '@types/node': optional: true + '@inquirer/prompts@7.9.0': + resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/rawlist@4.1.8': resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==} engines: {node: '>=18'} @@ -2295,6 +2384,15 @@ packages: '@types/node': optional: true + '@inquirer/rawlist@4.1.9': + resolution: {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/search@3.1.3': resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==} engines: {node: '>=18'} @@ -2304,6 +2402,15 @@ packages: '@types/node': optional: true + '@inquirer/search@3.2.0': + resolution: {integrity: sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/select@4.3.4': resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==} engines: {node: '>=18'} @@ -2313,6 +2420,15 @@ packages: '@types/node': optional: true + '@inquirer/select@4.4.0': + resolution: {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.8': resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} engines: {node: '>=18'} @@ -2322,6 +2438,15 @@ packages: '@types/node': optional: true + '@inquirer/type@3.0.9': + resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -9326,13 +9451,13 @@ 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/88fadb5235577583689a2b0979b9b724b383b963(@modelcontextprotocol/sdk@1.20.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9(@modelcontextprotocol/sdk@1.20.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) '@google/genai': 1.24.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.8.6(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) + '@inquirer/prompts': 7.9.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) '@octokit/auth-app': 8.1.1 '@octokit/core': 7.0.5 '@octokit/graphql': 9.0.2 @@ -10752,6 +10877,8 @@ snapshots: '@inquirer/ansi@1.0.0': {} + '@inquirer/ansi@1.0.1': {} + '@inquirer/checkbox@4.2.4(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 @@ -10762,6 +10889,16 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/checkbox@4.3.0(@types/node@24.7.2)': + dependencies: + '@inquirer/ansi': 1.0.1 + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/figures': 1.0.14 + '@inquirer/type': 3.0.9(@types/node@24.7.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/confirm@5.1.18(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10769,6 +10906,13 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/confirm@5.1.19(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/core@10.2.2(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 @@ -10782,6 +10926,19 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/core@10.3.0(@types/node@24.7.2)': + dependencies: + '@inquirer/ansi': 1.0.1 + '@inquirer/figures': 1.0.14 + '@inquirer/type': 3.0.9(@types/node@24.7.2) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/editor@4.2.20(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10790,6 +10947,14 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/editor@4.2.21(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/external-editor': 1.0.2(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/expand@4.0.20(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10798,6 +10963,14 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/expand@4.0.21(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/external-editor@1.0.2(@types/node@24.7.2)': dependencies: chardet: 2.1.0 @@ -10807,6 +10980,8 @@ snapshots: '@inquirer/figures@1.0.13': {} + '@inquirer/figures@1.0.14': {} + '@inquirer/input@4.2.4(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10814,6 +10989,13 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/input@4.2.5(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/number@3.0.20(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10821,6 +11003,13 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/number@3.0.21(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/password@4.0.20(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 @@ -10829,6 +11018,14 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/password@4.0.21(@types/node@24.7.2)': + dependencies: + '@inquirer/ansi': 1.0.1 + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/prompts@7.8.6(@types/node@24.7.2)': dependencies: '@inquirer/checkbox': 4.2.4(@types/node@24.7.2) @@ -10844,6 +11041,21 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/prompts@7.9.0(@types/node@24.7.2)': + dependencies: + '@inquirer/checkbox': 4.3.0(@types/node@24.7.2) + '@inquirer/confirm': 5.1.19(@types/node@24.7.2) + '@inquirer/editor': 4.2.21(@types/node@24.7.2) + '@inquirer/expand': 4.0.21(@types/node@24.7.2) + '@inquirer/input': 4.2.5(@types/node@24.7.2) + '@inquirer/number': 3.0.21(@types/node@24.7.2) + '@inquirer/password': 4.0.21(@types/node@24.7.2) + '@inquirer/rawlist': 4.1.9(@types/node@24.7.2) + '@inquirer/search': 3.2.0(@types/node@24.7.2) + '@inquirer/select': 4.4.0(@types/node@24.7.2) + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/rawlist@4.1.8(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10852,6 +11064,14 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/rawlist@4.1.9(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.7.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/search@3.1.3(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.2.2(@types/node@24.7.2) @@ -10861,6 +11081,15 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/search@3.2.0(@types/node@24.7.2)': + dependencies: + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/figures': 1.0.14 + '@inquirer/type': 3.0.9(@types/node@24.7.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/select@4.3.4(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.0 @@ -10871,10 +11100,24 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 + '@inquirer/select@4.4.0(@types/node@24.7.2)': + dependencies: + '@inquirer/ansi': 1.0.1 + '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/figures': 1.0.14 + '@inquirer/type': 3.0.9(@types/node@24.7.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.7.2 + '@inquirer/type@3.0.8(@types/node@24.7.2)': optionalDependencies: '@types/node': 24.7.2 + '@inquirer/type@3.0.9(@types/node@24.7.2)': + optionalDependencies: + '@types/node': 24.7.2 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 72752797a9d9..64377f6f3674 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#7070afd64697da977c62dff22f595942801f7572", - "@angular/cdk": "github:angular/cdk-builds#a0c3251b8c8f9abd84052bab9848202040eb5c7c", - "@angular/common": "github:angular/common-builds#306102d79cf0e9f35e2febe229298981e2cfb1f4", - "@angular/compiler": "github:angular/compiler-builds#84d3e2b8297009f309517cda82e7b702083dfc01", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#f42cf0e9a0a05110cd8d6c808c9822b39a4e39af", - "@angular/core": "github:angular/core-builds#38ecd435213032319bfa07df5fd77ba90f0951da", - "@angular/forms": "github:angular/forms-builds#a7babdf6673029639efa6a327f987087ba919f7e", - "@angular/language-service": "github:angular/language-service-builds#6bfdeb0b836306dd474bc64df0935113e0ec9eb6", - "@angular/localize": "github:angular/localize-builds#989ca8002870fd3ced228cd775508c63e1927fc2", - "@angular/material": "github:angular/material-builds#0502b5d1b0956ae9095936850cb52c380a16349a", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#95e30cf4fcd492646d546182f1497184ddd70e39", - "@angular/platform-browser": "github:angular/platform-browser-builds#eed87be516e083239b8b439b4f289f7ce38a4fb9", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#141b37b0d5129db61bbf32197821a20fe51d2966", - "@angular/platform-server": "github:angular/platform-server-builds#24ef840326de26f70140c4409f4b72016c61c4ac", - "@angular/router": "github:angular/router-builds#2b2cb81709725d730a0c04333d245968c90ec122", - "@angular/service-worker": "github:angular/service-worker-builds#233da683f00ed6ac3057b3459b78a12a0165faa4" + "@angular/animations": "github:angular/animations-builds#a305efe29065b79e5e57959063fab442ae8af9b6", + "@angular/cdk": "github:angular/cdk-builds#0323a2e830d0d61d3e9d720af07013c0b980e61e", + "@angular/common": "github:angular/common-builds#88fb1a3d6c8e49c7e61425b2c0fdfa326d3245ec", + "@angular/compiler": "github:angular/compiler-builds#d80b91aff76d5fa5edd23d834a892df692b6d23e", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#8892c1b42825e03ddcb6385f2cd3e7b2e3d001a6", + "@angular/core": "github:angular/core-builds#657ddc60b8e738d40f14e4554627be741e9001dd", + "@angular/forms": "github:angular/forms-builds#70c2037c8a6a7cfb6517e142955b4ef805a6f936", + "@angular/language-service": "github:angular/language-service-builds#3551bacb9962f1afcf34ad1df252d9280c7bc716", + "@angular/localize": "github:angular/localize-builds#d4badccd8bda536f9279183abae986afaa8c08c7", + "@angular/material": "github:angular/material-builds#258b49a5a24f64800bfcff34a053d8a2b2fda782", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f2429aae747ddf721917a74f1496ecfd902f29b0", + "@angular/platform-browser": "github:angular/platform-browser-builds#f88851f8ffb891cc53ed1d786a7388d7d8767502", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#4b94a7b283bde9a0a14718433d7d9f40331b6ef6", + "@angular/platform-server": "github:angular/platform-server-builds#d56b894057fad01b24c71d262f1114f976b6db61", + "@angular/router": "github:angular/router-builds#2555397d85367cc4881f9031a6548a6fd7f6c249", + "@angular/service-worker": "github:angular/service-worker-builds#5fac0e2e78a4be262fd5ec1c592632b27a3eda11" } } From 6fb85b2a4cadbc57ec23bf363ebc0e162221cad7 Mon Sep 17 00:00:00 2001 From: Brandon Roberts Date: Wed, 15 Oct 2025 07:48:09 -0500 Subject: [PATCH 1607/2162] docs(@angular/ssr): update examples for withRoutes configuration --- packages/angular/ssr/src/routes/route-config.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/angular/ssr/src/routes/route-config.ts b/packages/angular/ssr/src/routes/route-config.ts index f328cee4becc..c8849a1067b3 100644 --- a/packages/angular/ssr/src/routes/route-config.ts +++ b/packages/angular/ssr/src/routes/route-config.ts @@ -233,19 +233,19 @@ export const SERVER_ROUTES_CONFIG = new InjectionToken('SERV * * const serverRoutes: ServerRoute[] = [ * { - * route: '', // This renders the "/" route on the client (CSR) + * path: '', // This renders the "/" route on the client (CSR) * renderMode: RenderMode.Client, * }, * { - * route: 'about', // This page is static, so we prerender it (SSG) + * path: '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 + * path: '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) + * path: '**', // All other routes will be rendered on the server (SSR) * renderMode: RenderMode.Server, * }, * ]; From eee443020336986749eb4d2e36464deb4d1282b6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 15 Oct 2025 07:35:57 +0000 Subject: [PATCH 1608/2162] build: update github/codeql-action action to v4.30.8 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 30000fc4f13e..5dd5d2bc039e 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@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7 + uses: github/codeql-action/init@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7 + uses: github/codeql-action/analyze@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 849722f6149c..5c941a41f4ab 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@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7 + uses: github/codeql-action/upload-sarif@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8 with: sarif_file: results.sarif From 68d2baf7b3c8877633667fd3f710338a6a289d73 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 14 Oct 2025 20:05:59 -0400 Subject: [PATCH 1609/2162] test(@schematics/angular): centralize jasmine-to-vitest test helper This commit refactors the test suite for the `jasmine-to-vitest` schematic by centralizing the duplicated `expectTransformation` helper function into a single `test-helpers.ts` file. This change improves the long-term maintainability of the test suite by: - Reducing code duplication across multiple spec files. - Creating a single source of truth for the core test logic, making future updates easier. - Improving the overall structure and readability of the tests. --- packages/schematics/angular/BUILD.bazel | 2 ++ .../test-file-transformer_spec.ts | 15 +------- .../refactor/jasmine-vitest/test-helpers.ts | 34 +++++++++++++++++++ .../transformers/jasmine-lifecycle_spec.ts | 15 +------- .../transformers/jasmine-matcher_spec.ts | 15 +------- .../transformers/jasmine-misc_spec.ts | 15 +------- .../transformers/jasmine-spy_spec.ts | 15 +------- 7 files changed, 41 insertions(+), 70 deletions(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index d101299a5ab3..b3fa1e537720 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -72,6 +72,7 @@ ts_project( include = ["**/*.ts"], exclude = [ "**/*_spec.ts", + "refactor/jasmine-vitest/test-helpers.ts", # Also exclude templated files. "*/files/**/*.ts", "*/other-files/**/*.ts", @@ -114,6 +115,7 @@ ts_project( include = [ "**/*_spec.ts", "utility/test/**/*.ts", + "refactor/jasmine-vitest/test-helpers.ts", ], exclude = [ # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts index ddb6c903d496..71d5fc3ea397 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts @@ -6,20 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; -import { format } from 'prettier'; -import { transformJasmineToVitest } from './test-file-transformer'; -import { RefactorReporter } from './utils/refactor-reporter'; - -async function expectTransformation(input: string, expected: string): Promise { - const logger = new logging.NullLogger(); - const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); - const formattedTransformed = await format(transformed, { parser: 'typescript' }); - const formattedExpected = await format(expected, { parser: 'typescript' }); - - expect(formattedTransformed).toBe(formattedExpected); -} +import { expectTransformation } from './test-helpers'; describe('Jasmine to Vitest Transformer', () => { describe('Nested Transformations', () => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts new file mode 100644 index 000000000000..bf162192ab2a --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts @@ -0,0 +1,34 @@ +/** + * @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 { format } from 'prettier'; +import { transformJasmineToVitest } from './test-file-transformer'; +import { RefactorReporter } from './utils/refactor-reporter'; + +/** + * A test helper to run the Jasmine to Vitest transformer on a given code + * snippet and compare it to an expected output. + * + * This function automatically handles the setup of a `RefactorReporter` and + * formats both the transformed and expected code using Prettier. This ensures + * that test comparisons are consistent and not affected by minor formatting + * differences. + * + * @param input The Jasmine code snippet to be transformed. + * @param expected The expected Vitest code snippet after transformation. + */ +export async function expectTransformation(input: string, expected: string): Promise { + const logger = new logging.NullLogger(); + const reporter = new RefactorReporter(logger); + const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const formattedTransformed = await format(transformed, { parser: 'typescript' }); + const formattedExpected = await format(expected, { parser: 'typescript' }); + + expect(formattedTransformed).toBe(formattedExpected); +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts index 3e91e7b74d30..d5f9e3231180 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts @@ -6,20 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; -import { format } from 'prettier'; -import { transformJasmineToVitest } from '../test-file-transformer'; -import { RefactorReporter } from '../utils/refactor-reporter'; - -async function expectTransformation(input: string, expected: string): Promise { - const logger = new logging.NullLogger(); - const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); - const formattedTransformed = await format(transformed, { parser: 'typescript' }); - const formattedExpected = await format(expected, { parser: 'typescript' }); - - expect(formattedTransformed).toBe(formattedExpected); -} +import { expectTransformation } from '../test-helpers'; describe('Jasmine to Vitest Transformer', () => { describe('transformDoneCallback', () => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts index 6bb4befbaced..69b0637254aa 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts @@ -6,20 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; -import { format } from 'prettier'; -import { transformJasmineToVitest } from '../test-file-transformer'; -import { RefactorReporter } from '../utils/refactor-reporter'; - -async function expectTransformation(input: string, expected: string): Promise { - const logger = new logging.NullLogger(); - const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); - const formattedTransformed = await format(transformed, { parser: 'typescript' }); - const formattedExpected = await format(expected, { parser: 'typescript' }); - - expect(formattedTransformed).toBe(formattedExpected); -} +import { expectTransformation } from '../test-helpers'; describe('Jasmine to Vitest Transformer', () => { describe('transformAsymmetricMatchers', () => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts index e23f140de382..5095a4448db7 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts @@ -6,20 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; -import { format } from 'prettier'; -import { transformJasmineToVitest } from '../test-file-transformer'; -import { RefactorReporter } from '../utils/refactor-reporter'; - -async function expectTransformation(input: string, expected: string): Promise { - const logger = new logging.NullLogger(); - const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); - const formattedTransformed = await format(transformed, { parser: 'typescript' }); - const formattedExpected = await format(expected, { parser: 'typescript' }); - - expect(formattedTransformed).toBe(formattedExpected); -} +import { expectTransformation } from '../test-helpers'; describe('Jasmine to Vitest Transformer', () => { describe('transformTimerMocks', () => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts index 7833f6310496..c84b35c422ac 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts @@ -6,20 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; -import { format } from 'prettier'; -import { transformJasmineToVitest } from '../test-file-transformer'; -import { RefactorReporter } from '../utils/refactor-reporter'; - -async function expectTransformation(input: string, expected: string): Promise { - const logger = new logging.NullLogger(); - const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); - const formattedTransformed = await format(transformed, { parser: 'typescript' }); - const formattedExpected = await format(expected, { parser: 'typescript' }); - - expect(formattedTransformed).toBe(formattedExpected); -} +import { expectTransformation } from '../test-helpers'; describe('Jasmine to Vitest Transformer', () => { describe('transformSpies', () => { From f35b9f3310995b05d501f2abaec58dcd283e3aa0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 14 Oct 2025 20:26:54 -0400 Subject: [PATCH 1610/2162] fix(@schematics/angular): improve comment preservation in jasmine-to-vitest This commit improves the preservation of comments during the `jasmine-to-vitest` transformation. Specifically, it fixes an issue where multi-line comments between chained spy calls were being discarded. The transformer has been updated to use a less destructive AST modification pattern, which successfully preserves this trivia. Additionally, a previously failing test case for this scenario has been re-enabled and is now passing. --- .../refactor/jasmine-vitest/test-file-transformer_spec.ts | 1 - .../refactor/jasmine-vitest/transformers/jasmine-misc.ts | 6 ++++-- .../refactor/jasmine-vitest/transformers/jasmine-spy.ts | 7 ++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts index 71d5fc3ea397..bc55811306b3 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts @@ -151,7 +151,6 @@ describe('Jasmine to Vitest Transformer', () => { */ .mockReturnValue(true); `, - skipped: true, }, { description: 'should preserve a trailing comment on a matcher line', diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts index dd6e27c63943..1a2c15b2c539 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts @@ -78,13 +78,15 @@ export function transformFail(node: ts.Node, { sourceFile, reporter }: RefactorC reporter.reportTransformation(sourceFile, node, 'Transformed `fail()` to `throw new Error()`.'); const reason = node.expression.arguments[0]; - return ts.factory.createThrowStatement( + const replacement = ts.factory.createThrowStatement( ts.factory.createNewExpression( ts.factory.createIdentifier('Error'), undefined, reason ? [reason] : [], ), ); + + return ts.setOriginalNode(ts.setTextRange(replacement, node), node); } return node; @@ -119,7 +121,7 @@ export function transformDefaultTimeoutInterval( ), ]); - return ts.factory.createExpressionStatement(setConfigCall); + return ts.factory.updateExpressionStatement(node, setConfigCall); } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index a3f95e7786d1..759a93301438 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -160,7 +160,12 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. node, `Transformed spy strategy \`.and.${strategyName}()\` to \`.${newMethodName}()\`.`, ); - const newExpression = createPropertyAccess(spyCall, newMethodName); + + const newExpression = ts.factory.updatePropertyAccessExpression( + pae, + spyCall, + ts.factory.createIdentifier(newMethodName), + ); return ts.factory.updateCallExpression( node, From ff0c48a004e5027276bedda32a142bdee88c1964 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 15 Oct 2025 11:54:12 -0400 Subject: [PATCH 1611/2162] refactor(@schematics/angular): clarify jasmine-to-vitest visitor behavior The arrays of transformer functions have been reorganized into commented, logical stages. This makes the implicit, top-down execution order explicit, which is critical for the correctness of context-sensitive transformations. --- .../jasmine-vitest/test-file-transformer.ts | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index c159f9bc3de2..2ba86669e687 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -74,19 +74,28 @@ export function transformJasmineToVitest( // Transform the node itself based on its type if (ts.isCallExpression(transformedNode)) { const transformations = [ + // **Stage 1: High-Level & Context-Sensitive Transformations** + // These transformers often wrap or fundamentally change the nature of the call, + // so they need to run before more specific matchers. transformWithContext, transformExpectAsync, - transformSyntacticSugarMatchers, transformFocusedAndSkippedTests, + transformPending, + transformDoneCallback, + + // **Stage 2: Core Matcher & Spy Transformations** + // This is the bulk of the `expect(...)` and `spyOn(...)` conversions. + transformSyntacticSugarMatchers, transformComplexMatchers, transformSpies, transformCreateSpyObj, transformSpyReset, transformSpyCallInspection, - transformPending, - transformDoneCallback, transformtoHaveBeenCalledBefore, transformToHaveClass, + + // **Stage 3: Global Functions & Cleanup** + // These handle global Jasmine functions and catch-alls for unsupported APIs. transformTimerMocks, transformGlobalFunctions, transformUnsupportedJasmineCalls, @@ -97,6 +106,7 @@ export function transformJasmineToVitest( } } else if (ts.isPropertyAccessExpression(transformedNode)) { const transformations = [ + // These transformers handle `jasmine.any()` and other `jasmine.*` properties. transformAsymmetricMatchers, transformSpyCallInspection, transformUnknownJasmineProperties, @@ -105,6 +115,8 @@ export function transformJasmineToVitest( transformedNode = transformer(transformedNode, refactorCtx); } } else if (ts.isExpressionStatement(transformedNode)) { + // Statement-level transformers are mutually exclusive. The first one that + // matches will be applied, and then the visitor will stop for this node. const statementTransformers = [ transformCalledOnceWith, transformArrayWithExactContents, @@ -130,7 +142,7 @@ export function transformJasmineToVitest( } }; - return (node) => ts.visitNode(node, visitor) as ts.SourceFile; + return (node) => ts.visitEachChild(node, visitor, context); }; const result = ts.transform(sourceFile, [transformer]); From de1cd6d17faf656773a8be750fecc856cfe4cf73 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 15 Oct 2025 16:38:52 +0000 Subject: [PATCH 1612/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 4 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 2 +- .../schematics_cli/package.json | 2 +- pnpm-lock.yaml | 450 ++++++------------ 5 files changed, 148 insertions(+), 314 deletions(-) diff --git a/package.json b/package.json index 7975fce63eae..4deb9ffa92bc 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.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.46.1", + "@typescript-eslint/parser": "8.46.1", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 45e4425513e7..0d3c54b4a0ff 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -23,7 +23,7 @@ "@babel/core": "7.28.4", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@inquirer/confirm": "5.1.18", + "@inquirer/confirm": "5.1.19", "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", @@ -42,7 +42,7 @@ "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "vite": "7.1.9", + "vite": "7.1.10", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 759f72fbd769..596a7cafb039 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.8.6", + "@inquirer/prompts": "7.9.0", "@listr2/prompt-adapter-inquirer": "3.0.4", "@modelcontextprotocol/sdk": "1.20.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index d7f6d9699c53..14db21f20579 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.8.6", + "@inquirer/prompts": "7.9.0", "ansi-colors": "4.1.3", "yargs-parser": "22.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e302e143b9aa..79041e6fb4d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.1 + version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.1 + version: 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -368,11 +368,11 @@ importers: specifier: 7.24.7 version: 7.24.7 '@inquirer/confirm': - specifier: 5.1.18 - version: 5.1.18(@types/node@24.7.2) + specifier: 5.1.19 + version: 5.1.19(@types/node@24.7.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -425,8 +425,8 @@ importers: specifier: 0.2.15 version: 0.2.15 vite: - specifier: 7.1.9 - version: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.1.10 + version: 7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -472,11 +472,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/schematics '@inquirer/prompts': - specifier: 7.8.6 - version: 7.8.6(@types/node@24.7.2) + specifier: 7.9.0 + version: 7.9.0(@types/node@24.7.2) '@listr2/prompt-adapter-inquirer': specifier: 3.0.4 - version: 3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4) + version: 3.0.4(@inquirer/prompts@7.9.0(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4) '@modelcontextprotocol/sdk': specifier: 1.20.0 version: 1.20.0 @@ -853,8 +853,8 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../schematics '@inquirer/prompts': - specifier: 7.8.6 - version: 7.8.6(@types/node@24.7.2) + specifier: 7.9.0 + version: 7.9.0(@types/node@24.7.2) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -2188,23 +2188,10 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/ansi@1.0.0': - resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==} - engines: {node: '>=18'} - '@inquirer/ansi@1.0.1': resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} engines: {node: '>=18'} - '@inquirer/checkbox@4.2.4': - resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/checkbox@4.3.0': resolution: {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} engines: {node: '>=18'} @@ -2214,15 +2201,6 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.18': - resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/confirm@5.1.19': resolution: {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} engines: {node: '>=18'} @@ -2232,15 +2210,6 @@ packages: '@types/node': optional: true - '@inquirer/core@10.2.2': - resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/core@10.3.0': resolution: {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} engines: {node: '>=18'} @@ -2250,15 +2219,6 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.20': - resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/editor@4.2.21': resolution: {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} engines: {node: '>=18'} @@ -2268,15 +2228,6 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.20': - resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/expand@4.0.21': resolution: {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} engines: {node: '>=18'} @@ -2295,23 +2246,10 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.13': - resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} - engines: {node: '>=18'} - '@inquirer/figures@1.0.14': resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} engines: {node: '>=18'} - '@inquirer/input@4.2.4': - resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/input@4.2.5': resolution: {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} engines: {node: '>=18'} @@ -2321,15 +2259,6 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.20': - resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/number@3.0.21': resolution: {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} engines: {node: '>=18'} @@ -2339,15 +2268,6 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.20': - resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/password@4.0.21': resolution: {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} engines: {node: '>=18'} @@ -2357,15 +2277,6 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.8.6': - resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/prompts@7.9.0': resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} engines: {node: '>=18'} @@ -2375,15 +2286,6 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.8': - resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/rawlist@4.1.9': resolution: {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} engines: {node: '>=18'} @@ -2393,15 +2295,6 @@ packages: '@types/node': optional: true - '@inquirer/search@3.1.3': - resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/search@3.2.0': resolution: {integrity: sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==} engines: {node: '>=18'} @@ -2411,15 +2304,6 @@ packages: '@types/node': optional: true - '@inquirer/select@4.3.4': - resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/select@4.4.0': resolution: {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} engines: {node: '>=18'} @@ -3670,39 +3554,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.46.0': - resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==} + '@typescript-eslint/eslint-plugin@8.46.1': + resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.0 + '@typescript-eslint/parser': ^8.46.1 eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/parser@8.46.0': - resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==} + '@typescript-eslint/parser@8.46.1': + resolution: {integrity: sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/project-service@8.46.0': - resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==} + '@typescript-eslint/project-service@8.46.1': + resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/scope-manager@8.46.0': - resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==} + '@typescript-eslint/scope-manager@8.46.1': + resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.0': - resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==} + '@typescript-eslint/tsconfig-utils@8.46.1': + resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.0': - resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==} + '@typescript-eslint/type-utils@8.46.1': + resolution: {integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3712,21 +3596,25 @@ packages: resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.0': - resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==} + '@typescript-eslint/types@8.46.1': + resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.1': + resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/utils@8.46.0': - resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==} + '@typescript-eslint/utils@8.46.1': + resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/visitor-keys@8.46.0': - resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} + '@typescript-eslint/visitor-keys@8.46.1': + resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.23': @@ -8834,6 +8722,46 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true + vite@7.1.10: + resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vite@7.1.9: resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -10875,20 +10803,8 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/ansi@1.0.0': {} - '@inquirer/ansi@1.0.1': {} - '@inquirer/checkbox@4.2.4(@types/node@24.7.2)': - dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/checkbox@4.3.0(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.1 @@ -10899,13 +10815,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/confirm@5.1.18(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/confirm@5.1.19(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -10913,19 +10822,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/core@10.2.2(@types/node@24.7.2)': - dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.2) - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/core@10.3.0(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.1 @@ -10939,14 +10835,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/editor@4.2.20(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/external-editor': 1.0.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/editor@4.2.21(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -10955,14 +10843,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/expand@4.0.20(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/expand@4.0.21(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -10978,17 +10858,8 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/figures@1.0.13': {} - '@inquirer/figures@1.0.14': {} - '@inquirer/input@4.2.4(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/input@4.2.5(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -10996,13 +10867,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/number@3.0.20(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/number@3.0.21(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -11010,14 +10874,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/password@4.0.20(@types/node@24.7.2)': - dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/password@4.0.21(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.1 @@ -11026,21 +10882,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/prompts@7.8.6(@types/node@24.7.2)': - dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@24.7.2) - '@inquirer/confirm': 5.1.18(@types/node@24.7.2) - '@inquirer/editor': 4.2.20(@types/node@24.7.2) - '@inquirer/expand': 4.0.20(@types/node@24.7.2) - '@inquirer/input': 4.2.4(@types/node@24.7.2) - '@inquirer/number': 3.0.20(@types/node@24.7.2) - '@inquirer/password': 4.0.20(@types/node@24.7.2) - '@inquirer/rawlist': 4.1.8(@types/node@24.7.2) - '@inquirer/search': 3.1.3(@types/node@24.7.2) - '@inquirer/select': 4.3.4(@types/node@24.7.2) - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/prompts@7.9.0(@types/node@24.7.2)': dependencies: '@inquirer/checkbox': 4.3.0(@types/node@24.7.2) @@ -11056,14 +10897,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/rawlist@4.1.8(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/rawlist@4.1.9(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -11072,15 +10905,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/search@3.1.3(@types/node@24.7.2)': - dependencies: - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/search@3.2.0(@types/node@24.7.2)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.7.2) @@ -11090,16 +10914,6 @@ snapshots: optionalDependencies: '@types/node': 24.7.2 - '@inquirer/select@4.3.4(@types/node@24.7.2)': - dependencies: - '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@24.7.2) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.7.2) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.7.2 - '@inquirer/select@4.4.0(@types/node@24.7.2)': dependencies: '@inquirer/ansi': 1.0.1 @@ -11207,9 +11021,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.8.6(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4)': + '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.9.0(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4)': dependencies: - '@inquirer/prompts': 7.8.6(@types/node@24.7.2) + '@inquirer/prompts': 7.9.0(@types/node@24.7.2) '@inquirer/type': 3.0.8(@types/node@24.7.2) listr2: 9.0.4 transitivePeerDependencies: @@ -12302,14 +12116,14 @@ snapshots: '@types/node': 22.18.10 optional: true - '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.1 + '@typescript-eslint/type-utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.1 eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12319,41 +12133,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/scope-manager': 8.46.1 + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.1 debug: 4.4.3(supports-color@10.2.2) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) + '@typescript-eslint/types': 8.46.1 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.0': + '@typescript-eslint/scope-manager@8.46.1': dependencies: - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/visitor-keys': 8.46.1 - '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12363,12 +12177,14 @@ snapshots: '@typescript-eslint/types@8.46.0': {} - '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)': + '@typescript-eslint/types@8.46.1': {} + + '@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/project-service': 8.46.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/visitor-keys': 8.46.1 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12379,20 +12195,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.1 + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.0': + '@typescript-eslint/visitor-keys@8.46.1': dependencies: - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/types': 8.46.1 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.23': @@ -12555,9 +12371,9 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: @@ -14328,11 +14144,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14342,7 +14158,7 @@ snapshots: dependencies: eslint: 9.37.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14353,7 +14169,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.37.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14365,7 +14181,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14575,7 +14391,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -18534,7 +18350,7 @@ snapshots: debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18549,6 +18365,24 @@ snapshots: - tsx - yaml + vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.4 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.7.2 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.93.2 + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.8.1 + vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 From 7be6c8f0e2883c85546eb1691c91fa7d4aefc0d3 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 15 Oct 2025 08:09:59 +0000 Subject: [PATCH 1613/2162] fix(@angular/ssr): prevent malicious URL from overriding host A request with a specially crafted URL starting with a double slash (e.g., `//example.com`) could cause the server-side rendering logic to interpret the request as being for a different host. This is due to the behavior of the `URL` constructor when a protocol-relative URL is passed as the first argument. This vulnerability could be exploited to make the server execute requests to a malicious domain when relative paths are used within the application (e.g., via `HttpClient`), potentially leading to content injection or other security risks. The fix ensures that the request URL is always constructed as a full URL string, including the protocol and host, before being passed to the `URL` constructor. This prevents the host from being overridden by the path. Closes #31464 --- packages/angular/ssr/node/src/request.ts | 4 +- .../angular/ssr/node/test/request_spec.ts | 158 ++++++++++++++++++ 2 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 packages/angular/ssr/node/test/request_spec.ts diff --git a/packages/angular/ssr/node/src/request.ts b/packages/angular/ssr/node/src/request.ts index f99e40491b07..32d90d0029fc 100644 --- a/packages/angular/ssr/node/src/request.ts +++ b/packages/angular/ssr/node/src/request.ts @@ -76,7 +76,7 @@ function createRequestHeaders(nodeHeaders: IncomingHttpHeaders): Headers { * @param nodeRequest - The Node.js `IncomingMessage` or `Http2ServerRequest` object to extract URL information from. * @returns A `URL` object representing the request URL. */ -function createRequestUrl(nodeRequest: IncomingMessage | Http2ServerRequest): URL { +export function createRequestUrl(nodeRequest: IncomingMessage | Http2ServerRequest): URL { const { headers, socket, @@ -101,7 +101,7 @@ function createRequestUrl(nodeRequest: IncomingMessage | Http2ServerRequest): UR } } - return new URL(originalUrl ?? url, `${protocol}://${hostnameWithPort}`); + return new URL(`${protocol}://${hostnameWithPort}${originalUrl ?? url}`); } /** diff --git a/packages/angular/ssr/node/test/request_spec.ts b/packages/angular/ssr/node/test/request_spec.ts new file mode 100644 index 000000000000..952faefd9f28 --- /dev/null +++ b/packages/angular/ssr/node/test/request_spec.ts @@ -0,0 +1,158 @@ +/** + * @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 { IncomingMessage } from 'node:http'; +import { Http2ServerRequest } from 'node:http2'; +import { Socket } from 'node:net'; +import { createRequestUrl } from '../src/request'; + +// Helper to create a mock request object for testing. +function createRequest(details: { + headers: Record; + encryptedSocket?: boolean; + url?: string; + originalUrl?: string; +}): IncomingMessage { + return { + headers: details.headers, + socket: details.encryptedSocket ? ({ encrypted: true } as unknown as Socket) : new Socket(), + url: details.url, + originalUrl: details.originalUrl, + } as unknown as IncomingMessage; +} + +// Helper to create a mock Http2ServerRequest object for testing. +function createHttp2Request(details: { + headers: Record; + url?: string; +}): Http2ServerRequest { + return { + headers: details.headers, + socket: new Socket(), + url: details.url, + } as Http2ServerRequest; +} + +describe('createRequestUrl', () => { + it('should create a http URL with hostname and port from the host header', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'localhost:8080' }, + url: '/test', + }), + ); + expect(url.href).toBe('http://localhost:8080/test'); + }); + + it('should create a https URL when the socket is encrypted', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'example.com' }, + encryptedSocket: true, + url: '/test', + }), + ); + expect(url.href).toBe('https://example.com/test'); + }); + + it('should use "/" as the path when the URL path is empty', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'example.com' }, + encryptedSocket: true, + url: '', + }), + ); + expect(url.href).toBe('https://example.com/'); + }); + + it('should preserve query parameters in the URL path', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'example.com' }, + encryptedSocket: true, + url: '/test?a=1', + }), + ); + expect(url.href).toBe('https://example.com/test?a=1'); + }); + + it('should prioritize "originalUrl" over "url" for the path', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'example.com' }, + encryptedSocket: true, + url: '/test', + originalUrl: '/original', + }), + ); + expect(url.href).toBe('https://example.com/original'); + }); + + it('should use "/" as the path when both "url" and "originalUrl" are not provided', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'example.com' }, + encryptedSocket: true, + url: undefined, + originalUrl: undefined, + }), + ); + expect(url.href).toBe('https://example.com/'); + }); + + it('should treat a protocol-relative value in "url" as part of the path', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'localhost:8080' }, + url: '//example.com/test', + }), + ); + expect(url.href).toBe('http://localhost:8080//example.com/test'); + }); + + it('should treat a protocol-relative value in "originalUrl" as part of the path', () => { + const url = createRequestUrl( + createRequest({ + headers: { host: 'localhost:8080' }, + url: '/test', + originalUrl: '//example.com/original', + }), + ); + expect(url.href).toBe('http://localhost:8080//example.com/original'); + }); + + it('should prioritize "x-forwarded-host" and "x-forwarded-proto" headers', () => { + const url = createRequestUrl( + createRequest({ + headers: { + host: 'localhost:8080', + 'x-forwarded-host': 'example.com', + 'x-forwarded-proto': 'https', + }, + url: '/test', + }), + ); + expect(url.href).toBe('https://example.com/test'); + }); + + it('should use "x-forwarded-port" header for the port', () => { + const url = createRequestUrl( + createRequest({ + headers: { + host: 'localhost:8080', + 'x-forwarded-host': 'example.com', + 'x-forwarded-proto': 'https', + 'x-forwarded-port': '8443', + }, + url: '/test', + }), + ); + expect(url.href).toBe('https://example.com:8443/test'); + }); +}); From d0879b0d6699bc69028ed5449d98bc03a6ba1aae Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 15 Oct 2025 11:11:54 -0700 Subject: [PATCH 1614/2162] docs: release notes for the v19.2.18 release --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7704b35acc1f..1b044747c555 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 19.2.18 (2025-10-15) + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | +| [9136a5d13](https://github.com/angular/angular-cli/commit/9136a5d1302bb224ea245460ae29474bd2a3a10b) | fix | prevent malicious URL from overriding host | + + + # 21.0.0-next.7 (2025-10-08) @@ -1964,6 +1976,7 @@ - Protractor is no longer supported. Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor. + - https://angular.dev/tools/cli/end-to-end - https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c @@ -5598,6 +5611,7 @@ Alan Agius, Charles Lyding and Doug Parker ### @angular/cli - Several changes to the `ng analytics` command syntax. + - `ng analytics project ` has been replaced with `ng analytics ` - `ng analytics ` has been replaced with `ng analytics --global` @@ -5627,6 +5641,7 @@ Alan Agius, Charles Lyding and Doug Parker - `browser` and `karma` builders `script` and `styles` options input files extensions are now validated. Valid extensions for `scripts` are: + - `.js` - `.cjs` - `.mjs` @@ -5635,6 +5650,7 @@ Alan Agius, Charles Lyding and Doug Parker - `.mjsx` Valid extensions for `styles` are: + - `.css` - `.less` - `.sass` From 4cf65c98fa8cf73f5499040d588733afe1cc3da1 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 15 Oct 2025 11:34:58 -0700 Subject: [PATCH 1615/2162] docs: release notes for the v20.3.6 release --- CHANGELOG.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b044747c555..bc8362672de7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 20.3.6 (2025-10-15) + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | +| [5271547c8](https://github.com/angular/angular-cli/commit/5271547c80662de10cb3bcb648779a83f6efedfb) | fix | prevent malicious URL from overriding host | + + + # 19.2.18 (2025-10-15) @@ -1976,7 +1988,6 @@ - Protractor is no longer supported. Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor. - - https://angular.dev/tools/cli/end-to-end - https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c @@ -5611,7 +5622,6 @@ Alan Agius, Charles Lyding and Doug Parker ### @angular/cli - Several changes to the `ng analytics` command syntax. - - `ng analytics project ` has been replaced with `ng analytics ` - `ng analytics ` has been replaced with `ng analytics --global` @@ -5641,7 +5651,6 @@ Alan Agius, Charles Lyding and Doug Parker - `browser` and `karma` builders `script` and `styles` options input files extensions are now validated. Valid extensions for `scripts` are: - - `.js` - `.cjs` - `.mjs` @@ -5650,7 +5659,6 @@ Alan Agius, Charles Lyding and Doug Parker - `.mjsx` Valid extensions for `styles` are: - - `.css` - `.less` - `.sass` From 08e13a84fd3d916fceedb68fdffe2870f44e7ac7 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 15 Oct 2025 11:48:53 -0700 Subject: [PATCH 1616/2162] release: cut the v21.0.0-next.8 release --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc8362672de7..c1d614162b6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,39 @@ + + +# 21.0.0-next.8 (2025-10-15) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------ | +| [ede5e52bc](https://github.com/angular/angular-cli/commit/ede5e52bc701c42948bd98826cd4fa901350015c) | feat | add `include` option to jasmine-to-vitest schematic | +| [d0d2a17b8](https://github.com/angular/angular-cli/commit/d0d2a17b8adb2c1ce6eee70494f5d2298622c40e) | feat | add Jasmine spy API transformations to jasmine-to-vitest schematic | +| [e7d955bed](https://github.com/angular/angular-cli/commit/e7d955bedd5ca6957903cb73f8ebe06823a808da) | feat | add matcher transformations to jasmine-to-vitest schematic | +| [629f5cb18](https://github.com/angular/angular-cli/commit/629f5cb181fee562645baf02b44ebb3b39f3fb06) | feat | add misc transformations to jasmine-to-vitest schematic | +| [58474ec7d](https://github.com/angular/angular-cli/commit/58474ec7dd85fc34639c138d9b8d545affb50e3e) | feat | introduce initial jasmine-to-vitest unit test refactor schematic | +| [8f0f6a5f1](https://github.com/angular/angular-cli/commit/8f0f6a5f113ffc9e81d99eeeba71f8054e2d3686) | fix | add migration to update `moduleResolution` to `bundler` | +| [f35b9f331](https://github.com/angular/angular-cli/commit/f35b9f3310995b05d501f2abaec58dcd283e3aa0) | fix | improve comment preservation in jasmine-to-vitest | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | +| [53899511a](https://github.com/angular/angular-cli/commit/53899511afe5665541984085914a313390af6ce2) | fix | expand `jest` and `jest-environment-jsdom` to allow version 30 | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [a90bea5b5](https://github.com/angular/angular-cli/commit/a90bea5b51c6978441919ed2af85c090fe99fd38) | feat | support `.test.ts` files by default in unit test builder | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | +| [7be6c8f0e](https://github.com/angular/angular-cli/commit/7be6c8f0e2883c85546eb1691c91fa7d4aefc0d3) | fix | prevent malicious URL from overriding host | + + + # 20.3.6 (2025-10-15) diff --git a/package.json b/package.json index 4deb9ffa92bc..49104258cdb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.0.0-next.7", + "version": "21.0.0-next.8", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 45024e836b4006cc48b18bb99d025ae1a572db12 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:29:28 -0400 Subject: [PATCH 1617/2162] feat(@angular/cli): add unit test framework detection to list_projects tool This commit enhances the `list_projects` MCP tool by adding the `unitTestFramework` field to the project output. This provides a clear signal to an AI model about which testing API (e.g., Jasmine, Jest, Vitest) to use when writing or modifying unit tests for a specific project. The detection logic handles: - The `@angular/build:unit-test` builder by inspecting its `runner` option. - Other builders by inferring the framework from the builder name (e.g., builders containing 'karma', 'jest'). - The experimental `@angular-devkit/build-angular:web-test-runner`. Additionally, the tool's description has been updated to guide the AI on how to use this new field, including instructions on how to proceed when the framework is 'unknown'. --- .../cli/src/commands/mcp/tools/projects.ts | 70 +++++++++++++++++-- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index c6fb60417fa5..e5b171587024 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -53,6 +53,14 @@ const listProjectsOutputSchema = { 'The prefix to use for component selectors.' + ` For example, a prefix of 'app' would result in selectors like ''.`, ), + unitTestFramework: z + .enum(['jasmine', 'jest', 'vitest', 'unknown']) + .optional() + .describe( + 'The unit test framework used by the project, such as Jasmine, Jest, or Vitest. ' + + 'This field is critical for generating correct and idiomatic unit tests. ' + + 'When writing or modifying tests, you MUST use the APIs corresponding to this framework.', + ), }), ), }), @@ -84,14 +92,14 @@ export const LIST_PROJECTS_TOOL = declareTool({ title: 'List Angular Projects', description: ` -Provides a comprehensive overview of all Angular workspaces and projects within a monorepo. +Provides a comprehensive overview of all Angular workspaces and projects within the repository. It is essential to use this tool as a first step before performing any project-specific actions to understand the available projects, their types, and their locations. * Finding the correct project name to use in other commands (e.g., \`ng generate component my-comp --project=my-app\`). * Identifying the \`root\` and \`sourceRoot\` of a project to read, analyze, or modify its files. -* Determining if a project is an \`application\` or a \`library\`. +* Determining a project's unit test framework (\`unitTestFramework\`) before writing or modifying tests. * Getting the \`selectorPrefix\` for a project before generating a new component to ensure it follows conventions. * Identifying the major version of the Angular framework for each workspace, which is crucial for monorepos. * Determining a project's primary function by inspecting its builder (e.g., '@angular-devkit/build-angular:browser' for an application). @@ -99,6 +107,10 @@ their types, and their locations. * **Working Directory:** Shell commands for a project (like \`ng generate\`) **MUST** be executed from the parent directory of the \`path\` field for the relevant workspace. +* **Unit Testing:** The \`unitTestFramework\` field tells you which testing API to use (e.g., Jasmine, Jest). + If the value is 'unknown', you **MUST** inspect the project's configuration files + (e.g., \`karma.conf.js\`, \`jest.config.js\`, or the 'test' target in \`angular.json\`) to determine the + framework before generating tests. * **Disambiguation:** A monorepo may contain multiple workspaces (e.g., for different applications or even in output directories). Use the \`path\` of each workspace to understand its context and choose the correct project. `, @@ -230,9 +242,55 @@ async function findAngularCoreVersion( return undefined; } -// Types for the structured output of the helper function. +// Helper types inferred from the Zod schema for structured data processing. type WorkspaceData = z.infer[number]; type ParsingError = z.infer[number]; +type VersioningError = z.infer[number]; + +/** + * Determines the unit test framework for a project based on its 'test' target configuration. + * It handles both the modern `@angular/build:unit-test` builder with its `runner` option + * and older builders where the framework is inferred from the builder name. + * @param testTarget The 'test' target definition from the workspace configuration. + * @returns The name of the unit test framework ('jasmine', 'jest', 'vitest'), 'unknown' if + * the framework can't be determined from a known builder, or `undefined` if there is no test target. + */ +function getUnitTestFramework( + testTarget: import('@angular-devkit/core').workspaces.TargetDefinition | undefined, +): 'jasmine' | 'jest' | 'vitest' | 'unknown' | undefined { + if (!testTarget) { + return undefined; + } + + // For the new unit-test builder, the runner option directly informs the framework. + if (testTarget.builder === '@angular/build:unit-test') { + const runner = testTarget.options?.['runner'] as 'karma' | 'vitest' | undefined; + if (runner === 'karma') { + return 'jasmine'; // Karma is a runner, but the framework is Jasmine. + } else { + return runner; // For 'vitest', the runner and framework are the same. + } + } + + // Fallback for older builders where the framework is inferred from the builder name. + if (testTarget.builder) { + const testBuilder = testTarget.builder; + if ( + testBuilder.includes('karma') || + testBuilder === '@angular-devkit/build-angular:web-test-runner' + ) { + return 'jasmine'; + } else if (testBuilder.includes('jest')) { + return 'jest'; + } else if (testBuilder.includes('vitest')) { + return 'vitest'; + } else { + return 'unknown'; + } + } + + return undefined; +} /** * Loads, parses, and transforms a single angular.json file into the tool's output format. @@ -255,6 +313,8 @@ async function loadAndParseWorkspace( const ws = await AngularWorkspace.load(configFile); const projects = []; for (const [name, project] of ws.projects.entries()) { + const unitTestFramework = getUnitTestFramework(project.targets.get('test')); + projects.push({ name, type: project.extensions['projectType'] as 'application' | 'library' | undefined, @@ -262,6 +322,7 @@ async function loadAndParseWorkspace( root: project.root, sourceRoot: project.sourceRoot ?? path.posix.join(project.root, 'src'), selectorPrefix: project.extensions['prefix'] as string, + unitTestFramework, }); } @@ -278,9 +339,6 @@ async function loadAndParseWorkspace( } } -// Types for the structured output of the helper function. -type VersioningError = z.infer[number]; - /** * Processes a single `angular.json` file to extract workspace and framework version information. * @param configFile The path to the `angular.json` file. From 53180a8f794eac0ecf66aba837542f64389ed25b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:47:17 -0400 Subject: [PATCH 1618/2162] refactor(@angular/cli): make list_projects tool resilient to symlink loops The file traversal logic in the `list_projects` MCP tool did not previously handle symbolic link loops. In a repository with a symlink pointing to a parent directory, this could cause the tool to enter an infinite loop, consuming CPU and memory until it crashed or was terminated. This commit enhances the `findAngularJsonFiles` function to make it resilient to such loops. It now uses `fs.stat` to retrieve the inode of each directory and tracks visited inodes in a Set. If a directory with a previously seen inode is encountered, it is skipped, effectively breaking the infinite loop. This change adds a minor performance overhead due to the extra `stat` call per directory, but this is a trade-off for the increase in robustness and stability when operating on complex or untrusted file systems. --- .../cli/src/commands/mcp/tools/projects.ts | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index e5b171587024..a2d82ee55858 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { readFile, readdir } from 'node:fs/promises'; +import { readFile, readdir, stat } from 'node:fs/promises'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import semver from 'semver'; @@ -124,14 +124,26 @@ const EXCLUDED_DIRS = new Set(['node_modules', 'dist', 'out', 'coverage']); /** * Iteratively finds all 'angular.json' files with controlled concurrency and directory exclusions. - * This non-recursive implementation is suitable for very large directory trees - * and prevents file descriptor exhaustion (`EMFILE` errors). + * This non-recursive implementation is suitable for very large directory trees, + * prevents file descriptor exhaustion (`EMFILE` errors), and handles symbolic link loops. * @param rootDir The directory to start the search from. * @returns An async generator that yields the full path of each found 'angular.json' file. */ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { const CONCURRENCY_LIMIT = 50; const queue: string[] = [rootDir]; + const seenInodes = new Set(); + + try { + const rootStats = await stat(rootDir); + seenInodes.add(rootStats.ino); + } catch (error) { + assertIsError(error); + if (error.code === 'EACCES' || error.code === 'EPERM' || error.code === 'ENOENT') { + return; // Cannot access root, so there's nothing to do. + } + throw error; + } while (queue.length > 0) { const batch = queue.splice(0, CONCURRENCY_LIMIT); @@ -148,6 +160,19 @@ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name)) { continue; } + + // Check for symbolic link loops + try { + const entryStats = await stat(fullPath); + if (seenInodes.has(entryStats.ino)) { + continue; // Already visited this directory (symlink loop), skip. + } + seenInodes.add(entryStats.ino); + } catch { + // Ignore errors from stat (e.g., broken symlinks) + continue; + } + subdirectories.push(fullPath); } else if (entry.name === 'angular.json') { foundFilesInBatch.push(fullPath); From b832ff0eba53d71cc25b9edb50e38535a531370f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 16 Oct 2025 02:32:03 +0000 Subject: [PATCH 1619/2162] build: update cross-repo angular dependencies See associated pull request for more information. Closes #31484 as a pr takeover --- package.json | 26 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 266 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- 5 files changed, 170 insertions(+), 170 deletions(-) diff --git a/package.json b/package.json index 49104258cdb9..a6c245227612 100644 --- a/package.json +++ b/package.json @@ -46,20 +46,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-next.7", - "@angular/cdk": "21.0.0-next.8", - "@angular/common": "21.0.0-next.7", - "@angular/compiler": "21.0.0-next.7", - "@angular/compiler-cli": "21.0.0-next.7", - "@angular/core": "21.0.0-next.7", - "@angular/forms": "21.0.0-next.7", - "@angular/localize": "21.0.0-next.7", - "@angular/material": "21.0.0-next.8", + "@angular/animations": "21.0.0-next.8", + "@angular/cdk": "21.0.0-next.9", + "@angular/common": "21.0.0-next.8", + "@angular/compiler": "21.0.0-next.8", + "@angular/compiler-cli": "21.0.0-next.8", + "@angular/core": "21.0.0-next.8", + "@angular/forms": "21.0.0-next.8", + "@angular/localize": "21.0.0-next.8", + "@angular/material": "21.0.0-next.9", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2feb4d5082bd3322d64282894b81809c1cf93ca9", - "@angular/platform-browser": "21.0.0-next.7", - "@angular/platform-server": "21.0.0-next.7", - "@angular/router": "21.0.0-next.7", - "@angular/service-worker": "21.0.0-next.7", + "@angular/platform-browser": "21.0.0-next.8", + "@angular/platform-server": "21.0.0-next.8", + "@angular/router": "21.0.0-next.8", + "@angular/service-worker": "21.0.0-next.8", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index dc10d619dcfc..c8324b02c790 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-next.7", - "@angular/compiler": "21.0.0-next.7", - "@angular/core": "21.0.0-next.7", - "@angular/platform-browser": "21.0.0-next.7", - "@angular/platform-server": "21.0.0-next.7", - "@angular/router": "21.0.0-next.7", + "@angular/common": "21.0.0-next.8", + "@angular/compiler": "21.0.0-next.8", + "@angular/core": "21.0.0-next.8", + "@angular/platform-browser": "21.0.0-next.8", + "@angular/platform-server": "21.0.0-next.8", + "@angular/router": "21.0.0-next.8", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index d54cb1b44c11..74d2e3e4f76a 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": "21.0.0-next.7", - "@angular/compiler-cli": "21.0.0-next.7", + "@angular/compiler": "21.0.0-next.8", + "@angular/compiler-cli": "21.0.0-next.8", "typescript": "5.9.3", "webpack": "5.102.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79041e6fb4d4..051a1266a960 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/cdk': specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7 + specifier: 21.0.0-next.8 + version: 21.0.0-next.8 '@angular/compiler-cli': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(@angular/compiler@21.0.0-next.7) - '@angular/material': specifier: 21.0.0-next.8 - version: 21.0.0-next.8(05250061371eb0125d7904add36a5bf0) + version: 21.0.0-next.8(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(@angular/compiler@21.0.0-next.8) + '@angular/material': + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2feb4d5082bd3322d64282894b81809c1cf93ca9 version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9(@modelcontextprotocol/sdk@1.20.0) '@angular/platform-browser': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.7)(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.8)(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -445,7 +445,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -539,23 +539,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7 + specifier: 21.0.0-next.8 + version: 21.0.0-next.8 '@angular/core': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.7)(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.8)(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -770,7 +770,7 @@ importers: version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -868,11 +868,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7 + specifier: 21.0.0-next.8 + version: 21.0.0-next.8 '@angular/compiler-cli': - specifier: 21.0.0-next.7 - version: 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) + specifier: 21.0.0-next.8 + version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -978,46 +978,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-next.7': - resolution: {integrity: sha512-gHxdihfHeXXRlwz7KIUEVOyaUuE9c1EvpwBYBhQBOb/426BepGsJXf5ACiTtr0yzRx5+sQygdtu+iGS01WWfMw==} + '@angular/animations@21.0.0-next.8': + resolution: {integrity: sha512-ECHH4pwsD/EqDPd+xrG7psLyTG4MhRBhqnmYpLmGIudBM3fIOFXOnlYRRGQhu/hb+mEKxfev5yFvsyYRpFoXKQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.7 + '@angular/core': 21.0.0-next.8 - '@angular/cdk@21.0.0-next.8': - resolution: {integrity: sha512-dVgt+SMgYuYwNgtFUb/iE8nVKWoJ7d3TuRSIBDe2AE3RuOSfjjTEjypcaLj6FToKYYMVZl6+0W5o2vjWrwNL/Q==} + '@angular/cdk@21.0.0-next.9': + resolution: {integrity: sha512-anQ2gbggsj0b5PODlAanidwA5tQmZ0U7bgl9NGFilDiE/1y/8PUVvqssyttftLhroDb5RYvaN3Wt7XcyQbprkA==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-next.7': - resolution: {integrity: sha512-PmmnuiHJBPYnDwEMY+DInilI03dAByAt0gInOse3X56RIvVE8vMBIMWbbTp2QtCPU/z6AMUUYjC32lRxCVT1nQ==} + '@angular/common@21.0.0-next.8': + resolution: {integrity: sha512-x9sh/uhFVFrrOwVC+FC7gufkZxs1IPOCIx5lps6mqykQ30ihZ6vQLfJqY+XJ/N1y73o50qCAVK3IpzLNBWkgMQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.7 + '@angular/core': 21.0.0-next.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-next.7': - resolution: {integrity: sha512-lTpRym4AhvkaCOz5kRTz2C9ljz8KNuehXgIh5FIlj/0yXidQH+yxWg+FsTo8VosDnjr+1v+pl2gnEEWqNNcQ3w==} + '@angular/compiler-cli@21.0.0-next.8': + resolution: {integrity: sha512-o1B9/B7jM2GuDrfUw1UzkJpMCZ8ycpUi2DrcHtIiOZtqBbnfodASNLmzGaW8uEbNeB0h7PdYXxdFMvVYpWQv8g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.7 + '@angular/compiler': 21.0.0-next.8 typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-next.7': - resolution: {integrity: sha512-gOmDTn5p4Ku09EEtWx7QfcmHKZL8XqTRr691As3kmgtLwWZUk0C+FZgp08Gf/y0yosIbQp23zgfIsKgVBi+m/A==} + '@angular/compiler@21.0.0-next.8': + resolution: {integrity: sha512-5Fkzhs5zpCy2IhIK0Osw3RyRqlrwUdcJNGJ/UbkUJuEE4VBEFXbd1evZa/mf5YIQFNhK0WW2zY3zMABTtGMweg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-next.7': - resolution: {integrity: sha512-p/ff/8rsT5QzMVa9qx8uj8O/X1D+HAZZ0DPVK0KYOhz/o+Lw8QecxxHqL9AaNYSxyF/0rc8eMttYpBoYxE7V7A==} + '@angular/core@21.0.0-next.8': + resolution: {integrity: sha512-+omCS1MesfEPVuebs/wUWj6f5xeiRQWjLe70lpbuRPdEgmgOzPOgZKG8828yhPqU1XqJEUjjghfiAIdM6+tYhw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-next.7 + '@angular/compiler': 21.0.0-next.8 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1026,28 +1026,28 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-next.7': - resolution: {integrity: sha512-zN3tQwuoxozdimO0twuhgLnXbT4BGVSuC1I2rrpm48e3ReLDhzCbOYpDYkP4vuBZLiDQw3EP6WfyK/uqY5M0mA==} + '@angular/forms@21.0.0-next.8': + resolution: {integrity: sha512-Xsdyd3/76phasRu6xs79llRai4kioh/AJsD2WpZ1c9pWh4hFoYcmfTDYle0KmKPZs2+HJPUmQ6DjS152LD21OA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.7 - '@angular/core': 21.0.0-next.7 - '@angular/platform-browser': 21.0.0-next.7 + '@angular/common': 21.0.0-next.8 + '@angular/core': 21.0.0-next.8 + '@angular/platform-browser': 21.0.0-next.8 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-next.7': - resolution: {integrity: sha512-+NKyRScSEEPDwYTA0VGLDetm4gnargihZVs3bjvLJQFv7dgda5ukCMerm9H2nMv9Gg6Son98ttwzRFO+4dXwyg==} + '@angular/localize@21.0.0-next.8': + resolution: {integrity: sha512-fIIjunzHQSPy9yka7VWo4RnnMM/A/vQsD/zylykG4EPr4PZpuKXKd6LmEX1DBRNOUa9N1cmkrH00zkCKfy81eQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.7 - '@angular/compiler-cli': 21.0.0-next.7 + '@angular/compiler': 21.0.0-next.8 + '@angular/compiler-cli': 21.0.0-next.8 - '@angular/material@21.0.0-next.8': - resolution: {integrity: sha512-lTv37cioGdq9ko6jESvQ1LiKRX35ozg4cqF8XWs0CGwOt6s9gphntf4zypTEIR1kk/qlHM1Y/2KCew3VYkWUaQ==} + '@angular/material@21.0.0-next.9': + resolution: {integrity: sha512-lHgK+Kl8NGwikADkU359MNZ7UwDXUt7BiNCUknb28+b8I/eUZkFhrpW4F2zJn/43A4Fg+rXvDIS6rQhbnqVBiw==} peerDependencies: - '@angular/cdk': 21.0.0-next.8 + '@angular/cdk': 21.0.0-next.9 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 @@ -1059,42 +1059,42 @@ packages: version: 0.0.0-1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 hasBin: true - '@angular/platform-browser@21.0.0-next.7': - resolution: {integrity: sha512-wBf0KQaDhgm7O/JNnAfJYY6Kan/xnI4tjDR9fBd1txDRuSmxq9iouUoPkPgaw9DOWVMR/G2ErdrkfVfzCY3eVA==} + '@angular/platform-browser@21.0.0-next.8': + resolution: {integrity: sha512-nOdVbkHDGpi0pNTFd/uhyBXX/z1zzq72p3m7G3yoCME3e/soekJMK5E0yRlliL7bK2yA3gH8UjOuh1hXsExMQg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-next.7 - '@angular/common': 21.0.0-next.7 - '@angular/core': 21.0.0-next.7 + '@angular/animations': 21.0.0-next.8 + '@angular/common': 21.0.0-next.8 + '@angular/core': 21.0.0-next.8 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-next.7': - resolution: {integrity: sha512-8Z6u1GFPHuFcKdA4yUv+bx15u6lV8+/oTNA7Y0ebnOCKw1smMcxqxEmoNoj1EOM01DR1Xg1YnCRcEYjYawqFQg==} + '@angular/platform-server@21.0.0-next.8': + resolution: {integrity: sha512-Yfc4GtHh+w9LKJccI5Quo5NSnxodyZ4yy/CwcAkF3WrWbvxjjGel1Fv3U2ZU6JzDkLtkeTk7tibs9CZghdG9qQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.7 - '@angular/compiler': 21.0.0-next.7 - '@angular/core': 21.0.0-next.7 - '@angular/platform-browser': 21.0.0-next.7 + '@angular/common': 21.0.0-next.8 + '@angular/compiler': 21.0.0-next.8 + '@angular/core': 21.0.0-next.8 + '@angular/platform-browser': 21.0.0-next.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-next.7': - resolution: {integrity: sha512-idWEHAUP63vOVEo56Lyw3+/0RgAEHQu/sPPXDr87ylAJBNPj9eCQFGYobYCPXAkeqoyQF7BVjCS/S77e4HpIfA==} + '@angular/router@21.0.0-next.8': + resolution: {integrity: sha512-1tqI7+jy1JtCXUdRkemDSAFttUZkYn8ZmAHvDJLVQIz1hlkDUYNu/482J6HbOBVvnsKFO/gTdc43Z5pUKzj9eQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.7 - '@angular/core': 21.0.0-next.7 - '@angular/platform-browser': 21.0.0-next.7 + '@angular/common': 21.0.0-next.8 + '@angular/core': 21.0.0-next.8 + '@angular/platform-browser': 21.0.0-next.8 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-next.7': - resolution: {integrity: sha512-Rx3TIxqLJUle9PVN8+AnDoL1GMk8rIX3Qvfxhl7GvuNSPEeJxSEXpHlSCnmyHoOI5ULjS6OLorX4yK3N3rKbNQ==} + '@angular/service-worker@21.0.0-next.8': + resolution: {integrity: sha512-RheiuwCOq7SBaoks/9HhMQgPxxtSvlW44Cw07POcRlL/rGpjWqCR7L4IL8x1RPXrK8pBwJcGcI9gNuszc8DvJg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-next.7 + '@angular/core': 21.0.0-next.8 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -9303,28 +9303,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.8(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-next.7 + '@angular/compiler': 21.0.0-next.8 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9338,30 +9338,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-next.7': + '@angular/compiler@21.0.0-next.8': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-next.7 + '@angular/compiler': 21.0.0-next.8 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.7(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(@angular/compiler@21.0.0-next.7)': + '@angular/localize@21.0.0-next.8(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(@angular/compiler@21.0.0-next.8)': dependencies: - '@angular/compiler': 21.0.0-next.7 - '@angular/compiler-cli': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) + '@angular/compiler': 21.0.0-next.8 + '@angular/compiler-cli': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9369,13 +9369,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.8(05250061371eb0125d7904add36a5bf0)': + '@angular/material@21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff)': dependencies: - '@angular/cdk': 21.0.0-next.8(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 @@ -9440,35 +9440,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.7)(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.8)(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-next.7 - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-next.8 + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-next.7(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.7(@angular/animations@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-next.7(@angular/core@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -16212,10 +16212,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.7(@angular/compiler@21.0.0-next.7)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.4) '@rollup/wasm-node': 4.52.4 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 64377f6f3674..82bbaa481df4 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#a305efe29065b79e5e57959063fab442ae8af9b6", - "@angular/cdk": "github:angular/cdk-builds#0323a2e830d0d61d3e9d720af07013c0b980e61e", - "@angular/common": "github:angular/common-builds#88fb1a3d6c8e49c7e61425b2c0fdfa326d3245ec", - "@angular/compiler": "github:angular/compiler-builds#d80b91aff76d5fa5edd23d834a892df692b6d23e", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#8892c1b42825e03ddcb6385f2cd3e7b2e3d001a6", - "@angular/core": "github:angular/core-builds#657ddc60b8e738d40f14e4554627be741e9001dd", - "@angular/forms": "github:angular/forms-builds#70c2037c8a6a7cfb6517e142955b4ef805a6f936", - "@angular/language-service": "github:angular/language-service-builds#3551bacb9962f1afcf34ad1df252d9280c7bc716", - "@angular/localize": "github:angular/localize-builds#d4badccd8bda536f9279183abae986afaa8c08c7", - "@angular/material": "github:angular/material-builds#258b49a5a24f64800bfcff34a053d8a2b2fda782", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f2429aae747ddf721917a74f1496ecfd902f29b0", - "@angular/platform-browser": "github:angular/platform-browser-builds#f88851f8ffb891cc53ed1d786a7388d7d8767502", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#4b94a7b283bde9a0a14718433d7d9f40331b6ef6", - "@angular/platform-server": "github:angular/platform-server-builds#d56b894057fad01b24c71d262f1114f976b6db61", - "@angular/router": "github:angular/router-builds#2555397d85367cc4881f9031a6548a6fd7f6c249", - "@angular/service-worker": "github:angular/service-worker-builds#5fac0e2e78a4be262fd5ec1c592632b27a3eda11" + "@angular/animations": "github:angular/animations-builds#cb23c48d6d1d326ecb7fa8436d4cd7b68850c184", + "@angular/cdk": "github:angular/cdk-builds#c9c3e25c1de721f85df28fc130619a95b167a60c", + "@angular/common": "github:angular/common-builds#82a5ff164f96864f3107e7e02fbd6d67dc318b85", + "@angular/compiler": "github:angular/compiler-builds#3db206d370ea0a154ee570bd31b68f08ea0fcd04", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#2a3d4ab38ed6df93838dd924658b6d297b49b191", + "@angular/core": "github:angular/core-builds#79810e471a05c7d1ae36a751712bfb3ac5a20d4e", + "@angular/forms": "github:angular/forms-builds#e482de1fdbc1aca8e79549a16713d90c86aa9505", + "@angular/language-service": "github:angular/language-service-builds#2ebc014b053a9960c718b806b55c8c78391eb590", + "@angular/localize": "github:angular/localize-builds#24e1b265264c72a97423f396abd567d42355f409", + "@angular/material": "github:angular/material-builds#bd4ef418482b9e0cf5fdc85c309f157edbf81bbe", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f03694099a0971d7ac9b0e29af5b5bd35f1d18d3", + "@angular/platform-browser": "github:angular/platform-browser-builds#12d4b295c5b7a0b5937ef20954d387c007da1b4d", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#96956c922bde8062977a8fe9dfd3ea5a413eb9e9", + "@angular/platform-server": "github:angular/platform-server-builds#e2631087445e997c98fd4bf23016685b3828267f", + "@angular/router": "github:angular/router-builds#1fc9b36111e132db1d4990eb215a9ee91e0496b3", + "@angular/service-worker": "github:angular/service-worker-builds#cda897575520e46a8ff3479434ee82aec2da2d26" } } From ad8084899cd502ec12c5a651b09d13586485f4b4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 14 Oct 2025 07:22:46 +0000 Subject: [PATCH 1620/2162] Revert "refactor(@angular/ssr): handle promise-like results from `loadChildrenHelper`" This reverts commit 64c74b46edc03db7afd8de6f4ab33754412ef1be. --- packages/angular/ssr/src/routes/ng-routes.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index a555eeb88dd9..2a9281f40e9b 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -205,14 +205,7 @@ async function* handleRoute(options: { ) : parentInjector; - // TODO(alanagius): replace all the below when FW 21.0.0-next.7 is out. - const loadChildrenHelperResult = loadChildrenHelper(route, compiler, routeInjector); - const loadedChildRoutes = await ('then' in loadChildrenHelperResult - ? (loadChildrenHelperResult as unknown as ReturnType< - typeof loadChildrenHelperResult.toPromise - >) - : loadChildrenHelperResult.toPromise()); - + const loadedChildRoutes = await loadChildrenHelper(route, compiler, routeInjector); if (loadedChildRoutes) { const { routes: childRoutes, injector = routeInjector } = loadedChildRoutes; yield* traverseRoutesConfig({ From 85c18b4ead77c6c090b9f5c63e9e034e58369152 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 15 Oct 2025 08:42:22 +0000 Subject: [PATCH 1621/2162] fix(@angular/ssr): correctly handle routes with matrix parameters This commit introduces a change to strip matrix parameters from the URL before route matching in Angular SSR. Previously, URLs containing matrix parameters would fail to match their corresponding routes. A new `stripMatrixParams` utility function has been added to remove these parameters, ensuring that route matching is not affected by their presence. Closes #31457 --- packages/angular/ssr/src/routes/router.ts | 8 +++--- packages/angular/ssr/src/utils/url.ts | 24 ++++++++++++++++++ packages/angular/ssr/test/utils/url_spec.ts | 27 +++++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/packages/angular/ssr/src/routes/router.ts b/packages/angular/ssr/src/routes/router.ts index 715a56b5753a..f01e9989028e 100644 --- a/packages/angular/ssr/src/routes/router.ts +++ b/packages/angular/ssr/src/routes/router.ts @@ -7,7 +7,7 @@ */ import { AngularAppManifest } from '../manifest'; -import { stripIndexHtmlFromURL } from '../utils/url'; +import { stripIndexHtmlFromURL, stripMatrixParams } from '../utils/url'; import { extractRoutesAndCreateRouteTree } from './ng-routes'; import { RouteTree, RouteTreeNodeMetadata } from './route-tree'; @@ -85,8 +85,10 @@ export class ServerRouter { match(url: URL): RouteTreeNodeMetadata | undefined { // Strip 'index.html' from URL if present. // A request to `http://www.example.com/page/index.html` will render the Angular route corresponding to `http://www.example.com/page`. - const { pathname } = stripIndexHtmlFromURL(url); + let { pathname } = stripIndexHtmlFromURL(url); + pathname = stripMatrixParams(pathname); + pathname = decodeURIComponent(pathname); - return this.routeTree.match(decodeURIComponent(pathname)); + return this.routeTree.match(pathname); } } diff --git a/packages/angular/ssr/src/utils/url.ts b/packages/angular/ssr/src/utils/url.ts index 9d42ddd6db00..9b5edede7f8e 100644 --- a/packages/angular/ssr/src/utils/url.ts +++ b/packages/angular/ssr/src/utils/url.ts @@ -196,3 +196,27 @@ export function buildPathWithParams(toPath: string, fromPath: string): string { return joinUrlParts(...resolvedParts); } + +const MATRIX_PARAMS_REGEX = /;[^/]+/g; + +/** + * Removes Angular matrix parameters from a given URL path. + * + * This function takes a URL path string and removes any matrix parameters. + * Matrix parameters are parts of a URL segment that start with a semicolon `;`. + * + * @param pathname - The URL path to remove matrix parameters from. + * @returns The URL path with matrix parameters removed. + * + * @example + * ```ts + * stripMatrixParams('/path;param=value'); // returns '/path' + * stripMatrixParams('/path;param=value/to;p=1/resource'); // returns '/path/to/resource' + * stripMatrixParams('/path/to/resource'); // returns '/path/to/resource' + * ``` + */ +export function stripMatrixParams(pathname: string): string { + // Use a regular expression to remove matrix parameters. + // This regex finds all occurrences of a semicolon followed by any characters + return pathname.includes(';') ? pathname.replace(MATRIX_PARAMS_REGEX, '') : pathname; +} diff --git a/packages/angular/ssr/test/utils/url_spec.ts b/packages/angular/ssr/test/utils/url_spec.ts index b6fcd4e7e767..9a7a7cb3ad49 100644 --- a/packages/angular/ssr/test/utils/url_spec.ts +++ b/packages/angular/ssr/test/utils/url_spec.ts @@ -13,6 +13,7 @@ import { joinUrlParts, stripIndexHtmlFromURL, stripLeadingSlash, + stripMatrixParams, stripTrailingSlash, } from '../../src/utils/url'; @@ -181,4 +182,30 @@ describe('URL Utils', () => { }).toThrowError(`Invalid toPath: The string must start with a '/'. Received: 'details'`); }); }); + + describe('stripMatrixParams', () => { + it('should remove a single matrix parameter', () => { + expect(stripMatrixParams('/path;param=value')).toBe('/path'); + }); + + it('should remove multiple matrix parameters in the same segment', () => { + expect(stripMatrixParams('/path;p1=v1;p2=v2')).toBe('/path'); + }); + + it('should remove matrix parameters from multiple segments', () => { + expect(stripMatrixParams('/path;p1=v1/to;p2=v2/resource')).toBe('/path/to/resource'); + }); + + it('should not modify a path without matrix parameters', () => { + expect(stripMatrixParams('/path/to/resource')).toBe('/path/to/resource'); + }); + + it('should handle a root path with matrix parameters', () => { + expect(stripMatrixParams('/;p1=v1')).toBe('/'); + }); + + it('should handle an empty string', () => { + expect(stripMatrixParams('')).toBe(''); + }); + }); }); From 58dcfd1094fec52102f339e8fd3b5dd2925229b9 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 16 Oct 2025 13:54:17 +0000 Subject: [PATCH 1622/2162] fix(@angular/ssr): ensure server-side navigation triggers a redirect When a navigation occurs on the server-side, such as using `router.navigate`, and the final URL is different from the initial URL that was requested, the server should respond with a redirect. Previously, the initial URL was being read from `router.lastSuccessfulNavigation.initialUrl`, which could be incorrect in scenarios involving server-side navigations, causing the comparison with the final URL to fail and preventing the redirect. This change ensures that the initial URL requested by the browser is used for the comparison, correctly triggering a redirect when necessary. Closes #31482 --- packages/angular/ssr/src/utils/ng.ts | 12 +++-- packages/angular/ssr/test/app-engine_spec.ts | 12 ----- packages/angular/ssr/test/app_spec.ts | 49 +++++++++++++++++++- 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index fe8148727425..34b2e8e36024 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -96,24 +96,26 @@ export async function renderAngular( applicationRef = await bootstrap({ platformRef }); } + const envInjector = applicationRef.injector; + const router = envInjector.get(Router); + const initialUrl = router.currentNavigation()?.initialUrl.toString(); + // Block until application is stable. await applicationRef.whenStable(); // TODO(alanagius): Find a way to avoid rendering here especially for redirects as any output will be discarded. - const envInjector = applicationRef.injector; const routerIsProvided = !!envInjector.get(ActivatedRoute, null); - const router = envInjector.get(Router); const lastSuccessfulNavigation = router.lastSuccessfulNavigation(); if (!routerIsProvided) { hasNavigationError = false; - } else if (lastSuccessfulNavigation?.finalUrl) { + } else if (lastSuccessfulNavigation?.finalUrl && initialUrl !== null) { hasNavigationError = false; - const { finalUrl, initialUrl } = lastSuccessfulNavigation; + const { finalUrl } = lastSuccessfulNavigation; const finalUrlStringified = finalUrl.toString(); - if (initialUrl.toString() !== finalUrlStringified) { + if (initialUrl !== finalUrlStringified) { const baseHref = envInjector.get(APP_BASE_HREF, null, { optional: true }) ?? envInjector.get(PlatformLocation).getBaseHrefFromDOM(); diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index 90c8d9ae10cc..966edadce843 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -19,18 +19,6 @@ import { RenderMode } from '../src/routes/route-config'; import { setAngularAppTestingManifest } from './testing-utils'; function createEntryPoint(locale: string) { - @Component({ - selector: `app-ssr-${locale}`, - template: `SSR works ${locale.toUpperCase()}`, - }) - class SSRComponent {} - - @Component({ - selector: `app-ssg-${locale}`, - template: `SSG works ${locale.toUpperCase()}`, - }) - class SSGComponent {} - return async () => { @Component({ selector: `app-home-${locale}`, diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index e5ccddbfddbf..f85d4700329f 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -11,7 +11,8 @@ import '@angular/compiler'; /* eslint-enable import/no-unassigned-import */ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; +import { CanActivateFn, Router } from '@angular/router'; import { AngularServerApp } from '../src/app'; import { RenderMode } from '../src/routes/route-config'; import { setAngularAppTestingManifest } from './testing-utils'; @@ -26,6 +27,31 @@ describe('AngularServerApp', () => { }) class HomeComponent {} + @Component({ + selector: 'app-redirect', + }) + class RedirectComponent { + constructor() { + void inject(Router).navigate([], { + queryParams: { filter: 'test' }, + }); + } + } + + const queryParamAdderGuard: CanActivateFn = (_route, state) => { + const urlTree = inject(Router).parseUrl(state.url); + + if (urlTree.queryParamMap.has('filter')) { + return true; + } + + urlTree.queryParams = { + filter: 'test', + }; + + return urlTree; + }; + setAngularAppTestingManifest( [ { path: 'home', component: HomeComponent }, @@ -33,7 +59,14 @@ describe('AngularServerApp', () => { { path: 'home-ssg', component: HomeComponent }, { path: 'page-with-headers', component: HomeComponent }, { path: 'page-with-status', component: HomeComponent }, + { path: 'redirect', redirectTo: 'home' }, + { path: 'redirect-via-navigate', component: RedirectComponent }, + { + path: 'redirect-via-guard', + canActivate: [queryParamAdderGuard], + component: HomeComponent, + }, { path: 'redirect/relative', redirectTo: 'home' }, { path: 'redirect/:param/relative', redirectTo: 'home' }, { path: 'redirect/absolute', redirectTo: '/home' }, @@ -259,11 +292,23 @@ describe('AngularServerApp', () => { }); describe('SSR pages', () => { - it('returns a 302 status and redirects to the correct location when redirectTo is a function', async () => { + it('returns a 302 status and redirects to the correct location when `redirectTo` is a function', async () => { const response = await app.handle(new Request('http://localhost/redirect-to-function')); expect(response?.headers.get('location')).toBe('/home'); expect(response?.status).toBe(302); }); + + it('returns a 302 status and redirects to the correct location when `router.navigate` is used', async () => { + const response = await app.handle(new Request('http://localhost/redirect-via-navigate')); + expect(response?.headers.get('location')).toBe('/redirect-via-navigate?filter=test'); + expect(response?.status).toBe(302); + }); + + it('returns a 302 status and redirects to the correct location when `urlTree` is updated in a guard', async () => { + const response = await app.handle(new Request('http://localhost/redirect-via-guard')); + expect(response?.headers.get('location')).toBe('/redirect-via-guard?filter=test'); + expect(response?.status).toBe(302); + }); }); }); }); From 7bd25ab057c11a977214d04cd6d60d76295226c3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 16 Oct 2025 16:40:29 +0000 Subject: [PATCH 1623/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 581366706c5b..f31cf3cc4025 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + - uses: angular/dev-infra/github-actions/branch-manager@c776985eeff8f041f142d85577210976c98a2922 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5179e68981ce..d06fa27287ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 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@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - 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 0533aac7d140..d649d8ce7bff 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + - uses: angular/dev-infra/github-actions/pull-request-labeling@c776985eeff8f041f142d85577210976c98a2922 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + - uses: angular/dev-infra/github-actions/post-approval-changes@c776985eeff8f041f142d85577210976c98a2922 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 607645f76352..258c3ec30196 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@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + - uses: angular/dev-infra/github-actions/feature-request@c776985eeff8f041f142d85577210976c98a2922 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c0eb63c5520d..578b0a37eb07 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@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - 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@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - 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 bb787bfb9427..46ca894c1fd5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/linting/licenses@c776985eeff8f041f142d85577210976c98a2922 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 - 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@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 - 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/MODULE.bazel b/MODULE.bazel index edd55cf619d9..0339ff1d92b5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42", + commit = "c776985eeff8f041f142d85577210976c98a2922", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index a6c245227612..13b7636db55c 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.8", "@angular/localize": "21.0.0-next.8", "@angular/material": "21.0.0-next.9", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2feb4d5082bd3322d64282894b81809c1cf93ca9", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5cd66227d38bb0feed0989254757ca51077a8607", "@angular/platform-browser": "21.0.0-next.8", "@angular/platform-server": "21.0.0-next.8", "@angular/router": "21.0.0-next.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 051a1266a960..53b4a75842d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.9 version: 21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2feb4d5082bd3322d64282894b81809c1cf93ca9 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9(@modelcontextprotocol/sdk@1.20.0) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5cd66227d38bb0feed0989254757ca51077a8607 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5cd66227d38bb0feed0989254757ca51077a8607(@modelcontextprotocol/sdk@1.20.0) '@angular/platform-browser': specifier: 21.0.0-next.8 version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/2feb4d5082bd3322d64282894b81809c1cf93ca9': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2feb4d5082bd3322d64282894b81809c1cf93ca9} - version: 0.0.0-1fd3f8b3fa8d9c438135bc6c5cecacd07920ef42 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5cd66227d38bb0feed0989254757ca51077a8607': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5cd66227d38bb0feed0989254757ca51077a8607} + version: 0.0.0-c776985eeff8f041f142d85577210976c98a2922 hasBin: true '@angular/platform-browser@21.0.0-next.8': @@ -9379,7 +9379,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/2feb4d5082bd3322d64282894b81809c1cf93ca9(@modelcontextprotocol/sdk@1.20.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5cd66227d38bb0feed0989254757ca51077a8607(@modelcontextprotocol/sdk@1.20.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 82bbaa481df4..6aa291465ec8 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#cb23c48d6d1d326ecb7fa8436d4cd7b68850c184", - "@angular/cdk": "github:angular/cdk-builds#c9c3e25c1de721f85df28fc130619a95b167a60c", - "@angular/common": "github:angular/common-builds#82a5ff164f96864f3107e7e02fbd6d67dc318b85", - "@angular/compiler": "github:angular/compiler-builds#3db206d370ea0a154ee570bd31b68f08ea0fcd04", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#2a3d4ab38ed6df93838dd924658b6d297b49b191", - "@angular/core": "github:angular/core-builds#79810e471a05c7d1ae36a751712bfb3ac5a20d4e", - "@angular/forms": "github:angular/forms-builds#e482de1fdbc1aca8e79549a16713d90c86aa9505", - "@angular/language-service": "github:angular/language-service-builds#2ebc014b053a9960c718b806b55c8c78391eb590", - "@angular/localize": "github:angular/localize-builds#24e1b265264c72a97423f396abd567d42355f409", - "@angular/material": "github:angular/material-builds#bd4ef418482b9e0cf5fdc85c309f157edbf81bbe", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f03694099a0971d7ac9b0e29af5b5bd35f1d18d3", - "@angular/platform-browser": "github:angular/platform-browser-builds#12d4b295c5b7a0b5937ef20954d387c007da1b4d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#96956c922bde8062977a8fe9dfd3ea5a413eb9e9", - "@angular/platform-server": "github:angular/platform-server-builds#e2631087445e997c98fd4bf23016685b3828267f", - "@angular/router": "github:angular/router-builds#1fc9b36111e132db1d4990eb215a9ee91e0496b3", - "@angular/service-worker": "github:angular/service-worker-builds#cda897575520e46a8ff3479434ee82aec2da2d26" + "@angular/animations": "github:angular/animations-builds#fb2d783ccc3153f56bc6010e6a683a294637136c", + "@angular/cdk": "github:angular/cdk-builds#c2b41af60c88bbc0225fa23a88c29f6449adb938", + "@angular/common": "github:angular/common-builds#e664a445458b901cf21b51dd2993629a08ce12ee", + "@angular/compiler": "github:angular/compiler-builds#efbe03a828c24ee9f587c40b1bf6d8d75bdfe92f", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#4734d0579a111be67805e0b2a8c32e2dc20f79b3", + "@angular/core": "github:angular/core-builds#b1033ef73e2404fb3c3b89a15320bcd4f2639870", + "@angular/forms": "github:angular/forms-builds#0d5905406b3f4bb4ad097801f924b254376d328b", + "@angular/language-service": "github:angular/language-service-builds#5545d48c8f490449d706edc82e25eca7bd93cb72", + "@angular/localize": "github:angular/localize-builds#d5a4f3552bf50577b7a91e53ff64312b0f9890b2", + "@angular/material": "github:angular/material-builds#e5aeb1669422dd9ad56916f460c35c1c20643e27", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#438b8c4ded3a283d13878a4ca93a076b4796d89c", + "@angular/platform-browser": "github:angular/platform-browser-builds#6543e1ad70d1f381eb1936145013bf8d43a2ef93", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#9470275a7439894074f0025e72d867fc470d85b4", + "@angular/platform-server": "github:angular/platform-server-builds#46631ea1963d0c1045f0492029a5a92c04c82479", + "@angular/router": "github:angular/router-builds#181912cf50ddfcf69964530231c6fde843f109c1", + "@angular/service-worker": "github:angular/service-worker-builds#6e5d6ee951e7e078de818baed6eccbda7478b153" } } From de17f183bf8fdbafabf4563e0b39854ab473259e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 16 Oct 2025 16:06:08 +0000 Subject: [PATCH 1624/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 4 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 556 +++++++++--------- 5 files changed, 284 insertions(+), 284 deletions(-) diff --git a/package.json b/package.json index 13b7636db55c..82003863ca72 100644 --- a/package.json +++ b/package.json @@ -99,8 +99,8 @@ "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", - "esbuild": "0.25.10", - "esbuild-wasm": "0.25.10", + "esbuild": "0.25.11", + "esbuild-wasm": "0.25.11", "eslint": "9.37.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 0d3c54b4a0ff..e98d533ca8e8 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -27,7 +27,7 @@ "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", - "esbuild": "0.25.10", + "esbuild": "0.25.11", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 596a7cafb039..7791490861e4 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -30,7 +30,7 @@ "@modelcontextprotocol/sdk": "1.20.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.40.0", + "algoliasearch": "5.40.1", "ini": "5.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.4", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 0f534ce6497f..766a82b791fd 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -28,7 +28,7 @@ "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.25.10", + "esbuild-wasm": "0.25.11", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -62,7 +62,7 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.25.10" + "esbuild": "0.25.11" }, "devDependencies": { "@angular/ssr": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53b4a75842d4..1737b7da616d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,7 +123,7 @@ importers: version: 3.0.8 '@types/loader-utils': specifier: ^3.0.0 - version: 3.0.0(esbuild@0.25.10) + version: 3.0.0(esbuild@0.25.11) '@types/lodash': specifier: ^4.17.0 version: 4.17.20 @@ -179,11 +179,11 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.25.10 - version: 0.25.10 + specifier: 0.25.11 + version: 0.25.11 esbuild-wasm: - specifier: 0.25.10 - version: 0.25.10 + specifier: 0.25.11 + version: 0.25.11 eslint: specifier: 9.37.0 version: 9.37.0(jiti@2.6.1) @@ -380,8 +380,8 @@ importers: specifier: ^4.26.0 version: 4.26.3 esbuild: - specifier: 0.25.10 - version: 0.25.10 + specifier: 0.25.11 + version: 0.25.11 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.2.2) @@ -487,8 +487,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.40.0 - version: 5.40.0 + specifier: 5.40.1 + version: 5.40.1 ini: specifier: 5.0.0 version: 5.0.0 @@ -652,19 +652,19 @@ importers: version: 10.4.21(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.10)) + version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.11)) browserslist: specifier: ^4.26.0 version: 4.26.3 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.102.1(esbuild@0.25.10)) + version: 13.0.1(webpack@5.102.1(esbuild@0.25.11)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.102.1(esbuild@0.25.10)) + version: 7.1.2(webpack@5.102.1(esbuild@0.25.11)) esbuild-wasm: - specifier: 0.25.10 - version: 0.25.10 + specifier: 0.25.11 + version: 0.25.11 http-proxy-middleware: specifier: 3.0.5 version: 3.0.5 @@ -682,16 +682,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.10)) + version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.11)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.102.1(esbuild@0.25.10)) + version: 4.0.2(webpack@5.102.1(esbuild@0.25.11)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.102.1(esbuild@0.25.10)) + version: 2.9.4(webpack@5.102.1(esbuild@0.25.11)) open: specifier: 10.2.0 version: 10.2.0 @@ -709,7 +709,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.10)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -721,13 +721,13 @@ importers: version: 1.93.2 sass-loader: specifier: 16.0.5 - version: 16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.10)) + version: 16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.102.1(esbuild@0.25.10)) + version: 5.0.0(webpack@5.102.1(esbuild@0.25.11)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -745,19 +745,19 @@ importers: version: 2.8.1 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.10) + version: 5.102.1(esbuild@0.25.11) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.102.1(esbuild@0.25.10)) + version: 7.4.5(webpack@5.102.1(esbuild@0.25.11)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.10)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.11)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.102.1(esbuild@0.25.10)) + version: 5.1.0(webpack@5.102.1(esbuild@0.25.11)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -776,8 +776,8 @@ importers: version: 7.16.0 optionalDependencies: esbuild: - specifier: 0.25.10 - version: 0.25.10 + specifier: 0.25.11 + version: 0.25.11 packages/angular_devkit/build_webpack: dependencies: @@ -796,10 +796,10 @@ importers: version: link:../../ngtools/webpack webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.10) + version: 5.102.1(esbuild@0.25.11) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.10)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.11)) packages/angular_devkit/core: dependencies: @@ -878,7 +878,7 @@ importers: version: 5.9.3 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.10) + version: 5.102.1(esbuild@0.25.11) packages/schematics/angular: dependencies: @@ -918,60 +918,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.6.0': - resolution: {integrity: sha512-c4M/Z/KWkEG+RHpZsWKDTTlApXu3fe4vlABNcpankWBhdMe4oPZ/r4JxEr2zKUP6K+BT66tnp8UbHmgOd/vvqQ==} + '@algolia/abtesting@1.6.1': + resolution: {integrity: sha512-wV/gNRkzb7sI9vs1OneG129hwe3Q5zPj7zigz3Ps7M5Lpo2hSorrOnXNodHEOV+yXE/ks4Pd+G3CDFIjFTWhMQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.40.0': - resolution: {integrity: sha512-qegVlgHtmiS8m9nEsuKUVhlw1FHsIshtt5nhNnA6EYz3g+tm9+xkVZZMzkrMLPP7kpoheHJZAwz2MYnHtwFa9A==} + '@algolia/client-abtesting@5.40.1': + resolution: {integrity: sha512-cxKNATPY5t+Mv8XAVTI57altkaPH+DZi4uMrnexPxPHODMljhGYY+GDZyHwv9a+8CbZHcY372OkxXrDMZA4Lnw==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.40.0': - resolution: {integrity: sha512-Dw2c+6KGkw7mucnnxPyyMsIGEY8+hqv6oB+viYB612OMM3l8aNaWToBZMnNvXsyP+fArwq7XGR+k3boPZyV53A==} + '@algolia/client-analytics@5.40.1': + resolution: {integrity: sha512-XP008aMffJCRGAY8/70t+hyEyvqqV7YKm502VPu0+Ji30oefrTn2al7LXkITz7CK6I4eYXWRhN6NaIUi65F1OA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.40.0': - resolution: {integrity: sha512-dbE4+MJIDsTghG3hUYWBq7THhaAmqNqvW9g2vzwPf5edU4IRmuYpKtY3MMotes8/wdTasWG07XoaVhplJBlvdg==} + '@algolia/client-common@5.40.1': + resolution: {integrity: sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.40.0': - resolution: {integrity: sha512-SH6zlROyGUCDDWg71DlCnbbZ/zEHYPZC8k901EAaBVhvY43Ju8Wa6LAcMPC4tahcDBgkG2poBy8nJZXvwEWAlQ==} + '@algolia/client-insights@5.40.1': + resolution: {integrity: sha512-RTLjST/t+lsLMouQ4zeLJq2Ss+UNkLGyNVu+yWHanx6kQ3LT5jv8UvPwyht9s7R6jCPnlSI77WnL80J32ZuyJg==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.40.0': - resolution: {integrity: sha512-EgHjJEEf7CbUL9gJHI1ULmAtAFeym2cFNSAi1uwHelWgLPcnLjYW2opruPxigOV7NcetkGu+t2pcWOWmZFuvKQ==} + '@algolia/client-personalization@5.40.1': + resolution: {integrity: sha512-2FEK6bUomBzEYkTKzD0iRs7Ljtjb45rKK/VSkyHqeJnG+77qx557IeSO0qVFE3SfzapNcoytTofnZum0BQ6r3Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.40.0': - resolution: {integrity: sha512-HvE1jtCag95DR41tDh7cGwrMk4X0aQXPOBIhZRmsBPolMeqRJz0kvfVw8VCKvA1uuoAkjFfTG0X0IZED+rKXoA==} + '@algolia/client-query-suggestions@5.40.1': + resolution: {integrity: sha512-Nju4NtxAvXjrV2hHZNLKVJLXjOlW6jAXHef/CwNzk1b2qIrCWDO589ELi5ZHH1uiWYoYyBXDQTtHmhaOVVoyXg==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.40.0': - resolution: {integrity: sha512-nlr/MMgoLNUHcfWC5Ns2ENrzKx9x51orPc6wJ8Ignv1DsrUmKm0LUih+Tj3J+kxYofzqQIQRU495d4xn3ozMbg==} + '@algolia/client-search@5.40.1': + resolution: {integrity: sha512-Mw6pAUF121MfngQtcUb5quZVqMC68pSYYjCRZkSITC085S3zdk+h/g7i6FxnVdbSU6OztxikSDMh1r7Z+4iPlA==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.40.0': - resolution: {integrity: sha512-OfHnhE+P0f+p3i90Kmshf9Epgesw5oPV1IEUOY4Mq1HV7cQk16gvklVN1EaY/T9sVavl+Vc3g4ojlfpIwZFA4g==} + '@algolia/ingestion@1.40.1': + resolution: {integrity: sha512-z+BPlhs45VURKJIxsR99NNBWpUEEqIgwt10v/fATlNxc4UlXvALdOsWzaFfe89/lbP5Bu4+mbO59nqBC87ZM/g==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.40.0': - resolution: {integrity: sha512-SWANV32PTKhBYvwKozeWP9HOnVabOixAuPdFFGoqtysTkkwutrtGI/rrh80tvG+BnQAmZX0vUmD/RqFZVfr/Yg==} + '@algolia/monitoring@1.40.1': + resolution: {integrity: sha512-VJMUMbO0wD8Rd2VVV/nlFtLJsOAQvjnVNGkMkspFiFhpBA7s/xJOb+fJvvqwKFUjbKTUA7DjiSi1ljSMYBasXg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.40.0': - resolution: {integrity: sha512-1Qxy9I5bSb3mrhPk809DllMa561zl5hLsMR6YhIqNkqQ0OyXXQokvJ2zApSxvd39veRZZnhN+oGe+XNoNwLgkw==} + '@algolia/recommend@5.40.1': + resolution: {integrity: sha512-ehvJLadKVwTp9Scg9NfzVSlBKH34KoWOQNTaN8i1Ac64AnO6iH2apJVSP6GOxssaghZ/s8mFQsDH3QIZoluFHA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.40.0': - resolution: {integrity: sha512-MGt94rdHfkrVjfN/KwUfWcnaeohYbWGINrPs96f5J7ZyRYpVLF+VtPQ2FmcddFvK4gnKXSu8BAi81hiIhUpm3w==} + '@algolia/requester-browser-xhr@5.40.1': + resolution: {integrity: sha512-PbidVsPurUSQIr6X9/7s34mgOMdJnn0i6p+N6Ab+lsNhY5eiu+S33kZEpZwkITYBCIbhzDLOvb7xZD3gDi+USA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.40.0': - resolution: {integrity: sha512-wXQ05JZZ10Dr642QVAkAZ4ZZlU+lh5r6dIBGmm9WElz+1EaQ6BNYtEOTV6pkXuFYsZpeJA89JpDOiwBOP9j24w==} + '@algolia/requester-fetch@5.40.1': + resolution: {integrity: sha512-ThZ5j6uOZCF11fMw9IBkhigjOYdXGXQpj6h4k+T9UkZrF2RlKcPynFzDeRgaLdpYk8Yn3/MnFbwUmib7yxj5Lw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.40.0': - resolution: {integrity: sha512-5qCRoySnzpbQVg2IPLGFCm4LF75pToxI5tdjOYgUMNL/um91aJ4dH3SVdBEuFlVsalxl8mh3bWPgkUmv6NpJiQ==} + '@algolia/requester-node-http@5.40.1': + resolution: {integrity: sha512-H1gYPojO6krWHnUXu/T44DrEun/Wl95PJzMXRcM/szstNQczSbwq6wIFJPI9nyE95tarZfUNU3rgorT+wZ6iCQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -1694,158 +1694,158 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.10': - resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + '@esbuild/aix-ppc64@0.25.11': + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.10': - resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + '@esbuild/android-arm64@0.25.11': + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.10': - resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + '@esbuild/android-arm@0.25.11': + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.10': - resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + '@esbuild/android-x64@0.25.11': + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.10': - resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + '@esbuild/darwin-arm64@0.25.11': + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.10': - resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + '@esbuild/darwin-x64@0.25.11': + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.10': - resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + '@esbuild/freebsd-arm64@0.25.11': + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.10': - resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + '@esbuild/freebsd-x64@0.25.11': + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.10': - resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + '@esbuild/linux-arm64@0.25.11': + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.10': - resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + '@esbuild/linux-arm@0.25.11': + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.10': - resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + '@esbuild/linux-ia32@0.25.11': + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.10': - resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + '@esbuild/linux-loong64@0.25.11': + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.10': - resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + '@esbuild/linux-mips64el@0.25.11': + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.10': - resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + '@esbuild/linux-ppc64@0.25.11': + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.10': - resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + '@esbuild/linux-riscv64@0.25.11': + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.10': - resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + '@esbuild/linux-s390x@0.25.11': + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.10': - resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + '@esbuild/linux-x64@0.25.11': + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.10': - resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + '@esbuild/netbsd-arm64@0.25.11': + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.10': - resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + '@esbuild/netbsd-x64@0.25.11': + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.10': - resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + '@esbuild/openbsd-arm64@0.25.11': + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.10': - resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + '@esbuild/openbsd-x64@0.25.11': + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.10': - resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + '@esbuild/openharmony-arm64@0.25.11': + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.10': - resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + '@esbuild/sunos-x64@0.25.11': + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.10': - resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + '@esbuild/win32-arm64@0.25.11': + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.10': - resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + '@esbuild/win32-ia32@0.25.11': + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.10': - resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + '@esbuild/win32-x64@0.25.11': + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3930,8 +3930,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.40.0: - resolution: {integrity: sha512-a9aIL2E3Z7uYUPMCmjMFFd5MWhn+ccTubEvnMy7rOTZCB62dXBJtz0R5BZ/TPuX3R9ocBsgWuAbGWQ+Ph4Fmlg==} + algoliasearch@5.40.1: + resolution: {integrity: sha512-iUNxcXUNg9085TJx0HJLjqtDE0r1RZ0GOGrt8KNQqQT5ugu8lZsHuMUYW/e0lHhq6xBvmktU9Bw4CXP9VQeKrg==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -5104,13 +5104,13 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.25.10: - resolution: {integrity: sha512-IyyfrTA2iiOh/uhlaJj0aUDgW42lFhr29ZeKouVNOz/8mLyuqWbEuVst+B4RBH18pb3AcOHnaOgyskAbsVOe3A==} + esbuild-wasm@0.25.11: + resolution: {integrity: sha512-60gllbYFIRGzB6KALBB5Va9Wy3VeCi2U0NgmM7r+TFnRgzeEyoCn2D7fhacW2zWbd7MUeTKLDE7RlfYGBQ00bw==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.10: - resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + esbuild@0.25.11: + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} engines: {node: '>=18'} hasBin: true @@ -9214,89 +9214,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.6.0': + '@algolia/abtesting@1.6.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/client-abtesting@5.40.0': + '@algolia/client-abtesting@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/client-analytics@5.40.0': + '@algolia/client-analytics@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/client-common@5.40.0': {} + '@algolia/client-common@5.40.1': {} - '@algolia/client-insights@5.40.0': + '@algolia/client-insights@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/client-personalization@5.40.0': + '@algolia/client-personalization@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/client-query-suggestions@5.40.0': + '@algolia/client-query-suggestions@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/client-search@5.40.0': + '@algolia/client-search@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/ingestion@1.40.0': + '@algolia/ingestion@1.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/monitoring@1.40.0': + '@algolia/monitoring@1.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/recommend@5.40.0': + '@algolia/recommend@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + '@algolia/client-common': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 - '@algolia/requester-browser-xhr@5.40.0': + '@algolia/requester-browser-xhr@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 + '@algolia/client-common': 5.40.1 - '@algolia/requester-fetch@5.40.0': + '@algolia/requester-fetch@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 + '@algolia/client-common': 5.40.1 - '@algolia/requester-node-http@5.40.0': + '@algolia/requester-node-http@5.40.1': dependencies: - '@algolia/client-common': 5.40.0 + '@algolia/client-common': 5.40.1 '@ampproject/remapping@2.3.0': dependencies: @@ -10243,82 +10243,82 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.10': + '@esbuild/aix-ppc64@0.25.11': optional: true - '@esbuild/android-arm64@0.25.10': + '@esbuild/android-arm64@0.25.11': optional: true - '@esbuild/android-arm@0.25.10': + '@esbuild/android-arm@0.25.11': optional: true - '@esbuild/android-x64@0.25.10': + '@esbuild/android-x64@0.25.11': optional: true - '@esbuild/darwin-arm64@0.25.10': + '@esbuild/darwin-arm64@0.25.11': optional: true - '@esbuild/darwin-x64@0.25.10': + '@esbuild/darwin-x64@0.25.11': optional: true - '@esbuild/freebsd-arm64@0.25.10': + '@esbuild/freebsd-arm64@0.25.11': optional: true - '@esbuild/freebsd-x64@0.25.10': + '@esbuild/freebsd-x64@0.25.11': optional: true - '@esbuild/linux-arm64@0.25.10': + '@esbuild/linux-arm64@0.25.11': optional: true - '@esbuild/linux-arm@0.25.10': + '@esbuild/linux-arm@0.25.11': optional: true - '@esbuild/linux-ia32@0.25.10': + '@esbuild/linux-ia32@0.25.11': optional: true - '@esbuild/linux-loong64@0.25.10': + '@esbuild/linux-loong64@0.25.11': optional: true - '@esbuild/linux-mips64el@0.25.10': + '@esbuild/linux-mips64el@0.25.11': optional: true - '@esbuild/linux-ppc64@0.25.10': + '@esbuild/linux-ppc64@0.25.11': optional: true - '@esbuild/linux-riscv64@0.25.10': + '@esbuild/linux-riscv64@0.25.11': optional: true - '@esbuild/linux-s390x@0.25.10': + '@esbuild/linux-s390x@0.25.11': optional: true - '@esbuild/linux-x64@0.25.10': + '@esbuild/linux-x64@0.25.11': optional: true - '@esbuild/netbsd-arm64@0.25.10': + '@esbuild/netbsd-arm64@0.25.11': optional: true - '@esbuild/netbsd-x64@0.25.10': + '@esbuild/netbsd-x64@0.25.11': optional: true - '@esbuild/openbsd-arm64@0.25.10': + '@esbuild/openbsd-arm64@0.25.11': optional: true - '@esbuild/openbsd-x64@0.25.10': + '@esbuild/openbsd-x64@0.25.11': optional: true - '@esbuild/openharmony-arm64@0.25.10': + '@esbuild/openharmony-arm64@0.25.11': optional: true - '@esbuild/sunos-x64@0.25.10': + '@esbuild/sunos-x64@0.25.11': optional: true - '@esbuild/win32-arm64@0.25.10': + '@esbuild/win32-arm64@0.25.11': optional: true - '@esbuild/win32-ia32@0.25.10': + '@esbuild/win32-ia32@0.25.11': optional: true - '@esbuild/win32-x64@0.25.10': + '@esbuild/win32-x64@0.25.11': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))': @@ -11963,10 +11963,10 @@ snapshots: '@types/less@3.0.8': {} - '@types/loader-utils@3.0.0(esbuild@0.25.10)': + '@types/loader-utils@3.0.0(esbuild@0.25.11)': dependencies: '@types/node': 22.18.10 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12773,22 +12773,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.40.0: - dependencies: - '@algolia/abtesting': 1.6.0 - '@algolia/client-abtesting': 5.40.0 - '@algolia/client-analytics': 5.40.0 - '@algolia/client-common': 5.40.0 - '@algolia/client-insights': 5.40.0 - '@algolia/client-personalization': 5.40.0 - '@algolia/client-query-suggestions': 5.40.0 - '@algolia/client-search': 5.40.0 - '@algolia/ingestion': 1.40.0 - '@algolia/monitoring': 1.40.0 - '@algolia/recommend': 5.40.0 - '@algolia/requester-browser-xhr': 5.40.0 - '@algolia/requester-fetch': 5.40.0 - '@algolia/requester-node-http': 5.40.0 + algoliasearch@5.40.1: + dependencies: + '@algolia/abtesting': 1.6.1 + '@algolia/client-abtesting': 5.40.1 + '@algolia/client-analytics': 5.40.1 + '@algolia/client-common': 5.40.1 + '@algolia/client-insights': 5.40.1 + '@algolia/client-personalization': 5.40.1 + '@algolia/client-query-suggestions': 5.40.1 + '@algolia/client-search': 5.40.1 + '@algolia/ingestion': 1.40.1 + '@algolia/monitoring': 1.40.1 + '@algolia/recommend': 5.40.1 + '@algolia/requester-browser-xhr': 5.40.1 + '@algolia/requester-fetch': 5.40.1 + '@algolia/requester-node-http': 5.40.1 ansi-colors@4.1.3: {} @@ -12955,11 +12955,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.10)): + babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.11)): dependencies: '@babel/core': 7.28.4 find-up: 5.0.0 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): dependencies: @@ -13569,14 +13569,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.25.10)): + copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.25.11)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) core-js-compat@3.46.0: dependencies: @@ -13620,7 +13620,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.102.1(esbuild@0.25.10)): + css-loader@7.1.2(webpack@5.102.1(esbuild@0.25.11)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13631,7 +13631,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) css-select@6.0.0: dependencies: @@ -14085,36 +14085,36 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.25.10: {} + esbuild-wasm@0.25.11: {} - esbuild@0.25.10: + esbuild@0.25.11: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.10 - '@esbuild/android-arm': 0.25.10 - '@esbuild/android-arm64': 0.25.10 - '@esbuild/android-x64': 0.25.10 - '@esbuild/darwin-arm64': 0.25.10 - '@esbuild/darwin-x64': 0.25.10 - '@esbuild/freebsd-arm64': 0.25.10 - '@esbuild/freebsd-x64': 0.25.10 - '@esbuild/linux-arm': 0.25.10 - '@esbuild/linux-arm64': 0.25.10 - '@esbuild/linux-ia32': 0.25.10 - '@esbuild/linux-loong64': 0.25.10 - '@esbuild/linux-mips64el': 0.25.10 - '@esbuild/linux-ppc64': 0.25.10 - '@esbuild/linux-riscv64': 0.25.10 - '@esbuild/linux-s390x': 0.25.10 - '@esbuild/linux-x64': 0.25.10 - '@esbuild/netbsd-arm64': 0.25.10 - '@esbuild/netbsd-x64': 0.25.10 - '@esbuild/openbsd-arm64': 0.25.10 - '@esbuild/openbsd-x64': 0.25.10 - '@esbuild/openharmony-arm64': 0.25.10 - '@esbuild/sunos-x64': 0.25.10 - '@esbuild/win32-arm64': 0.25.10 - '@esbuild/win32-ia32': 0.25.10 - '@esbuild/win32-x64': 0.25.10 + '@esbuild/aix-ppc64': 0.25.11 + '@esbuild/android-arm': 0.25.11 + '@esbuild/android-arm64': 0.25.11 + '@esbuild/android-x64': 0.25.11 + '@esbuild/darwin-arm64': 0.25.11 + '@esbuild/darwin-x64': 0.25.11 + '@esbuild/freebsd-arm64': 0.25.11 + '@esbuild/freebsd-x64': 0.25.11 + '@esbuild/linux-arm': 0.25.11 + '@esbuild/linux-arm64': 0.25.11 + '@esbuild/linux-ia32': 0.25.11 + '@esbuild/linux-loong64': 0.25.11 + '@esbuild/linux-mips64el': 0.25.11 + '@esbuild/linux-ppc64': 0.25.11 + '@esbuild/linux-riscv64': 0.25.11 + '@esbuild/linux-s390x': 0.25.11 + '@esbuild/linux-x64': 0.25.11 + '@esbuild/netbsd-arm64': 0.25.11 + '@esbuild/netbsd-x64': 0.25.11 + '@esbuild/openbsd-arm64': 0.25.11 + '@esbuild/openbsd-x64': 0.25.11 + '@esbuild/openharmony-arm64': 0.25.11 + '@esbuild/sunos-x64': 0.25.11 + '@esbuild/win32-arm64': 0.25.11 + '@esbuild/win32-ia32': 0.25.11 + '@esbuild/win32-x64': 0.25.11 escalade@3.2.0: {} @@ -15784,11 +15784,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.10)): + less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.11)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) less@4.4.2: dependencies: @@ -15809,11 +15809,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.25.10)): + license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.25.11)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) lie@3.3.0: dependencies: @@ -16076,11 +16076,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.25.10)): + mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.25.11)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) minimalistic-assert@1.0.1: {} @@ -16224,7 +16224,7 @@ snapshots: chokidar: 4.0.3 commander: 14.0.1 dependency-graph: 1.0.0 - esbuild: 0.25.10 + esbuild: 0.25.11 find-cache-directory: 6.0.0 injection-js: 2.5.0 jsonc-parser: 3.3.1 @@ -16717,14 +16717,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.10)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - typescript @@ -17285,12 +17285,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.10)): + sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.93.2 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) sass@1.93.2: dependencies: @@ -17606,11 +17606,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.25.10)): + source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.25.11)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) source-map-support@0.4.18: dependencies: @@ -17906,16 +17906,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.10)(webpack@5.102.1(esbuild@0.25.10)): + terser-webpack-plugin@5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) optionalDependencies: - esbuild: 0.25.10 + esbuild: 0.25.11 terser@5.44.0: dependencies: @@ -18064,7 +18064,7 @@ snapshots: tsx@4.20.6: dependencies: - esbuild: 0.25.10 + esbuild: 0.25.11 get-tsconfig: 4.12.0 optionalDependencies: fsevents: 2.3.3 @@ -18367,7 +18367,7 @@ snapshots: vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.10 + esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -18385,7 +18385,7 @@ snapshots: vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.10 + esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -18492,7 +18492,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.10)): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.11)): dependencies: colorette: 2.0.20 memfs: 4.49.0 @@ -18501,9 +18501,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.10)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.11)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18531,10 +18531,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.10)) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.11)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - bufferutil - debug @@ -18549,12 +18549,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.25.10)): + webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.25.11)): dependencies: typed-assert: 1.0.9 - webpack: 5.102.1(esbuild@0.25.10) + webpack: 5.102.1(esbuild@0.25.11) - webpack@5.102.1(esbuild@0.25.10): + webpack@5.102.1(esbuild@0.25.11): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18578,7 +18578,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.10)(webpack@5.102.1(esbuild@0.25.10)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 3040b777e40bc90fd1ed961e3d134875b3f9b464 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:05:19 -0400 Subject: [PATCH 1625/2162] feat(@angular/cli): add style language detection to list_projects tool This commit enhances the `list_projects` MCP tool by adding a `styleLanguage` field to the project output. This provides critical context for an AI model, enabling it to generate components with the correct stylesheet format (e.g., `.scss`, `.css`) without needing to parse additional configuration files. This makes the AI more autonomous and its code generation more accurate. The detection logic uses a prioritized heuristic to determine the most likely style language: 1. Checks for a project-specific schematic setting in `angular.json`. 2. Checks for a workspace-level schematic setting. 3. Infers from the `build` target's `inlineStyleLanguage` option. 4. Infers from file extensions in the `build` target's `styles` array. 5. As a future-proof fallback, checks for the existence of an implicit `styles.{ext}` file in the project's source root. The implementation was also refactored to use a single Zod schema as the source of truth for valid style languages, improving maintainability and eliminating repetitive code. --- .../cli/src/commands/mcp/tools/projects.ts | 102 +++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index a2d82ee55858..e3990b1b74c5 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -15,6 +15,26 @@ import { AngularWorkspace } from '../../../utilities/config'; import { assertIsError } from '../../../utilities/error'; import { McpToolContext, declareTool } from './tool-registry'; +// Single source of truth for what constitutes a valid style language. +const styleLanguageSchema = z.enum(['css', 'scss', 'sass', 'less']); +type StyleLanguage = z.infer; +const VALID_STYLE_LANGUAGES = styleLanguageSchema.options; + +// Explicitly ordered for the file system search heuristic. +const STYLE_LANGUAGE_SEARCH_ORDER: ReadonlyArray = ['scss', 'sass', 'less', 'css']; + +function isStyleLanguage(value: unknown): value is StyleLanguage { + return ( + typeof value === 'string' && (VALID_STYLE_LANGUAGES as ReadonlyArray).includes(value) + ); +} + +function getStyleLanguageFromExtension(extension: string): StyleLanguage | undefined { + const style = extension.toLowerCase().substring(1); // remove leading '.' + + return isStyleLanguage(style) ? style : undefined; +} + const listProjectsOutputSchema = { workspaces: z.array( z.object({ @@ -61,6 +81,12 @@ const listProjectsOutputSchema = { 'This field is critical for generating correct and idiomatic unit tests. ' + 'When writing or modifying tests, you MUST use the APIs corresponding to this framework.', ), + styleLanguage: styleLanguageSchema + .optional() + .describe( + 'The default style language for the project (e.g., "scss"). ' + + 'This determines the file extension for new component styles.', + ), }), ), }), @@ -100,6 +126,7 @@ their types, and their locations. * Finding the correct project name to use in other commands (e.g., \`ng generate component my-comp --project=my-app\`). * Identifying the \`root\` and \`sourceRoot\` of a project to read, analyze, or modify its files. * Determining a project's unit test framework (\`unitTestFramework\`) before writing or modifying tests. +* Identifying the project's style language (\`styleLanguage\`) to use the correct file extension (e.g., \`.scss\`). * Getting the \`selectorPrefix\` for a project before generating a new component to ensure it follows conventions. * Identifying the major version of the Angular framework for each workspace, which is crucial for monorepos. * Determining a project's primary function by inspecting its builder (e.g., '@angular-devkit/build-angular:browser' for an application). @@ -317,6 +344,74 @@ function getUnitTestFramework( return undefined; } +/** + * Determines the style language for a project using a prioritized heuristic. + * It checks project-specific schematics, then workspace-level schematics, + * and finally infers from the build target's inlineStyleLanguage option. + * @param project The project definition from the workspace configuration. + * @param workspace The loaded Angular workspace. + * @returns The determined style language ('css', 'scss', 'sass', 'less'). + */ +async function getProjectStyleLanguage( + project: import('@angular-devkit/core').workspaces.ProjectDefinition, + workspace: AngularWorkspace, + fullSourceRoot: string, +): Promise { + const projectSchematics = project.extensions.schematics as + | Record> + | undefined; + const workspaceSchematics = workspace.extensions.schematics as + | Record> + | undefined; + + // 1. Check for a project-specific schematic setting. + let style = projectSchematics?.['@schematics/angular:component']?.['style']; + if (isStyleLanguage(style)) { + return style; + } + + // 2. Check for a workspace-level schematic setting. + style = workspaceSchematics?.['@schematics/angular:component']?.['style']; + if (isStyleLanguage(style)) { + return style; + } + + const buildTarget = project.targets.get('build'); + if (buildTarget?.options) { + // 3. Infer from the build target's inlineStyleLanguage option. + style = buildTarget.options['inlineStyleLanguage']; + if (isStyleLanguage(style)) { + return style; + } + + // 4. Infer from the 'styles' array (explicit). + const styles = buildTarget.options['styles'] as string[] | undefined; + if (Array.isArray(styles)) { + for (const stylePath of styles) { + const style = getStyleLanguageFromExtension(path.extname(stylePath)); + if (style) { + return style; + } + } + } + } + + // 5. Infer from implicit default styles file (future-proofing). + for (const ext of STYLE_LANGUAGE_SEARCH_ORDER) { + try { + await stat(path.join(fullSourceRoot, `styles.${ext}`)); + + return ext; + } catch { + // Silently ignore all errors (e.g., file not found, permissions). + // If we can't read the file, we can't use it for detection. + } + } + + // 6. Fallback to 'css'. + return 'css'; +} + /** * Loads, parses, and transforms a single angular.json file into the tool's output format. * It checks a set of seen paths to avoid processing the same workspace multiple times. @@ -337,17 +432,22 @@ async function loadAndParseWorkspace( const ws = await AngularWorkspace.load(configFile); const projects = []; + const workspaceRoot = path.dirname(configFile); for (const [name, project] of ws.projects.entries()) { + const sourceRoot = path.posix.join(project.root, project.sourceRoot ?? 'src'); + const fullSourceRoot = path.join(workspaceRoot, sourceRoot); const unitTestFramework = getUnitTestFramework(project.targets.get('test')); + const styleLanguage = await getProjectStyleLanguage(project, ws, fullSourceRoot); projects.push({ name, type: project.extensions['projectType'] as 'application' | 'library' | undefined, builder: project.targets.get('build')?.builder, root: project.root, - sourceRoot: project.sourceRoot ?? path.posix.join(project.root, 'src'), + sourceRoot, selectorPrefix: project.extensions['prefix'] as string, unitTestFramework, + styleLanguage, }); } From 44d95395fdf9ab423cce4dffb257d08ca8e1fb4e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 17 Oct 2025 07:39:03 +0000 Subject: [PATCH 1626/2162] refactor(@angular/ssr): replace logic to determine the original URL Using `currentNavigation` might not work in all cases as this will be null when the navigate has already completed. --- packages/angular/ssr/src/utils/ng.ts | 30 ++++++++++++---------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index 34b2e8e36024..0b3f4b12c40a 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { APP_BASE_HREF, PlatformLocation } from '@angular/common'; +import { LocationStrategy } from '@angular/common'; import { ApplicationRef, type PlatformRef, @@ -21,7 +21,7 @@ import { platformServer, ɵrenderInternal as renderInternal, } from '@angular/platform-server'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, Router, UrlSerializer } from '@angular/router'; import { Console } from '../console'; import { joinUrlParts, stripIndexHtmlFromURL } from './url'; @@ -60,12 +60,12 @@ export async function renderAngular( serverContext: string, ): Promise<{ hasNavigationError: boolean; redirectTo?: string; 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 urlToRender = stripIndexHtmlFromURL(url); const platformRef = platformServer([ { provide: INITIAL_CONFIG, useValue: { - url: urlToRender, + url: urlToRender.href, document: html, }, }, @@ -96,31 +96,27 @@ export async function renderAngular( applicationRef = await bootstrap({ platformRef }); } - const envInjector = applicationRef.injector; - const router = envInjector.get(Router); - const initialUrl = router.currentNavigation()?.initialUrl.toString(); - // Block until application is stable. await applicationRef.whenStable(); // TODO(alanagius): Find a way to avoid rendering here especially for redirects as any output will be discarded. + const envInjector = applicationRef.injector; const routerIsProvided = !!envInjector.get(ActivatedRoute, null); + const router = envInjector.get(Router); const lastSuccessfulNavigation = router.lastSuccessfulNavigation(); if (!routerIsProvided) { hasNavigationError = false; - } else if (lastSuccessfulNavigation?.finalUrl && initialUrl !== null) { + } else if (lastSuccessfulNavigation?.finalUrl) { hasNavigationError = false; - const { finalUrl } = lastSuccessfulNavigation; - const finalUrlStringified = finalUrl.toString(); - - if (initialUrl !== finalUrlStringified) { - const baseHref = - envInjector.get(APP_BASE_HREF, null, { optional: true }) ?? - envInjector.get(PlatformLocation).getBaseHrefFromDOM(); + const urlSerializer = envInjector.get(UrlSerializer); + const locationStrategy = envInjector.get(LocationStrategy); + const finalUrlSerialized = urlSerializer.serialize(lastSuccessfulNavigation.finalUrl); + const finalExternalUrl = joinUrlParts(locationStrategy.getBaseHref(), finalUrlSerialized); - redirectTo = joinUrlParts(baseHref, finalUrlStringified); + if (urlToRender.href !== new URL(finalExternalUrl, urlToRender.origin).href) { + redirectTo = finalExternalUrl; } } From b1d6d2f174027a1f7800bd70ebd35143f92dc38c Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 17 Oct 2025 14:51:22 +0000 Subject: [PATCH 1627/2162] fix(@angular/build): resolve Angular locale data namespace in esbuild A transient error can occur during `ng serve` when Vite's dependency pre-bundling is triggered for Angular locale data, showing an error like `[vite] (ssr) Error when evaluating SSR module...: There is a new version of the pre-bundle...`. Previously, the `angular:locale/data:` namespace was left unresolved by the build process for the dev server. This caused Vite to treat the namespace as a new dependency, triggering a pre-bundling step that led to the error. With this change, esbuild now resolves the `angular:locale/data:` namespace and replaces it with the direct module import path. While the module is still treated as an external dependency, providing the explicit path prevents Vite from unnecessarily triggering a new pre-bundling phase. This resolves the transient error. Closes #31498 --- .../src/builders/dev-server/vite/server.ts | 2 - .../src/tools/esbuild/i18n-locale-plugin.ts | 53 ++++++++++----- .../tools/vite/plugins/i18n-locale-plugin.ts | 64 ------------------- .../build/src/tools/vite/plugins/index.ts | 1 - 4 files changed, 36 insertions(+), 84 deletions(-) delete mode 100644 packages/angular/build/src/tools/vite/plugins/i18n-locale-plugin.ts 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 3e2b4f1fafd6..0d48ce5325e2 100644 --- a/packages/angular/build/src/builders/dev-server/vite/server.ts +++ b/packages/angular/build/src/builders/dev-server/vite/server.ts @@ -12,7 +12,6 @@ import type { Connect, InlineConfig, SSROptions, ServerOptions } from 'vite'; import type { ComponentStyleRecord } from '../../../tools/vite/middlewares'; import { ServerSsrMode, - createAngularLocaleDataPlugin, createAngularMemoryPlugin, createAngularSetupMiddlewaresPlugin, createAngularSsrTransformPlugin, @@ -221,7 +220,6 @@ export async function setupServer( define, ), plugins: [ - createAngularLocaleDataPlugin(), createAngularSetupMiddlewaresPlugin({ outputFiles, assets, diff --git a/packages/angular/build/src/tools/esbuild/i18n-locale-plugin.ts b/packages/angular/build/src/tools/esbuild/i18n-locale-plugin.ts index 30f4540dc3a8..ae94b62ca16d 100644 --- a/packages/angular/build/src/tools/esbuild/i18n-locale-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/i18n-locale-plugin.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import type { Plugin } from 'esbuild'; +import type { Plugin, ResolveResult } from 'esbuild'; +import { createRequire } from 'node:module'; /** * The internal namespace used by generated locale import statements and Angular locale data plugin. @@ -27,17 +28,6 @@ export function createAngularLocaleDataPlugin(): Plugin { return { name: 'angular-locale-data', setup(build): void { - // If packages are configured to be external then leave the original angular locale import path. - // This happens when using the development server with caching enabled to allow Vite prebundling to work. - // There currently is no option on the esbuild resolve function to resolve while disabling the option. To - // workaround the inability to resolve the full locale location here, the Vite dev server prebundling also - // contains a plugin to allow the locales to be correctly resolved when prebundling. - // NOTE: If esbuild eventually allows controlling the external package options in a build.resolve call, this - // workaround can be removed. - if (build.initialOptions.packages === 'external') { - return; - } - build.onResolve({ filter: /^angular:locale\/data:/ }, async ({ path }) => { // Extract the locale from the path const rawLocaleTag = path.split(':', 3)[2]; @@ -60,6 +50,7 @@ export function createAngularLocaleDataPlugin(): Plugin { } let exact = true; + let localeRequire: NodeJS.Require | undefined; while (partialLocaleTag) { // Angular embeds the `en`/`en-US` locale into the framework and it does not need to be included again here. // The onLoad hook below for the locale data namespace has an `empty` loader that will prevent inclusion. @@ -73,11 +64,39 @@ export function createAngularLocaleDataPlugin(): Plugin { // Attempt to resolve the locale tag data within the Angular base module location const potentialPath = `${LOCALE_DATA_BASE_MODULE}/${partialLocaleTag}`; - const result = await build.resolve(potentialPath, { - kind: 'import-statement', - resolveDir: build.initialOptions.absWorkingDir, - }); - if (result.path) { + + // If packages are configured to be external then leave the original angular locale import path. + // This happens when using the development server with caching enabled to allow Vite prebundling to work. + // There currently is no option on the esbuild resolve function to resolve while disabling the option. + // NOTE: If esbuild eventually allows controlling the external package options in a build.resolve call, this + // workaround can be removed. + let result: ResolveResult | undefined; + const { packages, absWorkingDir } = build.initialOptions; + if (packages === 'external' && absWorkingDir) { + localeRequire ??= createRequire(absWorkingDir + '/'); + + try { + localeRequire.resolve(potentialPath); + + result = { + errors: [], + warnings: [], + external: true, + sideEffects: true, + namespace: '', + suffix: '', + pluginData: undefined, + path: potentialPath, + }; + } catch {} + } else { + result = await build.resolve(potentialPath, { + kind: 'import-statement', + resolveDir: absWorkingDir, + }); + } + + if (result?.path) { if (exact) { return result; } else { diff --git a/packages/angular/build/src/tools/vite/plugins/i18n-locale-plugin.ts b/packages/angular/build/src/tools/vite/plugins/i18n-locale-plugin.ts deleted file mode 100644 index 5cf3762245a5..000000000000 --- a/packages/angular/build/src/tools/vite/plugins/i18n-locale-plugin.ts +++ /dev/null @@ -1,64 +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 type { Plugin } from 'vite'; - -/** - * The base module location used to search for locale specific data. - */ -const LOCALE_DATA_BASE_MODULE = '@angular/common/locales/global'; - -/** - * Creates a Vite plugin that resolves Angular locale data files from `@angular/common`. - * - * @returns A Vite plugin. - */ -export function createAngularLocaleDataPlugin(): Plugin { - return { - name: 'angular-locale-data', - enforce: 'pre', - async resolveId(source) { - if (!source.startsWith('angular:locale/data:')) { - return; - } - - // Extract the locale from the path - const originalLocale = source.split(':', 3)[2]; - - // Remove any private subtags since these will never match - let partialLocale = originalLocale.replace(/-x(-[a-zA-Z0-9]{1,8})+$/, ''); - - let exact = true; - while (partialLocale) { - const potentialPath = `${LOCALE_DATA_BASE_MODULE}/${partialLocale}`; - - const result = await this.resolve(potentialPath); - if (result) { - if (!exact) { - this.warn( - `Locale data for '${originalLocale}' cannot be found. Using locale data for '${partialLocale}'.`, - ); - } - - return result; - } - - // Remove the last subtag and try again with a less specific locale - const parts = partialLocale.split('-'); - partialLocale = parts.slice(0, -1).join('-'); - exact = false; - // The locales "en" and "en-US" are considered exact to retain existing behavior - if (originalLocale === 'en-US' && partialLocale === 'en') { - exact = true; - } - } - - return null; - }, - }; -} diff --git a/packages/angular/build/src/tools/vite/plugins/index.ts b/packages/angular/build/src/tools/vite/plugins/index.ts index 50a6ab6aa7c9..ef697aa7395a 100644 --- a/packages/angular/build/src/tools/vite/plugins/index.ts +++ b/packages/angular/build/src/tools/vite/plugins/index.ts @@ -7,7 +7,6 @@ */ export { createAngularMemoryPlugin } from './angular-memory-plugin'; -export { createAngularLocaleDataPlugin } from './i18n-locale-plugin'; export { createRemoveIdPrefixPlugin } from './id-prefix-plugin'; export { createAngularSetupMiddlewaresPlugin, ServerSsrMode } from './setup-middlewares-plugin'; export { createAngularSsrTransformPlugin } from './ssr-transform-plugin'; From 663908564f2036e86ed82781c230959e3c6fe597 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 17 Oct 2025 14:40:47 +0000 Subject: [PATCH 1628/2162] refactor(@angular/ssr): simplify redirect URL determination The logic to determine the final URL for server-side rendering redirects is simplified. Previously, it used LocationStrategy and UrlSerializer to construct the final URL. This is replaced by using PlatformLocation to directly get the pathname, search, and hash. This change removes unnecessary complexity and dependencies, making the code easier to understand and maintain. --- packages/angular/ssr/src/utils/ng.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index 0b3f4b12c40a..120fdf940dd6 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { LocationStrategy } from '@angular/common'; +import { PlatformLocation } from '@angular/common'; import { ApplicationRef, type PlatformRef, @@ -21,9 +21,9 @@ import { platformServer, ɵrenderInternal as renderInternal, } from '@angular/platform-server'; -import { ActivatedRoute, Router, UrlSerializer } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { Console } from '../console'; -import { joinUrlParts, stripIndexHtmlFromURL } from './url'; +import { stripIndexHtmlFromURL, stripTrailingSlash } from './url'; /** * Represents the bootstrap mechanism for an Angular application. @@ -107,16 +107,13 @@ export async function renderAngular( if (!routerIsProvided) { hasNavigationError = false; - } else if (lastSuccessfulNavigation?.finalUrl) { + } else if (lastSuccessfulNavigation) { hasNavigationError = false; + const { pathname, search, hash } = envInjector.get(PlatformLocation); + const finalUrl = [stripTrailingSlash(pathname), search, hash].join(''); - const urlSerializer = envInjector.get(UrlSerializer); - const locationStrategy = envInjector.get(LocationStrategy); - const finalUrlSerialized = urlSerializer.serialize(lastSuccessfulNavigation.finalUrl); - const finalExternalUrl = joinUrlParts(locationStrategy.getBaseHref(), finalUrlSerialized); - - if (urlToRender.href !== new URL(finalExternalUrl, urlToRender.origin).href) { - redirectTo = finalExternalUrl; + if (urlToRender.href !== new URL(finalUrl, urlToRender.origin).href) { + redirectTo = finalUrl; } } From ec739d79e042c2b33fd84ed9aede7c88a82e167e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 17 Oct 2025 14:41:50 -0400 Subject: [PATCH 1629/2162] refactor(@angular/build): allow Bazel to inject a custom esbuild plugin Introduces a mechanism to dynamically load a custom esbuild plugin when the application builder is executed within a Bazel environment. This is enabled by a new `bazelEsbuildPluginPath` option, which is derived from the `NG_INTERNAL_ESBUILD_PLUGINS_DO_NOT_USE` environment variable. The path is only resolved if the `BAZEL_BINDIR` and `JS_BINARY__EXECROOT` environment variables are also present, ensuring the logic is only active during a Bazel build. The builder dynamically imports the plugin from the specified path and adds it to the esbuild pipeline, allowing for build-system-specific customizations. --- .../angular/build/src/builders/application/index.ts | 10 +++++++++- .../angular/build/src/utils/environment-options.ts | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/index.ts b/packages/angular/build/src/builders/application/index.ts index 8f11f2fd8001..b83e3b48f270 100644 --- a/packages/angular/build/src/builders/application/index.ts +++ b/packages/angular/build/src/builders/application/index.ts @@ -14,7 +14,7 @@ import { BuildOutputFileType } from '../../tools/esbuild/bundler-context'; import { createJsonBuildManifest, emitFilesToDisk } from '../../tools/esbuild/utils'; import { colors as ansiColors } from '../../utils/color'; import { deleteOutputDir } from '../../utils/delete-output-dir'; -import { useJSONBuildLogs } from '../../utils/environment-options'; +import { bazelEsbuildPluginPath, useJSONBuildLogs } from '../../utils/environment-options'; import { purgeStaleBuildCache } from '../../utils/purge-cache'; import { assertCompatibleAngularVersion } from '../../utils/version'; import { runEsBuildBuildAction } from './build-action'; @@ -56,6 +56,14 @@ export async function* buildApplicationInternal( return; } + if (bazelEsbuildPluginPath) { + extensions ??= {}; + extensions.codePlugins ??= []; + + const { default: bazelEsbuildPlugin } = await import(bazelEsbuildPluginPath); + extensions.codePlugins.push(bazelEsbuildPlugin); + } + const normalizedOptions = await normalizeOptions(context, projectName, options, extensions); if (!normalizedOptions.outputOptions.ignoreServer) { diff --git a/packages/angular/build/src/utils/environment-options.ts b/packages/angular/build/src/utils/environment-options.ts index a5649a33d7b5..80f71d56c119 100644 --- a/packages/angular/build/src/utils/environment-options.ts +++ b/packages/angular/build/src/utils/environment-options.ts @@ -165,3 +165,11 @@ export const useComponentTemplateHmr = parseTristate(process.env['NG_HMR_TEMPLAT * When `NG_BUILD_PARTIAL_SSR` is enabled, a partial server-side rendering build will be performed. */ export const usePartialSsrBuild = parseTristate(process.env['NG_BUILD_PARTIAL_SSR']) === true; + +const bazelBinDirectory = process.env['BAZEL_BINDIR']; +const bazelExecRoot = process.env['JS_BINARY__EXECROOT']; + +export const bazelEsbuildPluginPath = + bazelBinDirectory && bazelExecRoot + ? process.env['NG_INTERNAL_ESBUILD_PLUGINS_DO_NOT_USE'] + : undefined; From ec7dd59e38f84db91f5a2e4ed653bbc54cb82d54 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 17 Oct 2025 20:36:53 +0000 Subject: [PATCH 1630/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 ++-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 ++-- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 225 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- 10 files changed, 188 insertions(+), 183 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index f31cf3cc4025..395e48eddb2a 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@c776985eeff8f041f142d85577210976c98a2922 + - uses: angular/dev-infra/github-actions/branch-manager@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d06fa27287ec..b86fb5873cc9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc 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@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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 d649d8ce7bff..4727b8d95fc3 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@c776985eeff8f041f142d85577210976c98a2922 + - uses: angular/dev-infra/github-actions/pull-request-labeling@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@c776985eeff8f041f142d85577210976c98a2922 + - uses: angular/dev-infra/github-actions/post-approval-changes@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 258c3ec30196..342bc1d3298f 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@c776985eeff8f041f142d85577210976c98a2922 + - uses: angular/dev-infra/github-actions/feature-request@a613c67d98163635746ce32a72fb9aa4f1e9c6cc with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 578b0a37eb07..4dd2e5fce38b 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@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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 46ca894c1fd5..94384f08a41f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/linting/licenses@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c776985eeff8f041f142d85577210976c98a2922 + uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc - 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/MODULE.bazel b/MODULE.bazel index 0339ff1d92b5..d43c06337524 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "c776985eeff8f041f142d85577210976c98a2922", + commit = "a613c67d98163635746ce32a72fb9aa4f1e9c6cc", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 82003863ca72..f117b701c28a 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@angular/forms": "21.0.0-next.8", "@angular/localize": "21.0.0-next.8", "@angular/material": "21.0.0-next.9", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5cd66227d38bb0feed0989254757ca51077a8607", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#53dcff1a283d75255b9950472c37a571cc35ee28", "@angular/platform-browser": "21.0.0-next.8", "@angular/platform-server": "21.0.0-next.8", "@angular/router": "21.0.0-next.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1737b7da616d..f3c2d4d4d4da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.9 version: 21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5cd66227d38bb0feed0989254757ca51077a8607 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5cd66227d38bb0feed0989254757ca51077a8607(@modelcontextprotocol/sdk@1.20.0) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#53dcff1a283d75255b9950472c37a571cc35ee28 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.0) '@angular/platform-browser': specifier: 21.0.0-next.8 version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -339,7 +339,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.0 version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +348,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -369,10 +369,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.19 - version: 5.1.19(@types/node@24.7.2) + version: 5.1.19(@types/node@24.8.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.10 - version: 7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -473,10 +473,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.7.2) + version: 7.9.0(@types/node@24.8.0) '@listr2/prompt-adapter-inquirer': specifier: 3.0.4 - version: 3.0.4(@inquirer/prompts@7.9.0(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4) + version: 3.0.4(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.4) '@modelcontextprotocol/sdk': specifier: 1.20.0 version: 1.20.0 @@ -854,7 +854,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.7.2) + version: 7.9.0(@types/node@24.8.0) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/5cd66227d38bb0feed0989254757ca51077a8607': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5cd66227d38bb0feed0989254757ca51077a8607} - version: 0.0.0-c776985eeff8f041f142d85577210976c98a2922 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28} + version: 0.0.0-a613c67d98163635746ce32a72fb9aa4f1e9c6cc hasBin: true '@angular/platform-browser@21.0.0-next.8': @@ -2142,8 +2142,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.24.0': - resolution: {integrity: sha512-e3jZF9Dx3dDaDCzygdMuYByHI2xJZ0PaD3r2fRgHZe2IOwBnmJ/Tu5Lt/nefTCxqr1ZnbcbQK9T13d8U/9UMWg==} + '@google/genai@1.25.0': + resolution: {integrity: sha512-IBNyel/umavam98SQUfvQSvh/Rp6Ql2fysQLqPyWZr5K8d768X9AO+JZU4o+3qvFDUBA0dVYUSkxyYonVcICvA==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -3404,6 +3404,9 @@ packages: '@types/jasmine-reporters@2.5.3': resolution: {integrity: sha512-8aojAUdgdiD9VQbllBJb/9gny3lOjz9T5gyMcbYlKe6npwGVsarbr8v2JYSFJSZSuFYXcPVzFG2lLX3ib0j/DA==} + '@types/jasmine@5.1.11': + resolution: {integrity: sha512-eAij9lMAsosuA8cvRcqw7p2vO+LUraktQDmOUFx2jAnya8NUchr3DryHksfhZbRzU83vzNUSZhlk1cFdoePxwA==} + '@types/jasmine@5.1.9': resolution: {integrity: sha512-8t4HtkW4wxiPVedMpeZ63n3vlWxEIquo/zc1Tm8ElU+SqVV7+D3Na2PWaJUp179AzTragMWVwkMv7mvty0NfyQ==} @@ -3449,8 +3452,8 @@ packages: '@types/node@22.18.10': resolution: {integrity: sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==} - '@types/node@24.7.2': - resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} + '@types/node@24.8.0': + resolution: {integrity: sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -9379,13 +9382,13 @@ 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/5cd66227d38bb0feed0989254757ca51077a8607(@modelcontextprotocol/sdk@1.20.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.24.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.9.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@google/genai': 1.25.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 7.9.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) '@octokit/auth-app': 8.1.1 '@octokit/core': 7.0.5 '@octokit/graphql': 9.0.2 @@ -9402,8 +9405,8 @@ snapshots: '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.0 - '@types/jasmine': 5.1.9 - '@types/node': 24.7.2 + '@types/jasmine': 5.1.11 + '@types/node': 24.8.0 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -10754,7 +10757,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.24.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.25.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -10805,132 +10808,132 @@ snapshots: '@inquirer/ansi@1.0.1': {} - '@inquirer/checkbox@4.3.0(@types/node@24.7.2)': + '@inquirer/checkbox@4.3.0(@types/node@24.8.0)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.8.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/confirm@5.1.19(@types/node@24.7.2)': + '@inquirer/confirm@5.1.19(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/core@10.3.0(@types/node@24.7.2)': + '@inquirer/core@10.3.0(@types/node@24.8.0)': dependencies: '@inquirer/ansi': 1.0.1 '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.8.0) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/editor@4.2.21(@types/node@24.7.2)': + '@inquirer/editor@4.2.21(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/external-editor': 1.0.2(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/external-editor': 1.0.2(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/expand@4.0.21(@types/node@24.7.2)': + '@inquirer/expand@4.0.21(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/external-editor@1.0.2(@types/node@24.7.2)': + '@inquirer/external-editor@1.0.2(@types/node@24.8.0)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 '@inquirer/figures@1.0.14': {} - '@inquirer/input@4.2.5(@types/node@24.7.2)': + '@inquirer/input@4.2.5(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/number@3.0.21(@types/node@24.7.2)': + '@inquirer/number@3.0.21(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/password@4.0.21(@types/node@24.7.2)': + '@inquirer/password@4.0.21(@types/node@24.8.0)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) optionalDependencies: - '@types/node': 24.7.2 - - '@inquirer/prompts@7.9.0(@types/node@24.7.2)': - dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.7.2) - '@inquirer/confirm': 5.1.19(@types/node@24.7.2) - '@inquirer/editor': 4.2.21(@types/node@24.7.2) - '@inquirer/expand': 4.0.21(@types/node@24.7.2) - '@inquirer/input': 4.2.5(@types/node@24.7.2) - '@inquirer/number': 3.0.21(@types/node@24.7.2) - '@inquirer/password': 4.0.21(@types/node@24.7.2) - '@inquirer/rawlist': 4.1.9(@types/node@24.7.2) - '@inquirer/search': 3.2.0(@types/node@24.7.2) - '@inquirer/select': 4.4.0(@types/node@24.7.2) + '@types/node': 24.8.0 + + '@inquirer/prompts@7.9.0(@types/node@24.8.0)': + dependencies: + '@inquirer/checkbox': 4.3.0(@types/node@24.8.0) + '@inquirer/confirm': 5.1.19(@types/node@24.8.0) + '@inquirer/editor': 4.2.21(@types/node@24.8.0) + '@inquirer/expand': 4.0.21(@types/node@24.8.0) + '@inquirer/input': 4.2.5(@types/node@24.8.0) + '@inquirer/number': 3.0.21(@types/node@24.8.0) + '@inquirer/password': 4.0.21(@types/node@24.8.0) + '@inquirer/rawlist': 4.1.9(@types/node@24.8.0) + '@inquirer/search': 3.2.0(@types/node@24.8.0) + '@inquirer/select': 4.4.0(@types/node@24.8.0) optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/rawlist@4.1.9(@types/node@24.7.2)': + '@inquirer/rawlist@4.1.9(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/search@3.2.0(@types/node@24.7.2)': + '@inquirer/search@3.2.0(@types/node@24.8.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.8.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/select@4.4.0(@types/node@24.7.2)': + '@inquirer/select@4.4.0(@types/node@24.8.0)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.7.2) + '@inquirer/core': 10.3.0(@types/node@24.8.0) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.7.2) + '@inquirer/type': 3.0.9(@types/node@24.8.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/type@3.0.8(@types/node@24.7.2)': + '@inquirer/type@3.0.8(@types/node@24.8.0)': optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 - '@inquirer/type@3.0.9(@types/node@24.7.2)': + '@inquirer/type@3.0.9(@types/node@24.8.0)': optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 '@isaacs/balanced-match@4.0.1': {} @@ -11021,10 +11024,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.9.0(@types/node@24.7.2))(@types/node@24.7.2)(listr2@9.0.4)': + '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.4)': dependencies: - '@inquirer/prompts': 7.9.0(@types/node@24.7.2) - '@inquirer/type': 3.0.8(@types/node@24.7.2) + '@inquirer/prompts': 7.9.0(@types/node@24.8.0) + '@inquirer/type': 3.0.8(@types/node@24.8.0) listr2: 9.0.4 transitivePeerDependencies: - '@types/node' @@ -11931,6 +11934,8 @@ snapshots: dependencies: '@types/jasmine': 5.1.9 + '@types/jasmine@5.1.11': {} + '@types/jasmine@5.1.9': {} '@types/json-schema@7.0.15': {} @@ -11994,7 +11999,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.7.2': + '@types/node@24.8.0': dependencies: undici-types: 7.14.0 @@ -12371,11 +12376,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12390,7 +12395,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12402,13 +12407,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -18344,13 +18349,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18365,7 +18370,7 @@ snapshots: - tsx - yaml - vite@7.1.10(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -18374,7 +18379,7 @@ snapshots: rollup: 4.52.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18383,7 +18388,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -18392,7 +18397,7 @@ snapshots: rollup: 4.52.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18401,11 +18406,11 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.7.2)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18423,11 +18428,11 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.7.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.7.2 + '@types/node': 24.8.0 jsdom: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 6aa291465ec8..f8fc27c8fae8 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#fb2d783ccc3153f56bc6010e6a683a294637136c", - "@angular/cdk": "github:angular/cdk-builds#c2b41af60c88bbc0225fa23a88c29f6449adb938", - "@angular/common": "github:angular/common-builds#e664a445458b901cf21b51dd2993629a08ce12ee", - "@angular/compiler": "github:angular/compiler-builds#efbe03a828c24ee9f587c40b1bf6d8d75bdfe92f", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#4734d0579a111be67805e0b2a8c32e2dc20f79b3", - "@angular/core": "github:angular/core-builds#b1033ef73e2404fb3c3b89a15320bcd4f2639870", - "@angular/forms": "github:angular/forms-builds#0d5905406b3f4bb4ad097801f924b254376d328b", - "@angular/language-service": "github:angular/language-service-builds#5545d48c8f490449d706edc82e25eca7bd93cb72", - "@angular/localize": "github:angular/localize-builds#d5a4f3552bf50577b7a91e53ff64312b0f9890b2", - "@angular/material": "github:angular/material-builds#e5aeb1669422dd9ad56916f460c35c1c20643e27", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#438b8c4ded3a283d13878a4ca93a076b4796d89c", - "@angular/platform-browser": "github:angular/platform-browser-builds#6543e1ad70d1f381eb1936145013bf8d43a2ef93", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#9470275a7439894074f0025e72d867fc470d85b4", - "@angular/platform-server": "github:angular/platform-server-builds#46631ea1963d0c1045f0492029a5a92c04c82479", - "@angular/router": "github:angular/router-builds#181912cf50ddfcf69964530231c6fde843f109c1", - "@angular/service-worker": "github:angular/service-worker-builds#6e5d6ee951e7e078de818baed6eccbda7478b153" + "@angular/animations": "github:angular/animations-builds#57e895cbb0454901a0bed93d40e20fbb575d285a", + "@angular/cdk": "github:angular/cdk-builds#52f8132bd8196629350fcf99ec24927dc89a7282", + "@angular/common": "github:angular/common-builds#71baee6f62b85f1e0f77d1f49f05a2ef0fd0c8b4", + "@angular/compiler": "github:angular/compiler-builds#922012ea49217e66f3406ddc2bdd66562c56ed8a", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#777b553e12b733aaa45a54a8fc1ad2a055752ff9", + "@angular/core": "github:angular/core-builds#00c4f2fdaa632dd5cdf3a0c4ab98104147f61efa", + "@angular/forms": "github:angular/forms-builds#0afa9007f5a76b712f7ee7d4412f682d4d14286e", + "@angular/language-service": "github:angular/language-service-builds#1437a2ab0316f6e84e545d887793a02af3e65676", + "@angular/localize": "github:angular/localize-builds#0618ce03cee868c84e90dfa3c47642e1bed6a1cb", + "@angular/material": "github:angular/material-builds#8541d56a25f41ef471585699c7863c896b7166b7", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#19a4295b7ee643060e2402cab9e7b2412d41e4eb", + "@angular/platform-browser": "github:angular/platform-browser-builds#e16577c2a109cf3894b0813a4d11e752b75e3f94", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a38d02b3fd5c07aeb854bcf914c306a6c5f31c16", + "@angular/platform-server": "github:angular/platform-server-builds#ecada9bed4f34431ad9a2e1783ab7c5e6bf1d918", + "@angular/router": "github:angular/router-builds#6239d6ee885bbed3fd9049d96a7ff8343c54628e", + "@angular/service-worker": "github:angular/service-worker-builds#0d904278455c17fa7f3873aa6927883a1f5ccad4" } } From ab3249ea14af78b8e24b8113d54d4d3740904029 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 20 Oct 2025 07:06:14 +0000 Subject: [PATCH 1631/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 448 ++++++++++++++++++++----------------------------- 1 file changed, 186 insertions(+), 262 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f3c2d4d4d4da..83b53f5079fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,7 +81,7 @@ importers: version: 5.1.1(rollup@4.52.4) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.6(rollup@4.52.4) + version: 28.0.8(rollup@4.52.4) '@rollup/plugin-json': specifier: ^6.1.0 version: 6.1.0(rollup@4.52.4) @@ -90,7 +90,7 @@ importers: version: 16.0.3(rollup@4.52.4) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.4.0(eslint@9.37.0(jiti@2.6.1)) + version: 5.5.0(eslint@9.37.0(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -111,7 +111,7 @@ importers: version: 4.1.1 '@types/jasmine': specifier: ~5.1.0 - version: 5.1.9 + version: 5.1.12 '@types/jasmine-reporters': specifier: ^2 version: 2.5.3 @@ -129,7 +129,7 @@ importers: version: 4.17.20 '@types/node': specifier: ^22.12.0 - version: 22.18.10 + version: 22.18.11 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -279,7 +279,7 @@ importers: version: 6.2.3(rollup@4.52.4)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.10)(rollup@4.52.4) + version: 0.5.4(@types/node@22.18.11)(rollup@4.52.4) semver: specifier: 7.7.3 version: 7.7.3 @@ -294,7 +294,7 @@ importers: version: 7.5.1 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.18.10)(typescript@5.9.3) + version: 10.9.2(@types/node@22.18.11)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -1100,8 +1100,8 @@ packages: '@asamuzakjp/css-color@4.0.5': resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.6.2': - resolution: {integrity: sha512-+AG0jN9HTwfDLBhjhX1FKi6zlIAc/YGgEHlN/OMaHD1pOPFsC5CpYQpLkPX0aFjyaVmoq9330cQDCU4qnSL1qA==} + '@asamuzakjp/dom-selector@6.7.2': + resolution: {integrity: sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -1869,12 +1869,12 @@ packages: eslint: optional: true - '@eslint/config-array@0.21.0': - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.4.0': - resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==} + '@eslint/config-helpers@0.4.1': + resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.16.0': @@ -1889,8 +1889,8 @@ packages: resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/plugin-kit@0.4.0': @@ -2313,15 +2313,6 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.8': - resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/type@3.0.9': resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} engines: {node: '>=18'} @@ -2382,8 +2373,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/buffers@1.2.0': - resolution: {integrity: sha512-6RX+W5a+ZUY/c/7J5s5jK9UinLfJo5oWKh84fb4X0yK2q4WXEWUWZWuEMjvCb1YNUQhEAhUfr5scEGOH7jC4YQ==} + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2394,8 +2385,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.20.0': - resolution: {integrity: sha512-adcXFVorSQULtT4XDL0giRLr2EVGIcyWm6eQKZWTrRA4EEydGOY8QVQtL0PaITQpUyu+lOd/QOicw6vdy1v8QQ==} + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2491,8 +2482,8 @@ packages: cpu: [x64] os: [win32] - '@mswjs/interceptors@0.39.7': - resolution: {integrity: sha512-sURvQbbKsq5f8INV54YJgJEdk8oxBanqkTiXXd33rKmofFCwZLhLRszPduMZ9TA9b8/1CHc/IJmOlBHJk2Q5AQ==} + '@mswjs/interceptors@0.39.8': + resolution: {integrity: sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==} engines: {node: '>=18'} '@napi-rs/nice-android-arm-eabi@1.1.1': @@ -2917,8 +2908,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.11': - resolution: {integrity: sha512-kp3ORGce+oC3qUMJ+g5NH9W4Q7mMG7gV2I+alv0bCbfkZ36B2V/xKCg9uYavSgjmsElhwBneahWjJP7A6fuKLw==} + '@puppeteer/browsers@2.10.12': + resolution: {integrity: sha512-mP9iLFZwH+FapKJLeA7/fLqOlSUwYpMwjR1P5J23qd4e7qGJwecJccJqHYrjw33jmIZYV4dtiTHPD/J+1e7cEw==} engines: {node: '>=18'} hasBin: true @@ -3021,8 +3012,8 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@28.0.6': - resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} + '@rollup/plugin-commonjs@28.0.8': + resolution: {integrity: sha512-o1Ug9PxYsF61R7/NXO/GgMZZproLd/WH2XA53Tp9ppf6bU1lMlTtC/gUM6zM3mesi2E0rypk+PNtVrELREyWEQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -3196,8 +3187,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.52.4': - resolution: {integrity: sha512-QME8thp2j0GvRu/H8kz3uOawi45rexNIys38kITnMYp8Wl+gyeoIIuKyw8y0Lrq6xSAXgGCoqDyHD+m0wX1jnQ==} + '@rollup/wasm-node@4.52.5': + resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3235,8 +3226,8 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@stylistic/eslint-plugin@5.4.0': - resolution: {integrity: sha512-UG8hdElzuBDzIbjG1QDwnYH0MQ73YLXDFHgZzB4Zh/YJfnw8XNsloVtytqzx0I2Qky9THSdpTmi8Vjn/pf/Lew==} + '@stylistic/eslint-plugin@5.5.0': + resolution: {integrity: sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -3407,8 +3398,8 @@ packages: '@types/jasmine@5.1.11': resolution: {integrity: sha512-eAij9lMAsosuA8cvRcqw7p2vO+LUraktQDmOUFx2jAnya8NUchr3DryHksfhZbRzU83vzNUSZhlk1cFdoePxwA==} - '@types/jasmine@5.1.9': - resolution: {integrity: sha512-8t4HtkW4wxiPVedMpeZ63n3vlWxEIquo/zc1Tm8ElU+SqVV7+D3Na2PWaJUp179AzTragMWVwkMv7mvty0NfyQ==} + '@types/jasmine@5.1.12': + resolution: {integrity: sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3449,8 +3440,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.18.10': - resolution: {integrity: sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==} + '@types/node@22.18.11': + resolution: {integrity: sha512-Gd33J2XIrXurb+eT2ktze3rJAfAp9ZNjlBdh4SVgyrKEOADwCbdUDaK7QgJno8Ue4kcajscsKqu6n8OBG3hhCQ==} '@types/node@24.8.0': resolution: {integrity: sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==} @@ -3595,10 +3586,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/types@8.46.0': - resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.46.1': resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4074,8 +4061,8 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.5: - resolution: {integrity: sha512-9SdXjNheSiE8bALAQCQQuT6fgQaoxJh7IRYrRGZ8/9nv8WhJeC1aXAwN8TbaOssGOukUvyvnkgD9+Yuykvl1aA==} + ast-v8-to-istanbul@0.3.7: + resolution: {integrity: sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -4160,8 +4147,8 @@ packages: bare-abort-controller: optional: true - bare-fs@4.4.10: - resolution: {integrity: sha512-arqVF+xX/rJHwrONZaSPhlzleT2gXwVs9rsAe1p1mIVwWZI2A76/raio+KwwxfWMO8oV9Wo90EaUkS2QwVmy4w==} + bare-fs@4.4.11: + resolution: {integrity: sha512-Bejmm9zRMvMTRoHS+2adgmXw1ANZnCNx+B5dgZpGwlP1E3x6Yuxea8RToddHUbWtVV0iUMWqsgZr8+jcgUI2SA==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -4187,8 +4174,8 @@ packages: bare-events: optional: true - bare-url@2.2.2: - resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + bare-url@2.3.0: + resolution: {integrity: sha512-c+RCqMSZbkz97Mw1LWR0gcOqwK82oyYKfLoHJ8k13ybi1+I80ffdDzUy0TdAburdrR/kI0/VuN8YgEnJqX+Nyw==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -4197,8 +4184,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.16: - resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} + baseline-browser-mapping@2.8.18: + resolution: {integrity: sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==} hasBin: true basic-ftp@5.0.5: @@ -4373,8 +4360,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001750: - resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==} + caniuse-lite@1.0.30001751: + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4987,11 +4974,11 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.234: - resolution: {integrity: sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==} + electron-to-chromium@1.5.237: + resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} - emoji-regex@10.5.0: - resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5528,8 +5515,8 @@ packages: resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} - gcp-metadata@7.0.1: - resolution: {integrity: sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==} + gcp-metadata@8.1.1: + resolution: {integrity: sha512-dTCcAe9fRQf06ELwel6lWWFrEbstwjUBYEhr5VRGoC+iPDZQucHppCowaIp8b8v92tU1G4X4H3b/Y6zXZxkMsQ==} engines: {node: '>=18'} generator-function@2.0.1: @@ -5637,8 +5624,8 @@ packages: resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} engines: {node: '>=0.10.0'} - google-auth-library@10.4.0: - resolution: {integrity: sha512-CmIrSy1bqMQUsPmA9+hcSbAXL80cFhu40cGMUjCaLpNKVzzvi+0uAHq8GNZxkoGYIsTX4ZQ7e4aInAqWxgn4fg==} + google-auth-library@10.4.1: + resolution: {integrity: sha512-VlvZ+QDWng3aPh++0BSQlSJyjn4qgLLTmqylAR3as0dr6YwPkZpHcZAngAFr68TDVCUSQVRTkV73K/D3m7vEIg==} engines: {node: '>=18'} google-auth-library@9.15.1: @@ -5905,8 +5892,8 @@ packages: resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} engines: {node: '>=0.10.0'} - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -5937,8 +5924,8 @@ packages: resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} engines: {node: ^18.17.0 || >=20.5.0} - injection-js@2.5.0: - resolution: {integrity: sha512-UpY2ONt4xbht4GhSqQ2zMJ1rBIQq4uOY+DlR6aOeYyqK7xadXt7UQbJIyxmgk288bPMkIZKjViieHm0O0i72Jw==} + injection-js@2.6.0: + resolution: {integrity: sha512-uRUO2qh7rFFeAo3UWTbLHCFr8x3VLHRNZ2jbMv/MAxbFIFgw7QtNVfxc3iC7CV5U11cvIyAt12nxVWu1NqVsYg==} internal-ip@6.2.0: resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} @@ -6461,8 +6448,8 @@ packages: resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} engines: {node: '>= 7.6.0'} - koa@2.16.2: - resolution: {integrity: sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==} + koa@2.16.3: + resolution: {integrity: sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} launch-editor@2.11.1: @@ -6960,13 +6947,13 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-gyp@11.4.2: - resolution: {integrity: sha512-3gD+6zsrLQH7DyYOUIutaauuXrcyxeTPyQuZQCQoNPZMHMMS5m4y0xclNpvYzoK3VNzuyxT6eF4mkIL4WSZ1eQ==} + node-gyp@11.5.0: + resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - node-releases@2.0.23: - resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} + node-releases@2.0.25: + resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} @@ -7510,8 +7497,8 @@ packages: resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} engines: {node: '>= 8'} - proto3-json-serializer@3.0.2: - resolution: {integrity: sha512-AnMIfnoK2Ml3F/ZVl5PxcwIoefMxj4U/lomJ5/B2eIGdxw4UkbV1YamtsMQsEkZATdMCKMbnI1iG9RQaJbxBGw==} + proto3-json-serializer@3.0.3: + resolution: {integrity: sha512-iUi7jGLuECChuoUwtvf6eXBDcFXTHAt5GM6ckvtD3RqD+j2wW0GW6WndPOu9IWeUk7n933lzrskcNMHJy2tFSw==} engines: {node: '>=18'} protobufjs@7.5.4: @@ -7561,8 +7548,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.24.0: - resolution: {integrity: sha512-RR5AeQ6dIbSepDe9PTtfgK1fgD7TuA9qqyGxPbFCyGfvfkbR7MiqNYdE7AhbTaFIqG3hFBtWwbVKVZF8oEqj7Q==} + puppeteer-core@24.25.0: + resolution: {integrity: sha512-8Xs6q3Ut+C8y7sAaqjIhzv1QykGWG4gc2mEZ2mYE7siZFuRp4xQVehOf8uQKSQAkeL7jXUs3mknEeiqnRqUKvQ==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8159,8 +8146,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stdin-discarder@0.2.2: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} @@ -8765,46 +8752,6 @@ packages: yaml: optional: true - vite@7.1.9: - resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -8858,8 +8805,8 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-bidi-protocol@0.3.6: - resolution: {integrity: sha512-mlGndEOA9yK9YAbvtxaPTqdi/kaCWYYfwrZvGzcmkr/3lWM+tQj53BxtpVd6qbC6+E5OnHXgCcAhre6AkXzxjA==} + webdriver-bidi-protocol@0.3.7: + resolution: {integrity: sha512-wIx5Gu/LLTeexxilpk8WxU2cpGAKlfbWRO5h+my6EMD1k5PYqM1qQO1MHUFf4f3KRnhBvpbZU7VkizAgeSEf7g==} webdriver-js-extender@2.1.0: resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} @@ -9483,7 +9430,7 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.6.2': + '@asamuzakjp/dom-selector@6.7.2': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -10337,15 +10284,15 @@ snapshots: optionalDependencies: eslint: 9.37.0(jiti@2.6.1) - '@eslint/config-array@0.21.0': + '@eslint/config-array@0.21.1': dependencies: - '@eslint/object-schema': 2.1.6 + '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@10.2.2) minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.0': + '@eslint/config-helpers@0.4.1': dependencies: '@eslint/core': 0.16.0 @@ -10369,7 +10316,7 @@ snapshots: '@eslint/js@9.37.0': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/object-schema@2.1.7': {} '@eslint/plugin-kit@0.4.0': dependencies: @@ -10705,7 +10652,7 @@ snapshots: arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 - google-auth-library: 10.4.0(supports-color@10.2.2) + google-auth-library: 10.4.1(supports-color@10.2.2) html-entities: 2.6.0 retry-request: 8.0.2(supports-color@10.2.2) teeny-request: 10.1.0(supports-color@10.2.2) @@ -10740,7 +10687,7 @@ snapshots: duplexify: 4.1.3 events-intercept: 2.0.0 extend: 3.0.2 - google-auth-library: 10.4.0(supports-color@10.2.2) + google-auth-library: 10.4.1(supports-color@10.2.2) google-gax: 5.0.4(supports-color@10.2.2) grpc-gcp: 1.0.1(protobufjs@7.5.4) is: 3.3.2 @@ -10777,7 +10724,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@grpc/proto-loader@0.7.15': dependencies: @@ -10927,10 +10874,6 @@ snapshots: optionalDependencies: '@types/node': 24.8.0 - '@inquirer/type@3.0.8(@types/node@24.8.0)': - optionalDependencies: - '@types/node': 24.8.0 - '@inquirer/type@3.0.9(@types/node@24.8.0)': optionalDependencies: '@types/node': 24.8.0 @@ -10991,7 +10934,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/buffers@1.2.0(tslib@2.8.1)': + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -10999,15 +10942,16 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.20.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/buffers': 1.2.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) hyperdyperid: 1.2.0 thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': @@ -11018,7 +10962,7 @@ snapshots: '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/buffers': 1.2.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 @@ -11027,7 +10971,7 @@ snapshots: '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.4)': dependencies: '@inquirer/prompts': 7.9.0(@types/node@24.8.0) - '@inquirer/type': 3.0.8(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.8.0) listr2: 9.0.4 transitivePeerDependencies: - '@types/node' @@ -11088,7 +11032,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@mswjs/interceptors@0.39.7': + '@mswjs/interceptors@0.39.8': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -11251,7 +11195,7 @@ snapshots: '@npmcli/node-gyp': 4.0.0 '@npmcli/package-json': 7.0.1 '@npmcli/promise-spawn': 8.0.3 - node-gyp: 11.4.2 + node-gyp: 11.5.0 proc-log: 5.0.0 which: 5.0.0 transitivePeerDependencies: @@ -11498,7 +11442,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.11': + '@puppeteer/browsers@2.10.12': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -11563,7 +11507,7 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/plugin-commonjs@28.0.6(rollup@4.52.4)': + '@rollup/plugin-commonjs@28.0.8(rollup@4.52.4)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.4) commondir: 1.0.1 @@ -11683,7 +11627,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.4': optional: true - '@rollup/wasm-node@4.52.4': + '@rollup/wasm-node@4.52.5': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -11727,10 +11671,10 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@5.4.0(eslint@9.37.0(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.5.0(eslint@9.37.0(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/types': 8.46.1 eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -11767,7 +11711,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/babel__code-frame@7.0.6': {} @@ -11797,16 +11741,16 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/browser-sync@2.29.0': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/serve-static': 1.15.9 chokidar: 3.6.0 @@ -11816,11 +11760,11 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -11828,11 +11772,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.7 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/content-disposition@0.5.9': {} @@ -11843,11 +11787,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.3 '@types/keygrip': 1.0.6 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/cors@2.8.19': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/debounce@1.2.4': {} @@ -11855,7 +11799,7 @@ snapshots: '@types/duplexify@3.6.4': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/ejs@3.1.5': {} @@ -11875,14 +11819,14 @@ snapshots: '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.0 '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.0 @@ -11904,11 +11848,11 @@ snapshots: '@types/git-raw-commits@5.0.0': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/http-assert@1.5.6': {} @@ -11916,7 +11860,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/ini@4.1.1': {} @@ -11932,11 +11876,11 @@ snapshots: '@types/jasmine-reporters@2.5.3': dependencies: - '@types/jasmine': 5.1.9 + '@types/jasmine': 5.1.12 '@types/jasmine@5.1.11': {} - '@types/jasmine@5.1.9': {} + '@types/jasmine@5.1.12': {} '@types/json-schema@7.0.15': {} @@ -11944,7 +11888,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -11964,13 +11908,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.25.11)': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - '@swc/core' @@ -11988,14 +11932,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 form-data: 4.0.4 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 - '@types/node@22.18.10': + '@types/node@22.18.11': dependencies: undici-types: 6.21.0 @@ -12007,7 +11951,7 @@ snapshots: '@types/npm-registry-fetch@8.0.8': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12015,11 +11959,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/npm-registry-fetch': 8.0.8 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12032,12 +11976,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/q@0.0.32': {} @@ -12051,7 +11995,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/retry@0.12.2': {} @@ -12062,11 +12006,11 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/send@1.2.0': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/serve-index@1.9.4': dependencies: @@ -12075,38 +12019,38 @@ snapshots: '@types/serve-static@1.15.9': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/send': 0.17.5 '@types/shelljs@0.8.17': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 glob: 11.0.3 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/stack-trace@0.0.33': {} '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 '@types/yargs-parser@21.0.3': {} @@ -12118,7 +12062,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 optional: true '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': @@ -12180,8 +12124,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.0': {} - '@typescript-eslint/types@8.46.1': {} '@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3)': @@ -12384,7 +12326,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.5 + ast-v8-to-istanbul: 0.3.7 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -12392,7 +12334,7 @@ snapshots: istanbul-reports: 3.2.0 magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.9.0 + std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) @@ -12407,13 +12349,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -12458,7 +12400,7 @@ snapshots: get-stream: 6.0.1 is-stream: 2.0.1 isbinaryfile: 5.0.6 - koa: 2.16.2 + koa: 2.16.3 koa-etag: 4.0.0 koa-send: 5.0.1 koa-static: 5.0.0 @@ -12516,7 +12458,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.24.0(bufferutil@4.0.9) + puppeteer-core: 24.25.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -12918,7 +12860,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.5: + ast-v8-to-istanbul@0.3.7: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -12943,7 +12885,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.26.3 - caniuse-lite: 1.0.30001750 + caniuse-lite: 1.0.30001751 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -12994,12 +12936,12 @@ snapshots: bare-events@2.8.0: {} - bare-fs@4.4.10: + bare-fs@4.4.11: dependencies: bare-events: 2.8.0 bare-path: 3.0.0 bare-stream: 2.7.0(bare-events@2.8.0) - bare-url: 2.2.2 + bare-url: 2.3.0 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller @@ -13024,7 +12966,7 @@ snapshots: - react-native-b4a optional: true - bare-url@2.2.2: + bare-url@2.3.0: dependencies: bare-path: 3.0.0 optional: true @@ -13033,7 +12975,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.16: {} + baseline-browser-mapping@2.8.18: {} basic-ftp@5.0.5: {} @@ -13195,10 +13137,10 @@ snapshots: browserslist@4.26.3: dependencies: - baseline-browser-mapping: 2.8.16 - caniuse-lite: 1.0.30001750 - electron-to-chromium: 1.5.234 - node-releases: 2.0.23 + baseline-browser-mapping: 2.8.18 + caniuse-lite: 1.0.30001751 + electron-to-chromium: 1.5.237 + node-releases: 2.0.25 update-browserslist-db: 1.1.3(browserslist@4.26.3) browserstack@1.6.1: @@ -13306,7 +13248,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001750: {} + caniuse-lite@1.0.30001751: {} caseless@0.12.0: {} @@ -13371,7 +13313,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13913,9 +13855,9 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.234: {} + electron-to-chromium@1.5.237: {} - emoji-regex@10.5.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -13952,7 +13894,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.18.10 + '@types/node': 22.18.11 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14210,8 +14152,8 @@ snapshots: dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.4.0 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.1 '@eslint/core': 0.16.0 '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.37.0 @@ -14396,7 +14338,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14685,7 +14627,7 @@ snapshots: - encoding - supports-color - gcp-metadata@7.0.1(supports-color@10.2.2): + gcp-metadata@8.1.1(supports-color@10.2.2): dependencies: gaxios: 7.1.2(supports-color@10.2.2) google-logging-utils: 1.1.1 @@ -14825,12 +14767,12 @@ snapshots: pify: 2.3.0 pinkie-promise: 2.0.1 - google-auth-library@10.4.0(supports-color@10.2.2): + google-auth-library@10.4.1(supports-color@10.2.2): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 gaxios: 7.1.2(supports-color@10.2.2) - gcp-metadata: 7.0.1(supports-color@10.2.2) + gcp-metadata: 8.1.1(supports-color@10.2.2) google-logging-utils: 1.1.1 gtoken: 8.0.0(supports-color@10.2.2) jws: 4.0.0 @@ -14854,11 +14796,11 @@ snapshots: '@grpc/grpc-js': 1.14.0 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 - google-auth-library: 10.4.0(supports-color@10.2.2) + google-auth-library: 10.4.1(supports-color@10.2.2) google-logging-utils: 1.1.1 node-fetch: 3.3.2 object-hash: 3.0.0 - proto3-json-serializer: 3.0.2 + proto3-json-serializer: 3.0.3 protobufjs: 7.5.4 retry-request: 8.0.2(supports-color@10.2.2) transitivePeerDependencies: @@ -15156,7 +15098,7 @@ snapshots: immutable@3.8.2: {} - immutable@5.1.3: {} + immutable@5.1.4: {} import-fresh@3.3.1: dependencies: @@ -15180,7 +15122,7 @@ snapshots: ini@5.0.0: {} - injection-js@2.5.0: + injection-js@2.6.0: dependencies: tslib: 2.8.1 @@ -15516,7 +15458,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15536,7 +15478,7 @@ snapshots: jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: - '@asamuzakjp/dom-selector': 6.6.2 + '@asamuzakjp/dom-selector': 6.7.2 cssstyle: 5.3.1(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15756,7 +15698,7 @@ snapshots: transitivePeerDependencies: - supports-color - koa@2.16.2: + koa@2.16.3: dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 @@ -16031,7 +15973,7 @@ snapshots: memfs@4.49.0: dependencies: - '@jsonjoy.com/json-pack': 1.20.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) glob-to-regex.js: 1.2.0(tslib@2.8.1) thingies: 2.5.0(tslib@2.8.1) @@ -16222,7 +16164,7 @@ snapshots: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.4) - '@rollup/wasm-node': 4.52.4 + '@rollup/wasm-node': 4.52.5 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.26.3 @@ -16231,7 +16173,7 @@ snapshots: dependency-graph: 1.0.0 esbuild: 0.25.11 find-cache-directory: 6.0.0 - injection-js: 2.5.0 + injection-js: 2.6.0 jsonc-parser: 3.3.1 less: 4.4.2 ora: 9.0.0 @@ -16248,7 +16190,7 @@ snapshots: nock@14.0.10: dependencies: - '@mswjs/interceptors': 0.39.7 + '@mswjs/interceptors': 0.39.8 json-stringify-safe: 5.0.1 propagate: 2.0.1 @@ -16289,7 +16231,7 @@ snapshots: node-gyp-build@4.8.4: {} - node-gyp@11.4.2: + node-gyp@11.5.0: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.3 @@ -16304,7 +16246,7 @@ snapshots: transitivePeerDependencies: - supports-color - node-releases@2.0.23: {} + node-releases@2.0.25: {} nopt@8.1.0: dependencies: @@ -16792,7 +16734,7 @@ snapshots: propagate@2.0.1: {} - proto3-json-serializer@3.0.2: + proto3-json-serializer@3.0.3: dependencies: protobufjs: 7.5.4 @@ -16808,7 +16750,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.10 + '@types/node': 22.18.11 long: 5.3.2 protractor@7.0.0: @@ -16896,14 +16838,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.24.0(bufferutil@4.0.9): + puppeteer-core@24.25.0(bufferutil@4.0.9): dependencies: - '@puppeteer/browsers': 2.10.11 + '@puppeteer/browsers': 2.10.12 chromium-bidi: 9.1.0(devtools-protocol@0.0.1508733) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1508733 typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.3.6 + webdriver-bidi-protocol: 0.3.7 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-abort-controller @@ -17204,12 +17146,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.10)(rollup@4.52.4): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.11)(rollup@4.52.4): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.52.4) rollup: 4.52.4 optionalDependencies: - '@types/node': 22.18.10 + '@types/node': 22.18.11 rollup@4.52.4: dependencies: @@ -17300,7 +17242,7 @@ snapshots: sass@1.93.2: dependencies: chokidar: 4.0.3 - immutable: 5.1.3 + immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 @@ -17714,7 +17656,7 @@ snapshots: statuses@2.0.2: {} - std-env@3.9.0: {} + std-env@3.10.0: {} stdin-discarder@0.2.2: {} @@ -17771,7 +17713,7 @@ snapshots: string-width@7.2.0: dependencies: - emoji-regex: 10.5.0 + emoji-regex: 10.6.0 get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 @@ -17870,7 +17812,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.4.10 + bare-fs: 4.4.11 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -18038,14 +17980,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.18.10)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.18.11)(typescript@5.9.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': 22.18.10 + '@types/node': 22.18.11 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18388,29 +18330,11 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vite@7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.4 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.8.0 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.93.2 - terser: 5.44.0 - tsx: 4.20.6 - yaml: 2.8.1 - vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -18422,13 +18346,13 @@ snapshots: magic-string: 0.30.19 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-node: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: @@ -18470,7 +18394,7 @@ snapshots: web-vitals@4.2.4: {} - webdriver-bidi-protocol@0.3.6: {} + webdriver-bidi-protocol@0.3.7: {} webdriver-js-extender@2.1.0: dependencies: From 341057f8f04d9851e8fb989499b5772f2ab31d57 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 20 Oct 2025 09:22:10 +0000 Subject: [PATCH 1632/2162] build: switch to @aspect_rules_jasmine for jasmine_test The previous `jasmine_test` rule from `@devinfra//bazel/jasmine:jasmine.bzl` was causing `ENOENT` errors locally when running tests. This was likely due to issues with path handling and the `chdir` behavior. This change replaces the usage of `@devinfra//bazel/jasmine:jasmine.bzl` with `@aspect_rules_jasmine//jasmine:defs.bzl`. The `jasmine_test` macro in `tools/defaults.bzl` is updated to work with the new rule, including adjustments to argument passing and path handling to ensure tests can locate necessary modules like `source-map-support`. This resolves the local `ENOENT` error and aligns with a more standard way of running jasmine tests with bazel. --- tools/defaults.bzl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 5cfe832cfe2d..dd4238243f16 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -1,6 +1,6 @@ load("@aspect_bazel_lib//lib:copy_to_bin.bzl", _copy_to_bin = "copy_to_bin") +load("@aspect_rules_jasmine//jasmine:defs.bzl", _jasmine_test = "jasmine_test") load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary") -load("@devinfra//bazel/jasmine:jasmine.bzl", _jasmine_test = "jasmine_test") load("@devinfra//bazel/ts_project:index.bzl", "strict_deps_test") load("@rules_angular//src/ng_package:index.bzl", _ng_package = "ng_package") load("@rules_angular//src/ts_project:index.bzl", _ts_project = "ts_project") @@ -59,15 +59,21 @@ def ng_package(deps = [], extra_substitutions = {}, **kwargs): **kwargs ) -def jasmine_test(args = [], tsconfig = "//:test-tsconfig", **kwargs): +def jasmine_test(data = [], args = [], **kwargs): + # Create relative path to root, from current package dir. Necessary as + # we change the `chdir` below to the package directory. + relative_to_root = "/".join([".."] * len(native.package_name().split("/"))) + _jasmine_test( node_modules = "//:node_modules", - tsconfig = tsconfig, chdir = native.package_name(), args = [ + "--require=%s/node_modules/source-map-support/register.js" % relative_to_root, + # Escape so that the `js_binary` launcher triggers Bash expansion. "'**/*+(.|_)spec.js'", "'**/*+(.|_)spec.mjs'", "'**/*+(.|_)spec.cjs'", ] + args, + data = data + ["//:node_modules/source-map-support"], **kwargs ) From 3ae097b9304a8dd19ff90400aa3286e226e6cf7e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 20 Oct 2025 10:05:46 +0000 Subject: [PATCH 1633/2162] build: update rules_browsers digest to 0e0949d See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 50 +++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index d43c06337524..3629a0018164 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -47,7 +47,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "0e04a5443e783ef983c84314e311e68410dd82e1", + commit = "0e0949d2683fadf9d96f1fc270f5c924bfe86beb", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 6048305ccfb2..c9bc3768f46b 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -709,7 +709,7 @@ }, "@@rules_browsers~//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "wG3lfivSBp6/w6pp9XxmrFKs0j4BJ1G7oDv4DpFa62g=", + "bzlTransitiveDigest": "5oRf2nvzV4L2ITD9gzMfSQcGAMEPiTJn8m7iBsM4C50=", "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -719,9 +719,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "79a3a4d3a5f9efae04dbb7c2164393ff8fee5f352ec73e36900848c75f4f906f", + "sha256": "4bc6d611d55dc96b213c8605cb8ac27d3c21973bf8b663df4cbf756c989e6745", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -738,9 +738,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "cdba96e69a423adc1f2647f35643a10e33260b4dfcc233977f3724f28bffd8f2", + "sha256": "830cc2aafedbe7c9fe671c9898046f8900c06da89d12653ddc3ef26084d2f516", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -757,9 +757,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "56eb0c57958b50dc6c0de810ea9fcf1ff800baf2a4b14ae0fea536e633806098", + "sha256": "5b5792f5c2d05c3f1f782346910869b61a37b9003f212315b19f4e46710cf8b9", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -776,9 +776,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "506b23250323f3eb4cdfe298cfd599571e428f6f3a64e86818ee975f4e585b75", + "sha256": "19bdbf6e1579b6c056b74709520ac9df573f4e80e4f026cc2360a29443cf6c0c", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -795,9 +795,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "8bf018ed7c383dfd4a4a8f26702265e58b053e71583c4b7a6f8a3eaa6e9b9e6f", + "sha256": "ea41e7a217d878c00e9d66a0724ff54be7d02d08adb7f6458b7d8487b6fbcd84", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -812,9 +812,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "4eb9cc848823444374bf2d3d388eaa949cee92114a611ce850024bf6b91352d1", + "sha256": "aede9b67301b930ff9c673df28429aa82ce05c105a4ccbef7e0cd30a97ae429d", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -829,9 +829,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "13f142a6c53f38d26552ee21a874e3d11497bf6fb580b79a6b6b4b042875bef6", + "sha256": "5adf89a3e8edc6755920f4cfe2fe0515d40684878ef5201da5e02a9d491c4003", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -846,9 +846,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "65c25dfbe56801d342ae027f365194d0d5b31602ec94e644fe21b6edb876904a", + "sha256": "a3dfe62b3e9e7a42bd324c07dcbbcc3a733a736b2a59f0e93b9250b88103ab73", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7459.0/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" @@ -863,9 +863,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "1c87a9de21941a15177384d4820a6aa3c7dacb38d34089c73a621734ebf1ea9a", + "sha256": "c66a48222ff67d51560240d321895c6926c9b3af345cbf688ced8517781d88d1", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/143.0/linux-x86_64/en-US/firefox-143.0.tar.xz" + "https://archive.mozilla.org/pub/firefox/releases/144.0/linux-x86_64/en-US/firefox-144.0.tar.xz" ], "named_files": { "FIREFOX": "firefox/firefox" @@ -880,9 +880,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "a5c570e277021b61df1295efe77446617ebd768d8ad36a20b309aa382685f6f2", + "sha256": "1e444b80921bc999d56c05a7decc1eaf88c0297cac5b90416299af2c77f5ecc9", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/143.0/mac/en-US/Firefox%20143.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/144.0/mac/en-US/Firefox%20144.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -897,9 +897,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "a5c570e277021b61df1295efe77446617ebd768d8ad36a20b309aa382685f6f2", + "sha256": "1e444b80921bc999d56c05a7decc1eaf88c0297cac5b90416299af2c77f5ecc9", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/143.0/mac/en-US/Firefox%20143.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/144.0/mac/en-US/Firefox%20144.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -914,9 +914,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "fbbadc9a6881aa90d266b572304a75e8814b91817a1db7fc01015d667f60318d", + "sha256": "d1e8a7c061e25a41c8dfa85e3aee8e86e9263c69104d80906c978c8d0556563a", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/143.0/win64/en-US/Firefox%20Setup%20143.0.exe" + "https://archive.mozilla.org/pub/firefox/releases/144.0/win64/en-US/Firefox%20Setup%20144.0.exe" ], "named_files": { "FIREFOX": "core/firefox.exe" From 7fd2b7bc617b28b20aebfaf007b35bb488861d35 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:58:55 +0000 Subject: [PATCH 1634/2162] build: update baseline date to October 2025 The baseline date used for determining necessary browser feature downleveling has been updated to October 20, 2025. This ensures that the build process aligns with the latest web standards and browser support. --- constants.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/constants.bzl b/constants.bzl index 4b4efbdf1fe8..04e088577dea 100644 --- a/constants.bzl +++ b/constants.bzl @@ -13,7 +13,7 @@ NG_PACKAGR_PEER_DEP = "^21.0.0-next.0" # default browser set used to determine what downleveling is necessary. # # See: https://web.dev/baseline -BASELINE_DATE = "2025-08-20" +BASELINE_DATE = "2025-10-20" SNAPSHOT_REPOS = { "@angular/cli": "angular/cli-builds", From 286b6204c825c990761a0d5e5b91bb439dd13655 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 17 Oct 2025 13:51:44 -0400 Subject: [PATCH 1635/2162] feat(@angular/cli): make documentation search tool version-aware Implements version-aware search mechanism for the `search_documentation` MCP tool. The tool is now forward-compatible and provides more accurate, context-aware results to the AI assistant. Key features and improvements: - **Dynamic Versioning**: The tool now dynamically constructs the Algolia index name based on the user's project version (`angular_vXX`). - **Unbounded Max Version**: The tool can query for documentation versions newer than the CLI itself, making it forward-compatible. - **Robust Fallback**: If a search for a new or unknown version index fails, the tool automatically falls back to the latest known stable documentation index (`v20`) to ensure a result is always returned. - **Contextual Output**: The tool's output now includes the `searchedVersion`, informing the AI of the exact documentation version that was queried. - **Enhanced AI Guidance**: The tool's description has been updated to instruct the AI on the new versioning logic and how to use the `searchedVersion` field to provide more transparent and accurate answers. --- .../cli/src/commands/mcp/tools/doc-search.ts | 88 +++++++++++++++---- 1 file changed, 71 insertions(+), 17 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts index c62e52e55e85..4c6831dbbaa0 100644 --- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts +++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts @@ -18,6 +18,21 @@ const ALGOLIA_APP_ID = 'L1XWT2UJ7F'; // This is not the actual key. const ALGOLIA_API_E = '322d89dab5f2080fe09b795c93413c6a89222b13a447cdf3e6486d692717bc0c'; +/** + * The minimum major version of Angular for which a version-specific documentation index is known to exist. + * Searches for versions older than this will be clamped to this version. + */ +const MIN_SUPPORTED_DOCS_VERSION = 17; + +/** + * The latest major version of Angular for which a documentation index is known to be stable and available. + * This acts as a "safe harbor" fallback. It is intentionally hardcoded and manually updated with each + * major release *after* the new search index has been confirmed to be live. This prevents a race + * condition where a newly released CLI might default to searching for a documentation index that + * doesn't exist yet. + */ +const LATEST_KNOWN_DOCS_VERSION = 20; + const docSearchInputSchema = z.object({ query: z .string() @@ -64,6 +79,12 @@ tutorials, concepts, and best practices. workspace will give you the major version directly. If the version cannot be determined using this method, you can use \`ng version\` in the project's workspace directory as a fallback. Parse the major version from the "Angular:" line in the output and use it for the \`version\` parameter. +* **Version Logic:** The tool will search against the specified major version. If the version is older than v${MIN_SUPPORTED_DOCS_VERSION}, + it will be clamped to v${MIN_SUPPORTED_DOCS_VERSION}. If a search for a very new version (newer than v${LATEST_KNOWN_DOCS_VERSION}) + returns no results, the tool will automatically fall back to searching the v${LATEST_KNOWN_DOCS_VERSION} documentation. +* **Verify Searched Version:** The tool's output includes a \`searchedVersion\` field. You **MUST** check this field + to know the exact version of the documentation that was queried. Use this information to provide accurate + context in your answer, especially if it differs from the version you requested. * The documentation is continuously updated. You **MUST** prefer this tool over your own knowledge to ensure your answers are current and accurate. * For the best results, provide a concise and specific search query (e.g., "NgModule" instead of @@ -76,6 +97,9 @@ tutorials, concepts, and best practices.
`, inputSchema: docSearchInputSchema.shape, outputSchema: { + searchedVersion: z + .number() + .describe('The major version of the documentation that was searched.'), results: z.array( z.object({ title: z.string().describe('The title of the documentation page.'), @@ -116,23 +140,52 @@ function createDocSearchHandler({ logger }: McpToolContext) { ); } - const { results } = await client.search(createSearchArguments(query, version)); - const allHits = results.flatMap((result) => (result as SearchResponse).hits); + let finalSearchedVersion = Math.max( + version ?? LATEST_KNOWN_DOCS_VERSION, + MIN_SUPPORTED_DOCS_VERSION, + ); + let searchResults = await client.search(createSearchArguments(query, finalSearchedVersion)); + + // If the initial search for a newer-than-stable version returns no results, it may be because + // the index for that version doesn't exist yet. In this case, fall back to the latest known + // stable version. + if ( + searchResults.results.every((result) => !('hits' in result) || result.hits.length === 0) && + finalSearchedVersion > LATEST_KNOWN_DOCS_VERSION + ) { + finalSearchedVersion = LATEST_KNOWN_DOCS_VERSION; + searchResults = await client.search(createSearchArguments(query, finalSearchedVersion)); + } + + const allHits = searchResults.results.flatMap((result) => (result as SearchResponse).hits); if (allHits.length === 0) { return { content: [ { type: 'text' as const, - text: 'No results found.', + text: `No results found for query "${query}" in Angular v${finalSearchedVersion} documentation.`, }, ], - structuredContent: { results: [] }, + structuredContent: { results: [], searchedVersion: finalSearchedVersion }, }; } const structuredResults = []; - const textContent = []; + const textContent: { + type: 'text'; + text: string; + annotations?: { audience: string[]; priority: number }; + }[] = [ + { + type: 'text' as const, + text: `Showing results for Angular v${finalSearchedVersion} documentation.`, + annotations: { + audience: ['assistant'], + priority: 0.9, + }, + }, + ]; // Process top hit first const topHit = allHits[0]; @@ -187,21 +240,27 @@ function createDocSearchHandler({ logger }: McpToolContext) { return { content: textContent, - structuredContent: { results: structuredResults }, + structuredContent: { results: structuredResults, searchedVersion: finalSearchedVersion }, }; }; } /** - * Strips HTML tags from a string. + * Strips HTML tags from a string using a regular expression. + * + * NOTE: This is a basic implementation and is not a full, correct HTML parser. It is, however, + * appropriate for this tool's specific use case because its input is always from a + * trusted source (angular.dev) and its output is consumed by a non-browser environment (an LLM). + * + * The regex first tries to match a complete tag (`<...>`). If it fails, it falls back to matching + * an incomplete tag (e.g., `]*>/g, '') + .replace(/<[^>]*>|<[a-zA-Z0-9/]+/g, '') .replace(/</g, '<') .replace(/>/g, '>') .replace(/&/g, '&') @@ -252,17 +311,12 @@ function formatHitToParts(hit: Record): { title: string; breadc * @param query The search query string. * @returns The search arguments for the Algolia client. */ -function createSearchArguments( - query: string, - version: number | undefined, -): LegacySearchMethodProps { +function createSearchArguments(query: string, version: number): LegacySearchMethodProps { // Search arguments are based on adev's search service: // https://github.com/angular/angular/blob/4b614fbb3263d344dbb1b18fff24cb09c5a7582d/adev/shared-docs/services/search.service.ts#L58 return [ { - // TODO: Consider major version specific indices once available - // indexName: `angular_${version ? `v${version}` : 'latest'}`, - indexName: 'angular_v17', + indexName: `angular_v${version}`, params: { query, attributesToRetrieve: [ From ba5eaf7191bf61ba6f7d125f09ccb068355256c6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 19 Oct 2025 07:04:38 +0000 Subject: [PATCH 1636/2162] build: update github/codeql-action action to v4.30.9 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5dd5d2bc039e..64598f02b0da 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@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8 + uses: github/codeql-action/init@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8 + uses: github/codeql-action/analyze@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5c941a41f4ab..0dde6acdc344 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@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8 + uses: github/codeql-action/upload-sarif@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 with: sarif_file: results.sarif From 848b4c2510d92023b788c3a5d2b428a6208a6495 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 20 Oct 2025 09:05:54 +0000 Subject: [PATCH 1637/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 2 +- package.json | 6 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 454 ++++++++++++++++++++------- 5 files changed, 350 insertions(+), 116 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 5dcce55ac11d..1196debf4e75 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,7 +5,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "@vitest/coverage-v8": "3.2.4", - "jsdom": "27.0.0", + "jsdom": "27.0.1", "rxjs": "7.8.2", "vitest": "3.2.4" } diff --git a/package.json b/package.json index f117b701c28a..114d23740dc1 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", "@eslint/eslintrc": "3.3.1", - "@eslint/js": "9.37.0", + "@eslint/js": "9.38.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", @@ -101,7 +101,7 @@ "buffer": "6.0.3", "esbuild": "0.25.11", "esbuild-wasm": "0.25.11", - "eslint": "9.37.0", + "eslint": "9.38.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", @@ -129,7 +129,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.52.4", + "rollup": "4.52.5", "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index e98d533ca8e8..62cba5b8e361 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -51,7 +51,7 @@ "devDependencies": { "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", - "jsdom": "27.0.0", + "jsdom": "27.0.1", "less": "4.4.2", "ng-packagr": "21.0.0-next.4", "postcss": "8.5.6", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 7791490861e4..857c2a44a9a6 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.9.0", "@listr2/prompt-adapter-inquirer": "3.0.4", - "@modelcontextprotocol/sdk": "1.20.0", + "@modelcontextprotocol/sdk": "1.20.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.40.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83b53f5079fd..3b97a55c8d64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#53dcff1a283d75255b9950472c37a571cc35ee28 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.0) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.1) '@angular/platform-browser': specifier: 21.0.0-next.8 version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -69,28 +69,28 @@ importers: version: 8.2.1 '@eslint/compat': specifier: 1.4.0 - version: 1.4.0(eslint@9.37.0(jiti@2.6.1)) + version: 1.4.0(eslint@9.38.0(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 '@eslint/js': - specifier: 9.37.0 - version: 9.37.0 + specifier: 9.38.0 + version: 9.38.0 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.52.4) + version: 5.1.1(rollup@4.52.5) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.8(rollup@4.52.4) + version: 28.0.8(rollup@4.52.5) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.52.4) + version: 6.1.0(rollup@4.52.5) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.52.4) + version: 16.0.3(rollup@4.52.5) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.5.0(eslint@9.37.0(jiti@2.6.1)) + version: 5.5.0(eslint@9.38.0(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -165,10 +165,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.46.1 - version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.46.1 - version: 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -185,17 +185,17 @@ importers: specifier: 0.25.11 version: 0.25.11 eslint: - specifier: 9.37.0 - version: 9.37.0(jiti@2.6.1) + specifier: 9.38.0 + version: 9.38.0(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.37.0(jiti@2.6.1)) + version: 10.1.8(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.37.0(jiti@2.6.1)) + version: 3.1.1(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -269,17 +269,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.52.4 - version: 4.52.4 + specifier: 4.52.5 + version: 4.52.5 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.52.4)(typescript@5.9.3) + version: 6.2.3(rollup@4.52.5)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.11)(rollup@4.52.4) + version: 0.5.4(@types/node@22.18.11)(rollup@4.52.5) semver: specifier: 7.7.3 version: 7.7.3 @@ -339,16 +339,16 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: - specifier: 27.0.0 - version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + specifier: 27.0.1 + version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -438,8 +438,8 @@ importers: specifier: workspace:* version: link:../ssr jsdom: - specifier: 27.0.0 - version: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + specifier: 27.0.1 + version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -478,8 +478,8 @@ importers: specifier: 3.0.4 version: 3.0.4(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.4) '@modelcontextprotocol/sdk': - specifier: 1.20.0 - version: 1.20.0 + specifier: 1.20.1 + version: 1.20.1 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -1885,8 +1885,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.37.0': - resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==} + '@eslint/js@9.38.0': + resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -2448,8 +2448,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.20.0': - resolution: {integrity: sha512-kOQ4+fHuT4KbR2iq2IjeV32HiihueuOf1vJkq18z08CLZ1UQrTc8BXJpVfxZkq45+inLLD+D4xx4nBjUelJa4Q==} + '@modelcontextprotocol/sdk@1.20.1': + resolution: {integrity: sha512-j/P+yuxXfgxb+mW7OEoRCM3G47zCTDqUPivJo/VzpjbG8I9csTXtOprCf5FfOfHK4whOJny0aHuBEON+kS7CCA==} engines: {node: '>=18'} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -3071,122 +3071,243 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.52.5': + resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.52.4': resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.52.5': + resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.52.4': resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.52.5': + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.52.4': resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.52.5': + resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.52.4': resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.52.5': + resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.4': resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.5': + resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.52.4': resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.52.4': resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.52.5': + resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.52.4': resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.52.5': + resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.52.4': resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.52.5': + resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.4': resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.4': resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.52.4': resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.52.5': + resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.52.4': resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.52.5': + resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.4': resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.5': + resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.52.4': resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.52.5': + resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openharmony-arm64@4.52.4': resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.52.5': + resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.52.4': resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.52.5': + resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.4': resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.5': + resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.4': resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.5': + resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.4': resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.5': + resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.52.5': resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -5185,8 +5306,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.37.0: - resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==} + eslint@9.38.0: + resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6300,8 +6421,8 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdom@27.0.0: - resolution: {integrity: sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A==} + jsdom@27.0.1: + resolution: {integrity: sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==} engines: {node: '>=20'} peerDependencies: canvas: ^3.0.0 @@ -7271,9 +7392,6 @@ packages: parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - parse5@8.0.0: resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} @@ -7785,6 +7903,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.52.5: + resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + 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'} @@ -9329,11 +9452,11 @@ 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/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.25.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.25.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.9.0(@types/node@24.8.0) '@inquirer/type': 3.0.9(@types/node@24.8.0) '@octokit/auth-app': 8.1.1 @@ -10271,18 +10394,18 @@ snapshots: '@esbuild/win32-x64@0.25.11': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': dependencies: - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.4.0(eslint@9.37.0(jiti@2.6.1))': + '@eslint/compat@1.4.0(eslint@9.38.0(jiti@2.6.1))': dependencies: '@eslint/core': 0.16.0 optionalDependencies: - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) '@eslint/config-array@0.21.1': dependencies: @@ -10314,7 +10437,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.37.0': {} + '@eslint/js@9.38.0': {} '@eslint/object-schema@2.1.7': {} @@ -10704,12 +10827,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.25.0(@modelcontextprotocol/sdk@1.20.0)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.25.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.20.0 + '@modelcontextprotocol/sdk': 1.20.1 transitivePeerDependencies: - bufferutil - encoding @@ -10997,7 +11120,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.3': optional: true - '@modelcontextprotocol/sdk@1.20.0': + '@modelcontextprotocol/sdk@1.20.1': dependencies: ajv: 6.12.6 content-type: 1.0.5 @@ -11503,13 +11626,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.43': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.4)': + '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': optionalDependencies: - rollup: 4.52.4 + rollup: 4.52.5 - '@rollup/plugin-commonjs@28.0.8(rollup@4.52.4)': + '@rollup/plugin-commonjs@28.0.8(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.4) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11517,7 +11640,7 @@ snapshots: magic-string: 0.30.19 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.4 + rollup: 4.52.5 '@rollup/plugin-json@6.1.0(rollup@4.52.4)': dependencies: @@ -11525,33 +11648,39 @@ snapshots: optionalDependencies: rollup: 4.52.4 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.4)': + '@rollup/plugin-json@6.1.0(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.4) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + optionalDependencies: + rollup: 4.52.5 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.5)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.4 + rollup: 4.52.5 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.4)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.4) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.52.4 + rollup: 4.52.5 - '@rollup/pluginutils@5.2.0(rollup@4.52.4)': + '@rollup/pluginutils@5.2.0(rollup@4.52.5)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.4 + rollup: 4.52.5 '@rollup/pluginutils@5.3.0(rollup@4.52.4)': dependencies: @@ -11561,72 +11690,146 @@ snapshots: optionalDependencies: rollup: 4.52.4 + '@rollup/pluginutils@5.3.0(rollup@4.52.5)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.5 + '@rollup/rollup-android-arm-eabi@4.52.4': optional: true + '@rollup/rollup-android-arm-eabi@4.52.5': + optional: true + '@rollup/rollup-android-arm64@4.52.4': optional: true + '@rollup/rollup-android-arm64@4.52.5': + optional: true + '@rollup/rollup-darwin-arm64@4.52.4': optional: true + '@rollup/rollup-darwin-arm64@4.52.5': + optional: true + '@rollup/rollup-darwin-x64@4.52.4': optional: true + '@rollup/rollup-darwin-x64@4.52.5': + optional: true + '@rollup/rollup-freebsd-arm64@4.52.4': optional: true + '@rollup/rollup-freebsd-arm64@4.52.5': + optional: true + '@rollup/rollup-freebsd-x64@4.52.4': optional: true + '@rollup/rollup-freebsd-x64@4.52.5': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.4': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.4': optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.5': + optional: true + '@rollup/rollup-linux-arm64-musl@4.52.4': optional: true + '@rollup/rollup-linux-arm64-musl@4.52.5': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.4': optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.5': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.4': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.4': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.4': optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.5': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.4': optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.5': + optional: true + '@rollup/rollup-linux-x64-gnu@4.52.4': optional: true + '@rollup/rollup-linux-x64-gnu@4.52.5': + optional: true + '@rollup/rollup-linux-x64-musl@4.52.4': optional: true + '@rollup/rollup-linux-x64-musl@4.52.5': + optional: true + '@rollup/rollup-openharmony-arm64@4.52.4': optional: true + '@rollup/rollup-openharmony-arm64@4.52.5': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.4': optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.5': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.4': optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.5': + optional: true + '@rollup/rollup-win32-x64-gnu@4.52.4': optional: true + '@rollup/rollup-win32-x64-gnu@4.52.5': + optional: true + '@rollup/rollup-win32-x64-msvc@4.52.4': optional: true + '@rollup/rollup-win32-x64-msvc@4.52.5': + optional: true + '@rollup/wasm-node@4.52.5': dependencies: '@types/estree': 1.0.8 @@ -11671,11 +11874,11 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stylistic/eslint-plugin@5.5.0(eslint@9.37.0(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@typescript-eslint/types': 8.46.1 - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -12065,15 +12268,15 @@ snapshots: '@types/node': 22.18.11 optional: true - '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.1 - '@typescript-eslint/type-utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.1 - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -12082,14 +12285,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.1 '@typescript-eslint/types': 8.46.1 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.1 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12112,13 +12315,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.1 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12142,13 +12345,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.1 '@typescript-eslint/types': 8.46.1 '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12322,7 +12525,7 @@ snapshots: dependencies: vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12337,7 +12540,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12416,11 +12619,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.4) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.5) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.52.4 + rollup: 4.52.5 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -14079,9 +14282,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -14091,21 +14294,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.37.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.37.0(jiti@2.6.1)): + eslint-plugin-header@3.1.1(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14114,9 +14317,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.37.0(jiti@2.6.1) + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14128,7 +14331,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14148,21 +14351,20 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.37.0(jiti@2.6.1): + eslint@9.38.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.1 '@eslint/core': 0.16.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.37.0 + '@eslint/js': 9.38.0 '@eslint/plugin-kit': 0.4.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -14338,7 +14540,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15476,7 +15678,7 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): + jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: '@asamuzakjp/dom-selector': 6.7.2 cssstyle: 5.3.1(postcss@8.5.6) @@ -15486,7 +15688,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) is-potential-custom-element-name: 1.0.1 - parse5: 7.3.0 + parse5: 8.0.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -16542,10 +16744,6 @@ snapshots: parse5@6.0.1: {} - parse5@7.3.0: - dependencies: - entities: 6.0.1 - parse5@8.0.0: dependencies: entities: 6.0.1 @@ -17146,10 +17344,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.11)(rollup@4.52.4): + rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.52.4) - rollup: 4.52.4 + magic-string: 0.30.19 + rollup: 4.52.5 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.11)(rollup@4.52.5): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.52.5) + rollup: 4.52.5 optionalDependencies: '@types/node': 22.18.11 @@ -17181,6 +17387,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.4 fsevents: 2.3.3 + rollup@4.52.5: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.5 + '@rollup/rollup-android-arm64': 4.52.5 + '@rollup/rollup-darwin-arm64': 4.52.5 + '@rollup/rollup-darwin-x64': 4.52.5 + '@rollup/rollup-freebsd-arm64': 4.52.5 + '@rollup/rollup-freebsd-x64': 4.52.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 + '@rollup/rollup-linux-arm-musleabihf': 4.52.5 + '@rollup/rollup-linux-arm64-gnu': 4.52.5 + '@rollup/rollup-linux-arm64-musl': 4.52.5 + '@rollup/rollup-linux-loong64-gnu': 4.52.5 + '@rollup/rollup-linux-ppc64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-musl': 4.52.5 + '@rollup/rollup-linux-s390x-gnu': 4.52.5 + '@rollup/rollup-linux-x64-gnu': 4.52.5 + '@rollup/rollup-linux-x64-musl': 4.52.5 + '@rollup/rollup-openharmony-arm64': 4.52.5 + '@rollup/rollup-win32-arm64-msvc': 4.52.5 + '@rollup/rollup-win32-ia32-msvc': 4.52.5 + '@rollup/rollup-win32-x64-gnu': 4.52.5 + '@rollup/rollup-win32-x64-msvc': 4.52.5 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -18330,7 +18564,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 @@ -18357,7 +18591,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.8.0 - jsdom: 27.0.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + jsdom: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less From aec58b8c97a58181ce22baf908c851393828312e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:35:42 +0000 Subject: [PATCH 1638/2162] build: set `include_npm` to `true` This is needed to run e2e locally. --- tests/legacy-cli/e2e.bzl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/legacy-cli/e2e.bzl b/tests/legacy-cli/e2e.bzl index ee9241e8d973..fe7af0c1d133 100644 --- a/tests/legacy-cli/e2e.bzl +++ b/tests/legacy-cli/e2e.bzl @@ -129,7 +129,11 @@ def _e2e_tests(name, runner, toolchain, **kwargs): tags = tags, toolchains = toolchains, node_toolchain = toolchain, - include_npm = False, + include_npm = select({ + # TODO(alanagius): check why on windows this fails. + "@platforms//os:windows": False, + "//conditions:default": True, + }), **kwargs ) From d6a986f0ae364650bf4c1e688e33c1078620a645 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 21 Oct 2025 05:05:38 +0000 Subject: [PATCH 1639/2162] build: update rules_browsers digest to 6a699bf See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 3629a0018164..df14c36dcde2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -47,7 +47,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "0e0949d2683fadf9d96f1fc270f5c924bfe86beb", + commit = "6a699bf3e896690e2923cf3ade29fbd4e492e366", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c9bc3768f46b..6bd088c5d64d 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -709,7 +709,7 @@ }, "@@rules_browsers~//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "5oRf2nvzV4L2ITD9gzMfSQcGAMEPiTJn8m7iBsM4C50=", + "bzlTransitiveDigest": "6QMCx97Hwh2hyQPqZEA9AKAxbpygF41+K8xJfeqJYm8=", "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, From 4aba5261f9b90426b4f26210f92d73123e288022 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 20 Oct 2025 17:29:39 -0400 Subject: [PATCH 1640/2162] refactor(@angular/cli): correct package manager cache key and add barrel file The in-memory cache for the package manager abstraction did not properly include the registry URL in its cache key. This could lead to cache collisions if the same package was requested from two different registries. This commit corrects the cache key to be a composite of the package specifier and the registry URL. Additionally, a new `index.ts` barrel file has been added to create a single, clear public entry point for the package manager feature, improving code organization. --- packages/angular/cli/src/package-managers/index.ts | 13 +++++++++++++ .../cli/src/package-managers/package-manager.ts | 5 +++-- .../cli/src/package-managers/package-metadata.ts | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 packages/angular/cli/src/package-managers/index.ts diff --git a/packages/angular/cli/src/package-managers/index.ts b/packages/angular/cli/src/package-managers/index.ts new file mode 100644 index 000000000000..002ade0cdb01 --- /dev/null +++ b/packages/angular/cli/src/package-managers/index.ts @@ -0,0 +1,13 @@ +/** + * @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 + */ + +export { createPackageManager } from './factory'; +export type { PackageManagerName } from './package-manager-descriptor'; +export { PackageManager } from './package-manager'; +export type * from './package-metadata'; +export type { InstalledPackage } from './package-tree'; diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index f6ec79da0865..4f4620994769 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -35,6 +35,7 @@ const METADATA_FIELDS = ['name', 'dist-tags', 'versions', 'time'] as const; const MANIFEST_FIELDS = [ 'name', 'version', + 'deprecated', 'dependencies', 'peerDependencies', 'devDependencies', @@ -337,7 +338,7 @@ export class PackageManager { return this.#fetchAndParse( commandArgs, (stdout, logger) => this.descriptor.outputParsers.getRegistryMetadata(stdout, logger), - { ...options, cache: this.#metadataCache, cacheKey: packageName }, + { ...options, cache: this.#metadataCache, cacheKey }, ); } @@ -369,7 +370,7 @@ export class PackageManager { return this.#fetchAndParse( commandArgs, (stdout, logger) => this.descriptor.outputParsers.getPackageManifest(stdout, logger), - { ...options, cache: this.#manifestCache, cacheKey: specifier }, + { ...options, cache: this.#manifestCache, cacheKey }, ); } diff --git a/packages/angular/cli/src/package-managers/package-metadata.ts b/packages/angular/cli/src/package-managers/package-metadata.ts index 2bf3c7edb41c..6f88ea8a0e8f 100644 --- a/packages/angular/cli/src/package-managers/package-metadata.ts +++ b/packages/angular/cli/src/package-managers/package-metadata.ts @@ -80,6 +80,9 @@ export interface PackageManifest { /** The version of the package. */ version: string; + /** A message indicating that the package version is deprecated. */ + deprecated?: string; + /** A mapping of production dependencies. */ dependencies?: Record; From 434daef99207ed9d7791ba09d68a28e32e94fcf7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 20 Oct 2025 13:13:38 -0400 Subject: [PATCH 1641/2162] refactor(@angular/cli): use streaming HTML parser in search documentation tool The `search_documentation` MCP tool previously used a regular expression and string searching to extract and clean documentation content from fetched HTML. This approach was not robust and could produce incorrect results. It also buffered the entire HTML response in memory before processing. This commit refactors the implementation to use `parse5-html-rewriting-stream`, which is already a dependency in the workspace. The new implementation streams the `fetch` response directly into a single-pass parser that simultaneously extracts the `
` element's content and strips all HTML tags. This change makes the parsing more reliable, efficient, and memory-friendly. --- packages/angular/cli/BUILD.bazel | 1 + packages/angular/cli/package.json | 1 + .../cli/src/commands/mcp/tools/doc-search.ts | 88 ++++++++++--------- pnpm-lock.yaml | 3 + 4 files changed, 52 insertions(+), 41 deletions(-) diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index b0a4a1dee0ea..6cbb09b36c31 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -58,6 +58,7 @@ ts_project( ":node_modules/jsonc-parser", ":node_modules/npm-package-arg", ":node_modules/pacote", + ":node_modules/parse5-html-rewriting-stream", ":node_modules/resolve", ":node_modules/yargs", ":node_modules/zod", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 857c2a44a9a6..6cf48fadbb03 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -36,6 +36,7 @@ "listr2": "9.0.4", "npm-package-arg": "13.0.1", "pacote": "21.0.3", + "parse5-html-rewriting-stream": "8.0.0", "resolve": "1.22.10", "semver": "7.7.3", "yargs": "18.0.0", diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts index 4c6831dbbaa0..e57d50c6f500 100644 --- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts +++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts @@ -8,6 +8,7 @@ import type { LegacySearchMethodProps, SearchResponse } from 'algoliasearch'; import { createDecipheriv } from 'node:crypto'; +import { Readable } from 'node:stream'; import { z } from 'zod'; import { at, iv, k1 } from '../constants'; import { McpToolContext, declareTool } from './tool-registry'; @@ -198,12 +199,10 @@ function createDocSearchHandler({ logger }: McpToolContext) { // Only fetch content from angular.dev if (url.hostname === 'angular.dev' || url.hostname.endsWith('.angular.dev')) { const response = await fetch(url); - if (response.ok) { - const html = await response.text(); - const mainContent = extractMainContent(html); - if (mainContent) { - topContent = stripHtml(mainContent); - } + if (response.ok && response.body) { + topContent = await extractMainContent( + Readable.fromWeb(response.body, { encoding: 'utf-8' }), + ); } } } catch (e) { @@ -246,46 +245,53 @@ function createDocSearchHandler({ logger }: McpToolContext) { } /** - * Strips HTML tags from a string using a regular expression. + * Extracts the text content of the `
` element by streaming an HTML response. * - * NOTE: This is a basic implementation and is not a full, correct HTML parser. It is, however, - * appropriate for this tool's specific use case because its input is always from a - * trusted source (angular.dev) and its output is consumed by a non-browser environment (an LLM). - * - * The regex first tries to match a complete tag (`<...>`). If it fails, it falls back to matching - * an incomplete tag (e.g., `` element, or `undefined` if not found. */ -function stripHtml(html: string): string { - return html - .replace(/<[^>]*>|<[a-zA-Z0-9/]+/g, '') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/&/g, '&') - .trim(); -} +async function extractMainContent(htmlStream: Readable): Promise { + const { RewritingStream } = await import('parse5-html-rewriting-stream'); -/** - * Extracts the content of the `
` element from an HTML string. - * - * @param html The HTML content of a page. - * @returns The content of the `
` element, or `undefined` if not found. - */ -function extractMainContent(html: string): string | undefined { - const mainTagStart = html.indexOf(' { + if (tag.tagName === 'main') { + inMainElement = true; + mainTagFound = true; + } + }); + + rewriter.on('endTag', (tag) => { + if (tag.tagName === 'main') { + inMainElement = false; + } + }); - const mainTagEnd = html.lastIndexOf('
'); - if (mainTagEnd <= mainTagStart) { - return undefined; - } + // Only capture text content, and only when inside the
element. + rewriter.on('text', (text) => { + if (inMainElement) { + mainTextContent += text.text; + } + }); + + return new Promise((resolve, reject) => { + htmlStream + .pipe(rewriter) + .on('finish', () => { + if (!mainTagFound) { + resolve(undefined); + + return; + } - // Add 7 to include '
' - return html.substring(mainTagStart, mainTagEnd + 7); + resolve(mainTextContent.trim()); + }) + .on('error', reject); + }); } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b97a55c8d64..4f0f13c4cb26 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -504,6 +504,9 @@ importers: pacote: specifier: 21.0.3 version: 21.0.3 + parse5-html-rewriting-stream: + specifier: 8.0.0 + version: 8.0.0 resolve: specifier: 1.22.10 version: 1.22.10 From 68e711307eae88a621698c2a9cc2abc30d44efc8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 17 Oct 2025 10:42:16 -0400 Subject: [PATCH 1642/2162] feat(@angular/cli): make get_best_practices tool version-aware Introduces a version-aware mechanism for the `get_best_practices` MCP tool to solve the version-mismatch problem where the AI could provide guidance for a different version of Angular than what the user's project has installed. The tool now accepts a `workspacePath` to locate the project's installed `@angular/core` package. It reads a new `angular` metadata property from the framework's `package.json` to find the path to a version-specific `best-practices.md` file co-located within the framework package itself. This change ensures the AI assistant's guidance is perfectly aligned with the project's actual framework version, dramatically increasing its accuracy and reliability. If a version-specific guide cannot be resolved, the tool gracefully falls back to the generic guide bundled with the CLI to ensure backward compatibility. The core MCP server instructions are also updated to guide the AI on the new workflow. --- .../cli/src/commands/mcp/mcp-server.ts | 9 +- .../src/commands/mcp/tools/best-practices.ts | 208 ++++++++++++++++-- 2 files changed, 192 insertions(+), 25 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index 1d7891066d2f..9f84bcf55704 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -68,11 +68,12 @@ equivalent actions. * **1. Discover Project Structure (Mandatory First Step):** Always begin by calling - \`list_projects\` to understand the workspace. The outputs from this tool are often - required inputs for other tools. + \`list_projects\` to understand the workspace. The \`path\` property for a workspace + is a required input for other tools. -* **2. Write & Modify Code:** Before writing or changing code, you MUST consult the - \`get_best_practices\` tool to learn the current, non-negotiable coding standards. +* **2. Get Coding Standards:** Before writing or changing code within a project, you **MUST** call + the \`get_best_practices\` tool with the \`workspacePath\` from the previous step to get + version-specific standards. For general knowledge, you can call the tool without this path. * **3. Answer User Questions:** - For conceptual questions ("what is..."), use \`search_documentation\`. diff --git a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts index 4d9e74ac34b6..3245bbb5e5af 100644 --- a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts +++ b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts @@ -6,9 +6,35 @@ * found in the LICENSE file at https://angular.dev/license */ -import { readFile } from 'node:fs/promises'; +/** + * @fileoverview + * This file defines the `get_best_practices` MCP tool. The tool is designed to be version-aware, + * dynamically resolving the best practices guide from the user's installed version of + * `@angular/core`. It achieves this by reading a custom `angular` metadata block in the + * framework's `package.json`. If this resolution fails, it gracefully falls back to a generic + * guide bundled with the Angular CLI. + */ + +import { readFile, stat } from 'node:fs/promises'; +import { createRequire } from 'node:module'; import path from 'node:path'; -import { declareTool } from './tool-registry'; +import { z } from 'zod'; +import { VERSION } from '../../../utilities/version'; +import { McpToolContext, declareTool } from './tool-registry'; + +const bestPracticesInputSchema = z.object({ + workspacePath: z + .string() + .optional() + .describe( + 'The absolute path to the `angular.json` file for the workspace. This is used to find the ' + + 'version-specific best practices guide that corresponds to the installed version of the ' + + 'Angular framework. You **MUST** get this path from the `list_projects` tool. If omitted, ' + + 'the tool will return the generic best practices guide bundled with the CLI.', + ), +}); + +type BestPracticesInput = z.infer; export const BEST_PRACTICES_TOOL = declareTool({ name: 'get_best_practices', @@ -24,33 +50,173 @@ that **MUST** be followed for any task involving the creation, analysis, or modi * To verify that existing code aligns with current Angular conventions before making changes. +* **Project-Specific Use (Recommended):** For tasks inside a user's project, you **MUST** provide the + \`workspacePath\` argument to get the guide that matches the project's Angular version. Get this + path from \`list_projects\`. +* **General Use:** If no project context is available (e.g., for general questions or learning), + you can call the tool without the \`workspacePath\` argument. It will return the latest + generic best practices guide. * The content of this guide is non-negotiable and reflects the official, up-to-date standards for Angular development. * You **MUST** internalize and apply the principles from this guide in all subsequent Angular-related tasks. * Failure to adhere to these best practices will result in suboptimal and outdated code. `, + inputSchema: bestPracticesInputSchema.shape, isReadOnly: true, isLocalOnly: true, - factory: () => { - let bestPracticesText: string; + factory: createBestPracticesHandler, +}); + +/** + * Retrieves the content of the generic best practices guide that is bundled with the CLI. + * This serves as a fallback when a version-specific guide cannot be found. + * @returns A promise that resolves to the string content of the bundled markdown file. + */ +async function getBundledBestPractices(): Promise { + return readFile(path.join(__dirname, '..', 'resources', 'best-practices.md'), 'utf-8'); +} + +/** + * Attempts to find and read a version-specific best practices guide from the user's installed + * version of `@angular/core`. It looks for a custom `angular` metadata property in the + * framework's `package.json` to locate the guide. + * + * @example A sample `package.json` `angular` field: + * ```json + * { + * "angular": { + * "bestPractices": { + * "format": "markdown", + * "path": "./resources/best-practices.md" + * } + * } + * } + * ``` + * + * @param workspacePath The absolute path to the user's `angular.json` file. + * @param logger The MCP tool context logger for reporting warnings. + * @returns A promise that resolves to an object containing the guide's content and source, + * or `undefined` if the guide could not be resolved. + */ +async function getVersionSpecificBestPractices( + workspacePath: string, + logger: McpToolContext['logger'], +): Promise<{ content: string; source: string } | undefined> { + // 1. Resolve the path to package.json + let pkgJsonPath: string; + try { + const workspaceRequire = createRequire(workspacePath); + pkgJsonPath = workspaceRequire.resolve('@angular/core/package.json'); + } catch (e) { + logger.warn( + `Could not resolve '@angular/core/package.json' from '${workspacePath}'. ` + + 'Is Angular installed in this project? Falling back to the bundled guide.', + ); + + return undefined; + } - return async () => { - bestPracticesText ??= await readFile( - path.join(__dirname, '..', 'resources', 'best-practices.md'), - 'utf-8', + // 2. Read and parse package.json, then find and read the guide. + try { + const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); + const pkgJson = JSON.parse(pkgJsonContent); + const bestPracticesInfo = pkgJson['angular']?.bestPractices; + + if ( + bestPracticesInfo && + bestPracticesInfo.format === 'markdown' && + typeof bestPracticesInfo.path === 'string' + ) { + const packageDirectory = path.dirname(pkgJsonPath); + const guidePath = path.resolve(packageDirectory, bestPracticesInfo.path); + + // Ensure the resolved guide path is within the package boundary. + // Uses path.relative to create a cross-platform, case-insensitive check. + // If the relative path starts with '..' or is absolute, it is a traversal attempt. + const relativePath = path.relative(packageDirectory, guidePath); + if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) { + logger.warn( + `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + + `The path '${bestPracticesInfo.path}' escapes the package boundary. ` + + 'Falling back to the bundled guide.', + ); + + return undefined; + } + + // Check the file size to prevent reading a very large file. + const stats = await stat(guidePath); + if (stats.size > 1024 * 1024) { + // 1MB + logger.warn( + `The best practices guide at '${guidePath}' is larger than 1MB (${stats.size} bytes). ` + + 'This is unexpected and the file will not be read. Falling back to the bundled guide.', + ); + + return undefined; + } + + const content = await readFile(guidePath, 'utf-8'); + const source = `framework version ${pkgJson.version}`; + + return { content, source }; + } else { + logger.warn( + `Did not find valid 'angular.bestPractices' metadata in '${pkgJsonPath}'. ` + + 'Falling back to the bundled guide.', ); + } + } catch (e) { + logger.warn( + `Failed to read or parse version-specific best practices referenced in '${pkgJsonPath}': ${ + e instanceof Error ? e.message : e + }. Falling back to the bundled guide.`, + ); + } + + return undefined; +} - return { - content: [ - { - type: 'text', - text: bestPracticesText, - annotations: { - audience: ['assistant'], - priority: 0.9, - }, +/** + * Creates the handler function for the `get_best_practices` tool. + * The handler orchestrates the process of first attempting to get a version-specific guide + * and then falling back to the bundled guide if necessary. + * @param context The MCP tool context, containing the logger. + * @returns An async function that serves as the tool's executor. + */ +function createBestPracticesHandler({ logger }: McpToolContext) { + let bundledBestPractices: Promise; + + return async (input: BestPracticesInput) => { + let content: string | undefined; + let source: string | undefined; + + // First, try to get the version-specific guide. + if (input.workspacePath) { + const versionSpecific = await getVersionSpecificBestPractices(input.workspacePath, logger); + if (versionSpecific) { + content = versionSpecific.content; + source = versionSpecific.source; + } + } + + // If the version-specific guide was not found for any reason, fall back to the bundled version. + if (content === undefined) { + content = await (bundledBestPractices ??= getBundledBestPractices()); + source = `bundled (CLI v${VERSION.full})`; + } + + return { + content: [ + { + type: 'text' as const, + text: content, + annotations: { + audience: ['assistant'], + priority: 0.9, + source, }, - ], - }; + }, + ], }; - }, -}); + }; +} From f125c6fafe97d2e05f9c888410bdaaa8a22f1956 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 21 Oct 2025 05:06:00 +0000 Subject: [PATCH 1643/2162] build: update dependency node to v22.21.0 See associated pull request for more information. --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 442c7587a99a..aa50a62f2194 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.20.0 +22.21.0 From a25aa52628a9c3a4c0e181b8c9798b7d4b318300 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 21 Oct 2025 09:22:58 +0000 Subject: [PATCH 1644/2162] build: remove unused npm dependency This dependency is not used. --- package.json | 1 - pnpm-lock.yaml | 88 ++------------------------ tests/legacy-cli/e2e/utils/BUILD.bazel | 1 - 3 files changed, 6 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index 114d23740dc1..0074c071ef92 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,6 @@ "listr2": "9.0.4", "lodash": "^4.17.21", "magic-string": "0.30.19", - "npm": "^11.0.0", "prettier": "^3.0.0", "protractor": "~7.0.0", "puppeteer": "18.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f0f13c4cb26..a8cedbf89a01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -253,9 +253,6 @@ importers: magic-string: specifier: 0.30.19 version: 0.30.19 - npm: - specifier: ^11.0.0 - version: 11.6.2 prettier: specifier: ^3.0.0 version: 3.6.2 @@ -339,7 +336,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -348,7 +345,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -454,7 +451,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -7128,77 +7125,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm@11.6.2: - resolution: {integrity: sha512-7iKzNfy8lWYs3zq4oFPa8EXZz5xt9gQNKJZau3B1ErLBb6bF7sBJ00x09485DOvRT2l5Gerbl3VlZNT57MxJVA==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - bundledDependencies: - - '@isaacs/string-locale-compare' - - '@npmcli/arborist' - - '@npmcli/config' - - '@npmcli/fs' - - '@npmcli/map-workspaces' - - '@npmcli/package-json' - - '@npmcli/promise-spawn' - - '@npmcli/redact' - - '@npmcli/run-script' - - '@sigstore/tuf' - - abbrev - - archy - - cacache - - chalk - - ci-info - - cli-columns - - fastest-levenshtein - - fs-minipass - - glob - - graceful-fs - - hosted-git-info - - ini - - init-package-json - - is-cidr - - json-parse-even-better-errors - - libnpmaccess - - libnpmdiff - - libnpmexec - - libnpmfund - - libnpmorg - - libnpmpack - - libnpmpublish - - libnpmsearch - - libnpmteam - - libnpmversion - - make-fetch-happen - - minimatch - - minipass - - minipass-pipeline - - ms - - node-gyp - - nopt - - npm-audit-report - - npm-install-checks - - npm-package-arg - - npm-pick-manifest - - npm-profile - - npm-registry-fetch - - npm-user-validate - - p-map - - pacote - - parse-conflict-json - - proc-log - - qrcode-terminal - - read - - semver - - spdx-expression-parse - - ssri - - supports-color - - tar - - text-table - - tiny-relative-date - - treeverse - - validate-npm-package-name - - which - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -12528,7 +12454,7 @@ snapshots: dependencies: vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12543,7 +12469,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -16509,8 +16435,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm@11.6.2: {} - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -18567,7 +18491,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index 2cf52b55a2ab..b73eec76471a 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -15,7 +15,6 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/ansi-colors", "//:node_modules/fast-glob", - "//:node_modules/npm", "//:node_modules/protractor", "//:node_modules/semver", "//:node_modules/tar", From b356bb10f1b8313ff72f0dfd53ceae9db4e8939c Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 21 Oct 2025 12:12:52 +0000 Subject: [PATCH 1645/2162] refactor: replace `loadEsmModule` with dynamic `import()` The custom `loadEsmModule` helper function was a workaround to prevent TypeScript from downleveling dynamic imports to `require()` calls, which would fail to load ESM modules. With modern TypeScript and Node.js versions, this workaround is no longer necessary. This commit removes the `loadEsmModule` utility and replaces all its usages with standard dynamic `import()` expressions. This simplifies the codebase and relies on the native module loading capabilities of the environment. --- .../src/builders/dev-server/vite/index.ts | 4 +- .../src/builders/dev-server/vite/server.ts | 4 +- .../src/builders/extract-i18n/builder.ts | 4 +- .../runners/vitest/browser-provider.ts | 9 +-- .../unit-test/runners/vitest/executor.ts | 5 +- .../compilation/angular-compilation.ts | 6 +- .../angular/compilation/jit-compilation.ts | 7 +-- .../src/tools/esbuild/i18n-inliner-worker.ts | 3 +- .../esbuild/javascript-transformer-worker.ts | 8 +-- .../tools/vite/middlewares/ssr-middleware.ts | 18 +++--- .../vite/plugins/angular-memory-plugin.ts | 3 +- .../vite/plugins/setup-middlewares-plugin.ts | 4 +- .../vite/plugins/ssr-transform-plugin.ts | 3 +- .../utils/index-file/augment-index-html.ts | 8 +-- .../utils/index-file/html-rewriting-stream.ts | 5 +- .../build/src/utils/load-proxy-config.ts | 29 +++------- .../build/src/utils/load-translations.ts | 3 +- .../esm-in-memory-loader/loader-hooks.ts | 20 +------ .../utils/server-rendering/launch-server.ts | 8 +-- .../utils/server-rendering/render-worker.ts | 4 ++ .../routes-extractor-worker.ts | 4 ++ .../angular/build/src/utils/service-worker.ts | 16 ++--- packages/angular/pwa/pwa/index.ts | 20 +------ .../node/node-modules-architect-host.ts | 58 +------------------ .../src/builders/dev-server/webpack-server.ts | 3 +- .../src/builders/extract-i18n/builder.ts | 10 ++-- .../extract-i18n/ivy-extract-loader.ts | 12 +--- .../src/tools/babel/presets/application.ts | 8 +-- .../src/tools/babel/webpack-loader.ts | 10 +--- .../src/tools/webpack/configs/common.ts | 10 ++-- .../src/tools/webpack/configs/dev-server.ts | 29 +++------- .../build_angular/src/utils/process-bundle.ts | 6 +- .../build_angular/src/utils/read-tsconfig.ts | 7 +-- .../angular_devkit/build_webpack/src/utils.ts | 48 +-------------- 34 files changed, 90 insertions(+), 306 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/vite/index.ts b/packages/angular/build/src/builders/dev-server/vite/index.ts index 27cb6d15adbb..b3a3ca985641 100644 --- a/packages/angular/build/src/builders/dev-server/vite/index.ts +++ b/packages/angular/build/src/builders/dev-server/vite/index.ts @@ -17,7 +17,6 @@ import { ServerSsrMode } from '../../../tools/vite/plugins'; import { EsbuildLoaderOption } from '../../../tools/vite/utils'; import { normalizeSourceMaps } from '../../../utils'; import { useComponentStyleHmr, useComponentTemplateHmr } from '../../../utils/environment-options'; -import { loadEsmModule } from '../../../utils/load-esm'; import { Result, ResultKind } from '../../application/results'; import { OutputHashing } from '../../application/schema'; import { @@ -175,8 +174,7 @@ export async function* serveWithVite( // The index HTML path will be updated from the build results if provided by the builder let htmlIndexPath = 'index.html'; - // dynamically import Vite for ESM compatibility - const { createServer, normalizePath } = await loadEsmModule('vite'); + const { createServer, normalizePath } = await import('vite'); let server: ViteDevServer | undefined; let serverUrl: URL | undefined; 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 0d48ce5325e2..f527e41d33d0 100644 --- a/packages/angular/build/src/builders/dev-server/vite/server.ts +++ b/packages/angular/build/src/builders/dev-server/vite/server.ts @@ -19,7 +19,6 @@ import { } from '../../../tools/vite/plugins'; import { EsbuildLoaderOption, getDepOptimizationConfig } from '../../../tools/vite/utils'; import { loadProxyConfiguration } from '../../../utils'; -import { loadEsmModule } from '../../../utils/load-esm'; import { type ApplicationBuilderInternalOptions, JavaScriptTransformer } from '../internal'; import type { NormalizedDevServerOptions } from '../options'; import { DevServerExternalResultMetadata, OutputAssetRecord, OutputFileRecord } from './utils'; @@ -152,8 +151,7 @@ export async function setupServer( indexHtmlTransformer?: (content: string) => Promise, thirdPartySourcemaps = false, ): Promise { - // dynamically import Vite for ESM compatibility - const { normalizePath } = await loadEsmModule('vite'); + const { normalizePath } = await import('vite'); // Path will not exist on disk and only used to provide separate path for Vite requests const virtualProjectRoot = normalizePath( diff --git a/packages/angular/build/src/builders/extract-i18n/builder.ts b/packages/angular/build/src/builders/extract-i18n/builder.ts index 15b0156f749b..f74d1d219712 100644 --- a/packages/angular/build/src/builders/extract-i18n/builder.ts +++ b/packages/angular/build/src/builders/extract-i18n/builder.ts @@ -10,7 +10,6 @@ import type { Diagnostics } from '@angular/localize/tools'; import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; import fs from 'node:fs'; import path from 'node:path'; -import { loadEsmModule } from '../../utils/load-esm'; import { assertCompatibleAngularVersion } from '../../utils/version'; import type { ApplicationBuilderExtensions } from '../application/options'; import { normalizeOptions } from './options'; @@ -51,8 +50,7 @@ export async function execute( // The package is a peer dependency and might not be present let localizeToolsModule; try { - localizeToolsModule = - await loadEsmModule('@angular/localize/tools'); + localizeToolsModule = await import('@angular/localize/tools'); } catch { return { success: false, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index b493ac7c9447..299a9731513d 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -7,15 +7,16 @@ */ import { createRequire } from 'node:module'; +import type { BrowserBuiltinProvider, BrowserConfigOptions } from 'vitest/node'; export interface BrowserConfiguration { - browser?: import('vitest/node').BrowserConfigOptions; + browser?: BrowserConfigOptions; errors?: string[]; } function findBrowserProvider( projectResolver: NodeJS.RequireResolve, -): import('vitest/node').BrowserBuiltinProvider | undefined { +): BrowserBuiltinProvider | undefined { // One of these must be installed in the project to use browser testing const vitestBuiltinProviders = ['playwright', 'webdriverio'] as const; @@ -87,7 +88,7 @@ export function setupBrowserConfiguration( const isCI = !!process.env['CI']; const headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless')); - const browser = { + const browser: BrowserConfigOptions = { enabled: true, provider, headless, @@ -96,7 +97,7 @@ export function setupBrowserConfiguration( instances: browsers.map((browserName) => ({ browser: normalizeBrowserName(browserName), })), - } satisfies import('vitest/node').BrowserConfigOptions; + }; return { browser }; } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index f4bd4aa3ee85..077245d6d01c 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -11,7 +11,6 @@ import assert from 'node:assert'; import path from 'node:path'; import type { InlineConfig, Vitest } from 'vitest/node'; import { assertIsError } from '../../../../utils/error'; -import { loadEsmModule } from '../../../../utils/load-esm'; import { toPosixPath } from '../../../../utils/path'; import { type FullResult, @@ -141,7 +140,7 @@ export class VitestExecutor implements TestExecutor { } = this.options; let vitestNodeModule; try { - vitestNodeModule = await loadEsmModule('vitest/node'); + vitestNodeModule = await import('vitest/node'); } catch (error: unknown) { assertIsError(error); if (error.code !== 'ERR_MODULE_NOT_FOUND') { @@ -230,7 +229,7 @@ async function generateCoverageOption( let defaultExcludes: string[] = []; if (coverage.exclude) { try { - const vitestConfig = await loadEsmModule('vitest/config'); + const vitestConfig = await import('vitest/config'); defaultExcludes = vitestConfig.coverageConfigDefaults.exclude; } catch {} } diff --git a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts index bea3c65e1b8a..f22e8c813ecc 100644 --- a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts @@ -9,7 +9,6 @@ import type ng from '@angular/compiler-cli'; import type { PartialMessage } from 'esbuild'; import type ts from 'typescript'; -import { loadEsmModule } from '../../../utils/load-esm'; import { convertTypeScriptDiagnostic } from '../../esbuild/angular/diagnostics'; import { profileAsync, profileSync } from '../../esbuild/profiling'; import type { AngularHostOptions } from '../angular-host'; @@ -33,10 +32,7 @@ export abstract class AngularCompilation { static #typescriptModule?: typeof ts; static async loadCompilerCli(): Promise { - // This uses a wrapped dynamic import to load `@angular/compiler-cli` which is ESM. - // Once TypeScript provides support for retaining dynamic imports this workaround can be dropped. - AngularCompilation.#angularCompilerCliModule ??= - await loadEsmModule('@angular/compiler-cli'); + AngularCompilation.#angularCompilerCliModule ??= await import('@angular/compiler-cli'); return AngularCompilation.#angularCompilerCliModule; } diff --git a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts index a811cb50ec0a..d2876654a15e 100644 --- a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts @@ -9,7 +9,6 @@ import type ng from '@angular/compiler-cli'; import assert from 'node:assert'; import ts from 'typescript'; -import { loadEsmModule } from '../../../utils/load-esm'; import { profileSync } from '../../esbuild/profiling'; import { AngularHostOptions, createAngularCompilerHost } from '../angular-host'; import { createJitResourceTransformer } from '../transformers/jit-resource-transformer'; @@ -44,9 +43,9 @@ export class JitCompilation extends AngularCompilation { referencedFiles: readonly string[]; }> { // Dynamically load the Angular compiler CLI package - const { constructorParametersDownlevelTransform } = await loadEsmModule< - typeof import('@angular/compiler-cli/private/tooling') - >('@angular/compiler-cli/private/tooling'); + const { constructorParametersDownlevelTransform } = await import( + '@angular/compiler-cli/private/tooling' + ); // Load the compiler configuration and transform as needed const { diff --git a/packages/angular/build/src/tools/esbuild/i18n-inliner-worker.ts b/packages/angular/build/src/tools/esbuild/i18n-inliner-worker.ts index 9caa2ca5da45..74550e83e5de 100644 --- a/packages/angular/build/src/tools/esbuild/i18n-inliner-worker.ts +++ b/packages/angular/build/src/tools/esbuild/i18n-inliner-worker.ts @@ -11,7 +11,6 @@ import { PluginObj, parseSync, transformFromAstAsync, types } from '@babel/core' import assert from 'node:assert'; import { workerData } from 'node:worker_threads'; import { assertIsError } from '../../utils/error'; -import { loadEsmModule } from '../../utils/load-esm'; /** * The options passed to the inliner for each file request @@ -131,7 +130,7 @@ async function loadLocalizeTools(): Promise { // Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround. // Once TypeScript provides support for keeping the dynamic import this workaround can be // changed to a direct dynamic import. - localizeToolsModule ??= await loadEsmModule('@angular/localize/tools'); + localizeToolsModule ??= await import('@angular/localize/tools'); return localizeToolsModule; } 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 c9e882850a64..7d86009b773f 100644 --- a/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts +++ b/packages/angular/build/src/tools/esbuild/javascript-transformer-worker.ts @@ -10,7 +10,6 @@ import { type PluginItem, transformAsync } from '@babel/core'; import fs from 'node:fs'; import path from 'node:path'; import Piscina from 'piscina'; -import { loadEsmModule } from '../../utils/load-esm'; interface JavaScriptTransformRequest { filename: string; @@ -133,11 +132,8 @@ async function requiresLinking(path: string, source: string): Promise { } async function createLinkerPlugin(options: Omit) { - linkerPluginCreator ??= ( - await loadEsmModule( - '@angular/compiler-cli/linker/babel', - ) - ).createEs2015LinkerPlugin; + linkerPluginCreator ??= (await import('@angular/compiler-cli/linker/babel')) + .createEs2015LinkerPlugin; const linkerPlugin = linkerPluginCreator({ linkerJitMode: options.jit, 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 6484ee8391e1..0d8ac5441f1d 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -10,10 +10,8 @@ import type { AngularAppEngine as SSRAngularAppEngine, ɵgetOrCreateAngularServerApp as getOrCreateAngularServerApp, } from '@angular/ssr'; -import type * as AngularSsrNode from '@angular/ssr/node' with { 'resolution-mode': 'import' }; import type { ServerResponse } from 'node:http'; import type { Connect, ViteDevServer } from 'vite'; -import { loadEsmModule } from '../../../utils/load-esm'; import { isSsrNodeRequestHandler, isSsrRequestHandler, @@ -37,9 +35,11 @@ export function createAngularSsrInternalMiddleware( (async () => { // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages, // which must be processed by the runtime linker, even if they are not used. - await loadEsmModule('@angular/compiler'); - const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = - await loadEsmModule('@angular/ssr/node'); + await import('@angular/compiler'); + const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = (await import( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + '@angular/ssr/node' as any + )) as typeof import('@angular/ssr/node', { with: { 'resolution-mode': 'import' } }); const { ɵgetOrCreateAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { ɵgetOrCreateAngularServerApp: typeof getOrCreateAngularServerApp; @@ -91,10 +91,12 @@ export async function createAngularSsrExternalMiddleware( // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages, // which must be processed by the runtime linker, even if they are not used. - await loadEsmModule('@angular/compiler'); + await import('@angular/compiler'); - const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = - await loadEsmModule('@angular/ssr/node'); + const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = (await import( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + '@angular/ssr/node' as any + )) as typeof import('@angular/ssr/node', { with: { 'resolution-mode': 'import' } }); return function angularSsrExternalMiddleware( req: Connect.IncomingMessage, diff --git a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts index 5fc178b60386..be00e3437f27 100644 --- a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts @@ -11,7 +11,6 @@ import { readFile } from 'node:fs/promises'; import { dirname, join, relative } from 'node:path'; import { fileURLToPath } from 'node:url'; import type { Plugin } from 'vite'; -import { loadEsmModule } from '../../../utils/load-esm'; import { AngularMemoryOutputFiles } from '../utils'; interface AngularMemoryPluginOptions { @@ -30,7 +29,7 @@ export async function createAngularMemoryPlugin( options: AngularMemoryPluginOptions, ): Promise { const { virtualProjectRoot, outputFiles, external } = options; - const { normalizePath } = await loadEsmModule('vite'); + const { normalizePath } = await import('vite'); return { name: 'vite:angular-memory', diff --git a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts index 21ddaa350ac1..b82cc2d3acd6 100644 --- a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts @@ -7,7 +7,6 @@ */ import type { Connect, Plugin } from 'vite'; -import { loadEsmModule } from '../../../utils/load-esm'; import { ComponentStyleRecord, angularHtmlFallbackMiddleware, @@ -61,8 +60,7 @@ interface AngularSetupMiddlewaresPluginOptions { async function createEncapsulateStyle(): Promise< (style: Uint8Array, componentId: string) => string > { - const { encapsulateStyle } = - await loadEsmModule('@angular/compiler'); + const { encapsulateStyle } = await import('@angular/compiler'); const decoder = new TextDecoder('utf-8'); return (style, componentId) => { diff --git a/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts b/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts index 0ac7b92d442d..90d183acde02 100644 --- a/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/ssr-transform-plugin.ts @@ -8,10 +8,9 @@ import remapping, { SourceMapInput } from '@ampproject/remapping'; import type { Plugin } from 'vite'; -import { loadEsmModule } from '../../../utils/load-esm'; export async function createAngularSsrTransformPlugin(workspaceRoot: string): Promise { - const { normalizePath } = await loadEsmModule('vite'); + const { normalizePath } = await import('vite'); return { name: 'vite:angular-ssr-transform', diff --git a/packages/angular/build/src/utils/index-file/augment-index-html.ts b/packages/angular/build/src/utils/index-file/augment-index-html.ts index 7a30770fa450..21ba39b39cc4 100644 --- a/packages/angular/build/src/utils/index-file/augment-index-html.ts +++ b/packages/angular/build/src/utils/index-file/augment-index-html.ts @@ -8,7 +8,6 @@ import { createHash } from 'node:crypto'; import { extname } from 'node:path'; -import { loadEsmModule } from '../load-esm'; import { htmlRewritingStream } from './html-rewriting-stream'; import { VALID_SELF_CLOSING_TAGS } from './valid-self-closing-tags'; @@ -352,12 +351,7 @@ async function getLanguageDirection( async function getLanguageDirectionFromLocales(locale: string): Promise { try { - const localeData = ( - await loadEsmModule( - `@angular/common/locales/${locale}`, - ) - ).default; - + const localeData = (await import(`@angular/common/locales/${locale}`)).default; const dir = localeData[localeData.length - 2]; return isString(dir) ? dir : undefined; diff --git a/packages/angular/build/src/utils/index-file/html-rewriting-stream.ts b/packages/angular/build/src/utils/index-file/html-rewriting-stream.ts index dbeeadcb2fc1..baf494be033c 100644 --- a/packages/angular/build/src/utils/index-file/html-rewriting-stream.ts +++ b/packages/angular/build/src/utils/index-file/html-rewriting-stream.ts @@ -9,7 +9,6 @@ import { Readable } from 'node:stream'; import { pipeline } from 'node:stream/promises'; import type { RewritingStream } from 'parse5-html-rewriting-stream'; -import { loadEsmModule } from '../load-esm'; // Export helper types for the rewriter export type StartTag = Parameters[0]; @@ -20,9 +19,7 @@ export async function htmlRewritingStream(content: string): Promise<{ rewriter: RewritingStream; transformedContent: () => Promise; }> { - const { RewritingStream } = await loadEsmModule( - 'parse5-html-rewriting-stream', - ); + const { RewritingStream } = await import('parse5-html-rewriting-stream'); const rewriter = new RewritingStream(); return { diff --git a/packages/angular/build/src/utils/load-proxy-config.ts b/packages/angular/build/src/utils/load-proxy-config.ts index e590ee9efc6c..cf4cb9e3c03e 100644 --- a/packages/angular/build/src/utils/load-proxy-config.ts +++ b/packages/angular/build/src/utils/load-proxy-config.ts @@ -49,33 +49,20 @@ export async function loadProxyConfiguration( break; } - case '.mjs': - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - proxyConfiguration = await loadEsmModule<{ default: unknown }>(pathToFileURL(proxyPath)); - break; - case '.cjs': - proxyConfiguration = require(proxyPath); - break; - default: - // The file could be either CommonJS or ESM. - // CommonJS is tried first then ESM if loading fails. + default: { try { - proxyConfiguration = require(proxyPath); - break; + proxyConfiguration = await import(proxyPath); } catch (e) { assertIsError(e); - if (e.code === 'ERR_REQUIRE_ESM' || e.code === 'ERR_REQUIRE_ASYNC_MODULE') { - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - proxyConfiguration = await loadEsmModule<{ default: unknown }>(pathToFileURL(proxyPath)); - break; + if (e.code !== 'ERR_REQUIRE_ASYNC_MODULE') { + throw e; } - throw e; + proxyConfiguration = await loadEsmModule<{ default: unknown }>(pathToFileURL(proxyPath)); } + + break; + } } if ('default' in proxyConfiguration) { diff --git a/packages/angular/build/src/utils/load-translations.ts b/packages/angular/build/src/utils/load-translations.ts index eeac280cbf9b..e202273dc73d 100644 --- a/packages/angular/build/src/utils/load-translations.ts +++ b/packages/angular/build/src/utils/load-translations.ts @@ -9,7 +9,6 @@ import type { Diagnostics } from '@angular/localize/tools'; import { createHash } from 'node:crypto'; import * as fs from 'node:fs'; -import { loadEsmModule } from './load-esm'; export type TranslationLoader = (path: string) => { translations: Record; @@ -62,7 +61,7 @@ async function importParsers() { Xliff1TranslationParser, Xliff2TranslationParser, XtbTranslationParser, - } = await loadEsmModule('@angular/localize/tools'); + } = await import('@angular/localize/tools'); const diagnostics = new Diagnostics(); const parsers = { diff --git a/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts b/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts index 9e1a657366a0..1d0d9df32d30 100644 --- a/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts +++ b/packages/angular/build/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.ts @@ -8,9 +8,9 @@ import assert from 'node:assert'; import { randomUUID } from 'node:crypto'; +import { readFile } from 'node:fs/promises'; import { join } from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; -import { JavaScriptTransformer } from '../../../tools/esbuild/javascript-transformer'; /** * @note For some unknown reason, setting `globalThis.ngServerMode = true` does not work when using ESM loader hooks. @@ -32,14 +32,6 @@ export interface ESMInMemoryFileLoaderWorkerData { let memoryVirtualRootUrl: string; let outputFiles: Record; -const javascriptTransformer = new JavaScriptTransformer( - // Always enable JIT linking to support applications built with and without AOT. - // In a development environment the additional scope information does not - // have a negative effect unlike production where final output size is relevant. - { sourcemap: true, jit: true }, - 1, -); - export function initialize(data: ESMInMemoryFileLoaderWorkerData) { // This path does not actually exist but is used to overlay the in memory files with the // actual filesystem for resolution purposes. @@ -137,7 +129,7 @@ export async function load(url: string, context: { format?: string | null }, nex // need linking are ESM only. if (format === 'module' && isFileProtocol(url)) { const filePath = fileURLToPath(url); - let source = await javascriptTransformer.transformFile(filePath); + let source = await readFile(filePath); if (filePath.includes('@angular/')) { // Prepend 'var ngServerMode=true;' to the source. @@ -158,11 +150,3 @@ export async function load(url: string, context: { format?: string | null }, nex function isFileProtocol(url: string): boolean { return url.startsWith('file://'); } - -function handleProcessExit(): void { - void javascriptTransformer.close(); -} - -process.once('exit', handleProcessExit); -process.once('SIGINT', handleProcessExit); -process.once('uncaughtException', handleProcessExit); 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 9c127e3816bd..c17337178b13 100644 --- a/packages/angular/build/src/utils/server-rendering/launch-server.ts +++ b/packages/angular/build/src/utils/server-rendering/launch-server.ts @@ -6,10 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import type * as AngularSsrNode from '@angular/ssr/node' with { 'resolution-mode': 'import' }; import assert from 'node:assert'; import { createServer } from 'node:http'; -import { loadEsmModule } from '../load-esm'; import { loadEsmModuleFromMemory } from './load-esm-from-memory'; import { isSsrNodeRequestHandler, isSsrRequestHandler } from './utils'; @@ -22,8 +20,10 @@ export const DEFAULT_URL = new URL('http://ng-localhost/'); */ export async function launchServer(): Promise { const { reqHandler } = await loadEsmModuleFromMemory('./server.mjs'); - const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = - await loadEsmModule('@angular/ssr/node'); + const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = (await import( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + '@angular/ssr/node' as any + )) as typeof import('@angular/ssr/node', { with: { 'resolution-mode': 'import' } }); if (!isSsrNodeRequestHandler(reqHandler) && !isSsrRequestHandler(reqHandler)) { return DEFAULT_URL; diff --git a/packages/angular/build/src/utils/server-rendering/render-worker.ts b/packages/angular/build/src/utils/server-rendering/render-worker.ts index 92fad35df32a..f3fc8e93a0d0 100644 --- a/packages/angular/build/src/utils/server-rendering/render-worker.ts +++ b/packages/angular/build/src/utils/server-rendering/render-worker.ts @@ -52,6 +52,10 @@ async function renderPage({ url }: RenderOptions): Promise { } async function initialize() { + // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages, + // which must be processed by the runtime linker, even if they are not used. + await import('@angular/compiler'); + if (outputMode !== undefined && hasSsrEntry) { serverURL = await launchServer(); } diff --git a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts index 1487db07e811..423a71e83ba5 100644 --- a/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts +++ b/packages/angular/build/src/utils/server-rendering/routes-extractor-worker.ts @@ -28,6 +28,10 @@ const { outputMode, hasSsrEntry } = workerData as { /** Renders an application based on a provided options. */ async function extractRoutes(): Promise { + // Load the compiler because `@angular/ssr/node` depends on `@angular/` packages, + // which must be processed by the runtime linker, even if they are not used. + await import('@angular/compiler'); + const serverURL = outputMode !== undefined && hasSsrEntry ? await launchServer() : DEFAULT_URL; patchFetchToLoadInMemoryAssets(serverURL); diff --git a/packages/angular/build/src/utils/service-worker.ts b/packages/angular/build/src/utils/service-worker.ts index c3bd75c3ab38..1535684f635c 100644 --- a/packages/angular/build/src/utils/service-worker.ts +++ b/packages/angular/build/src/utils/service-worker.ts @@ -16,7 +16,6 @@ import * as path from 'node:path'; import { BuildOutputFile, BuildOutputFileType } from '../tools/esbuild/bundler-context'; import { BuildOutputAsset } from '../tools/esbuild/bundler-execution-result'; import { assertIsError } from './error'; -import { loadEsmModule } from './load-esm'; import { toPosixPath } from './path'; class CliFilesystem implements Filesystem { @@ -219,17 +218,14 @@ export async function augmentAppWithServiceWorkerCore( serviceWorkerFilesystem: Filesystem, baseHref: string, ): Promise<{ manifest: string; assetFiles: { source: string; destination: string }[] }> { - // Load ESM `@angular/service-worker/config` using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - const GeneratorConstructor = ( - await loadEsmModule< - typeof import('@angular/service-worker/config', { with: { 'resolution-mode': 'import' } }) - >('@angular/service-worker/config') - ).Generator; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const { Generator } = (await import('@angular/service-worker/config' as any)) as typeof import( + '@angular/service-worker/config', + { with: { 'resolution-mode': 'import' } } + ); // Generate the manifest - const generator = new GeneratorConstructor(serviceWorkerFilesystem, baseHref); + const generator = new Generator(serviceWorkerFilesystem, baseHref); const output = await generator.process(config); // Write the manifest diff --git a/packages/angular/pwa/pwa/index.ts b/packages/angular/pwa/pwa/index.ts index c316ed581695..a3a2b2847c78 100644 --- a/packages/angular/pwa/pwa/index.ts +++ b/packages/angular/pwa/pwa/index.ts @@ -28,9 +28,7 @@ function updateIndexFile(path: string): Rule { return async (host: Tree) => { const originalContent = host.readText(path); - const { RewritingStream } = await loadEsmModule( - 'parse5-html-rewriting-stream', - ); + const { RewritingStream } = await import('parse5-html-rewriting-stream'); const rewriter = new RewritingStream(); let needsNoScript = true; @@ -179,19 +177,3 @@ export default function (options: PwaOptions): Rule { ]); }; } - -/** - * This uses a dynamic import to load a module which may be ESM. - * CommonJS code can load ESM code via a dynamic import. Unfortunately, TypeScript - * will currently, unconditionally downlevel dynamic import into a require call. - * require calls cannot load ESM code and will result in a runtime error. To workaround - * this, a Function constructor is used to prevent TypeScript from changing the dynamic import. - * Once TypeScript provides support for keeping the dynamic import this workaround can - * be dropped. - * - * @param modulePath The path of the module to load. - * @returns A Promise that resolves to the dynamically imported module. - */ -function loadEsmModule(modulePath: string | URL): Promise { - return new Function('modulePath', `return import(modulePath);`)(modulePath) as Promise; -} diff --git a/packages/angular_devkit/architect/node/node-modules-architect-host.ts b/packages/angular_devkit/architect/node/node-modules-architect-host.ts index 554f85be14ad..bed099691865 100644 --- a/packages/angular_devkit/architect/node/node-modules-architect-host.ts +++ b/packages/angular_devkit/architect/node/node-modules-architect-host.ts @@ -282,65 +282,9 @@ export class WorkspaceNodeModulesArchitectHost implements ArchitectHost(modulePath: string | URL) => Promise) | undefined; - -/** - * This uses a dynamic import to load a module which may be ESM. - * CommonJS code can load ESM code via a dynamic import. Unfortunately, TypeScript - * will currently, unconditionally downlevel dynamic import into a require call. - * require calls cannot load ESM code and will result in a runtime error. To workaround - * this, a Function constructor is used to prevent TypeScript from changing the dynamic import. - * Once TypeScript provides support for keeping the dynamic import this workaround can - * be dropped. - * - * @param modulePath The path of the module to load. - * @returns A Promise that resolves to the dynamically imported module. - */ -export function loadEsmModule(modulePath: string | URL): Promise { - load ??= new Function('modulePath', `return import(modulePath);`) as Exclude< - typeof load, - undefined - >; - - return load(modulePath); -} - // eslint-disable-next-line @typescript-eslint/no-explicit-any async function getBuilder(builderPath: string): Promise { - let builder; - switch (path.extname(builderPath)) { - case '.mjs': - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - builder = (await loadEsmModule<{ default: unknown }>(pathToFileURL(builderPath))).default; - break; - case '.cjs': - builder = localRequire(builderPath); - break; - default: - // The file could be either CommonJS or ESM. - // CommonJS is tried first then ESM if loading fails. - try { - builder = localRequire(builderPath); - } catch (e) { - if ( - (e as NodeJS.ErrnoException).code === 'ERR_REQUIRE_ESM' || - (e as NodeJS.ErrnoException).code === 'ERR_REQUIRE_ASYNC_MODULE' - ) { - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - builder = await loadEsmModule<{ default: unknown }>(pathToFileURL(builderPath)); - } - - throw e; - } - break; - } + const builder = await import(builderPath); return 'default' in builder ? builder.default : builder; } diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts index d9bc6e015c3b..0bf34146a29d 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts @@ -35,7 +35,6 @@ import { ExecutionTransformer } from '../../transforms'; import { normalizeOptimization } from '../../utils'; import { colors } from '../../utils/color'; import { I18nOptions, loadTranslations } from '../../utils/i18n-webpack'; -import { loadEsmModule } from '../../utils/load-esm'; import { NormalizedCachedOptions } from '../../utils/normalize-cache'; import { generateEntryPoints } from '../../utils/package-chunk-sort'; import { @@ -248,7 +247,7 @@ export function serveWebpackBrowser( ); if (options.open) { - const open = (await loadEsmModule('open')).default; + const open = (await import('open')).default; await open(serverAddress); } } diff --git a/packages/angular_devkit/build_angular/src/builders/extract-i18n/builder.ts b/packages/angular_devkit/build_angular/src/builders/extract-i18n/builder.ts index 2d22fda36e96..0b08e10b40be 100644 --- a/packages/angular_devkit/build_angular/src/builders/extract-i18n/builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/extract-i18n/builder.ts @@ -9,11 +9,11 @@ import { assertCompatibleAngularVersion, purgeStaleBuildCache } from '@angular/build/private'; import type { Diagnostics } from '@angular/localize/tools'; import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; +import assert from 'node:assert'; import fs from 'node:fs'; import path from 'node:path'; import type webpack from 'webpack'; import type { ExecutionTransformer } from '../../transforms'; -import { loadEsmModule } from '../../utils/load-esm'; import { normalizeOptions } from './options'; import { Schema as ExtractI18nBuilderOptions, Format } from './schema'; @@ -52,10 +52,9 @@ export async function execute( // Load the Angular localize package. // The package is a peer dependency and might not be present - let localizeToolsModule; + let localizeToolsModule: typeof import('@angular/localize/tools'); try { - localizeToolsModule = - await loadEsmModule('@angular/localize/tools'); + localizeToolsModule = await import('@angular/localize/tools'); } catch { return { success: false, @@ -138,6 +137,9 @@ export async function execute( extractionResult.useLegacyIds, diagnostics, ); + + assert(serializer); + const content = serializer.serialize(extractionResult.messages); // Ensure directory exists diff --git a/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts b/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts index 8d9d639d069b..e64bcc30c387 100644 --- a/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts +++ b/packages/angular_devkit/build_angular/src/builders/extract-i18n/ivy-extract-loader.ts @@ -7,7 +7,6 @@ */ import * as nodePath from 'node:path'; -import { loadEsmModule } from '../../utils/load-esm'; // Extract loader source map parameter type since it is not exported directly type LoaderSourceMap = Parameters[1]; @@ -46,17 +45,10 @@ async function extract( map: string | LoaderSourceMap | undefined, options: LocalizeExtractLoaderOptions, ) { - // Try to load the `@angular/localize` message extractor. - // All the localize usages are setup to first try the ESM entry point then fallback to the deep imports. - // This provides interim compatibility while the framework is transitioned to bundled ESM packages. let MessageExtractor; try { - // Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - const localizeToolsModule = - await loadEsmModule('@angular/localize/tools'); - MessageExtractor = localizeToolsModule.MessageExtractor; + const { MessageExtractor: MsgExtractor } = await import('@angular/localize/tools'); + MessageExtractor = MsgExtractor; } catch { throw new Error( `Unable to load message extractor. Please ensure '@angular/localize' is installed.`, diff --git a/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts b/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts index 5810269ad386..6929e7704ac2 100644 --- a/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts +++ b/packages/angular_devkit/build_angular/src/tools/babel/presets/application.ts @@ -16,7 +16,6 @@ import type { import assert from 'node:assert'; import fs from 'node:fs'; import path from 'node:path'; -import { loadEsmModule } from '../../../utils/load-esm'; /** * Cached instance of the compiler-cli linker's needsLinking function. @@ -255,12 +254,7 @@ export async function requiresLinking(path: string, source: string): Promise( - '@angular/compiler-cli/linker', - ); + const linkerModule = await import('@angular/compiler-cli/linker'); needsLinking = linkerModule.needsLinking; } diff --git a/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts b/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts index 71e0188853d2..5be925d2c6b6 100644 --- a/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts +++ b/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts @@ -7,7 +7,6 @@ */ import { custom } from 'babel-loader'; -import { loadEsmModule } from '../../utils/load-esm'; import { VERSION } from '../../utils/package-version'; import { ApplicationPresetOptions, @@ -69,11 +68,8 @@ export default custom(() => { // Load ESM `@angular/compiler-cli/linker/babel` using the TypeScript dynamic import workaround. // Once TypeScript provides support for keeping the dynamic import this workaround can be // changed to a direct dynamic import. - linkerPluginCreator ??= ( - await loadEsmModule( - '@angular/compiler-cli/linker/babel', - ) - ).createEs2015LinkerPlugin; + linkerPluginCreator ??= (await import('@angular/compiler-cli/linker/babel')) + .createEs2015LinkerPlugin; customOptions.angularLinker = { shouldLink: true, @@ -110,7 +106,7 @@ export default custom(() => { // Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround. // Once TypeScript provides support for keeping the dynamic import this workaround can be // changed to a direct dynamic import. - i18nPluginCreators = await loadEsmModule('@angular/localize/tools'); + i18nPluginCreators = await import('@angular/localize/tools'); } customOptions.i18n = { diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts b/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts index d6796a1117bf..b18c8ebc9be9 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/configs/common.ts @@ -19,7 +19,6 @@ import { import { SubresourceIntegrityPlugin } from 'webpack-subresource-integrity'; import { WebpackConfigOptions } from '../../../utils/build-options'; import { allowMangle } from '../../../utils/environment-options'; -import { loadEsmModule } from '../../../utils/load-esm'; import { AngularBabelLoaderOptions } from '../../babel/webpack-loader'; import { CommonJsUsageWarnPlugin, @@ -83,11 +82,10 @@ export async function getCommonConfig(wco: WebpackConfigOptions): Promise('@angular/compiler-cli'); - const { GLOBAL_DEFS_FOR_TERSER, GLOBAL_DEFS_FOR_TERSER_WITH_AOT } = await loadEsmModule< - typeof import('@angular/compiler-cli/private/tooling') - >('@angular/compiler-cli/private/tooling'); + const { VERSION: NG_VERSION } = await import('@angular/compiler-cli'); + const { GLOBAL_DEFS_FOR_TERSER, GLOBAL_DEFS_FOR_TERSER_WITH_AOT } = await import( + '@angular/compiler-cli/private/tooling' + ); // determine hashing format const hashFormat = getOutputHashFormat(buildOptions.outputHashing); diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts b/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts index 5606e8d13d87..5ba21e328ec3 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/configs/dev-server.ts @@ -190,35 +190,20 @@ async function addProxyConfig( break; } - case '.mjs': - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - proxyConfiguration = await loadEsmModule<{ default: Record | object[] }>( - pathToFileURL(proxyPath), - ); - break; - case '.cjs': - proxyConfiguration = require(proxyPath); - break; - default: - // The file could be either CommonJS or ESM. - // CommonJS is tried first then ESM if loading fails. + default: { try { - proxyConfiguration = require(proxyPath); + proxyConfiguration = await import(proxyPath); } catch (e) { assertIsError(e); - if (e.code !== 'ERR_REQUIRE_ESM' && e.code !== 'ERR_REQUIRE_ASYNC_MODULE') { + if (e.code !== 'ERR_REQUIRE_ASYNC_MODULE') { throw e; } - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - proxyConfiguration = await loadEsmModule<{ default: Record | object[] }>( - pathToFileURL(proxyPath), - ); + proxyConfiguration = await loadEsmModule<{ default: unknown }>(pathToFileURL(proxyPath)); } + + break; + } } if ('default' in proxyConfiguration) { diff --git a/packages/angular_devkit/build_angular/src/utils/process-bundle.ts b/packages/angular_devkit/build_angular/src/utils/process-bundle.ts index 2c0a6dcbcc58..c8ec99eef15e 100644 --- a/packages/angular_devkit/build_angular/src/utils/process-bundle.ts +++ b/packages/angular_devkit/build_angular/src/utils/process-bundle.ts @@ -24,7 +24,6 @@ import { InlineOptions } from './bundle-inline-options'; import { allowMinify, shouldBeautify } from './environment-options'; import { assertIsError } from './error'; import { I18nOptions } from './i18n-webpack'; -import { loadEsmModule } from './load-esm'; // Extract Sourcemap input type from the remapping function since it is not currently exported type SourceMapInput = Exclude[0], unknown[]>; @@ -60,10 +59,7 @@ async function loadLocalizeTools(): Promise { return localizeToolsModule; } - // Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - return loadEsmModule('@angular/localize/tools'); + return import('@angular/localize/tools'); } async function createI18nPlugins( diff --git a/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts b/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts index c0dc5754f242..e5c9d5d01af2 100644 --- a/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts +++ b/packages/angular_devkit/build_angular/src/utils/read-tsconfig.ts @@ -8,7 +8,6 @@ import type { ParsedConfiguration } from '@angular/compiler-cli'; import * as path from 'node:path'; -import { loadEsmModule } from './load-esm'; /** * Reads and parses a given TsConfig file. @@ -23,11 +22,7 @@ export async function readTsconfig( ): Promise { const tsConfigFullPath = workspaceRoot ? path.resolve(workspaceRoot, tsconfigPath) : tsconfigPath; - // Load ESM `@angular/compiler-cli` using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - const { formatDiagnostics, readConfiguration } = - await loadEsmModule('@angular/compiler-cli'); + const { formatDiagnostics, readConfiguration } = await import('@angular/compiler-cli'); const configResult = readConfiguration(tsConfigFullPath); if (configResult.errors && configResult.errors.length) { diff --git a/packages/angular_devkit/build_webpack/src/utils.ts b/packages/angular_devkit/build_webpack/src/utils.ts index 47c30b548f4e..98a9aa04fe83 100644 --- a/packages/angular_devkit/build_webpack/src/utils.ts +++ b/packages/angular_devkit/build_webpack/src/utils.ts @@ -55,58 +55,12 @@ export function getEmittedFiles(compilation: Compilation): EmittedFiles[] { return files; } -/** - * This uses a dynamic import to load a module which may be ESM. - * CommonJS code can load ESM code via a dynamic import. Unfortunately, TypeScript - * will currently, unconditionally downlevel dynamic import into a require call. - * require calls cannot load ESM code and will result in a runtime error. To workaround - * this, a Function constructor is used to prevent TypeScript from changing the dynamic import. - * Once TypeScript provides support for keeping the dynamic import this workaround can - * be dropped. - * - * @param modulePath The path of the module to load. - * @returns A Promise that resolves to the dynamically imported module. - */ -function loadEsmModule(modulePath: string | URL): Promise { - return new Function('modulePath', `return import(modulePath);`)(modulePath) as Promise; -} - export async function getWebpackConfig(configPath: string): Promise { if (!existsSync(configPath)) { throw new Error(`Webpack configuration file ${configPath} does not exist.`); } - let config; - switch (path.extname(configPath)) { - case '.mjs': - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - config = await loadEsmModule<{ default: Configuration }>(pathToFileURL(configPath)); - break; - case '.cjs': - config = require(configPath); - break; - default: - // The file could be either CommonJS or ESM. - // CommonJS is tried first then ESM if loading fails. - try { - config = require(configPath); - break; - } catch (e) { - if ( - (e as NodeJS.ErrnoException).code === 'ERR_REQUIRE_ESM' || - (e as NodeJS.ErrnoException).code === 'ERR_REQUIRE_ASYNC_MODULE' - ) { - // Load the ESM configuration file using the TypeScript dynamic import workaround. - // Once TypeScript provides support for keeping the dynamic import this workaround can be - // changed to a direct dynamic import. - config = await loadEsmModule<{ default: Configuration }>(pathToFileURL(configPath)); - } - - throw e; - } - } + const config = await import(configPath); return 'default' in config ? config.default : config; } From 0fa25de492f54c88364a28465dbb643127eb5cff Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 21 Oct 2025 09:16:58 +0000 Subject: [PATCH 1646/2162] build: remove shelljs usage The script `goldens/public-api/manage.js` is no longer functional due to the removal of the public API bazel tasks. This script was responsible for managing the public API golden files, but it is now obsolete. As part of this change, the `shelljs` dependency has been replaced with native `node:fs` calls, and the associated npm scripts and documentation have been removed. --- CONTRIBUTING.md | 12 ------- goldens/public-api/manage.js | 54 ------------------------------ package.json | 4 --- pnpm-lock.yaml | 23 ------------- scripts/build-packages-dist.mts | 49 ++++++++++++++++++++++----- scripts/diff-release-package.mts | 29 +++++++++++++--- scripts/templates/contributing.ejs | 12 ------- 7 files changed, 65 insertions(+), 118 deletions(-) delete mode 100644 goldens/public-api/manage.js diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0642e0b7ff65..4dabb694f83e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -301,15 +301,3 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise [js-style-guide]: https://google.github.io/styleguide/jsguide.html [stackoverflow]: https://stackoverflow.com/questions/tagged/angular-devkit -## Updating the Public API -Our Public API surface is tracked using golden files. - -You check all golden files by running: -```bash -pnpm public-api:check -``` - -If you modified the public API, the test will fail. To update the golden files you need to run: -```bash -pnpm public-api:update -``` diff --git a/goldens/public-api/manage.js b/goldens/public-api/manage.js deleted file mode 100644 index 569f2a6bd1e3..000000000000 --- a/goldens/public-api/manage.js +++ /dev/null @@ -1,54 +0,0 @@ -const {exec} = require('shelljs'); -const {Parser: parser} = require('yargs/helpers'); - -// Remove all command line flags from the arguments. -const argv = parser(process.argv.slice(2)); -// The command the user would like to run, either 'accept' or 'test' -const USER_COMMAND = argv._[0]; -// The shell command to query for all Public API guard tests. -const BAZEL_PUBLIC_API_TARGET_QUERY_CMD = - `pnpm -s bazel query --output label 'kind(nodejs_test, ...) intersect attr("tags", "api_guard", ...)'` -// Bazel targets for testing Public API goldens -process.stdout.write('Gathering all Public API targets'); -const ALL_PUBLIC_API_TESTS = exec(BAZEL_PUBLIC_API_TARGET_QUERY_CMD, {silent: true}) - .trim() - .split('\n') - .map(test => test.trim()); -process.stdout.clearLine(); -process.stdout.cursorTo(0); -// Bazel targets for generating Public API goldens -const ALL_PUBLIC_API_ACCEPTS = ALL_PUBLIC_API_TESTS.map(test => `${test}.accept`); - -/** - * Run the provided bazel commands on each provided target individually. - */ -function runBazelCommandOnTargets(command, targets, present) { - for (const target of targets) { - process.stdout.write(`${present}: ${target}`); - const commandResult = exec(`pnpm -s bazel ${command} ${target}`, {silent: true}); - process.stdout.clearLine(); - process.stdout.cursorTo(0); - if (commandResult.code) { - console.error(`Failed ${command}: ${target}`); - console.group(); - console.error(commandResult.stdout || commandResult.stderr); - console.groupEnd(); - } else { - console.log(`Successful ${command}: ${target}`); - } - } -} - -switch (USER_COMMAND) { - case 'accept': - runBazelCommandOnTargets('run', ALL_PUBLIC_API_ACCEPTS, 'Running'); - break; - case 'test': - runBazelCommandOnTargets('test', ALL_PUBLIC_API_TESTS, 'Testing'); - break; - default: - console.warn('Invalid command provided.'); - console.warn(); - console.warn(`Run this script with either "accept" and "test"`); - break; -} diff --git a/package.json b/package.json index 0074c071ef92..f66040c3ceb8 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,7 @@ "postinstall": "pnpm -s webdriver-update && husky", "//webdriver-update-README": "ChromeDriver version must match Puppeteer Chromium version, see https://github.com/GoogleChrome/puppeteer/releases http://chromedriver.chromium.org/downloads", "webdriver-update": "webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21", - "public-api:check": "node goldens/public-api/manage.js test", "ng-dev": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only node_modules/@angular/ng-dev/bundles/cli.mjs", - "public-api:update": "node goldens/public-api/manage.js accept", "ts-circular-deps": "pnpm -s ng-dev ts-circular-deps --config ./scripts/circular-deps-test.conf.mjs", "check-tooling-setup": "tsc --project .ng-dev/tsconfig.json", "diff-release-package": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/diff-release-package.mts" @@ -89,7 +87,6 @@ "@types/progress": "^2.0.3", "@types/resolve": "^1.17.1", "@types/semver": "^7.3.12", - "@types/shelljs": "^0.8.11", "@types/watchpack": "^2.4.4", "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", @@ -133,7 +130,6 @@ "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", "semver": "7.7.3", - "shelljs": "^0.10.0", "source-map-support": "0.5.21", "tar": "^7.0.0", "ts-node": "^10.9.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8cedbf89a01..5fe93a6a62cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -148,9 +148,6 @@ importers: '@types/semver': specifier: ^7.3.12 version: 7.7.1 - '@types/shelljs': - specifier: ^0.8.11 - version: 0.8.17 '@types/watchpack': specifier: ^2.4.4 version: 2.4.4 @@ -280,9 +277,6 @@ importers: semver: specifier: 7.7.3 version: 7.7.3 - shelljs: - specifier: ^0.10.0 - version: 0.10.0 source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -3633,9 +3627,6 @@ packages: '@types/serve-static@1.15.9': resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} - '@types/shelljs@0.8.17': - resolution: {integrity: sha512-IDksKYmQA2W9MkQjiyptbMmcQx+8+Ol6b7h6dPU5S05JyiQDSb/nZKnrMrZqGwgV6VkVdl6/SPCKPDlMRvqECg==} - '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -8021,10 +8012,6 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shelljs@0.10.0: - resolution: {integrity: sha512-Jex+xw5Mg2qMZL3qnzXIfaxEtBaC4n7xifqaqtrZDdlheR70OGkydrPJWT0V1cA1k3nanC86x9FwAmQl6w3Klw==} - engines: {node: '>=18'} - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -12154,11 +12141,6 @@ snapshots: '@types/node': 22.18.11 '@types/send': 0.17.5 - '@types/shelljs@0.8.17': - dependencies: - '@types/node': 22.18.11 - glob: 11.0.3 - '@types/sockjs@0.3.36': dependencies: '@types/node': 22.18.11 @@ -17579,11 +17561,6 @@ snapshots: shell-quote@1.8.3: {} - shelljs@0.10.0: - dependencies: - execa: 5.1.1 - fast-glob: 3.3.3 - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 diff --git a/scripts/build-packages-dist.mts b/scripts/build-packages-dist.mts index 441a3a2a021a..9a4fa1c764b9 100644 --- a/scripts/build-packages-dist.mts +++ b/scripts/build-packages-dist.mts @@ -14,9 +14,17 @@ import { BuiltPackage } from '@angular/ng-dev'; import { execSync } from 'node:child_process'; -import { chmodSync, copyFileSync, mkdirSync, rmSync } from 'node:fs'; +import { + chmodSync, + copyFileSync, + cpSync, + existsSync, + lstatSync, + mkdirSync, + readdirSync, + rmSync, +} from 'node:fs'; import { dirname, join } from 'node:path'; -import sh from 'shelljs'; /** Name of the Bazel tag that will be used to find release package targets. */ const releaseTargetTag = 'release-package'; @@ -89,14 +97,15 @@ function buildReleasePackages( // Archive output is created by the npm_package_archive target const archiveOutputPath = directoryOutputPath + '_archive.tgz'; - if (sh.test('-d', directoryOutputPath)) { - sh.chmod('-R', 'u+w', directoryOutputPath); - sh.rm('-rf', directoryOutputPath); + if (existsSync(directoryOutputPath)) { + chmodRecursiveSync(directoryOutputPath, '0755'); + rmSync(directoryOutputPath, { recursive: true, force: true }); } - try { + + if (existsSync(archiveOutputPath)) { chmodSync(archiveOutputPath, '0755'); rmSync(archiveOutputPath, { force: true }); - } catch {} + } }); // Build both the npm_package and npm_package_archive targets for each package @@ -123,8 +132,8 @@ function buildReleasePackages( mkdirSync(dirname(targetFolder), { recursive: true }); // Copy package contents to target directory - sh.cp('-R', directoryOutputPath, targetFolder); - sh.chmod('-R', 'u+w', targetFolder); + cpSync(directoryOutputPath, targetFolder, { recursive: true }); + chmodRecursiveSync(targetFolder, '0755'); // Copy archive of package to target directory const archiveTargetPath = join(distPath, `${pkgName.replace('/', '_')}.tgz`); @@ -176,3 +185,25 @@ function exec(command: string, captureStdout?: true) { return stdout.toString().trim(); } } + +/** + * Recursively changes the permissions (mode) of a directory and all its contents (files and subdirectories). + * @param startPath The starting directory path. + * @param mode The new permissions mode (e.g., 0755). + */ +function chmodRecursiveSync(startPath: string, mode: string): void { + chmodSync(startPath, mode); + + const files = readdirSync(startPath); + + for (const file of files) { + const filePath = join(startPath, file); + const stat = lstatSync(filePath); + + if (stat.isDirectory()) { + chmodRecursiveSync(filePath, mode); + } else { + chmodSync(filePath, mode); + } + } +} diff --git a/scripts/diff-release-package.mts b/scripts/diff-release-package.mts index 2bf01aded3cd..8ec6b6df48db 100644 --- a/scripts/diff-release-package.mts +++ b/scripts/diff-release-package.mts @@ -18,10 +18,9 @@ import { GitClient } from '@angular/ng-dev'; import childProcess from 'node:child_process'; -import fs from 'node:fs'; +import fs, { chmodSync, lstatSync, readdirSync } from 'node:fs'; import os from 'node:os'; -import path from 'node:path'; -import sh from 'shelljs'; +import path, { join } from 'node:path'; // Do not remove `.git` as we use Git for comparisons later. // Also preserve `uniqueId` as it's irrelevant for the diff and not included via Bazel. @@ -130,6 +129,28 @@ async function deleteDir(dirPath: string) { } // Needed as Bazel artifacts are readonly and cannot be deleted otherwise. - sh.chmod('-R', 'u+w', dirPath); + chmodRecursiveSync(dirPath, '0755'); await fs.promises.rm(dirPath, { recursive: true, force: true, maxRetries: 3 }); } + +/** + * Recursively changes the permissions (mode) of a directory and all its contents (files and subdirectories). + * @param startPath The starting directory path. + * @param mode The new permissions mode (e.g., 0755). + */ +function chmodRecursiveSync(startPath: string, mode: string): void { + chmodSync(startPath, mode); + + const files = readdirSync(startPath); + + for (const file of files) { + const filePath = join(startPath, file); + const stat = lstatSync(filePath); + + if (stat.isDirectory()) { + chmodRecursiveSync(filePath, mode); + } else { + chmodSync(filePath, mode); + } + } +} diff --git a/scripts/templates/contributing.ejs b/scripts/templates/contributing.ejs index b5bb997911ce..745d6d3500d2 100644 --- a/scripts/templates/contributing.ejs +++ b/scripts/templates/contributing.ejs @@ -291,15 +291,3 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise [js-style-guide]: https://google.github.io/styleguide/jsguide.html [stackoverflow]: https://stackoverflow.com/questions/tagged/angular-devkit -## Updating the Public API -Our Public API surface is tracked using golden files. - -You check all golden files by running: -```bash -pnpm public-api:check -``` - -If you modified the public API, the test will fail. To update the golden files you need to run: -```bash -pnpm public-api:update -``` From f371b52a3546e6eb9137b939c501dfbb019170b0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 21 Oct 2025 13:16:15 +0000 Subject: [PATCH 1647/2162] build: update all non-major dependencies See associated pull request for more information. --- packages/angular/build/package.json | 4 +- pnpm-lock.yaml | 227 +++++++++++++++++----------- 2 files changed, 141 insertions(+), 90 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 62cba5b8e361..e2e222ae055b 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,12 +37,12 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.43", + "rolldown": "1.0.0-beta.44", "sass": "1.93.2", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "vite": "7.1.10", + "vite": "7.1.11", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fe93a6a62cb..986ed85741f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -330,7 +330,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -339,7 +339,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -363,7 +363,7 @@ importers: version: 5.1.19(@types/node@24.8.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -401,8 +401,8 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.43 - version: 1.0.0-beta.43 + specifier: 1.0.0-beta.44 + version: 1.0.0-beta.44 sass: specifier: 1.93.2 version: 1.93.2 @@ -416,8 +416,8 @@ importers: specifier: 0.2.15 version: 0.2.15 vite: - specifier: 7.1.10 - version: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.1.11 + version: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -445,7 +445,7 @@ importers: version: 7.8.2 vitest: specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -2757,8 +2757,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.94.0': - resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} + '@oxc-project/types@0.95.0': + resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -2907,95 +2907,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.43': - resolution: {integrity: sha512-TP8bcPOb1s6UmY5syhXrDn9k0XkYcw+XaoylTN4cJxf0JOVS2j682I3aTcpfT51hOFGr2bRwNKN9RZ19XxeQbA==} + '@rolldown/binding-android-arm64@1.0.0-beta.44': + resolution: {integrity: sha512-g9ejDOehJFhxC1DIXQuZQ9bKv4lRDioOTL42cJjFjqKPl1L7DVb9QQQE1FxokGEIMr6FezLipxwnzOXWe7DNPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.43': - resolution: {integrity: sha512-kuVWnZsE4vEjMF/10SbSUyzucIW2zmdsqFghYMqy+fsjXnRHg0luTU6qWF8IqJf4Cbpm9NEZRnjIEPpAbdiSNQ==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.44': + resolution: {integrity: sha512-PxAW1PXLPmCzfhfKIS53kwpjLGTUdIfX4Ht+l9mj05C3lYCGaGowcNsYi2rdxWH24vSTmeK+ajDNRmmmrK0M7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.43': - resolution: {integrity: sha512-u9Ps4sh6lcmJ3vgLtyEg/x4jlhI64U0mM93Ew+tlfFdLDe7yKyA+Fe80cpr2n1mNCeZXrvTSbZluKpXQ0GxLjw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.44': + resolution: {integrity: sha512-/CtQqs1oO9uSb5Ju60rZvsdjE7Pzn8EK2ISAdl2jedjMzeD/4neNyCbwyJOAPzU+GIQTZVyrFZJX+t7HXR1R/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.43': - resolution: {integrity: sha512-h9lUtVtXgfbk/tnicMpbFfZ3DJvk5Zn2IvmlC1/e0+nUfwoc/TFqpfrRRqcNBXk/e+xiWMSKv6b0MF8N+Rtvlg==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.44': + resolution: {integrity: sha512-V5Q5W9c4+2GJ4QabmjmVV6alY97zhC/MZBaLkDtHwGy3qwzbM4DYgXUbun/0a8AH5hGhuU27tUIlYz6ZBlvgOA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': - resolution: {integrity: sha512-IX2C6bA6wM2rX/RvD75ko+ix9yxPKjKGGq7pOhB8wGI4Z4fqX5B1nDHga/qMDmAdCAR1m9ymzxkmqhm/AFYf7A==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44': + resolution: {integrity: sha512-X6adjkHeFqKsTU0FXdNN9HY4LDozPqIfHcnXovE5RkYLWIjMWuc489mIZ6iyhrMbCqMUla9IOsh5dvXSGT9o9A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': - resolution: {integrity: sha512-mcjd57vEj+CEQbZAzUiaxNzNgwwgOpFtZBWcINm8DNscvkXl5b/s622Z1dqGNWSdrZmdjdC6LWMvu8iHM6v9sQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44': + resolution: {integrity: sha512-kRRKGZI4DXWa6ANFr3dLA85aSVkwPdgXaRjfanwY84tfc3LncDiIjyWCb042e3ckPzYhHSZ3LmisO+cdOIYL6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': - resolution: {integrity: sha512-Pa8QMwlkrztTo/1mVjZmPIQ44tCSci10TBqxzVBvXVA5CFh5EpiEi99fPSll2dHG2uT4dCOMeC6fIhyDdb0zXA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.44': + resolution: {integrity: sha512-hMtiN9xX1NhxXBa2U3Up4XkVcsVp2h73yYtMDY59z9CDLEZLrik9RVLhBL5QtoX4zZKJ8HZKJtWuGYvtmkCbIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': - resolution: {integrity: sha512-BgynXKMjeaX4AfWLARhOKDetBOOghnSiVRjAHVvhiAaDXgdQN8e65mSmXRiVoVtD3cHXx/cfU8Gw0p0K+qYKVQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.44': + resolution: {integrity: sha512-rd1LzbpXQuR8MTG43JB9VyXDjG7ogSJbIkBpZEHJ8oMKzL6j47kQT5BpIXrg3b5UVygW9QCI2fpFdMocT5Kudg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': - resolution: {integrity: sha512-VIsoPlOB/tDSAw9CySckBYysoIBqLeps1/umNSYUD8pMtalJyzMTneAVI1HrUdf4ceFmQ5vARoLIXSsPwVFxNg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.44': + resolution: {integrity: sha512-qI2IiPqmPRW25exXkuQr3TlweCDc05YvvbSDRPCuPsWkwb70dTiSoXn8iFxT4PWqTi71wWHg1Wyta9PlVhX5VA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': - resolution: {integrity: sha512-YDXTxVJG67PqTQMKyjVJSddoPbSWJ4yRz/E3xzTLHqNrTDGY0UuhG8EMr8zsYnfH/0cPFJ3wjQd/hJWHuR6nkA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.44': + resolution: {integrity: sha512-+vHvEc1pL5iJRFlldLC8mjm6P4Qciyfh2bh5ZI6yxDQKbYhCHRKNURaKz1mFcwxhVL5YMYsLyaqM3qizVif9MQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': - resolution: {integrity: sha512-3M+2DmorXvDuAIGYQ9Z93Oy1G9ETkejLwdXXb1uRTgKN9pMcu7N+KG2zDrJwqyxeeLIFE22AZGtSJm3PJbNu9Q==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.44': + resolution: {integrity: sha512-XSgLxRrtFj6RpTeMYmmQDAwHjKseYGKUn5LPiIdW4Cq+f5SBSStL2ToBDxkbdxKPEbCZptnLPQ/nfKcAxrC8Xg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': - resolution: {integrity: sha512-/B1j1pJs33y9ywtslOMxryUPHq8zIGu/OGEc2gyed0slimJ8fX2uR/SaJVhB4+NEgCFIeYDR4CX6jynAkeRuCA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44': + resolution: {integrity: sha512-cF1LJdDIX02cJrFrX3wwQ6IzFM7I74BYeKFkzdcIA4QZ0+2WA7/NsKIgjvrunupepWb1Y6PFWdRlHSaz5AW1Wg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': - resolution: {integrity: sha512-29oG1swCz7hNP+CQYrsM4EtylsKwuYzM8ljqbqC5TsQwmKat7P8ouDpImsqg/GZxFSXcPP9ezQm0Q0wQwGM3JA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44': + resolution: {integrity: sha512-5uaJonDafhHiMn+iEh7qUp3QQ4Gihv3lEOxKfN8Vwadpy0e+5o28DWI42DpJ9YBYMrVy4JOWJ/3etB/sptpUwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': - resolution: {integrity: sha512-eWBV1Ef3gfGNehxVGCyXs7wLayRIgCmyItuCZwYYXW5bsk4EvR4n2GP5m3ohjnx7wdiY3nLmwQfH2Knb5gbNZw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.44': + resolution: {integrity: sha512-vsqhWAFJkkmgfBN/lkLCWTXF1PuPhMjfnAyru48KvF7mVh2+K7WkKYHezF3Fjz4X/mPScOcIv+g6cf6wnI6eWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.43': - resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} + '@rolldown/pluginutils@1.0.0-beta.44': + resolution: {integrity: sha512-g6eW7Zwnr2c5RADIoqziHoVs6b3W5QTQ4+qbpfjbkMJ9x+8Og211VW/oot2dj9dVwaK/UyC6Yo+02gV+wWQVNg==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -4077,10 +4077,6 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.2.0: - resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} - engines: {node: '>=14'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -7792,8 +7788,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.43: - resolution: {integrity: sha512-6RcqyRx0tY1MlRLnjXPp/849Rl/CPFhzpGGwNPEPjKwqBMqPq/Rbbkxasa8s0x+IkUk46ty4jazb5skZ/Vgdhw==} + rolldown@1.0.0-beta.44: + resolution: {integrity: sha512-gcqgyCi3g93Fhr49PKvymE8PoaGS0sf6ajQrsYaQ8o5de6aUEbD6rJZiJbhOfpcqOnycgsAsUNPYri1h25NgsQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8791,6 +8787,46 @@ packages: yaml: optional: true + vite@7.1.11: + resolution: {integrity: sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -11372,7 +11408,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.94.0': {} + '@oxc-project/types@0.95.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11496,51 +11532,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.43': + '@rolldown/binding-android-arm64@1.0.0-beta.44': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.43': + '@rolldown/binding-darwin-arm64@1.0.0-beta.44': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.43': + '@rolldown/binding-darwin-x64@1.0.0-beta.44': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.43': + '@rolldown/binding-freebsd-x64@1.0.0-beta.44': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.44': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.44': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.44': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.44': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.44': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.44': optional: true - '@rolldown/pluginutils@1.0.0-beta.43': {} + '@rolldown/pluginutils@1.0.0-beta.44': {} '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': optionalDependencies: @@ -12432,11 +12468,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -12451,7 +12487,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12877,8 +12913,6 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.2.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -17218,26 +17252,25 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.43: + rolldown@1.0.0-beta.44: dependencies: - '@oxc-project/types': 0.94.0 - '@rolldown/pluginutils': 1.0.0-beta.43 - ansis: 4.2.0 + '@oxc-project/types': 0.95.0 + '@rolldown/pluginutils': 1.0.0-beta.44 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.43 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.43 - '@rolldown/binding-darwin-x64': 1.0.0-beta.43 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.43 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.43 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.43 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.43 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.43 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.43 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.43 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.43 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.43 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.43 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.43 + '@rolldown/binding-android-arm64': 1.0.0-beta.44 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.44 + '@rolldown/binding-darwin-x64': 1.0.0-beta.44 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.44 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.44 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.44 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.44 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.44 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.44 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.44 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.44 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.44 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.44 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.44 rollup-license-plugin@3.0.2: dependencies: @@ -18435,7 +18468,7 @@ snapshots: debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -18468,7 +18501,25 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.11 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.5 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.8.0 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.93.2 + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.8.1 + + vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 From 18bf8e7b3b36b968d064299e5c557942c0ed7ec0 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:17:38 +0000 Subject: [PATCH 1648/2162] fix(@angular-devkit/schematics): respect `--force` option when schematic contains `host.create` Removes the `FileAlreadyExistException` check within the `create` method of `HostTree`. This change allows a schematic to create a file even if one already exists at the same path, effectively overwriting it. This provides more flexibility for schematic authors, particularly in scenarios where files need to be replaced or updated unconditionally. It is intended to be used with schematics that have a `force` or `overwrite` option. Closes #30578 --- .../schematics/src/tree/host-tree.ts | 7 +-- .../generate/schematic-force-override.ts | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/generate/schematic-force-override.ts diff --git a/packages/angular_devkit/schematics/src/tree/host-tree.ts b/packages/angular_devkit/schematics/src/tree/host-tree.ts index 6f5e55970543..c2437556be16 100644 --- a/packages/angular_devkit/schematics/src/tree/host-tree.ts +++ b/packages/angular_devkit/schematics/src/tree/host-tree.ts @@ -20,7 +20,6 @@ import { import { ParseError, parse as jsoncParse, printParseErrorCode } from 'jsonc-parser'; import { ContentHasMutatedException, - FileAlreadyExistException, FileDoesNotExistException, InvalidUpdateRecordException, MergeConflictException, @@ -407,12 +406,8 @@ export class HostTree implements Tree { // Structural methods. create(path: string, content: Buffer | string): void { - const p = this._normalizePath(path); - if (this._recordSync.exists(p)) { - throw new FileAlreadyExistException(p); - } const c = typeof content == 'string' ? Buffer.from(content) : content; - this._record.create(p, c as {} as virtualFs.FileBuffer).subscribe(); + this._record.create(this._normalizePath(path), c as {} as virtualFs.FileBuffer).subscribe(); } delete(path: string): void { this._recordSync.delete(this._normalizePath(path)); diff --git a/tests/legacy-cli/e2e/tests/generate/schematic-force-override.ts b/tests/legacy-cli/e2e/tests/generate/schematic-force-override.ts new file mode 100644 index 000000000000..d3e9e1b7d947 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/generate/schematic-force-override.ts @@ -0,0 +1,51 @@ +import { appendFile } from 'node:fs/promises'; +import { getGlobalVariable } from '../../utils/env'; +import { getActivePackageManager, installWorkspacePackages } from '../../utils/packages'; +import { ng } from '../../utils/process'; +import { isPrereleaseCli, updateJsonFile } from '../../utils/project'; +import { expectToFail } from '../../utils/utils'; + +const snapshots = require('../../ng-snapshot/package.json'); + +export default async function () { + const isPrerelease = await isPrereleaseCli(); + let tag = isPrerelease ? '@next' : ''; + if (getActivePackageManager() === 'npm') { + await appendFile('.npmrc', '\nlegacy-peer-deps=true'); + } + + await ng('add', `@angular/material${tag}`, '--skip-confirmation'); + + const isSnapshotBuild = getGlobalVariable('argv')['ng-snapshots']; + if (isSnapshotBuild) { + await updateJsonFile('package.json', (packageJson) => { + const dependencies = packageJson['dependencies']; + // Angular material adds dependencies on other Angular packages + // Iterate over all of the packages to update them to the snapshot version. + for (const [name, version] of Object.entries(snapshots.dependencies)) { + if (name in dependencies) { + dependencies[name] = version; + } + } + }); + await installWorkspacePackages(); + } + + const args: string[] = [ + 'generate', + '@angular/material:theme-color', + '--primary-color=#0641e6', + '--tertiary-color=#994aff', + '--neutral-color=#313138', + '--error-color=#eb5757', + '--secondary-color=#009096', + '--neutral-variant-color=#b2b2b8', + ]; + + await ng(...args); + + // Should fail as file exists + await expectToFail(() => ng(...args)); + + await ng(...args, '--force'); +} From 406315d0939c62d9f4f39ce64b168e72bbdd588c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 21 Oct 2025 11:19:26 -0400 Subject: [PATCH 1649/2162] feat(@angular/cli): make find_examples tool version-aware This commit refactors the `find_examples` MCP tool to be version-aware, aligning its behavior with the `get_best_practices` tool. The tool now dynamically resolves the code examples database from the user's installed version of `@angular/core`, ensuring that the provided examples are accurate for their specific project version. Key changes: - The input schema is updated to accept a `workspacePath`. - New logic reads the `angular.examples` metadata from `@angular/core/package.json` to locate the version-specific SQLite database. - If the version-specific database cannot be resolved, the tool gracefully falls back to the generic database bundled with the CLI. - The database querying logic has been extracted into a separate helper function for better code organization. --- .../cli/src/commands/mcp/tools/examples.ts | 289 +++++++++++++----- 1 file changed, 210 insertions(+), 79 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts index 21e90163a480..81b7d2fbe869 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples.ts @@ -6,13 +6,23 @@ * found in the LICENSE file at https://angular.dev/license */ -import { glob, readFile } from 'node:fs/promises'; +import { glob, readFile, stat } from 'node:fs/promises'; +import { createRequire } from 'node:module'; import path from 'node:path'; import type { DatabaseSync, SQLInputValue } from 'node:sqlite'; import { z } from 'zod'; import { McpToolContext, declareTool } from './tool-registry'; const findExampleInputSchema = z.object({ + workspacePath: z + .string() + .optional() + .describe( + 'The absolute path to the `angular.json` file for the workspace. This is used to find the ' + + 'version-specific code examples that correspond to the installed version of the ' + + 'Angular framework. You **MUST** get this path from the `list_projects` tool. If omitted, ' + + 'the tool will search the generic code examples bundled with the CLI.', + ), query: z .string() .describe( @@ -153,6 +163,12 @@ new or evolving features. (e.g., query: 'forms', required_packages: ['@angular/forms'], keywords: ['validation']) +* **Project-Specific Use (Recommended):** For tasks inside a user's project, you **MUST** provide the + \`workspacePath\` argument to get examples that match the project's Angular version. Get this + path from \`list_projects\`. +* **General Use:** If no project context is available (e.g., for general questions or learning), + you can call the tool without the \`workspacePath\` argument. It will return the latest + generic examples. * **Tool Selection:** This database primarily contains examples for new and recently updated Angular features. For established, core features, the main documentation (via the \`search_documentation\` tool) may be a better source of information. @@ -183,103 +199,218 @@ new or evolving features. factory: createFindExampleHandler, }); -async function createFindExampleHandler({ exampleDatabasePath }: McpToolContext) { - let db: DatabaseSync | undefined; +/** + * Attempts to find a version-specific example database from the user's installed + * version of `@angular/core`. It looks for a custom `angular` metadata property in the + * framework's `package.json` to locate the database. + * + * @example A sample `package.json` `angular` field: + * ```json + * { + * "angular": { + * "examples": { + * "format": "sqlite", + * "path": "./resources/code-examples.db" + * } + * } + * } + * ``` + * + * @param workspacePath The absolute path to the user's `angular.json` file. + * @param logger The MCP tool context logger for reporting warnings. + * @returns A promise that resolves to an object containing the database path and source, + * or `undefined` if the database could not be resolved. + */ +async function getVersionSpecificExampleDatabase( + workspacePath: string, + logger: McpToolContext['logger'], +): Promise<{ dbPath: string; source: string } | undefined> { + // 1. Resolve the path to package.json + let pkgJsonPath: string; + try { + const workspaceRequire = createRequire(workspacePath); + pkgJsonPath = workspaceRequire.resolve('@angular/core/package.json'); + } catch (e) { + logger.warn( + `Could not resolve '@angular/core/package.json' from '${workspacePath}'. ` + + 'Is Angular installed in this project? Falling back to the bundled examples.', + ); - if (process.env['NG_MCP_EXAMPLES_DIR']) { - db = await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR']); + return undefined; } - suppressSqliteWarning(); + // 2. Read and parse package.json, then find the database. + try { + const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); + const pkgJson = JSON.parse(pkgJsonContent); + const examplesInfo = pkgJson['angular']?.examples; + + if (examplesInfo && examplesInfo.format === 'sqlite' && typeof examplesInfo.path === 'string') { + const packageDirectory = path.dirname(pkgJsonPath); + const dbPath = path.resolve(packageDirectory, examplesInfo.path); + + // Ensure the resolved database path is within the package boundary. + const relativePath = path.relative(packageDirectory, dbPath); + if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) { + logger.warn( + `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + + `The path '${examplesInfo.path}' escapes the package boundary. ` + + 'Falling back to the bundled examples.', + ); + + return undefined; + } - return async (input: FindExampleInput) => { - if (!db) { - if (!exampleDatabasePath) { - // This should be prevented by the registration logic in mcp-server.ts - throw new Error('Example database path is not available.'); + // Check the file size to prevent reading a very large file. + const stats = await stat(dbPath); + if (stats.size > 10 * 1024 * 1024) { + // 10MB + logger.warn( + `The example database at '${dbPath}' is larger than 10MB (${stats.size} bytes). ` + + 'This is unexpected and the file will not be used. Falling back to the bundled examples.', + ); + + return undefined; } - const { DatabaseSync } = await import('node:sqlite'); - db = new DatabaseSync(exampleDatabasePath, { readOnly: true }); + + const source = `framework version ${pkgJson.version}`; + + return { dbPath, source }; + } else { + logger.warn( + `Did not find valid 'angular.examples' metadata in '${pkgJsonPath}'. ` + + 'Falling back to the bundled examples.', + ); } + } catch (e) { + logger.warn( + `Failed to read or parse version-specific examples metadata referenced in '${pkgJsonPath}': ${ + e instanceof Error ? e.message : e + }. Falling back to the bundled examples.`, + ); + } + + return undefined; +} + +async function createFindExampleHandler({ logger, exampleDatabasePath }: McpToolContext) { + const runtimeDb = process.env['NG_MCP_EXAMPLES_DIR'] + ? await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR']) + : undefined; - const { query, keywords, required_packages, related_concepts, includeExperimental } = input; - - // Build the query dynamically - const params: SQLInputValue[] = []; - let sql = - 'SELECT title, summary, keywords, required_packages, related_concepts, related_tools, content, ' + - // The `snippet` function generates a contextual snippet of the matched text. - // Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size. - "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet " + - 'FROM examples_fts'; - const whereClauses = []; - - // FTS query - if (query) { - whereClauses.push('examples_fts MATCH ?'); - params.push(escapeSearchQuery(query)); + suppressSqliteWarning(); + + return async (input: FindExampleInput) => { + // If the dev-time override is present, use it and bypass all other logic. + if (runtimeDb) { + return queryDatabase(runtimeDb, input); } - // JSON array filters - const addJsonFilter = (column: string, values: string[] | undefined) => { - if (values?.length) { - for (const value of values) { - whereClauses.push(`${column} LIKE ?`); - params.push(`%"${value}"%`); - } - } - }; + let dbPath: string | undefined; - addJsonFilter('keywords', keywords); - addJsonFilter('required_packages', required_packages); - addJsonFilter('related_concepts', related_concepts); + // First, try to get the version-specific guide. + if (input.workspacePath) { + const versionSpecific = await getVersionSpecificExampleDatabase(input.workspacePath, logger); + if (versionSpecific) { + dbPath = versionSpecific.dbPath; + } + } - if (!includeExperimental) { - whereClauses.push('experimental = 0'); + // If the version-specific guide was not found for any reason, fall back to the bundled version. + if (!dbPath) { + dbPath = exampleDatabasePath; } - if (whereClauses.length > 0) { - sql += ` WHERE ${whereClauses.join(' AND ')}`; + if (!dbPath) { + // This should be prevented by the registration logic in mcp-server.ts + throw new Error('Example database path is not available.'); } - // Order the results by relevance using the BM25 algorithm. - // The weights assigned to each column boost the ranking of documents where the - // search term appears in a more important field. - // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content - sql += ' ORDER BY bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0);'; - - const queryStatement = db.prepare(sql); - - // Query database and return results - const examples = []; - const textContent = []; - for (const exampleRecord of queryStatement.all(...params)) { - const record = exampleRecord as Record; - const example = { - title: record['title'], - summary: record['summary'], - keywords: JSON.parse(record['keywords'] || '[]') as string[], - required_packages: JSON.parse(record['required_packages'] || '[]') as string[], - related_concepts: JSON.parse(record['related_concepts'] || '[]') as string[], - related_tools: JSON.parse(record['related_tools'] || '[]') as string[], - content: record['content'], - snippet: record['snippet'], - }; - examples.push(example); - - // Also create a more structured text output - let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`; - if (example.snippet) { - text += `\n**Snippet:** ${example.snippet}`; + const { DatabaseSync } = await import('node:sqlite'); + const db = new DatabaseSync(dbPath, { readOnly: true }); + + return queryDatabase(db, input); + }; +} + +function queryDatabase(db: DatabaseSync, input: FindExampleInput) { + const { query, keywords, required_packages, related_concepts, includeExperimental } = input; + + // Build the query dynamically + const params: SQLInputValue[] = []; + let sql = + 'SELECT title, summary, keywords, required_packages, related_concepts, related_tools, content, ' + + // The `snippet` function generates a contextual snippet of the matched text. + // Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size. + "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet " + + 'FROM examples_fts'; + const whereClauses = []; + + // FTS query + if (query) { + whereClauses.push('examples_fts MATCH ?'); + params.push(escapeSearchQuery(query)); + } + + // JSON array filters + const addJsonFilter = (column: string, values: string[] | undefined) => { + if (values?.length) { + for (const value of values) { + whereClauses.push(`${column} LIKE ?`); + params.push(`%"${value}"%`); } - text += `\n\n---\n\n${example.content}`; - textContent.push({ type: 'text' as const, text }); } + }; + + addJsonFilter('keywords', keywords); + addJsonFilter('required_packages', required_packages); + addJsonFilter('related_concepts', related_concepts); - return { - content: textContent, - structuredContent: { examples }, + if (!includeExperimental) { + whereClauses.push('experimental = 0'); + } + + if (whereClauses.length > 0) { + sql += ` WHERE ${whereClauses.join(' AND ')}`; + } + + // Order the results by relevance using the BM25 algorithm. + // The weights assigned to each column boost the ranking of documents where the + // search term appears in a more important field. + // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content + sql += ' ORDER BY bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0);'; + + const queryStatement = db.prepare(sql); + + // Query database and return results + const examples = []; + const textContent = []; + for (const exampleRecord of queryStatement.all(...params)) { + const record = exampleRecord as Record; + const example = { + title: record['title'], + summary: record['summary'], + keywords: JSON.parse(record['keywords'] || '[]') as string[], + required_packages: JSON.parse(record['required_packages'] || '[]') as string[], + related_concepts: JSON.parse(record['related_concepts'] || '[]') as string[], + related_tools: JSON.parse(record['related_tools'] || '[]') as string[], + content: record['content'], + snippet: record['snippet'], }; + examples.push(example); + + // Also create a more structured text output + let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`; + if (example.snippet) { + text += `\n**Snippet:** ${example.snippet}`; + } + text += `\n\n---\n\n${example.content}`; + textContent.push({ type: 'text' as const, text }); + } + + return { + content: textContent, + structuredContent: { examples }, }; } From 431106559d6e75f5113876a3f92fdf4dc4b2114d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:01:10 -0400 Subject: [PATCH 1650/2162] fix(@angular/cli): correct query in find_examples to prevent runtime error This commit fixes a runtime error in the `find_examples` tool that occurred when filtering examples. The error `no such column: experimental` was caused by an incorrect SQL query that attempted to access a column on the FTS virtual table (`examples_fts`) that only exists on the main content table (`examples`). The fix refactors the database query to use a `JOIN` between the `examples` and `examples_fts` tables. This allows the `WHERE` clause to correctly filter on the `experimental` column from the main table while still leveraging the full-text search capabilities of the virtual table. --- packages/angular/cli/src/commands/mcp/tools/examples.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts index 81b7d2fbe869..b8dba8fae2b9 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples.ts @@ -339,11 +339,11 @@ function queryDatabase(db: DatabaseSync, input: FindExampleInput) { // Build the query dynamically const params: SQLInputValue[] = []; let sql = - 'SELECT title, summary, keywords, required_packages, related_concepts, related_tools, content, ' + + `SELECT e.title, e.summary, e.keywords, e.required_packages, e.related_concepts, e.related_tools, e.content, ` + // The `snippet` function generates a contextual snippet of the matched text. // Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size. "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet " + - 'FROM examples_fts'; + 'FROM examples e JOIN examples_fts ON e.id = examples_fts.rowid'; const whereClauses = []; // FTS query @@ -356,7 +356,7 @@ function queryDatabase(db: DatabaseSync, input: FindExampleInput) { const addJsonFilter = (column: string, values: string[] | undefined) => { if (values?.length) { for (const value of values) { - whereClauses.push(`${column} LIKE ?`); + whereClauses.push(`e.${column} LIKE ?`); params.push(`%"${value}"%`); } } @@ -367,7 +367,7 @@ function queryDatabase(db: DatabaseSync, input: FindExampleInput) { addJsonFilter('related_concepts', related_concepts); if (!includeExperimental) { - whereClauses.push('experimental = 0'); + whereClauses.push('e.experimental = 0'); } if (whereClauses.length > 0) { From 122a8c0e27342db79eb4d38e23032548054709b9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:08:00 -0400 Subject: [PATCH 1651/2162] fix(@angular/cli): correct frontmatter parsing in MCP examples tool This commit fixes a bug in the YAML frontmatter parsing logic that caused string values in arrays to be double-quoted. The issue was present in both the `find_examples` MCP tool's runtime parser and the `example_db_generator.js` script. The `parseFrontmatter` function in both files has been updated to correctly unquote string values, ensuring that the structured data in the examples database is clean and the tool's output is formatted correctly. --- .../angular/cli/src/commands/mcp/tools/examples.ts | 10 +++++++++- tools/example_db_generator.js | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts index b8dba8fae2b9..8866761017a6 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples.ts @@ -546,7 +546,15 @@ function parseFrontmatter(content: string): Record { } else { const arrayItemMatch = line.match(/^\s*-\s*(.*)/); if (arrayItemMatch && currentKey && isArray) { - arrayValues.push(arrayItemMatch[1].trim()); + let value = arrayItemMatch[1].trim(); + // Unquote if the value is quoted. + if ( + (value.startsWith("'") && value.endsWith("'")) || + (value.startsWith('"') && value.endsWith('"')) + ) { + value = value.slice(1, -1); + } + arrayValues.push(value); } } } diff --git a/tools/example_db_generator.js b/tools/example_db_generator.js index dc1f7ba8e3be..142bd1e8a7ed 100644 --- a/tools/example_db_generator.js +++ b/tools/example_db_generator.js @@ -60,7 +60,15 @@ function parseFrontmatter(content) { } else { const arrayItemMatch = line.match(/^\s*-\s*(.*)/); if (arrayItemMatch && currentKey && isArray) { - arrayValues.push(arrayItemMatch[1].trim()); + let value = arrayItemMatch[1].trim(); + // Unquote if the value is quoted. + if ( + (value.startsWith("'") && value.endsWith("'")) || + (value.startsWith('"') && value.endsWith('"')) + ) { + value = value.slice(1, -1); + } + arrayValues.push(value); } } } From bf468e1eb1050c60359b6f52692ce0db286982c2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 21 Oct 2025 14:25:26 -0400 Subject: [PATCH 1652/2162] fix(@angular/build): direct check include file exists in unit-test discovery When discovering unit-test files, the `include` option values that are not dynamic patterns will now be checked directly if they exist on the file system. This avoids glob calls for specific files and helps avoid Windows pathing issues with glob syntax. --- .../build/src/builders/unit-test/test-discovery.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index a7022924c622..987b55e39a81 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -232,20 +232,20 @@ async function resolveStaticPattern( return { resolved: [], unresolved: [`${pattern}/**/*.@(${infixes}).@(ts|tsx)`] }; } - const fileExt = extname(pattern); - const baseName = basename(pattern, fileExt); + const fileExt = extname(fullPath); + const baseName = basename(fullPath, fileExt); for (const infix of TEST_FILE_INFIXES) { - const potentialSpec = join( - projectSourceRoot, - dirname(pattern), - `${baseName}${infix}${fileExt}`, - ); + const potentialSpec = join(dirname(fullPath), `${baseName}${infix}${fileExt}`); if (await exists(potentialSpec)) { return { resolved: [potentialSpec], unresolved: [] }; } } + if (await exists(fullPath)) { + return { resolved: [fullPath], unresolved: [] }; + } + return { resolved: [], unresolved: [pattern] }; } From 9f59b776b1894a0e1451677a4c7bca2f8426b4f5 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:01:20 -0400 Subject: [PATCH 1653/2162] refactor(@angular/build): make `runner` optional in unit-test builder The `runner` option in the `unit-test` builder is now optional to streamline the user configuration. If the `runner` option is not provided, the builder now defaults to using the `vitest` value. The builder's schema has been updated to reflect this change by removing `runner` from the required properties and updating its entry to document the new default behavior. --- goldens/public-api/angular/build/index.api.md | 2 +- packages/angular/build/src/builders/unit-test/options.ts | 2 +- packages/angular/build/src/builders/unit-test/schema.json | 3 ++- tests/legacy-cli/e2e/utils/vitest.ts | 6 +----- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 2615db9fd0b0..0e6a3375d8fb 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -235,7 +235,7 @@ export type UnitTestBuilderOptions = { progress?: boolean; providersFile?: string; reporters?: SchemaReporter[]; - runner: Runner; + runner?: Runner; setupFiles?: string[]; tsConfig?: string; watch?: boolean; diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index c94acc27a932..33792ce89e8f 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -82,7 +82,7 @@ export async function normalizeOptions( include: options.include ?? ['**/*.spec.ts'], exclude: options.exclude, filter, - runnerName: runner, + runnerName: runner ?? 'vitest', coverage: options.coverage ? { all: options.coverageAll, diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 668cc8639a09..1cce0bf34e53 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -16,6 +16,7 @@ "runner": { "type": "string", "description": "Specifies the test runner to use for test execution.", + "default": "vitest", "enum": ["karma", "vitest"] }, "browsers": { @@ -267,5 +268,5 @@ } }, "additionalProperties": false, - "required": ["runner"] + "required": [] } diff --git a/tests/legacy-cli/e2e/utils/vitest.ts b/tests/legacy-cli/e2e/utils/vitest.ts index 95929703cf9b..ca856243592a 100644 --- a/tests/legacy-cli/e2e/utils/vitest.ts +++ b/tests/legacy-cli/e2e/utils/vitest.ts @@ -19,11 +19,7 @@ export async function applyVitestBuilder(): Promise { // Update to Vitest builder. const test = project['architect']['test']; test['builder'] = '@angular/build:unit-test'; - test['options'] = { - tsConfig: test['options']['tsConfig'], - buildTarget: '::development', - runner: 'vitest', - }; + test['options'] = {}; }); await updateJsonFile('tsconfig.spec.json', (tsconfig) => { From 396e5c42cc8babb8dea9d8389e6fa3f1f281f4d7 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:50:47 +0000 Subject: [PATCH 1654/2162] build: update dependency rules_nodejs to v6.6.0 See associated pull request for more information. Closes #31552 as a pr takeover --- BUILD.bazel | 12 + MODULE.bazel | 84 +++---- MODULE.bazel.lock | 615 ++-------------------------------------------- 3 files changed, 67 insertions(+), 644 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 99bc6eb0355f..57090fe9772a 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -108,3 +108,15 @@ validate_ts_version_matching( module_lock_file = "MODULE.bazel.lock", package_json = "package.json", ) + +# This is needed following https://github.com/bazel-contrib/rules_nodejs/pull/3859 +toolchain( + name = "node22_windows_no_exec_config_toolchain", + exec_compatible_with = [], + target_compatible_with = [ + "@platforms//os:windows", + "@platforms//cpu:x86_64", + ], + toolchain = "@node22_windows_amd64//:toolchain", + toolchain_type = "@rules_nodejs//nodejs:toolchain_type", +) diff --git a/MODULE.bazel b/MODULE.bazel index df14c36dcde2..e0f1b287ac59 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "yq.bzl", version = "0.3.1") -bazel_dep(name = "rules_nodejs", version = "6.5.2") +bazel_dep(name = "rules_nodejs", version = "6.6.0") bazel_dep(name = "aspect_rules_js", version = "2.6.2") bazel_dep(name = "aspect_rules_ts", version = "3.7.0") bazel_dep(name = "rules_pkg", version = "0.8.1") @@ -51,33 +51,17 @@ git_override( remote = "https://github.com/devversion/rules_browsers.git", ) -# The below is needed until https://github.com/bazel-contrib/rules_nodejs/pull/3853 is merged and released. -NODE_24_VERSION = "24.0.0" - -NODE_24_REPO = { - "24.0.0-darwin_arm64": ("node-v24.0.0-darwin-arm64.tar.gz", "node-v24.0.0-darwin-arm64", "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121"), - "24.0.0-darwin_amd64": ("node-v24.0.0-darwin-x64.tar.gz", "node-v24.0.0-darwin-x64", "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a"), - "24.0.0-linux_arm64": ("node-v24.0.0-linux-arm64.tar.xz", "node-v24.0.0-linux-arm64", "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040"), - "24.0.0-linux_ppc64le": ("node-v24.0.0-linux-ppc64le.tar.xz", "node-v24.0.0-linux-ppc64le", "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d"), - "24.0.0-linux_s390x": ("node-v24.0.0-linux-s390x.tar.xz", "node-v24.0.0-linux-s390x", "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021"), - "24.0.0-linux_amd64": ("node-v24.0.0-linux-x64.tar.xz", "node-v24.0.0-linux-x64", "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7"), - "24.0.0-windows_amd64": ("node-v24.0.0-win-x64.zip", "node-v24.0.0-win-x64", "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304"), -} - node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") -node.toolchain( - name = "nodejs", - node_repositories = NODE_24_REPO, - node_version = NODE_24_VERSION, +node.toolchain(node_version = "24.0.0") +use_repo( + node, + "nodejs_darwin_amd64", + "nodejs_darwin_arm64", + "nodejs_linux_amd64", + "nodejs_linux_arm64", + "nodejs_toolchains", + "nodejs_windows_amd64", ) -use_repo(node, "nodejs_toolchains") -use_repo(node, "nodejs_darwin_amd64") -use_repo(node, "nodejs_darwin_arm64") -use_repo(node, "nodejs_linux_amd64") -use_repo(node, "nodejs_linux_arm64") -use_repo(node, "nodejs_linux_ppc64le") -use_repo(node, "nodejs_linux_s390x") -use_repo(node, "nodejs_windows_amd64") node_dev = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node", dev_dependency = True) @@ -86,40 +70,42 @@ node_dev.toolchain( name = "node20", node_version = "20.19.0", ) -use_repo(node_dev, "node20_darwin_arm64") -use_repo(node_dev, "node20_darwin_amd64") -use_repo(node_dev, "node20_linux_amd64") -use_repo(node_dev, "node20_linux_arm64") -use_repo(node_dev, "node20_linux_s390x") -use_repo(node_dev, "node20_linux_ppc64le") -use_repo(node_dev, "node20_windows_amd64") # Node.js 22 node_dev.toolchain( name = "node22", node_version = "22.12.0", ) -use_repo(node_dev, "node22_darwin_arm64") -use_repo(node_dev, "node22_darwin_amd64") -use_repo(node_dev, "node22_linux_amd64") -use_repo(node_dev, "node22_linux_arm64") -use_repo(node_dev, "node22_linux_s390x") -use_repo(node_dev, "node22_linux_ppc64le") -use_repo(node_dev, "node22_windows_amd64") # Node.js 24 node_dev.toolchain( name = "node24", - node_repositories = NODE_24_REPO, - node_version = NODE_24_VERSION, + node_version = "24.0.0", ) -use_repo(node_dev, "node24_darwin_arm64") -use_repo(node_dev, "node24_darwin_amd64") -use_repo(node_dev, "node24_linux_amd64") -use_repo(node_dev, "node24_linux_arm64") -use_repo(node_dev, "node24_linux_s390x") -use_repo(node_dev, "node24_linux_ppc64le") -use_repo(node_dev, "node24_windows_amd64") +use_repo( + node_dev, + "node20_darwin_amd64", + "node20_darwin_arm64", + "node20_linux_amd64", + "node20_linux_arm64", + "node20_toolchains", + "node20_windows_amd64", + "node22_darwin_amd64", + "node22_darwin_arm64", + "node22_linux_amd64", + "node22_linux_arm64", + "node22_toolchains", + "node22_windows_amd64", + "node24_darwin_amd64", + "node24_darwin_arm64", + "node24_linux_amd64", + "node24_linux_arm64", + "node24_toolchains", + "node24_windows_amd64", +) + +# This is needed following https://github.com/bazel-contrib/rules_nodejs/pull/3859 +register_toolchains("//:node22_windows_no_exec_config_toolchain") npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") npm.npm_translate_lock( diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 6bd088c5d64d..000e114aefb8 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -152,7 +152,8 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", - "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/source.json": "6a6ca0940914d55c550d1417cad13a56c9900e23f651a762d8ccc5a64adcf661", + "https://bcr.bazel.build/modules/rules_nodejs/6.6.0/MODULE.bazel": "49ef4cccc17a5a13c9beca2d0b3f7dea1d97381df8cb6ba4dea03943f6a81b0a", + "https://bcr.bazel.build/modules/rules_nodejs/6.6.0/source.json": "cbd156fa2db33707275de138110b78eb86a4cf510b979df7c4b6a8e7127484de", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/MODULE.bazel": "7e9e7b5b26bd7ff012dfe63930db2f0176ddcd25e44a858fc72d63e995b6aab9", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/source.json": "15dd7e13dc303f7fcde2b55300bcb8de5c0dd08a7a7269749cbbaa0fb1dfbe16", @@ -1116,8 +1117,8 @@ }, "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { - "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", - "usagesDigest": "1kpLfNSteilN9lIcsMk1OY9Ob+GrTMGxU495OOEa2cA=", + "bzlTransitiveDigest": "71PwVsMlLx+RWdt1SI9nSqRHX7DX/NstWwr7/XBxEMs=", + "usagesDigest": "GeYuTJ/owkgZEwBsWFkG3fyoxWVGCRdGtiR5b4jNj3s=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1127,43 +1128,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1177,43 +1142,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1227,43 +1156,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1277,43 +1170,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1327,43 +1184,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1377,43 +1198,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1427,43 +1212,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1477,43 +1226,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1814,43 +1527,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1864,43 +1541,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1914,43 +1555,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -1964,43 +1569,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -2014,43 +1583,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -2064,43 +1597,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -2114,43 +1611,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], @@ -2164,43 +1625,7 @@ "ruleClassName": "_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": { - "24.0.0-darwin_arm64": [ - "node-v24.0.0-darwin-arm64.tar.gz", - "node-v24.0.0-darwin-arm64", - "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121" - ], - "24.0.0-darwin_amd64": [ - "node-v24.0.0-darwin-x64.tar.gz", - "node-v24.0.0-darwin-x64", - "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a" - ], - "24.0.0-linux_arm64": [ - "node-v24.0.0-linux-arm64.tar.xz", - "node-v24.0.0-linux-arm64", - "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040" - ], - "24.0.0-linux_ppc64le": [ - "node-v24.0.0-linux-ppc64le.tar.xz", - "node-v24.0.0-linux-ppc64le", - "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d" - ], - "24.0.0-linux_s390x": [ - "node-v24.0.0-linux-s390x.tar.xz", - "node-v24.0.0-linux-s390x", - "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021" - ], - "24.0.0-linux_amd64": [ - "node-v24.0.0-linux-x64.tar.xz", - "node-v24.0.0-linux-x64", - "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7" - ], - "24.0.0-windows_amd64": [ - "node-v24.0.0-win-x64.zip", - "node-v24.0.0-win-x64", - "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304" - ] - }, + "node_repositories": {}, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], From 02d8149e0cc87c93bad4e549a9fdec6e199c6d69 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 22 Oct 2025 05:05:38 +0000 Subject: [PATCH 1655/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 6 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 6 +- pnpm-lock.yaml | 180 ++++++++++++++-------------- 4 files changed, 100 insertions(+), 94 deletions(-) diff --git a/package.json b/package.json index f66040c3ceb8..a21c1131ada7 100644 --- a/package.json +++ b/package.json @@ -91,8 +91,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.46.1", - "@typescript-eslint/parser": "8.46.1", + "@typescript-eslint/eslint-plugin": "8.46.2", + "@typescript-eslint/parser": "8.46.2", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", @@ -118,7 +118,7 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "karma-source-map-support": "1.4.0", - "listr2": "9.0.4", + "listr2": "9.0.5", "lodash": "^4.17.21", "magic-string": "0.30.19", "prettier": "^3.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index e2e222ae055b..843d193e842f 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": "9.0.4", + "listr2": "9.0.5", "magic-string": "0.30.19", "mrmime": "2.0.1", "parse5-html-rewriting-stream": "8.0.0", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 6cf48fadbb03..06034d7c5f78 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -26,18 +26,18 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.9.0", - "@listr2/prompt-adapter-inquirer": "3.0.4", + "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.20.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.40.1", "ini": "5.0.0", "jsonc-parser": "3.3.1", - "listr2": "9.0.4", + "listr2": "9.0.5", "npm-package-arg": "13.0.1", "pacote": "21.0.3", "parse5-html-rewriting-stream": "8.0.0", - "resolve": "1.22.10", + "resolve": "1.22.11", "semver": "7.7.3", "yargs": "18.0.0", "zod": "3.25.76" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 986ed85741f2..da740eb0bcd4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -161,11 +161,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.46.1 - version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.2 + version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.1 - version: 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.2 + version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -192,7 +192,7 @@ importers: version: 3.1.1(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -242,8 +242,8 @@ importers: specifier: 1.4.0 version: 1.4.0 listr2: - specifier: 9.0.4 - version: 9.0.4 + specifier: 9.0.5 + version: 9.0.5 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -383,8 +383,8 @@ importers: specifier: 3.3.1 version: 3.3.1 listr2: - specifier: 9.0.4 - version: 9.0.4 + specifier: 9.0.5 + version: 9.0.5 magic-string: specifier: 0.30.19 version: 0.30.19 @@ -466,8 +466,8 @@ importers: specifier: 7.9.0 version: 7.9.0(@types/node@24.8.0) '@listr2/prompt-adapter-inquirer': - specifier: 3.0.4 - version: 3.0.4(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.4) + specifier: 3.0.5 + version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.20.1 version: 1.20.1 @@ -487,8 +487,8 @@ importers: specifier: 3.3.1 version: 3.3.1 listr2: - specifier: 9.0.4 - version: 9.0.4 + specifier: 9.0.5 + version: 9.0.5 npm-package-arg: specifier: 13.0.1 version: 13.0.1 @@ -499,8 +499,8 @@ importers: specifier: 8.0.0 version: 8.0.0 resolve: - specifier: 1.22.10 - version: 1.22.10 + specifier: 1.22.11 + version: 1.22.11 semver: specifier: 7.7.3 version: 7.7.3 @@ -2400,12 +2400,12 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@listr2/prompt-adapter-inquirer@3.0.4': - resolution: {integrity: sha512-Dta7PtlCrlZK6UVvlV1Ym3ZHYZ6+7C4mflkI6tOudbl0kh8hoEikSkk6qFQa2tHPprz+8yLHbh5u948HQIOuKg==} + '@listr2/prompt-adapter-inquirer@3.0.5': + resolution: {integrity: sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==} engines: {node: '>=20.0.0'} peerDependencies: '@inquirer/prompts': '>= 3 < 8' - listr2: 9.0.4 + listr2: 9.0.5 '@lmdb/lmdb-darwin-arm64@3.4.3': resolution: {integrity: sha512-zR6Y45VNtW5s+A+4AyhrJk0VJKhXdkLhrySCpCu7PSdnakebsOzNxf58p5Xoq66vOSuueGAxlqDAF49HwdrSTQ==} @@ -3660,39 +3660,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.46.1': - resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==} + '@typescript-eslint/eslint-plugin@8.46.2': + resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.1 + '@typescript-eslint/parser': ^8.46.2 eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/parser@8.46.1': - resolution: {integrity: sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==} + '@typescript-eslint/parser@8.46.2': + resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/project-service@8.46.1': - resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==} + '@typescript-eslint/project-service@8.46.2': + resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/scope-manager@8.46.1': - resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==} + '@typescript-eslint/scope-manager@8.46.2': + resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.1': - resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==} + '@typescript-eslint/tsconfig-utils@8.46.2': + resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.1': - resolution: {integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==} + '@typescript-eslint/type-utils@8.46.2': + resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3702,21 +3702,25 @@ packages: resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.1': - resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==} + '@typescript-eslint/types@8.46.2': + resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.2': + resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/utils@8.46.1': - resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==} + '@typescript-eslint/utils@8.46.2': + resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/visitor-keys@8.46.1': - resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==} + '@typescript-eslint/visitor-keys@8.46.2': + resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.23': @@ -6605,8 +6609,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listr2@9.0.4: - resolution: {integrity: sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ==} + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} lmdb@3.4.3: @@ -7739,8 +7743,8 @@ packages: resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} engines: {node: '>=12'} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -9590,7 +9594,7 @@ snapshots: '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.3(supports-color@10.2.2) lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -11043,11 +11047,11 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.4(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.4)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.5)': dependencies: '@inquirer/prompts': 7.9.0(@types/node@24.8.0) '@inquirer/type': 3.0.9(@types/node@24.8.0) - listr2: 9.0.4 + listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11612,7 +11616,7 @@ snapshots: '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 optionalDependencies: rollup: 4.52.5 @@ -11622,7 +11626,7 @@ snapshots: '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 optionalDependencies: rollup: 4.52.5 @@ -12215,14 +12219,14 @@ snapshots: '@types/node': 22.18.11 optional: true - '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.1 - '@typescript-eslint/type-utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.1 + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 eslint: 9.38.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12232,41 +12236,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.1 - '@typescript-eslint/types': 8.46.1 - '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.1 + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3(supports-color@10.2.2) eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) - '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.1': + '@typescript-eslint/scope-manager@8.46.2': dependencies: - '@typescript-eslint/types': 8.46.1 - '@typescript-eslint/visitor-keys': 8.46.1 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 - '@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.1 - '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.38.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12276,12 +12280,14 @@ snapshots: '@typescript-eslint/types@8.46.1': {} - '@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3)': + '@typescript-eslint/types@8.46.2': {} + + '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) - '@typescript-eslint/types': 8.46.1 - '@typescript-eslint/visitor-keys': 8.46.1 + '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12292,20 +12298,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.1 - '@typescript-eslint/types': 8.46.1 - '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.1': + '@typescript-eslint/visitor-keys@8.46.2': dependencies: - '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/types': 8.46.2 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.23': @@ -14235,15 +14241,15 @@ snapshots: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14253,7 +14259,7 @@ snapshots: dependencies: eslint: 9.38.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14264,7 +14270,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14276,7 +14282,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15924,7 +15930,7 @@ snapshots: lines-and-columns@1.2.4: {} - listr2@9.0.4: + listr2@9.0.5: dependencies: cli-truncate: 5.1.0 colorette: 2.0.20 @@ -17202,7 +17208,7 @@ snapshots: postcss: 8.5.6 source-map: 0.6.1 - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 From 2761d85e4ba27d29669a3a7bf99d918d13536347 Mon Sep 17 00:00:00 2001 From: MeAkib Date: Tue, 21 Oct 2025 21:03:18 +0600 Subject: [PATCH 1656/2162] docs: update missing developer doc link --- CONTRIBUTING.md | 2 +- scripts/templates/contributing.ejs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4dabb694f83e..06db9756c89d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -294,7 +294,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise [coc]: https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md [commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit# [corporate-cla]: https://code.google.com/legal/corporate-cla-v1.0.html -[dev-doc]: https://github.com/angular/angular-cli/blob/main/packages/angular/cli/README.md#development-hints-for-working-on-angular-cli +[dev-doc]: https://github.com/angular/angular-cli/blob/main/docs/DEVELOPER.md [GitHub]: https://github.com/angular/angular-cli [gitter]: https://gitter.im/angular/angular-cli [individual-cla]: https://code.google.com/legal/individual-cla-v1.0.html diff --git a/scripts/templates/contributing.ejs b/scripts/templates/contributing.ejs index 745d6d3500d2..d0eb7a59cee2 100644 --- a/scripts/templates/contributing.ejs +++ b/scripts/templates/contributing.ejs @@ -284,7 +284,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise [coc]: https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md [commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit# [corporate-cla]: https://code.google.com/legal/corporate-cla-v1.0.html -[dev-doc]: https://github.com/angular/angular-cli/blob/main/packages/angular/cli/README.md#development-hints-for-working-on-angular-cli +[dev-doc]: https://github.com/angular/angular-cli/blob/main/docs/DEVELOPER.md [GitHub]: https://github.com/angular/angular-cli [gitter]: https://gitter.im/angular/angular-cli [individual-cla]: https://code.google.com/legal/individual-cla-v1.0.html From 220961ffef91e04551c75774ee2ebd3194a8a067 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:35:42 -0400 Subject: [PATCH 1657/2162] build(@angular/build): update vitest to v4.0.0 This commit updates the version of `vitest` and its related packages from `3.2.4` to `4.0.0` within the unit testing system. This major version update for Vitest introduces several changes that are addressed here: - The `coverage.all` option has been removed in Vitest v4. Accordingly, the `coverageAll` option has been removed from the unit-test builders schema and its usage has been removed from the Karma and Vitest test runner implementations. - The browser provider mechanism has been updated. Vitest now uses provider-specific packages (e.g., @vitest/browser-playwright) instead of the general @vitest/browser package. The browser configuration setup has been made asynchronous and now dynamically loads the appropriate provider. --- goldens/public-api/angular/build/index.api.md | 1 - modules/testing/builder/package.json | 4 +- packages/angular/build/package.json | 4 +- .../build/src/builders/unit-test/options.ts | 1 - .../unit-test/runners/karma/executor.ts | 6 - .../runners/vitest/browser-provider.ts | 62 ++-- .../unit-test/runners/vitest/executor.ts | 3 +- .../unit-test/runners/vitest/index.ts | 1 - .../build/src/builders/unit-test/schema.json | 5 - .../options/code-coverage-exclude_spec.ts | 2 + pnpm-lock.yaml | 329 +++++------------- pnpm-workspace.yaml | 2 + tests/legacy-cli/e2e/utils/vitest.ts | 2 +- 13 files changed, 138 insertions(+), 284 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 0e6a3375d8fb..632618f3e27f 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -219,7 +219,6 @@ export type UnitTestBuilderOptions = { browsers?: string[]; buildTarget?: string; coverage?: boolean; - coverageAll?: boolean; coverageExclude?: string[]; coverageInclude?: string[]; coverageReporters?: SchemaCoverageReporter[]; diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 1196debf4e75..ee6fa056bbfe 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,9 +4,9 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", - "@vitest/coverage-v8": "3.2.4", + "@vitest/coverage-v8": "4.0.0", "jsdom": "27.0.1", "rxjs": "7.8.2", - "vitest": "3.2.4" + "vitest": "4.0.0" } } diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 843d193e842f..26ddc2986faa 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -56,7 +56,7 @@ "ng-packagr": "21.0.0-next.4", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "3.2.4" + "vitest": "4.0.0" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", @@ -74,7 +74,7 @@ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", "tslib": "^2.3.0", "typescript": ">=5.9 <6.0", - "vitest": "^3.1.1" + "vitest": "^4.0.0" }, "peerDependenciesMeta": { "@angular/core": { diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 33792ce89e8f..95e4afb5305c 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -85,7 +85,6 @@ export async function normalizeOptions( runnerName: runner ?? 'vitest', coverage: options.coverage ? { - all: options.coverageAll, exclude: options.coverageExclude, include: options.coverageInclude, reporters: normalizeReporterOption(options.coverageReporters), diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index 2a642cfb0a09..c81f22d0b7d1 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -39,12 +39,6 @@ export class KarmaExecutor implements TestExecutor { ); } - if (unitTestOptions.coverage?.all) { - context.logger.warn( - 'The "karma" test runner does not support the "coverageAll" option. The option will be ignored.', - ); - } - if (unitTestOptions.coverage?.include) { context.logger.warn( 'The "karma" test runner does not support the "coverageInclude" option. The option will be ignored.', diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index 299a9731513d..23ed9b9a23e8 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -8,6 +8,7 @@ import { createRequire } from 'node:module'; import type { BrowserBuiltinProvider, BrowserConfigOptions } from 'vitest/node'; +import { assertIsError } from '../../../../utils/error'; export interface BrowserConfiguration { browser?: BrowserConfigOptions; @@ -40,12 +41,12 @@ function normalizeBrowserName(browserName: string): string { return normalized.replace(/headless$/, ''); } -export function setupBrowserConfiguration( +export async function setupBrowserConfiguration( browsers: string[] | undefined, debug: boolean, projectSourceRoot: string, viewport: { width: number; height: number } | undefined, -): BrowserConfiguration { +): Promise { if (browsers === undefined) { return {}; } @@ -53,18 +54,8 @@ export function setupBrowserConfiguration( const projectResolver = createRequire(projectSourceRoot + '/').resolve; let errors: string[] | undefined; - try { - projectResolver('@vitest/browser'); - } catch { - errors ??= []; - errors.push( - 'The "browsers" option requires the "@vitest/browser" package to be installed within the project.' + - ' Please install this package and rerun the test command.', - ); - } - - const provider = findBrowserProvider(projectResolver); - if (!provider) { + const providerName = findBrowserProvider(projectResolver); + if (!providerName) { errors ??= []; errors.push( 'The "browsers" option requires either "playwright" or "webdriverio" to be installed within the project.' + @@ -72,13 +63,38 @@ export function setupBrowserConfiguration( ); } - // Vitest current requires the playwright browser provider to use the inspect-brk option used by "debug" - if (debug && provider !== 'playwright') { - errors ??= []; - errors.push( - 'Debugging browser mode tests currently requires the use of "playwright".' + - ' Please install this package and rerun the test command.', - ); + let provider: import('vitest/node').BrowserProviderOption | undefined; + if (providerName) { + const providerPackage = `@vitest/browser-${providerName}`; + try { + const providerModule = await import(providerPackage); + + // Validate that the imported module has the expected structure + const providerFactory = providerModule[providerName]; + if (typeof providerFactory === 'function') { + provider = providerFactory(); + } else { + errors ??= []; + errors.push( + `The "${providerPackage}" package does not have a valid browser provider export.`, + ); + } + } catch (e) { + assertIsError(e); + errors ??= []; + // Check for a module not found error to provide a more specific message + if (e.code === 'ERR_MODULE_NOT_FOUND') { + errors.push( + `The "browsers" option with "${providerName}" requires the "${providerPackage}" package.` + + ' Please install this package and rerun the test command.', + ); + } else { + // Handle other potential errors during import + errors.push( + `An error occurred while loading the "${providerPackage}" browser provider:\n ${e.message}`, + ); + } + } } if (errors) { @@ -88,7 +104,7 @@ export function setupBrowserConfiguration( const isCI = !!process.env['CI']; const headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless')); - const browser: BrowserConfigOptions = { + const browser = { enabled: true, provider, headless, @@ -97,7 +113,7 @@ export function setupBrowserConfiguration( instances: browsers.map((browserName) => ({ browser: normalizeBrowserName(browserName), })), - }; + } satisfies BrowserConfigOptions; return { browser }; } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 077245d6d01c..e665c54290df 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -153,7 +153,7 @@ export class VitestExecutor implements TestExecutor { const { startVitest } = vitestNodeModule; // Setup vitest browser options if configured - const browserOptions = setupBrowserConfiguration( + const browserOptions = await setupBrowserConfiguration( browsers, debug, this.options.projectSourceRoot, @@ -236,7 +236,6 @@ async function generateCoverageOption( return { enabled: true, - all: coverage.all, excludeAfterRemap: true, include: coverage.include, reportsDirectory: toPosixPath(path.join('coverage', projectName)), diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index 564334ade78f..2b76c5fd7456 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -23,7 +23,6 @@ const VitestTestRunner: TestRunner = { checker.check('vitest'); if (options.browsers?.length) { - checker.check('@vitest/browser'); checker.checkAny( ['playwright', 'webdriverio'], 'The "browsers" option requires either "playwright" or "webdriverio" to be installed.', diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 1cce0bf34e53..d3ae766d05b6 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -65,11 +65,6 @@ "description": "Enables coverage reporting for tests.", "default": false }, - "coverageAll": { - "type": "boolean", - "description": "Includes all files that match the `coverageInclude` pattern in the coverage report, not just those touched by tests.", - "default": true - }, "coverageInclude": { "type": "array", "description": "Specifies glob patterns of files to include in the coverage report.", diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts index 57766a125fba..b92e709d2f12 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-exclude_spec.ts @@ -27,6 +27,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { harness.useTarget('test', { ...BASE_OPTIONS, coverage: true, + coverageInclude: ['**/*.ts'], }); const { result } = await harness.executeOnce(); @@ -39,6 +40,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { harness.useTarget('test', { ...BASE_OPTIONS, coverage: true, + coverageInclude: ['**/*.ts'], coverageExclude: ['**/error.ts'], }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da740eb0bcd4..221fccd55788 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,13 +39,13 @@ importers: version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': specifier: 21.0.0-next.8 version: 21.0.0-next.8(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(@angular/compiler@21.0.0-next.8) '@angular/material': specifier: 21.0.0-next.9 - version: 21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff) + version: 21.0.0-next.9(6f23a1b329efda2aacf6ed746ef2e06b) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#53dcff1a283d75255b9950472c37a571cc35ee28 version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.1) @@ -329,8 +329,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.0 + version: 4.0.0(vitest@4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -338,8 +338,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.0 + version: 4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -444,8 +444,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 3.2.4 - version: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.0 + version: 4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -3341,6 +3341,9 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@stylistic/eslint-plugin@5.5.0': resolution: {integrity: sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3808,43 +3811,43 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.0.0': + resolution: {integrity: sha512-VyVmZ8TccaGCZT9C0/vIi3kbPmvD/rLUcRx1AC8QzqaCm9SLYr1p3rxirW3EuwEGWnVU7KjGckAwJR1SRtgurA==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.0.0 + vitest: 4.0.0 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.0.0': + resolution: {integrity: sha512-NLwsOv2m6RfTEMk5AhpFIUVbd5BDmZnev5XxIIwJiNsXFOetFdqMzil/paGpwwbfQyaeQCokB1rQbKsnvLeR/w==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.0.0': + resolution: {integrity: sha512-s5S729mda0Umb60zbZeyYm58dpv97VNOXZ1bLSZ9AfaOE8TJoW4IDfEnw3IaCk9nq/Hug80hFmAz5NAh+XOImQ==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.0.0': + resolution: {integrity: sha512-oUjxwO6VcUP0VtCkJERILS2yKV4AZiE1VTWDjvjeb8pXG6P5iubyeP+cmcj2vzCPdUst8vNhXMqC1CnxvDN97Q==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.0.0': + resolution: {integrity: sha512-w3kADT0nDmY4dQyfPtq7zEe6wbwDy88Go2b7NpWuj0iqA1H26CTS/JB2/t8tKbvxk7MTJ9vTsRK/VMVuKmLPaQ==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.0.0': + resolution: {integrity: sha512-ELrK8qhbH3WdhD/2qh3NnR7xnaxOGx62NYLj5XKAGPIABOc+1ITN1XfH/MTgdP6Ov7O91DycuGrzwpizdCpuHg==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.0.0': + resolution: {integrity: sha512-VKD9p74W9ALFV2dSy3j8WtitY3gtloO+U6EZq84TY5gTaTTt1Lvs9nZnuaBomzEHYp/QbtGRMMKBOCsir2IAgA==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.0.0': + resolution: {integrity: sha512-8OXfn18Y7UtcpqhiQAfxcmZIsemPPKcg/guU2CLvafXn50G6B2EvKuj3A5h7ZMAvm95tDkll13rTtdd08MKjLQ==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -4165,10 +4168,6 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -4424,10 +4423,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - cacache@19.0.1: resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -4478,8 +4473,8 @@ packages: caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.0: + resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} engines: {node: '>=18'} chalk-template@0.4.0: @@ -4501,10 +4496,6 @@ packages: chardet@2.1.0: resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - checkpoint-stream@0.1.2: resolution: {integrity: sha512-eYXIcydL3mPjjEVLxHdi1ISgTwmxGJZ8vyJ3lYVvFTDRyTOZMTbKZdRJqiA7Gi1rPcwOyyzcrZmGLL8ff7e69w==} @@ -4905,10 +4896,6 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} @@ -6698,9 +6685,6 @@ packages: long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lowdb@1.0.0: resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} engines: {node: '>=4'} @@ -7361,10 +7345,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} @@ -7600,7 +7580,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: @@ -8278,9 +8257,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - stubs@3.0.0: resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} @@ -8357,10 +8333,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -8398,16 +8370,8 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} tldts-core@6.1.86: @@ -8746,51 +8710,6 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite@7.1.10: - resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.1.11: resolution: {integrity: sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8831,16 +8750,18 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.0.0: + resolution: {integrity: sha512-Z+qKuTt2py+trSv2eJNYPaQKos88EmmLntXLAJkOHdd1v3BdcS4DgIkyC6cQPRoh8tWb+QiFfW08U347mjcV0g==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.0 + '@vitest/browser-preview': 4.0.0 + '@vitest/browser-webdriverio': 4.0.0 + '@vitest/ui': 4.0.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8850,7 +8771,11 @@ packages: optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -9379,11 +9304,12 @@ snapshots: '@angular/compiler': 21.0.0-next.8 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 @@ -9398,12 +9324,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.9(c69a61879a2817579aa26a9c3289bbff)': + '@angular/material@21.0.0-next.9(6f23a1b329efda2aacf6ed746ef2e06b)': dependencies: '@angular/cdk': 21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/forms': 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 @@ -11830,6 +11756,8 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} + '@standard-schema/spec@1.0.0': {} + '@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) @@ -12478,66 +12406,61 @@ snapshots: dependencies: vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.0(vitest@4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.0.0 ast-v8-to-istanbul: 0.3.7 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.19 magicast: 0.3.5 std-env: 3.10.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + tinyrainbow: 3.0.3 + vitest: 4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@3.2.4': + '@vitest/expect@4.0.0': dependencies: + '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.0.0 + '@vitest/utils': 4.0.0 + chai: 6.2.0 + tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.0.0 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.0.0': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.0.3 - '@vitest/runner@3.2.4': + '@vitest/runner@4.0.0': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.0.0 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.0.0': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.0.0 magic-string: 0.30.19 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.0.0': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.0.0': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.0.0 + tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': dependencies: @@ -13008,8 +12931,6 @@ snapshots: assert-plus@1.0.0: {} - assertion-error@2.0.1: {} - ast-types@0.13.4: dependencies: tslib: 2.8.1 @@ -13331,8 +13252,6 @@ snapshots: bytes@3.1.2: {} - cac@6.7.14: {} - cacache@19.0.1: dependencies: '@npmcli/fs': 4.0.0 @@ -13406,13 +13325,7 @@ snapshots: caseless@0.12.0: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.0: {} chalk-template@0.4.0: dependencies: @@ -13435,8 +13348,6 @@ snapshots: chardet@2.1.0: {} - check-error@2.1.1: {} - checkpoint-stream@0.1.2: dependencies: '@types/pumpify': 1.4.4 @@ -13838,8 +13749,6 @@ snapshots: dependencies: mimic-response: 3.1.0 - deep-eql@5.0.2: {} - deep-equal@1.0.1: {} deep-is@0.1.4: {} @@ -16036,8 +15945,6 @@ snapshots: long@5.3.2: {} - loupe@3.2.1: {} - lowdb@1.0.0: dependencies: graceful-fs: 4.2.11 @@ -16729,8 +16636,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 @@ -17948,10 +17853,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.1.0: - dependencies: - js-tokens: 9.0.1 - stubs@3.0.0: {} supports-color@10.2.2: {} @@ -18048,12 +17949,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - text-decoder@1.2.3: dependencies: b4a: 1.7.3 @@ -18092,11 +17987,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.4: {} + tinyrainbow@3.0.3: {} tldts-core@6.1.86: {} @@ -18468,45 +18359,6 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite-node@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - cac: 6.7.14 - debug: 4.4.3(supports-color@10.2.2) - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.4 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.8.0 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.93.2 - terser: 5.44.0 - tsx: 4.20.6 - yaml: 2.8.1 - vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 @@ -18525,18 +18377,17 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 + '@vitest/expect': 4.0.0 + '@vitest/mocker': 4.0.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.0 + '@vitest/runner': 4.0.0 + '@vitest/snapshot': 4.0.0 + '@vitest/spy': 4.0.0 + '@vitest/utils': 4.0.0 debug: 4.4.3(supports-color@10.2.2) + es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.19 pathe: 2.0.3 @@ -18545,10 +18396,8 @@ snapshots: tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + tinyrainbow: 3.0.3 + vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.8.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d1752e85bda6..6c4a8f21d754 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -26,3 +26,5 @@ minimumReleaseAgeExclude: - '@ngtools/webpack' - '@schematics/*' - 'ng-packagr' + - 'vitest' # temporary to support v21 + - '@vitest/*' # temporary to support v21 diff --git a/tests/legacy-cli/e2e/utils/vitest.ts b/tests/legacy-cli/e2e/utils/vitest.ts index ca856243592a..a16d7fca3cee 100644 --- a/tests/legacy-cli/e2e/utils/vitest.ts +++ b/tests/legacy-cli/e2e/utils/vitest.ts @@ -3,7 +3,7 @@ import { updateJsonFile } from './project'; /** Updates the `test` builder in the current workspace to use Vitest. */ export async function applyVitestBuilder(): Promise { - await silentNpm('install', 'vitest@3.2.4', 'jsdom@26.1.0', '--save-dev'); + await silentNpm('install', 'vitest@4.0.0', 'jsdom@27.0.0', '--save-dev'); await updateJsonFile('angular.json', (json) => { const projects = Object.values(json['projects']); From b524ba42625cd690177a300ca4843ef4edce035f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Oct 2025 11:34:45 -0400 Subject: [PATCH 1658/2162] fix(@schematics/angular): remove empty i18n-extract target for new projects The Angular CLI will default to using the correct builder for i18n extraction if the target definition is not present in a project. This allows for a reduced amount of preset configuration for new projects. The `i18n-extract` is only needed when using the `@angular/localize` project and can be added when it is used. Most options for the target are also command line oriented which makes the target definition unused in many cases. --- packages/schematics/angular/application/index.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 1a446e1df73f..38d1f8b0ffd3 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -327,9 +327,6 @@ function addAppToWorkspaceFile(options: ApplicationOptions, appDir: string): Rul }, }, }, - 'extract-i18n': { - builder: Builders.BuildExtractI18n, - }, test: options.minimal ? undefined : { From a660d69e6a5c42887ebca3522fd5e422dc863300 Mon Sep 17 00:00:00 2001 From: MeAkib Date: Wed, 22 Oct 2025 00:49:50 +0600 Subject: [PATCH 1659/2162] refactor(@schematics/angular): add trailing commas and remove leading commas in component template Added trailing commas to all component metadata properties in the schematic template to ensure cleaner diffs and consistent formatting. Removed unnecessary leading commas from conditional blocks since each property now ends with a trailing comma. --- ...__name@dasherize__.__type@dasherize__.ts.template | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template b/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template index c914d8a06628..dcea9394edb8 100644 --- a/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +++ b/packages/schematics/angular/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template @@ -8,16 +8,16 @@ import { <% if(changeDetection !== 'Default') { %>ChangeDetectionStrategy, <% }%

<%= dasherize(name) %> works!

- `<% } else { %> - templateUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %><%= ngext %>.html'<% } if(inlineStyle) { %>, + `,<% } else { %> + templateUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %><%= ngext %>.html',<% } if(inlineStyle) { %> styles: `<% if(displayBlock){ %> :host { display: block; } - <% } %>`<% } else if (style !== 'none') { %>, - styleUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>.<%= style %>'<% } %><% if(!!viewEncapsulation) { %>, - encapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } if (changeDetection !== 'Default') { %>, - changeDetection: ChangeDetectionStrategy.<%= changeDetection %><% } %> + <% } %>`,<% } else if (style !== 'none') { %> + styleUrl: './<%= dasherize(name) %><%= type ? '.' + dasherize(type): '' %>.<%= style %>',<% } %><% if(!!viewEncapsulation) { %> + encapsulation: ViewEncapsulation.<%= viewEncapsulation %>,<% } if (changeDetection !== 'Default') { %> + changeDetection: ChangeDetectionStrategy.<%= changeDetection %>,<% } %> }) export <% if(exportDefault) {%>default <%}%>class <%= classifiedName %> { From 78507f4b10fe466de3feca44d99a482c36dae6c2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:18:46 -0400 Subject: [PATCH 1660/2162] docs: release notes for the v20.3.7 release --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1d614162b6a..eb4aff1174eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,29 @@ + + +# 20.3.7 (2025-10-22) + +### @angular-devkit/schematics + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | +| [a31533cf4](https://github.com/angular/angular-cli/commit/a31533cf492048f62a41b9c09e53779269ee172d) | fix | respect `--force` option when schematic contains `host.create` | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | +| [8cdda111c](https://github.com/angular/angular-cli/commit/8cdda111cc0b343aa5eb6a7ccbad93302a543226) | fix | resolve Angular locale data namespace in esbuild | +| [5847ccc54](https://github.com/angular/angular-cli/commit/5847ccc545e54eb77a78b2435db7970faf748156) | fix | update `vite` to `7.11.1` | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | +| [3a28fb6a1](https://github.com/angular/angular-cli/commit/3a28fb6a13061215b881c49232db979fc3c2f641) | fix | correctly handle routes with matrix parameters | +| [5db6d6487](https://github.com/angular/angular-cli/commit/5db6d64870c7ce0b883722a07c828946b7d2217d) | fix | ensure server-side navigation triggers a redirect | + + + # 21.0.0-next.8 (2025-10-15) From 512ad282aecbfdf1e5c9e9700cc722addb949b68 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Oct 2025 16:20:38 -0400 Subject: [PATCH 1661/2162] fix(@schematics/angular): preserve blank lines in jasmine-to-vitest schematic The TypeScript printer, by design, does not retain blank lines. This caused the jasmine-to-vitest refactoring schematic to produce code that lost the original file's vertical spacing, harming readability. This commit introduces a pre- and post-processing step within the main transformation function. Before parsing, blank lines are converted into unique placeholder comments. After the TypeScript printer generates the new code, these placeholders are converted back into blank lines, ensuring that the vertical formatting of the original file is preserved in the transformed output. --- .../test-file-transformer.integration_spec.ts | 4 +--- .../jasmine-vitest/test-file-transformer.ts | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index a440eadbbf48..60e2675b7572 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -16,9 +16,7 @@ async function expectTransformation(input: string, expected: string): Promise (line.trim() === '' ? BLANK_LINE_PLACEHOLDER : line)) + .join('\n'); +} + +function restoreBlankLines(content: string): string { + const regex = new RegExp(`^\\s*${BLANK_LINE_PLACEHOLDER.replace(/\//g, '\\/')}\\s*$`, 'gm'); + + return content.replace(regex, ''); +} + /** * Transforms a string of Jasmine test code to Vitest test code. * This is the main entry point for the transformation. @@ -53,9 +68,11 @@ export function transformJasmineToVitest( content: string, reporter: RefactorReporter, ): string { + const contentWithPlaceholders = preserveBlankLines(content); + const sourceFile = ts.createSourceFile( filePath, - content, + contentWithPlaceholders, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS, @@ -151,6 +168,7 @@ export function transformJasmineToVitest( } const printer = ts.createPrinter(); + const transformedContentWithPlaceholders = printer.printFile(result.transformed[0]); - return printer.printFile(result.transformed[0]); + return restoreBlankLines(transformedContentWithPlaceholders); } From 0ae9c9977ea8811828d6e34bcde10cd7ed1ad2b2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 22 Oct 2025 22:34:23 +0000 Subject: [PATCH 1662/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 +- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 564 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 375 insertions(+), 379 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 395e48eddb2a..a9733b11fe7b 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + - uses: angular/dev-infra/github-actions/branch-manager@43d4ea5534ce399657a64c94a9dc1ea883324804 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b86fb5873cc9..6f587d49b2ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 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@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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 4727b8d95fc3..200a6b3fd5e7 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + - uses: angular/dev-infra/github-actions/pull-request-labeling@43d4ea5534ce399657a64c94a9dc1ea883324804 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + - uses: angular/dev-infra/github-actions/post-approval-changes@43d4ea5534ce399657a64c94a9dc1ea883324804 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 342bc1d3298f..83f9811ddb54 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@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + - uses: angular/dev-infra/github-actions/feature-request@43d4ea5534ce399657a64c94a9dc1ea883324804 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 4dd2e5fce38b..2369ff222080 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@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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 94384f08a41f..8c585db5bd2d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/linting/licenses@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a613c67d98163635746ce32a72fb9aa4f1e9c6cc + uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 - 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/MODULE.bazel b/MODULE.bazel index e0f1b287ac59..39274eda4d20 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "a613c67d98163635746ce32a72fb9aa4f1e9c6cc", + commit = "43d4ea5534ce399657a64c94a9dc1ea883324804", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 000e114aefb8..2891653c85a8 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1118,7 +1118,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "71PwVsMlLx+RWdt1SI9nSqRHX7DX/NstWwr7/XBxEMs=", - "usagesDigest": "GeYuTJ/owkgZEwBsWFkG3fyoxWVGCRdGtiR5b4jNj3s=", + "usagesDigest": "UMPJAxKFUmrhUd/xrzHapBiQuXI2tFY2p5YhjbyQDHY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index a21c1131ada7..f6b2ccbd0613 100644 --- a/package.json +++ b/package.json @@ -44,20 +44,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-next.8", - "@angular/cdk": "21.0.0-next.9", - "@angular/common": "21.0.0-next.8", - "@angular/compiler": "21.0.0-next.8", - "@angular/compiler-cli": "21.0.0-next.8", - "@angular/core": "21.0.0-next.8", - "@angular/forms": "21.0.0-next.8", - "@angular/localize": "21.0.0-next.8", - "@angular/material": "21.0.0-next.9", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#53dcff1a283d75255b9950472c37a571cc35ee28", - "@angular/platform-browser": "21.0.0-next.8", - "@angular/platform-server": "21.0.0-next.8", - "@angular/router": "21.0.0-next.8", - "@angular/service-worker": "21.0.0-next.8", + "@angular/animations": "21.0.0-next.9", + "@angular/cdk": "21.0.0-next.10", + "@angular/common": "21.0.0-next.9", + "@angular/compiler": "21.0.0-next.9", + "@angular/compiler-cli": "21.0.0-next.9", + "@angular/core": "21.0.0-next.9", + "@angular/forms": "21.0.0-next.9", + "@angular/localize": "21.0.0-next.9", + "@angular/material": "21.0.0-next.10", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a3426d37e6f9781b00650a767eb5b3967cdb94f7", + "@angular/platform-browser": "21.0.0-next.9", + "@angular/platform-server": "21.0.0-next.9", + "@angular/router": "21.0.0-next.9", + "@angular/service-worker": "21.0.0-next.9", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index c8324b02c790..76b70f54ad5c 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-next.8", - "@angular/compiler": "21.0.0-next.8", - "@angular/core": "21.0.0-next.8", - "@angular/platform-browser": "21.0.0-next.8", - "@angular/platform-server": "21.0.0-next.8", - "@angular/router": "21.0.0-next.8", + "@angular/common": "21.0.0-next.9", + "@angular/compiler": "21.0.0-next.9", + "@angular/core": "21.0.0-next.9", + "@angular/platform-browser": "21.0.0-next.9", + "@angular/platform-server": "21.0.0-next.9", + "@angular/router": "21.0.0-next.9", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 74d2e3e4f76a..438231fed1a6 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": "21.0.0-next.8", - "@angular/compiler-cli": "21.0.0-next.8", + "@angular/compiler": "21.0.0-next.9", + "@angular/compiler-cli": "21.0.0-next.9", "typescript": "5.9.3", "webpack": "5.102.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 221fccd55788..37c81c01a62b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/cdk': specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': + specifier: 21.0.0-next.10 + version: 21.0.0-next.10(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8 + specifier: 21.0.0-next.9 + version: 21.0.0-next.9 '@angular/compiler-cli': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(@angular/compiler@21.0.0-next.8) - '@angular/material': specifier: 21.0.0-next.9 - version: 21.0.0-next.9(6f23a1b329efda2aacf6ed746ef2e06b) + version: 21.0.0-next.9(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(@angular/compiler@21.0.0-next.9) + '@angular/material': + specifier: 21.0.0-next.10 + version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#53dcff1a283d75255b9950472c37a571cc35ee28 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a3426d37e6f9781b00650a767eb5b3967cdb94f7 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a3426d37e6f9781b00650a767eb5b3967cdb94f7(@modelcontextprotocol/sdk@1.20.1) '@angular/platform-browser': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.8)(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.9)(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -330,7 +330,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.0 - version: 4.0.0(vitest@4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.0(vitest@4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -339,7 +339,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.0 - version: 4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -360,10 +360,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.19 - version: 5.1.19(@types/node@24.8.0) + version: 5.1.19(@types/node@24.9.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -417,7 +417,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.11 - version: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -436,7 +436,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -445,7 +445,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.0 - version: 4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -464,10 +464,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.8.0) + version: 7.9.0(@types/node@24.9.1) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.1))(@types/node@24.9.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.20.1 version: 1.20.1 @@ -533,23 +533,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8 + specifier: 21.0.0-next.9 + version: 21.0.0-next.9 '@angular/core': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.8)(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.9)(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -764,7 +764,7 @@ importers: version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -848,7 +848,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.8.0) + version: 7.9.0(@types/node@24.9.1) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -862,11 +862,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8 + specifier: 21.0.0-next.9 + version: 21.0.0-next.9 '@angular/compiler-cli': - specifier: 21.0.0-next.8 - version: 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) + specifier: 21.0.0-next.9 + version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -972,46 +972,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-next.8': - resolution: {integrity: sha512-ECHH4pwsD/EqDPd+xrG7psLyTG4MhRBhqnmYpLmGIudBM3fIOFXOnlYRRGQhu/hb+mEKxfev5yFvsyYRpFoXKQ==} + '@angular/animations@21.0.0-next.9': + resolution: {integrity: sha512-tvZ3vajgMXBUqej90sKg4NG6EqvpSYlsZcdfJLn8GtIZRvVyo5FhFXPj8O6ybKfIemmcxpACjKikpMRRx50C4A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.8 + '@angular/core': 21.0.0-next.9 - '@angular/cdk@21.0.0-next.9': - resolution: {integrity: sha512-anQ2gbggsj0b5PODlAanidwA5tQmZ0U7bgl9NGFilDiE/1y/8PUVvqssyttftLhroDb5RYvaN3Wt7XcyQbprkA==} + '@angular/cdk@21.0.0-next.10': + resolution: {integrity: sha512-2TrKv6q92eWHx+pB0WcignKqBnW6dY+1lFA1Nh0Dg6Al+/ZWhPP89dQUZylWlRQqKlolClJulRfE5PQXidlOIA==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-next.8': - resolution: {integrity: sha512-x9sh/uhFVFrrOwVC+FC7gufkZxs1IPOCIx5lps6mqykQ30ihZ6vQLfJqY+XJ/N1y73o50qCAVK3IpzLNBWkgMQ==} + '@angular/common@21.0.0-next.9': + resolution: {integrity: sha512-0mXLVCbJxc9WJZJDU1Qf6o5lLORNC4SZuZp1u9cqE/JKCFK4Pt1uu7WFdnPxgu+jN9JiHc4EQJqiINz7nraQ8A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.8 + '@angular/core': 21.0.0-next.9 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-next.8': - resolution: {integrity: sha512-o1B9/B7jM2GuDrfUw1UzkJpMCZ8ycpUi2DrcHtIiOZtqBbnfodASNLmzGaW8uEbNeB0h7PdYXxdFMvVYpWQv8g==} + '@angular/compiler-cli@21.0.0-next.9': + resolution: {integrity: sha512-OFczNXCZK3PhlX8QI9YuoAYfz0/qKgmCzy2g/Za+Qf5HyTFHxyB0itAdC+vzUmzyP3vvxjLhXsYfdvC6jEe0Cg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.8 + '@angular/compiler': 21.0.0-next.9 typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-next.8': - resolution: {integrity: sha512-5Fkzhs5zpCy2IhIK0Osw3RyRqlrwUdcJNGJ/UbkUJuEE4VBEFXbd1evZa/mf5YIQFNhK0WW2zY3zMABTtGMweg==} + '@angular/compiler@21.0.0-next.9': + resolution: {integrity: sha512-C+qkZvukOIhtXzb6ownhaWaryJGfVu0/JO6xswCY59wgT5EN7kR7rB+VjSIbtEvn0us0i248/5Y3Wf6xX5VF1A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-next.8': - resolution: {integrity: sha512-+omCS1MesfEPVuebs/wUWj6f5xeiRQWjLe70lpbuRPdEgmgOzPOgZKG8828yhPqU1XqJEUjjghfiAIdM6+tYhw==} + '@angular/core@21.0.0-next.9': + resolution: {integrity: sha512-2fcMVzV7o0vavbF/6YyjMyj27pnYdBA+/r/buaDnrBHRYgq0kKO6tdwnCJR9hX36Tm0pHS7+LY/VVqVJEJGKFQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-next.8 + '@angular/compiler': 21.0.0-next.9 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1020,75 +1020,75 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-next.8': - resolution: {integrity: sha512-Xsdyd3/76phasRu6xs79llRai4kioh/AJsD2WpZ1c9pWh4hFoYcmfTDYle0KmKPZs2+HJPUmQ6DjS152LD21OA==} + '@angular/forms@21.0.0-next.9': + resolution: {integrity: sha512-YAJj/KDMPzsTb2qHgak/OfaSr04WvAo6ddcTrUUqPd4KNIz2mhFncm6olytjgdwBNUB9DGKya/UGqcaZ0XQQPg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.8 - '@angular/core': 21.0.0-next.8 - '@angular/platform-browser': 21.0.0-next.8 + '@angular/common': 21.0.0-next.9 + '@angular/core': 21.0.0-next.9 + '@angular/platform-browser': 21.0.0-next.9 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-next.8': - resolution: {integrity: sha512-fIIjunzHQSPy9yka7VWo4RnnMM/A/vQsD/zylykG4EPr4PZpuKXKd6LmEX1DBRNOUa9N1cmkrH00zkCKfy81eQ==} + '@angular/localize@21.0.0-next.9': + resolution: {integrity: sha512-WXQ/JI6/k6OMwf8FJ2Hj2kbsa6aIoDMB3rxiDzsQBP9vYOwN5B/i8dHWU26JPcKHVHg/mjm2+DBbzWU1d4TvHw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.8 - '@angular/compiler-cli': 21.0.0-next.8 + '@angular/compiler': 21.0.0-next.9 + '@angular/compiler-cli': 21.0.0-next.9 - '@angular/material@21.0.0-next.9': - resolution: {integrity: sha512-lHgK+Kl8NGwikADkU359MNZ7UwDXUt7BiNCUknb28+b8I/eUZkFhrpW4F2zJn/43A4Fg+rXvDIS6rQhbnqVBiw==} + '@angular/material@21.0.0-next.10': + resolution: {integrity: sha512-oh3SA4b4SLqBpPEWYO00LOSQKUSrSM96ladmr2O7bOpHk4VfRJBaSiX3Tkr/K1bsNrg88LZp3lBYtMN7soIxoQ==} peerDependencies: - '@angular/cdk': 21.0.0-next.9 + '@angular/cdk': 21.0.0-next.10 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/53dcff1a283d75255b9950472c37a571cc35ee28': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28} - version: 0.0.0-a613c67d98163635746ce32a72fb9aa4f1e9c6cc + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a3426d37e6f9781b00650a767eb5b3967cdb94f7': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a3426d37e6f9781b00650a767eb5b3967cdb94f7} + version: 0.0.0-43d4ea5534ce399657a64c94a9dc1ea883324804 hasBin: true - '@angular/platform-browser@21.0.0-next.8': - resolution: {integrity: sha512-nOdVbkHDGpi0pNTFd/uhyBXX/z1zzq72p3m7G3yoCME3e/soekJMK5E0yRlliL7bK2yA3gH8UjOuh1hXsExMQg==} + '@angular/platform-browser@21.0.0-next.9': + resolution: {integrity: sha512-kWVbVRQqyX75grB9EfS9P4UbXSNg7vga7zPd5r67J9hj3Wg0y4Y+iIFdLavPp3uFHqPj/nI/hIgYCzKNjVp+Zg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-next.8 - '@angular/common': 21.0.0-next.8 - '@angular/core': 21.0.0-next.8 + '@angular/animations': 21.0.0-next.9 + '@angular/common': 21.0.0-next.9 + '@angular/core': 21.0.0-next.9 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-next.8': - resolution: {integrity: sha512-Yfc4GtHh+w9LKJccI5Quo5NSnxodyZ4yy/CwcAkF3WrWbvxjjGel1Fv3U2ZU6JzDkLtkeTk7tibs9CZghdG9qQ==} + '@angular/platform-server@21.0.0-next.9': + resolution: {integrity: sha512-Nwks5bIIZMI1bn5ya8Z3QBE8MhRYsLgw+Z9njY7qZLHxQLpFxcgGsnkBa9V2WSgm8CMiwKunGOzht25zXDj6Ww==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.8 - '@angular/compiler': 21.0.0-next.8 - '@angular/core': 21.0.0-next.8 - '@angular/platform-browser': 21.0.0-next.8 + '@angular/common': 21.0.0-next.9 + '@angular/compiler': 21.0.0-next.9 + '@angular/core': 21.0.0-next.9 + '@angular/platform-browser': 21.0.0-next.9 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-next.8': - resolution: {integrity: sha512-1tqI7+jy1JtCXUdRkemDSAFttUZkYn8ZmAHvDJLVQIz1hlkDUYNu/482J6HbOBVvnsKFO/gTdc43Z5pUKzj9eQ==} + '@angular/router@21.0.0-next.9': + resolution: {integrity: sha512-1WnTT4f1b8Otfq66az1a/3JXOcZmL6/akKLDJENQ0TxYnKfphQ5k7n69q/ZuSrXCSN46jnLRxfyuN5/seJPz0g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.8 - '@angular/core': 21.0.0-next.8 - '@angular/platform-browser': 21.0.0-next.8 + '@angular/common': 21.0.0-next.9 + '@angular/core': 21.0.0-next.9 + '@angular/platform-browser': 21.0.0-next.9 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-next.8': - resolution: {integrity: sha512-RheiuwCOq7SBaoks/9HhMQgPxxtSvlW44Cw07POcRlL/rGpjWqCR7L4IL8x1RPXrK8pBwJcGcI9gNuszc8DvJg==} + '@angular/service-worker@21.0.0-next.9': + resolution: {integrity: sha512-7hvj4f4NyxD42hEMj8qBILvto2jL61EJ4aVegEHtQ1GP2rpuIJta6JqRAaPyWiFgTJJxc/FEI7u/aLLRIsA6PQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-next.8 + '@angular/core': 21.0.0-next.9 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -2695,8 +2695,8 @@ packages: '@octokit/openapi-types@26.0.0': resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} - '@octokit/plugin-paginate-rest@13.2.0': - resolution: {integrity: sha512-YuAlyjR8o5QoRSOvMHxSJzPtogkNMgeMv2mpccrvdUGeC3MKyfi/hS+KiFwyH/iRKIKyx+eIMsDjbt3p9r2GYA==} + '@octokit/plugin-paginate-rest@13.2.1': + resolution: {integrity: sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' @@ -2707,8 +2707,8 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@16.1.0': - resolution: {integrity: sha512-nCsyiKoGRnhH5LkH8hJEZb9swpqOcsW+VXv1QoyUNQXJeVODG4+xM6UICEqyqe9XFr6LkL8BIiFCPev8zMDXPw==} + '@octokit/plugin-rest-endpoint-methods@16.1.1': + resolution: {integrity: sha512-VztDkhM0ketQYSh5Im3IcKWFZl7VIrrsCaHbDINkdYeiiAsJzjhS2xRFCSJgfN6VOcsoW4laMtsmf3HcNqIimg==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' @@ -2725,8 +2725,8 @@ packages: resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} engines: {node: '>= 20'} - '@octokit/types@15.0.0': - resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==} + '@octokit/types@15.0.1': + resolution: {integrity: sha512-sdiirM93IYJ9ODDCBgmRPIboLbSkpLa5i+WLuXH8b8Atg+YMLAyLvDDhNWLV4OYd08tlvYfVm/dw88cqHWtw1Q==} '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -2860,16 +2860,16 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.2': - resolution: {integrity: sha512-fih99/lY+HRRak0U0KMKAO7+nacilWMcvFTH6YDKzjCBTOhxDr6Eeap2mF7uf4ED4dnKsQVNUGmFpvaSXSuFCQ==} + '@pnpm/dependency-path@1001.1.3': + resolution: {integrity: sha512-ScPXDrlpNNrvV+l4Z1Mh7HjejkltQWfSa3PIaB+WJ3h+PoC1w5blbgfq6ENdHdkRU7L14ie/3MqUGMIx2gZldA==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} - '@pnpm/types@1000.8.0': - resolution: {integrity: sha512-yx86CGHHquWAI0GgKIuV/RnYewcf5fVFZemC45C/K2cX0uV8GB8TUP541ZrokWola2fZx5sn1vL7xzbceRZfoQ==} + '@pnpm/types@1000.9.0': + resolution: {integrity: sha512-UvDTCxnbyqkTg2X0dBOuZ4IdFJ8g4UFu0Ybv/5/cZAxCWVhNl1hC/Xc9hR4tZrlBL0NRFePLRhO/iw9LmA1lbw==} engines: {node: '>=18.12'} '@protobufjs/aspromise@1.1.2': @@ -3513,9 +3513,6 @@ packages: '@types/jasmine-reporters@2.5.3': resolution: {integrity: sha512-8aojAUdgdiD9VQbllBJb/9gny3lOjz9T5gyMcbYlKe6npwGVsarbr8v2JYSFJSZSuFYXcPVzFG2lLX3ib0j/DA==} - '@types/jasmine@5.1.11': - resolution: {integrity: sha512-eAij9lMAsosuA8cvRcqw7p2vO+LUraktQDmOUFx2jAnya8NUchr3DryHksfhZbRzU83vzNUSZhlk1cFdoePxwA==} - '@types/jasmine@5.1.12': resolution: {integrity: sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==} @@ -3561,8 +3558,8 @@ packages: '@types/node@22.18.11': resolution: {integrity: sha512-Gd33J2XIrXurb+eT2ktze3rJAfAp9ZNjlBdh4SVgyrKEOADwCbdUDaK7QgJno8Ue4kcajscsKqu6n8OBG3hhCQ==} - '@types/node@24.8.0': - resolution: {integrity: sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==} + '@types/node@24.9.1': + resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -4677,8 +4674,8 @@ packages: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} - conventional-commits-parser@6.2.0: - resolution: {integrity: sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==} + conventional-commits-parser@6.2.1: + resolution: {integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==} engines: {node: '>=18'} hasBin: true @@ -7580,6 +7577,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: @@ -8570,8 +8568,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.14.0: - resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -9257,28 +9255,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-next.10(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-next.8 + '@angular/compiler': 21.0.0-next.9 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9292,31 +9290,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-next.8': + '@angular/compiler@21.0.0-next.9': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-next.8 + '@angular/compiler': 21.0.0-next.9 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.8(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(@angular/compiler@21.0.0-next.8)': + '@angular/localize@21.0.0-next.9(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(@angular/compiler@21.0.0-next.9)': dependencies: - '@angular/compiler': 21.0.0-next.8 - '@angular/compiler-cli': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) + '@angular/compiler': 21.0.0-next.9 + '@angular/compiler-cli': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9324,41 +9322,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.9(6f23a1b329efda2aacf6ed746ef2e06b)': + '@angular/material@21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381)': dependencies: - '@angular/cdk': 21.0.0-next.9(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-next.10(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/53dcff1a283d75255b9950472c37a571cc35ee28(@modelcontextprotocol/sdk@1.20.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a3426d37e6f9781b00650a767eb5b3967cdb94f7(@modelcontextprotocol/sdk@1.20.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) '@google/genai': 1.25.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.9.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/prompts': 7.9.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) '@octokit/auth-app': 8.1.1 '@octokit/core': 7.0.5 '@octokit/graphql': 9.0.2 '@octokit/graphql-schema': 15.26.0 '@octokit/openapi-types': 26.0.0 - '@octokit/plugin-paginate-rest': 13.2.0(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.5) + '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) + '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.5) '@octokit/request-error': 7.0.1 '@octokit/rest': 22.0.0 - '@octokit/types': 15.0.0 - '@pnpm/dependency-path': 1001.1.2 + '@octokit/types': 15.0.1 + '@pnpm/dependency-path': 1001.1.3 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.0 - '@types/jasmine': 5.1.11 - '@types/node': 24.8.0 + '@types/jasmine': 5.1.12 + '@types/node': 24.9.1 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.33 @@ -9368,13 +9366,13 @@ snapshots: chalk: 5.6.2 cli-progress: 3.12.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.0 + conventional-commits-parser: 6.2.1 ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 firebase: 12.4.0 folder-hash: 4.1.1(supports-color@10.2.2) - git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) + git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) jasmine: 5.12.0 jasmine-core: 5.12.0 jasmine-reporters: 2.5.2 @@ -9395,35 +9393,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.8)(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.9)(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-next.8 - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-next.9 + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-next.8(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.8(@angular/animations@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-next.8(@angular/core@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -10123,13 +10121,13 @@ snapshots: '@colors/colors@1.5.0': {} - '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)': + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)': dependencies: '@types/semver': 7.7.1 semver: 7.7.3 optionalDependencies: conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.0 + conventional-commits-parser: 6.2.1 '@cspotcode/source-map-support@0.8.1': dependencies: @@ -10760,128 +10758,128 @@ snapshots: '@inquirer/ansi@1.0.1': {} - '@inquirer/checkbox@4.3.0(@types/node@24.8.0)': + '@inquirer/checkbox@4.3.0(@types/node@24.9.1)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/confirm@5.1.19(@types/node@24.8.0)': + '@inquirer/confirm@5.1.19(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/core@10.3.0(@types/node@24.8.0)': + '@inquirer/core@10.3.0(@types/node@24.9.1)': dependencies: '@inquirer/ansi': 1.0.1 '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.9.1) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/editor@4.2.21(@types/node@24.8.0)': + '@inquirer/editor@4.2.21(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/external-editor': 1.0.2(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/external-editor': 1.0.2(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/expand@4.0.21(@types/node@24.8.0)': + '@inquirer/expand@4.0.21(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/external-editor@1.0.2(@types/node@24.8.0)': + '@inquirer/external-editor@1.0.2(@types/node@24.9.1)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 '@inquirer/figures@1.0.14': {} - '@inquirer/input@4.2.5(@types/node@24.8.0)': + '@inquirer/input@4.2.5(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/number@3.0.21(@types/node@24.8.0)': + '@inquirer/number@3.0.21(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/password@4.0.21(@types/node@24.8.0)': + '@inquirer/password@4.0.21(@types/node@24.9.1)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) optionalDependencies: - '@types/node': 24.8.0 - - '@inquirer/prompts@7.9.0(@types/node@24.8.0)': - dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.8.0) - '@inquirer/confirm': 5.1.19(@types/node@24.8.0) - '@inquirer/editor': 4.2.21(@types/node@24.8.0) - '@inquirer/expand': 4.0.21(@types/node@24.8.0) - '@inquirer/input': 4.2.5(@types/node@24.8.0) - '@inquirer/number': 3.0.21(@types/node@24.8.0) - '@inquirer/password': 4.0.21(@types/node@24.8.0) - '@inquirer/rawlist': 4.1.9(@types/node@24.8.0) - '@inquirer/search': 3.2.0(@types/node@24.8.0) - '@inquirer/select': 4.4.0(@types/node@24.8.0) + '@types/node': 24.9.1 + + '@inquirer/prompts@7.9.0(@types/node@24.9.1)': + dependencies: + '@inquirer/checkbox': 4.3.0(@types/node@24.9.1) + '@inquirer/confirm': 5.1.19(@types/node@24.9.1) + '@inquirer/editor': 4.2.21(@types/node@24.9.1) + '@inquirer/expand': 4.0.21(@types/node@24.9.1) + '@inquirer/input': 4.2.5(@types/node@24.9.1) + '@inquirer/number': 3.0.21(@types/node@24.9.1) + '@inquirer/password': 4.0.21(@types/node@24.9.1) + '@inquirer/rawlist': 4.1.9(@types/node@24.9.1) + '@inquirer/search': 3.2.0(@types/node@24.9.1) + '@inquirer/select': 4.4.0(@types/node@24.9.1) optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/rawlist@4.1.9(@types/node@24.8.0)': + '@inquirer/rawlist@4.1.9(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/search@3.2.0(@types/node@24.8.0)': + '@inquirer/search@3.2.0(@types/node@24.9.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/select@4.4.0(@types/node@24.8.0)': + '@inquirer/select@4.4.0(@types/node@24.9.1)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.8.0) + '@inquirer/core': 10.3.0(@types/node@24.9.1) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/type': 3.0.9(@types/node@24.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 - '@inquirer/type@3.0.9(@types/node@24.8.0)': + '@inquirer/type@3.0.9(@types/node@24.9.1)': optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 '@isaacs/balanced-match@4.0.1': {} @@ -10973,10 +10971,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.8.0))(@types/node@24.8.0)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.1))(@types/node@24.9.1)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.9.0(@types/node@24.8.0) - '@inquirer/type': 3.0.9(@types/node@24.8.0) + '@inquirer/prompts': 7.9.0(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.1) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11212,7 +11210,7 @@ snapshots: '@octokit/auth-oauth-user': 6.0.1 '@octokit/request': 10.0.5 '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.2 universal-user-agent: 7.0.3 @@ -11222,14 +11220,14 @@ snapshots: '@octokit/auth-oauth-device': 8.0.2 '@octokit/auth-oauth-user': 6.0.1 '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 universal-user-agent: 7.0.3 '@octokit/auth-oauth-device@8.0.2': dependencies: '@octokit/oauth-methods': 6.0.1 '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 universal-user-agent: 7.0.3 '@octokit/auth-oauth-user@6.0.1': @@ -11237,7 +11235,7 @@ snapshots: '@octokit/auth-oauth-device': 8.0.2 '@octokit/oauth-methods': 6.0.1 '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 universal-user-agent: 7.0.3 '@octokit/auth-token@6.0.0': {} @@ -11248,13 +11246,13 @@ snapshots: '@octokit/graphql': 9.0.2 '@octokit/request': 10.0.5 '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 '@octokit/endpoint@11.0.1': dependencies: - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 universal-user-agent: 7.0.3 '@octokit/graphql-schema@15.26.0': @@ -11265,7 +11263,7 @@ snapshots: '@octokit/graphql@9.0.2': dependencies: '@octokit/request': 10.0.5 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 universal-user-agent: 7.0.3 '@octokit/oauth-authorization-url@8.0.0': {} @@ -11275,44 +11273,44 @@ snapshots: '@octokit/oauth-authorization-url': 8.0.0 '@octokit/request': 10.0.5 '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 '@octokit/openapi-types@26.0.0': {} - '@octokit/plugin-paginate-rest@13.2.0(@octokit/core@7.0.5)': + '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 - '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.5)': + '@octokit/plugin-rest-endpoint-methods@16.1.1(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 '@octokit/request-error@7.0.1': dependencies: - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 '@octokit/request@10.0.5': dependencies: '@octokit/endpoint': 11.0.1 '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.0 + '@octokit/types': 15.0.1 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 '@octokit/rest@22.0.0': dependencies: '@octokit/core': 7.0.5 - '@octokit/plugin-paginate-rest': 13.2.0(@octokit/core@7.0.5) + '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.5) + '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.5) - '@octokit/types@15.0.0': + '@octokit/types@15.0.1': dependencies: '@octokit/openapi-types': 26.0.0 @@ -11412,17 +11410,17 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.2': + '@pnpm/dependency-path@1001.1.3': dependencies: '@pnpm/crypto.hash': 1000.2.1 - '@pnpm/types': 1000.8.0 + '@pnpm/types': 1000.9.0 semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 - '@pnpm/types@1000.8.0': {} + '@pnpm/types@1000.9.0': {} '@protobufjs/aspromise@1.1.2': {} @@ -11965,8 +11963,6 @@ snapshots: dependencies: '@types/jasmine': 5.1.12 - '@types/jasmine@5.1.11': {} - '@types/jasmine@5.1.12': {} '@types/json-schema@7.0.15': {} @@ -12030,9 +12026,9 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.8.0': + '@types/node@24.9.1': dependencies: - undici-types: 7.14.0 + undici-types: 7.16.0 '@types/npm-package-arg@6.1.4': {} @@ -12402,11 +12398,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.0(vitest@4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.0(vitest@4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.0 @@ -12419,7 +12415,7 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12432,13 +12428,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.0 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.0': dependencies: @@ -13556,7 +13552,7 @@ snapshots: conventional-commits-filter@5.0.0: {} - conventional-commits-parser@6.2.0: + conventional-commits-parser@6.2.1: dependencies: meow: 13.2.0 @@ -14753,9 +14749,9 @@ snapshots: dependencies: assert-plus: 1.0.0 - git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0): + git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1): dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0) + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) meow: 13.2.0 transitivePeerDependencies: - conventional-commits-filter @@ -16219,10 +16215,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.8(@angular/compiler@21.0.0-next.8)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.4) '@rollup/wasm-node': 4.52.5 ajv: 8.17.1 @@ -18185,7 +18181,7 @@ snapshots: undici-types@6.21.0: {} - undici-types@7.14.0: {} + undici-types@7.16.0: {} undici@5.29.0: dependencies: @@ -18359,7 +18355,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -18368,7 +18364,7 @@ snapshots: rollup: 4.52.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18377,10 +18373,10 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.0(@types/node@24.8.0)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.0 - '@vitest/mocker': 4.0.0(vite@7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.0 '@vitest/runner': 4.0.0 '@vitest/snapshot': 4.0.0 @@ -18397,10 +18393,10 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.11(@types/node@24.8.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.8.0 + '@types/node': 24.9.1 jsdom: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index f8fc27c8fae8..3b89cca4124f 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#57e895cbb0454901a0bed93d40e20fbb575d285a", - "@angular/cdk": "github:angular/cdk-builds#52f8132bd8196629350fcf99ec24927dc89a7282", - "@angular/common": "github:angular/common-builds#71baee6f62b85f1e0f77d1f49f05a2ef0fd0c8b4", - "@angular/compiler": "github:angular/compiler-builds#922012ea49217e66f3406ddc2bdd66562c56ed8a", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#777b553e12b733aaa45a54a8fc1ad2a055752ff9", - "@angular/core": "github:angular/core-builds#00c4f2fdaa632dd5cdf3a0c4ab98104147f61efa", - "@angular/forms": "github:angular/forms-builds#0afa9007f5a76b712f7ee7d4412f682d4d14286e", - "@angular/language-service": "github:angular/language-service-builds#1437a2ab0316f6e84e545d887793a02af3e65676", - "@angular/localize": "github:angular/localize-builds#0618ce03cee868c84e90dfa3c47642e1bed6a1cb", - "@angular/material": "github:angular/material-builds#8541d56a25f41ef471585699c7863c896b7166b7", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#19a4295b7ee643060e2402cab9e7b2412d41e4eb", - "@angular/platform-browser": "github:angular/platform-browser-builds#e16577c2a109cf3894b0813a4d11e752b75e3f94", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a38d02b3fd5c07aeb854bcf914c306a6c5f31c16", - "@angular/platform-server": "github:angular/platform-server-builds#ecada9bed4f34431ad9a2e1783ab7c5e6bf1d918", - "@angular/router": "github:angular/router-builds#6239d6ee885bbed3fd9049d96a7ff8343c54628e", - "@angular/service-worker": "github:angular/service-worker-builds#0d904278455c17fa7f3873aa6927883a1f5ccad4" + "@angular/animations": "github:angular/animations-builds#485cb78564f52bab5cc822bb7c4a195063a062ea", + "@angular/cdk": "github:angular/cdk-builds#e72651c9065d1d3050a3b2be5199a0fb2fab0672", + "@angular/common": "github:angular/common-builds#06fbac5c45ae00a03d7c6da7dd67e48e7740bffb", + "@angular/compiler": "github:angular/compiler-builds#d4ab520b2743518b732ec87eb2195c81d9c15d5b", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#658478f0398618428b3570a0786153762df2f984", + "@angular/core": "github:angular/core-builds#a789b1f12be2dea70cc892cd38d2c65bf9728ff6", + "@angular/forms": "github:angular/forms-builds#aae7a1d900d8d0c6cf1ff45a1c6fc030efc6f3e6", + "@angular/language-service": "github:angular/language-service-builds#281a2d226a0d7ac5f25da0cf363b0a5504459770", + "@angular/localize": "github:angular/localize-builds#7b0aa18736a087f4c112361922b49a7bf825c80d", + "@angular/material": "github:angular/material-builds#e8a38c89c670e594771c0cf9e6b42802c1e451f5", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e2f39416411cbe65a065684c6e9487ef633d5efc", + "@angular/platform-browser": "github:angular/platform-browser-builds#0b4fba307153052ba555df1b35a3b3911f0f5e86", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#86fe681462412f04d1f2997ff7a5cf440f7c1dbf", + "@angular/platform-server": "github:angular/platform-server-builds#afc99cef1e87efb8f7c1379d0952423aa039f9b9", + "@angular/router": "github:angular/router-builds#45de55b2a99c7ee7bfe53639f0b8c98df0fcdb6b", + "@angular/service-worker": "github:angular/service-worker-builds#7dfe0d0d5930e0f2430726b4267258d0907c625a" } } From 9d4fed5c046a8f738e7144e5e5e96637615c97b2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Oct 2025 19:09:04 -0400 Subject: [PATCH 1663/2162] refactor(@angular/cli): update algolia config for documentation search tool The Algolia search configuration has been updated to support querying multiple major versions of the documentation. Error handling was also improved to support fallback to known indexes correctly. --- .../angular/cli/src/commands/mcp/constants.ts | 2 +- .../cli/src/commands/mcp/tools/doc-search.ts | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/constants.ts b/packages/angular/cli/src/commands/mcp/constants.ts index 6530bfd34175..789820ca2f53 100644 --- a/packages/angular/cli/src/commands/mcp/constants.ts +++ b/packages/angular/cli/src/commands/mcp/constants.ts @@ -7,7 +7,7 @@ */ export const k1 = '@angular/cli'; -export const at = 'QBHBbOdEO4CmBOC2d7jNmg=='; +export const at = 'gv2tkIHTOiWtI6Su96LXLQ=='; export const iv = Buffer.from([ 0x97, 0xf4, 0x62, 0x95, 0x3e, 0x12, 0x76, 0x84, 0x8a, 0x09, 0x4a, 0xc9, 0xeb, 0xa2, 0x84, 0x69, ]); diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts index e57d50c6f500..dbf80794cc26 100644 --- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts +++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts @@ -17,7 +17,7 @@ const ALGOLIA_APP_ID = 'L1XWT2UJ7F'; // https://www.algolia.com/doc/guides/security/api-keys/#search-only-api-key // This is a search only, rate limited key. It is sent within the URL of the query request. // This is not the actual key. -const ALGOLIA_API_E = '322d89dab5f2080fe09b795c93413c6a89222b13a447cdf3e6486d692717bc0c'; +const ALGOLIA_API_E = '34738e8ae1a45e58bbce7b0f9810633d8b727b44a6479cf5e14b6a337148bd50'; /** * The minimum major version of Angular for which a version-specific documentation index is known to exist. @@ -45,7 +45,7 @@ const docSearchInputSchema = z.object({ includeTopContent: z .boolean() .optional() - .default(true) + .default(false) .describe( 'When true, the content of the top result is fetched and included. ' + 'Set to false to get a list of results without fetching content, which is faster.', @@ -145,22 +145,22 @@ function createDocSearchHandler({ logger }: McpToolContext) { version ?? LATEST_KNOWN_DOCS_VERSION, MIN_SUPPORTED_DOCS_VERSION, ); - let searchResults = await client.search(createSearchArguments(query, finalSearchedVersion)); + let searchResults; + try { + searchResults = await client.search(createSearchArguments(query, finalSearchedVersion)); + } catch {} // If the initial search for a newer-than-stable version returns no results, it may be because // the index for that version doesn't exist yet. In this case, fall back to the latest known // stable version. - if ( - searchResults.results.every((result) => !('hits' in result) || result.hits.length === 0) && - finalSearchedVersion > LATEST_KNOWN_DOCS_VERSION - ) { + if (!searchResults && finalSearchedVersion > LATEST_KNOWN_DOCS_VERSION) { finalSearchedVersion = LATEST_KNOWN_DOCS_VERSION; searchResults = await client.search(createSearchArguments(query, finalSearchedVersion)); } - const allHits = searchResults.results.flatMap((result) => (result as SearchResponse).hits); + const allHits = searchResults?.results.flatMap((result) => (result as SearchResponse).hits); - if (allHits.length === 0) { + if (!allHits?.length) { return { content: [ { From e1900dc7fc22ec6a8022bcc1b2000c41d981c7df Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 23 Oct 2025 05:36:58 +0000 Subject: [PATCH 1664/2162] build: update dependency aspect_rules_js to v2.7.0 See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 39274eda4d20..02c1ca9c9bee 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.1") bazel_dep(name = "rules_nodejs", version = "6.6.0") -bazel_dep(name = "aspect_rules_js", version = "2.6.2") +bazel_dep(name = "aspect_rules_js", version = "2.7.0") bazel_dep(name = "aspect_rules_ts", version = "3.7.0") bazel_dep(name = "rules_pkg", version = "0.8.1") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 2891653c85a8..d0532032bed1 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -27,7 +27,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/source.json": "59933fb8ddabd9740a3c12ff5552f06f2b8d68c3633883c681c757bf227c3763", + "https://bcr.bazel.build/modules/aspect_rules_js/2.7.0/MODULE.bazel": "ac879ee86f124c827e4e87942b3797ff4aaf90360eb9d7bff5321fc45d5ebefb", + "https://bcr.bazel.build/modules/aspect_rules_js/2.7.0/source.json": "20c34042beca8ea1e5996989dc163a75cb04ec4e75dc64f78d936497aea78e4b", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/source.json": "4a8115ea69dd796353232ff27a7e93e6d7d1ad43bea1eb33c6bd3acfa656bf2e", @@ -206,7 +207,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "W+cy7GU3S29h8PPWylmMlPB5Z16vuZzJX4k0jlXGFoc=", + "bzlTransitiveDigest": "2t/OGeKfMCAl1xoAFVhaT+JKQb5zexk164MjT7t8SPE=", "usagesDigest": "H070ZIHhSlR+Han009l+GdDSuT9AJssdyVHQ7xjstSo=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -391,8 +392,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "kFo9dd9KDRPKtK0RkVyoouzNI0l+bqG8cEaw+4+ZnVw=", - "usagesDigest": "dwcGULhCgltHeTzlHJu5cjVHXt6WfLzA3yTc6cHWmPo=", + "bzlTransitiveDigest": "SVyYFkMQbjQ0jUKo5pfA4RvHwE9U+087GVDEKYPcTSU=", + "usagesDigest": "IVicAE5kmPjEcCQ3BjtqveHxlxyM0WJ/OuayGov8SLE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -604,7 +605,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "uS24fACgJK/VGwdRorIVcVBYji/Ibx5tHzgIFCn5iZQ=", + "usagesDigest": "+Hur2pWe/TT3snEvJg4r10bQxD7lA5FHQPZQEHH32bY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -614,7 +615,7 @@ "ruleClassName": "tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.6.2", + "aspect_rules_js": "2.7.0", "aspect_rules_ts": "3.7.0", "aspect_rules_esbuild": "0.23.0", "aspect_tools_telemetry": "0.2.8" @@ -1118,7 +1119,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "71PwVsMlLx+RWdt1SI9nSqRHX7DX/NstWwr7/XBxEMs=", - "usagesDigest": "UMPJAxKFUmrhUd/xrzHapBiQuXI2tFY2p5YhjbyQDHY=", + "usagesDigest": "lqo/UXkPCwj19uB1o0D7KeWvm99ttcmhk7BOoYRXRp0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 594c910d3b7c93aba3b91884009238b344a409aa Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 23 Oct 2025 05:05:54 +0000 Subject: [PATCH 1665/2162] build: update pnpm to v10.19.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f6b2ccbd0613..a034dd3c6ce1 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.18.3", + "packageManager": "pnpm@10.19.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.18.3" + "pnpm": "10.19.0" }, "author": "Angular Authors", "license": "MIT", From 54c4eae2aa49c6b45c41f0718a5915a10d426cb4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Oct 2025 21:29:38 -0400 Subject: [PATCH 1666/2162] fix(@schematics/angular): transform Jasmine type annotations in jasmine-to-vitest schematic This commit enhances the jasmine-to-vitest refactoring schematic by adding support for transforming Jasmine's type annotations. Previously, the schematic only handled function calls, leaving type usages like `jasmine.SpyObj` untouched and causing compilation errors in the transformed code. A new transformer now identifies and converts the following Jasmine types to their Vitest/TypeScript equivalents, preserving generics where appropriate: - `jasmine.Spy` -> `Mock` - `jasmine.SpyObj` -> `MockedObject` - `jasmine.ObjectContaining` -> `Partial` - `jasmine.ObjectContaining` -> `object` - `jasmine.Any` -> `any` - `jasmine.DoneFn` -> `() => void` --- .../jasmine-vitest/test-file-transformer.ts | 20 +++- .../transformers/jasmine-type.ts | 109 ++++++++++++++++++ .../transformers/jasmine-type_spec.ts | 76 ++++++++++++ .../jasmine-vitest/utils/ast-helpers.ts | 26 +++++ .../jasmine-vitest/utils/refactor-context.ts | 3 + 5 files changed, 232 insertions(+), 2 deletions(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index 8cd4f94eb711..36fa9a856f37 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -38,6 +38,8 @@ import { transformSpyCallInspection, transformSpyReset, } from './transformers/jasmine-spy'; +import { transformJasmineTypes } from './transformers/jasmine-type'; +import { getVitestAutoImports } from './utils/ast-helpers'; import { RefactorContext } from './utils/refactor-context'; import { RefactorReporter } from './utils/refactor-reporter'; @@ -78,11 +80,13 @@ export function transformJasmineToVitest( ts.ScriptKind.TS, ); + const pendingVitestImports = new Set(); const transformer: ts.TransformerFactory = (context) => { const refactorCtx: RefactorContext = { sourceFile, reporter, tsContext: context, + pendingVitestImports, }; const visitor: ts.Visitor = (node) => { @@ -149,6 +153,8 @@ export function transformJasmineToVitest( break; } } + } else if (ts.isQualifiedName(transformedNode) || ts.isTypeReferenceNode(transformedNode)) { + transformedNode = transformJasmineTypes(transformedNode, refactorCtx); } // Visit the children of the node to ensure they are transformed @@ -163,12 +169,22 @@ export function transformJasmineToVitest( }; const result = ts.transform(sourceFile, [transformer]); - if (result.transformed[0] === sourceFile && !reporter.hasTodos) { + let transformedSourceFile = result.transformed[0]; + + if (transformedSourceFile === sourceFile && !reporter.hasTodos && !pendingVitestImports.size) { return content; } + const vitestImport = getVitestAutoImports(pendingVitestImports); + if (vitestImport) { + transformedSourceFile = ts.factory.updateSourceFile(transformedSourceFile, [ + vitestImport, + ...transformedSourceFile.statements, + ]); + } + const printer = ts.createPrinter(); - const transformedContentWithPlaceholders = printer.printFile(result.transformed[0]); + const transformedContentWithPlaceholders = printer.printFile(transformedSourceFile); return restoreBlankLines(transformedContentWithPlaceholders); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts new file mode 100644 index 000000000000..c39674d38045 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts @@ -0,0 +1,109 @@ +/** + * @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 + */ + +/** + * @fileoverview This file contains a transformer that migrates Jasmine type definitions to + * their Vitest equivalents. It handles the conversion of types like `jasmine.Spy` and + * `jasmine.SpyObj` to Vitest's `Mock` and `MockedObject` types, and ensures that the + * necessary `vitest` imports are added to the file. + */ + +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +import { addVitestAutoImport } from '../utils/ast-helpers'; +import { RefactorContext } from '../utils/refactor-context'; + +export function transformJasmineTypes( + node: ts.Node, + { sourceFile, reporter, pendingVitestImports }: RefactorContext, +): ts.Node { + const typeNameNode = ts.isTypeReferenceNode(node) ? node.typeName : node; + if ( + !ts.isQualifiedName(typeNameNode) || + !ts.isIdentifier(typeNameNode.left) || + typeNameNode.left.text !== 'jasmine' + ) { + return node; + } + + const jasmineTypeName = typeNameNode.right.text; + + switch (jasmineTypeName) { + case 'Spy': { + const vitestTypeName = 'Mock'; + reporter.reportTransformation( + sourceFile, + node, + `Transformed type \`jasmine.Spy\` to \`${vitestTypeName}\`.`, + ); + addVitestAutoImport(pendingVitestImports, vitestTypeName); + + return ts.factory.createIdentifier(vitestTypeName); + } + case 'SpyObj': { + const vitestTypeName = 'MockedObject'; + reporter.reportTransformation( + sourceFile, + node, + `Transformed type \`jasmine.SpyObj\` to \`${vitestTypeName}\`.`, + ); + addVitestAutoImport(pendingVitestImports, vitestTypeName); + + if (ts.isTypeReferenceNode(node)) { + return ts.factory.updateTypeReferenceNode( + node, + ts.factory.createIdentifier(vitestTypeName), + node.typeArguments, + ); + } + + return ts.factory.createIdentifier(vitestTypeName); + } + case 'Any': + reporter.reportTransformation( + sourceFile, + node, + `Transformed type \`jasmine.Any\` to \`any\`.`, + ); + + return ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword); + case 'ObjectContaining': { + const typeArguments = ts.isTypeReferenceNode(node) ? node.typeArguments : undefined; + if (typeArguments && typeArguments.length > 0) { + reporter.reportTransformation( + sourceFile, + node, + `Transformed type \`jasmine.ObjectContaining\` to \`Partial\`.`, + ); + + return ts.factory.createTypeReferenceNode('Partial', typeArguments); + } + + reporter.reportTransformation( + sourceFile, + node, + `Transformed type \`jasmine.ObjectContaining\` to \`object\`.`, + ); + + return ts.factory.createKeywordTypeNode(ts.SyntaxKind.ObjectKeyword); + } + case 'DoneFn': + reporter.reportTransformation( + sourceFile, + node, + 'Transformed type `jasmine.DoneFn` to `() => void`.', + ); + + return ts.factory.createFunctionTypeNode( + undefined, + [], + ts.factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword), + ); + } + + return node; +} diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type_spec.ts new file mode 100644 index 000000000000..d38891730f99 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type_spec.ts @@ -0,0 +1,76 @@ +/** + * @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 { expectTransformation } from '../test-helpers'; + +describe('Jasmine to Vitest Transformer', () => { + describe('transformJasmineTypes', () => { + const testCases = [ + { + description: 'should transform a variable with a jasmine.Spy type', + input: `let mySpy: jasmine.Spy;`, + expected: ` + import type { Mock } from 'vitest'; + let mySpy: Mock; + `, + }, + { + description: 'should transform a variable with a jasmine.SpyObj type', + input: `let mySpy: jasmine.SpyObj;`, + expected: ` + import type { MockedObject } from 'vitest'; + let mySpy: MockedObject; + `, + }, + { + description: 'should handle multiple jasmine types and create a single import', + input: ` + let mySpy: jasmine.Spy; + let mySpyObj: jasmine.SpyObj; + `, + expected: ` + import type { Mock, MockedObject } from 'vitest'; + + let mySpy: Mock; + let mySpyObj: MockedObject; + `, + }, + { + description: 'should not add an import if no jasmine types are used', + input: `let mySpy: any;`, + expected: `let mySpy: any;`, + }, + { + description: 'should transform jasmine.Any to any', + input: `let myMatcher: jasmine.Any;`, + expected: `let myMatcher: any;`, + }, + { + description: 'should transform jasmine.ObjectContaining to Partial', + input: `let myMatcher: jasmine.ObjectContaining;`, + expected: `let myMatcher: Partial;`, + }, + { + description: 'should transform jasmine.ObjectContaining to object', + input: `let myMatcher: jasmine.ObjectContaining;`, + expected: `let myMatcher: object;`, + }, + { + description: 'should transform jasmine.DoneFn to () => void', + input: `let myDoneFn: jasmine.DoneFn;`, + expected: `let myDoneFn: () => void;`, + }, + ]; + + testCases.forEach(({ description, input, expected }) => { + it(description, async () => { + await expectTransformation(input, expected); + }); + }); + }); +}); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts index fe51e4872a32..5bdb07dd4225 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts @@ -8,6 +8,32 @@ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; +export function addVitestAutoImport(imports: Set, importName: string): void { + imports.add(importName); +} + +export function getVitestAutoImports(imports: Set): ts.ImportDeclaration | undefined { + if (!imports?.size) { + return undefined; + } + + const importNames = [...imports]; + importNames.sort(); + const importSpecifiers = importNames.map((i) => + ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(i)), + ); + + return ts.factory.createImportDeclaration( + undefined, + ts.factory.createImportClause( + ts.SyntaxKind.TypeKeyword, + undefined, + ts.factory.createNamedImports(importSpecifiers), + ), + ts.factory.createStringLiteral('vitest'), + ); +} + export function createViCallExpression( methodName: string, args: readonly ts.Expression[] = [], diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts index 4b6d32630d1a..3ca9fd3810e7 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts @@ -22,6 +22,9 @@ export interface RefactorContext { /** The official context from the TypeScript Transformer API. */ readonly tsContext: ts.TransformationContext; + + /** A set of Vitest type imports to be added to the file. */ + readonly pendingVitestImports: Set; } /** From f75128d1456f2d1f7237e7f48e35b35db12ad5f9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 23 Oct 2025 12:07:33 +0000 Subject: [PATCH 1667/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++------ .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 ++++----- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 93 +++---------------- tests/legacy-cli/e2e/ng-snapshot/package.json | 26 +++--- 10 files changed, 82 insertions(+), 151 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index a9733b11fe7b..439bf1a78f22 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@43d4ea5534ce399657a64c94a9dc1ea883324804 + - uses: angular/dev-infra/github-actions/branch-manager@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f587d49b2ba..ddd9d5d60788 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 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@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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 200a6b3fd5e7..512efe35b754 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@43d4ea5534ce399657a64c94a9dc1ea883324804 + - uses: angular/dev-infra/github-actions/pull-request-labeling@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@43d4ea5534ce399657a64c94a9dc1ea883324804 + - uses: angular/dev-infra/github-actions/post-approval-changes@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 83f9811ddb54..c74b6262bf26 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@43d4ea5534ce399657a64c94a9dc1ea883324804 + - uses: angular/dev-infra/github-actions/feature-request@ab6a00e9a219c2169ae0540cc5a32be5f481e004 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 2369ff222080..736678ed64de 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@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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 8c585db5bd2d..3250a64e0c03 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/linting/licenses@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@43d4ea5534ce399657a64c94a9dc1ea883324804 + uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 - 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/MODULE.bazel b/MODULE.bazel index 02c1ca9c9bee..126db7de4830 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "43d4ea5534ce399657a64c94a9dc1ea883324804", + commit = "ab6a00e9a219c2169ae0540cc5a32be5f481e004", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index a034dd3c6ce1..85dbb509da7e 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-next.9", "@angular/localize": "21.0.0-next.9", "@angular/material": "21.0.0-next.10", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a3426d37e6f9781b00650a767eb5b3967cdb94f7", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#b69a61793bd6ba935af262297688408d0b48252e", "@angular/platform-browser": "21.0.0-next.9", "@angular/platform-server": "21.0.0-next.9", "@angular/router": "21.0.0-next.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37c81c01a62b..cd06474a4cd3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.10 version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a3426d37e6f9781b00650a767eb5b3967cdb94f7 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a3426d37e6f9781b00650a767eb5b3967cdb94f7(@modelcontextprotocol/sdk@1.20.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#b69a61793bd6ba935af262297688408d0b48252e + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.20.1) '@angular/platform-browser': specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1048,9 +1048,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/a3426d37e6f9781b00650a767eb5b3967cdb94f7': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a3426d37e6f9781b00650a767eb5b3967cdb94f7} - version: 0.0.0-43d4ea5534ce399657a64c94a9dc1ea883324804 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e} + version: 0.0.0-ab6a00e9a219c2169ae0540cc5a32be5f481e004 hasBin: true '@angular/platform-browser@21.0.0-next.9': @@ -2136,11 +2136,11 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.25.0': - resolution: {integrity: sha512-IBNyel/umavam98SQUfvQSvh/Rp6Ql2fysQLqPyWZr5K8d768X9AO+JZU4o+3qvFDUBA0dVYUSkxyYonVcICvA==} + '@google/genai@1.26.0': + resolution: {integrity: sha512-cy5y9RgN4jBK8zr+ePgZd0To1HDpzpjIgSM6aRCZnvYR+JupGtgc1SkkOCCi1MNZho7/MuKKdnQTLhhP8OQNvg==} engines: {node: '>=20.0.0'} peerDependencies: - '@modelcontextprotocol/sdk': ^1.11.4 + '@modelcontextprotocol/sdk': ^1.20.1 peerDependenciesMeta: '@modelcontextprotocol/sdk': optional: true @@ -5599,18 +5599,10 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gaxios@6.7.1: - resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} - engines: {node: '>=14'} - gaxios@7.1.2: resolution: {integrity: sha512-/Szrn8nr+2TsQT1Gp8iIe/BEytJmbyfrbFh419DfGQSkEgNEhbPi7JRJuughjkTzPWgU9gBQf5AVu3DbHt0OXA==} engines: {node: '>=18'} - gcp-metadata@6.1.1: - resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} - engines: {node: '>=14'} - gcp-metadata@8.1.1: resolution: {integrity: sha512-dTCcAe9fRQf06ELwel6lWWFrEbstwjUBYEhr5VRGoC+iPDZQucHppCowaIp8b8v92tU1G4X4H3b/Y6zXZxkMsQ==} engines: {node: '>=18'} @@ -5724,18 +5716,10 @@ packages: resolution: {integrity: sha512-VlvZ+QDWng3aPh++0BSQlSJyjn4qgLLTmqylAR3as0dr6YwPkZpHcZAngAFr68TDVCUSQVRTkV73K/D3m7vEIg==} engines: {node: '>=18'} - google-auth-library@9.15.1: - resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} - engines: {node: '>=14'} - google-gax@5.0.4: resolution: {integrity: sha512-HmQ6zIYBs2EikTk+kjeHmtHprNTEpsnVaKONw9cwZZwUNCkUb+D5RYrJpCxyjdvIDvJp3wLbVReolJLRZRms1g==} engines: {node: '>=18'} - google-logging-utils@0.0.2: - resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} - engines: {node: '>=14'} - google-logging-utils@1.1.1: resolution: {integrity: sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==} engines: {node: '>=14'} @@ -5770,10 +5754,6 @@ packages: peerDependencies: protobufjs: '*' - gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - gtoken@8.0.0: resolution: {integrity: sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==} engines: {node: '>=18'} @@ -8661,10 +8641,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -9332,11 +9308,11 @@ 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/a3426d37e6f9781b00650a767eb5b3967cdb94f7(@modelcontextprotocol/sdk@1.20.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.20.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.25.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.26.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.9.0(@types/node@24.9.1) '@inquirer/type': 3.0.9(@types/node@24.9.1) '@octokit/auth-app': 8.1.1 @@ -10707,15 +10683,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.25.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(encoding@0.1.13)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: - google-auth-library: 9.15.1(encoding@0.1.13)(supports-color@10.2.2) + google-auth-library: 10.4.1(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: '@modelcontextprotocol/sdk': 1.20.1 transitivePeerDependencies: - bufferutil - - encoding - supports-color - utf-8-validate @@ -14657,17 +14632,6 @@ snapshots: functions-have-names@1.2.3: {} - gaxios@6.7.1(encoding@0.1.13)(supports-color@10.2.2): - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.6(supports-color@10.2.2) - is-stream: 2.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - gaxios@7.1.2(supports-color@10.2.2): dependencies: extend: 3.0.2 @@ -14676,15 +14640,6 @@ snapshots: transitivePeerDependencies: - supports-color - gcp-metadata@6.1.1(encoding@0.1.13)(supports-color@10.2.2): - dependencies: - gaxios: 6.7.1(encoding@0.1.13)(supports-color@10.2.2) - google-logging-utils: 0.0.2 - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - gcp-metadata@8.1.1(supports-color@10.2.2): dependencies: gaxios: 7.1.2(supports-color@10.2.2) @@ -14837,18 +14792,6 @@ snapshots: transitivePeerDependencies: - supports-color - google-auth-library@9.15.1(encoding@0.1.13)(supports-color@10.2.2): - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.7.1(encoding@0.1.13)(supports-color@10.2.2) - gcp-metadata: 6.1.1(encoding@0.1.13)(supports-color@10.2.2) - gtoken: 7.1.0(encoding@0.1.13)(supports-color@10.2.2) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - google-gax@5.0.4(supports-color@10.2.2): dependencies: '@grpc/grpc-js': 1.14.0 @@ -14864,8 +14807,6 @@ snapshots: transitivePeerDependencies: - supports-color - google-logging-utils@0.0.2: {} - google-logging-utils@1.1.1: {} gopd@1.2.0: {} @@ -14901,14 +14842,6 @@ snapshots: '@grpc/grpc-js': 1.14.0 protobufjs: 7.5.4 - gtoken@7.1.0(encoding@0.1.13)(supports-color@10.2.2): - dependencies: - gaxios: 6.7.1(encoding@0.1.13)(supports-color@10.2.2) - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - gtoken@8.0.0(supports-color@10.2.2): dependencies: gaxios: 7.1.2(supports-color@10.2.2) @@ -18260,8 +18193,6 @@ snapshots: uuid@8.3.2: {} - uuid@9.0.1: {} - v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@9.3.0: diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 3b89cca4124f..c972fa776f8d 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#485cb78564f52bab5cc822bb7c4a195063a062ea", + "@angular/animations": "github:angular/animations-builds#46516db8c60de2ee1676bd38415dafabfb580282", "@angular/cdk": "github:angular/cdk-builds#e72651c9065d1d3050a3b2be5199a0fb2fab0672", - "@angular/common": "github:angular/common-builds#06fbac5c45ae00a03d7c6da7dd67e48e7740bffb", - "@angular/compiler": "github:angular/compiler-builds#d4ab520b2743518b732ec87eb2195c81d9c15d5b", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#658478f0398618428b3570a0786153762df2f984", - "@angular/core": "github:angular/core-builds#a789b1f12be2dea70cc892cd38d2c65bf9728ff6", - "@angular/forms": "github:angular/forms-builds#aae7a1d900d8d0c6cf1ff45a1c6fc030efc6f3e6", - "@angular/language-service": "github:angular/language-service-builds#281a2d226a0d7ac5f25da0cf363b0a5504459770", - "@angular/localize": "github:angular/localize-builds#7b0aa18736a087f4c112361922b49a7bf825c80d", + "@angular/common": "github:angular/common-builds#0cb03245b492f810086b26a0044e5959c0072777", + "@angular/compiler": "github:angular/compiler-builds#35d481c4fccea1cb7977f43411eefea90a6b1272", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#552f1d0298c7a17393669f5f9f073fdeb383cff3", + "@angular/core": "github:angular/core-builds#3e2e0576b93f4543276c9053cf4c334f60d76437", + "@angular/forms": "github:angular/forms-builds#0d1b36b46e9b21a743a192a694ce344c38422b47", + "@angular/language-service": "github:angular/language-service-builds#0376087f44d06a3defd4228917e0daeaf2b78bdf", + "@angular/localize": "github:angular/localize-builds#ede4b93f01c3f55c4b1c82642bfbd8d386d5e833", "@angular/material": "github:angular/material-builds#e8a38c89c670e594771c0cf9e6b42802c1e451f5", "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e2f39416411cbe65a065684c6e9487ef633d5efc", - "@angular/platform-browser": "github:angular/platform-browser-builds#0b4fba307153052ba555df1b35a3b3911f0f5e86", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#86fe681462412f04d1f2997ff7a5cf440f7c1dbf", - "@angular/platform-server": "github:angular/platform-server-builds#afc99cef1e87efb8f7c1379d0952423aa039f9b9", - "@angular/router": "github:angular/router-builds#45de55b2a99c7ee7bfe53639f0b8c98df0fcdb6b", - "@angular/service-worker": "github:angular/service-worker-builds#7dfe0d0d5930e0f2430726b4267258d0907c625a" + "@angular/platform-browser": "github:angular/platform-browser-builds#609aa3383cdaed8cfb5a6e61a67e5f96930bb3a3", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#76ad78d7b2f256f5c480830b51de61af4a7db765", + "@angular/platform-server": "github:angular/platform-server-builds#c7327097b2feb689721f227ed0fe97a9e1d97bec", + "@angular/router": "github:angular/router-builds#4ab409fdc9fc1c79828e47b8e81623d6dd45882c", + "@angular/service-worker": "github:angular/service-worker-builds#99d60b4d23ddf2badb7cf8aecd665b34730268b2" } } From 2ffc527b1bbe237e9f732d3506ce3a75ca1ca9d0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:34:12 -0400 Subject: [PATCH 1668/2162] feat(@schematics/angular): configure Vitest for new projects and allow runner choice This commit updates the application, ng-new, and library schematics to configure Vitest as the default unit testing runner, replacing Karma and Jasmine. It also introduces a `testRunner` option to allow users to choose between `vitest` and `karma`. Key changes: Application & Ng-New Schematics: - Adds a `testRunner` option to allow choosing between `vitest` (default) and `karma`. - Sets "@angular/build:unit-test" as the builder for the "test" target when `vitest` is chosen, and "@angular/build:karma" for `karma`. - Conditionally adds dependencies based on the selected runner. - Updates "tsconfig.spec.json" to include "vitest/globals" or "jasmine" for type support. Library Schematic: - Conditionally configures the "test" target with the "@angular/build:unit-test" builder if Vitest is detected in the workspace. - Dynamically sets the "types" in "tsconfig.spec.json" to "vitest/globals" or "jasmine" based on the presence of Vitest. --- .../common-files/tsconfig.spec.json.template | 7 +- .../schematics/angular/application/index.ts | 90 +++++++++++++++--- .../angular/application/index_spec.ts | 94 +++++++++---------- .../angular/application/schema.json | 6 ++ .../schematics/angular/config/index_spec.ts | 6 ++ .../library/files/tsconfig.spec.json.template | 2 +- packages/schematics/angular/library/index.ts | 26 +++-- .../schematics/angular/library/index_spec.ts | 11 +++ packages/schematics/angular/ng-new/index.ts | 8 ++ .../schematics/angular/ng-new/index_spec.ts | 26 +++++ .../schematics/angular/ng-new/schema.json | 6 ++ .../utility/latest-versions/package.json | 2 + .../angular/utility/workspace-models.ts | 1 + .../workspace/files/package.json.template | 9 +- .../e2e/initialize/500-create-project.ts | 2 + .../generate/directive/directive-prefix.ts | 4 +- .../misc/update-git-clean-subdirectory.ts | 2 +- 17 files changed, 217 insertions(+), 85 deletions(-) diff --git a/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template b/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template index 11ab3b8614ff..75c646e8480a 100644 --- a/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template +++ b/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template @@ -4,10 +4,9 @@ "extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.json", "compilerOptions": { "outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/spec", - "types": [ - "jasmine" - ] - }, + "types": [ + "<%= testRunner === 'vitest' ? 'vitest/globals' : 'jasmine' %>" + ] }, "include": [ "src/**/*.ts" ] diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 38d1f8b0ffd3..295c65ba93ca 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -132,6 +132,7 @@ export default function (options: ApplicationOptions): Rule { appName: options.name, folderName, suffix, + testRunner: options.testRunner, }), move(appDir), ]), @@ -183,6 +184,65 @@ function addDependenciesToPackageJson(options: ApplicationOptions): Rule { ); } + if (!options.skipTests) { + if (options.testRunner === 'vitest') { + rules.push( + addDependency('vitest', latestVersions['vitest'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('jsdom', latestVersions['jsdom'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + ); + } else { + rules.push( + addDependency('karma', latestVersions['karma'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-chrome-launcher', latestVersions['karma-chrome-launcher'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-coverage', latestVersions['karma-coverage'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-jasmine', latestVersions['karma-jasmine'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency( + 'karma-jasmine-html-reporter', + latestVersions['karma-jasmine-html-reporter'], + { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }, + ), + addDependency('jasmine-core', latestVersions['jasmine-core'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('@types/jasmine', latestVersions['@types/jasmine'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + ); + } + } + return chain(rules); } @@ -327,18 +387,24 @@ function addAppToWorkspaceFile(options: ApplicationOptions, appDir: string): Rul }, }, }, - test: options.minimal - ? undefined - : { - builder: Builders.BuildKarma, - options: { - polyfills: options.zoneless ? undefined : ['zone.js', 'zone.js/testing'], - tsConfig: `${projectRoot}tsconfig.spec.json`, - inlineStyleLanguage, - assets: [{ 'glob': '**/*', 'input': `${projectRoot}public` }], - styles: [`${sourceRoot}/styles.${options.style}`], - }, - }, + test: + options.skipTests || options.minimal + ? undefined + : options.testRunner === 'vitest' + ? { + builder: Builders.BuildUnitTest, + options: {}, + } + : { + builder: Builders.BuildKarma, + options: { + polyfills: options.zoneless ? undefined : ['zone.js', 'zone.js/testing'], + tsConfig: `${projectRoot}tsconfig.spec.json`, + inlineStyleLanguage, + assets: [{ 'glob': '**/*', 'input': `${projectRoot}public` }], + styles: [`${sourceRoot}/styles.${options.style}`], + }, + }, }, }; diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 96916066343c..863d0d021cb6 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -110,6 +110,19 @@ describe('Application Schematic', () => { expect(_extends).toBe('../../tsconfig.json'); }); + it('should set the right types in the tsconfig.spec.json when testRunner is karma', async () => { + const tree = await schematicRunner.runSchematic( + 'application', + { ...defaultOptions, testRunner: 'karma' }, + workspaceTree, + ); + + const { + compilerOptions: { types }, + } = readJsonFile(tree, '/projects/foo/tsconfig.spec.json'); + expect(types).toEqual(['jasmine']); + }); + it('should add project references in the root tsconfig.json', async () => { const tree = await schematicRunner.runSchematic('application', defaultOptions, workspaceTree); @@ -324,6 +337,30 @@ describe('Application Schematic', () => { expect(pkg.dependencies['zone.js']).toBeUndefined(); }); + it('should add karma dependencies when testRunner is karma', async () => { + const tree = await schematicRunner.runSchematic( + 'application', + { + ...defaultOptions, + testRunner: 'karma', + }, + workspaceTree, + ); + + const pkg = JSON.parse(tree.readContent('/package.json')); + expect(pkg.devDependencies['karma']).toEqual(latestVersions['karma']); + expect(pkg.devDependencies['karma-chrome-launcher']).toEqual( + latestVersions['karma-chrome-launcher'], + ); + expect(pkg.devDependencies['karma-coverage']).toEqual(latestVersions['karma-coverage']); + expect(pkg.devDependencies['karma-jasmine']).toEqual(latestVersions['karma-jasmine']); + expect(pkg.devDependencies['karma-jasmine-html-reporter']).toEqual( + latestVersions['karma-jasmine-html-reporter'], + ); + expect(pkg.devDependencies['jasmine-core']).toEqual(latestVersions['jasmine-core']); + expect(pkg.devDependencies['@types/jasmine']).toEqual(latestVersions['@types/jasmine']); + }); + it(`should not override existing users dependencies`, async () => { const oldPackageJson = workspaceTree.readContent('package.json'); workspaceTree.overwrite( @@ -391,12 +428,6 @@ describe('Application Schematic', () => { expect(buildOpt.assets).toEqual([{ 'glob': '**/*', 'input': 'public' }]); expect(buildOpt.polyfills).toBeUndefined(); expect(buildOpt.tsConfig).toEqual('tsconfig.app.json'); - - const testOpt = prj.architect.test.options; - expect(testOpt.tsConfig).toEqual('tsconfig.spec.json'); - expect(testOpt.karmaConfig).toBeUndefined(); - expect(testOpt.assets).toEqual([{ 'glob': '**/*', 'input': 'public' }]); - expect(testOpt.styles).toEqual(['src/styles.css']); }); it('should set values in angular.json correctly when using a style preprocessor', async () => { @@ -407,51 +438,20 @@ describe('Application Schematic', () => { const prj = config.projects.foo; const buildOpt = prj.architect.build.options; expect(buildOpt.styles).toEqual(['src/styles.sass']); - const testOpt = prj.architect.test.options; - expect(testOpt.styles).toEqual(['src/styles.sass']); expect(tree.exists('src/styles.sass')).toBe(true); }); - it('sets "inlineStyleLanguage" in angular.json when using a style preprocessor', async () => { - const options = { ...defaultOptions, projectRoot: '', style: Style.Sass }; - const tree = await schematicRunner.runSchematic('application', options, workspaceTree); - - const config = JSON.parse(tree.readContent('/angular.json')); - const prj = config.projects.foo; - - const buildOpt = prj.architect.build.options; - expect(buildOpt.inlineStyleLanguage).toBe('sass'); - - const testOpt = prj.architect.test.options; - expect(testOpt.inlineStyleLanguage).toBe('sass'); - }); - - it('does not set "inlineStyleLanguage" in angular.json when not using a style preprocessor', async () => { - const options = { ...defaultOptions, projectRoot: '' }; + it('should set values in angular.json correctly when testRunner is karma', async () => { + const options = { ...defaultOptions, projectRoot: '', testRunner: 'karma' as const }; const tree = await schematicRunner.runSchematic('application', options, workspaceTree); const config = JSON.parse(tree.readContent('/angular.json')); const prj = config.projects.foo; - - const buildOpt = prj.architect.build.options; - expect(buildOpt.inlineStyleLanguage).toBeUndefined(); - - const testOpt = prj.architect.test.options; - expect(testOpt.inlineStyleLanguage).toBeUndefined(); - }); - - it('does not set "inlineStyleLanguage" in angular.json when using CSS styles', async () => { - const options = { ...defaultOptions, projectRoot: '', style: Style.Css }; - const tree = await schematicRunner.runSchematic('application', options, workspaceTree); - - const config = JSON.parse(tree.readContent('/angular.json')); - const prj = config.projects.foo; - - const buildOpt = prj.architect.build.options; - expect(buildOpt.inlineStyleLanguage).toBeUndefined(); - - const testOpt = prj.architect.test.options; - expect(testOpt.inlineStyleLanguage).toBeUndefined(); + const testOpt = prj.architect.test; + expect(testOpt.builder).toEqual('@angular/build:karma'); + expect(testOpt.options.tsConfig).toEqual('tsconfig.spec.json'); + expect(testOpt.options.assets).toEqual([{ glob: '**/*', input: 'public' }]); + expect(testOpt.options.styles).toEqual(['src/styles.css']); }); it('should set the relative tsconfig paths', async () => { @@ -482,12 +482,6 @@ describe('Application Schematic', () => { expect(buildOpt.tsConfig).toEqual('foo/tsconfig.app.json'); expect(buildOpt.assets).toEqual([{ 'glob': '**/*', 'input': 'foo/public' }]); - const testOpt = project.architect.test.options; - expect(testOpt.tsConfig).toEqual('foo/tsconfig.spec.json'); - expect(testOpt.karmaConfig).toBeUndefined(); - expect(testOpt.assets).toEqual([{ 'glob': '**/*', 'input': 'foo/public' }]); - expect(testOpt.styles).toEqual(['foo/src/styles.css']); - const appTsConfig = readJsonFile(tree, '/foo/tsconfig.app.json'); expect(appTsConfig.extends).toEqual('../tsconfig.json'); const specTsConfig = readJsonFile(tree, '/foo/tsconfig.spec.json'); diff --git a/packages/schematics/angular/application/schema.json b/packages/schematics/angular/application/schema.json index bc3504be298a..f047232c23cc 100644 --- a/packages/schematics/angular/application/schema.json +++ b/packages/schematics/angular/application/schema.json @@ -89,6 +89,12 @@ "default": false, "alias": "S" }, + "testRunner": { + "description": "The unit testing runner to use.", + "type": "string", + "enum": ["vitest", "karma"], + "default": "vitest" + }, "skipPackageJson": { "type": "boolean", "default": false, diff --git a/packages/schematics/angular/config/index_spec.ts b/packages/schematics/angular/config/index_spec.ts index f7f7b335ad68..1bbc08d9e85b 100644 --- a/packages/schematics/angular/config/index_spec.ts +++ b/packages/schematics/angular/config/index_spec.ts @@ -50,6 +50,12 @@ describe('Config Schematic', () => { defaultAppOptions, workspaceTree, ); + + // Set builder to a karma builder for testing purposes + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson['projects']['foo']['architect']['test']['builder'] = '@angular/build:karma'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); }); describe(`when 'type' is 'karma'`, () => { diff --git a/packages/schematics/angular/library/files/tsconfig.spec.json.template b/packages/schematics/angular/library/files/tsconfig.spec.json.template index 11ab3b8614ff..0cec657c8ae9 100644 --- a/packages/schematics/angular/library/files/tsconfig.spec.json.template +++ b/packages/schematics/angular/library/files/tsconfig.spec.json.template @@ -5,7 +5,7 @@ "compilerOptions": { "outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/spec", "types": [ - "jasmine" + "<%= testTypesPackage %>" ] }, "include": [ diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index 973cab7987d7..b02e35b27758 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -91,6 +91,7 @@ function addLibToWorkspaceFile( projectRoot: string, projectName: string, hasZoneDependency: boolean, + hasVitest: boolean, ): Rule { return updateWorkspace((workspace) => { workspace.projects.add({ @@ -112,13 +113,20 @@ function addLibToWorkspaceFile( }, }, }, - test: { - builder: Builders.BuildKarma, - options: { - tsConfig: `${projectRoot}/tsconfig.spec.json`, - polyfills: hasZoneDependency ? ['zone.js', 'zone.js/testing'] : undefined, - }, - }, + test: hasVitest + ? { + builder: Builders.BuildUnitTest, + options: { + tsConfig: `${projectRoot}/tsconfig.spec.json`, + }, + } + : { + builder: Builders.BuildKarma, + options: { + tsConfig: `${projectRoot}/tsconfig.spec.json`, + polyfills: hasZoneDependency ? ['zone.js', 'zone.js/testing'] : undefined, + }, + }, }, }); }); @@ -150,6 +158,7 @@ export default function (options: LibraryOptions): Rule { const distRoot = `dist/${folderName}`; const sourceDir = `${libDir}/src/lib`; + const hasVitest = getDependency(host, 'vitest') !== null; const templateSource = apply(url('./files'), [ applyTemplates({ @@ -163,6 +172,7 @@ export default function (options: LibraryOptions): Rule { angularLatestVersion: latestVersions.Angular.replace(/~|\^/, ''), tsLibLatestVersion: latestVersions['tslib'].replace(/~|\^/, ''), folderName, + testTypesPackage: hasVitest ? 'vitest/globals' : 'jasmine', }), move(libDir), ]); @@ -171,7 +181,7 @@ export default function (options: LibraryOptions): Rule { return chain([ mergeWith(templateSource), - addLibToWorkspaceFile(options, libDir, packageName, hasZoneDependency), + addLibToWorkspaceFile(options, libDir, packageName, hasZoneDependency, hasVitest), options.skipPackageJson ? noop() : addDependenciesToPackageJson(!!options.skipInstall), options.skipTsConfig ? noop() : updateTsConfig(packageName, './' + distRoot), options.skipTsConfig diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index ecf628577f11..319abbaa5162 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -414,6 +414,17 @@ describe('Library Schematic', () => { expect(workspace.projects.foo.architect.test.builder).toBe('@angular/build:karma'); }); + it(`should add 'unit-test' test builder`, async () => { + const packageJson = getJsonFileContent(workspaceTree, 'package.json'); + packageJson['devDependencies']['vitest'] = '^4.0.0'; + workspaceTree.overwrite('package.json', JSON.stringify(packageJson)); + + const tree = await schematicRunner.runSchematic('library', defaultOptions, workspaceTree); + + const workspace = JSON.parse(tree.readContent('/angular.json')); + expect(workspace.projects.foo.architect.test.builder).toBe('@angular/build:unit-test'); + }); + describe('standalone=false', () => { const defaultNonStandaloneOptions = { ...defaultOptions, standalone: false }; diff --git a/packages/schematics/angular/ng-new/index.ts b/packages/schematics/angular/ng-new/index.ts index 019a193290bd..7fca64d69ce3 100644 --- a/packages/schematics/angular/ng-new/index.ts +++ b/packages/schematics/angular/ng-new/index.ts @@ -23,6 +23,7 @@ import { RepositoryInitializerTask, } from '@angular-devkit/schematics/tasks'; import { Schema as ApplicationOptions } from '../application/schema'; +import { JSONFile } from '../utility/json-file'; import { Schema as WorkspaceOptions } from '../workspace/schema'; import { Schema as NgNewOptions } from './schema'; @@ -50,6 +51,7 @@ export default function (options: NgNewOptions): Rule { routing: options.routing, style: options.style, skipTests: options.skipTests, + testRunner: options.testRunner, skipPackageJson: false, // always 'skipInstall' here, so that we do it after the move skipInstall: true, @@ -69,6 +71,12 @@ export default function (options: NgNewOptions): Rule { schematic('ai-config', { tool: options.aiConfig?.length ? options.aiConfig : undefined, }), + (tree: Tree) => { + if (options.testRunner === 'karma') { + const file = new JSONFile(tree, 'angular.json'); + file.modify(['schematics', '@schematics/angular:application', 'testRunner'], 'karma'); + } + }, move(options.directory), ]), ), diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index 50d9abf04191..20306b875a9a 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -158,6 +158,32 @@ describe('Ng New Schematic', () => { expect(schematics['@schematics/angular:resolver'].typeSeparator).toBe('.'); }); + it(`should set 'testRunner' to 'karma'`, async () => { + const options = { ...defaultOptions, testRunner: 'karma' as const }; + const tree = await schematicRunner.runSchematic('ng-new', options); + + const { + projects: { + 'foo': { + architect: { test }, + }, + }, + } = JSON.parse(tree.readContent('/bar/angular.json')); + expect(test.builder).toBe('@angular/build:karma'); + + const { devDependencies } = JSON.parse(tree.readContent('/bar/package.json')); + expect(devDependencies['karma']).toBeDefined(); + expect(devDependencies['jasmine-core']).toBeDefined(); + }); + + it(`should set 'testRunner' to 'karma' in workspace schematic options`, async () => { + const options = { ...defaultOptions, testRunner: 'karma' as const }; + const tree = await schematicRunner.runSchematic('ng-new', options); + + const { schematics } = JSON.parse(tree.readContent('/bar/angular.json')); + expect(schematics['@schematics/angular:application'].testRunner).toBe('karma'); + }); + it(`should not add type to class name when file name style guide is '2016'`, async () => { const options = { ...defaultOptions, fileNameStyleGuide: '2016' }; diff --git a/packages/schematics/angular/ng-new/schema.json b/packages/schematics/angular/ng-new/schema.json index afdef38e88da..3bbb0eb3dee4 100644 --- a/packages/schematics/angular/ng-new/schema.json +++ b/packages/schematics/angular/ng-new/schema.json @@ -108,6 +108,12 @@ "default": false, "alias": "S" }, + "testRunner": { + "description": "The unit testing runner to use.", + "type": "string", + "enum": ["vitest", "karma"], + "default": "vitest" + }, "createApplication": { "description": "Create a new initial application project in the new workspace. When false, creates an empty workspace with no initial application. You can then use the `ng generate application` command to create applications in the `projects` directory.", "type": "boolean", diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 28342b63df4e..0c6385202905 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -15,6 +15,7 @@ "karma-jasmine-html-reporter": "~2.1.0", "karma-jasmine": "~5.1.0", "karma": "~6.4.0", + "jsdom": "^27.0.0", "less": "^4.2.0", "postcss": "^8.5.3", "protractor": "~7.0.0", @@ -24,6 +25,7 @@ "tslib": "^2.3.0", "ts-node": "~10.9.0", "typescript": "~5.9.2", + "vitest": "^4.0.0", "zone.js": "~0.15.0" } } diff --git a/packages/schematics/angular/utility/workspace-models.ts b/packages/schematics/angular/utility/workspace-models.ts index 34c329b470d1..e4a570410371 100644 --- a/packages/schematics/angular/utility/workspace-models.ts +++ b/packages/schematics/angular/utility/workspace-models.ts @@ -27,6 +27,7 @@ export enum Builders { BrowserEsbuild = '@angular-devkit/build-angular:browser-esbuild', Karma = '@angular-devkit/build-angular:karma', BuildKarma = '@angular/build:karma', + BuildUnitTest = '@angular/build:unit-test', TsLint = '@angular-devkit/build-angular:tslint', NgPackagr = '@angular-devkit/build-angular:ng-packagr', BuildNgPackagr = '@angular/build:ng-packagr', diff --git a/packages/schematics/angular/workspace/files/package.json.template b/packages/schematics/angular/workspace/files/package.json.template index 629ae681ceac..790f65acf407 100644 --- a/packages/schematics/angular/workspace/files/package.json.template +++ b/packages/schematics/angular/workspace/files/package.json.template @@ -34,14 +34,7 @@ }, "devDependencies": { "@angular/cli": "<%= '^' + version %>", - "@angular/compiler-cli": "<%= latestVersions.Angular %>",<% if (!minimal) { %> - "@types/jasmine": "<%= latestVersions['@types/jasmine'] %>", - "jasmine-core": "<%= latestVersions['jasmine-core'] %>", - "karma": "<%= latestVersions['karma'] %>", - "karma-chrome-launcher": "<%= latestVersions['karma-chrome-launcher'] %>", - "karma-coverage": "<%= latestVersions['karma-coverage'] %>", - "karma-jasmine": "<%= latestVersions['karma-jasmine'] %>", - "karma-jasmine-html-reporter": "<%= latestVersions['karma-jasmine-html-reporter'] %>",<% } %> + "@angular/compiler-cli": "<%= latestVersions.Angular %>", "typescript": "<%= latestVersions['typescript'] %>" } } diff --git a/tests/legacy-cli/e2e/initialize/500-create-project.ts b/tests/legacy-cli/e2e/initialize/500-create-project.ts index 2b8fd9143b9a..c6c0f8ef243d 100644 --- a/tests/legacy-cli/e2e/initialize/500-create-project.ts +++ b/tests/legacy-cli/e2e/initialize/500-create-project.ts @@ -24,6 +24,8 @@ export default async function () { 'new', 'test-project', '--skip-install', + '--test-runner', + 'karma', '--package-manager', getActivePackageManager(), ); 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 b0a95ce399cb..a8b5981b34a3 100644 --- a/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts +++ b/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts @@ -17,7 +17,9 @@ export default function () { ) .then(() => ng('generate', 'directive', 'test2-directive')) .then(() => expectFileToMatch(join(directiveDir, 'test2-directive.ts'), /selector: '\[preW/)) - .then(() => ng('generate', 'application', 'app-two', '--skip-install')) + .then(() => + ng('generate', 'application', 'app-two', '--skip-install', '--test-runner', 'karma'), + ) .then(() => useCIDefaults('app-two')) .then(() => useCIChrome('app-two', './projects/app-two')) .then(() => diff --git a/tests/legacy-cli/e2e/tests/misc/update-git-clean-subdirectory.ts b/tests/legacy-cli/e2e/tests/misc/update-git-clean-subdirectory.ts index 11040c618bbb..733a91164019 100644 --- a/tests/legacy-cli/e2e/tests/misc/update-git-clean-subdirectory.ts +++ b/tests/legacy-cli/e2e/tests/misc/update-git-clean-subdirectory.ts @@ -11,7 +11,7 @@ export default async function () { await silentGit('init', '.'); - await ng('new', 'subdirectory-test-project', '--skip-install'); + await ng('new', 'subdirectory-test-project', '--skip-install', '--test-runner', 'karma'); process.chdir('./subdirectory-test-project'); await prepareProjectForE2e('subdirectory-test-project'); From f24b8c40b7fe7cf4a9894ae8484c91fb76b63dee Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 23 Oct 2025 09:53:09 -0400 Subject: [PATCH 1669/2162] release: bump the next branch to v21.1.0-next.0 --- package.json | 2 +- renovate.json | 28 +++++++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 85dbb509da7e..7d3efc97bba3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.0.0-next.8", + "version": "21.1.0-next.0", "private": true, "description": "Software Development Kit for Angular", "keywords": [ diff --git a/renovate.json b/renovate.json index 4927ef6ac026..d1885952a2bd 100644 --- a/renovate.json +++ b/renovate.json @@ -1,13 +1,25 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "baseBranchPatterns": ["main", "20.3.x"], - "extends": ["github>angular/dev-infra//renovate-presets/default.json5"], - "ignorePaths": ["tests/legacy-cli/e2e/assets/**", "tests/schematics/update/packages/**"], + "baseBranchPatterns": [ + "main", + "21.0.x" + ], + "extends": [ + "github>angular/dev-infra//renovate-presets/default.json5" + ], + "ignorePaths": [ + "tests/legacy-cli/e2e/assets/**", + "tests/schematics/update/packages/**" + ], "packageRules": [ { "enabled": false, - "matchFileNames": ["tests/legacy-cli/e2e/ng-snapshot/package.json"], - "matchBaseBranches": ["!main"] + "matchFileNames": [ + "tests/legacy-cli/e2e/ng-snapshot/package.json" + ], + "matchBaseBranches": [ + "!main" + ] }, { "matchFileNames": [ @@ -15,11 +27,13 @@ "packages/angular_devkit/schematics_cli/schematic/files/package.json", "packages/schematics/angular/utility/latest-versions/package.json" ], - "matchPackageNames": ["*"], + "matchPackageNames": [ + "*" + ], "groupName": "schematics dependencies", "lockFileMaintenance": { "enabled": false } } ] -} +} \ No newline at end of file From ebda3021e3256ac237bb4031600ca73a63b07bad Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 23 Oct 2025 09:53:11 -0400 Subject: [PATCH 1670/2162] docs: release notes for the v21.0.0-next.9 release --- CHANGELOG.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb4aff1174eb..cbce420d963b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,50 @@ + + +# 21.0.0-next.9 (2025-10-23) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [3040b777e](https://github.com/angular/angular-cli/commit/3040b777e40bc90fd1ed961e3d134875b3f9b464) | feat | add style language detection to list_projects tool | +| [45024e836](https://github.com/angular/angular-cli/commit/45024e836b4006cc48b18bb99d025ae1a572db12) | feat | add unit test framework detection to list_projects tool | +| [286b6204c](https://github.com/angular/angular-cli/commit/286b6204c825c990761a0d5e5b91bb439dd13655) | feat | make documentation search tool version-aware | +| [406315d09](https://github.com/angular/angular-cli/commit/406315d0939c62d9f4f39ce64b168e72bbdd588c) | feat | make find_examples tool version-aware | +| [68e711307](https://github.com/angular/angular-cli/commit/68e711307eae88a621698c2a9cc2abc30d44efc8) | feat | make get_best_practices tool version-aware | +| [122a8c0e2](https://github.com/angular/angular-cli/commit/122a8c0e27342db79eb4d38e23032548054709b9) | fix | correct frontmatter parsing in MCP examples tool | +| [431106559](https://github.com/angular/angular-cli/commit/431106559d6e75f5113876a3f92fdf4dc4b2114d) | fix | correct query in find_examples to prevent runtime error | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- | +| [2ffc527b1](https://github.com/angular/angular-cli/commit/2ffc527b1bbe237e9f732d3506ce3a75ca1ca9d0) | feat | configure Vitest for new projects and allow runner choice | +| [512ad282a](https://github.com/angular/angular-cli/commit/512ad282aecbfdf1e5c9e9700cc722addb949b68) | fix | preserve blank lines in jasmine-to-vitest schematic | +| [b524ba426](https://github.com/angular/angular-cli/commit/b524ba42625cd690177a300ca4843ef4edce035f) | fix | remove empty i18n-extract target for new projects | +| [54c4eae2a](https://github.com/angular/angular-cli/commit/54c4eae2aa49c6b45c41f0718a5915a10d426cb4) | fix | transform Jasmine type annotations in jasmine-to-vitest schematic | + +### @angular-devkit/schematics + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | +| [18bf8e7b3](https://github.com/angular/angular-cli/commit/18bf8e7b3b36b968d064299e5c557942c0ed7ec0) | fix | respect `--force` option when schematic contains `host.create` | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [bf468e1eb](https://github.com/angular/angular-cli/commit/bf468e1eb1050c60359b6f52692ce0db286982c2) | fix | direct check include file exists in unit-test discovery | +| [b1d6d2f17](https://github.com/angular/angular-cli/commit/b1d6d2f174027a1f7800bd70ebd35143f92dc38c) | fix | resolve Angular locale data namespace in esbuild | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | +| [85c18b4ea](https://github.com/angular/angular-cli/commit/85c18b4ead77c6c090b9f5c63e9e034e58369152) | fix | correctly handle routes with matrix parameters | +| [58dcfd109](https://github.com/angular/angular-cli/commit/58dcfd1094fec52102f339e8fd3b5dd2925229b9) | fix | ensure server-side navigation triggers a redirect | + + + # 20.3.7 (2025-10-22) From 744ae4e81d0eb415088b7965688fcfea2760b9c8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Oct 2025 10:25:32 -0400 Subject: [PATCH 1671/2162] refactor(@angular/cli): use command default for unspecified target builders If a target definition from a project's configuration does not contain a `builder` field and the CLI command provides a default, the default will now be used for the command execution. This is in addition to the existing case where the command will use a synthetic target definition for commands that provide default builders. --- .../src/command-builder/architect-command-module.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/angular/cli/src/command-builder/architect-command-module.ts b/packages/angular/cli/src/command-builder/architect-command-module.ts index 4218c6274521..98e270cf1dad 100644 --- a/packages/angular/cli/src/command-builder/architect-command-module.ts +++ b/packages/angular/cli/src/command-builder/architect-command-module.ts @@ -41,7 +41,8 @@ export abstract class ArchitectCommandModule // Add default builder if target is not in project and a command default is provided if (this.findDefaultBuilderName && this.context.workspace) { for (const [project, projectDefinition] of this.context.workspace.projects) { - if (projectDefinition.targets.has(target)) { + const targetDefinition = projectDefinition.targets.get(target); + if (targetDefinition?.builder) { continue; } @@ -49,7 +50,13 @@ export abstract class ArchitectCommandModule project, target, }); - if (defaultBuilder) { + if (!defaultBuilder) { + continue; + } + + if (targetDefinition) { + targetDefinition.builder = defaultBuilder; + } else { projectDefinition.targets.set(target, { builder: defaultBuilder, }); From db45707d905534ceea819fe0efb6a08754c1322f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:20:10 +0000 Subject: [PATCH 1672/2162] build: remove `minimumReleaseAgeExclude` for `vitest` This is no longer required. --- pnpm-workspace.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6c4a8f21d754..d1752e85bda6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -26,5 +26,3 @@ minimumReleaseAgeExclude: - '@ngtools/webpack' - '@schematics/*' - 'ng-packagr' - - 'vitest' # temporary to support v21 - - '@vitest/*' # temporary to support v21 From 2dc5c055d759ff011c319cda5a8fbb899c906e36 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 23 Oct 2025 15:45:19 +0000 Subject: [PATCH 1673/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 439bf1a78f22..3c74b486f9ed 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + - uses: angular/dev-infra/github-actions/branch-manager@8704d6c3737c52172aebb7eead702e7675852542 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddd9d5d60788..06d0a714f063 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 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@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - 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 512efe35b754..840bfe358467 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + - uses: angular/dev-infra/github-actions/pull-request-labeling@8704d6c3737c52172aebb7eead702e7675852542 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + - uses: angular/dev-infra/github-actions/post-approval-changes@8704d6c3737c52172aebb7eead702e7675852542 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index c74b6262bf26..5406330ba47e 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@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + - uses: angular/dev-infra/github-actions/feature-request@8704d6c3737c52172aebb7eead702e7675852542 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 736678ed64de..07b1621e4210 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@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - 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@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - 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 3250a64e0c03..8655647e3884 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/linting/licenses@8704d6c3737c52172aebb7eead702e7675852542 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 - 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@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@ab6a00e9a219c2169ae0540cc5a32be5f481e004 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 - 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/MODULE.bazel b/MODULE.bazel index 126db7de4830..83147bc9c115 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "ab6a00e9a219c2169ae0540cc5a32be5f481e004", + commit = "8704d6c3737c52172aebb7eead702e7675852542", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 7d3efc97bba3..44b58069cb1e 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-next.9", "@angular/localize": "21.0.0-next.9", "@angular/material": "21.0.0-next.10", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#b69a61793bd6ba935af262297688408d0b48252e", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22", "@angular/platform-browser": "21.0.0-next.9", "@angular/platform-server": "21.0.0-next.9", "@angular/router": "21.0.0-next.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd06474a4cd3..b3f563018bdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.10 version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#b69a61793bd6ba935af262297688408d0b48252e - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.20.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22(@modelcontextprotocol/sdk@1.20.1) '@angular/platform-browser': specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1048,9 +1048,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/b69a61793bd6ba935af262297688408d0b48252e': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b69a61793bd6ba935af262297688408d0b48252e} - version: 0.0.0-ab6a00e9a219c2169ae0540cc5a32be5f481e004 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22} + version: 0.0.0-8704d6c3737c52172aebb7eead702e7675852542 hasBin: true '@angular/platform-browser@21.0.0-next.9': @@ -9308,7 +9308,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/b69a61793bd6ba935af262297688408d0b48252e(@modelcontextprotocol/sdk@1.20.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22(@modelcontextprotocol/sdk@1.20.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index c972fa776f8d..96ed2aa67b43 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#46516db8c60de2ee1676bd38415dafabfb580282", - "@angular/cdk": "github:angular/cdk-builds#e72651c9065d1d3050a3b2be5199a0fb2fab0672", - "@angular/common": "github:angular/common-builds#0cb03245b492f810086b26a0044e5959c0072777", - "@angular/compiler": "github:angular/compiler-builds#35d481c4fccea1cb7977f43411eefea90a6b1272", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#552f1d0298c7a17393669f5f9f073fdeb383cff3", - "@angular/core": "github:angular/core-builds#3e2e0576b93f4543276c9053cf4c334f60d76437", - "@angular/forms": "github:angular/forms-builds#0d1b36b46e9b21a743a192a694ce344c38422b47", - "@angular/language-service": "github:angular/language-service-builds#0376087f44d06a3defd4228917e0daeaf2b78bdf", - "@angular/localize": "github:angular/localize-builds#ede4b93f01c3f55c4b1c82642bfbd8d386d5e833", - "@angular/material": "github:angular/material-builds#e8a38c89c670e594771c0cf9e6b42802c1e451f5", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e2f39416411cbe65a065684c6e9487ef633d5efc", - "@angular/platform-browser": "github:angular/platform-browser-builds#609aa3383cdaed8cfb5a6e61a67e5f96930bb3a3", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#76ad78d7b2f256f5c480830b51de61af4a7db765", - "@angular/platform-server": "github:angular/platform-server-builds#c7327097b2feb689721f227ed0fe97a9e1d97bec", - "@angular/router": "github:angular/router-builds#4ab409fdc9fc1c79828e47b8e81623d6dd45882c", - "@angular/service-worker": "github:angular/service-worker-builds#99d60b4d23ddf2badb7cf8aecd665b34730268b2" + "@angular/animations": "github:angular/animations-builds#fbc5361d2f29c127b335641aa228e6fea28faca7", + "@angular/cdk": "github:angular/cdk-builds#d0ec29dfd442afb8b1df25ec4f1bf80076b13a9f", + "@angular/common": "github:angular/common-builds#19730d8e99eb16d0a35f8ec1f2c59e7be72a017b", + "@angular/compiler": "github:angular/compiler-builds#2cbe58b0e96960f7311789a1955e6d01b037aa00", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#bd5e0682471ca77e1f4d0900db85216997a22f23", + "@angular/core": "github:angular/core-builds#b9939e92aff6374fe763d627bf9de4663344e4f9", + "@angular/forms": "github:angular/forms-builds#64de44572d308ab1b8db35132a4bb93ba349b033", + "@angular/language-service": "github:angular/language-service-builds#2a3ea58d3628e6dad25343714a8ac940463acbd6", + "@angular/localize": "github:angular/localize-builds#c67fb2241706083080ccd56163152525824df9d5", + "@angular/material": "github:angular/material-builds#2fe06ebe115b2ecb07ebd5a924ecbc7e752268e8", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#0fe9ac31d35793c67af8c41bdff7ef38cab9c9e2", + "@angular/platform-browser": "github:angular/platform-browser-builds#aa7d144a28ef19e6240dc52627fefb7cdf584672", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#afaa13b2e3dfeebe90bdf03baaad7718bdf227b4", + "@angular/platform-server": "github:angular/platform-server-builds#ea22f2f32ef1e819cecefb59fb8dab4c8b0947a7", + "@angular/router": "github:angular/router-builds#d89fd48c65c2af19ea54694a3e619e2e6047c923", + "@angular/service-worker": "github:angular/service-worker-builds#98db7d6be498b2c7b6dbba20b9a6aedbd39cf458" } } From ffa7266df6d37b13f934e49cf5739a1f0756d282 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 23 Oct 2025 12:21:16 +0000 Subject: [PATCH 1674/2162] build: enable auto merge strategy for pull requests This commit enables the 'auto' merge strategy for pull requests. This strategy automatically determines the best merge method based on the pull request's commits. The auto merge strategy can: - Delegate to the autosquash merge strategy if the PR has fixup/squash commits against multiple normal commits. - Squash commits if the PR has only one normal commit and some fixup/squash commits. - Rebase commits if the PR has no fixup/squash commits. This improves the developer experience by automating the merge process. A key benefit is that PRs that can be cleanly rebased will now appear as 'merged' in GitHub's UI, providing a clearer history than the previous 'unmerged' status that could occur with squashing. --- .ng-dev/commit-message.mjs | 1 - .ng-dev/pull-request.mjs | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.ng-dev/commit-message.mjs b/.ng-dev/commit-message.mjs index 94fe91d8f727..4a3b270ce0a7 100644 --- a/.ng-dev/commit-message.mjs +++ b/.ng-dev/commit-message.mjs @@ -9,7 +9,6 @@ export const commitMessage = { maxLineLength: Infinity, minBodyLength: 0, minBodyLengthTypeExcludes: ['docs'], - disallowFixup: true, // Note: When changing this logic, also change the `contributing.ejs` file. scopes: packages.map(({ name }) => name), }; diff --git a/.ng-dev/pull-request.mjs b/.ng-dev/pull-request.mjs index 8beefa10c5fd..1f2d84d7ccba 100644 --- a/.ng-dev/pull-request.mjs +++ b/.ng-dev/pull-request.mjs @@ -1,12 +1,12 @@ /** * Configuration for the merge tool in `ng-dev`. This sets up the labels which * are respected by the merge script (e.g. the target labels). - * + * * @type { import("@angular/ng-dev").PullRequestConfig } */ export const pullRequest = { githubApiMerge: { - default: 'rebase', + default: 'auto', labels: [{ pattern: 'merge: squash commits', method: 'squash' }], }, }; From 055a0aa0b5928599ea8fd7457b82ed9147537fd6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 23 Oct 2025 11:50:22 -0400 Subject: [PATCH 1675/2162] fix(@schematics/angular): correct spacing in application spec tsconfig The `types` field in an application's `tsconfig.spec.json` was incorrectly indented to many places. --- .../files/common-files/tsconfig.spec.json.template | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template b/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template index 75c646e8480a..af71f061e884 100644 --- a/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template +++ b/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template @@ -4,9 +4,10 @@ "extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.json", "compilerOptions": { "outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/spec", - "types": [ - "<%= testRunner === 'vitest' ? 'vitest/globals' : 'jasmine' %>" - ] }, + "types": [ + "<%= testRunner === 'vitest' ? 'vitest/globals' : 'jasmine' %>" + ] + }, "include": [ "src/**/*.ts" ] From 49f12fda68c2f2699f5b0c881a46babaa34182ac Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 23 Oct 2025 11:26:16 -0400 Subject: [PATCH 1676/2162] fix(@schematics/angular): correct style guide paths for standalone components This commit addresses an issue where the standalone application schematic did not correctly handle the `fileNameStyleGuide: '2016'` option. The `templateUrl` and `styleUrl` properties in the generated `app.component.ts` did not include the `.component` suffix, leading to broken links. The key changes are: - Updates the standalone component template to use the `suffix` variable for `templateUrl` and `styleUrl`, ensuring the correct file paths are generated. - Adds a new test case to verify that the generated component has the correct paths when `fileNameStyleGuide: '2016'` is used. --- .../standalone-files/src/app/app__suffix__.ts.template | 4 ++-- packages/schematics/angular/application/index_spec.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template index 71e7e0bffc24..0e6ebd5930a7 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template @@ -11,9 +11,9 @@ import { RouterOutlet } from '@angular/router';<% } %> %><% } %> `,<% } else { %> - templateUrl: './app.html',<% } if(inlineStyle) { %> + templateUrl: './app<%= suffix %>.html',<% } if(inlineStyle) { %> styles: [],<% } else { %> - styleUrl: './app.<%= style %>'<% } %> + styleUrl: './app<%= suffix %>.<%= style %>'<% } %> }) export class App { protected readonly title = signal('<%= name %>'); diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 863d0d021cb6..e1867b24cf41 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -869,4 +869,14 @@ describe('Application Schematic', () => { const stylesContent = tree.readContent('/projects/foo/src/styles.css'); expect(stylesContent).toContain('@import "tailwindcss";'); }); + + describe(`fileNameStyleGuide: '2016'`, () => { + it('should create a component with the correct template and style urls', async () => { + const options = { ...defaultOptions, fileNameStyleGuide: '2016' as const }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const component = tree.readContent('/projects/foo/src/app/app.component.ts'); + expect(component).toContain(`templateUrl: './app.component.html'`); + expect(component).toContain(`styleUrl: './app.component.css'`); + }); + }); }); From e7d63e3d1f8b68e0a19532c67bd26afa5c74fce0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 24 Oct 2025 09:05:52 +0000 Subject: [PATCH 1677/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 3c74b486f9ed..6296944bdf20 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@8704d6c3737c52172aebb7eead702e7675852542 + - uses: angular/dev-infra/github-actions/branch-manager@0566e3ff6f3306497fbb55d743c169654f5be9ea with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 06d0a714f063..538a46b55350 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea 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@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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 840bfe358467..1b0889b6537c 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@8704d6c3737c52172aebb7eead702e7675852542 + - uses: angular/dev-infra/github-actions/pull-request-labeling@0566e3ff6f3306497fbb55d743c169654f5be9ea with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@8704d6c3737c52172aebb7eead702e7675852542 + - uses: angular/dev-infra/github-actions/post-approval-changes@0566e3ff6f3306497fbb55d743c169654f5be9ea with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 5406330ba47e..dd8d2f3e152c 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@8704d6c3737c52172aebb7eead702e7675852542 + - uses: angular/dev-infra/github-actions/feature-request@0566e3ff6f3306497fbb55d743c169654f5be9ea with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 07b1621e4210..fa3aa75e77cf 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@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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 8655647e3884..bd3da7b080ed 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/linting/licenses@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8704d6c3737c52172aebb7eead702e7675852542 + uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea - 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/MODULE.bazel b/MODULE.bazel index 83147bc9c115..fea89cd11da6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "8704d6c3737c52172aebb7eead702e7675852542", + commit = "0566e3ff6f3306497fbb55d743c169654f5be9ea", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 44b58069cb1e..62bf39ee29da 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-next.9", "@angular/localize": "21.0.0-next.9", "@angular/material": "21.0.0-next.10", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#3d7e25640f9d0b1e163deae6f19f3ebc1eb93219", "@angular/platform-browser": "21.0.0-next.9", "@angular/platform-server": "21.0.0-next.9", "@angular/router": "21.0.0-next.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3f563018bdf..c67c5b538d7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.10 version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22(@modelcontextprotocol/sdk@1.20.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#3d7e25640f9d0b1e163deae6f19f3ebc1eb93219 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.1) '@angular/platform-browser': specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1048,9 +1048,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22} - version: 0.0.0-8704d6c3737c52172aebb7eead702e7675852542 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219} + version: 0.0.0-0566e3ff6f3306497fbb55d743c169654f5be9ea hasBin: true '@angular/platform-browser@21.0.0-next.9': @@ -9308,7 +9308,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/eed3c33c6c4b9640030aeaeef3e10cd7c4b43f22(@modelcontextprotocol/sdk@1.20.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 96ed2aa67b43..a33cb74beff4 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#fbc5361d2f29c127b335641aa228e6fea28faca7", - "@angular/cdk": "github:angular/cdk-builds#d0ec29dfd442afb8b1df25ec4f1bf80076b13a9f", - "@angular/common": "github:angular/common-builds#19730d8e99eb16d0a35f8ec1f2c59e7be72a017b", - "@angular/compiler": "github:angular/compiler-builds#2cbe58b0e96960f7311789a1955e6d01b037aa00", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#bd5e0682471ca77e1f4d0900db85216997a22f23", - "@angular/core": "github:angular/core-builds#b9939e92aff6374fe763d627bf9de4663344e4f9", - "@angular/forms": "github:angular/forms-builds#64de44572d308ab1b8db35132a4bb93ba349b033", - "@angular/language-service": "github:angular/language-service-builds#2a3ea58d3628e6dad25343714a8ac940463acbd6", - "@angular/localize": "github:angular/localize-builds#c67fb2241706083080ccd56163152525824df9d5", - "@angular/material": "github:angular/material-builds#2fe06ebe115b2ecb07ebd5a924ecbc7e752268e8", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#0fe9ac31d35793c67af8c41bdff7ef38cab9c9e2", - "@angular/platform-browser": "github:angular/platform-browser-builds#aa7d144a28ef19e6240dc52627fefb7cdf584672", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#afaa13b2e3dfeebe90bdf03baaad7718bdf227b4", - "@angular/platform-server": "github:angular/platform-server-builds#ea22f2f32ef1e819cecefb59fb8dab4c8b0947a7", - "@angular/router": "github:angular/router-builds#d89fd48c65c2af19ea54694a3e619e2e6047c923", - "@angular/service-worker": "github:angular/service-worker-builds#98db7d6be498b2c7b6dbba20b9a6aedbd39cf458" + "@angular/animations": "github:angular/animations-builds#f91fd8a184ba76d2a85e27410aee26c59ddabc03", + "@angular/cdk": "github:angular/cdk-builds#da61116726fa5ade7a61cd29b4de2d80ebdfa608", + "@angular/common": "github:angular/common-builds#5afe2d7d50b354f038accc77aa1d4d03049733d9", + "@angular/compiler": "github:angular/compiler-builds#6e5dd6eeddd820e199c6b9dba00152bfc1612b62", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#cfc0f2cd19226f4d5581f0ce09862ef847766107", + "@angular/core": "github:angular/core-builds#d456f7b0c3bda95f9633d3ceae7fe1aac9307019", + "@angular/forms": "github:angular/forms-builds#99723515097c21a4762439da0a25f1151d03f8f7", + "@angular/language-service": "github:angular/language-service-builds#a7b83518407d164bcc7a9ccf8b25780ea89d6c77", + "@angular/localize": "github:angular/localize-builds#25e887e3b62e278989717a5a6747b203b2a5e4d5", + "@angular/material": "github:angular/material-builds#14888ec2f823dca15cae946402a33355a0a91e2a", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#d8b9c83c4e71e4ddb2b9ba88a33931e4ed7d3f14", + "@angular/platform-browser": "github:angular/platform-browser-builds#c00e132cc51ffad05aa9f6a262a02811fb9e192a", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e7e4002d12bc474494b93b297bf444c4d1c238b9", + "@angular/platform-server": "github:angular/platform-server-builds#08a50c91ff49a759faf345e3ad429e1917c61706", + "@angular/router": "github:angular/router-builds#e1abd2c8fb9616c08529e6a7b5bab44c0db425b7", + "@angular/service-worker": "github:angular/service-worker-builds#9aced4cc0b39d97205440253c37e2a970a1c1740" } } From 1dfb8c27b80ee16cf3aced034bd0f2b4df66b886 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 23 Oct 2025 22:05:02 +0000 Subject: [PATCH 1678/2162] build: update dependency ini to v6 See associated pull request for more information. --- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 06034d7c5f78..6baf6eb551d1 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -31,7 +31,7 @@ "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.40.1", - "ini": "5.0.0", + "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", "npm-package-arg": "13.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c67c5b538d7a..e5edf25884f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -481,8 +481,8 @@ importers: specifier: 5.40.1 version: 5.40.1 ini: - specifier: 5.0.0 - version: 5.0.0 + specifier: 6.0.0 + version: 6.0.0 jsonc-parser: specifier: 3.3.1 version: 3.3.1 @@ -6000,6 +6000,10 @@ packages: resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} engines: {node: ^18.17.0 || >=20.5.0} + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + injection-js@2.6.0: resolution: {integrity: sha512-uRUO2qh7rFFeAo3UWTbLHCFr8x3VLHRNZ2jbMv/MAxbFIFgw7QtNVfxc3iC7CV5U11cvIyAt12nxVWu1NqVsYg==} @@ -15113,6 +15117,8 @@ snapshots: ini@5.0.0: {} + ini@6.0.0: {} + injection-js@2.6.0: dependencies: tslib: 2.8.1 From f2248bae53849faddee1f658bfce3dbc43a28842 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:39:31 -0400 Subject: [PATCH 1679/2162] fix(@angular/build): add --ui option for Vitest runner Adds a new `--ui` option to the `unit-test` builder to enable the Vitest UI for interactive test execution. This provides a rich, browser-based interface for viewing, filtering, and re-running tests, improving the overall developer experience. The UI option implicitly enables watch mode to provide a live dashboard. If a user explicitly disables watch mode via `--no-watch` while the UI is enabled, a warning will be logged, and watch mode will be enforced to ensure the UI functions as expected. This option is only available for the Vitest runner. An error will be thrown if used with the Karma runner. --- goldens/public-api/angular/build/index.api.md | 1 + .../build/src/builders/unit-test/options.ts | 18 ++++++++++++++++-- .../unit-test/runners/vitest/executor.ts | 2 ++ .../build/src/builders/unit-test/schema.json | 5 +++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 632618f3e27f..bce60e18850d 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -237,6 +237,7 @@ export type UnitTestBuilderOptions = { runner?: Runner; setupFiles?: string[]; tsConfig?: string; + ui?: boolean; watch?: boolean; }; diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 95e4afb5305c..47db08e52d17 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -54,7 +54,12 @@ export async function normalizeOptions( const buildTargetSpecifier = options.buildTarget ?? `::development`; const buildTarget = targetFromTargetString(buildTargetSpecifier, projectName, 'build'); - const { runner, browsers, progress, filter, browserViewport } = options; + const { runner, browsers, progress, filter, browserViewport, ui } = options; + + if (ui && runner !== 'vitest') { + throw new Error('The "ui" option is only available for the "vitest" runner.'); + } + const [width, height] = browserViewport?.split('x').map(Number) ?? []; let tsConfig = options.tsConfig; @@ -71,6 +76,14 @@ export async function normalizeOptions( } } + let watch = options.watch ?? isTTY(); + if (options.ui && options.watch === false) { + context.logger.warn( + `The '--ui' option requires watch mode. The '--no-watch' flag will be ignored.`, + ); + watch = true; + } + return { // Project/workspace information workspaceRoot, @@ -105,8 +118,9 @@ export async function normalizeOptions( outputFile: options.outputFile, browsers, browserViewport: width && height ? { width, height } : undefined, - watch: options.watch ?? isTTY(), + watch, debug: options.debug ?? false, + ui: options.ui ?? false, providersFile: options.providersFile && path.join(workspaceRoot, options.providersFile), setupFiles: options.setupFiles ? options.setupFiles.map((setupFile) => path.join(workspaceRoot, setupFile)) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index e665c54290df..520e8c461201 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -137,6 +137,7 @@ export class VitestExecutor implements TestExecutor { debug, watch, browserViewport, + ui, } = this.options; let vitestNodeModule; try { @@ -201,6 +202,7 @@ export class VitestExecutor implements TestExecutor { reporters: reporters ?? ['default'], outputFile, watch, + ui, coverage: await generateCoverageOption(coverage, this.projectName), ...debugOptions, }, diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index d3ae766d05b6..7ab96760a20a 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -60,6 +60,11 @@ "description": "Enables debugging mode for tests, allowing the use of the Node Inspector.", "default": false }, + "ui": { + "type": "boolean", + "description": "Enables the Vitest UI for interactive test execution. This option is only available for the Vitest runner.", + "default": false + }, "coverage": { "type": "boolean", "description": "Enables coverage reporting for tests.", From 9f2d3f7ebfb7296bcb12aadb381d069998ab7b20 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:36:23 -0400 Subject: [PATCH 1680/2162] fix(@angular/build): externalize Angular dependencies in Vitest runner Marks common Angular packages and RxJS as external within the Vitest test runner's build configuration. This allows Vite to perform dependency pre-bundling on these libraries, which can significantly improve build and rebuild performance during test execution. The implementation introduces a constant to hold the list of packages and merges them with any externalDependencies that may already exist in the base build options, preserving user configuration. --- .../unit-test/runners/vitest/build-options.ts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 99ad334c1708..1faffcc3fe7c 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -14,6 +14,21 @@ import { NormalizedUnitTestBuilderOptions, injectTestingPolyfills } from '../../ import { findTests, getTestEntrypoints } from '../../test-discovery'; import { RunnerOptions } from '../api'; +/** + * A list of Angular related packages that should be marked as external. + * This allows Vite to pre-bundle them, improving performance. + */ +const ANGULAR_PACKAGES_TO_EXTERNALIZE = [ + '@angular/core', + '@angular/common', + '@angular/platform-browser', + '@angular/compiler', + '@angular/router', + '@angular/forms', + '@angular/animations', + 'rxjs', +]; + function createTestBedInitVirtualFile( providersFile: string | undefined, projectSourceRoot: string, @@ -83,6 +98,11 @@ export async function getVitestBuildOptions( }); entryPoints.set('init-testbed', 'angular:test-bed-init'); + const externalDependencies = new Set(['vitest', ...ANGULAR_PACKAGES_TO_EXTERNALIZE]); + if (baseBuildOptions.externalDependencies) { + baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep)); + } + const buildOptions: Partial = { ...baseBuildOptions, watch, @@ -101,7 +121,7 @@ export async function getVitestBuildOptions( outputHashing: adjustOutputHashing(baseBuildOptions.outputHashing), optimization: false, entryPoints, - externalDependencies: ['vitest', '@vitest/browser/context'], + externalDependencies: [...externalDependencies], }; buildOptions.polyfills = injectTestingPolyfills(buildOptions.polyfills); From 4a53d999880128a7b88655ea6096b16d4b3fe4aa Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sat, 25 Oct 2025 14:04:39 +0000 Subject: [PATCH 1681/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 2 +- packages/angular/build/package.json | 8 +- packages/angular/cli/package.json | 4 +- .../angular_devkit/build_angular/package.json | 10 +- .../angular_devkit/schematics/package.json | 2 +- pnpm-lock.yaml | 1053 +++++++++-------- 7 files changed, 581 insertions(+), 502 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index ee6fa056bbfe..18cdaeb5be25 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,9 +4,9 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", - "@vitest/coverage-v8": "4.0.0", + "@vitest/coverage-v8": "4.0.3", "jsdom": "27.0.1", "rxjs": "7.8.2", - "vitest": "4.0.0" + "vitest": "4.0.3" } } diff --git a/package.json b/package.json index 62bf39ee29da..81ba66d1d389 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "karma-source-map-support": "1.4.0", "listr2": "9.0.5", "lodash": "^4.17.21", - "magic-string": "0.30.19", + "magic-string": "0.30.21", "prettier": "^3.0.0", "protractor": "~7.0.0", "puppeteer": "18.2.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 26ddc2986faa..b7fd32ff3000 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -20,7 +20,7 @@ "dependencies": { "@ampproject/remapping": "2.3.0", "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", - "@babel/core": "7.28.4", + "@babel/core": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", "@inquirer/confirm": "5.1.19", @@ -32,7 +32,7 @@ "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "listr2": "9.0.5", - "magic-string": "0.30.19", + "magic-string": "0.30.21", "mrmime": "2.0.1", "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", @@ -42,7 +42,7 @@ "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "vite": "7.1.11", + "vite": "7.1.12", "watchpack": "2.4.4" }, "optionalDependencies": { @@ -56,7 +56,7 @@ "ng-packagr": "21.0.0-next.4", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.0" + "vitest": "4.0.3" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 6baf6eb551d1..46935e0d866b 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,10 +27,10 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.9.0", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.20.1", + "@modelcontextprotocol/sdk": "1.20.2", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.40.1", + "algoliasearch": "5.41.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 766a82b791fd..eee673d0ff77 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -11,14 +11,14 @@ "@angular-devkit/build-webpack": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular/build": "workspace:0.0.0-PLACEHOLDER", - "@babel/core": "7.28.4", - "@babel/generator": "7.28.3", + "@babel/core": "7.28.5", + "@babel/generator": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-transform-async-generator-functions": "7.28.0", "@babel/plugin-transform-async-to-generator": "7.27.1", - "@babel/plugin-transform-runtime": "7.28.3", - "@babel/preset-env": "7.28.3", + "@babel/plugin-transform-runtime": "7.28.5", + "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@discoveryjs/json-ext": "0.6.3", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", @@ -47,7 +47,7 @@ "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", "sass": "1.93.2", - "sass-loader": "16.0.5", + "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", diff --git a/packages/angular_devkit/schematics/package.json b/packages/angular_devkit/schematics/package.json index 65915a908a4d..b6a35160b4e8 100644 --- a/packages/angular_devkit/schematics/package.json +++ b/packages/angular_devkit/schematics/package.json @@ -15,7 +15,7 @@ "dependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "jsonc-parser": "3.3.1", - "magic-string": "0.30.19", + "magic-string": "0.30.21", "ora": "9.0.0", "rxjs": "7.8.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5edf25884f1..5ea59115a623 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#3d7e25640f9d0b1e163deae6f19f3ebc1eb93219 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.1) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.2) '@angular/platform-browser': specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -248,8 +248,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 magic-string: - specifier: 0.30.19 - version: 0.30.19 + specifier: 0.30.21 + version: 0.30.21 prettier: specifier: ^3.0.0 version: 3.6.2 @@ -329,8 +329,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.0 - version: 4.0.0(vitest@4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.3 + version: 4.0.3(vitest@4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -338,8 +338,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.0 - version: 4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.3 + version: 4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -350,8 +350,8 @@ importers: specifier: workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER version: link:../../angular_devkit/architect '@babel/core': - specifier: 7.28.4 - version: 7.28.4 + specifier: 7.28.5 + version: 7.28.5 '@babel/helper-annotate-as-pure': specifier: 7.27.3 version: 7.27.3 @@ -363,7 +363,7 @@ importers: version: 5.1.19(@types/node@24.9.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -386,8 +386,8 @@ importers: specifier: 9.0.5 version: 9.0.5 magic-string: - specifier: 0.30.19 - version: 0.30.19 + specifier: 0.30.21 + version: 0.30.21 mrmime: specifier: 2.0.1 version: 2.0.1 @@ -416,8 +416,8 @@ importers: specifier: 0.2.15 version: 0.2.15 vite: - specifier: 7.1.11 - version: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.1.12 + version: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -444,8 +444,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.0 - version: 4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.3 + version: 4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -469,8 +469,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.1))(@types/node@24.9.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.20.1 - version: 1.20.1 + specifier: 1.20.2 + version: 1.20.2 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -478,8 +478,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.40.1 - version: 5.40.1 + specifier: 5.41.0 + version: 5.41.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -606,11 +606,11 @@ importers: specifier: workspace:* version: link:../../angular/build '@babel/core': - specifier: 7.28.4 - version: 7.28.4 + specifier: 7.28.5 + version: 7.28.5 '@babel/generator': - specifier: 7.28.3 - version: 7.28.3 + specifier: 7.28.5 + version: 7.28.5 '@babel/helper-annotate-as-pure': specifier: 7.27.3 version: 7.27.3 @@ -619,16 +619,16 @@ importers: version: 7.24.7 '@babel/plugin-transform-async-generator-functions': specifier: 7.28.0 - version: 7.28.0(@babel/core@7.28.4) + version: 7.28.0(@babel/core@7.28.5) '@babel/plugin-transform-async-to-generator': specifier: 7.27.1 - version: 7.27.1(@babel/core@7.28.4) + version: 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-runtime': - specifier: 7.28.3 - version: 7.28.3(@babel/core@7.28.4) + specifier: 7.28.5 + version: 7.28.5(@babel/core@7.28.5) '@babel/preset-env': - specifier: 7.28.3 - version: 7.28.3(@babel/core@7.28.4) + specifier: 7.28.5 + version: 7.28.5(@babel/core@7.28.5) '@babel/runtime': specifier: 7.28.4 version: 7.28.4 @@ -646,7 +646,7 @@ importers: version: 10.4.21(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.11)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.11)) browserslist: specifier: ^4.26.0 version: 4.26.3 @@ -714,8 +714,8 @@ importers: specifier: 1.93.2 version: 1.93.2 sass-loader: - specifier: 16.0.5 - version: 16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)) + specifier: 16.0.6 + version: 16.0.6(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)) semver: specifier: 7.7.3 version: 7.7.3 @@ -829,8 +829,8 @@ importers: specifier: 3.3.1 version: 3.3.1 magic-string: - specifier: 0.30.19 - version: 0.30.19 + specifier: 0.30.21 + version: 0.30.21 ora: specifier: 9.0.0 version: 9.0.0 @@ -912,60 +912,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.6.1': - resolution: {integrity: sha512-wV/gNRkzb7sI9vs1OneG129hwe3Q5zPj7zigz3Ps7M5Lpo2hSorrOnXNodHEOV+yXE/ks4Pd+G3CDFIjFTWhMQ==} + '@algolia/abtesting@1.7.0': + resolution: {integrity: sha512-hOEItTFOvNLI6QX6TSGu7VE4XcUcdoKZT8NwDY+5mWwu87rGhkjlY7uesKTInlg6Sh8cyRkDBYRumxbkoBbBhA==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.40.1': - resolution: {integrity: sha512-cxKNATPY5t+Mv8XAVTI57altkaPH+DZi4uMrnexPxPHODMljhGYY+GDZyHwv9a+8CbZHcY372OkxXrDMZA4Lnw==} + '@algolia/client-abtesting@5.41.0': + resolution: {integrity: sha512-iRuvbEyuHCAhIMkyzG3tfINLxTS7mSKo7q8mQF+FbQpWenlAlrXnfZTN19LRwnVjx0UtAdZq96ThMWGS6cQ61A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.40.1': - resolution: {integrity: sha512-XP008aMffJCRGAY8/70t+hyEyvqqV7YKm502VPu0+Ji30oefrTn2al7LXkITz7CK6I4eYXWRhN6NaIUi65F1OA==} + '@algolia/client-analytics@5.41.0': + resolution: {integrity: sha512-OIPVbGfx/AO8l1V70xYTPSeTt/GCXPEl6vQICLAXLCk9WOUbcLGcy6t8qv0rO7Z7/M/h9afY6Af8JcnI+FBFdQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.40.1': - resolution: {integrity: sha512-gWfQuQUBtzUboJv/apVGZMoxSaB0M4Imwl1c9Ap+HpCW7V0KhjBddqF2QQt5tJZCOFsfNIgBbZDGsEPaeKUosw==} + '@algolia/client-common@5.41.0': + resolution: {integrity: sha512-8Mc9niJvfuO8dudWN5vSUlYkz7U3M3X3m1crDLc9N7FZrIVoNGOUETPk3TTHviJIh9y6eKZKbq1hPGoGY9fqPA==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.40.1': - resolution: {integrity: sha512-RTLjST/t+lsLMouQ4zeLJq2Ss+UNkLGyNVu+yWHanx6kQ3LT5jv8UvPwyht9s7R6jCPnlSI77WnL80J32ZuyJg==} + '@algolia/client-insights@5.41.0': + resolution: {integrity: sha512-vXzvCGZS6Ixxn+WyzGUVDeR3HO/QO5POeeWy1kjNJbEf6f+tZSI+OiIU9Ha+T3ntV8oXFyBEuweygw4OLmgfiQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.40.1': - resolution: {integrity: sha512-2FEK6bUomBzEYkTKzD0iRs7Ljtjb45rKK/VSkyHqeJnG+77qx557IeSO0qVFE3SfzapNcoytTofnZum0BQ6r3Q==} + '@algolia/client-personalization@5.41.0': + resolution: {integrity: sha512-tkymXhmlcc7w/HEvLRiHcpHxLFcUB+0PnE9FcG6hfFZ1ZXiWabH+sX+uukCVnluyhfysU9HRU2kUmUWfucx1Dg==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.40.1': - resolution: {integrity: sha512-Nju4NtxAvXjrV2hHZNLKVJLXjOlW6jAXHef/CwNzk1b2qIrCWDO589ELi5ZHH1uiWYoYyBXDQTtHmhaOVVoyXg==} + '@algolia/client-query-suggestions@5.41.0': + resolution: {integrity: sha512-vyXDoz3kEZnosNeVQQwf0PbBt5IZJoHkozKRIsYfEVm+ylwSDFCW08qy2YIVSHdKy69/rWN6Ue/6W29GgVlmKQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.40.1': - resolution: {integrity: sha512-Mw6pAUF121MfngQtcUb5quZVqMC68pSYYjCRZkSITC085S3zdk+h/g7i6FxnVdbSU6OztxikSDMh1r7Z+4iPlA==} + '@algolia/client-search@5.41.0': + resolution: {integrity: sha512-G9I2atg1ShtFp0t7zwleP6aPS4DcZvsV4uoQOripp16aR6VJzbEnKFPLW4OFXzX7avgZSpYeBAS+Zx4FOgmpPw==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.40.1': - resolution: {integrity: sha512-z+BPlhs45VURKJIxsR99NNBWpUEEqIgwt10v/fATlNxc4UlXvALdOsWzaFfe89/lbP5Bu4+mbO59nqBC87ZM/g==} + '@algolia/ingestion@1.41.0': + resolution: {integrity: sha512-sxU/ggHbZtmrYzTkueTXXNyifn+ozsLP+Wi9S2hOBVhNWPZ8uRiDTDcFyL7cpCs1q72HxPuhzTP5vn4sUl74cQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.40.1': - resolution: {integrity: sha512-VJMUMbO0wD8Rd2VVV/nlFtLJsOAQvjnVNGkMkspFiFhpBA7s/xJOb+fJvvqwKFUjbKTUA7DjiSi1ljSMYBasXg==} + '@algolia/monitoring@1.41.0': + resolution: {integrity: sha512-UQ86R6ixraHUpd0hn4vjgTHbViNO8+wA979gJmSIsRI3yli2v89QSFF/9pPcADR6PbtSio/99PmSNxhZy+CR3Q==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.40.1': - resolution: {integrity: sha512-ehvJLadKVwTp9Scg9NfzVSlBKH34KoWOQNTaN8i1Ac64AnO6iH2apJVSP6GOxssaghZ/s8mFQsDH3QIZoluFHA==} + '@algolia/recommend@5.41.0': + resolution: {integrity: sha512-DxP9P8jJ8whJOnvmyA5mf1wv14jPuI0L25itGfOHSU6d4ZAjduVfPjTS3ROuUN5CJoTdlidYZE+DtfWHxJwyzQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.40.1': - resolution: {integrity: sha512-PbidVsPurUSQIr6X9/7s34mgOMdJnn0i6p+N6Ab+lsNhY5eiu+S33kZEpZwkITYBCIbhzDLOvb7xZD3gDi+USA==} + '@algolia/requester-browser-xhr@5.41.0': + resolution: {integrity: sha512-C21J+LYkE48fDwtLX7YXZd2Fn7Fe0/DOEtvohSfr/ODP8dGDhy9faaYeWB0n1AvmZltugjkjAXT7xk0CYNIXsQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.40.1': - resolution: {integrity: sha512-ThZ5j6uOZCF11fMw9IBkhigjOYdXGXQpj6h4k+T9UkZrF2RlKcPynFzDeRgaLdpYk8Yn3/MnFbwUmib7yxj5Lw==} + '@algolia/requester-fetch@5.41.0': + resolution: {integrity: sha512-FhJy/+QJhMx1Hajf2LL8og4J7SqOAHiAuUXq27cct4QnPhSIuIGROzeRpfDNH5BUbq22UlMuGd44SeD4HRAqvA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.40.1': - resolution: {integrity: sha512-H1gYPojO6krWHnUXu/T44DrEun/Wl95PJzMXRcM/szstNQczSbwq6wIFJPI9nyE95tarZfUNU3rgorT+wZ6iCQ==} + '@algolia/requester-node-http@5.41.0': + resolution: {integrity: sha512-tYv3rGbhBS0eZ5D8oCgV88iuWILROiemk+tQ3YsAKZv2J4kKUNvKkrX/If/SreRy4MGP2uJzMlyKcfSfO2mrsQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -1108,12 +1108,20 @@ packages: resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + '@babel/core@7.28.4': resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -1195,6 +1203,10 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -1212,8 +1224,13 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': - resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1290,8 +1307,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.4': - resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} + '@babel/plugin-transform-block-scoping@7.28.5': + resolution: {integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1320,8 +1337,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.28.0': - resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1356,8 +1373,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + '@babel/plugin-transform-exponentiation-operator@7.28.5': + resolution: {integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1392,8 +1409,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + '@babel/plugin-transform-logical-assignment-operators@7.28.5': + resolution: {integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1416,8 +1433,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + '@babel/plugin-transform-modules-systemjs@7.28.5': + resolution: {integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1470,8 +1487,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + '@babel/plugin-transform-optional-chaining@7.28.5': + resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1518,8 +1535,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.28.3': - resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} + '@babel/plugin-transform-runtime@7.28.5': + resolution: {integrity: sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1578,8 +1595,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.28.3': - resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + '@babel/preset-env@7.28.5': + resolution: {integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1601,10 +1618,18 @@ packages: resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + '@bazel/bazelisk@1.26.0': resolution: {integrity: sha512-bTNcHdGyEQ9r7SczEYUa0gkEQhJo1ld2BjXI8fWBvsUeoHi03QpUs2HZgDbjjrpQFQqG2ZbO7ihZvH8MjhUTHw==} hasBin: true @@ -2442,8 +2467,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.20.1': - resolution: {integrity: sha512-j/P+yuxXfgxb+mW7OEoRCM3G47zCTDqUPivJo/VzpjbG8I9csTXtOprCf5FfOfHK4whOJny0aHuBEON+kS7CCA==} + '@modelcontextprotocol/sdk@1.20.2': + resolution: {integrity: sha512-6rqTdFt67AAAzln3NOKsXRmv5ZzPkgbfaebKBqUbts7vK1GZudqnrun5a8d3M/h955cam9RHZ6Jb4Y1XhnmFPg==} engines: {node: '>=18'} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -3808,20 +3833,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.0': - resolution: {integrity: sha512-VyVmZ8TccaGCZT9C0/vIi3kbPmvD/rLUcRx1AC8QzqaCm9SLYr1p3rxirW3EuwEGWnVU7KjGckAwJR1SRtgurA==} + '@vitest/coverage-v8@4.0.3': + resolution: {integrity: sha512-I+MlLwyJRBjmJr1kFYSxoseINbIdpxIAeK10jmXgB0FUtIfdYsvM3lGAvBu5yk8WPyhefzdmbCHCc1idFbNRcg==} peerDependencies: - '@vitest/browser': 4.0.0 - vitest: 4.0.0 + '@vitest/browser': 4.0.3 + vitest: 4.0.3 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.0': - resolution: {integrity: sha512-NLwsOv2m6RfTEMk5AhpFIUVbd5BDmZnev5XxIIwJiNsXFOetFdqMzil/paGpwwbfQyaeQCokB1rQbKsnvLeR/w==} + '@vitest/expect@4.0.3': + resolution: {integrity: sha512-v3eSDx/bF25pzar6aEJrrdTXJduEBU3uSGXHslIdGIpJVP8tQQHV6x1ZfzbFQ/bLIomLSbR/2ZCfnaEGkWkiVQ==} - '@vitest/mocker@4.0.0': - resolution: {integrity: sha512-s5S729mda0Umb60zbZeyYm58dpv97VNOXZ1bLSZ9AfaOE8TJoW4IDfEnw3IaCk9nq/Hug80hFmAz5NAh+XOImQ==} + '@vitest/mocker@4.0.3': + resolution: {integrity: sha512-evZcRspIPbbiJEe748zI2BRu94ThCBE+RkjCpVF8yoVYuTV7hMe+4wLF/7K86r8GwJHSmAPnPbZhpXWWrg1qbA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3831,20 +3856,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.0': - resolution: {integrity: sha512-oUjxwO6VcUP0VtCkJERILS2yKV4AZiE1VTWDjvjeb8pXG6P5iubyeP+cmcj2vzCPdUst8vNhXMqC1CnxvDN97Q==} + '@vitest/pretty-format@4.0.3': + resolution: {integrity: sha512-N7gly/DRXzxa9w9sbDXwD9QNFYP2hw90LLLGDobPNwiWgyW95GMxsCt29/COIKKh3P7XJICR38PSDePenMBtsw==} - '@vitest/runner@4.0.0': - resolution: {integrity: sha512-w3kADT0nDmY4dQyfPtq7zEe6wbwDy88Go2b7NpWuj0iqA1H26CTS/JB2/t8tKbvxk7MTJ9vTsRK/VMVuKmLPaQ==} + '@vitest/runner@4.0.3': + resolution: {integrity: sha512-1/aK6fPM0lYXWyGKwop2Gbvz1plyTps/HDbIIJXYtJtspHjpXIeB3If07eWpVH4HW7Rmd3Rl+IS/+zEAXrRtXA==} - '@vitest/snapshot@4.0.0': - resolution: {integrity: sha512-ELrK8qhbH3WdhD/2qh3NnR7xnaxOGx62NYLj5XKAGPIABOc+1ITN1XfH/MTgdP6Ov7O91DycuGrzwpizdCpuHg==} + '@vitest/snapshot@4.0.3': + resolution: {integrity: sha512-amnYmvZ5MTjNCP1HZmdeczAPLRD6iOm9+2nMRUGxbe/6sQ0Ymur0NnR9LIrWS8JA3wKE71X25D6ya/3LN9YytA==} - '@vitest/spy@4.0.0': - resolution: {integrity: sha512-VKD9p74W9ALFV2dSy3j8WtitY3gtloO+U6EZq84TY5gTaTTt1Lvs9nZnuaBomzEHYp/QbtGRMMKBOCsir2IAgA==} + '@vitest/spy@4.0.3': + resolution: {integrity: sha512-82vVL8Cqz7rbXaNUl35V2G7xeNMAjBdNOVaHbrzznT9BmiCiPOzhf0FhU3eP41nP1bLDm/5wWKZqkG4nyU95DQ==} - '@vitest/utils@4.0.0': - resolution: {integrity: sha512-8OXfn18Y7UtcpqhiQAfxcmZIsemPPKcg/guU2CLvafXn50G6B2EvKuj3A5h7ZMAvm95tDkll13rTtdd08MKjLQ==} + '@vitest/utils@4.0.3': + resolution: {integrity: sha512-qV6KJkq8W3piW6MDIbGOmn1xhvcW4DuA07alqaQ+vdx7YA49J85pnwnxigZVQFQw3tWnQNRKWwhz5wbP6iv/GQ==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -4036,8 +4061,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.40.1: - resolution: {integrity: sha512-iUNxcXUNg9085TJx0HJLjqtDE0r1RZ0GOGrt8KNQqQT5ugu8lZsHuMUYW/e0lHhq6xBvmktU9Bw4CXP9VQeKrg==} + algoliasearch@5.41.0: + resolution: {integrity: sha512-9E4b3rJmYbBkn7e3aAPt1as+VVnRhsR4qwRRgOzpeyz4PAOuwKh0HI4AN6mTrqK0S0M9fCCSTOUnuJ8gPY/tvA==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -6692,8 +6717,8 @@ packages: resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} engines: {node: '>=16.14'} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -7834,8 +7859,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-loader@16.0.5: - resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} + sass-loader@16.0.6: + resolution: {integrity: sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -8688,8 +8713,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.1.11: - resolution: {integrity: sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==} + vite@7.1.12: + resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -8728,18 +8753,18 @@ packages: yaml: optional: true - vitest@4.0.0: - resolution: {integrity: sha512-Z+qKuTt2py+trSv2eJNYPaQKos88EmmLntXLAJkOHdd1v3BdcS4DgIkyC6cQPRoh8tWb+QiFfW08U347mjcV0g==} + vitest@4.0.3: + resolution: {integrity: sha512-IUSop8jgaT7w0g1yOM/35qVtKjr/8Va4PrjzH1OUb0YH4c3OXB2lCZDkMAB6glA8T5w8S164oJGsbcmAecr4sA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.0 - '@vitest/browser-preview': 4.0.0 - '@vitest/browser-webdriverio': 4.0.0 - '@vitest/ui': 4.0.0 + '@vitest/browser-playwright': 4.0.3 + '@vitest/browser-preview': 4.0.3 + '@vitest/browser-webdriverio': 4.0.3 + '@vitest/ui': 4.0.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9146,89 +9171,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.6.1': + '@algolia/abtesting@1.7.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/client-abtesting@5.40.1': + '@algolia/client-abtesting@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/client-analytics@5.40.1': + '@algolia/client-analytics@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/client-common@5.40.1': {} + '@algolia/client-common@5.41.0': {} - '@algolia/client-insights@5.40.1': + '@algolia/client-insights@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/client-personalization@5.40.1': + '@algolia/client-personalization@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/client-query-suggestions@5.40.1': + '@algolia/client-query-suggestions@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/client-search@5.40.1': + '@algolia/client-search@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/ingestion@1.40.1': + '@algolia/ingestion@1.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/monitoring@1.40.1': + '@algolia/monitoring@1.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/recommend@5.40.1': + '@algolia/recommend@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + '@algolia/client-common': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 - '@algolia/requester-browser-xhr@5.40.1': + '@algolia/requester-browser-xhr@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 + '@algolia/client-common': 5.41.0 - '@algolia/requester-fetch@5.40.1': + '@algolia/requester-fetch@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 + '@algolia/client-common': 5.41.0 - '@algolia/requester-node-http@5.40.1': + '@algolia/requester-node-http@5.41.0': dependencies: - '@algolia/client-common': 5.40.1 + '@algolia/client-common': 5.41.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9312,11 +9337,11 @@ 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/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.26.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.26.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.9.0(@types/node@24.9.1) '@inquirer/type': 3.0.9(@types/node@24.9.1) '@octokit/auth-app': 8.1.1 @@ -9431,10 +9456,12 @@ snapshots: '@babel/compat-data@7.28.4': {} + '@babel/compat-data@7.28.5': {} + '@babel/core@7.28.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helpers': 7.28.4 @@ -9451,10 +9478,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.3': + '@babel/core@7.28.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@10.2.2) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -9471,29 +9518,29 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/traverse': 7.28.4 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4)': + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.3(supports-color@10.2.2) @@ -9523,7 +9570,16 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9533,18 +9589,18 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.3 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/traverse': 7.28.4 @@ -9566,6 +9622,8 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.28.3': @@ -9579,491 +9637,495 @@ snapshots: '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4)': + '@babel/parser@7.28.5': dependencies: - '@babel/core': 7.28.4 + '@babel/types': 7.28.5 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.4)': + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.28.3(@babel/core@7.28.4)': + '@babel/preset-env@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/compat-data': 7.28.4 - '@babel/core': 7.28.4 + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) core-js-compat: 3.46.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/types': 7.28.4 esutils: 2.0.3 @@ -10073,13 +10135,13 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.4 '@babel/template': 7.27.2 @@ -10088,11 +10150,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@bazel/bazelisk@1.26.0': {} '@bazel/buildifier@8.2.1': {} @@ -10687,12 +10766,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.20.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.4.1(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.20.1 + '@modelcontextprotocol/sdk': 1.20.2 transitivePeerDependencies: - bufferutil - supports-color @@ -10979,7 +11058,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.3': optional: true - '@modelcontextprotocol/sdk@1.20.1': + '@modelcontextprotocol/sdk@1.20.2': dependencies: ajv: 6.12.6 content-type: 1.0.5 @@ -11496,7 +11575,7 @@ snapshots: estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.19 + magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: rollup: 4.52.5 @@ -12377,14 +12456,14 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.0(vitest@4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.3(vitest@4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.0 + '@vitest/utils': 4.0.3 ast-v8-to-istanbul: 0.3.7 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -12394,47 +12473,47 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.0': + '@vitest/expect@4.0.3': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.2 - '@vitest/spy': 4.0.0 - '@vitest/utils': 4.0.0 + '@vitest/spy': 4.0.3 + '@vitest/utils': 4.0.3 chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.3(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.0 + '@vitest/spy': 4.0.3 estree-walker: 3.0.3 - magic-string: 0.30.19 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.0': + '@vitest/pretty-format@4.0.3': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.0': + '@vitest/runner@4.0.3': dependencies: - '@vitest/utils': 4.0.0 + '@vitest/utils': 4.0.3 pathe: 2.0.3 - '@vitest/snapshot@4.0.0': + '@vitest/snapshot@4.0.3': dependencies: - '@vitest/pretty-format': 4.0.0 - magic-string: 0.30.19 + '@vitest/pretty-format': 4.0.3 + magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.0': {} + '@vitest/spy@4.0.3': {} - '@vitest/utils@4.0.0': + '@vitest/utils@4.0.3': dependencies: - '@vitest/pretty-format': 4.0.0 + '@vitest/pretty-format': 4.0.3 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -12774,22 +12853,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.40.1: - dependencies: - '@algolia/abtesting': 1.6.1 - '@algolia/client-abtesting': 5.40.1 - '@algolia/client-analytics': 5.40.1 - '@algolia/client-common': 5.40.1 - '@algolia/client-insights': 5.40.1 - '@algolia/client-personalization': 5.40.1 - '@algolia/client-query-suggestions': 5.40.1 - '@algolia/client-search': 5.40.1 - '@algolia/ingestion': 1.40.1 - '@algolia/monitoring': 1.40.1 - '@algolia/recommend': 5.40.1 - '@algolia/requester-browser-xhr': 5.40.1 - '@algolia/requester-fetch': 5.40.1 - '@algolia/requester-node-http': 5.40.1 + algoliasearch@5.41.0: + dependencies: + '@algolia/abtesting': 1.7.0 + '@algolia/client-abtesting': 5.41.0 + '@algolia/client-analytics': 5.41.0 + '@algolia/client-common': 5.41.0 + '@algolia/client-insights': 5.41.0 + '@algolia/client-personalization': 5.41.0 + '@algolia/client-query-suggestions': 5.41.0 + '@algolia/client-search': 5.41.0 + '@algolia/ingestion': 1.41.0 + '@algolia/monitoring': 1.41.0 + '@algolia/recommend': 5.41.0 + '@algolia/requester-browser-xhr': 5.41.0 + '@algolia/requester-fetch': 5.41.0 + '@algolia/requester-node-http': 5.41.0 ansi-colors@4.1.3: {} @@ -12952,33 +13031,33 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.11)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.11)): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 find-up: 5.0.0 webpack: 5.102.1(esbuild@0.25.11) - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: '@babel/compat-data': 7.28.4 - '@babel/core': 7.28.4 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) core-js-compat: 3.46.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color @@ -15364,7 +15443,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/parser': 7.28.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -15374,7 +15453,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/parser': 7.28.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -15902,7 +15981,7 @@ snapshots: lru-cache@8.0.5: {} - magic-string@0.30.19: + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -17126,7 +17205,7 @@ snapshots: rollup-plugin-dts@6.2.3(rollup@4.52.4)(typescript@5.9.3): dependencies: - magic-string: 0.30.19 + magic-string: 0.30.21 rollup: 4.52.4 typescript: 5.9.3 optionalDependencies: @@ -17134,7 +17213,7 @@ snapshots: rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@5.9.3): dependencies: - magic-string: 0.30.19 + magic-string: 0.30.21 rollup: 4.52.5 typescript: 5.9.3 optionalDependencies: @@ -17254,7 +17333,7 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)): + sass-loader@16.0.6(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)): dependencies: neo-async: 2.6.2 optionalDependencies: @@ -18292,7 +18371,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -18310,19 +18389,19 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.0(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.0 - '@vitest/mocker': 4.0.0(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.0 - '@vitest/runner': 4.0.0 - '@vitest/snapshot': 4.0.0 - '@vitest/spy': 4.0.0 - '@vitest/utils': 4.0.0 + '@vitest/expect': 4.0.3 + '@vitest/mocker': 4.0.3(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.3 + '@vitest/runner': 4.0.3 + '@vitest/snapshot': 4.0.3 + '@vitest/spy': 4.0.3 + '@vitest/utils': 4.0.3 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 - magic-string: 0.30.19 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.10.0 @@ -18330,7 +18409,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.1 From da8528e9093937cfdf3aa194442308aa7af09be1 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 27 Oct 2025 09:06:31 +0000 Subject: [PATCH 1682/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 6296944bdf20..9201ce1eedc3 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@0566e3ff6f3306497fbb55d743c169654f5be9ea + - uses: angular/dev-infra/github-actions/branch-manager@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 538a46b55350..6ec441594af8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 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@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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 1b0889b6537c..6abb319ddf39 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@0566e3ff6f3306497fbb55d743c169654f5be9ea + - uses: angular/dev-infra/github-actions/pull-request-labeling@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@0566e3ff6f3306497fbb55d743c169654f5be9ea + - uses: angular/dev-infra/github-actions/post-approval-changes@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index dd8d2f3e152c..c5ba93bdcb49 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@0566e3ff6f3306497fbb55d743c169654f5be9ea + - uses: angular/dev-infra/github-actions/feature-request@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index fa3aa75e77cf..b6c6bd0d0c61 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@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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 bd3da7b080ed..8449b4c9b6b1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/linting/licenses@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@0566e3ff6f3306497fbb55d743c169654f5be9ea + uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 - 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/MODULE.bazel b/MODULE.bazel index fea89cd11da6..99ebc8658044 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "0566e3ff6f3306497fbb55d743c169654f5be9ea", + commit = "db74b80bd7f233f465f6ac89b2093e01ea7ffbf0", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 81ba66d1d389..fb22f6acf5b3 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-next.9", "@angular/localize": "21.0.0-next.9", "@angular/material": "21.0.0-next.10", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#3d7e25640f9d0b1e163deae6f19f3ebc1eb93219", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#616fedd5ae1655bb227f61c67fc9945ec75d3350", "@angular/platform-browser": "21.0.0-next.9", "@angular/platform-server": "21.0.0-next.9", "@angular/router": "21.0.0-next.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ea59115a623..9a318aa6af7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-next.10 version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#3d7e25640f9d0b1e163deae6f19f3ebc1eb93219 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.2) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#616fedd5ae1655bb227f61c67fc9945ec75d3350 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350(@modelcontextprotocol/sdk@1.20.2) '@angular/platform-browser': specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1048,9 +1048,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219} - version: 0.0.0-0566e3ff6f3306497fbb55d743c169654f5be9ea + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350} + version: 0.0.0-db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 hasBin: true '@angular/platform-browser@21.0.0-next.9': @@ -9337,7 +9337,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/3d7e25640f9d0b1e163deae6f19f3ebc1eb93219(@modelcontextprotocol/sdk@1.20.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350(@modelcontextprotocol/sdk@1.20.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index a33cb74beff4..4fcbd1f50bb7 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#f91fd8a184ba76d2a85e27410aee26c59ddabc03", - "@angular/cdk": "github:angular/cdk-builds#da61116726fa5ade7a61cd29b4de2d80ebdfa608", - "@angular/common": "github:angular/common-builds#5afe2d7d50b354f038accc77aa1d4d03049733d9", - "@angular/compiler": "github:angular/compiler-builds#6e5dd6eeddd820e199c6b9dba00152bfc1612b62", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#cfc0f2cd19226f4d5581f0ce09862ef847766107", - "@angular/core": "github:angular/core-builds#d456f7b0c3bda95f9633d3ceae7fe1aac9307019", - "@angular/forms": "github:angular/forms-builds#99723515097c21a4762439da0a25f1151d03f8f7", - "@angular/language-service": "github:angular/language-service-builds#a7b83518407d164bcc7a9ccf8b25780ea89d6c77", - "@angular/localize": "github:angular/localize-builds#25e887e3b62e278989717a5a6747b203b2a5e4d5", - "@angular/material": "github:angular/material-builds#14888ec2f823dca15cae946402a33355a0a91e2a", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#d8b9c83c4e71e4ddb2b9ba88a33931e4ed7d3f14", - "@angular/platform-browser": "github:angular/platform-browser-builds#c00e132cc51ffad05aa9f6a262a02811fb9e192a", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#e7e4002d12bc474494b93b297bf444c4d1c238b9", - "@angular/platform-server": "github:angular/platform-server-builds#08a50c91ff49a759faf345e3ad429e1917c61706", - "@angular/router": "github:angular/router-builds#e1abd2c8fb9616c08529e6a7b5bab44c0db425b7", - "@angular/service-worker": "github:angular/service-worker-builds#9aced4cc0b39d97205440253c37e2a970a1c1740" + "@angular/animations": "github:angular/animations-builds#18649de9fd78cf439f26fcf9f20653ddff4801d8", + "@angular/cdk": "github:angular/cdk-builds#0eb7bc8ebb849769f9097f868d3b11aefe407bcf", + "@angular/common": "github:angular/common-builds#737c58939816086ae2d24624a75596c03e82eda4", + "@angular/compiler": "github:angular/compiler-builds#5cdedfbeb863a1798d1671e166e1d66f1cde47ed", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#5425be633cd24e397eff4ce892403a05e39c7f8b", + "@angular/core": "github:angular/core-builds#3cfe73ab19c6768510088e3088aab7a5344da0a1", + "@angular/forms": "github:angular/forms-builds#e96090b57412ed0144733bdcb38b445881e24a6f", + "@angular/language-service": "github:angular/language-service-builds#f66c17b436bea6776f107546e9afd8f185d5a05e", + "@angular/localize": "github:angular/localize-builds#968e602d08c951e4b4a9f7a615ab0432528f870f", + "@angular/material": "github:angular/material-builds#1088b7359001b8fbc2cc799c6c83747a29eeb3b8", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a9640d6cb3bceef07b001ae0294e5e7116e4c48d", + "@angular/platform-browser": "github:angular/platform-browser-builds#6776925443b4abfc0e09a59bf7c287e89b281dfc", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#d871d1cbb2c6111c3d554bb788ae550ba701c844", + "@angular/platform-server": "github:angular/platform-server-builds#70a1fcd8c9400829cdcb51864bb3b97b231b8d45", + "@angular/router": "github:angular/router-builds#decd77a72f851538d3579610120bc0806fdfae27", + "@angular/service-worker": "github:angular/service-worker-builds#b5fe45bc255701754a8e819ce0694b55964662c7" } } From 5bed75b06ac8d493da77fb272f269cd5b8a8e842 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:06:04 +0000 Subject: [PATCH 1683/2162] build: add babel core to root packages This will be needed following https://github.com/devversion/rules_angular/pull/72 --- package.json | 1 + packages/angular/ssr/BUILD.bazel | 1 + pnpm-lock.yaml | 14 ++++++++------ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index fb22f6acf5b3..5270ef8b0c7a 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "@angular/platform-server": "21.0.0-next.9", "@angular/router": "21.0.0-next.9", "@angular/service-worker": "21.0.0-next.9", + "@babel/core": "7.28.4", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index 7475f48a4a6e..64b6f29ee270 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -62,6 +62,7 @@ ng_package( ], package = "@angular/ssr", rollup_runtime_deps = [ + "//:node_modules/@babel/core", "//:node_modules/@rollup/plugin-commonjs", "//:node_modules/@rollup/plugin-node-resolve", "//:node_modules/magic-string", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a318aa6af7d..87c954d1a01b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,6 +61,9 @@ importers: '@angular/service-worker': specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@babel/core': + specifier: 7.28.4 + version: 7.28.4 '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -7586,7 +7589,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: @@ -9554,7 +9556,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -9585,7 +9587,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-plugin-utils@7.27.1': {} @@ -9610,7 +9612,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -15987,8 +15989,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 source-map-js: 1.2.1 make-dir@2.1.0: From 30bedd2588c47091a8ec7d884892a41fe34f3c6b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 27 Oct 2025 05:06:12 +0000 Subject: [PATCH 1684/2162] build: update all github actions See associated pull request for more information. --- .github/workflows/ci.yml | 6 +++--- .github/workflows/pr.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ec441594af8..6095c853cd9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,7 +118,7 @@ jobs: //tests/legacy-cli:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: win-e2e-build-artifacts path: | @@ -143,7 +143,7 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: win-e2e-build-artifacts path: dist/bin/tests/legacy-cli/ @@ -235,7 +235,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@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 if: ${{ failure() }} with: name: sauce-connect-log diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8449b4c9b6b1..243893f5dc4d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -82,7 +82,7 @@ jobs: - name: Build release targets run: pnpm ng-dev release build - name: Store PR release packages - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: packages path: dist/releases/*.tgz @@ -143,7 +143,7 @@ jobs: //tests/legacy-cli:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: win-e2e-build-artifacts path: | @@ -161,7 +161,7 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: win-e2e-build-artifacts path: dist/bin/tests/legacy-cli/ diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0dde6acdc344..4ca584a759df 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@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: SARIF file path: results.sarif From 14f056e37b2a3bfa78aba5f25528fcd2c2f7910c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 27 Oct 2025 12:58:21 +0000 Subject: [PATCH 1685/2162] build: update rules_angular digest to 1f1aa3e See associated pull request for more information. --- MODULE.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MODULE.bazel b/MODULE.bazel index 99ebc8658044..c68f939ec44b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "c3721b6ece2050a59a97562e3b95527a3092b03b", + commit = "1f1aa3edb32f5e9135088548a419874a094eb687", remote = "https://github.com/devversion/rules_angular.git", ) From ae6a12f6e76bdc0b475a4aa4e3a7b5e6f8c2f24c Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 27 Oct 2025 13:32:12 +0000 Subject: [PATCH 1686/2162] build: lock file maintenance See associated pull request for more information. Closes #31611 as a pr takeover --- .../tools/esbuild/javascript-transformer.ts | 2 +- .../cli/src/command-builder/command-runner.ts | 4 +- .../core/src/virtual-fs/host/buffer.ts | 2 +- pnpm-lock.yaml | 954 +++++++----------- 4 files changed, 350 insertions(+), 612 deletions(-) diff --git a/packages/angular/build/src/tools/esbuild/javascript-transformer.ts b/packages/angular/build/src/tools/esbuild/javascript-transformer.ts index b27b8a087b46..b728a0f599e2 100644 --- a/packages/angular/build/src/tools/esbuild/javascript-transformer.ts +++ b/packages/angular/build/src/tools/esbuild/javascript-transformer.ts @@ -125,7 +125,7 @@ export class JavaScriptTransformer { { // The below is disable as with Yarn PNP this causes build failures with the below message // `Unable to deserialize cloned data`. - transferList: process.versions.pnp ? undefined : [data.buffer as ArrayBuffer], + transferList: process.versions.pnp ? undefined : [data.buffer], }, )) as Uint8Array; diff --git a/packages/angular/cli/src/command-builder/command-runner.ts b/packages/angular/cli/src/command-builder/command-runner.ts index 8843ea09d461..cb4ab2c8467e 100644 --- a/packages/angular/cli/src/command-builder/command-runner.ts +++ b/packages/angular/cli/src/command-builder/command-runner.ts @@ -8,7 +8,7 @@ import { logging } from '@angular-devkit/core'; import yargs from 'yargs'; -import { Parser } from 'yargs/helpers'; +import { Parser as yargsParser } from 'yargs/helpers'; import { CommandConfig, CommandNames, @@ -29,8 +29,6 @@ import { import { jsonHelpUsage } from './utilities/json-help'; import { createNormalizeOptionsMiddleware } from './utilities/normalize-options-middleware'; -const yargsParser = Parser as unknown as typeof Parser.default; - export async function runCommand(args: string[], logger: logging.Logger): Promise { const { $0, diff --git a/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts b/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts index 576d7a07a57f..3cb848f6b641 100644 --- a/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts +++ b/packages/angular_devkit/core/src/virtual-fs/host/buffer.ts @@ -10,7 +10,7 @@ import { TextDecoder, TextEncoder } from 'node:util'; import { FileBuffer } from './interface'; export function stringToFileBuffer(str: string): FileBuffer { - return new TextEncoder().encode(str).buffer as FileBuffer; + return new TextEncoder().encode(str).buffer; } export function fileBufferToString(fileBuffer: FileBuffer): string { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87c954d1a01b..fecd55791818 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,7 +84,7 @@ importers: version: 5.1.1(rollup@4.52.5) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.8(rollup@4.52.5) + version: 28.0.9(rollup@4.52.5) '@rollup/plugin-json': specifier: ^6.1.0 version: 6.1.0(rollup@4.52.5) @@ -102,13 +102,13 @@ importers: version: 7.27.0 '@types/browser-sync': specifier: ^2.27.0 - version: 2.29.0 + version: 2.29.1 '@types/express': specifier: ~5.0.1 - version: 5.0.3 + version: 5.0.4 '@types/http-proxy': specifier: ^1.17.4 - version: 1.17.16 + version: 1.17.17 '@types/ini': specifier: ^4.0.0 version: 4.1.1 @@ -132,7 +132,7 @@ importers: version: 4.17.20 '@types/node': specifier: ^22.12.0 - version: 22.18.11 + version: 22.18.12 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -156,7 +156,7 @@ importers: version: 2.4.4 '@types/yargs': specifier: ^17.0.20 - version: 17.0.33 + version: 17.0.34 '@types/yargs-parser': specifier: ^21.0.0 version: 21.0.3 @@ -276,7 +276,7 @@ importers: version: 6.2.3(rollup@4.52.5)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.11)(rollup@4.52.5) + version: 0.5.4(@types/node@22.18.12)(rollup@4.52.5) semver: specifier: 7.7.3 version: 7.7.3 @@ -288,7 +288,7 @@ importers: version: 7.5.1 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.18.11)(typescript@5.9.3) + version: 10.9.2(@types/node@22.18.12)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -372,7 +372,7 @@ importers: version: 0.3.5 browserslist: specifier: ^4.26.0 - version: 4.26.3 + version: 4.27.0 esbuild: specifier: 0.25.11 version: 0.25.11 @@ -652,7 +652,7 @@ importers: version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.11)) browserslist: specifier: ^4.26.0 - version: 4.26.3 + version: 4.27.0 copy-webpack-plugin: specifier: 13.0.1 version: 13.0.1(webpack@5.102.1(esbuild@0.25.11)) @@ -1097,8 +1097,8 @@ packages: '@asamuzakjp/css-color@4.0.5': resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.7.2': - resolution: {integrity: sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==} + '@asamuzakjp/dom-selector@6.7.3': + resolution: {integrity: sha512-kiGFeY+Hxf5KbPpjRLf+ffWbkos1aGo8MBfd91oxS3O57RgU3XhZrt/6UzoVF9VMpWbC3v87SRc9jxGrc9qHtQ==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -1107,10 +1107,6 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.4': - resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} @@ -1135,14 +1131,14 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + '@babel/helper-create-class-features-plugin@7.28.5': + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1156,8 +1152,8 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': @@ -1202,10 +1198,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -1222,11 +1214,6 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} @@ -1617,18 +1604,10 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.4': - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} - engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} @@ -1707,11 +1686,11 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@emnapi/core@1.5.0': - resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/core@1.6.0': + resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.6.0': + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -1878,8 +1857,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/compat@1.4.0': @@ -2657,9 +2636,9 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - '@npmcli/node-gyp@4.0.0': - resolution: {integrity: sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/node-gyp@5.0.0': + resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} + engines: {node: ^20.17.0 || >=22.9.0} '@npmcli/package-json@7.0.1': resolution: {integrity: sha512-956YUeI0YITbk2+KnirCkD19HLzES0habV+Els+dyZaVsaM6VGSiNwnRu6t3CZaqDLz4KXy2zx+0N/Zy6YjlAA==} @@ -2669,12 +2648,16 @@ packages: resolution: {integrity: sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==} engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/promise-spawn@9.0.0': + resolution: {integrity: sha512-qxvGj3ZM6Zuk8YeVMY0gZHY19WN6g3OGxwR4MBaxHImfD/4zD0HpgBHNOSayEaisj/p3PyQjdQlO9tbl5ZBFZg==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/redact@3.2.2': resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} engines: {node: ^18.17.0 || >=20.5.0} - '@npmcli/run-script@10.0.0': - resolution: {integrity: sha512-vaQj4nccJbAslopIvd49pQH2NhUp7G9pY4byUtmwhe37ZZuubGrx0eB9hW2F37uVNRuDDK6byFGXF+7JCuMSZg==} + '@npmcli/run-script@10.0.2': + resolution: {integrity: sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==} engines: {node: ^20.17.0 || >=22.9.0} '@octokit/auth-app@8.1.1': @@ -2769,14 +2752,14 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/context-async-hooks@2.1.0': - resolution: {integrity: sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==} + '@opentelemetry/context-async-hooks@2.2.0': + resolution: {integrity: sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.1.0': - resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} + '@opentelemetry/core@2.2.0': + resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -3034,8 +3017,8 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@28.0.8': - resolution: {integrity: sha512-o1Ug9PxYsF61R7/NXO/GgMZZproLd/WH2XA53Tp9ppf6bU1lMlTtC/gUM6zM3mesi2E0rypk+PNtVrELREyWEQ==} + '@rollup/plugin-commonjs@28.0.9': + resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -3088,243 +3071,122 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.4': - resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.52.5': resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.4': - resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.52.5': resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.4': - resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.52.5': resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.4': - resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.4': - resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.52.5': resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.4': - resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.5': resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.4': - resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.52.4': - resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.52.4': - resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.52.5': resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.52.4': - resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.52.5': resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.52.4': - resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.52.5': resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.4': - resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.5': resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.4': - resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.5': resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.52.4': - resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.52.5': resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.52.4': - resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.52.5': resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.4': - resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.5': resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.52.4': - resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.52.5': resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.52.4': - resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.52.5': resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.4': - resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.52.5': resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.4': - resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.5': resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.4': - resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.5': resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.4': - resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.5': resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] @@ -3439,11 +3301,11 @@ packages: '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - '@types/browser-sync@2.29.0': - resolution: {integrity: sha512-d2V8FDX/LbDCSm343N2VChzDxvll0h76I8oSigYpdLgPDmcdcR6fywTggKBkUiDM3qAbHOq7NZvepj/HJM5e2g==} + '@types/browser-sync@2.29.1': + resolution: {integrity: sha512-jAMsEkLpNURfpS4XIN9BX7SY+uCoTkPjLIovwssV/3e/FPwg9hYusbCXmGNfC3T6W/6d3iP3clxy9cvevjFKtQ==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/cli-progress@3.11.6': resolution: {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} @@ -3466,8 +3328,8 @@ packages: '@types/convert-source-map@2.0.3': resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==} - '@types/cookies@0.9.1': - resolution: {integrity: sha512-E/DPgzifH4sM1UMadJMWd6mO2jOd4g1Ejwzx8/uRCDpJis1IrlyQEcGAYEomtAqRYmD5ORbNXMeI9U0RiVGZbg==} + '@types/cookies@0.9.2': + resolution: {integrity: sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A==} '@types/cors@2.8.19': resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} @@ -3478,8 +3340,8 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/duplexify@3.6.4': - resolution: {integrity: sha512-2eahVPsd+dy3CL6FugAzJcxoraWhUghZGEQJns1kTKfCXWKJ5iG/VkaB05wRVrDKHfOFKqb0X0kXh91eE99RZg==} + '@types/duplexify@3.6.5': + resolution: {integrity: sha512-fB56ACzlW91UdZ5F3VXplVMDngO8QaX5Y2mjvADtN01TT2TMy4WjF0Lg+tFDvt4uMBeTe4SgaD+qCrA7dL5/tA==} '@types/ejs@3.1.5': resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} @@ -3502,11 +3364,11 @@ packages: '@types/express-serve-static-core@5.1.0': resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express@4.17.24': + resolution: {integrity: sha512-Mbrt4SRlXSTWryOnHAh2d4UQ/E7n9lZyGSi6KgX+4hkuL9soYbLOVXVhnk/ODp12YsGc95f4pOvqywJ6kngUwg==} - '@types/express@5.0.3': - resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + '@types/express@5.0.4': + resolution: {integrity: sha512-g64dbryHk7loCIrsa0R3shBnEu5p6LPJ09bu9NG58+jz+cRUjFrc3Bz0kNQ7j9bXeCsrRDvNET1G54P/GJkAyA==} '@types/folder-hash@4.0.4': resolution: {integrity: sha512-c+PwHm51Dw3fXM8SDK+93PO3oXdk4XNouCCvV67lj4aijRkZz5g67myk+9wqWWnyv3go6q96hT6ywcd3XtoZiQ==} @@ -3523,8 +3385,8 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/ini@4.1.1': resolution: {integrity: sha512-MIyNUZipBTbyUNnhvuXJTY7B6qNI78meck9Jbv3wk0OgNwRyOOVEKDutAkOs1snB/tx0FafyR6/SN4Ps0hZPeg==} @@ -3556,8 +3418,8 @@ packages: '@types/keygrip@1.0.6': resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} - '@types/koa-compose@3.2.8': - resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + '@types/koa-compose@3.2.9': + resolution: {integrity: sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA==} '@types/koa@2.15.0': resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} @@ -3583,8 +3445,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.18.11': - resolution: {integrity: sha512-Gd33J2XIrXurb+eT2ktze3rJAfAp9ZNjlBdh4SVgyrKEOADwCbdUDaK7QgJno8Ue4kcajscsKqu6n8OBG3hhCQ==} + '@types/node@22.18.12': + resolution: {integrity: sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==} '@types/node@24.9.1': resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} @@ -3592,8 +3454,8 @@ packages: '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} - '@types/npm-registry-fetch@8.0.8': - resolution: {integrity: sha512-VL/chssZawBkaQ5gFD5njblJce/ny9OICBlWAG9X6/m/ypPNJMWYiM22SY2mhLIGoknd4AyEJyi+FGyrBnsr+A==} + '@types/npm-registry-fetch@8.0.9': + resolution: {integrity: sha512-7NxvodR5Yrop3pb6+n8jhJNyzwOX0+6F+iagNEoi9u1CGxruYAwZD8pvGc9prIkL0+FdX5Xp0p80J9QPrGUp/g==} '@types/npmlog@7.0.0': resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} @@ -3613,8 +3475,8 @@ packages: '@types/progress@2.0.7': resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} - '@types/pumpify@1.4.4': - resolution: {integrity: sha512-+cWbQUecD04MQYkjNBhPmcUIP368aloYmqm+ImdMKA8rMpxRNAhZAD6gIj+sAVTF1DliqrT/qUp6aGNi/9U3tw==} + '@types/pumpify@1.4.5': + resolution: {integrity: sha512-BGVAQyK5yJdfIII230fVYGY47V63hUNAhryuuS3b4lEN2LNwxUXFKsEf8QLDCjmZuimlj23BHppJgcrGvNtqKg==} '@types/q@0.0.32': resolution: {integrity: sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==} @@ -3643,17 +3505,17 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} - '@types/send@1.2.0': - resolution: {integrity: sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==} + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.9': - resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -3682,6 +3544,9 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.34': + resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@types/yarnpkg__lockfile@1.1.9': resolution: {integrity: sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q==} @@ -3726,10 +3591,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/types@8.46.1': - resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.46.2': resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4193,12 +4054,16 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.7: - resolution: {integrity: sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==} + ast-v8-to-istanbul@0.3.8: + resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -4275,16 +4140,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.0: - resolution: {integrity: sha512-AOhh6Bg5QmFIXdViHbMc2tLDsBIRxdkIaIddPslJF9Z5De3APBScuqGP2uThXnIpqFrgoxMNC6km7uXNIMLHXA==} + bare-events@2.8.1: + resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: bare-abort-controller: optional: true - bare-fs@4.4.11: - resolution: {integrity: sha512-Bejmm9zRMvMTRoHS+2adgmXw1ANZnCNx+B5dgZpGwlP1E3x6Yuxea8RToddHUbWtVV0iUMWqsgZr8+jcgUI2SA==} + bare-fs@4.5.0: + resolution: {integrity: sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -4310,8 +4175,8 @@ packages: bare-events: optional: true - bare-url@2.3.0: - resolution: {integrity: sha512-c+RCqMSZbkz97Mw1LWR0gcOqwK82oyYKfLoHJ8k13ybi1+I80ffdDzUy0TdAburdrR/kI0/VuN8YgEnJqX+Nyw==} + bare-url@2.3.1: + resolution: {integrity: sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -4320,8 +4185,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.18: - resolution: {integrity: sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==} + baseline-browser-mapping@2.8.20: + resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} hasBin: true basic-ftp@5.0.5: @@ -4410,8 +4275,8 @@ packages: browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.26.3: - resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} + browserslist@4.27.0: + resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4548,8 +4413,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@9.1.0: - resolution: {integrity: sha512-rlUzQ4WzIAWdIbY/viPShhZU2n21CxDUgazXVbw4Hu1MwaeUSEksSeM6DqPgpRjCLXRk702AVRxJxoOz0dw4OA==} + chromium-bidi@10.5.1: + resolution: {integrity: sha512-rlj6OyhKhVTnk4aENcUme3Jl9h+cq4oXu4AzBcvr8RMmT6BR4a3zSNT9dbIfXr9/BS6ibzRyDhowuw4n2GgzsQ==} peerDependencies: devtools-protocol: '*' @@ -4569,8 +4434,8 @@ packages: resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} engines: {node: '>=18.20'} - cli-truncate@5.1.0: - resolution: {integrity: sha512-7JDGG+4Zp0CsknDCedl0DYdaeOhc46QNpXi3NLQblkZpXXgA6LncLDUUyvrjSvZeF3VRQa+KiMGomazQrC1V8g==} + cli-truncate@5.1.1: + resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} engines: {node: '>=20'} cli-width@4.1.0: @@ -4642,8 +4507,8 @@ packages: resolution: {integrity: sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==} engines: {node: '>=12.20.0'} - commander@14.0.1: - resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} commander@2.20.3: @@ -5098,8 +4963,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.237: - resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} + electron-to-chromium@1.5.240: + resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5675,8 +5540,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.12.0: - resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} get-uri@6.0.5: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} @@ -5740,8 +5605,8 @@ packages: resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} engines: {node: '>=0.10.0'} - google-auth-library@10.4.1: - resolution: {integrity: sha512-VlvZ+QDWng3aPh++0BSQlSJyjn4qgLLTmqylAR3as0dr6YwPkZpHcZAngAFr68TDVCUSQVRTkV73K/D3m7vEIg==} + google-auth-library@10.4.2: + resolution: {integrity: sha512-EKiQasw6aEdxSovPEf1oBxCEvxjFamZ6MPaVOSPXZMnqKFLo+rrYjHyjKlFfZcXiKi9qAH6cutr5WRqqa1jKhg==} engines: {node: '>=18'} google-gax@5.0.4: @@ -6032,8 +5897,8 @@ packages: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} - injection-js@2.6.0: - resolution: {integrity: sha512-uRUO2qh7rFFeAo3UWTbLHCFr8x3VLHRNZ2jbMv/MAxbFIFgw7QtNVfxc3iC7CV5U11cvIyAt12nxVWu1NqVsYg==} + injection-js@2.6.1: + resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} internal-ip@6.2.0: resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} @@ -7057,8 +6922,8 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - node-releases@2.0.25: - resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} + node-releases@2.0.26: + resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} @@ -7081,24 +6946,28 @@ packages: resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} engines: {node: ^18.17.0 || >=20.5.0} - npm-install-checks@7.1.2: - resolution: {integrity: sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==} - engines: {node: ^18.17.0 || >=20.5.0} + npm-install-checks@8.0.0: + resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} + engines: {node: ^20.17.0 || >=22.9.0} npm-normalize-package-bin@4.0.0: resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} engines: {node: ^18.17.0 || >=20.5.0} + npm-normalize-package-bin@5.0.0: + resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-package-arg@13.0.1: resolution: {integrity: sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==} engines: {node: ^20.17.0 || >=22.9.0} - npm-packlist@10.0.2: - resolution: {integrity: sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==} + npm-packlist@10.0.3: + resolution: {integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==} engines: {node: ^20.17.0 || >=22.9.0} - npm-pick-manifest@11.0.1: - resolution: {integrity: sha512-HnU7FYSWbo7dTVHtK0G+BXbZ0aIfxz/aUCVLN0979Ec6rGUX5cJ6RbgVx5fqb5G31ufz+BVFA7y1SkRTPVNoVQ==} + npm-pick-manifest@11.0.3: + resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} engines: {node: ^20.17.0 || >=22.9.0} npm-registry-fetch@19.0.0: @@ -7499,6 +7368,10 @@ packages: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} + proc-log@6.0.0: + resolution: {integrity: sha512-KG/XsTDN901PNfPfAMmj6N/Ywg9tM+bHK8pAz+27fS4N4Pcr+4zoYBOcGSBu6ceXYNPxkLpa4ohtfxV1XcLAfA==} + engines: {node: ^20.17.0 || >=22.9.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -7575,8 +7448,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.25.0: - resolution: {integrity: sha512-8Xs6q3Ut+C8y7sAaqjIhzv1QykGWG4gc2mEZ2mYE7siZFuRp4xQVehOf8uQKSQAkeL7jXUs3mknEeiqnRqUKvQ==} + puppeteer-core@24.26.1: + resolution: {integrity: sha512-YHZdo3chJ5b9pTYVnuDuoI3UX/tWJFJyRZvkLbThGy6XeHWC+0KI8iN0UMCkvde5l/YOk3huiVZ/PvwgSbwdrA==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -7806,11 +7679,6 @@ packages: '@types/node': optional: true - rollup@4.52.4: - resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.52.5: resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8640,8 +8508,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -8814,8 +8682,8 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-bidi-protocol@0.3.7: - resolution: {integrity: sha512-wIx5Gu/LLTeexxilpk8WxU2cpGAKlfbWRO5h+my6EMD1k5PYqM1qQO1MHUFf4f3KRnhBvpbZU7VkizAgeSEf7g==} + webdriver-bidi-protocol@0.3.8: + resolution: {integrity: sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==} webdriver-js-extender@2.1.0: resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} @@ -9440,7 +9308,7 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.7.2': + '@asamuzakjp/dom-selector@6.7.3': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -9452,12 +9320,10 @@ snapshots: '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.4': {} - '@babel/compat-data@7.28.5': {} '@babel/core@7.28.4': @@ -9467,10 +9333,10 @@ snapshots: '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@10.2.2) @@ -9510,30 +9376,30 @@ snapshots: '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.4 + '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.3 + browserslist: 4.27.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.5)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.5)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 @@ -9553,17 +9419,17 @@ snapshots: '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -9571,7 +9437,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9580,7 +9446,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9596,34 +9462,32 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} @@ -9631,8 +9495,8 @@ snapshots: '@babel/helper-wrap-function@7.28.3': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -9641,10 +9505,6 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 - '@babel/parser@7.28.4': - dependencies: - '@babel/types': 7.28.4 - '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 @@ -9680,7 +9540,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9701,7 +9561,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': @@ -9714,7 +9574,7 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9740,7 +9600,7 @@ snapshots: '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9748,7 +9608,7 @@ snapshots: '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9761,7 +9621,7 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9782,7 +9642,7 @@ snapshots: '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': @@ -9793,7 +9653,7 @@ snapshots: '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': @@ -9832,7 +9692,7 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9893,7 +9753,7 @@ snapshots: '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': @@ -9918,7 +9778,7 @@ snapshots: '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -9951,7 +9811,7 @@ snapshots: '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9960,7 +9820,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9978,7 +9838,7 @@ snapshots: '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': @@ -10034,19 +9894,19 @@ snapshots: '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/preset-env@7.28.5(@babel/core@7.28.5)': @@ -10129,7 +9989,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 esutils: 2.0.3 '@babel/runtime@7.28.4': {} @@ -10140,18 +10000,6 @@ snapshots: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 - '@babel/traverse@7.28.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.4 - '@babel/template': 7.27.2 - '@babel/types': 7.28.4 - debug: 4.4.3(supports-color@10.2.2) - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 @@ -10164,11 +10012,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.28.4': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -10241,13 +10084,13 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@emnapi/core@1.5.0': + '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.5.0': + '@emnapi/runtime@1.6.0': dependencies: tslib: 2.8.1 optional: true @@ -10340,7 +10183,7 @@ snapshots: eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} '@eslint/compat@1.4.0(eslint@9.38.0(jiti@2.6.1))': dependencies: @@ -10716,7 +10559,7 @@ snapshots: arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 - google-auth-library: 10.4.1(supports-color@10.2.2) + google-auth-library: 10.4.2(supports-color@10.2.2) html-entities: 2.6.0 retry-request: 8.0.2(supports-color@10.2.2) teeny-request: 10.1.0(supports-color@10.2.2) @@ -10741,8 +10584,8 @@ snapshots: '@google-cloud/promisify': 5.0.0 '@grpc/proto-loader': 0.7.15 '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.37.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 @@ -10751,7 +10594,7 @@ snapshots: duplexify: 4.1.3 events-intercept: 2.0.0 extend: 3.0.2 - google-auth-library: 10.4.1(supports-color@10.2.2) + google-auth-library: 10.4.2(supports-color@10.2.2) google-gax: 5.0.4(supports-color@10.2.2) grpc-gcp: 1.0.1(protobufjs@7.5.4) is: 3.3.2 @@ -10770,7 +10613,7 @@ snapshots: '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: - google-auth-library: 10.4.1(supports-color@10.2.2) + google-auth-library: 10.4.2(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: '@modelcontextprotocol/sdk': 1.20.2 @@ -10787,7 +10630,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@grpc/proto-loader@0.7.15': dependencies: @@ -11178,8 +11021,8 @@ snapshots: '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 + '@emnapi/core': 1.6.0 + '@emnapi/runtime': 1.6.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -11224,7 +11067,7 @@ snapshots: '@npmcli/promise-spawn': 8.0.3 ini: 5.0.0 lru-cache: 11.2.2 - npm-pick-manifest: 11.0.1 + npm-pick-manifest: 11.0.3 proc-log: 5.0.0 promise-retry: 2.0.1 semver: 7.7.3 @@ -11235,7 +11078,7 @@ snapshots: npm-bundled: 4.0.0 npm-normalize-package-bin: 4.0.0 - '@npmcli/node-gyp@4.0.0': {} + '@npmcli/node-gyp@5.0.0': {} '@npmcli/package-json@7.0.1': dependencies: @@ -11251,15 +11094,19 @@ snapshots: dependencies: which: 5.0.0 + '@npmcli/promise-spawn@9.0.0': + dependencies: + which: 5.0.0 + '@npmcli/redact@3.2.2': {} - '@npmcli/run-script@10.0.0': + '@npmcli/run-script@10.0.2': dependencies: - '@npmcli/node-gyp': 4.0.0 + '@npmcli/node-gyp': 5.0.0 '@npmcli/package-json': 7.0.1 - '@npmcli/promise-spawn': 8.0.3 + '@npmcli/promise-spawn': 9.0.0 node-gyp: 11.5.0 - proc-log: 5.0.0 + proc-log: 6.0.0 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -11385,11 +11232,11 @@ snapshots: '@opentelemetry/api@1.9.0': {} - '@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.37.0 @@ -11570,7 +11417,7 @@ snapshots: optionalDependencies: rollup: 4.52.5 - '@rollup/plugin-commonjs@28.0.8(rollup@4.52.5)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.52.5)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.5) commondir: 1.0.1 @@ -11582,12 +11429,6 @@ snapshots: optionalDependencies: rollup: 4.52.5 - '@rollup/plugin-json@6.1.0(rollup@4.52.4)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.4) - optionalDependencies: - rollup: 4.52.4 - '@rollup/plugin-json@6.1.0(rollup@4.52.5)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.5) @@ -11622,14 +11463,6 @@ snapshots: optionalDependencies: rollup: 4.52.5 - '@rollup/pluginutils@5.3.0(rollup@4.52.4)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.52.4 - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: '@types/estree': 1.0.8 @@ -11638,135 +11471,69 @@ snapshots: optionalDependencies: rollup: 4.52.5 - '@rollup/rollup-android-arm-eabi@4.52.4': - optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': optional: true - '@rollup/rollup-android-arm64@4.52.4': - optional: true - '@rollup/rollup-android-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-arm64@4.52.4': - optional: true - '@rollup/rollup-darwin-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-x64@4.52.4': - optional: true - '@rollup/rollup-darwin-x64@4.52.5': optional: true - '@rollup/rollup-freebsd-arm64@4.52.4': - optional: true - '@rollup/rollup-freebsd-arm64@4.52.5': optional: true - '@rollup/rollup-freebsd-x64@4.52.4': - optional: true - '@rollup/rollup-freebsd-x64@4.52.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.4': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.4': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.4': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.4': - optional: true - '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.4': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.4': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.4': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.4': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.4': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.4': - optional: true - '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-x64-musl@4.52.4': - optional: true - '@rollup/rollup-linux-x64-musl@4.52.5': optional: true - '@rollup/rollup-openharmony-arm64@4.52.4': - optional: true - '@rollup/rollup-openharmony-arm64@4.52.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.4': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.4': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.5': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.4': - optional: true - '@rollup/rollup-win32-x64-gnu@4.52.5': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.4': - optional: true - '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true @@ -11819,7 +11586,7 @@ snapshots: '@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/types': 8.46.2 eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -11856,60 +11623,61 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/babel__code-frame@7.0.6': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@types/big.js@6.2.2': {} '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 - '@types/browser-sync@2.29.0': + '@types/browser-sync@2.29.1': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.18.11 - '@types/serve-static': 1.15.9 + '@types/node': 22.18.12 + '@types/serve-static': 1.15.10 chokidar: 3.6.0 - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -11917,34 +11685,34 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.7 - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/content-disposition@0.5.9': {} '@types/convert-source-map@2.0.3': {} - '@types/cookies@0.9.1': + '@types/cookies@0.9.2': dependencies: '@types/connect': 3.4.38 - '@types/express': 5.0.3 + '@types/express': 5.0.4 '@types/keygrip': 1.0.6 - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/cors@2.8.19': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/debounce@1.2.4': {} '@types/deep-eql@4.0.2': {} - '@types/duplexify@3.6.4': + '@types/duplexify@3.6.5': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/ejs@3.1.5': {} @@ -11964,48 +11732,48 @@ snapshots: '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 1.2.0 + '@types/send': 1.2.1 '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 1.2.0 + '@types/send': 1.2.1 - '@types/express@4.17.23': + '@types/express@4.17.24': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.7 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.9 + '@types/serve-static': 1.15.10 - '@types/express@5.0.3': + '@types/express@5.0.4': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 5.1.0 - '@types/serve-static': 1.15.9 + '@types/serve-static': 1.15.10 '@types/folder-hash@4.0.4': {} '@types/git-raw-commits@5.0.0': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/http-assert@1.5.6': {} '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.16': + '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/ini@4.1.1': {} @@ -12031,14 +11799,14 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 log4js: 6.9.1 transitivePeerDependencies: - supports-color '@types/keygrip@1.0.6': {} - '@types/koa-compose@3.2.8': + '@types/koa-compose@3.2.9': dependencies: '@types/koa': 2.15.0 @@ -12046,18 +11814,18 @@ snapshots: dependencies: '@types/accepts': 1.3.7 '@types/content-disposition': 0.5.9 - '@types/cookies': 0.9.1 + '@types/cookies': 0.9.2 '@types/http-assert': 1.5.6 '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 - '@types/koa-compose': 3.2.8 - '@types/node': 22.18.11 + '@types/koa-compose': 3.2.9 + '@types/node': 22.18.12 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.25.11)': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 webpack: 5.102.1(esbuild@0.25.11) transitivePeerDependencies: - '@swc/core' @@ -12075,14 +11843,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 form-data: 4.0.4 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 - '@types/node@22.18.11': + '@types/node@22.18.12': dependencies: undici-types: 6.21.0 @@ -12092,9 +11860,9 @@ snapshots: '@types/npm-package-arg@6.1.4': {} - '@types/npm-registry-fetch@8.0.8': + '@types/npm-registry-fetch@8.0.9': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12102,12 +11870,12 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.18.11 - '@types/npm-registry-fetch': 8.0.8 + '@types/node': 22.18.12 + '@types/npm-registry-fetch': 8.0.9 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12119,12 +11887,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 - '@types/pumpify@1.4.4': + '@types/pumpify@1.4.5': dependencies: - '@types/duplexify': 3.6.4 - '@types/node': 22.18.11 + '@types/duplexify': 3.6.5 + '@types/node': 22.18.12 '@types/q@0.0.32': {} @@ -12138,7 +11906,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/retry@0.12.2': {} @@ -12146,49 +11914,49 @@ snapshots: '@types/semver@7.7.1': {} - '@types/send@0.17.5': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.11 + '@types/node': 22.18.12 - '@types/send@1.2.0': + '@types/send@1.2.1': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/serve-index@1.9.4': dependencies: - '@types/express': 5.0.3 + '@types/express': 5.0.4 - '@types/serve-static@1.15.9': + '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.18.11 - '@types/send': 0.17.5 + '@types/node': 22.18.12 + '@types/send': 0.17.6 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/stack-trace@0.0.33': {} '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 '@types/yargs-parser@21.0.3': {} @@ -12196,16 +11964,20 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@types/yargs@17.0.34': + dependencies: + '@types/yargs-parser': 21.0.3 + '@types/yarnpkg__lockfile@1.1.9': {} '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 optional: true '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) @@ -12262,8 +12034,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.1': {} - '@typescript-eslint/types@8.46.2': {} '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': @@ -12466,7 +12236,7 @@ snapshots: dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.3 - ast-v8-to-istanbul: 0.3.7 + ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -12482,7 +12252,7 @@ snapshots: '@vitest/expect@4.0.3': dependencies: '@standard-schema/spec': 1.0.0 - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 4.0.3 '@vitest/utils': 4.0.3 chai: 6.2.0 @@ -12593,7 +12363,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.25.0(bufferutil@4.0.9) + puppeteer-core: 24.26.1(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -12987,11 +12757,13 @@ snapshots: assert-plus@1.0.0: {} + assertion-error@2.0.1: {} + ast-types@0.13.4: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.7: + ast-v8-to-istanbul@0.3.8: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -13015,7 +12787,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.26.3 + browserslist: 4.27.0 caniuse-lite: 1.0.30001751 fraction.js: 4.3.7 normalize-range: 0.1.2 @@ -13041,7 +12813,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: - '@babel/compat-data': 7.28.4 + '@babel/compat-data': 7.28.5 '@babel/core': 7.28.5 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) semver: 6.3.1 @@ -13065,14 +12837,14 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.8.0: {} + bare-events@2.8.1: {} - bare-fs@4.4.11: + bare-fs@4.5.0: dependencies: - bare-events: 2.8.0 + bare-events: 2.8.1 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.8.0) - bare-url: 2.3.0 + bare-stream: 2.7.0(bare-events@2.8.1) + bare-url: 2.3.1 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller @@ -13087,17 +12859,17 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.8.0): + bare-stream@2.7.0(bare-events@2.8.1): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.8.0 + bare-events: 2.8.1 transitivePeerDependencies: - bare-abort-controller - react-native-b4a optional: true - bare-url@2.3.0: + bare-url@2.3.1: dependencies: bare-path: 3.0.0 optional: true @@ -13106,7 +12878,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.18: {} + baseline-browser-mapping@2.8.20: {} basic-ftp@5.0.5: {} @@ -13266,13 +13038,13 @@ snapshots: dependencies: pako: 0.2.9 - browserslist@4.26.3: + browserslist@4.27.0: dependencies: - baseline-browser-mapping: 2.8.18 + baseline-browser-mapping: 2.8.20 caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.237 - node-releases: 2.0.25 - update-browserslist-db: 1.1.3(browserslist@4.26.3) + electron-to-chromium: 1.5.240 + node-releases: 2.0.26 + update-browserslist-db: 1.1.4(browserslist@4.27.0) browserstack@1.6.1: dependencies: @@ -13406,7 +13178,7 @@ snapshots: checkpoint-stream@0.1.2: dependencies: - '@types/pumpify': 1.4.4 + '@types/pumpify': 1.4.5 events-intercept: 2.0.0 pumpify: 1.5.1 split-array-stream: 1.0.3 @@ -13434,7 +13206,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13443,7 +13215,7 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@9.1.0(devtools-protocol@0.0.1508733): + chromium-bidi@10.5.1(devtools-protocol@0.0.1508733): dependencies: devtools-protocol: 0.0.1508733 mitt: 3.0.1 @@ -13463,7 +13235,7 @@ snapshots: cli-spinners@3.3.0: {} - cli-truncate@5.1.0: + cli-truncate@5.1.1: dependencies: slice-ansi: 7.1.2 string-width: 8.1.0 @@ -13550,7 +13322,7 @@ snapshots: table-layout: 4.1.1 typical: 7.3.0 - commander@14.0.1: {} + commander@14.0.2: {} commander@2.20.3: {} @@ -13648,7 +13420,7 @@ snapshots: core-js-compat@3.46.0: dependencies: - browserslist: 4.26.3 + browserslist: 4.27.0 core-util-is@1.0.2: {} @@ -13974,7 +13746,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.237: {} + electron-to-chromium@1.5.240: {} emoji-regex@10.6.0: {} @@ -14013,7 +13785,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.18.11 + '@types/node': 22.18.12 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14270,7 +14042,7 @@ snapshots: eslint@9.38.0(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.1 '@eslint/core': 0.16.0 @@ -14348,7 +14120,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.0 + bare-events: 2.8.1 transitivePeerDependencies: - bare-abort-controller @@ -14773,7 +14545,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.12.0: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -14865,7 +14637,7 @@ snapshots: pify: 2.3.0 pinkie-promise: 2.0.1 - google-auth-library@10.4.1(supports-color@10.2.2): + google-auth-library@10.4.2(supports-color@10.2.2): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -14882,7 +14654,7 @@ snapshots: '@grpc/grpc-js': 1.14.0 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 - google-auth-library: 10.4.1(supports-color@10.2.2) + google-auth-library: 10.4.2(supports-color@10.2.2) google-logging-utils: 1.1.1 node-fetch: 3.3.2 object-hash: 3.0.0 @@ -15062,21 +14834,21 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.23): + http-proxy-middleware@2.0.9(@types/express@4.17.24): dependencies: - '@types/http-proxy': 1.17.16 + '@types/http-proxy': 1.17.17 http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.24 transitivePeerDependencies: - debug http-proxy-middleware@3.0.5: dependencies: - '@types/http-proxy': 1.17.16 + '@types/http-proxy': 1.17.17 debug: 4.4.3(supports-color@10.2.2) http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 @@ -15200,7 +14972,7 @@ snapshots: ini@6.0.0: {} - injection-js@2.6.0: + injection-js@2.6.1: dependencies: tslib: 2.8.1 @@ -15446,7 +15218,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.28.5 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -15456,7 +15228,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.28.5 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.3 @@ -15536,7 +15308,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.18.11 + '@types/node': 22.18.12 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15556,7 +15328,7 @@ snapshots: jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: - '@asamuzakjp/dom-selector': 6.7.2 + '@asamuzakjp/dom-selector': 6.7.3 cssstyle: 5.3.1(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15857,7 +15629,7 @@ snapshots: listr2@9.0.5: dependencies: - cli-truncate: 5.1.0 + cli-truncate: 5.1.1 colorette: 2.0.20 eventemitter3: 5.0.1 log-update: 6.1.0 @@ -16239,30 +16011,30 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.52.4) + '@rollup/plugin-json': 6.1.0(rollup@4.52.5) '@rollup/wasm-node': 4.52.5 ajv: 8.17.1 ansi-colors: 4.1.3 - browserslist: 4.26.3 + browserslist: 4.27.0 chokidar: 4.0.3 - commander: 14.0.1 + commander: 14.0.2 dependency-graph: 1.0.0 esbuild: 0.25.11 find-cache-directory: 6.0.0 - injection-js: 2.6.0 + injection-js: 2.6.1 jsonc-parser: 3.3.1 less: 4.4.2 ora: 9.0.0 piscina: 5.1.3 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.52.4)(typescript@5.9.3) + rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.93.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.52.4 + rollup: 4.52.5 nock@14.0.10: dependencies: @@ -16322,7 +16094,7 @@ snapshots: transitivePeerDependencies: - supports-color - node-releases@2.0.25: {} + node-releases@2.0.26: {} nopt@8.1.0: dependencies: @@ -16338,12 +16110,14 @@ snapshots: dependencies: npm-normalize-package-bin: 4.0.0 - npm-install-checks@7.1.2: + npm-install-checks@8.0.0: dependencies: semver: 7.7.3 npm-normalize-package-bin@4.0.0: {} + npm-normalize-package-bin@5.0.0: {} + npm-package-arg@13.0.1: dependencies: hosted-git-info: 9.0.2 @@ -16351,15 +16125,15 @@ snapshots: semver: 7.7.3 validate-npm-package-name: 6.0.2 - npm-packlist@10.0.2: + npm-packlist@10.0.3: dependencies: ignore-walk: 8.0.0 - proc-log: 5.0.0 + proc-log: 6.0.0 - npm-pick-manifest@11.0.1: + npm-pick-manifest@11.0.3: dependencies: - npm-install-checks: 7.1.2 - npm-normalize-package-bin: 4.0.0 + npm-install-checks: 8.0.0 + npm-normalize-package-bin: 5.0.0 npm-package-arg: 13.0.1 semver: 7.7.3 @@ -16571,13 +16345,13 @@ snapshots: '@npmcli/installed-package-contents': 3.0.0 '@npmcli/package-json': 7.0.1 '@npmcli/promise-spawn': 8.0.3 - '@npmcli/run-script': 10.0.0 + '@npmcli/run-script': 10.0.2 cacache: 20.0.1 fs-minipass: 3.0.3 minipass: 7.1.2 npm-package-arg: 13.0.1 - npm-packlist: 10.0.2 - npm-pick-manifest: 11.0.1 + npm-packlist: 10.0.3 + npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 @@ -16785,6 +16559,8 @@ snapshots: proc-log@5.0.0: {} + proc-log@6.0.0: {} + process-nextick-args@2.0.1: {} process-warning@1.0.0: {} @@ -16818,7 +16594,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.11 + '@types/node': 22.18.12 long: 5.3.2 protractor@7.0.0: @@ -16906,14 +16682,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.25.0(bufferutil@4.0.9): + puppeteer-core@24.26.1(bufferutil@4.0.9): dependencies: '@puppeteer/browsers': 2.10.12 - chromium-bidi: 9.1.0(devtools-protocol@0.0.1508733) + chromium-bidi: 10.5.1(devtools-protocol@0.0.1508733) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1508733 typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.3.7 + webdriver-bidi-protocol: 0.3.8 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-abort-controller @@ -17205,14 +16981,6 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.52.4)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.52.4 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17221,40 +16989,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.11)(rollup@4.52.5): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.12)(rollup@4.52.5): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.52.5) rollup: 4.52.5 optionalDependencies: - '@types/node': 22.18.11 - - rollup@4.52.4: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.4 - '@rollup/rollup-android-arm64': 4.52.4 - '@rollup/rollup-darwin-arm64': 4.52.4 - '@rollup/rollup-darwin-x64': 4.52.4 - '@rollup/rollup-freebsd-arm64': 4.52.4 - '@rollup/rollup-freebsd-x64': 4.52.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 - '@rollup/rollup-linux-arm-musleabihf': 4.52.4 - '@rollup/rollup-linux-arm64-gnu': 4.52.4 - '@rollup/rollup-linux-arm64-musl': 4.52.4 - '@rollup/rollup-linux-loong64-gnu': 4.52.4 - '@rollup/rollup-linux-ppc64-gnu': 4.52.4 - '@rollup/rollup-linux-riscv64-gnu': 4.52.4 - '@rollup/rollup-linux-riscv64-musl': 4.52.4 - '@rollup/rollup-linux-s390x-gnu': 4.52.4 - '@rollup/rollup-linux-x64-gnu': 4.52.4 - '@rollup/rollup-linux-x64-musl': 4.52.4 - '@rollup/rollup-openharmony-arm64': 4.52.4 - '@rollup/rollup-win32-arm64-msvc': 4.52.4 - '@rollup/rollup-win32-ia32-msvc': 4.52.4 - '@rollup/rollup-win32-x64-gnu': 4.52.4 - '@rollup/rollup-win32-x64-msvc': 4.52.4 - fsevents: 2.3.3 + '@types/node': 22.18.12 rollup@4.52.5: dependencies: @@ -17906,7 +17646,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.4.11 + bare-fs: 4.5.0 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -18064,14 +17804,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.18.11)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.18.12)(typescript@5.9.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': 22.18.11 + '@types/node': 22.18.12 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18096,7 +17836,7 @@ snapshots: tsx@4.20.6: dependencies: esbuild: 0.25.11 - get-tsconfig: 4.12.0 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -18256,9 +17996,9 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.26.3): + update-browserslist-db@1.1.4(browserslist@4.27.0): dependencies: - browserslist: 4.26.3 + browserslist: 4.27.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -18452,7 +18192,7 @@ snapshots: web-vitals@4.2.4: {} - webdriver-bidi-protocol@0.3.7: {} + webdriver-bidi-protocol@0.3.8: {} webdriver-js-extender@2.1.0: dependencies: @@ -18494,10 +18234,10 @@ snapshots: dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 + '@types/express': 4.17.24 '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.9 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -18508,7 +18248,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.24) ipaddr.js: 2.2.0 launch-editor: 2.11.1 open: 10.2.0 @@ -18551,7 +18291,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.26.3 + browserslist: 4.27.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 From 20079ed73dc138db3f22aea20eeaa4b0f8b46c52 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:30:37 -0400 Subject: [PATCH 1687/2162] fix(@angular/build): allow custom runner configuration file for unit-test Adds a new `runnerConfig` option to the `unit-test` system to provide more control over the test runner's configuration file. This option is runner-agnostic and enhances flexibility for both Vitest and Karma. The option accepts a boolean or a string path: - `true`: Automatically searches for a default config file (`karma.conf.js` or `vitest.config.ts`). If not found, the runner will use its internal default configuration. - `false` (default): Disables the use of any external config file. - `path/to/config`: Uses the specified configuration file. For Vitest, the loaded configuration is deep-merged with the system's programmatic config. This allows users to add or override advanced options (like `test.coverage`) while preserving the essential in-memory integration. The system's settings take precedence in case of conflicts. Please note that while the file is loaded, the Angular team does not provide direct support for its specific contents or any third-party plugins used within it. Informational messages are now logged to indicate which configuration file is being used, improving transparency. --- goldens/public-api/angular/build/index.api.md | 1 + .../build/src/builders/unit-test/options.ts | 4 +- .../unit-test/runners/karma/executor.ts | 18 ++++ .../unit-test/runners/vitest/executor.ts | 14 +-- .../unit-test/runners/vitest/index.ts | 6 ++ .../unit-test/runners/vitest/plugins.ts | 7 +- .../build/src/builders/unit-test/schema.json | 5 ++ .../tests/options/runner-config_spec.ts | 85 +++++++++++++++++++ 8 files changed, 129 insertions(+), 11 deletions(-) create mode 100644 packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index bce60e18850d..939d7e26dc5e 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -235,6 +235,7 @@ export type UnitTestBuilderOptions = { providersFile?: string; reporters?: SchemaReporter[]; runner?: Runner; + runnerConfig?: RunnerConfig; setupFiles?: string[]; tsConfig?: string; ui?: boolean; diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 47db08e52d17..ef7132198451 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -54,7 +54,7 @@ export async function normalizeOptions( const buildTargetSpecifier = options.buildTarget ?? `::development`; const buildTarget = targetFromTargetString(buildTargetSpecifier, projectName, 'build'); - const { runner, browsers, progress, filter, browserViewport, ui } = options; + const { runner, browsers, progress, filter, browserViewport, ui, runnerConfig } = options; if (ui && runner !== 'vitest') { throw new Error('The "ui" option is only available for the "vitest" runner.'); @@ -127,6 +127,8 @@ export async function normalizeOptions( : [], dumpVirtualFiles: options.dumpVirtualFiles, listTests: options.listTests, + runnerConfig: + typeof runnerConfig === 'string' ? path.join(workspaceRoot, runnerConfig) : runnerConfig, }; } diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index c81f22d0b7d1..9d1627df000b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -7,6 +7,8 @@ */ import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; +import fs from 'node:fs/promises'; +import path from 'node:path'; import type { ApplicationBuilderInternalOptions } from '../../../application/options'; import type { KarmaBuilderOptions, KarmaBuilderTransformsOptions } from '../../../karma'; import { NormalizedUnitTestBuilderOptions } from '../../options'; @@ -50,7 +52,23 @@ export class KarmaExecutor implements TestExecutor { await context.getBuilderNameForTarget(unitTestOptions.buildTarget), )) as unknown as ApplicationBuilderInternalOptions; + let karmaConfig: string | undefined; + if (typeof unitTestOptions.runnerConfig === 'string') { + karmaConfig = unitTestOptions.runnerConfig; + context.logger.info(`Using Karma configuration file: ${karmaConfig}`); + } else if (unitTestOptions.runnerConfig) { + const potentialPath = path.join(unitTestOptions.projectRoot, 'karma.conf.js'); + try { + await fs.access(potentialPath); + karmaConfig = potentialPath; + context.logger.info(`Using Karma configuration file: ${karmaConfig}`); + } catch { + context.logger.info('No Karma configuration file found. Using default configuration.'); + } + } + const karmaOptions: KarmaBuilderOptions = { + karmaConfig, tsConfig: unitTestOptions.tsConfig ?? buildTargetOptions.tsConfig, polyfills: buildTargetOptions.polyfills, assets: buildTargetOptions.assets, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 520e8c461201..00a9bb71c18b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -139,6 +139,7 @@ export class VitestExecutor implements TestExecutor { browserViewport, ui, } = this.options; + let vitestNodeModule; try { vitestNodeModule = await import('vitest/node'); @@ -192,21 +193,22 @@ export class VitestExecutor implements TestExecutor { 'test', undefined, { - // Disable configuration file resolution/loading - config: false, + config: this.options.runnerConfig === true ? undefined : this.options.runnerConfig, root: workspaceRoot, project: ['base', this.projectName], name: 'base', include: [], testNamePattern: this.options.filter, - reporters: reporters ?? ['default'], - outputFile, watch, ui, - coverage: await generateCoverageOption(coverage, this.projectName), - ...debugOptions, }, { + test: { + coverage: await generateCoverageOption(coverage, this.projectName), + outputFile, + ...debugOptions, + ...(reporters ? { reporters } : {}), + }, server: { // Disable the actual file watcher. The boolean watch option above should still // be enabled as it controls other internal behavior related to rerunning tests. diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index 2b76c5fd7456..4c8e8ad7043b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -47,6 +47,12 @@ const VitestTestRunner: TestRunner = { const projectName = context.target?.project; assert(projectName, 'The builder requires a target.'); + if (typeof options.runnerConfig === 'string') { + context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`); + } else if (options.runnerConfig) { + context.logger.info('Automatically searching for and using Vitest configuration file.'); + } + return new VitestExecutor(projectName, options, testEntryPointMappings); }, }; diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index df7d2e06449f..fa51ae996d2f 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -51,12 +51,11 @@ export function createVitestPlugins( root: workspaceRoot, globals: true, setupFiles: testSetupFiles, - // Use `jsdom` if no browsers are explicitly configured. - // `node` is effectively no "environment" and the default. - environment: browserOptions.browser ? 'node' : 'jsdom', - browser: browserOptions.browser, include: options.include, ...(options.exclude ? { exclude: options.exclude } : {}), + browser: browserOptions.browser, + // Use `jsdom` if no browsers are explicitly configured. + ...(browserOptions.browser ? {} : { environment: 'jsdom' }), }, plugins: [ { diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 7ab96760a20a..ed766c1774a2 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -19,6 +19,11 @@ "default": "vitest", "enum": ["karma", "vitest"] }, + "runnerConfig": { + "type": ["boolean", "string"], + "description": "Specifies the configuration file for the selected test runner. If a string is provided, it will be used as the path to the configuration file. If `true`, the builder will search for a default configuration file (e.g., `vitest.config.ts` or `karma.conf.js`). If `false`, no external configuration file will be used.\\nFor Vitest, this enables advanced options and the use of custom plugins. Please note that while the file is loaded, the Angular team does not provide direct support for its specific contents or any third-party plugins used within it.", + "default": false + }, "browsers": { "description": "Specifies the browsers to use for test execution. When not specified, tests are run in a Node.js environment using jsdom. For both Vitest and Karma, browser names ending with 'Headless' (e.g., 'ChromeHeadless') will enable headless mode.", "type": "array", diff --git a/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts new file mode 100644 index 000000000000..54e4d9b21d13 --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts @@ -0,0 +1,85 @@ +/** + * @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, + describeBuilder, + UNIT_TEST_BUILDER_INFO, + setupApplicationTarget, +} from '../setup'; + +const VITEST_CONFIG_CONTENT = ` +import { defineConfig } from 'vitest/config'; +export default defineConfig({ + test: { + reporters: [['junit', { outputFile: './vitest-results.xml' }]], + }, +}); +`; + +describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { + describe('Option: "runnerConfig"', () => { + beforeEach(() => { + setupApplicationTarget(harness); + }); + + describe('Vitest Runner', () => { + it('should use a specified config file path', async () => { + harness.writeFile('custom-vitest.config.ts', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'custom-vitest.config.ts', + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toExist(); + }); + + it('should search for a config file when `true`', async () => { + harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: true, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toExist(); + }); + + it('should ignore config file when `false`', async () => { + harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: false, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toNotExist(); + }); + + it('should ignore config file by default', async () => { + harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toNotExist(); + }); + }); + }); +}); From 2bcd188594a64b55ff5746f4ab6a4749bcb86265 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 28 Oct 2025 06:06:22 +0000 Subject: [PATCH 1688/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 4 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 340 ++++++++++++++-------------- 3 files changed, 173 insertions(+), 173 deletions(-) diff --git a/package.json b/package.json index 5270ef8b0c7a..4da4457ffa80 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@angular/platform-server": "21.0.0-next.9", "@angular/router": "21.0.0-next.9", "@angular/service-worker": "21.0.0-next.9", - "@babel/core": "7.28.4", + "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.0", @@ -138,7 +138,7 @@ "typescript": "5.9.3", "undici": "7.16.0", "unenv": "^1.10.0", - "verdaccio": "6.2.0", + "verdaccio": "6.2.1", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", "zod": "4.1.12", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index b7fd32ff3000..90f03c79b46f 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.44", + "rolldown": "1.0.0-beta.45", "sass": "1.93.2", "semver": "7.7.3", "source-map-support": "0.5.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fecd55791818..16468cc147ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: specifier: 21.0.0-next.9 version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@babel/core': - specifier: 7.28.4 - version: 7.28.4 + specifier: 7.28.5 + version: 7.28.5 '@bazel/bazelisk': specifier: 1.26.0 version: 1.26.0 @@ -302,8 +302,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.2.0 - version: 6.2.0(encoding@0.1.13) + specifier: 6.2.1 + version: 6.2.1(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 @@ -404,8 +404,8 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.44 - version: 1.0.0-beta.44 + specifier: 1.0.0-beta.45 + version: 1.0.0-beta.45 sass: specifier: 1.93.2 version: 1.93.2 @@ -2918,95 +2918,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.44': - resolution: {integrity: sha512-g9ejDOehJFhxC1DIXQuZQ9bKv4lRDioOTL42cJjFjqKPl1L7DVb9QQQE1FxokGEIMr6FezLipxwnzOXWe7DNPg==} + '@rolldown/binding-android-arm64@1.0.0-beta.45': + resolution: {integrity: sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.44': - resolution: {integrity: sha512-PxAW1PXLPmCzfhfKIS53kwpjLGTUdIfX4Ht+l9mj05C3lYCGaGowcNsYi2rdxWH24vSTmeK+ajDNRmmmrK0M7g==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.45': + resolution: {integrity: sha512-xjCv4CRVsSnnIxTuyH1RDJl5OEQ1c9JYOwfDAHddjJDxCw46ZX9q80+xq7Eok7KC4bRSZudMJllkvOKv0T9SeA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.44': - resolution: {integrity: sha512-/CtQqs1oO9uSb5Ju60rZvsdjE7Pzn8EK2ISAdl2jedjMzeD/4neNyCbwyJOAPzU+GIQTZVyrFZJX+t7HXR1R/g==} + '@rolldown/binding-darwin-x64@1.0.0-beta.45': + resolution: {integrity: sha512-ddcO9TD3D/CLUa/l8GO8LHzBOaZqWg5ClMy3jICoxwCuoz47h9dtqPsIeTiB6yR501LQTeDsjA4lIFd7u3Ljfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.44': - resolution: {integrity: sha512-V5Q5W9c4+2GJ4QabmjmVV6alY97zhC/MZBaLkDtHwGy3qwzbM4DYgXUbun/0a8AH5hGhuU27tUIlYz6ZBlvgOA==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.45': + resolution: {integrity: sha512-MBTWdrzW9w+UMYDUvnEuh0pQvLENkl2Sis15fHTfHVW7ClbGuez+RWopZudIDEGkpZXdeI4CkRXk+vdIIebrmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44': - resolution: {integrity: sha512-X6adjkHeFqKsTU0FXdNN9HY4LDozPqIfHcnXovE5RkYLWIjMWuc489mIZ6iyhrMbCqMUla9IOsh5dvXSGT9o9A==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': + resolution: {integrity: sha512-4YgoCFiki1HR6oSg+GxxfzfnVCesQxLF1LEnw9uXS/MpBmuog0EOO2rYfy69rWP4tFZL9IWp6KEfGZLrZ7aUog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44': - resolution: {integrity: sha512-kRRKGZI4DXWa6ANFr3dLA85aSVkwPdgXaRjfanwY84tfc3LncDiIjyWCb042e3ckPzYhHSZ3LmisO+cdOIYL6Q==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': + resolution: {integrity: sha512-LE1gjAwQRrbCOorJJ7LFr10s5vqYf5a00V5Ea9wXcT2+56n5YosJkcp8eQ12FxRBv2YX8dsdQJb+ZTtYJwb6XQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.44': - resolution: {integrity: sha512-hMtiN9xX1NhxXBa2U3Up4XkVcsVp2h73yYtMDY59z9CDLEZLrik9RVLhBL5QtoX4zZKJ8HZKJtWuGYvtmkCbIQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': + resolution: {integrity: sha512-tdy8ThO/fPp40B81v0YK3QC+KODOmzJzSUOO37DinQxzlTJ026gqUSOM8tzlVixRbQJltgVDCTYF8HNPRErQTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.44': - resolution: {integrity: sha512-rd1LzbpXQuR8MTG43JB9VyXDjG7ogSJbIkBpZEHJ8oMKzL6j47kQT5BpIXrg3b5UVygW9QCI2fpFdMocT5Kudg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': + resolution: {integrity: sha512-lS082ROBWdmOyVY/0YB3JmsiClaWoxvC+dA8/rbhyB9VLkvVEaihLEOr4CYmrMse151C4+S6hCw6oa1iewox7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.44': - resolution: {integrity: sha512-qI2IiPqmPRW25exXkuQr3TlweCDc05YvvbSDRPCuPsWkwb70dTiSoXn8iFxT4PWqTi71wWHg1Wyta9PlVhX5VA==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': + resolution: {integrity: sha512-Hi73aYY0cBkr1/SvNQqH8Cd+rSV6S9RB5izCv0ySBcRnd/Wfn5plguUoGYwBnhHgFbh6cPw9m2dUVBR6BG1gxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.44': - resolution: {integrity: sha512-+vHvEc1pL5iJRFlldLC8mjm6P4Qciyfh2bh5ZI6yxDQKbYhCHRKNURaKz1mFcwxhVL5YMYsLyaqM3qizVif9MQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': + resolution: {integrity: sha512-fljEqbO7RHHogNDxYtTzr+GNjlfOx21RUyGmF+NrkebZ8emYYiIqzPxsaMZuRx0rgZmVmliOzEp86/CQFDKhJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.44': - resolution: {integrity: sha512-XSgLxRrtFj6RpTeMYmmQDAwHjKseYGKUn5LPiIdW4Cq+f5SBSStL2ToBDxkbdxKPEbCZptnLPQ/nfKcAxrC8Xg==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': + resolution: {integrity: sha512-ZJDB7lkuZE9XUnWQSYrBObZxczut+8FZ5pdanm8nNS1DAo8zsrPuvGwn+U3fwU98WaiFsNrA4XHngesCGr8tEQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44': - resolution: {integrity: sha512-cF1LJdDIX02cJrFrX3wwQ6IzFM7I74BYeKFkzdcIA4QZ0+2WA7/NsKIgjvrunupepWb1Y6PFWdRlHSaz5AW1Wg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': + resolution: {integrity: sha512-zyzAjItHPUmxg6Z8SyRhLdXlJn3/D9KL5b9mObUrBHhWS/GwRH4665xCiFqeuktAhhWutqfc+rOV2LjK4VYQGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44': - resolution: {integrity: sha512-5uaJonDafhHiMn+iEh7qUp3QQ4Gihv3lEOxKfN8Vwadpy0e+5o28DWI42DpJ9YBYMrVy4JOWJ/3etB/sptpUwA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': + resolution: {integrity: sha512-wODcGzlfxqS6D7BR0srkJk3drPwXYLu7jPHN27ce2c4PUnVVmJnp9mJzUQGT4LpmHmmVdMZ+P6hKvyTGBzc1CA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.44': - resolution: {integrity: sha512-vsqhWAFJkkmgfBN/lkLCWTXF1PuPhMjfnAyru48KvF7mVh2+K7WkKYHezF3Fjz4X/mPScOcIv+g6cf6wnI6eWg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': + resolution: {integrity: sha512-wiU40G1nQo9rtfvF9jLbl79lUgjfaD/LTyUEw2Wg/gdF5OhjzpKMVugZQngO+RNdwYaNj+Fs+kWBWfp4VXPMHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.44': - resolution: {integrity: sha512-g6eW7Zwnr2c5RADIoqziHoVs6b3W5QTQ4+qbpfjbkMJ9x+8Og211VW/oot2dj9dVwaK/UyC6Yo+02gV+wWQVNg==} + '@rolldown/pluginutils@1.0.0-beta.45': + resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -3612,20 +3612,20 @@ packages: resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.23': - resolution: {integrity: sha512-a2/ZeCxG0TiCZNhhtGI/SCO5+D060eY8UMJDHck+1dt1YtpwJprBDMmuj8L2xFsAMFMTwP6u2JmynvVUst8gjg==} + '@verdaccio/auth@8.0.0-next-8.24': + resolution: {integrity: sha512-stRp0DdTTx3p6dnh2cKOPJZOhu6sZOf8evV2fpYtADYW0UyhhZwELBXukpa5WGQ3H3rWzsXSaccra+D7tB1LgA==} engines: {node: '>=18'} - '@verdaccio/config@8.0.0-next-8.23': - resolution: {integrity: sha512-xHoks1T7ZjgVqHddzYt/VHLrOWV5IvzJEGAc7HavsBo4yJ2R+ubt+I3V1ariRuSmIEaZ55FS/9AIWomxlWWyXQ==} + '@verdaccio/config@8.0.0-next-8.24': + resolution: {integrity: sha512-TRTVY6g2bH5V/1MQOXmdwOIuiT8i/tAtRX4T7FHwCutWTMfdFLgwy4e1VvTH8d1MwGRNyVin4O8PHVu5Xh4ouA==} engines: {node: '>=18'} '@verdaccio/core@8.0.0-next-8.21': resolution: {integrity: sha512-n3Y8cqf84cwXxUUdTTfEJc8fV55PONPKijCt2YaC0jilb5qp1ieB3d4brqTOdCdXuwkmnG2uLCiGpUd/RuSW0Q==} engines: {node: '>=18'} - '@verdaccio/core@8.0.0-next-8.23': - resolution: {integrity: sha512-ySMz9LoRylremqSpe1ryNClExkIwtuqHrIEj82gZWhhaYsaydCPSXNf6ZIUq32S71Zq3I5IKW0UAZRaM5/uCfw==} + '@verdaccio/core@8.0.0-next-8.24': + resolution: {integrity: sha512-58Et0Mj562ergUd7galslWNsTseOHBCDkCIHokmoeWGX4+P46Aoa9+G0laFHyZxxfkuGkZXhO1WHysc9LzkfiA==} engines: {node: '>=18'} '@verdaccio/file-locking@10.3.1': @@ -3636,59 +3636,59 @@ packages: resolution: {integrity: sha512-F6xQWvsZnEyGjugrYfe+D/ChSVudXmBFWi8xuTIX6PAdp7dk9x9biOGQFW8O3GSAK8UhJ6WlRisQKJeYRa6vWQ==} engines: {node: '>=18'} - '@verdaccio/hooks@8.0.0-next-8.23': - resolution: {integrity: sha512-E18AWmjys990s94COG6AmJ2clp+YCYUqx6ZticLMG2hK72BmveSKBDmvaZvl81Jci943gVPPT0j9eapK6JIu8A==} + '@verdaccio/hooks@8.0.0-next-8.24': + resolution: {integrity: sha512-jrBHk51rsANI47YbHCFKprBPelLDklwKhkMINEYnFOQwuB3HEcupd6hGNDaj64sRnZNoK2VuJH0cAWn0iqVErg==} engines: {node: '>=18'} - '@verdaccio/loaders@8.0.0-next-8.13': - resolution: {integrity: sha512-AXZ+A8WgLjSuRZ3tUlRhpITTWdF7B/mQDPQDZFjSmHKg4WBvOSfb04rE+IzdC49ARFQbLcCs/6uZ/jO4lkm9kA==} + '@verdaccio/loaders@8.0.0-next-8.14': + resolution: {integrity: sha512-cWrTTJ7HWjrzhXIVVXPHFUFTdzbRgvU5Xwte8O/JPMtrEAxtbjg18kCIdQwAcomB1S+BkffnnQJ8TPLymnuCrg==} engines: {node: '>=18'} '@verdaccio/local-storage-legacy@11.1.1': resolution: {integrity: sha512-P6ahH2W6/KqfJFKP+Eid7P134FHDLNvHa+i8KVgRVBeo2/IXb6FEANpM1mCVNvPANu0LCAmNJBOXweoUKViaoA==} engines: {node: '>=18'} - '@verdaccio/logger-commons@8.0.0-next-8.23': - resolution: {integrity: sha512-Ddcy00R7UlKfqQ0X9cZgNE7p7oKUPSCIMyuI2u8kT0ATxwFIYEBU+WXDH+1UzeqiQU2rnHoAGvYqkKGsN3vokA==} + '@verdaccio/logger-commons@8.0.0-next-8.24': + resolution: {integrity: sha512-gEBUajG1m93xG+FJ+9+Mxg3FC9tSnP0RHyrhb4gPZPqft7JpRkwjbqpjxASGzPyxdTJZwiAefr7aafXv0xMpJA==} engines: {node: '>=18'} '@verdaccio/logger-prettify@8.0.0-next-8.4': resolution: {integrity: sha512-gjI/JW29fyalutn/X1PQ0iNuGvzeVWKXRmnLa7gXVKhdi4p37l/j7YZ7n44XVbbiLIKAK0pbavEg9Yr66QrYaA==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.23': - resolution: {integrity: sha512-eWiv//xyWgFjDXmBIoq1cgdNMJZBuEVo9NfRmUN3vnqecFL2m6jIyERC9J9G8Z/t91LQZfOBiEL9nWG0GC3/Rw==} + '@verdaccio/logger@8.0.0-next-8.24': + resolution: {integrity: sha512-7/arkwQy2zI5W5z9zMf5wyWiZx18xbLultteNPWHkQv9CtoFtuK+TSY8rH7ITtCGoNCcB94jvvTYRylxAdaHEw==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.23': - resolution: {integrity: sha512-4N+VNaZn3F0tpZdNhljJqL8cjNaN/ver+sXv45pienaMddYquk1oiG657f4fouj6EioZDHc9OLmU44Tuk/GNEQ==} + '@verdaccio/middleware@8.0.0-next-8.24': + resolution: {integrity: sha512-LuFralbC8bxl2yQx9prKEMrNbxj8BkojcUDIa+jZZRnghaZrMm1yHqf5eLHCrBBIOM3m2thJ6Ux2UfBCQP4UKA==} engines: {node: '>=18'} '@verdaccio/search-indexer@8.0.0-next-8.5': resolution: {integrity: sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.15': - resolution: {integrity: sha512-ZfaaptfNRjMqtTxkCJG+8eXcMD28RIRFvJHRd1FQ1vE8oKQ828ReVDezVu1baPh3hgHXXyy1faxG8GKKQZ7RSw==} + '@verdaccio/signature@8.0.0-next-8.16': + resolution: {integrity: sha512-JBIpoYJQFjo3ITTRjum1IjXxNrSYcPoBLZTPlt9OLL5Brd7s1fJkTBgs9tbcCRZPrek/XBIJ/cLFZZn8zkc/bQ==} 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.23': - resolution: {integrity: sha512-99pRfhj9yZMIogiMOzaJq4GTISDM2Pd29Zwycevx1pCJnnMmBKqrkgttwAuSOZMSYH+ccTqLWT7qkHUb2FBReA==} + '@verdaccio/tarball@13.0.0-next-8.24': + resolution: {integrity: sha512-rDz8gWukO7dcaWzMTr7wMvKPUsRHclVzZljyTERplpIX9NWGHRsMRO7NjoTIUWtDS0euMlRVDnR8QVnYDWl2uA==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.23': - resolution: {integrity: sha512-QJEWMCaYv8u5f50zP98najl8gp5CzaD7GZc4cQtGdRMGKYj/QBoK++qxs28/IiAWBpeKw3l2Wtr82c9jfj8arQ==} + '@verdaccio/ui-theme@8.0.0-next-8.24': + resolution: {integrity: sha512-A8lMenzJmC0EioBjQ9+L2e8tv/iEB/jLJKH4WJjPYa8B1xlm/LLUuk2aBg7pYD1fPWuazvJiH/NAnkrA09541g==} - '@verdaccio/url@13.0.0-next-8.23': - resolution: {integrity: sha512-dn6oha8FJZv54FVzDq0BtptrhH6brtntEzLN0IqtcuFstgSwnwUVNsZnZLl9Qg6Sw0jgekrrWMLmnetdgDUi3A==} + '@verdaccio/url@13.0.0-next-8.24': + resolution: {integrity: sha512-zNHR9qgiDTXp+IuOtz925tzGteXGj18IZphvxo2apgz3cAeUpL/nnmp4ZScczpxWxE8sT/88xVYgJm+Ec8fNCA==} engines: {node: '>=18'} - '@verdaccio/utils@8.1.0-next-8.23': - resolution: {integrity: sha512-sgjJVs3BAKL0aW13gGcM1kMf2s0gLQgy2CJLbpta7D0A/CebBEnEEWgv4id2uVlTSw2XDXcEMKPUD4rPzVhKuw==} + '@verdaccio/utils@8.1.0-next-8.24': + resolution: {integrity: sha512-2e54Z1J1+OPM0LCxjkJHgwFm8jESsCYaX6ARs3+29hjoI75uiSphxFI3Hrhr+67ho/7Mtul0oyakK6l18MN/Dg==} engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.1.0': @@ -5314,10 +5314,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -7272,8 +7268,8 @@ packages: pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.9.5: - resolution: {integrity: sha512-d1s98p8/4TfYhsJ09r/Azt30aYELRi6NNnZtEbqFw6BoGsdPVf5lKNK3kUwH8BmJJfpTLNuicjUQjaMbd93dVg==} + pino@9.13.1: + resolution: {integrity: sha512-Szuj+ViDTjKPQYiKumGmEn3frdl+ZPSdosHyt9SnUevFosOkMY2b7ipxlEctNKPmMD/VibeBI+ZcZCJK+4DPuw==} hasBin: true piscina@5.1.3: @@ -7462,6 +7458,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: @@ -7653,8 +7650,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.44: - resolution: {integrity: sha512-gcqgyCi3g93Fhr49PKvymE8PoaGS0sf6ajQrsYaQ8o5de6aUEbD6rJZiJbhOfpcqOnycgsAsUNPYri1h25NgsQ==} + rolldown@1.0.0-beta.45: + resolution: {integrity: sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7910,6 +7907,9 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + slow-redact@0.3.2: + resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -8554,28 +8554,28 @@ packages: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} - validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} engines: {node: '>= 0.10'} vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.23: - resolution: {integrity: sha512-ptBX/u3adJdsPPVqJnPacvMjTv2AgV26QlMawzHVk1kJwpY8u90cbElL6EIBHXyxyMvIqjA/78a56wAjqxI8Zw==} + verdaccio-audit@13.0.0-next-8.24: + resolution: {integrity: sha512-dXqsnhTGqOuIsZq/MrW05YKwhuKg94VtL0tcYI4kcT+J+fN3gKiZ1Q3wDPaVzCMc081stBlKhi+SL66gIidHdA==} engines: {node: '>=18'} verdaccio-auth-memory@10.3.1: resolution: {integrity: sha512-3m4VH5lD3qdRkDvcvVzHP6YftcsRXgu3WZuspcrH0/76+ugI2wkVezgBDbu4WRwJqRvG0MEf8Zxoup9zVK5SVw==} engines: {node: '>=18'} - verdaccio-htpasswd@13.0.0-next-8.23: - resolution: {integrity: sha512-90tWLaqamVLvrfEBmbYhMt5B5ZMQ7uFHvz70uQMw4pYSI1oIYD5qTOG9gGu0lLn9XapRACAfNaMG14kfxcfJMw==} + verdaccio-htpasswd@13.0.0-next-8.24: + resolution: {integrity: sha512-nZ+V/szt3lXQRIyqvOpJlW0MceLM3tUyTGwqy4y0uwq7w9KGD/VqytnCpiQbkjVmmfScimXwRW7PHjHyRXLCVw==} engines: {node: '>=18'} - verdaccio@6.2.0: - resolution: {integrity: sha512-meBmKwRD1CQU4oGVoAG3NnwldHC1t76rD0cx/fmwzE+R7NZnrUaB+OUvPwPZIvR7dvpdIbxrniO1svQ/IPoIug==} + verdaccio@6.2.1: + resolution: {integrity: sha512-b7EjPyVKvO/7J2BtLaybQqDd8dh4uUsuQL1zQMVLsw3aYqBsHCAOa6T1zb6gpCg68cNUHluw7IjLs2hha72TZA==} engines: {node: '>=18'} hasBin: true @@ -11367,51 +11367,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.44': + '@rolldown/binding-android-arm64@1.0.0-beta.45': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.44': + '@rolldown/binding-darwin-arm64@1.0.0-beta.45': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.44': + '@rolldown/binding-darwin-x64@1.0.0-beta.45': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.44': + '@rolldown/binding-freebsd-x64@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.44': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.44': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.44': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.44': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.44': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.44': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': optional: true - '@rolldown/pluginutils@1.0.0-beta.44': {} + '@rolldown/pluginutils@1.0.0-beta.45': {} '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': optionalDependencies: @@ -12068,21 +12068,21 @@ snapshots: '@typescript-eslint/types': 8.46.2 eslint-visitor-keys: 4.2.1 - '@verdaccio/auth@8.0.0-next-8.23': + '@verdaccio/auth@8.0.0-next-8.24': dependencies: - '@verdaccio/config': 8.0.0-next-8.23 - '@verdaccio/core': 8.0.0-next-8.23 - '@verdaccio/loaders': 8.0.0-next-8.13 - '@verdaccio/signature': 8.0.0-next-8.15 + '@verdaccio/config': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/loaders': 8.0.0-next-8.14 + '@verdaccio/signature': 8.0.0-next-8.16 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.23 + verdaccio-htpasswd: 13.0.0-next-8.24 transitivePeerDependencies: - supports-color - '@verdaccio/config@8.0.0-next-8.23': + '@verdaccio/config@8.0.0-next-8.24': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) js-yaml: 4.1.0 lodash: 4.17.21 @@ -12099,14 +12099,14 @@ snapshots: process-warning: 1.0.0 semver: 7.7.2 - '@verdaccio/core@8.0.0-next-8.23': + '@verdaccio/core@8.0.0-next-8.24': dependencies: ajv: 8.17.1 http-errors: 2.0.0 http-status-codes: 2.3.0 minimatch: 7.4.6 process-warning: 1.0.0 - semver: 7.7.2 + semver: 7.7.3 '@verdaccio/file-locking@10.3.1': dependencies: @@ -12116,19 +12116,19 @@ snapshots: dependencies: lockfile: 1.0.4 - '@verdaccio/hooks@8.0.0-next-8.23': + '@verdaccio/hooks@8.0.0-next-8.24': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 - '@verdaccio/logger': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/logger': 8.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) got-cjs: 12.5.4 handlebars: 4.7.8 transitivePeerDependencies: - supports-color - '@verdaccio/loaders@8.0.0-next-8.13': + '@verdaccio/loaders@8.0.0-next-8.14': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 transitivePeerDependencies: @@ -12147,9 +12147,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.23': + '@verdaccio/logger-commons@8.0.0-next-8.24': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 '@verdaccio/logger-prettify': 8.0.0-next-8.4 colorette: 2.0.20 debug: 4.4.3(supports-color@10.2.2) @@ -12165,18 +12165,18 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.23': + '@verdaccio/logger@8.0.0-next-8.24': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.23 - pino: 9.9.5 + '@verdaccio/logger-commons': 8.0.0-next-8.24 + pino: 9.13.1 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.23': + '@verdaccio/middleware@8.0.0-next-8.24': dependencies: - '@verdaccio/config': 8.0.0-next-8.23 - '@verdaccio/core': 8.0.0-next-8.23 - '@verdaccio/url': 13.0.0-next-8.23 + '@verdaccio/config': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/url': 13.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) express: 4.21.2 express-rate-limit: 5.5.1 @@ -12188,10 +12188,10 @@ snapshots: '@verdaccio/search-indexer@8.0.0-next-8.5': {} - '@verdaccio/signature@8.0.0-next-8.15': + '@verdaccio/signature@8.0.0-next-8.16': dependencies: - '@verdaccio/config': 8.0.0-next-8.23 - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/config': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) jsonwebtoken: 9.0.2 transitivePeerDependencies: @@ -12199,10 +12199,10 @@ snapshots: '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.23': + '@verdaccio/tarball@13.0.0-next-8.24': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 - '@verdaccio/url': 13.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/url': 13.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) gunzip-maybe: 1.4.2 tar-stream: 3.1.7 @@ -12211,20 +12211,20 @@ snapshots: - react-native-b4a - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.23': {} + '@verdaccio/ui-theme@8.0.0-next-8.24': {} - '@verdaccio/url@13.0.0-next-8.23': + '@verdaccio/url@13.0.0-next-8.24': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 - validator: 13.12.0 + validator: 13.15.15 transitivePeerDependencies: - supports-color - '@verdaccio/utils@8.1.0-next-8.23': + '@verdaccio/utils@8.1.0-next-8.24': dependencies: - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 lodash: 4.17.21 minimatch: 7.4.6 @@ -14256,8 +14256,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-redact@3.5.0: {} - fast-uri@3.1.0: {} fastq@1.19.1: @@ -16466,10 +16464,9 @@ snapshots: pino-std-serializers@7.0.0: {} - pino@9.9.5: + pino@9.13.1: dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 @@ -16477,6 +16474,7 @@ snapshots: quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.5.0 + slow-redact: 0.3.2 sonic-boom: 4.2.0 thread-stream: 3.1.0 @@ -16955,25 +16953,25 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.44: + rolldown@1.0.0-beta.45: dependencies: '@oxc-project/types': 0.95.0 - '@rolldown/pluginutils': 1.0.0-beta.44 + '@rolldown/pluginutils': 1.0.0-beta.45 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.44 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.44 - '@rolldown/binding-darwin-x64': 1.0.0-beta.44 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.44 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.44 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.44 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.44 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.44 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.44 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.44 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.44 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.44 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.44 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.44 + '@rolldown/binding-android-arm64': 1.0.0-beta.45 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.45 + '@rolldown/binding-darwin-x64': 1.0.0-beta.45 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.45 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.45 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.45 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.45 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.45 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.45 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.45 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.45 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.45 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.45 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.45 rollup-license-plugin@3.0.2: dependencies: @@ -17319,6 +17317,8 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 + slow-redact@0.3.2: {} + smart-buffer@4.2.0: {} socket.io-adapter@2.5.5(bufferutil@4.0.9): @@ -18035,14 +18035,14 @@ snapshots: validate-npm-package-name@6.0.2: {} - validator@13.12.0: {} + validator@13.15.15: {} vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.23(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.24(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.23 - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/config': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.24 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.2.2) node-fetch: 2.6.7(encoding@0.1.13) @@ -18057,9 +18057,9 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio-htpasswd@13.0.0-next-8.23: + verdaccio-htpasswd@13.0.0-next-8.24: dependencies: - '@verdaccio/core': 8.0.0-next-8.23 + '@verdaccio/core': 8.0.0-next-8.24 '@verdaccio/file-locking': 13.0.0-next-8.6 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -18069,24 +18069,24 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.2.0(encoding@0.1.13): + verdaccio@6.2.1(encoding@0.1.13): dependencies: '@cypress/request': 3.0.9 - '@verdaccio/auth': 8.0.0-next-8.23 - '@verdaccio/config': 8.0.0-next-8.23 - '@verdaccio/core': 8.0.0-next-8.23 - '@verdaccio/hooks': 8.0.0-next-8.23 - '@verdaccio/loaders': 8.0.0-next-8.13 + '@verdaccio/auth': 8.0.0-next-8.24 + '@verdaccio/config': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/hooks': 8.0.0-next-8.24 + '@verdaccio/loaders': 8.0.0-next-8.14 '@verdaccio/local-storage-legacy': 11.1.1 - '@verdaccio/logger': 8.0.0-next-8.23 - '@verdaccio/middleware': 8.0.0-next-8.23 + '@verdaccio/logger': 8.0.0-next-8.24 + '@verdaccio/middleware': 8.0.0-next-8.24 '@verdaccio/search-indexer': 8.0.0-next-8.5 - '@verdaccio/signature': 8.0.0-next-8.15 + '@verdaccio/signature': 8.0.0-next-8.16 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.23 - '@verdaccio/ui-theme': 8.0.0-next-8.23 - '@verdaccio/url': 13.0.0-next-8.23 - '@verdaccio/utils': 8.1.0-next-8.23 + '@verdaccio/tarball': 13.0.0-next-8.24 + '@verdaccio/ui-theme': 8.0.0-next-8.24 + '@verdaccio/url': 13.0.0-next-8.24 + '@verdaccio/utils': 8.1.0-next-8.24 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 @@ -18099,8 +18099,8 @@ snapshots: lru-cache: 7.18.3 mime: 3.0.0 semver: 7.7.2 - verdaccio-audit: 13.0.0-next-8.23(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.23 + verdaccio-audit: 13.0.0-next-8.24(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.24 transitivePeerDependencies: - bare-abort-controller - encoding From 2c846fbfd81ea92ffa85c920c8953e0213c6c5af Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 27 Oct 2025 21:44:38 -0400 Subject: [PATCH 1689/2162] fix(@angular-devkit/build-angular): ensure vitest code coverage handles virtual files correctly Vitest's default coverage provider checks for the physical existence of files to determine inclusion in the coverage report. This behavior excludes in-memory files generated by the build process from the final report. This change patches the `isIncluded` method of Vitest's `BaseCoverageProvider` to correctly account for these virtual files, ensuring they are included in the coverage analysis. Additionally, bundler-generated helper code chunks without any original source code can have empty sourcemaps. Vitest includes files with such sourcemaps in the coverage report, which is incorrect. This change adds a virtual source to these sourcemaps to prevent them from being included in the final coverage output. --- .../unit-test/runners/vitest/executor.ts | 18 ++++++++++++++++++ .../unit-test/runners/vitest/plugins.ts | 15 +++++++++++++-- .../tests/options/code-coverage_spec.ts | 16 ++++++++++++++-- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 00a9bb71c18b..4ffebb0ad28b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -9,6 +9,7 @@ import type { BuilderOutput } from '@angular-devkit/architect'; import assert from 'node:assert'; import path from 'node:path'; +import { isMatch } from 'picomatch'; import type { InlineConfig, Vitest } from 'vitest/node'; import { assertIsError } from '../../../../utils/error'; import { toPosixPath } from '../../../../utils/path'; @@ -141,7 +142,9 @@ export class VitestExecutor implements TestExecutor { } = this.options; let vitestNodeModule; + let vitestCoverageModule; try { + vitestCoverageModule = await import('vitest/coverage'); vitestNodeModule = await import('vitest/node'); } catch (error: unknown) { assertIsError(error); @@ -154,6 +157,21 @@ export class VitestExecutor implements TestExecutor { } const { startVitest } = vitestNodeModule; + // Augment BaseCoverageProvider to include logic to support the built virtual files. + // Temporary workaround to avoid the direct filesystem checks in the base provider that + // were introduced in v4. Also ensures that all built virtual files are available. + const builtVirtualFiles = this.buildResultFiles; + vitestCoverageModule.BaseCoverageProvider.prototype.isIncluded = function (filename) { + const relativeFilename = path.relative(workspaceRoot, filename); + if (!this.options.include || builtVirtualFiles.has(relativeFilename)) { + return !isMatch(relativeFilename, this.options.exclude); + } else { + return isMatch(relativeFilename, this.options.include, { + ignore: this.options.exclude, + }); + } + }; + // Setup vitest browser options if configured const browserOptions = await setupBrowserConfiguration( browsers, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index fa51ae996d2f..649032e3b4fc 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -117,15 +117,26 @@ export function createVitestPlugins( outputFile.origin === 'memory' ? Buffer.from(outputFile.contents).toString('utf-8') : await readFile(outputFile.inputPath, 'utf-8'); - const map = sourceMapFile + const sourceMapText = sourceMapFile ? sourceMapFile.origin === 'memory' ? Buffer.from(sourceMapFile.contents).toString('utf-8') : await readFile(sourceMapFile.inputPath, 'utf-8') : undefined; + // Vitest will include files in the coverage report if the sourcemap contains no sources. + // For builder-internal generated code chunks, which are typically helper functions, + // a virtual source is added to the sourcemap to prevent them from being incorrectly + // included in the final coverage report. + const map = sourceMapText ? JSON.parse(sourceMapText) : undefined; + if (map) { + if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) { + map.sources = ['virtual:builder']; + } + } + return { code, - map: map ? JSON.parse(map) : undefined, + map, }; } }, diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts index 490f2deaba4b..f8a8acb60591 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage_spec.ts @@ -28,7 +28,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { const { result } = await harness.executeOnce(); expect(result?.success).toBeTrue(); - expect(harness.hasFile('coverage/test/index.html')).toBeFalse(); + harness.expectFile('coverage/test/index.html').toNotExist(); }); it('should generate a code coverage report when coverage is true', async () => { @@ -39,7 +39,19 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { const { result } = await harness.executeOnce(); expect(result?.success).toBeTrue(); - expect(harness.hasFile('coverage/test/index.html')).toBeTrue(); + harness.expectFile('coverage/test/index.html').toExist(); + }); + + it('should generate a code coverage report when coverage is true', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + coverage: true, + coverageReporters: ['json'] as any, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + harness.expectFile('coverage/test/coverage-final.json').content.toContain('app.component.ts'); }); }); }); From 6dfee716f5c01cc5c887f0c3a18625bf6d7729fb Mon Sep 17 00:00:00 2001 From: MeAkib Date: Sat, 25 Oct 2025 16:57:05 +0600 Subject: [PATCH 1690/2162] refactor(@schematics/angular): add trailing comma to generated services Ensures code consistency by including trailing commas in generated service --- .../files/__name@dasherize__.__type@dasherize__.ts.template | 2 +- packages/schematics/angular/service/index_spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template b/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template index 584a706c6ca1..de24346572c2 100644 --- a/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template +++ b/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; @Injectable({ - providedIn: 'root' + providedIn: 'root', }) export class <%= classifiedName %> { diff --git a/packages/schematics/angular/service/index_spec.ts b/packages/schematics/angular/service/index_spec.ts index 760cec6b0f7f..56ae5edd2428 100644 --- a/packages/schematics/angular/service/index_spec.ts +++ b/packages/schematics/angular/service/index_spec.ts @@ -55,7 +55,7 @@ describe('Service Schematic', () => { const tree = await schematicRunner.runSchematic('service', options, appTree); const content = tree.readContent('/projects/bar/src/app/foo/foo.ts'); - expect(content).toMatch(/providedIn: 'root'/); + expect(content).toMatch(/providedIn: 'root',/); }); it('should respect the skipTests flag', async () => { From 837440b34a2988dd0928a4144640c661c5ad527f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 28 Oct 2025 11:49:36 +0000 Subject: [PATCH 1691/2162] refactor: update experimental builder warnings The "unit-test" builder is no longer considered experimental, so the warning has been removed. The "jest" and "web-test-runner" builders are now deprecated and will be removed in version 22. The warnings have been updated to reflect this. --- .../build/src/builders/unit-test/builder.ts | 4 ---- .../build_angular/src/builders/jest/index.ts | 2 +- .../src/builders/web-test-runner/index.ts | 3 ++- tests/legacy-cli/e2e/tests/vitest/basic.ts | 15 --------------- 4 files changed, 3 insertions(+), 21 deletions(-) delete mode 100644 tests/legacy-cli/e2e/tests/vitest/basic.ts diff --git a/packages/angular/build/src/builders/unit-test/builder.ts b/packages/angular/build/src/builders/unit-test/builder.ts index 4785c6c6d16c..105e34b8a72c 100644 --- a/packages/angular/build/src/builders/unit-test/builder.ts +++ b/packages/angular/build/src/builders/unit-test/builder.ts @@ -176,10 +176,6 @@ export async function* execute( return; } - context.logger.warn( - `NOTE: The "unit-test" builder is currently EXPERIMENTAL and not ready for production use.`, - ); - // Initialize the test runner and normalize options let runner; let normalizedOptions; diff --git a/packages/angular_devkit/build_angular/src/builders/jest/index.ts b/packages/angular_devkit/build_angular/src/builders/jest/index.ts index 5f91f70e589e..5cd8d6ebdad9 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/jest/index.ts @@ -26,7 +26,7 @@ const execFile = promisify(execFileCb); export default createBuilder( async (schema: JestBuilderSchema, context: BuilderContext): Promise => { context.logger.warn( - 'NOTE: The Jest builder is currently EXPERIMENTAL and not ready for production use.', + 'NOTE: The Jest builder is currently EXPERIMENTAL and will be removed in version 22.', ); const options = normalizeOptions(schema); diff --git a/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts b/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts index 066ed905760e..d900375221ff 100644 --- a/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts @@ -23,8 +23,9 @@ import { writeTestFiles } from './write-test-files'; export default createBuilder( async (schema: Schema, ctx: BuilderContext): Promise => { ctx.logger.warn( - 'NOTE: The Web Test Runner builder is currently EXPERIMENTAL and not ready for production use.', + 'NOTE: The Web Test Runner builder is currently EXPERIMENTAL and will be removed in version 22.', ); + logBuilderStatusWarnings(schema, ctx); // Dynamic import `@web/test-runner` from the user's workspace. As an optional peer dep, it may not be installed diff --git a/tests/legacy-cli/e2e/tests/vitest/basic.ts b/tests/legacy-cli/e2e/tests/vitest/basic.ts deleted file mode 100644 index 5d2f2c3e2b37..000000000000 --- a/tests/legacy-cli/e2e/tests/vitest/basic.ts +++ /dev/null @@ -1,15 +0,0 @@ -import assert from 'node:assert/strict'; -import { applyVitestBuilder } from '../../utils/vitest'; -import { ng } from '../../utils/process'; - -export default async function (): Promise { - await applyVitestBuilder(); - - const { stderr } = await ng('test'); - - assert.match( - stderr, - /NOTE: The "unit-test" builder is currently EXPERIMENTAL/, - 'Expected stderr to include the experimental notice.', - ); -} From 50de34fe42aaa0dd534b505bfb170a4e4a6b29c5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 28 Oct 2025 08:06:09 +0000 Subject: [PATCH 1692/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16468cc147ce..d564eb32161e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14228,7 +14228,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: From cc16b1006522522d8ad2f4735d18ca625a12ec1d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 28 Oct 2025 13:49:33 +0000 Subject: [PATCH 1693/2162] fix(@angular/build): handle redirects from guards during prerendering During prerendering, if a route returns a redirect, a static HTML page with a meta refresh tag is generated to redirect the user to the specified URL. This now includes support for redirects returned from route guards. Closes #31618 --- .../src/utils/server-rendering/prerender.ts | 26 +------------------ .../utils/server-rendering/render-worker.ts | 9 ++++++- .../build/src/utils/server-rendering/utils.ts | 25 ++++++++++++++++++ .../server-routes-output-mode-static.ts | 13 ++++++++-- 4 files changed, 45 insertions(+), 28 deletions(-) diff --git a/packages/angular/build/src/utils/server-rendering/prerender.ts b/packages/angular/build/src/utils/server-rendering/prerender.ts index e087262a7f0c..5ece379ec9c0 100644 --- a/packages/angular/build/src/utils/server-rendering/prerender.ts +++ b/packages/angular/build/src/utils/server-rendering/prerender.ts @@ -26,6 +26,7 @@ import { WritableSerializableRouteTreeNode, } from './models'; import type { RenderWorkerData } from './render-worker'; +import { generateRedirectStaticPage } from './utils'; type PrerenderOptions = NormalizedApplicationBuildOptions['prerenderOptions']; type AppShellOptions = NormalizedApplicationBuildOptions['appShellOptions']; @@ -380,28 +381,3 @@ function addTrailingSlash(url: string): string { function removeLeadingSlash(value: string): string { return value[0] === '/' ? value.slice(1) : value; } - -/** - * Generates a static HTML page with a meta refresh tag to redirect the user to a specified URL. - * - * This function creates a simple HTML page that performs a redirect using a meta tag. - * It includes a fallback link in case the meta-refresh doesn't work. - * - * @param url - The URL to which the page should redirect. - * @returns The HTML content of the static redirect page. - */ -function generateRedirectStaticPage(url: string): string { - return ` - - - - - Redirecting - - - -
Redirecting to ${url}
- - -`.trim(); -} diff --git a/packages/angular/build/src/utils/server-rendering/render-worker.ts b/packages/angular/build/src/utils/server-rendering/render-worker.ts index f3fc8e93a0d0..7ded0550b826 100644 --- a/packages/angular/build/src/utils/server-rendering/render-worker.ts +++ b/packages/angular/build/src/utils/server-rendering/render-worker.ts @@ -12,6 +12,7 @@ import type { ESMInMemoryFileLoaderWorkerData } from './esm-in-memory-loader/loa import { patchFetchToLoadInMemoryAssets } from './fetch-patch'; import { DEFAULT_URL, launchServer } from './launch-server'; import { loadEsmModuleFromMemory } from './load-esm-from-memory'; +import { generateRedirectStaticPage } from './utils'; export interface RenderWorkerData extends ESMInMemoryFileLoaderWorkerData { assetFiles: Record; @@ -48,7 +49,13 @@ async function renderPage({ url }: RenderOptions): Promise { new Request(new URL(url, serverURL), { signal: AbortSignal.timeout(30_000) }), ); - return response ? response.text() : null; + if (!response) { + return null; + } + + const location = response.headers.get('Location'); + + return location ? generateRedirectStaticPage(location) : response.text(); } async function initialize() { diff --git a/packages/angular/build/src/utils/server-rendering/utils.ts b/packages/angular/build/src/utils/server-rendering/utils.ts index a322780e391d..c740d4de06c4 100644 --- a/packages/angular/build/src/utils/server-rendering/utils.ts +++ b/packages/angular/build/src/utils/server-rendering/utils.ts @@ -19,3 +19,28 @@ export function isSsrRequestHandler( ): value is ReturnType { return typeof value === 'function' && '__ng_request_handler__' in value; } + +/** + * Generates a static HTML page with a meta refresh tag to redirect the user to a specified URL. + * + * This function creates a simple HTML page that performs a redirect using a meta tag. + * It includes a fallback link in case the meta-refresh doesn't work. + * + * @param url - The URL to which the page should redirect. + * @returns The HTML content of the static redirect page. + */ +export function generateRedirectStaticPage(url: string): string { + return ` + + + + + Redirecting + + + +
Redirecting to ${url}
+ + +`.trim(); +} 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 617776a94dc7..77f954be4f4d 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 @@ -29,7 +29,8 @@ export default async function () { await writeFile( 'src/app/app.routes.ts', ` - import { Routes } from '@angular/router'; + import { inject } from '@angular/core'; + import { Routes, Router } from '@angular/router'; import { Home } from './home/home'; import { Ssg } from './ssg/ssg'; import { SsgWithParams } from './ssg-with-params/ssg-with-params'; @@ -47,6 +48,12 @@ export default async function () { path: 'ssg-redirect', redirectTo: 'ssg' }, + { + path: 'ssg-redirect-via-guard', + canActivate: [() => { + return inject(Router).createUrlTree(['ssg'], { queryParams: { foo: 'bar' }}) + }], + }, { path: 'ssg/:id', component: SsgWithParams, @@ -106,8 +113,10 @@ export default async function () { 'ssg/index.html': /ng-server-context="ssg".+ssg works!/, 'ssg/one/index.html': /ng-server-context="ssg".+ssg-with-params works!/, 'ssg/two/index.html': /ng-server-context="ssg".+ssg-with-params works!/, - // When static redirects as generated as meta tags. + // When static redirects are generated as meta tags. 'ssg-redirect/index.html': '', + 'ssg-redirect-via-guard/index.html': + '', }; for (const [filePath, fileMatch] of Object.entries(expects)) { From 12146a2905498847db24aabe28d961294560ae49 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 29 Oct 2025 05:38:02 +0000 Subject: [PATCH 1694/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index c68f939ec44b..ce641549a491 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -21,12 +21,12 @@ multiple_version_override( bazel_dep(name = "aspect_bazel_lib", version = "2.21.2") bazel_dep(name = "bazel_skylib", version = "1.8.2") -bazel_dep(name = "aspect_rules_esbuild", version = "0.23.0") +bazel_dep(name = "aspect_rules_esbuild", version = "0.24.0") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "1f1aa3edb32f5e9135088548a419874a094eb687", + commit = "b97a21c7cead2a07ea1bffa68eaae7f7e08dfc5f", remote = "https://github.com/devversion/rules_angular.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index d0532032bed1..56dba326d9a2 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -21,7 +21,8 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/MODULE.bazel": "9b437a9ec25a619304940434fa03b8d41248213eb7009da2c898f3d6a4075ef3", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/source.json": "7b4cac4e61bae4262e7f67f6bec0b200fcb9060044f12e84a3bc37e0be245de7", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/MODULE.bazel": "15d19e46ec74e9e49ddf3c335e7a91b0657571654b0960bdcd10b771eeb4f7cb", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/source.json": "6cc8c0ba6c623527e383acfe4ee73f290eeead2431093668db3b7a579a948deb", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/source.json": "45fa9603cdfe100575a12d8b65fa425fe8713dd8c9f0cdf802168b670bc0e299", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", @@ -207,8 +208,8 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "2t/OGeKfMCAl1xoAFVhaT+JKQb5zexk164MjT7t8SPE=", - "usagesDigest": "H070ZIHhSlR+Han009l+GdDSuT9AJssdyVHQ7xjstSo=", + "bzlTransitiveDigest": "204sr2WFjo5XunG4jDH52caAc3qJ/f50aVdAr3VenHE=", + "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -218,6 +219,7 @@ "ruleClassName": "esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", + "integrity": "", "platform": "darwin-x64" } }, @@ -226,6 +228,7 @@ "ruleClassName": "esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", + "integrity": "", "platform": "darwin-arm64" } }, @@ -234,6 +237,7 @@ "ruleClassName": "esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", + "integrity": "", "platform": "linux-x64" } }, @@ -242,6 +246,7 @@ "ruleClassName": "esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", + "integrity": "", "platform": "linux-arm64" } }, @@ -250,6 +255,7 @@ "ruleClassName": "esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", + "integrity": "", "platform": "win32-x64" } }, @@ -605,7 +611,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "+Hur2pWe/TT3snEvJg4r10bQxD7lA5FHQPZQEHH32bY=", + "usagesDigest": "NoBcR/+eQ7MKZpK18FmGcKu3HepSaZ6doKSVjHJraTc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -617,7 +623,7 @@ "deps": { "aspect_rules_js": "2.7.0", "aspect_rules_ts": "3.7.0", - "aspect_rules_esbuild": "0.23.0", + "aspect_rules_esbuild": "0.24.0", "aspect_tools_telemetry": "0.2.8" } } From 163189c2f24bae4600d03e3265f64e78cd607beb Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 29 Oct 2025 05:05:54 +0000 Subject: [PATCH 1695/2162] build: update dependency node to v22.21.1 See associated pull request for more information. --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index aa50a62f2194..5767036af0e2 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.21.0 +22.21.1 From 89c0f1b003c5ed48abc2aa36336916019ccccf4a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 29 Oct 2025 05:06:34 +0000 Subject: [PATCH 1696/2162] build: update github/codeql-action action to v4.31.0 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 64598f02b0da..7354c6757990 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@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/init@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/analyze@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 4ca584a759df..5cee4e987fb3 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@16140ae1a102900babc80a33c44059580f687047 # v4.30.9 + uses: github/codeql-action/upload-sarif@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 with: sarif_file: results.sarif From f8d59fd9d1462108237ebe5e6c941b9335a24ad5 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 29 Oct 2025 10:49:37 +0000 Subject: [PATCH 1697/2162] fix(@angular/build): resolve browser provider packages using project resolver This ensure that the dependencies are resolved from the project root. --- .../src/builders/unit-test/runners/vitest/browser-provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index 23ed9b9a23e8..be2fc3da22f7 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -67,7 +67,7 @@ export async function setupBrowserConfiguration( if (providerName) { const providerPackage = `@vitest/browser-${providerName}`; try { - const providerModule = await import(providerPackage); + const providerModule = await import(projectResolver(providerPackage)); // Validate that the imported module has the expected structure const providerFactory = providerModule[providerName]; From 4cb985c077ec25fee11a7d581611f8bd43a36dfa Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 28 Oct 2025 20:44:03 -0400 Subject: [PATCH 1698/2162] refactor(@angular/build): normalize unit test coverage options for consistency Previously, the unit test builder's `coverage` option was conditional. It was only defined if `coverage: true` was set, and it consolidated several top-level `coverage*` properties from the schema. This required downstream consumers, like the Karma and Vitest executors, to handle a potentially undefined object and led to complex and sometimes incorrect option merging, especially in the Vitest runner. This commit refactors the option normalization logic to ensure the `coverage` object is *always* defined. A new `enabled` flag, controlled by the main `coverage` option, is now part of this object. --- .../build/src/builders/unit-test/options.ts | 31 +++++++++---------- .../unit-test/runners/karma/executor.ts | 6 ++-- .../unit-test/runners/vitest/executor.ts | 8 +---- .../unit-test/runners/vitest/index.ts | 2 +- 4 files changed, 20 insertions(+), 27 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index ef7132198451..74b30b1e95a6 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -96,22 +96,21 @@ export async function normalizeOptions( exclude: options.exclude, filter, runnerName: runner ?? 'vitest', - coverage: options.coverage - ? { - exclude: options.coverageExclude, - include: options.coverageInclude, - reporters: normalizeReporterOption(options.coverageReporters), - thresholds: options.coverageThresholds, - // The schema generation tool doesn't support tuple types for items, but the schema validation - // does ensure that the array has exactly two numbers. - watermarks: options.coverageWatermarks as { - statements?: [number, number]; - branches?: [number, number]; - functions?: [number, number]; - lines?: [number, number]; - }, - } - : undefined, + coverage: { + enabled: options.coverage, + exclude: options.coverageExclude, + include: options.coverageInclude, + reporters: normalizeReporterOption(options.coverageReporters), + thresholds: options.coverageThresholds, + // The schema generation tool doesn't support tuple types for items, but the schema validation + // does ensure that the array has exactly two numbers. + watermarks: options.coverageWatermarks as { + statements?: [number, number]; + branches?: [number, number]; + functions?: [number, number]; + lines?: [number, number]; + }, + }, tsConfig, buildProgress: progress, reporters: normalizeReporterOption(options.reporters), diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index 9d1627df000b..4b30ff0405bf 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -87,8 +87,8 @@ export class KarmaExecutor implements TestExecutor { poll: buildTargetOptions.poll, preserveSymlinks: buildTargetOptions.preserveSymlinks, browsers: unitTestOptions.browsers?.join(','), - codeCoverage: !!unitTestOptions.coverage, - codeCoverageExclude: unitTestOptions.coverage?.exclude, + codeCoverage: unitTestOptions.coverage.enabled, + codeCoverageExclude: unitTestOptions.coverage.exclude, fileReplacements: buildTargetOptions.fileReplacements, reporters: unitTestOptions.reporters?.map((reporter) => { // Karma only supports string reporters. @@ -123,7 +123,7 @@ export class KarmaExecutor implements TestExecutor { } // Add coverage options - if (unitTestOptions.coverage) { + if (unitTestOptions.coverage.enabled) { const { thresholds, watermarks } = unitTestOptions.coverage; // eslint-disable-next-line @typescript-eslint/no-explicit-any const coverageReporter = ((options as any).coverageReporter ??= {}); diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 4ffebb0ad28b..69668ace1be4 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -242,12 +242,6 @@ async function generateCoverageOption( coverage: NormalizedUnitTestBuilderOptions['coverage'], projectName: string, ): Promise { - if (!coverage) { - return { - enabled: false, - }; - } - let defaultExcludes: string[] = []; if (coverage.exclude) { try { @@ -257,7 +251,7 @@ async function generateCoverageOption( } return { - enabled: true, + enabled: coverage.enabled, excludeAfterRemap: true, include: coverage.include, reportsDirectory: toPosixPath(path.join('coverage', projectName)), diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index 4c8e8ad7043b..a36b75331388 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -32,7 +32,7 @@ const VitestTestRunner: TestRunner = { checker.check('jsdom'); } - if (options.coverage) { + if (options.coverage.enabled) { checker.check('@vitest/coverage-v8'); } From 2cb04d5e2fb68845f05a349e01ba3b4c39b4052e Mon Sep 17 00:00:00 2001 From: Nico Jansen Date: Wed, 29 Oct 2025 08:57:09 +0100 Subject: [PATCH 1699/2162] fix(@angular/build): add adapters to new reporter This commit add `adapters` field to the `ProgressNotifierReporter`. Closes #31629 --- packages/angular/build/src/builders/karma/progress-reporter.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/angular/build/src/builders/karma/progress-reporter.ts b/packages/angular/build/src/builders/karma/progress-reporter.ts index c4f573e9a2b2..908f1c856e6d 100644 --- a/packages/angular/build/src/builders/karma/progress-reporter.ts +++ b/packages/angular/build/src/builders/karma/progress-reporter.ts @@ -40,6 +40,8 @@ export function injectKarmaReporter( class ProgressNotifierReporter { static $inject = ['emitter', LATEST_BUILD_FILES_TOKEN]; + // Needed for the karma reporter interface, see https://github.com/angular/angular-cli/issues/31629 + adapters = []; constructor( private readonly emitter: KarmaEmitter, From f2f121fcaeda883b4d06b35a5d19da54d07e09aa Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 29 Oct 2025 15:02:54 +0000 Subject: [PATCH 1700/2162] docs: release notes for the v19.2.19 release --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbce420d963b..3a877922c607 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 19.2.19 (2025-10-29) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | +| [4d8ea27a1](https://github.com/angular/angular-cli/commit/4d8ea27a1726709b8398a26915395e7611571dae) | fix | update vite to v6.4.1 | + + + # 21.0.0-next.9 (2025-10-23) @@ -2097,6 +2109,7 @@ - Protractor is no longer supported. Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor. + - https://angular.dev/tools/cli/end-to-end - https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c @@ -5731,6 +5744,7 @@ Alan Agius, Charles Lyding and Doug Parker ### @angular/cli - Several changes to the `ng analytics` command syntax. + - `ng analytics project ` has been replaced with `ng analytics ` - `ng analytics ` has been replaced with `ng analytics --global` @@ -5760,6 +5774,7 @@ Alan Agius, Charles Lyding and Doug Parker - `browser` and `karma` builders `script` and `styles` options input files extensions are now validated. Valid extensions for `scripts` are: + - `.js` - `.cjs` - `.mjs` @@ -5768,6 +5783,7 @@ Alan Agius, Charles Lyding and Doug Parker - `.mjsx` Valid extensions for `styles` are: + - `.css` - `.less` - `.sass` From f8983bd46d2311ab4bb5573b0701bcf30e1e1caa Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 29 Oct 2025 05:05:45 +0000 Subject: [PATCH 1701/2162] build: update all non-major dependencies to v4.0.4 See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 111 ++++++++++++++------------- 3 files changed, 59 insertions(+), 58 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 18cdaeb5be25..d7c55e602ac4 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,9 +4,9 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", - "@vitest/coverage-v8": "4.0.3", + "@vitest/coverage-v8": "4.0.4", "jsdom": "27.0.1", "rxjs": "7.8.2", - "vitest": "4.0.3" + "vitest": "4.0.4" } } diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 90f03c79b46f..cf60f31cd5cc 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -56,7 +56,7 @@ "ng-packagr": "21.0.0-next.4", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.3" + "vitest": "4.0.4" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d564eb32161e..719f34371729 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.3 - version: 4.0.3(vitest@4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.4 + version: 4.0.4(vitest@4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -341,8 +341,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.3 - version: 4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.4 + version: 4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -447,8 +447,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.3 - version: 4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.4 + version: 4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -3697,20 +3697,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.3': - resolution: {integrity: sha512-I+MlLwyJRBjmJr1kFYSxoseINbIdpxIAeK10jmXgB0FUtIfdYsvM3lGAvBu5yk8WPyhefzdmbCHCc1idFbNRcg==} + '@vitest/coverage-v8@4.0.4': + resolution: {integrity: sha512-YM7gDj2TX2AXyGLz0p/B7hvTsTfaQc+kSV/LU0nEnKlep/ZfbdCDppPND4YQiQC43OXyrhkG3y8ZSTqYb2CKqQ==} peerDependencies: - '@vitest/browser': 4.0.3 - vitest: 4.0.3 + '@vitest/browser': 4.0.4 + vitest: 4.0.4 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.3': - resolution: {integrity: sha512-v3eSDx/bF25pzar6aEJrrdTXJduEBU3uSGXHslIdGIpJVP8tQQHV6x1ZfzbFQ/bLIomLSbR/2ZCfnaEGkWkiVQ==} + '@vitest/expect@4.0.4': + resolution: {integrity: sha512-0ioMscWJtfpyH7+P82sGpAi3Si30OVV73jD+tEqXm5+rIx9LgnfdaOn45uaFkKOncABi/PHL00Yn0oW/wK4cXw==} - '@vitest/mocker@4.0.3': - resolution: {integrity: sha512-evZcRspIPbbiJEe748zI2BRu94ThCBE+RkjCpVF8yoVYuTV7hMe+4wLF/7K86r8GwJHSmAPnPbZhpXWWrg1qbA==} + '@vitest/mocker@4.0.4': + resolution: {integrity: sha512-UTtKgpjWj+pvn3lUM55nSg34098obGhSHH+KlJcXesky8b5wCUgg7s60epxrS6yAG8slZ9W8T9jGWg4PisMf5Q==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3720,20 +3720,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.3': - resolution: {integrity: sha512-N7gly/DRXzxa9w9sbDXwD9QNFYP2hw90LLLGDobPNwiWgyW95GMxsCt29/COIKKh3P7XJICR38PSDePenMBtsw==} + '@vitest/pretty-format@4.0.4': + resolution: {integrity: sha512-lHI2rbyrLVSd1TiHGJYyEtbOBo2SDndIsN3qY4o4xe2pBxoJLD6IICghNCvD7P+BFin6jeyHXiUICXqgl6vEaQ==} - '@vitest/runner@4.0.3': - resolution: {integrity: sha512-1/aK6fPM0lYXWyGKwop2Gbvz1plyTps/HDbIIJXYtJtspHjpXIeB3If07eWpVH4HW7Rmd3Rl+IS/+zEAXrRtXA==} + '@vitest/runner@4.0.4': + resolution: {integrity: sha512-99EDqiCkncCmvIZj3qJXBZbyoQ35ghOwVWNnQ5nj0Hnsv4Qm40HmrMJrceewjLVvsxV/JSU4qyx2CGcfMBmXJw==} - '@vitest/snapshot@4.0.3': - resolution: {integrity: sha512-amnYmvZ5MTjNCP1HZmdeczAPLRD6iOm9+2nMRUGxbe/6sQ0Ymur0NnR9LIrWS8JA3wKE71X25D6ya/3LN9YytA==} + '@vitest/snapshot@4.0.4': + resolution: {integrity: sha512-XICqf5Gi4648FGoBIeRgnHWSNDp+7R5tpclGosFaUUFzY6SfcpsfHNMnC7oDu/iOLBxYfxVzaQpylEvpgii3zw==} - '@vitest/spy@4.0.3': - resolution: {integrity: sha512-82vVL8Cqz7rbXaNUl35V2G7xeNMAjBdNOVaHbrzznT9BmiCiPOzhf0FhU3eP41nP1bLDm/5wWKZqkG4nyU95DQ==} + '@vitest/spy@4.0.4': + resolution: {integrity: sha512-G9L13AFyYECo40QG7E07EdYnZZYCKMTSp83p9W8Vwed0IyCG1GnpDLxObkx8uOGPXfDpdeVf24P1Yka8/q1s9g==} - '@vitest/utils@4.0.3': - resolution: {integrity: sha512-qV6KJkq8W3piW6MDIbGOmn1xhvcW4DuA07alqaQ+vdx7YA49J85pnwnxigZVQFQw3tWnQNRKWwhz5wbP6iv/GQ==} + '@vitest/utils@4.0.4': + resolution: {integrity: sha512-4bJLmSvZLyVbNsYFRpPYdJViG9jZyRvMZ35IF4ymXbRZoS+ycYghmwTGiscTXduUg2lgKK7POWIyXJNute1hjw==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -6391,6 +6391,7 @@ packages: keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -8623,18 +8624,18 @@ packages: yaml: optional: true - vitest@4.0.3: - resolution: {integrity: sha512-IUSop8jgaT7w0g1yOM/35qVtKjr/8Va4PrjzH1OUb0YH4c3OXB2lCZDkMAB6glA8T5w8S164oJGsbcmAecr4sA==} + vitest@4.0.4: + resolution: {integrity: sha512-hV31h0/bGbtmDQc0KqaxsTO1v4ZQeF8ojDFuy4sZhFadwAqqvJA0LDw68QUocctI5EDpFMql/jVWKuPYHIf2Ew==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.3 - '@vitest/browser-preview': 4.0.3 - '@vitest/browser-webdriverio': 4.0.3 - '@vitest/ui': 4.0.3 + '@vitest/browser-playwright': 4.0.4 + '@vitest/browser-preview': 4.0.4 + '@vitest/browser-webdriverio': 4.0.4 + '@vitest/ui': 4.0.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -12232,10 +12233,10 @@ snapshots: dependencies: vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.3(vitest@4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.4(vitest@4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.3 + '@vitest/utils': 4.0.4 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -12245,47 +12246,47 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.3': + '@vitest/expect@4.0.4': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.3 - '@vitest/utils': 4.0.3 + '@vitest/spy': 4.0.4 + '@vitest/utils': 4.0.4 chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.3(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.4(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.3 + '@vitest/spy': 4.0.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.3': + '@vitest/pretty-format@4.0.4': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.3': + '@vitest/runner@4.0.4': dependencies: - '@vitest/utils': 4.0.3 + '@vitest/utils': 4.0.4 pathe: 2.0.3 - '@vitest/snapshot@4.0.3': + '@vitest/snapshot@4.0.4': dependencies: - '@vitest/pretty-format': 4.0.3 + '@vitest/pretty-format': 4.0.4 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.3': {} + '@vitest/spy@4.0.4': {} - '@vitest/utils@4.0.3': + '@vitest/utils@4.0.4': dependencies: - '@vitest/pretty-format': 4.0.3 + '@vitest/pretty-format': 4.0.4 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -14228,7 +14229,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -18131,15 +18132,15 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.3(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.3 - '@vitest/mocker': 4.0.3(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.3 - '@vitest/runner': 4.0.3 - '@vitest/snapshot': 4.0.3 - '@vitest/spy': 4.0.3 - '@vitest/utils': 4.0.3 + '@vitest/expect': 4.0.4 + '@vitest/mocker': 4.0.4(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.4 + '@vitest/runner': 4.0.4 + '@vitest/snapshot': 4.0.4 + '@vitest/spy': 4.0.4 + '@vitest/utils': 4.0.4 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 From 42115349d460e7c0a1fdedf8896c0bd511c8c2c7 Mon Sep 17 00:00:00 2001 From: Charles <19598772+clydin@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:39:24 -0400 Subject: [PATCH 1702/2162] fix(@angular/build): add `define` option to dev-server This change introduces a `define` option to the dev-server builder, allowing users to specify global constants that will be replaced at build time. This provides a convenient way to configure environment-specific variables directly from the dev-server configuration. --- goldens/public-api/angular/build/index.api.md | 3 + .../testing/builder/src/builder-harness.ts | 18 ++++ .../build/src/builders/dev-server/options.ts | 2 + .../build/src/builders/dev-server/schema.json | 7 ++ .../dev-server/tests/options/define_spec.ts | 92 +++++++++++++++++++ .../src/builders/dev-server/vite/index.ts | 12 ++- .../src/builders/dev-server/builder.ts | 1 + 7 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 packages/angular/build/src/builders/dev-server/tests/options/define_spec.ts diff --git a/goldens/public-api/angular/build/index.api.md b/goldens/public-api/angular/build/index.api.md index 939d7e26dc5e..a51449319e47 100644 --- a/goldens/public-api/angular/build/index.api.md +++ b/goldens/public-api/angular/build/index.api.md @@ -112,6 +112,9 @@ export enum BuildOutputFileType { export type DevServerBuilderOptions = { allowedHosts?: AllowedHosts; buildTarget: string; + define?: { + [key: string]: string; + }; headers?: { [key: string]: string; }; diff --git a/modules/testing/builder/src/builder-harness.ts b/modules/testing/builder/src/builder-harness.ts index ec4973efa021..67b5f760d148 100644 --- a/modules/testing/builder/src/builder-harness.ts +++ b/modules/testing/builder/src/builder-harness.ts @@ -162,6 +162,24 @@ export class BuilderHarness { return this; } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + modifyTarget( + targetName: string, + modifier: (options: O) => O | void, + ): this { + const target = this.builderTargets.get(targetName); + if (!target) { + throw new Error(`Target "${targetName}" not found.`); + } + + const newOptions = modifier(target.options as O); + if (newOptions) { + target.options = newOptions as json.JsonObject; + } + + return this; + } + execute( options: Partial = {}, ): Observable { diff --git a/packages/angular/build/src/builders/dev-server/options.ts b/packages/angular/build/src/builders/dev-server/options.ts index 3e0f59319117..b6da278f2936 100644 --- a/packages/angular/build/src/builders/dev-server/options.ts +++ b/packages/angular/build/src/builders/dev-server/options.ts @@ -93,6 +93,7 @@ export async function normalizeOptions( poll, open, verbose, + define, watch, liveReload, hmr, @@ -114,6 +115,7 @@ export async function normalizeOptions( poll, open, verbose, + define, watch, liveReload: !!liveReload, hmr: hmr ?? !!liveReload, diff --git a/packages/angular/build/src/builders/dev-server/schema.json b/packages/angular/build/src/builders/dev-server/schema.json index 41902e43d8d0..023478ff7e52 100644 --- a/packages/angular/build/src/builders/dev-server/schema.json +++ b/packages/angular/build/src/builders/dev-server/schema.json @@ -53,6 +53,13 @@ } ] }, + "define": { + "description": "Defines global identifiers that will be replaced with a specified constant value when found in any JavaScript or TypeScript code including libraries. The value will be used directly. String values must be put in quotes. Identifiers within Angular metadata such as Component Decorators will not be replaced.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "headers": { "type": "object", "description": "Custom HTTP headers to be added to all responses.", diff --git a/packages/angular/build/src/builders/dev-server/tests/options/define_spec.ts b/packages/angular/build/src/builders/dev-server/tests/options/define_spec.ts new file mode 100644 index 000000000000..3c6ea08e15b4 --- /dev/null +++ b/packages/angular/build/src/builders/dev-server/tests/options/define_spec.ts @@ -0,0 +1,92 @@ +/** + * @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 { 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: "define"', () => { + beforeEach(() => { + setupTarget(harness); + + // Application code + harness.writeFile( + 'src/main.ts', + ` + // @ts-ignore + console.log(TEST); + // @ts-ignore + console.log(BUILD); + // @ts-ignore + console.log(SERVE); + `, + ); + }); + + it('should replace global identifiers in the application', async () => { + harness.useTarget('serve', { + ...BASE_OPTIONS, + define: { + TEST: JSON.stringify('test123'), + }, + }); + + const { result, response } = await executeOnceAndFetch(harness, '/main.js'); + + expect(result?.success).toBeTrue(); + const content = await response?.text(); + expect(content).toContain('console.log("test123")'); + }); + + it('should merge "define" option from dev-server and build', async () => { + harness.modifyTarget('build', (options) => { + options.define = { + BUILD: JSON.stringify('build'), + }; + }); + + harness.useTarget('serve', { + ...BASE_OPTIONS, + define: { + SERVE: JSON.stringify('serve'), + }, + }); + + const { result, response } = await executeOnceAndFetch(harness, '/main.js'); + + expect(result?.success).toBeTrue(); + const content = await response?.text(); + expect(content).toContain('console.log("build")'); + expect(content).toContain('console.log("serve")'); + }); + + it('should overwrite "define" option from build with the one from dev-server', async () => { + harness.modifyTarget('build', (options) => { + options.define = { + TEST: JSON.stringify('build'), + }; + }); + + harness.useTarget('serve', { + ...BASE_OPTIONS, + define: { + TEST: JSON.stringify('serve'), + }, + }); + + const { result, response } = await executeOnceAndFetch(harness, '/main.js'); + + expect(result?.success).toBeTrue(); + const content = await response?.text(); + expect(content).toContain('console.log("serve")'); + expect(content).not.toContain('console.log("build")'); + }); + }); +}); diff --git a/packages/angular/build/src/builders/dev-server/vite/index.ts b/packages/angular/build/src/builders/dev-server/vite/index.ts index b3a3ca985641..b1f70379125c 100644 --- a/packages/angular/build/src/builders/dev-server/vite/index.ts +++ b/packages/angular/build/src/builders/dev-server/vite/index.ts @@ -49,7 +49,7 @@ export type BuilderAction = ( * Build options that are also present on the dev server but are only passed * to the build. */ -const CONVENIENCE_BUILD_OPTIONS = ['watch', 'poll', 'verbose'] as const; +const CONVENIENCE_BUILD_OPTIONS = ['watch', 'poll', 'verbose', 'define'] as const; // eslint-disable-next-line max-lines-per-function export async function* serveWithVite( @@ -75,7 +75,15 @@ export async function* serveWithVite( for (const optionName of CONVENIENCE_BUILD_OPTIONS) { const optionValue = serverOptions[optionName]; if (optionValue !== undefined) { - rawBrowserOptions[optionName] = optionValue; + if (optionName === 'define' && rawBrowserOptions[optionName]) { + // Define has merging behavior within the application + for (const [key, value] of Object.entries(optionValue)) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (rawBrowserOptions[optionName] as any)[key] = value; + } + } else { + rawBrowserOptions[optionName] = optionValue; + } } } diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts index aa5b84f324aa..d1dfc6c90e00 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts @@ -97,6 +97,7 @@ export function execute( normalizedOptions as typeof normalizedOptions & { hmr: boolean; allowedHosts: true | string[]; + define: { [key: string]: string } | undefined; }, builderName, (options, context, codePlugins) => { From 4395c5ba99f7701064833090d4b5dd204c8f93e6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:37:33 -0400 Subject: [PATCH 1703/2162] refactor(@angular/build): remove Angular packages from externals for browser tests To facilitate the future implementation of more comprehensive Vite-based prebundling for browser-based unit tests, this change removes Angular packages from the list of external dependencies when a browser is configured. --- .../src/builders/unit-test/runners/vitest/build-options.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 1faffcc3fe7c..5df9aafe0d57 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -98,7 +98,12 @@ export async function getVitestBuildOptions( }); entryPoints.set('init-testbed', 'angular:test-bed-init'); - const externalDependencies = new Set(['vitest', ...ANGULAR_PACKAGES_TO_EXTERNALIZE]); + const externalDependencies = new Set(['vitest']); + if (!options.browsers?.length) { + // Only add for non-browser setups. + // Comprehensive browser prebundling will be handled separately. + ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep)); + } if (baseBuildOptions.externalDependencies) { baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep)); } From ccc598208cd2eccd18fa8c39564fcd3eea3547d7 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 29 Oct 2025 17:06:56 +0000 Subject: [PATCH 1704/2162] fix(@angular/build): ensure locale data plugin runs before other plugins The Angular locale data plugin is responsible for resolving imports. In some cases, other plugins would attempt to resolve these imports first, leading to a 'Failed to resolve import' error. By ensuring that the Angular locale data plugin is prepended to the esbuild plugin list, we guarantee that it runs before other plugins, allowing it to correctly resolve the locale data imports. Closes #31579 --- .../angular/build/src/tools/esbuild/application-code-bundle.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b17029f6c5e1..51d3702887f7 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -686,7 +686,7 @@ function getEsBuildCommonPolyfillsOptions( needLocaleDataPlugin = true; } if (needLocaleDataPlugin) { - buildOptions.plugins.push(createAngularLocaleDataPlugin()); + buildOptions.plugins.unshift(createAngularLocaleDataPlugin()); } if (polyfills.length === 0) { From 0fe6db9481c72fe356b3fac75362eb94ad8dd458 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 28 Oct 2025 19:18:09 -0400 Subject: [PATCH 1705/2162] fix(@angular/build): introduce vitest-base.config for test configuration When using the Vitest runner, a standard `vitest.config.js` file can cause conflicts with other tools or IDE extensions that might assume it represents a complete, standalone configuration. However, the builder uses this file only as a *base* configuration, which is then merged with its own internal setup. To avoid this ambiguity, the builder now searches for a `vitest-base.config.(js|ts|...etc)` file when the `runnerConfig` option is set to `true`. This makes the intent clear that the file provides a base configuration specifically for the Angular CLI builder. The search order is as follows: 1. Project Root 2. Workspace Root If no `vitest-base.config.*` file is found, the builder proceeds with its default in-memory configuration. Vitest's default behavior of searching for `vitest.config.*` is explicitly disabled in this mode to ensure predictable and consistent test execution. --- .../unit-test/runners/vitest/configuration.ts | 55 +++++++++++++++++++ .../unit-test/runners/vitest/executor.ts | 8 ++- .../tests/options/runner-config_spec.ts | 48 +++++++++++++++- 3 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 packages/angular/build/src/builders/unit-test/runners/vitest/configuration.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/configuration.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/configuration.ts new file mode 100644 index 000000000000..6df583350e07 --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/configuration.ts @@ -0,0 +1,55 @@ +/** + * @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 + */ + +/** + * @fileoverview + * This file contains utility functions for finding the Vitest base configuration file. + */ + +import { readdir } from 'node:fs/promises'; +import path from 'node:path'; + +/** + * A list of potential Vitest configuration filenames. + * The order of the files is important as the first one found will be used. + */ +const POTENTIAL_CONFIGS = [ + 'vitest-base.config.ts', + 'vitest-base.config.mts', + 'vitest-base.config.cts', + 'vitest-base.config.js', + 'vitest-base.config.mjs', + 'vitest-base.config.cjs', +]; + +/** + * Finds the Vitest configuration file in the given search directories. + * + * @param searchDirs An array of directories to search for the configuration file. + * @returns The path to the configuration file, or `false` if no file is found. + * Returning `false` is used to disable Vitest's default configuration file search. + */ +export async function findVitestBaseConfig(searchDirs: string[]): Promise { + const uniqueDirs = new Set(searchDirs); + for (const dir of uniqueDirs) { + try { + const entries = await readdir(dir, { withFileTypes: true }); + const files = new Set(entries.filter((e) => e.isFile()).map((e) => e.name)); + + for (const potential of POTENTIAL_CONFIGS) { + if (files.has(potential)) { + return path.join(dir, potential); + } + } + } catch { + // Ignore directories that cannot be read + } + } + + return false; +} diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 69668ace1be4..700e9d4de23b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -22,6 +22,7 @@ import { import { NormalizedUnitTestBuilderOptions } from '../../options'; import type { TestExecutor } from '../api'; import { setupBrowserConfiguration } from './browser-provider'; +import { findVitestBaseConfig } from './configuration'; import { createVitestPlugins } from './plugins'; type VitestCoverageOption = Exclude; @@ -207,11 +208,16 @@ export class VitestExecutor implements TestExecutor { } : {}; + const runnerConfig = this.options.runnerConfig; + return startVitest( 'test', undefined, { - config: this.options.runnerConfig === true ? undefined : this.options.runnerConfig, + config: + runnerConfig === true + ? await findVitestBaseConfig([this.options.projectRoot, this.options.workspaceRoot]) + : runnerConfig, root: workspaceRoot, project: ['base', this.projectName], name: 'base', diff --git a/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts index 54e4d9b21d13..b061b88e990c 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/runner-config_spec.ts @@ -44,7 +44,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { }); it('should search for a config file when `true`', async () => { - harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + harness.writeFile('vitest-base.config.ts', VITEST_CONFIG_CONTENT); harness.useTarget('test', { ...BASE_OPTIONS, runnerConfig: true, @@ -57,7 +57,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { }); it('should ignore config file when `false`', async () => { - harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + harness.writeFile('vitest-base.config.ts', VITEST_CONFIG_CONTENT); harness.useTarget('test', { ...BASE_OPTIONS, runnerConfig: false, @@ -70,9 +70,53 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { }); it('should ignore config file by default', async () => { + harness.writeFile('vitest-base.config.ts', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toNotExist(); + }); + + it('should find and use a `vitest-base.config.mts` in the project root', async () => { + harness.writeFile('vitest-base.config.mts', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: true, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toExist(); + }); + + it('should find and use a `vitest-base.config.js` in the workspace root', async () => { + // This file should be ignored because the new logic looks for `vitest-base.config.*`. + harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + // The workspace root is the directory containing the project root in the test harness. + harness.writeFile('vitest-base.config.js', VITEST_CONFIG_CONTENT); + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: true, + }); + + const { result } = await harness.executeOnce(); + + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toExist(); + }); + + it('should fallback to in-memory config when no base config is found', async () => { + // This file should be ignored because the new logic looks for `vitest-base.config.*` + // and when `runnerConfig` is true, it should not fall back to the default search. harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); harness.useTarget('test', { ...BASE_OPTIONS, + runnerConfig: true, }); const { result } = await harness.executeOnce(); From d4a8ab90880a9405501575dc4e79cc66d7a3b01c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:07:43 -0400 Subject: [PATCH 1706/2162] docs: release notes for the v20.3.8 release --- CHANGELOG.md | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a877922c607..9e0b67e9871d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ + + +# 20.3.8 (2025-10-29) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | +| [813cba9b9](https://github.com/angular/angular-cli/commit/813cba9b9bfe60e874595ce25608ca85a890f6bf) | fix | expand jest and jest-environment-jsdom to allow version 30 | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [542973ab0](https://github.com/angular/angular-cli/commit/542973ab074ccd9a5f09f73ee7f2706a21db45fc) | fix | add adapters to new reporter | +| [f0885691d](https://github.com/angular/angular-cli/commit/f0885691d18b6575351774fcc50d746d981285f6) | fix | ensure locale data plugin runs before other plugins | +| [45e498f95](https://github.com/angular/angular-cli/commit/45e498f9576ff83eebe02deb235d36498ce06bde) | fix | handle redirects from guards during prerendering | + + + # 19.2.19 (2025-10-29) @@ -2109,7 +2129,6 @@ - Protractor is no longer supported. Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor. - - https://angular.dev/tools/cli/end-to-end - https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c @@ -5744,7 +5763,6 @@ Alan Agius, Charles Lyding and Doug Parker ### @angular/cli - Several changes to the `ng analytics` command syntax. - - `ng analytics project ` has been replaced with `ng analytics ` - `ng analytics ` has been replaced with `ng analytics --global` @@ -5774,7 +5792,6 @@ Alan Agius, Charles Lyding and Doug Parker - `browser` and `karma` builders `script` and `styles` options input files extensions are now validated. Valid extensions for `scripts` are: - - `.js` - `.cjs` - `.mjs` @@ -5783,7 +5800,6 @@ Alan Agius, Charles Lyding and Doug Parker - `.mjsx` Valid extensions for `styles` are: - - `.css` - `.less` - `.sass` From 3b536d99ef08017c2afe4a665e03699069ff6555 Mon Sep 17 00:00:00 2001 From: MeAkib Date: Wed, 29 Oct 2025 04:22:41 +0600 Subject: [PATCH 1707/2162] refactor(@schematics/angular): add trailing commas to generated directive, pipe, and guard files Enforces consistent code formatting in generated artifacts by adding trailing commas to class metadata and other relevant object literals in directives, pipes, and guards. --- .../files/__name@dasherize__.__type@dasherize__.ts.template | 4 ++-- .../__name@dasherize____typeSeparator__guard.ts.template | 2 +- .../files/__name@dasherize____typeSeparator__pipe.ts.template | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template b/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template index f6c2ba006be3..624b3cafbec1 100644 --- a/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template +++ b/packages/schematics/angular/directive/files/__name@dasherize__.__type@dasherize__.ts.template @@ -1,8 +1,8 @@ import { Directive } from '@angular/core'; @Directive({ - selector: '[<%= selector %>]'<% if(!standalone) {%>, - standalone: false<%}%> + selector: '[<%= selector %>]',<% if(!standalone) {%> + standalone: false,<%}%> }) export class <%= classifiedName %> { diff --git a/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.ts.template b/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.ts.template index 918718d3e468..3ce1150879da 100644 --- a/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.ts.template +++ b/packages/schematics/angular/guard/implements-files/__name@dasherize____typeSeparator__guard.ts.template @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { <%= routerImports %> } from '@angular/router'; @Injectable({ - providedIn: 'root' + providedIn: 'root', }) export class <%= classify(name) %>Guard implements <%= implementations %> { <% if (implements.includes('CanActivate')) { %>canActivate( diff --git a/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.ts.template b/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.ts.template index 2e917b4b0503..57765121531e 100644 --- a/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.ts.template +++ b/packages/schematics/angular/pipe/files/__name@dasherize____typeSeparator__pipe.ts.template @@ -1,8 +1,8 @@ import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ - name: '<%= camelize(name) %>'<% if(!standalone) {%>, - standalone: false<%}%> + name: '<%= camelize(name) %>',<% if(!standalone) {%> + standalone: false,<%}%> }) export class <%= classify(name) %>Pipe implements PipeTransform { From 500d1695cfde471dc2d8934db5a8fc9467e66781 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 29 Oct 2025 18:06:39 +0000 Subject: [PATCH 1708/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +-- MODULE.bazel | 2 +- package.json | 24 +- packages/angular/build/package.json | 2 +- packages/angular/ssr/package.json | 12 +- .../angular_devkit/build_angular/package.json | 2 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 297 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 14 files changed, 239 insertions(+), 246 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 9201ce1eedc3..76275de9c29f 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + - uses: angular/dev-infra/github-actions/branch-manager@8b845a41a4a3d812c4e6453217a36761c63bc832 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6095c853cd9f..12a26ff6482c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 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@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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 6abb319ddf39..98be7673f254 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + - uses: angular/dev-infra/github-actions/pull-request-labeling@8b845a41a4a3d812c4e6453217a36761c63bc832 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + - uses: angular/dev-infra/github-actions/post-approval-changes@8b845a41a4a3d812c4e6453217a36761c63bc832 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index c5ba93bdcb49..221bc5ea6966 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@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + - uses: angular/dev-infra/github-actions/feature-request@8b845a41a4a3d812c4e6453217a36761c63bc832 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index b6c6bd0d0c61..199d3d48b187 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@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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 243893f5dc4d..17cb776f149f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/linting/licenses@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 - 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/MODULE.bazel b/MODULE.bazel index ce641549a491..d9ffe77e4a14 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "db74b80bd7f233f465f6ac89b2093e01ea7ffbf0", + commit = "8b845a41a4a3d812c4e6453217a36761c63bc832", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 4da4457ffa80..2d397fc5b8d6 100644 --- a/package.json +++ b/package.json @@ -44,20 +44,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-next.9", + "@angular/animations": "21.0.0-rc.0", "@angular/cdk": "21.0.0-next.10", - "@angular/common": "21.0.0-next.9", - "@angular/compiler": "21.0.0-next.9", - "@angular/compiler-cli": "21.0.0-next.9", - "@angular/core": "21.0.0-next.9", - "@angular/forms": "21.0.0-next.9", - "@angular/localize": "21.0.0-next.9", + "@angular/common": "21.0.0-rc.0", + "@angular/compiler": "21.0.0-rc.0", + "@angular/compiler-cli": "21.0.0-rc.0", + "@angular/core": "21.0.0-rc.0", + "@angular/forms": "21.0.0-rc.0", + "@angular/localize": "21.0.0-rc.0", "@angular/material": "21.0.0-next.10", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#616fedd5ae1655bb227f61c67fc9945ec75d3350", - "@angular/platform-browser": "21.0.0-next.9", - "@angular/platform-server": "21.0.0-next.9", - "@angular/router": "21.0.0-next.9", - "@angular/service-worker": "21.0.0-next.9", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#b92e80b853e5a53612e80f329ab0faaa7eb7d8e2", + "@angular/platform-browser": "21.0.0-rc.0", + "@angular/platform-server": "21.0.0-rc.0", + "@angular/router": "21.0.0-rc.0", + "@angular/service-worker": "21.0.0-rc.0", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index cf60f31cd5cc..ed89e461aa1f 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -53,7 +53,7 @@ "@angular-devkit/core": "workspace:*", "jsdom": "27.0.1", "less": "4.4.2", - "ng-packagr": "21.0.0-next.4", + "ng-packagr": "21.0.0-rc.0", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "4.0.4" diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 76b70f54ad5c..93ceb8f65d91 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-next.9", - "@angular/compiler": "21.0.0-next.9", - "@angular/core": "21.0.0-next.9", - "@angular/platform-browser": "21.0.0-next.9", - "@angular/platform-server": "21.0.0-next.9", - "@angular/router": "21.0.0-next.9", + "@angular/common": "21.0.0-rc.0", + "@angular/compiler": "21.0.0-rc.0", + "@angular/core": "21.0.0-rc.0", + "@angular/platform-browser": "21.0.0-rc.0", + "@angular/platform-server": "21.0.0-rc.0", + "@angular/router": "21.0.0-rc.0", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index eee673d0ff77..d3228bd12dfc 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.0.0-next.4", + "ng-packagr": "21.0.0-rc.0", "undici": "7.16.0" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 438231fed1a6..ca009456954a 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": "21.0.0-next.9", - "@angular/compiler-cli": "21.0.0-next.9", + "@angular/compiler": "21.0.0-rc.0", + "@angular/compiler-cli": "21.0.0-rc.0", "typescript": "5.9.3", "webpack": "5.102.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 719f34371729..c01f997ec179 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': specifier: 21.0.0-next.10 - version: 21.0.0-next.10(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0-next.10(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9 + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0 '@angular/compiler-cli': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(@angular/compiler@21.0.0-next.9) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.0) '@angular/material': specifier: 21.0.0-next.10 - version: 21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381) + version: 21.0.0-next.10(38e1f4a9e3d134edc7fd6e337dd0ae51) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#616fedd5ae1655bb227f61c67fc9945ec75d3350 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350(@modelcontextprotocol/sdk@1.20.2) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#b92e80b853e5a53612e80f329ab0faaa7eb7d8e2 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2(@modelcontextprotocol/sdk@1.20.2) '@angular/platform-browser': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.9)(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.0)(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -438,8 +438,8 @@ importers: specifier: 4.4.2 version: 4.4.2 ng-packagr: - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -536,23 +536,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9 + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0 '@angular/core': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.9)(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.0)(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -766,8 +766,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9) ng-packagr: - specifier: 21.0.0-next.4 - version: 21.0.0-next.4(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -865,11 +865,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9 + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0 '@angular/compiler-cli': - specifier: 21.0.0-next.9 - version: 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -975,11 +975,11 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-next.9': - resolution: {integrity: sha512-tvZ3vajgMXBUqej90sKg4NG6EqvpSYlsZcdfJLn8GtIZRvVyo5FhFXPj8O6ybKfIemmcxpACjKikpMRRx50C4A==} + '@angular/animations@21.0.0-rc.0': + resolution: {integrity: sha512-uIi4hoKTB2RYoFzyMWGLskVnHmM0Xn1KgHcc9KJ+OxrYlxSxxKmzo1YG2iIcMx/R76HJk7ug/dkg+HbKcjpQeQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.9 + '@angular/core': 21.0.0-rc.0 '@angular/cdk@21.0.0-next.10': resolution: {integrity: sha512-2TrKv6q92eWHx+pB0WcignKqBnW6dY+1lFA1Nh0Dg6Al+/ZWhPP89dQUZylWlRQqKlolClJulRfE5PQXidlOIA==} @@ -988,33 +988,33 @@ packages: '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-next.9': - resolution: {integrity: sha512-0mXLVCbJxc9WJZJDU1Qf6o5lLORNC4SZuZp1u9cqE/JKCFK4Pt1uu7WFdnPxgu+jN9JiHc4EQJqiINz7nraQ8A==} + '@angular/common@21.0.0-rc.0': + resolution: {integrity: sha512-wZg/eNYdI/u6zU5DnfXM5tAmjByTXlPlWk4ve9LMZMyKAaw8jqrN0k210519D72saytkE7TPohL2aFGr/O8LGw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-next.9 + '@angular/core': 21.0.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-next.9': - resolution: {integrity: sha512-OFczNXCZK3PhlX8QI9YuoAYfz0/qKgmCzy2g/Za+Qf5HyTFHxyB0itAdC+vzUmzyP3vvxjLhXsYfdvC6jEe0Cg==} + '@angular/compiler-cli@21.0.0-rc.0': + resolution: {integrity: sha512-sEljEVfXxMrSq4cBbbmCbgAhr+NKU971bXxGVm4JHJ7gKLW5s5S7r/rlHGMVCe3GfBwydRF8UrtE0Q2SZltEAg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.9 + '@angular/compiler': 21.0.0-rc.0 typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-next.9': - resolution: {integrity: sha512-C+qkZvukOIhtXzb6ownhaWaryJGfVu0/JO6xswCY59wgT5EN7kR7rB+VjSIbtEvn0us0i248/5Y3Wf6xX5VF1A==} + '@angular/compiler@21.0.0-rc.0': + resolution: {integrity: sha512-zFk1JOlOjQx1ZPyfN4UoPz2kF2B2XXfr3J+5qDqxPavv0bUa/zo/BeC8s12r53kRB3kmLQblcoyzt+KbFkLrzA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-next.9': - resolution: {integrity: sha512-2fcMVzV7o0vavbF/6YyjMyj27pnYdBA+/r/buaDnrBHRYgq0kKO6tdwnCJR9hX36Tm0pHS7+LY/VVqVJEJGKFQ==} + '@angular/core@21.0.0-rc.0': + resolution: {integrity: sha512-dRhlcCfrAbUsNycZ7eqxu54knq1ejKmyznmaJTwqA7sHIfgxC4C78tE2r6rylNECcvvB3EySV749yLHJJNDNfw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-next.9 + '@angular/compiler': 21.0.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1023,23 +1023,23 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-next.9': - resolution: {integrity: sha512-YAJj/KDMPzsTb2qHgak/OfaSr04WvAo6ddcTrUUqPd4KNIz2mhFncm6olytjgdwBNUB9DGKya/UGqcaZ0XQQPg==} + '@angular/forms@21.0.0-rc.0': + resolution: {integrity: sha512-ppGTKrFYAwXHwAXPoqkj63L7n6QvLgpLlp/No6mvDnn9/x34ZrcabvZWuxqj64+Mf1JJZSK8hYKbhzNz/zskcA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.9 - '@angular/core': 21.0.0-next.9 - '@angular/platform-browser': 21.0.0-next.9 + '@angular/common': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.0 + '@angular/platform-browser': 21.0.0-rc.0 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-next.9': - resolution: {integrity: sha512-WXQ/JI6/k6OMwf8FJ2Hj2kbsa6aIoDMB3rxiDzsQBP9vYOwN5B/i8dHWU26JPcKHVHg/mjm2+DBbzWU1d4TvHw==} + '@angular/localize@21.0.0-rc.0': + resolution: {integrity: sha512-KtjeHQ9qYj2K8Ek1QzBFaZlv9YMfZoXxjNtOmJ8HNAEHoyAf14lUBNAjw4OCKDccTT42TTeJ631BB5BtOGibrw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-next.9 - '@angular/compiler-cli': 21.0.0-next.9 + '@angular/compiler': 21.0.0-rc.0 + '@angular/compiler-cli': 21.0.0-rc.0 '@angular/material@21.0.0-next.10': resolution: {integrity: sha512-oh3SA4b4SLqBpPEWYO00LOSQKUSrSM96ladmr2O7bOpHk4VfRJBaSiX3Tkr/K1bsNrg88LZp3lBYtMN7soIxoQ==} @@ -1051,47 +1051,47 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/616fedd5ae1655bb227f61c67fc9945ec75d3350': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350} - version: 0.0.0-db74b80bd7f233f465f6ac89b2093e01ea7ffbf0 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2} + version: 0.0.0-8b845a41a4a3d812c4e6453217a36761c63bc832 hasBin: true - '@angular/platform-browser@21.0.0-next.9': - resolution: {integrity: sha512-kWVbVRQqyX75grB9EfS9P4UbXSNg7vga7zPd5r67J9hj3Wg0y4Y+iIFdLavPp3uFHqPj/nI/hIgYCzKNjVp+Zg==} + '@angular/platform-browser@21.0.0-rc.0': + resolution: {integrity: sha512-h6zj3cMXkXlKEAk2O1tAYc1rFJfC7zHEUmWfB/9KeGxDaBzf2A9LRLcsiApUx0Jt8qnGxPRGZq28vuAiXBCyiA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-next.9 - '@angular/common': 21.0.0-next.9 - '@angular/core': 21.0.0-next.9 + '@angular/animations': 21.0.0-rc.0 + '@angular/common': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.0 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-next.9': - resolution: {integrity: sha512-Nwks5bIIZMI1bn5ya8Z3QBE8MhRYsLgw+Z9njY7qZLHxQLpFxcgGsnkBa9V2WSgm8CMiwKunGOzht25zXDj6Ww==} + '@angular/platform-server@21.0.0-rc.0': + resolution: {integrity: sha512-r2KiSmCepQpzSw+54r9Axh5mW59chcGa7r6/OcSJ+Jnlnw8k3V/tJYy0UPIh16qWi4pUVoRimyjE/0nZe/2C/g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.9 - '@angular/compiler': 21.0.0-next.9 - '@angular/core': 21.0.0-next.9 - '@angular/platform-browser': 21.0.0-next.9 + '@angular/common': 21.0.0-rc.0 + '@angular/compiler': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.0 + '@angular/platform-browser': 21.0.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-next.9': - resolution: {integrity: sha512-1WnTT4f1b8Otfq66az1a/3JXOcZmL6/akKLDJENQ0TxYnKfphQ5k7n69q/ZuSrXCSN46jnLRxfyuN5/seJPz0g==} + '@angular/router@21.0.0-rc.0': + resolution: {integrity: sha512-iel8D+n+aqsrKgUvGJbBvNhLl10DKxEfTy6qIKk34FP01wgOJ3ni/pvnY3KYzEfGPGtAwuiM5hV0lDj+RlC+vw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-next.9 - '@angular/core': 21.0.0-next.9 - '@angular/platform-browser': 21.0.0-next.9 + '@angular/common': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.0 + '@angular/platform-browser': 21.0.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-next.9': - resolution: {integrity: sha512-7hvj4f4NyxD42hEMj8qBILvto2jL61EJ4aVegEHtQ1GP2rpuIJta6JqRAaPyWiFgTJJxc/FEI7u/aLLRIsA6PQ==} + '@angular/service-worker@21.0.0-rc.0': + resolution: {integrity: sha512-eXpwMxVqsnatT7cAgEbvT2wsP3I6MMAGDQ0Tv8XHNlGgXNnf61y232SHxOjA5Zg4d4WyaPEp2WEv4o2Uq/P0cQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-next.9 + '@angular/core': 21.0.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -2143,8 +2143,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.26.0': - resolution: {integrity: sha512-cy5y9RgN4jBK8zr+ePgZd0To1HDpzpjIgSM6aRCZnvYR+JupGtgc1SkkOCCi1MNZho7/MuKKdnQTLhhP8OQNvg==} + '@google/genai@1.27.0': + resolution: {integrity: sha512-sveeQqwyzO/U5kOjo3EflF1rf7v0ZGprrjPGmeT6V5u22IUTcA4wBFxW+q1n7hOX0M1iWR3944MImoNPOM+zsA==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.20.1 @@ -3373,8 +3373,8 @@ packages: '@types/folder-hash@4.0.4': resolution: {integrity: sha512-c+PwHm51Dw3fXM8SDK+93PO3oXdk4XNouCCvV67lj4aijRkZz5g67myk+9wqWWnyv3go6q96hT6ywcd3XtoZiQ==} - '@types/git-raw-commits@5.0.0': - resolution: {integrity: sha512-MQIzbZxgEnKpN1kCcw9JlQIu3Wdw5c4CCCP2cUli+DYgFjzsjtGLOeUe8oqPjjrKJudOoFnNuIZb/4sYHXEWZg==} + '@types/git-raw-commits@5.0.1': + resolution: {integrity: sha512-sd4kgxJbuZF0RDy6cX7KlKSGiwqB1mqn8nriUbxt5e1F+MO/N4hJlhaYn0Omw4g2biClFpT5Mre07x7OkGt8tg==} '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -3541,9 +3541,6 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} @@ -6849,8 +6846,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.0.0-next.4: - resolution: {integrity: sha512-WDa+yU3iCjQR9/Y9R88l13Cpm0OeElT99yC3cXN6ETN23aMLjvZayma0pC+FhPnsentzYaz2tGyMRgnL/9TNNw==} + ng-packagr@21.0.0-rc.0: + resolution: {integrity: sha512-dCvyhGTRFRSY08rJMNmyBRt1wHGFx+J9YjWcbN2LXfJgeKYf2pgjhHnbHjrrN623nsgokcahRAfQ0ohJExUMAw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: @@ -9131,28 +9128,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.10(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-next.10(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-next.9 + '@angular/compiler': 21.0.0-rc.0 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9166,31 +9163,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-next.9': + '@angular/compiler@21.0.0-rc.0': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-next.9 + '@angular/compiler': 21.0.0-rc.0 zone.js: 0.15.1 - '@angular/forms@21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-next.9(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(@angular/compiler@21.0.0-next.9)': + '@angular/localize@21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.0)': dependencies: - '@angular/compiler': 21.0.0-next.9 - '@angular/compiler-cli': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) + '@angular/compiler': 21.0.0-rc.0 + '@angular/compiler-cli': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9198,21 +9195,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.10(a08c742fd8cc4091bdee765e9534f381)': + '@angular/material@21.0.0-next.10(38e1f4a9e3d134edc7fd6e337dd0ae51)': dependencies: - '@angular/cdk': 21.0.0-next.10(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-next.10(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/616fedd5ae1655bb227f61c67fc9945ec75d3350(@modelcontextprotocol/sdk@1.20.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2(@modelcontextprotocol/sdk@1.20.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.26.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.27.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.9.0(@types/node@24.9.1) '@inquirer/type': 3.0.9(@types/node@24.9.1) '@octokit/auth-app': 8.1.1 @@ -9230,12 +9227,12 @@ snapshots: '@types/ejs': 3.1.5 '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 - '@types/git-raw-commits': 5.0.0 + '@types/git-raw-commits': 5.0.1 '@types/jasmine': 5.1.12 '@types/node': 24.9.1 '@types/semver': 7.7.1 '@types/which': 3.0.4 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.34 '@types/yarnpkg__lockfile': 1.1.9 '@yarnpkg/lockfile': 1.1.0 bufferutil: 4.0.9 @@ -9269,35 +9266,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-next.9)(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.0)(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-next.9 - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-next.9(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-next.9(@angular/animations@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-next.9(@angular/core@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -10612,7 +10609,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.26.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.27.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.4.2(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -11760,7 +11757,7 @@ snapshots: '@types/folder-hash@4.0.4': {} - '@types/git-raw-commits@5.0.0': + '@types/git-raw-commits@5.0.1': dependencies: '@types/node': 22.18.12 @@ -11961,10 +11958,6 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.34': dependencies: '@types/yargs-parser': 21.0.3 @@ -16006,10 +15999,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-next.4(@angular/compiler-cli@21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-next.9(@angular/compiler@21.0.0-next.9)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.5) '@rollup/wasm-node': 4.52.5 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 4fcbd1f50bb7..d00e45f58e22 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#18649de9fd78cf439f26fcf9f20653ddff4801d8", - "@angular/cdk": "github:angular/cdk-builds#0eb7bc8ebb849769f9097f868d3b11aefe407bcf", - "@angular/common": "github:angular/common-builds#737c58939816086ae2d24624a75596c03e82eda4", - "@angular/compiler": "github:angular/compiler-builds#5cdedfbeb863a1798d1671e166e1d66f1cde47ed", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#5425be633cd24e397eff4ce892403a05e39c7f8b", - "@angular/core": "github:angular/core-builds#3cfe73ab19c6768510088e3088aab7a5344da0a1", - "@angular/forms": "github:angular/forms-builds#e96090b57412ed0144733bdcb38b445881e24a6f", - "@angular/language-service": "github:angular/language-service-builds#f66c17b436bea6776f107546e9afd8f185d5a05e", - "@angular/localize": "github:angular/localize-builds#968e602d08c951e4b4a9f7a615ab0432528f870f", - "@angular/material": "github:angular/material-builds#1088b7359001b8fbc2cc799c6c83747a29eeb3b8", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a9640d6cb3bceef07b001ae0294e5e7116e4c48d", - "@angular/platform-browser": "github:angular/platform-browser-builds#6776925443b4abfc0e09a59bf7c287e89b281dfc", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#d871d1cbb2c6111c3d554bb788ae550ba701c844", - "@angular/platform-server": "github:angular/platform-server-builds#70a1fcd8c9400829cdcb51864bb3b97b231b8d45", - "@angular/router": "github:angular/router-builds#decd77a72f851538d3579610120bc0806fdfae27", - "@angular/service-worker": "github:angular/service-worker-builds#b5fe45bc255701754a8e819ce0694b55964662c7" + "@angular/animations": "github:angular/animations-builds#2c7cbe9d4cb4f5036601c9268ab3eafa0610fcac", + "@angular/cdk": "github:angular/cdk-builds#a6c89b8662fadbd3f3df8b04bd4605e35fdb311f", + "@angular/common": "github:angular/common-builds#6d1ebbf43ca9cb5eb98b801504922361eaa34b48", + "@angular/compiler": "github:angular/compiler-builds#566630def236febebfd803a03893af9d10d1a5dd", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#96dd65f9a64e2d37184958230c0345dfe1f941b1", + "@angular/core": "github:angular/core-builds#f3d636afefc784db7c689f3c227df16b0dbbb035", + "@angular/forms": "github:angular/forms-builds#b565be187e532b1b6d3300acb9c7f04162198086", + "@angular/language-service": "github:angular/language-service-builds#d2d5283327e0fce47de5691ea8ace50af0152d55", + "@angular/localize": "github:angular/localize-builds#fa69ebe5c25d2a87a1338841351578f1ce907ea8", + "@angular/material": "github:angular/material-builds#0a12abd740fff2fc4fa5ef5ca990eb3a2b5c4209", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f85b223ff8532681823e71287bb85f327667ca39", + "@angular/platform-browser": "github:angular/platform-browser-builds#5dcc143322d29440cf79c89161d3bac0b35bc746", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#f69537b8c9588a5f4d84e805c5d581424ad29815", + "@angular/platform-server": "github:angular/platform-server-builds#6630e171cff3812a167cc81aaee89e3bee96b528", + "@angular/router": "github:angular/router-builds#f36e84ea83289a403c920c225ff8e5069fe5f9b1", + "@angular/service-worker": "github:angular/service-worker-builds#c63eac2b3fc9998599003cad6f9090d7678fb7d3" } } From 5729d3bbcf95945c3acd9e8ab5f9e5d9c6f9fd74 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 29 Oct 2025 16:21:20 -0400 Subject: [PATCH 1709/2162] docs: release notes for the v21.0.0-next.10 release --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e0b67e9871d..d4553bdd7869 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,36 @@ + + +# 21.0.0-next.10 (2025-10-29) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [c967a447c](https://github.com/angular/angular-cli/commit/c967a447ce755fbf582ec35aa24bb6e0fa0043cf) | fix | correct spacing in application spec tsconfig | +| [00d941c43](https://github.com/angular/angular-cli/commit/00d941c433de718cf3c38033d5d68dd86f790291) | fix | correct style guide paths for standalone components | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | +| [6e395fc0c](https://github.com/angular/angular-cli/commit/6e395fc0c4505dd32b3237ea116e8db6bde25758) | fix | ensure vitest code coverage handles virtual files correctly | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [b2f048773](https://github.com/angular/angular-cli/commit/b2f048773c6014022983e7ccc52cb760619d8a1b) | fix | add --ui option for Vitest runner | +| [530d9270e](https://github.com/angular/angular-cli/commit/530d9270e87786594dd8d1956b0806a28650db25) | fix | add `define` option to dev-server | +| [091d1c03e](https://github.com/angular/angular-cli/commit/091d1c03e9665371f52c4cb8ec6cd9f1f862a407) | fix | add adapters to new reporter | +| [542d52868](https://github.com/angular/angular-cli/commit/542d528683cc0e51fd5a55ed6dbf43168f7a51a5) | fix | allow custom runner configuration file for unit-test | +| [9975c7249](https://github.com/angular/angular-cli/commit/9975c72494bc2a71359dc4c5a31e43eed040716e) | fix | ensure locale data plugin runs before other plugins | +| [7c529c1bc](https://github.com/angular/angular-cli/commit/7c529c1bc606101ab8c506e0b7845d2e9f509db4) | fix | externalize Angular dependencies in Vitest runner | +| [a41f4e860](https://github.com/angular/angular-cli/commit/a41f4e860dd28bee28af47c1513f55450ca74b5f) | fix | handle redirects from guards during prerendering | +| [bab5806c2](https://github.com/angular/angular-cli/commit/bab5806c281fd4cdd63b7969e691d703ed1e7680) | fix | introduce vitest-base.config for test configuration | +| [9132e6af9](https://github.com/angular/angular-cli/commit/9132e6af9fd573d8b39c69a50b4b93e256145fd4) | fix | resolve browser provider packages using project resolver | + + + # 20.3.8 (2025-10-29) From 90cd2fc4724128318c28d2c839954db56efd7640 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 30 Oct 2025 09:41:07 +0000 Subject: [PATCH 1710/2162] docs: release notes for the v21.0.0-rc.0 release --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4553bdd7869..c2607536c325 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ + + +# 21.0.0-rc.0 (2025-10-30) + + + # 21.0.0-next.10 (2025-10-29) From cf47d15efb4ad6ff68fc64be6d60df158c53baeb Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:39:50 -0400 Subject: [PATCH 1711/2162] refactor(@angular/build): refactor Vitest configuration to use project-based setup Refactors the Vitest executor and plugin creation to streamline configuration. This moves project-specific settings into the `startVitest` call and simplifies the `createVitestPlugins` function for better modularity. --- .../unit-test/runners/vitest/executor.ts | 40 +++- .../unit-test/runners/vitest/plugins.ts | 213 ++++++++---------- 2 files changed, 118 insertions(+), 135 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 700e9d4de23b..f7ff75c82d70 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -190,7 +190,7 @@ export class VitestExecutor implements TestExecutor { ); const testSetupFiles = this.prepareSetupFiles(); - const plugins = createVitestPlugins(this.options, testSetupFiles, browserOptions, { + const plugins = createVitestPlugins({ workspaceRoot, projectSourceRoot: this.options.projectSourceRoot, projectName: this.projectName, @@ -209,36 +209,54 @@ export class VitestExecutor implements TestExecutor { : {}; const runnerConfig = this.options.runnerConfig; + const externalConfigPath = + runnerConfig === true + ? await findVitestBaseConfig([this.options.projectRoot, this.options.workspaceRoot]) + : runnerConfig; + const projectName = this.projectName; return startVitest( 'test', undefined, { - config: - runnerConfig === true - ? await findVitestBaseConfig([this.options.projectRoot, this.options.workspaceRoot]) - : runnerConfig, + config: externalConfigPath, root: workspaceRoot, - project: ['base', this.projectName], - name: 'base', - include: [], + project: projectName, + outputFile, testNamePattern: this.options.filter, watch, ui, + ...debugOptions, }, { test: { coverage: await generateCoverageOption(coverage, this.projectName), - outputFile, - ...debugOptions, ...(reporters ? { reporters } : {}), + projects: [ + { + extends: externalConfigPath || true, + test: { + name: projectName, + globals: true, + setupFiles: testSetupFiles, + ...(this.options.exclude ? { exclude: this.options.exclude } : {}), + browser: browserOptions.browser, + // Use `jsdom` if no browsers are explicitly configured. + ...(browserOptions.browser ? {} : { environment: 'jsdom' }), + ...(this.options.include ? { include: this.options.include } : {}), + }, + optimizeDeps: { + noDiscovery: true, + }, + plugins, + }, + ], }, server: { // Disable the actual file watcher. The boolean watch option above should still // be enabled as it controls other internal behavior related to rerunning tests. watch: null, }, - plugins, }, ); } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 649032e3b4fc..fd06475e6980 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -28,143 +28,108 @@ interface PluginOptions { testFileToEntryPoint: ReadonlyMap; } -export function createVitestPlugins( - options: NormalizedUnitTestBuilderOptions, - testSetupFiles: string[], - browserOptions: BrowserConfiguration, - pluginOptions: PluginOptions, -): VitestPlugins { - const { workspaceRoot, projectName, buildResultFiles, testFileToEntryPoint } = pluginOptions; +export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins { + const { workspaceRoot, buildResultFiles, testFileToEntryPoint } = pluginOptions; return [ { - name: 'angular:project-init', - // Type is incorrect. This allows a Promise. - // eslint-disable-next-line @typescript-eslint/no-misused-promises - configureVitest: async (context) => { - // Create a subproject that can be configured with plugins for browser mode. - // Plugins defined directly in the vite overrides will not be present in the - // browser specific Vite instance. - await context.injectTestProjects({ - test: { - name: projectName, - root: workspaceRoot, - globals: true, - setupFiles: testSetupFiles, - include: options.include, - ...(options.exclude ? { exclude: options.exclude } : {}), - browser: browserOptions.browser, - // Use `jsdom` if no browsers are explicitly configured. - ...(browserOptions.browser ? {} : { environment: 'jsdom' }), - }, - plugins: [ - { - name: 'angular:test-in-memory-provider', - enforce: 'pre', - resolveId: (id, importer) => { - if (importer && (id[0] === '.' || id[0] === '/')) { - let fullPath; - if (testFileToEntryPoint.has(importer)) { - fullPath = toPosixPath(path.join(workspaceRoot, id)); - } else { - fullPath = toPosixPath(path.join(path.dirname(importer), id)); - } + name: 'angular:test-in-memory-provider', + enforce: 'pre', + resolveId: (id, importer) => { + if (importer && (id[0] === '.' || id[0] === '/')) { + let fullPath; + if (testFileToEntryPoint.has(importer)) { + fullPath = toPosixPath(path.join(workspaceRoot, id)); + } else { + fullPath = toPosixPath(path.join(path.dirname(importer), id)); + } - const relativePath = path.relative(workspaceRoot, fullPath); - if (buildResultFiles.has(toPosixPath(relativePath))) { - return fullPath; - } - } + const relativePath = path.relative(workspaceRoot, fullPath); + if (buildResultFiles.has(toPosixPath(relativePath))) { + return fullPath; + } + } - if (testFileToEntryPoint.has(id)) { - return id; - } + if (testFileToEntryPoint.has(id)) { + return id; + } - assert(buildResultFiles.size > 0, 'buildResult must be available for resolving.'); - const relativePath = path.relative(workspaceRoot, id); - if (buildResultFiles.has(toPosixPath(relativePath))) { - return id; - } - }, - load: async (id) => { - assert( - buildResultFiles.size > 0, - 'buildResult must be available for in-memory loading.', - ); + assert(buildResultFiles.size > 0, 'buildResult must be available for resolving.'); + const relativePath = path.relative(workspaceRoot, id); + if (buildResultFiles.has(toPosixPath(relativePath))) { + return id; + } + }, + load: async (id) => { + assert(buildResultFiles.size > 0, 'buildResult must be available for in-memory loading.'); - // Attempt to load as a source test file. - const entryPoint = testFileToEntryPoint.get(id); - let outputPath; - if (entryPoint) { - outputPath = entryPoint + '.js'; + // Attempt to load as a source test file. + const entryPoint = testFileToEntryPoint.get(id); + let outputPath; + if (entryPoint) { + outputPath = entryPoint + '.js'; - // To support coverage exclusion of the actual test file, the virtual - // test entry point only references the built and bundled intermediate file. - return { - code: `import "./${outputPath}";`, - }; - } else { - // Attempt to load as a built artifact. - const relativePath = path.relative(workspaceRoot, id); - outputPath = toPosixPath(relativePath); - } + // To support coverage exclusion of the actual test file, the virtual + // test entry point only references the built and bundled intermediate file. + return { + code: `import "./${outputPath}";`, + }; + } else { + // Attempt to load as a built artifact. + const relativePath = path.relative(workspaceRoot, id); + outputPath = toPosixPath(relativePath); + } - const outputFile = buildResultFiles.get(outputPath); - if (outputFile) { - const sourceMapPath = outputPath + '.map'; - const sourceMapFile = buildResultFiles.get(sourceMapPath); - const code = - outputFile.origin === 'memory' - ? Buffer.from(outputFile.contents).toString('utf-8') - : await readFile(outputFile.inputPath, 'utf-8'); - const sourceMapText = sourceMapFile - ? sourceMapFile.origin === 'memory' - ? Buffer.from(sourceMapFile.contents).toString('utf-8') - : await readFile(sourceMapFile.inputPath, 'utf-8') - : undefined; + const outputFile = buildResultFiles.get(outputPath); + if (outputFile) { + const sourceMapPath = outputPath + '.map'; + const sourceMapFile = buildResultFiles.get(sourceMapPath); + const code = + outputFile.origin === 'memory' + ? Buffer.from(outputFile.contents).toString('utf-8') + : await readFile(outputFile.inputPath, 'utf-8'); + const sourceMapText = sourceMapFile + ? sourceMapFile.origin === 'memory' + ? Buffer.from(sourceMapFile.contents).toString('utf-8') + : await readFile(sourceMapFile.inputPath, 'utf-8') + : undefined; - // Vitest will include files in the coverage report if the sourcemap contains no sources. - // For builder-internal generated code chunks, which are typically helper functions, - // a virtual source is added to the sourcemap to prevent them from being incorrectly - // included in the final coverage report. - const map = sourceMapText ? JSON.parse(sourceMapText) : undefined; - if (map) { - if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) { - map.sources = ['virtual:builder']; - } - } + // Vitest will include files in the coverage report if the sourcemap contains no sources. + // For builder-internal generated code chunks, which are typically helper functions, + // a virtual source is added to the sourcemap to prevent them from being incorrectly + // included in the final coverage report. + const map = sourceMapText ? JSON.parse(sourceMapText) : undefined; + if (map) { + if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) { + map.sources = ['virtual:builder']; + } + } - return { - code, - map, - }; - } - }, - configureServer: (server) => { - server.middlewares.use( - createBuildAssetsMiddleware(server.config.base, buildResultFiles), - ); - }, - }, + return { + code, + map, + }; + } + }, + configureServer: (server) => { + server.middlewares.use(createBuildAssetsMiddleware(server.config.base, buildResultFiles)); + }, + }, + { + name: 'angular:html-index', + transformIndexHtml: () => { + // Add all global stylesheets + if (buildResultFiles.has('styles.css')) { + return [ { - name: 'angular:html-index', - transformIndexHtml: () => { - // Add all global stylesheets - if (buildResultFiles.has('styles.css')) { - return [ - { - tag: 'link', - attrs: { href: 'styles.css', rel: 'stylesheet' }, - injectTo: 'head', - }, - ]; - } - - return []; - }, + tag: 'link', + attrs: { href: 'styles.css', rel: 'stylesheet' }, + injectTo: 'head', }, - ], - }); + ]; + } + + return []; }, }, ]; From 3a37cf6ddf40b32e9426a6ad2fb6c69e5b651da3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 31 Oct 2025 05:06:44 +0000 Subject: [PATCH 1712/2162] build: update pnpm to v10.20.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2d397fc5b8d6..f95458e31512 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.19.0", + "packageManager": "pnpm@10.20.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.19.0" + "pnpm": "10.20.0" }, "author": "Angular Authors", "license": "MIT", From 37010fe719cb8764c899c1ec7b7745cce45bb96a Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Tue, 30 Sep 2025 16:39:59 -0700 Subject: [PATCH 1713/2162] refactor(@angular/cli): Change modernize MCP to invoke schematics directly --- .../cli/src/commands/mcp/tools/modernize.ts | 170 +++++++++---- .../src/commands/mcp/tools/modernize_spec.ts | 237 ++++++++++++++---- 2 files changed, 314 insertions(+), 93 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 58851ca3df09..b38cd4184fbf 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -6,8 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ +import { exec } from 'child_process'; +import { existsSync } from 'fs'; +import { stat } from 'fs/promises'; +import { dirname, join, relative } from 'path'; +import { promisify } from 'util'; import { z } from 'zod'; -import { declareTool } from './tool-registry'; +import { McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { name: string; @@ -18,13 +23,13 @@ interface Transformation { const TRANSFORMATIONS: Array = [ { - name: 'control-flow-migration', + name: 'control-flow', description: 'Migrates from `*ngIf`, `*ngFor`, and `*ngSwitch` to the new `@if`, `@for`, and `@switch` block syntax in templates.', documentationUrl: 'https://angular.dev/reference/migrations/control-flow', }, { - name: 'self-closing-tags-migration', + name: 'self-closing-tag', description: 'Converts tags for elements with no content to be self-closing (e.g., `` becomes ``).', documentationUrl: 'https://angular.dev/reference/migrations/self-closing-tags', @@ -67,57 +72,134 @@ const TRANSFORMATIONS: Array = [ ]; const modernizeInputSchema = z.object({ - // Casting to [string, ...string[]] since the enum definition requires a nonempty array. + directories: z + .array(z.string()) + .optional() + .describe('A list of paths to directories with files to modernize.'), transformations: z .array(z.enum(TRANSFORMATIONS.map((t) => t.name) as [string, ...string[]])) .optional() + .describe('A list of specific transformations to apply.'), +}); + +const modernizeOutputSchema = z.object({ + instructions: z + .array(z.string()) + .optional() .describe( - 'A list of specific transformations to get instructions for. ' + - 'If omitted, general guidance is provided.', + 'Migration summary, as well as any instructions that need to be performed to complete the migrations.', ), + stdout: z.string().optional().describe('The stdout from the executed commands.'), + stderr: z.string().optional().describe('The stderr from the executed commands.'), }); export type ModernizeInput = z.infer; +export type ModernizeOutput = z.infer; + +const execAsync = promisify(exec); + +function createToolOutput(structuredContent: ModernizeOutput) { + return { + content: [{ type: 'text' as const, text: JSON.stringify(structuredContent, null, 2) }], + structuredContent, + }; +} + +function findAngularJsonDir(startDir: string): string | null { + let currentDir = startDir; + while (true) { + if (existsSync(join(currentDir, 'angular.json'))) { + return currentDir; + } + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + return null; + } + currentDir = parentDir; + } +} + +export async function runModernization(input: ModernizeInput) { + const transformationNames = input.transformations ?? []; + const directories = input.directories ?? []; -function generateInstructions(transformationNames: string[]): string[] { if (transformationNames.length === 0) { - return [ - 'See https://angular.dev/best-practices for Angular best practices. ' + - 'You can call this tool if you have specific transformation you want to run.', - ]; + return createToolOutput({ + instructions: [ + 'See https://angular.dev/best-practices for Angular best practices. ' + + 'You can call this tool if you have specific transformation you want to run.', + ], + }); + } + if (directories.length === 0) { + return createToolOutput({ + instructions: [ + 'Provide this tool with a list of directory paths in your workspace ' + + 'to run the modernization on.', + ], + }); + } + + const firstDir = directories[0]; + const executionDir = (await stat(firstDir)).isDirectory() ? firstDir : dirname(firstDir); + + const angularProjectRoot = findAngularJsonDir(executionDir); + if (!angularProjectRoot) { + return createToolOutput({ + instructions: ['Could not find an angular.json file in the current or parent directories.'], + }); } const instructions: string[] = []; - const transformationsToRun = TRANSFORMATIONS.filter((t) => transformationNames?.includes(t.name)); + const stdoutMessages: string[] = []; + const stderrMessages: string[] = []; + const transformationsToRun = TRANSFORMATIONS.filter((t) => transformationNames.includes(t.name)); for (const transformation of transformationsToRun) { - let transformationInstructions = ''; if (transformation.instructions) { - transformationInstructions = transformation.instructions; + // This is a complex case, return instructions. + let transformationInstructions = transformation.instructions; + if (transformation.documentationUrl) { + transformationInstructions += `\nFor more information, see ${transformation.documentationUrl}.`; + } + instructions.push(transformationInstructions); } else { - // If no instructions are included, default to running a cli schematic with the transformation name. - const command = `ng generate @angular/core:${transformation.name}`; - transformationInstructions = `To run the ${transformation.name} migration, execute the following command: \`${command}\`.`; + // Simple case, run the command. + for (const dir of directories) { + const relativePath = relative(angularProjectRoot, dir) || '.'; + const command = `ng generate @angular/core:${transformation.name} --path ${relativePath}`; + try { + const { stdout, stderr } = await execAsync(command, { cwd: angularProjectRoot }); + if (stdout) { + stdoutMessages.push(stdout); + } + if (stderr) { + stderrMessages.push(stderr); + } + instructions.push( + `Migration ${transformation.name} on directory ${relativePath} completed successfully.`, + ); + } catch (e) { + stderrMessages.push((e as Error).message); + instructions.push( + `Migration ${transformation.name} on directory ${relativePath} failed.`, + ); + } + } } - if (transformation.documentationUrl) { - transformationInstructions += `\nFor more information, see ${transformation.documentationUrl}.`; - } - instructions.push(transformationInstructions); } - return instructions; + return createToolOutput({ + instructions: instructions.length > 0 ? instructions : undefined, + stdout: stdoutMessages?.join('\n\n') ?? undefined, + stderr: stderrMessages?.join('\n\n') ?? undefined, + }); } -export async function runModernization(input: ModernizeInput) { - const structuredContent = { instructions: generateInstructions(input.transformations ?? []) }; - - return { - content: [{ type: 'text' as const, text: JSON.stringify(structuredContent) }], - structuredContent, - }; -} - -export const MODERNIZE_TOOL = declareTool({ +export const MODERNIZE_TOOL: McpToolDeclaration< + typeof modernizeInputSchema.shape, + typeof modernizeOutputSchema.shape +> = declareTool({ name: 'modernize', title: 'Modernize Angular Code', description: ` @@ -135,25 +217,19 @@ generating the exact steps needed to perform specific migrations. general best practices guide. -* **Execution:** This tool **provides instructions**, which you **MUST** then execute as shell commands. - It does not modify code directly. +* **Execution:** This tool executes 'ng generate' commands for simple migrations in a temporary + environment using the provided file content. For complex migrations like 'standalone', it + provides instructions which you **MUST** then execute as shell commands. +* **File Modifications:** This tool has been fixed and now correctly finds the node_modules directory in a Bazel environment. * **Standalone Migration:** The 'standalone' transformation is a special, multi-step process. - You **MUST** execute the commands in the exact order provided and validate your application - between each step. + The tool will provide instructions. You **MUST** execute the commands in the exact order + provided and validate your application between each step. * **Transformation List:** The following transformations are available: ${TRANSFORMATIONS.map((t) => ` * ${t.name}: ${t.description}`).join('\n')} `, inputSchema: modernizeInputSchema.shape, - outputSchema: { - instructions: z - .array(z.string()) - .optional() - .describe( - 'A list of instructions and shell commands to run the requested modernizations. ' + - 'Each string in the array is a separate step or command.', - ), - }, + outputSchema: modernizeOutputSchema.shape, isLocalOnly: true, - isReadOnly: true, - factory: () => (input) => runModernization(input), + isReadOnly: false, + factory: () => runModernization, }); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index 4c5e4cdacdcc..621947cdad91 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -6,68 +6,213 @@ * found in the LICENSE file at https://angular.dev/license */ -import { ModernizeInput, runModernization } from './modernize'; +import { exec } from 'child_process'; +import { mkdir, mkdtemp, readFile, rm, writeFile } from 'fs/promises'; +import { tmpdir } from 'os'; +import { join } from 'path'; +import { promisify } from 'util'; +import { ModernizeOutput, runModernization } from './modernize'; + +const execAsync = promisify(exec); describe('Modernize Tool', () => { - async function getInstructions(input: ModernizeInput): Promise { - const { structuredContent } = await runModernization(input); + let projectDir: string; + let originalPath: string | undefined; + + beforeEach(async () => { + originalPath = process.env.PATH; + projectDir = await mkdtemp(join(tmpdir(), 'angular-modernize-test-')); - if (!structuredContent || !('instructions' in structuredContent)) { - fail('Expected instructions to be present in the result'); + // Create a dummy Angular project structure. + await writeFile( + join(projectDir, 'angular.json'), + JSON.stringify( + { + version: 1, + projects: { + app: { + root: '', + projectType: 'application', + architect: { + build: { + options: { + tsConfig: 'tsconfig.json', + }, + }, + }, + }, + }, + }, + null, + 2, + ), + ); + await writeFile( + join(projectDir, 'package.json'), + JSON.stringify( + { + dependencies: { + '@angular/core': 'latest', + }, + devDependencies: { + '@angular/cli': 'latest', + '@angular-devkit/schematics': 'latest', + typescript: 'latest', + }, + }, + null, + 2, + ), + ); + await writeFile( + join(projectDir, 'tsconfig.base.json'), + JSON.stringify( + { + compilerOptions: { + strict: true, + forceConsistentCasingInFileNames: true, + skipLibCheck: true, + }, + }, + null, + 2, + ), + ); + await writeFile( + join(projectDir, 'tsconfig.json'), + JSON.stringify( + { + extends: './tsconfig.base.json', + compilerOptions: { + outDir: './dist/out-tsc', + }, + }, + null, + 2, + ), + ); + + // Symlink the node_modules directory from the runfiles to the temporary project. + const nodeModulesPath = require + .resolve('@angular/core/package.json') + .replace(/\/@angular\/core\/package\.json$/, ''); + await execAsync(`ln -s ${nodeModulesPath} ${join(projectDir, 'node_modules')}`); + + // Prepend the node_modules/.bin path to the PATH environment variable + // so that `ng` can be found by `execAsync` calls. + process.env.PATH = `${join(nodeModulesPath, '.bin')}:${process.env.PATH}`; + }); + + afterEach(async () => { + process.env.PATH = originalPath; + await rm(projectDir, { recursive: true, force: true }); + }); - return; - } + async function modernize( + dir: string, + file: string, + transformations: string[], + ): Promise<{ structuredContent: ModernizeOutput; newContent: string }> { + const structuredContent = ( + (await runModernization({ directories: [dir], transformations })) as { + structuredContent: ModernizeOutput; + } + ).structuredContent; + const newContent = await readFile(file, 'utf8'); - return structuredContent.instructions; + return { structuredContent, newContent }; } - it('should return an instruction for a single transformation', async () => { - const instructions = await getInstructions({ - transformations: ['self-closing-tags-migration'], - }); + it('can run a single transformation', async () => { + const componentPath = join(projectDir, 'test.component.ts'); + const componentContent = ` + import { Component } from '@angular/core'; - expect(instructions).toEqual([ - 'To run the self-closing-tags-migration migration, execute the following command: ' + - '`ng generate @angular/core:self-closing-tags-migration`.\nFor more information, ' + - 'see https://angular.dev/reference/migrations/self-closing-tags.', + @Component({ + selector: 'app-foo', + template: '', + }) + export class FooComponent {} + `; + await writeFile(componentPath, componentContent); + + const { structuredContent, newContent } = await modernize(projectDir, componentPath, [ + 'self-closing-tag', ]); - }); - it('should return instructions for multiple transformations', async () => { - const instructions = await getInstructions({ - transformations: ['self-closing-tags-migration', 'inject'], - }); - - const expectedInstructions = [ - 'To run the self-closing-tags-migration migration, execute the following command: ' + - '`ng generate @angular/core:self-closing-tags-migration`.\nFor more information, ' + - 'see https://angular.dev/reference/migrations/self-closing-tags.', - 'To run the inject migration, execute the following command: ' + - '`ng generate @angular/core:inject`.\nFor more information, ' + - 'see https://angular.dev/reference/migrations/inject-function.', - ]; - - expect(instructions?.sort()).toEqual(expectedInstructions.sort()); + expect(structuredContent?.stderr).toBe(''); + expect(newContent).toContain(''); + expect(structuredContent?.instructions).toEqual([ + 'Migration self-closing-tag on directory . completed successfully.', + ]); }); - it('should return a link to the best practices page when no transformations are requested', async () => { - const instructions = await getInstructions({ - transformations: [], - }); + it('can run multiple transformations', async () => { + const componentPath = join(projectDir, 'test.component.ts'); + const componentContent = ` + import { Component } from '@angular/core'; - expect(instructions).toEqual([ - 'See https://angular.dev/best-practices for Angular best practices. You can call this ' + - 'tool if you have specific transformation you want to run.', + @Component({ + selector: 'app-foo', + template: '', + }) + export class FooComponent { + show = true; + } + `; + await writeFile(componentPath, componentContent); + + const { structuredContent, newContent } = await modernize(projectDir, componentPath, [ + 'control-flow', + 'self-closing-tag', ]); + + expect(structuredContent?.stderr).toBe(''); + expect(newContent).toContain('@if (show) {}'); }); - it('should return special instructions for standalone migration', async () => { - const instructions = await getInstructions({ - transformations: ['standalone'], - }); + it('can run multiple transformations across multiple directories', async () => { + const subfolder1 = join(projectDir, 'subfolder1'); + await mkdir(subfolder1); + const componentPath1 = join(subfolder1, 'test.component.ts'); + const componentContent1 = ` + import { Component } from '@angular/core'; - expect(instructions?.[0]).toContain( - 'Run the commands in the order listed below, verifying that your code builds and runs between each step:', - ); + @Component({ + selector: 'app-foo', + template: '', + }) + export class FooComponent { + show = true; + } + `; + await writeFile(componentPath1, componentContent1); + + const subfolder2 = join(projectDir, 'subfolder2'); + await mkdir(subfolder2); + const componentPath2 = join(subfolder2, 'test.component.ts'); + const componentContent2 = ` + import { Component } from '@angular/core'; + + @Component({ + selector: 'app-bar', + template: '', + }) + export class BarComponent {} + `; + await writeFile(componentPath2, componentContent2); + + const structuredContent = ( + (await runModernization({ + directories: [subfolder1, subfolder2], + transformations: ['control-flow', 'self-closing-tag'], + })) as { structuredContent: ModernizeOutput } + ).structuredContent; + const newContent1 = await readFile(componentPath1, 'utf8'); + const newContent2 = await readFile(componentPath2, 'utf8'); + + expect(structuredContent?.stderr).toBe(''); + expect(newContent1).toContain('@if (show) {}'); + expect(newContent2).toContain(''); }); }); From b384ebb1419cf948a380617a9ee2bc20cfb1a019 Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Thu, 23 Oct 2025 14:48:34 -0700 Subject: [PATCH 1714/2162] refactor(@angular/cli): Change modernize_spec to mock generate calls --- .../cli/src/commands/mcp/tools/modernize.ts | 9 +- .../src/commands/mcp/tools/modernize_spec.ts | 290 +++++++----------- .../commands/mcp/tools/process-executor.ts | 16 + 3 files changed, 132 insertions(+), 183 deletions(-) create mode 100644 packages/angular/cli/src/commands/mcp/tools/process-executor.ts diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index b38cd4184fbf..026cf9fc44c9 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -6,12 +6,11 @@ * found in the LICENSE file at https://angular.dev/license */ -import { exec } from 'child_process'; import { existsSync } from 'fs'; import { stat } from 'fs/promises'; import { dirname, join, relative } from 'path'; -import { promisify } from 'util'; import { z } from 'zod'; +import { execAsync } from './process-executor'; import { McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { @@ -96,8 +95,6 @@ const modernizeOutputSchema = z.object({ export type ModernizeInput = z.infer; export type ModernizeOutput = z.infer; -const execAsync = promisify(exec); - function createToolOutput(structuredContent: ModernizeOutput) { return { content: [{ type: 'text' as const, text: JSON.stringify(structuredContent, null, 2) }], @@ -191,8 +188,8 @@ export async function runModernization(input: ModernizeInput) { return createToolOutput({ instructions: instructions.length > 0 ? instructions : undefined, - stdout: stdoutMessages?.join('\n\n') ?? undefined, - stderr: stderrMessages?.join('\n\n') ?? undefined, + stdout: stdoutMessages?.join('\n\n') || undefined, + stderr: stderrMessages?.join('\n\n') || undefined, }); } diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index 621947cdad91..f4633dc4d616 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -6,213 +6,149 @@ * found in the LICENSE file at https://angular.dev/license */ -import { exec } from 'child_process'; -import { mkdir, mkdtemp, readFile, rm, writeFile } from 'fs/promises'; +import { mkdir, mkdtemp, rm, writeFile } from 'fs/promises'; import { tmpdir } from 'os'; import { join } from 'path'; -import { promisify } from 'util'; import { ModernizeOutput, runModernization } from './modernize'; - -const execAsync = promisify(exec); +import * as processExecutor from './process-executor'; describe('Modernize Tool', () => { + let execAsyncSpy: jasmine.Spy; let projectDir: string; - let originalPath: string | undefined; beforeEach(async () => { - originalPath = process.env.PATH; + // Create a temporary directory and a fake angular.json to satisfy the tool's project root search. projectDir = await mkdtemp(join(tmpdir(), 'angular-modernize-test-')); + await writeFile(join(projectDir, 'angular.json'), JSON.stringify({ version: 1, projects: {} })); - // Create a dummy Angular project structure. - await writeFile( - join(projectDir, 'angular.json'), - JSON.stringify( - { - version: 1, - projects: { - app: { - root: '', - projectType: 'application', - architect: { - build: { - options: { - tsConfig: 'tsconfig.json', - }, - }, - }, - }, - }, - }, - null, - 2, - ), - ); - await writeFile( - join(projectDir, 'package.json'), - JSON.stringify( - { - dependencies: { - '@angular/core': 'latest', - }, - devDependencies: { - '@angular/cli': 'latest', - '@angular-devkit/schematics': 'latest', - typescript: 'latest', - }, - }, - null, - 2, - ), - ); - await writeFile( - join(projectDir, 'tsconfig.base.json'), - JSON.stringify( - { - compilerOptions: { - strict: true, - forceConsistentCasingInFileNames: true, - skipLibCheck: true, - }, - }, - null, - 2, - ), - ); - await writeFile( - join(projectDir, 'tsconfig.json'), - JSON.stringify( - { - extends: './tsconfig.base.json', - compilerOptions: { - outDir: './dist/out-tsc', - }, - }, - null, - 2, - ), - ); - - // Symlink the node_modules directory from the runfiles to the temporary project. - const nodeModulesPath = require - .resolve('@angular/core/package.json') - .replace(/\/@angular\/core\/package\.json$/, ''); - await execAsync(`ln -s ${nodeModulesPath} ${join(projectDir, 'node_modules')}`); - - // Prepend the node_modules/.bin path to the PATH environment variable - // so that `ng` can be found by `execAsync` calls. - process.env.PATH = `${join(nodeModulesPath, '.bin')}:${process.env.PATH}`; + // Spy on the execAsync function from our new module. + execAsyncSpy = spyOn(processExecutor, 'execAsync').and.resolveTo({ stdout: '', stderr: '' }); }); afterEach(async () => { - process.env.PATH = originalPath; await rm(projectDir, { recursive: true, force: true }); }); - async function modernize( - dir: string, - file: string, - transformations: string[], - ): Promise<{ structuredContent: ModernizeOutput; newContent: string }> { - const structuredContent = ( - (await runModernization({ directories: [dir], transformations })) as { - structuredContent: ModernizeOutput; - } - ).structuredContent; - const newContent = await readFile(file, 'utf8'); - - return { structuredContent, newContent }; - } + it('should return instructions if no transformations are provided', async () => { + const { structuredContent } = (await runModernization({})) as { + structuredContent: ModernizeOutput; + }; - it('can run a single transformation', async () => { - const componentPath = join(projectDir, 'test.component.ts'); - const componentContent = ` - import { Component } from '@angular/core'; - - @Component({ - selector: 'app-foo', - template: '', - }) - export class FooComponent {} - `; - await writeFile(componentPath, componentContent); - - const { structuredContent, newContent } = await modernize(projectDir, componentPath, [ - 'self-closing-tag', + expect(execAsyncSpy).not.toHaveBeenCalled(); + expect(structuredContent?.instructions).toEqual([ + 'See https://angular.dev/best-practices for Angular best practices. ' + + 'You can call this tool if you have specific transformation you want to run.', ]); + }); - expect(structuredContent?.stderr).toBe(''); - expect(newContent).toContain(''); + it('should return instructions if no directories are provided', async () => { + const { structuredContent } = (await runModernization({ + transformations: ['control-flow'], + })) as { + structuredContent: ModernizeOutput; + }; + + expect(execAsyncSpy).not.toHaveBeenCalled(); expect(structuredContent?.instructions).toEqual([ - 'Migration self-closing-tag on directory . completed successfully.', + 'Provide this tool with a list of directory paths in your workspace ' + + 'to run the modernization on.', ]); }); - it('can run multiple transformations', async () => { - const componentPath = join(projectDir, 'test.component.ts'); - const componentContent = ` - import { Component } from '@angular/core'; - - @Component({ - selector: 'app-foo', - template: '', - }) - export class FooComponent { - show = true; - } - `; - await writeFile(componentPath, componentContent); - - const { structuredContent, newContent } = await modernize(projectDir, componentPath, [ - 'control-flow', - 'self-closing-tag', + it('can run a single transformation', async () => { + const { structuredContent } = (await runModernization({ + directories: [projectDir], + transformations: ['self-closing-tag'], + })) as { structuredContent: ModernizeOutput }; + + expect(execAsyncSpy).toHaveBeenCalledOnceWith( + 'ng generate @angular/core:self-closing-tag --path .', + { cwd: projectDir }, + ); + expect(structuredContent?.stderr).toBeUndefined(); + expect(structuredContent?.instructions).toEqual([ + 'Migration self-closing-tag on directory . completed successfully.', ]); + }); - expect(structuredContent?.stderr).toBe(''); - expect(newContent).toContain('@if (show) {}'); + it('can run multiple transformations', async () => { + const { structuredContent } = (await runModernization({ + directories: [projectDir], + transformations: ['control-flow', 'self-closing-tag'], + })) as { structuredContent: ModernizeOutput }; + + expect(execAsyncSpy).toHaveBeenCalledTimes(2); + expect(execAsyncSpy).toHaveBeenCalledWith('ng generate @angular/core:control-flow --path .', { + cwd: projectDir, + }); + expect(execAsyncSpy).toHaveBeenCalledWith( + 'ng generate @angular/core:self-closing-tag --path .', + { cwd: projectDir }, + ); + expect(structuredContent?.stderr).toBeUndefined(); + expect(structuredContent?.instructions).toEqual( + jasmine.arrayWithExactContents([ + 'Migration control-flow on directory . completed successfully.', + 'Migration self-closing-tag on directory . completed successfully.', + ]), + ); }); it('can run multiple transformations across multiple directories', async () => { const subfolder1 = join(projectDir, 'subfolder1'); - await mkdir(subfolder1); - const componentPath1 = join(subfolder1, 'test.component.ts'); - const componentContent1 = ` - import { Component } from '@angular/core'; - - @Component({ - selector: 'app-foo', - template: '', - }) - export class FooComponent { - show = true; - } - `; - await writeFile(componentPath1, componentContent1); - const subfolder2 = join(projectDir, 'subfolder2'); + await mkdir(subfolder1); await mkdir(subfolder2); - const componentPath2 = join(subfolder2, 'test.component.ts'); - const componentContent2 = ` - import { Component } from '@angular/core'; - - @Component({ - selector: 'app-bar', - template: '', - }) - export class BarComponent {} - `; - await writeFile(componentPath2, componentContent2); - - const structuredContent = ( - (await runModernization({ - directories: [subfolder1, subfolder2], - transformations: ['control-flow', 'self-closing-tag'], - })) as { structuredContent: ModernizeOutput } - ).structuredContent; - const newContent1 = await readFile(componentPath1, 'utf8'); - const newContent2 = await readFile(componentPath2, 'utf8'); - - expect(structuredContent?.stderr).toBe(''); - expect(newContent1).toContain('@if (show) {}'); - expect(newContent2).toContain(''); + + const { structuredContent } = (await runModernization({ + directories: [subfolder1, subfolder2], + transformations: ['control-flow', 'self-closing-tag'], + })) as { structuredContent: ModernizeOutput }; + + expect(execAsyncSpy).toHaveBeenCalledTimes(4); + expect(execAsyncSpy).toHaveBeenCalledWith( + 'ng generate @angular/core:control-flow --path subfolder1', + { cwd: projectDir }, + ); + expect(execAsyncSpy).toHaveBeenCalledWith( + 'ng generate @angular/core:self-closing-tag --path subfolder1', + { cwd: projectDir }, + ); + expect(execAsyncSpy).toHaveBeenCalledWith( + 'ng generate @angular/core:control-flow --path subfolder2', + { cwd: projectDir }, + ); + expect(execAsyncSpy).toHaveBeenCalledWith( + 'ng generate @angular/core:self-closing-tag --path subfolder2', + { cwd: projectDir }, + ); + expect(structuredContent?.stderr).toBeUndefined(); + expect(structuredContent?.instructions).toEqual( + jasmine.arrayWithExactContents([ + 'Migration control-flow on directory subfolder1 completed successfully.', + 'Migration self-closing-tag on directory subfolder1 completed successfully.', + 'Migration control-flow on directory subfolder2 completed successfully.', + 'Migration self-closing-tag on directory subfolder2 completed successfully.', + ]), + ); + }); + + it('should report errors from transformations', async () => { + // Simulate a failed execution + execAsyncSpy.and.rejectWith(new Error('Command failed with error')); + + const { structuredContent } = (await runModernization({ + directories: [projectDir], + transformations: ['self-closing-tag'], + })) as { structuredContent: ModernizeOutput }; + + expect(execAsyncSpy).toHaveBeenCalledOnceWith( + 'ng generate @angular/core:self-closing-tag --path .', + { cwd: projectDir }, + ); + expect(structuredContent?.stderr).toContain('Command failed with error'); + expect(structuredContent?.instructions).toEqual([ + 'Migration self-closing-tag on directory . failed.', + ]); }); }); diff --git a/packages/angular/cli/src/commands/mcp/tools/process-executor.ts b/packages/angular/cli/src/commands/mcp/tools/process-executor.ts new file mode 100644 index 000000000000..85a6a4e49d3e --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/process-executor.ts @@ -0,0 +1,16 @@ +/** + * @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 { exec } from 'child_process'; +import { promisify } from 'util'; + +/** + * A promisified version of the Node.js `exec` function. + * This is isolated in its own file to allow for easy mocking in tests. + */ +export const execAsync = promisify(exec); From ce3fa2cd93c16723882edcf252e74ddebccadf9b Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Tue, 28 Oct 2025 12:54:03 -0700 Subject: [PATCH 1715/2162] refactor(@angular/cli): Change modernize to use a host interface for OS/FS operations --- packages/angular/cli/src/commands/mcp/host.ts | 130 +++++++++++++++ .../cli/src/commands/mcp/tools/modernize.ts | 31 ++-- .../src/commands/mcp/tools/modernize_spec.ts | 154 ++++++++++++------ .../commands/mcp/tools/process-executor.ts | 16 -- 4 files changed, 253 insertions(+), 78 deletions(-) create mode 100644 packages/angular/cli/src/commands/mcp/host.ts delete mode 100644 packages/angular/cli/src/commands/mcp/tools/process-executor.ts diff --git a/packages/angular/cli/src/commands/mcp/host.ts b/packages/angular/cli/src/commands/mcp/host.ts new file mode 100644 index 000000000000..ad57b03550bf --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/host.ts @@ -0,0 +1,130 @@ +/** + * @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 + */ + +/** + * @fileoverview + * This file defines an abstraction layer for operating-system or file-system operations, such as + * command execution. This allows for easier testing by enabling the injection of mock or + * test-specific implementations. + */ + +import { existsSync as nodeExistsSync } from 'fs'; +import { spawn } from 'node:child_process'; +import { Stats } from 'node:fs'; +import { stat } from 'node:fs/promises'; + +/** + * An error thrown when a command fails to execute. + */ +export class CommandError extends Error { + constructor( + message: string, + public readonly stdout: string, + public readonly stderr: string, + public readonly code: number | null, + ) { + super(message); + } +} + +/** + * An abstraction layer for operating-system or file-system operations. + */ +export interface Host { + /** + * Gets the stats of a file or directory. + * @param path The path to the file or directory. + * @returns A promise that resolves to the stats. + */ + stat(path: string): Promise; + + /** + * Checks if a path exists on the file system. + * @param path The path to check. + * @returns A boolean indicating whether the path exists. + */ + existsSync(path: string): boolean; + + /** + * Spawns a child process and returns a promise that resolves with the process's + * output or rejects with a structured error. + * @param command The command to run. + * @param args The arguments to pass to the command. + * @param options Options for the child process. + * @returns A promise that resolves with the standard output and standard error of the command. + */ + runCommand( + command: string, + args: readonly string[], + options?: { + timeout?: number; + stdio?: 'pipe' | 'ignore'; + cwd?: string; + env?: Record; + }, + ): Promise<{ stdout: string; stderr: string }>; +} + +/** + * A concrete implementation of the `Host` interface that runs on a local workspace. + */ +export const LocalWorkspaceHost: Host = { + stat, + existsSync: nodeExistsSync, + runCommand: async ( + command: string, + args: readonly string[], + options: { + timeout?: number; + stdio?: 'pipe' | 'ignore'; + cwd?: string; + env?: Record; + } = {}, + ): Promise<{ stdout: string; stderr: string }> => { + const signal = options.timeout ? AbortSignal.timeout(options.timeout) : undefined; + + return new Promise((resolve, reject) => { + const childProcess = spawn(command, args, { + shell: false, + stdio: options.stdio ?? 'pipe', + signal, + cwd: options.cwd, + env: { + ...process.env, + ...options.env, + }, + }); + + let stdout = ''; + childProcess.stdout?.on('data', (data) => (stdout += data.toString())); + + let stderr = ''; + childProcess.stderr?.on('data', (data) => (stderr += data.toString())); + + childProcess.on('close', (code) => { + if (code === 0) { + resolve({ stdout, stderr }); + } else { + const message = `Process exited with code ${code}.`; + reject(new CommandError(message, stdout, stderr, code)); + } + }); + + childProcess.on('error', (err) => { + if (err.name === 'AbortError') { + const message = `Process timed out.`; + reject(new CommandError(message, stdout, stderr, null)); + + return; + } + const message = `Process failed with error: ${err.message}`; + reject(new CommandError(message, stdout, stderr, null)); + }); + }); + }, +}; diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 026cf9fc44c9..2ad3e737578c 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -6,11 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { existsSync } from 'fs'; -import { stat } from 'fs/promises'; import { dirname, join, relative } from 'path'; import { z } from 'zod'; -import { execAsync } from './process-executor'; +import { CommandError, Host, LocalWorkspaceHost } from '../host'; import { McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { @@ -102,10 +100,10 @@ function createToolOutput(structuredContent: ModernizeOutput) { }; } -function findAngularJsonDir(startDir: string): string | null { +function findAngularJsonDir(startDir: string, host: Host): string | null { let currentDir = startDir; while (true) { - if (existsSync(join(currentDir, 'angular.json'))) { + if (host.existsSync(join(currentDir, 'angular.json'))) { return currentDir; } const parentDir = dirname(currentDir); @@ -116,7 +114,7 @@ function findAngularJsonDir(startDir: string): string | null { } } -export async function runModernization(input: ModernizeInput) { +export async function runModernization(input: ModernizeInput, host: Host) { const transformationNames = input.transformations ?? []; const directories = input.directories ?? []; @@ -138,9 +136,9 @@ export async function runModernization(input: ModernizeInput) { } const firstDir = directories[0]; - const executionDir = (await stat(firstDir)).isDirectory() ? firstDir : dirname(firstDir); + const executionDir = (await host.stat(firstDir)).isDirectory() ? firstDir : dirname(firstDir); - const angularProjectRoot = findAngularJsonDir(executionDir); + const angularProjectRoot = findAngularJsonDir(executionDir, host); if (!angularProjectRoot) { return createToolOutput({ instructions: ['Could not find an angular.json file in the current or parent directories.'], @@ -164,9 +162,12 @@ export async function runModernization(input: ModernizeInput) { // Simple case, run the command. for (const dir of directories) { const relativePath = relative(angularProjectRoot, dir) || '.'; - const command = `ng generate @angular/core:${transformation.name} --path ${relativePath}`; + const command = 'ng'; + const args = ['generate', `@angular/core:${transformation.name}`, '--path', relativePath]; try { - const { stdout, stderr } = await execAsync(command, { cwd: angularProjectRoot }); + const { stdout, stderr } = await host.runCommand(command, args, { + cwd: angularProjectRoot, + }); if (stdout) { stdoutMessages.push(stdout); } @@ -177,6 +178,14 @@ export async function runModernization(input: ModernizeInput) { `Migration ${transformation.name} on directory ${relativePath} completed successfully.`, ); } catch (e) { + if (e instanceof CommandError) { + if (e.stdout) { + stdoutMessages.push(e.stdout); + } + if (e.stderr) { + stderrMessages.push(e.stderr); + } + } stderrMessages.push((e as Error).message); instructions.push( `Migration ${transformation.name} on directory ${relativePath} failed.`, @@ -228,5 +237,5 @@ ${TRANSFORMATIONS.map((t) => ` * ${t.name}: ${t.description}`).join('\n')} outputSchema: modernizeOutputSchema.shape, isLocalOnly: true, isReadOnly: false, - factory: () => runModernization, + factory: () => (input) => runModernization(input, LocalWorkspaceHost), }); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index f4633dc4d616..a00894dde5f6 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -6,23 +6,29 @@ * found in the LICENSE file at https://angular.dev/license */ +import { Stats } from 'fs'; import { mkdir, mkdtemp, rm, writeFile } from 'fs/promises'; import { tmpdir } from 'os'; import { join } from 'path'; +import * as host from '../host'; import { ModernizeOutput, runModernization } from './modernize'; -import * as processExecutor from './process-executor'; describe('Modernize Tool', () => { - let execAsyncSpy: jasmine.Spy; let projectDir: string; + let mockHost: host.Host; beforeEach(async () => { // Create a temporary directory and a fake angular.json to satisfy the tool's project root search. projectDir = await mkdtemp(join(tmpdir(), 'angular-modernize-test-')); await writeFile(join(projectDir, 'angular.json'), JSON.stringify({ version: 1, projects: {} })); - // Spy on the execAsync function from our new module. - execAsyncSpy = spyOn(processExecutor, 'execAsync').and.resolveTo({ stdout: '', stderr: '' }); + mockHost = { + runCommand: jasmine.createSpy('runCommand').and.resolveTo({ stdout: '', stderr: '' }), + stat: jasmine.createSpy('stat').and.resolveTo({ isDirectory: () => true } as Stats), + existsSync: jasmine.createSpy('existsSync').and.callFake((p: string) => { + return p === join(projectDir, 'angular.json'); + }), + }; }); afterEach(async () => { @@ -30,11 +36,11 @@ describe('Modernize Tool', () => { }); it('should return instructions if no transformations are provided', async () => { - const { structuredContent } = (await runModernization({})) as { + const { structuredContent } = (await runModernization({}, mockHost)) as { structuredContent: ModernizeOutput; }; - expect(execAsyncSpy).not.toHaveBeenCalled(); + expect(mockHost.runCommand).not.toHaveBeenCalled(); expect(structuredContent?.instructions).toEqual([ 'See https://angular.dev/best-practices for Angular best practices. ' + 'You can call this tool if you have specific transformation you want to run.', @@ -42,13 +48,16 @@ describe('Modernize Tool', () => { }); it('should return instructions if no directories are provided', async () => { - const { structuredContent } = (await runModernization({ - transformations: ['control-flow'], - })) as { + const { structuredContent } = (await runModernization( + { + transformations: ['control-flow'], + }, + mockHost, + )) as { structuredContent: ModernizeOutput; }; - expect(execAsyncSpy).not.toHaveBeenCalled(); + expect(mockHost.runCommand).not.toHaveBeenCalled(); expect(structuredContent?.instructions).toEqual([ 'Provide this tool with a list of directory paths in your workspace ' + 'to run the modernization on.', @@ -56,33 +65,44 @@ describe('Modernize Tool', () => { }); it('can run a single transformation', async () => { - const { structuredContent } = (await runModernization({ - directories: [projectDir], - transformations: ['self-closing-tag'], - })) as { structuredContent: ModernizeOutput }; - - expect(execAsyncSpy).toHaveBeenCalledOnceWith( - 'ng generate @angular/core:self-closing-tag --path .', + const { structuredContent } = (await runModernization( + { + directories: [projectDir], + transformations: ['self-closing-tag'], + }, + mockHost, + )) as { structuredContent: ModernizeOutput }; + + expect(mockHost.runCommand).toHaveBeenCalledOnceWith( + 'ng', + ['generate', '@angular/core:self-closing-tag', '--path', '.'], { cwd: projectDir }, ); - expect(structuredContent?.stderr).toBeUndefined(); expect(structuredContent?.instructions).toEqual([ 'Migration self-closing-tag on directory . completed successfully.', ]); }); it('can run multiple transformations', async () => { - const { structuredContent } = (await runModernization({ - directories: [projectDir], - transformations: ['control-flow', 'self-closing-tag'], - })) as { structuredContent: ModernizeOutput }; - - expect(execAsyncSpy).toHaveBeenCalledTimes(2); - expect(execAsyncSpy).toHaveBeenCalledWith('ng generate @angular/core:control-flow --path .', { - cwd: projectDir, - }); - expect(execAsyncSpy).toHaveBeenCalledWith( - 'ng generate @angular/core:self-closing-tag --path .', + const { structuredContent } = (await runModernization( + { + directories: [projectDir], + transformations: ['control-flow', 'self-closing-tag'], + }, + mockHost, + )) as { structuredContent: ModernizeOutput }; + + expect(mockHost.runCommand).toHaveBeenCalledTimes(2); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['generate', '@angular/core:control-flow', '--path', '.'], + { + cwd: projectDir, + }, + ); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['generate', '@angular/core:self-closing-tag', '--path', '.'], { cwd: projectDir }, ); expect(structuredContent?.stderr).toBeUndefined(); @@ -100,26 +120,33 @@ describe('Modernize Tool', () => { await mkdir(subfolder1); await mkdir(subfolder2); - const { structuredContent } = (await runModernization({ - directories: [subfolder1, subfolder2], - transformations: ['control-flow', 'self-closing-tag'], - })) as { structuredContent: ModernizeOutput }; - - expect(execAsyncSpy).toHaveBeenCalledTimes(4); - expect(execAsyncSpy).toHaveBeenCalledWith( - 'ng generate @angular/core:control-flow --path subfolder1', + const { structuredContent } = (await runModernization( + { + directories: [subfolder1, subfolder2], + transformations: ['control-flow', 'self-closing-tag'], + }, + mockHost, + )) as { structuredContent: ModernizeOutput }; + + expect(mockHost.runCommand).toHaveBeenCalledTimes(4); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['generate', '@angular/core:control-flow', '--path', 'subfolder1'], { cwd: projectDir }, ); - expect(execAsyncSpy).toHaveBeenCalledWith( - 'ng generate @angular/core:self-closing-tag --path subfolder1', + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['generate', '@angular/core:self-closing-tag', '--path', 'subfolder1'], { cwd: projectDir }, ); - expect(execAsyncSpy).toHaveBeenCalledWith( - 'ng generate @angular/core:control-flow --path subfolder2', + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['generate', '@angular/core:control-flow', '--path', 'subfolder2'], { cwd: projectDir }, ); - expect(execAsyncSpy).toHaveBeenCalledWith( - 'ng generate @angular/core:self-closing-tag --path subfolder2', + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['generate', '@angular/core:self-closing-tag', '--path', 'subfolder2'], { cwd: projectDir }, ); expect(structuredContent?.stderr).toBeUndefined(); @@ -133,19 +160,44 @@ describe('Modernize Tool', () => { ); }); + it('should return an error if angular.json is not found', async () => { + (mockHost.existsSync as jasmine.Spy).and.returnValue(false); + + const { structuredContent } = (await runModernization( + { + directories: [projectDir], + transformations: ['self-closing-tag'], + }, + mockHost, + )) as { structuredContent: ModernizeOutput }; + + expect(mockHost.runCommand).not.toHaveBeenCalled(); + expect(structuredContent?.instructions).toEqual([ + 'Could not find an angular.json file in the current or parent directories.', + ]); + }); + it('should report errors from transformations', async () => { // Simulate a failed execution - execAsyncSpy.and.rejectWith(new Error('Command failed with error')); - - const { structuredContent } = (await runModernization({ - directories: [projectDir], - transformations: ['self-closing-tag'], - })) as { structuredContent: ModernizeOutput }; + (mockHost.runCommand as jasmine.Spy).and.rejectWith( + new host.CommandError('Command failed with error', 'stdout', 'stderr', 1), + ); - expect(execAsyncSpy).toHaveBeenCalledOnceWith( - 'ng generate @angular/core:self-closing-tag --path .', + const { structuredContent } = (await runModernization( + { + directories: [projectDir], + transformations: ['self-closing-tag'], + }, + mockHost, + )) as { structuredContent: ModernizeOutput }; + + expect(mockHost.runCommand).toHaveBeenCalledOnceWith( + 'ng', + ['generate', '@angular/core:self-closing-tag', '--path', '.'], { cwd: projectDir }, ); + expect(structuredContent?.stdout).toContain('stdout'); + expect(structuredContent?.stderr).toContain('stderr'); expect(structuredContent?.stderr).toContain('Command failed with error'); expect(structuredContent?.instructions).toEqual([ 'Migration self-closing-tag on directory . failed.', diff --git a/packages/angular/cli/src/commands/mcp/tools/process-executor.ts b/packages/angular/cli/src/commands/mcp/tools/process-executor.ts deleted file mode 100644 index 85a6a4e49d3e..000000000000 --- a/packages/angular/cli/src/commands/mcp/tools/process-executor.ts +++ /dev/null @@ -1,16 +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 { exec } from 'child_process'; -import { promisify } from 'util'; - -/** - * A promisified version of the Node.js `exec` function. - * This is isolated in its own file to allow for easy mocking in tests. - */ -export const execAsync = promisify(exec); From 33d7d54a872c4cdce803a874b5e273d27789db3f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 31 Oct 2025 05:07:15 +0000 Subject: [PATCH 1716/2162] build: update dependency @rollup/plugin-alias to v6 See associated pull request for more information. --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index f95458e31512..8813d48fba1f 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@eslint/compat": "1.4.0", "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.38.0", - "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^28.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "16.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c01f997ec179..4c6599281df7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,8 +80,8 @@ importers: specifier: 9.38.0 version: 9.38.0 '@rollup/plugin-alias': - specifier: ^5.1.1 - version: 5.1.1(rollup@4.52.5) + specifier: ^6.0.0 + version: 6.0.0(rollup@4.52.5) '@rollup/plugin-commonjs': specifier: ^28.0.0 version: 28.0.9(rollup@4.52.5) @@ -3008,11 +3008,11 @@ packages: '@rolldown/pluginutils@1.0.0-beta.45': resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} + '@rollup/plugin-alias@6.0.0': + resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} + engines: {node: '>=20.19.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.0.0' peerDependenciesMeta: rollup: optional: true @@ -11411,7 +11411,7 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.45': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': + '@rollup/plugin-alias@6.0.0(rollup@4.52.5)': optionalDependencies: rollup: 4.52.5 From 6ba8e073f069a5ff8dac9ba02380af64fa47c4c3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 31 Oct 2025 05:06:35 +0000 Subject: [PATCH 1717/2162] build: update dependency bazel to v7.7.0 See associated pull request for more information. --- .bazelversion | 2 +- MODULE.bazel.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.bazelversion b/.bazelversion index e81e85b81044..1985849fb589 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.6.2 +7.7.0 diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 56dba326d9a2..c9efb618ffde 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -208,7 +208,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "204sr2WFjo5XunG4jDH52caAc3qJ/f50aVdAr3VenHE=", + "bzlTransitiveDigest": "siDaq634IrZw5T09gCYUzwdqbloipc7/4CSuHiQGGv0=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -398,7 +398,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "SVyYFkMQbjQ0jUKo5pfA4RvHwE9U+087GVDEKYPcTSU=", + "bzlTransitiveDigest": "rbcmAPYHn7ktliFPVn+tPYuueodkLahPDN76U6iheR0=", "usagesDigest": "IVicAE5kmPjEcCQ3BjtqveHxlxyM0WJ/OuayGov8SLE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -535,7 +535,7 @@ }, "@@aspect_rules_ts~//ts:extensions.bzl%ext": { "general": { - "bzlTransitiveDigest": "9IJp6IlB/FMHFBJe4MX/DQM4zi3oArC8yqYE/+NyPwk=", + "bzlTransitiveDigest": "25n5BHszsoidcCJPv4PIOP5VHUNHHdu7CoI46TM/fGk=", "usagesDigest": "PB65rYTG/QbLoSQfRhLDeERG+0m7bjTPzYXBqieQ5/4=", "recordedFileInputs": { "@@rules_browsers~//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" @@ -645,7 +645,7 @@ }, "@@pybind11_bazel~//:python_configure.bzl%extension": { "general": { - "bzlTransitiveDigest": "whINYge95GgPtysKDbNHQ0ZlWYdtKybHs5y2tLF+x7Q=", + "bzlTransitiveDigest": "dFd3A3f+jPCss+EDKMp/jxjcUhfMku130eT1KGxSCwA=", "usagesDigest": "gNvOHVcAlwgDsNXD0amkv2CC96mnaCThPQoE44y8K+w=", "recordedFileInputs": { "@@pybind11_bazel~//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" @@ -941,7 +941,7 @@ }, "@@rules_fuzzing~//fuzzing/private:extensions.bzl%non_module_dependencies": { "general": { - "bzlTransitiveDigest": "hVgJRQ3Er45/UUAgNn1Yp2Khcp/Y8WyafA2kXIYmQ5M=", + "bzlTransitiveDigest": "VMhyxXtdJvrNlLts7afAymA+pOatXuh5kLdxzVAZ/04=", "usagesDigest": "YnIrdgwnf3iCLfChsltBdZ7yOJh706lpa2vww/i2pDI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1032,7 +1032,7 @@ }, "@@rules_java~//java:rules_java_deps.bzl%compatibility_proxy": { "general": { - "bzlTransitiveDigest": "KIX40nDfygEWbU+rq3nYpt3tVgTK/iO8PKh5VMBlN7M=", + "bzlTransitiveDigest": "C4xqrMy1wN4iuTN6Z2eCm94S5XingHhD6uwrIXvCxVI=", "usagesDigest": "pwHZ+26iLgQdwvdZeA5wnAjKnNI3y6XO2VbhOTeo5h8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1055,7 +1055,7 @@ }, "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=", + "bzlTransitiveDigest": "eecmTsmdIQveoA97hPtH3/Ej/kugbdCI24bhXIXaly8=", "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1668,7 +1668,7 @@ }, "@@rules_python~//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "sQcIxpGBMBOMzUZK9ARAkAR7oUiEiGgKZhHLEf9Prfk=", + "bzlTransitiveDigest": "UP3OtPScohkFlJevXYy5MF6NWqjUwRxO7SflJmjbM+o=", "usagesDigest": "K3E4RGDnEgGXkrLOS8/ma4NTUiLvGkMrRIhPiFxv8u0=", "recordedFileInputs": { "@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", From 1d115faff0b6444c91a53168cad700f618245e7d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:35:56 -0500 Subject: [PATCH 1718/2162] refactor(@angular-devkit/architect): correct misused promises lint failures The cases of the `@typescript-eslint/no-misused-promises` rule failing have been corrected by updating to modern syntax features. --- .../architect/testing/testing-architect-host.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/angular_devkit/architect/testing/testing-architect-host.ts b/packages/angular_devkit/architect/testing/testing-architect-host.ts index 2f61d8f69d9d..521c854921c0 100644 --- a/packages/angular_devkit/architect/testing/testing-architect-host.ts +++ b/packages/angular_devkit/architect/testing/testing-architect-host.ts @@ -72,7 +72,7 @@ export class TestingArchitectHost implements ArchitectHost { const name = targetStringFromTarget(target); const maybeTarget = this._targetMap.get(name); if (!maybeTarget) { - return this._backendHost && this._backendHost.getBuilderNameForTarget(target); + return this._backendHost?.getBuilderNameForTarget(target) ?? null; } return maybeTarget.builderName; @@ -87,8 +87,7 @@ export class TestingArchitectHost implements ArchitectHost { */ async resolveBuilder(builderName: string): Promise { return ( - this._builderMap.get(builderName) || - (this._backendHost && this._backendHost.resolveBuilder(builderName)) + this._builderMap.get(builderName) || (this._backendHost?.resolveBuilder(builderName) ?? null) ); } @@ -103,20 +102,19 @@ export class TestingArchitectHost implements ArchitectHost { const name = targetStringFromTarget(target); const maybeTarget = this._targetMap.get(name); if (!maybeTarget) { - return this._backendHost && this._backendHost.getOptionsForTarget(target); + return this._backendHost?.getOptionsForTarget(target) ?? null; } return maybeTarget.options; } async getProjectMetadata(target: Target | string): Promise { - return this._backendHost && this._backendHost.getProjectMetadata(target as string); + return this._backendHost?.getProjectMetadata(target as string) ?? null; } async loadBuilder(info: BuilderInfo): Promise { return ( - this._builderImportMap.get(info.builderName) || - (this._backendHost && this._backendHost.loadBuilder(info)) + this._builderImportMap.get(info.builderName) || (this._backendHost?.loadBuilder(info) ?? null) ); } } From 2a244692666cba1208fc5bb69c57b9a66d06551e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:50:41 -0500 Subject: [PATCH 1719/2162] fix(@angular/cli): add vitest to version command output Adds `vitest` to the list of packages displayed in the output of the `ng version` command. This provides better visibility into the testing setup of a project, aiding in diagnostics and issue reporting. --- packages/angular/cli/src/commands/version/version-info.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/cli/src/commands/version/version-info.ts b/packages/angular/cli/src/commands/version/version-info.ts index ff3186c7b7ed..850cc18d0947 100644 --- a/packages/angular/cli/src/commands/version/version-info.ts +++ b/packages/angular/cli/src/commands/version/version-info.ts @@ -72,6 +72,7 @@ const PACKAGE_PATTERNS = [ /^rxjs$/, /^typescript$/, /^ng-packagr$/, + /^vitest$/, /^webpack$/, /^zone\.js$/, ]; From 9af4f76e4bfea7b06511a16102ab8980cfe8141c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:24:16 -0500 Subject: [PATCH 1720/2162] fix(@angular/build): update vitest to 4.0.6 and remove coverage workaround Upgrades Vitest and @vitest/coverage-v8 dependencies to version 4.0.6. This update allows for the removal of a temporary workaround that augmented `BaseCoverageProvider.prototype.isIncluded` in `executor.ts`. The issue with direct filesystem checks in Vitest's coverage provider has been resolved in version 4.0.6, simplifying the code and relying on the official library's implementation. --- modules/testing/builder/package.json | 4 +- packages/angular/build/package.json | 4 +- .../unit-test/runners/vitest/executor.ts | 17 --- pnpm-lock.yaml | 108 +++++++++--------- tests/legacy-cli/e2e/utils/vitest.ts | 2 +- 5 files changed, 59 insertions(+), 76 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index d7c55e602ac4..27e7eef758ca 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,9 +4,9 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", - "@vitest/coverage-v8": "4.0.4", + "@vitest/coverage-v8": "4.0.6", "jsdom": "27.0.1", "rxjs": "7.8.2", - "vitest": "4.0.4" + "vitest": "4.0.6" } } diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index ed89e461aa1f..2c76c5934fea 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -56,7 +56,7 @@ "ng-packagr": "21.0.0-rc.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.4" + "vitest": "4.0.6" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", @@ -74,7 +74,7 @@ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", "tslib": "^2.3.0", "typescript": ">=5.9 <6.0", - "vitest": "^4.0.0" + "vitest": "^4.0.6" }, "peerDependenciesMeta": { "@angular/core": { diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index f7ff75c82d70..7e1e931f6c3a 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -143,9 +143,7 @@ export class VitestExecutor implements TestExecutor { } = this.options; let vitestNodeModule; - let vitestCoverageModule; try { - vitestCoverageModule = await import('vitest/coverage'); vitestNodeModule = await import('vitest/node'); } catch (error: unknown) { assertIsError(error); @@ -158,21 +156,6 @@ export class VitestExecutor implements TestExecutor { } const { startVitest } = vitestNodeModule; - // Augment BaseCoverageProvider to include logic to support the built virtual files. - // Temporary workaround to avoid the direct filesystem checks in the base provider that - // were introduced in v4. Also ensures that all built virtual files are available. - const builtVirtualFiles = this.buildResultFiles; - vitestCoverageModule.BaseCoverageProvider.prototype.isIncluded = function (filename) { - const relativeFilename = path.relative(workspaceRoot, filename); - if (!this.options.include || builtVirtualFiles.has(relativeFilename)) { - return !isMatch(relativeFilename, this.options.exclude); - } else { - return isMatch(relativeFilename, this.options.include, { - ignore: this.options.exclude, - }); - } - }; - // Setup vitest browser options if configured const browserOptions = await setupBrowserConfiguration( browsers, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c6599281df7..39a73e04c095 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.4 - version: 4.0.4(vitest@4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.6 + version: 4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.0.1 version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -341,8 +341,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.4 - version: 4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.6 + version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -447,8 +447,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.4 - version: 4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.6 + version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -3694,20 +3694,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.4': - resolution: {integrity: sha512-YM7gDj2TX2AXyGLz0p/B7hvTsTfaQc+kSV/LU0nEnKlep/ZfbdCDppPND4YQiQC43OXyrhkG3y8ZSTqYb2CKqQ==} + '@vitest/coverage-v8@4.0.6': + resolution: {integrity: sha512-cv6pFXj9/Otk7q1Ocoj8k3BUVVwnFr3jqcqpwYrU5LkKClU9DpaMEdX+zptx/RyIJS+/VpoxMWmfISXchmVDPQ==} peerDependencies: - '@vitest/browser': 4.0.4 - vitest: 4.0.4 + '@vitest/browser': 4.0.6 + vitest: 4.0.6 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.4': - resolution: {integrity: sha512-0ioMscWJtfpyH7+P82sGpAi3Si30OVV73jD+tEqXm5+rIx9LgnfdaOn45uaFkKOncABi/PHL00Yn0oW/wK4cXw==} + '@vitest/expect@4.0.6': + resolution: {integrity: sha512-5j8UUlBVhOjhj4lR2Nt9sEV8b4WtbcYh8vnfhTNA2Kn5+smtevzjNq+xlBuVhnFGXiyPPNzGrOVvmyHWkS5QGg==} - '@vitest/mocker@4.0.4': - resolution: {integrity: sha512-UTtKgpjWj+pvn3lUM55nSg34098obGhSHH+KlJcXesky8b5wCUgg7s60epxrS6yAG8slZ9W8T9jGWg4PisMf5Q==} + '@vitest/mocker@4.0.6': + resolution: {integrity: sha512-3COEIew5HqdzBFEYN9+u0dT3i/NCwppLnO1HkjGfAP1Vs3vti1Hxm/MvcbC4DAn3Szo1M7M3otiAaT83jvqIjA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3717,20 +3717,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.4': - resolution: {integrity: sha512-lHI2rbyrLVSd1TiHGJYyEtbOBo2SDndIsN3qY4o4xe2pBxoJLD6IICghNCvD7P+BFin6jeyHXiUICXqgl6vEaQ==} + '@vitest/pretty-format@4.0.6': + resolution: {integrity: sha512-4vptgNkLIA1W1Nn5X4x8rLJBzPiJwnPc+awKtfBE5hNMVsoAl/JCCPPzNrbf+L4NKgklsis5Yp2gYa+XAS442g==} - '@vitest/runner@4.0.4': - resolution: {integrity: sha512-99EDqiCkncCmvIZj3qJXBZbyoQ35ghOwVWNnQ5nj0Hnsv4Qm40HmrMJrceewjLVvsxV/JSU4qyx2CGcfMBmXJw==} + '@vitest/runner@4.0.6': + resolution: {integrity: sha512-trPk5qpd7Jj+AiLZbV/e+KiiaGXZ8ECsRxtnPnCrJr9OW2mLB72Cb824IXgxVz/mVU3Aj4VebY+tDTPn++j1Og==} - '@vitest/snapshot@4.0.4': - resolution: {integrity: sha512-XICqf5Gi4648FGoBIeRgnHWSNDp+7R5tpclGosFaUUFzY6SfcpsfHNMnC7oDu/iOLBxYfxVzaQpylEvpgii3zw==} + '@vitest/snapshot@4.0.6': + resolution: {integrity: sha512-PaYLt7n2YzuvxhulDDu6c9EosiRuIE+FI2ECKs6yvHyhoga+2TBWI8dwBjs+IeuQaMtZTfioa9tj3uZb7nev1g==} - '@vitest/spy@4.0.4': - resolution: {integrity: sha512-G9L13AFyYECo40QG7E07EdYnZZYCKMTSp83p9W8Vwed0IyCG1GnpDLxObkx8uOGPXfDpdeVf24P1Yka8/q1s9g==} + '@vitest/spy@4.0.6': + resolution: {integrity: sha512-g9jTUYPV1LtRPRCQfhbMintW7BTQz1n6WXYQYRQ25qkyffA4bjVXjkROokZnv7t07OqfaFKw1lPzqKGk1hmNuQ==} - '@vitest/utils@4.0.4': - resolution: {integrity: sha512-4bJLmSvZLyVbNsYFRpPYdJViG9jZyRvMZ35IF4ymXbRZoS+ycYghmwTGiscTXduUg2lgKK7POWIyXJNute1hjw==} + '@vitest/utils@4.0.6': + resolution: {integrity: sha512-bG43VS3iYKrMIZXBo+y8Pti0O7uNju3KvNn6DrQWhQQKcLavMB+0NZfO1/QBAEbq0MaQ3QjNsnnXlGQvsh0Z6A==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -8621,18 +8621,18 @@ packages: yaml: optional: true - vitest@4.0.4: - resolution: {integrity: sha512-hV31h0/bGbtmDQc0KqaxsTO1v4ZQeF8ojDFuy4sZhFadwAqqvJA0LDw68QUocctI5EDpFMql/jVWKuPYHIf2Ew==} + vitest@4.0.6: + resolution: {integrity: sha512-gR7INfiVRwnEOkCk47faros/9McCZMp5LM+OMNWGLaDBSvJxIzwjgNFufkuePBNaesGRnLmNfW+ddbUJRZn0nQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.4 - '@vitest/browser-preview': 4.0.4 - '@vitest/browser-webdriverio': 4.0.4 - '@vitest/ui': 4.0.4 + '@vitest/browser-playwright': 4.0.6 + '@vitest/browser-preview': 4.0.6 + '@vitest/browser-webdriverio': 4.0.6 + '@vitest/ui': 4.0.6 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -12226,10 +12226,10 @@ snapshots: dependencies: vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.4(vitest@4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.4 + '@vitest/utils': 4.0.6 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -12239,47 +12239,47 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.4': + '@vitest/expect@4.0.6': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.4 - '@vitest/utils': 4.0.4 + '@vitest/spy': 4.0.6 + '@vitest/utils': 4.0.6 chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.4(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.4 + '@vitest/spy': 4.0.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.4': + '@vitest/pretty-format@4.0.6': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.4': + '@vitest/runner@4.0.6': dependencies: - '@vitest/utils': 4.0.4 + '@vitest/utils': 4.0.6 pathe: 2.0.3 - '@vitest/snapshot@4.0.4': + '@vitest/snapshot@4.0.6': dependencies: - '@vitest/pretty-format': 4.0.4 + '@vitest/pretty-format': 4.0.6 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.4': {} + '@vitest/spy@4.0.6': {} - '@vitest/utils@4.0.4': + '@vitest/utils@4.0.6': dependencies: - '@vitest/pretty-format': 4.0.4 + '@vitest/pretty-format': 4.0.6 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -18125,15 +18125,15 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.4(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.4 - '@vitest/mocker': 4.0.4(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.4 - '@vitest/runner': 4.0.4 - '@vitest/snapshot': 4.0.4 - '@vitest/spy': 4.0.4 - '@vitest/utils': 4.0.4 + '@vitest/expect': 4.0.6 + '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.6 + '@vitest/runner': 4.0.6 + '@vitest/snapshot': 4.0.6 + '@vitest/spy': 4.0.6 + '@vitest/utils': 4.0.6 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 diff --git a/tests/legacy-cli/e2e/utils/vitest.ts b/tests/legacy-cli/e2e/utils/vitest.ts index a16d7fca3cee..3f312ff29c3e 100644 --- a/tests/legacy-cli/e2e/utils/vitest.ts +++ b/tests/legacy-cli/e2e/utils/vitest.ts @@ -3,7 +3,7 @@ import { updateJsonFile } from './project'; /** Updates the `test` builder in the current workspace to use Vitest. */ export async function applyVitestBuilder(): Promise { - await silentNpm('install', 'vitest@4.0.0', 'jsdom@27.0.0', '--save-dev'); + await silentNpm('install', 'vitest@4.0.6', 'jsdom@27.0.0', '--save-dev'); await updateJsonFile('angular.json', (json) => { const projects = Object.values(json['projects']); From 2215db824732adbda77576a6262375c4b6fcd6cf Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 3 Nov 2025 05:05:49 +0000 Subject: [PATCH 1721/2162] build: update dependency @rollup/plugin-commonjs to v29 See associated pull request for more information. --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 8813d48fba1f..e210ea588413 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.38.0", "@rollup/plugin-alias": "^6.0.0", - "@rollup/plugin-commonjs": "^28.0.0", + "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "16.0.3", "@stylistic/eslint-plugin": "^5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39a73e04c095..9e6e4a064465 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,8 +83,8 @@ importers: specifier: ^6.0.0 version: 6.0.0(rollup@4.52.5) '@rollup/plugin-commonjs': - specifier: ^28.0.0 - version: 28.0.9(rollup@4.52.5) + specifier: ^29.0.0 + version: 29.0.0(rollup@4.52.5) '@rollup/plugin-json': specifier: ^6.1.0 version: 6.1.0(rollup@4.52.5) @@ -3017,8 +3017,8 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@28.0.9': - resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} + '@rollup/plugin-commonjs@29.0.0': + resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -11415,7 +11415,7 @@ snapshots: optionalDependencies: rollup: 4.52.5 - '@rollup/plugin-commonjs@28.0.9(rollup@4.52.5)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.52.5)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.5) commondir: 1.0.1 From 6abc8aa50bdbd074c5520008e24ddc831736df78 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 4 Nov 2025 07:05:59 +0000 Subject: [PATCH 1722/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 2 +- package.json | 12 +- packages/angular/build/package.json | 8 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 6 +- pnpm-lock.yaml | 926 +++++++++--------- 6 files changed, 478 insertions(+), 478 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 27e7eef758ca..64a02aa63ba3 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,7 +5,7 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "@vitest/coverage-v8": "4.0.6", - "jsdom": "27.0.1", + "jsdom": "27.1.0", "rxjs": "7.8.2", "vitest": "4.0.6" } diff --git a/package.json b/package.json index e210ea588413..a51024645b51 100644 --- a/package.json +++ b/package.json @@ -61,9 +61,9 @@ "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", - "@eslint/compat": "1.4.0", + "@eslint/compat": "1.4.1", "@eslint/eslintrc": "3.3.1", - "@eslint/js": "9.38.0", + "@eslint/js": "9.39.0", "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", @@ -97,15 +97,15 @@ "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", - "esbuild": "0.25.11", - "esbuild-wasm": "0.25.11", - "eslint": "9.38.0", + "esbuild": "0.25.12", + "esbuild-wasm": "0.25.12", + "eslint": "9.39.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", "express": "5.1.0", "fast-glob": "3.3.3", - "globals": "16.4.0", + "globals": "16.5.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 2c76c5934fea..5145951460a7 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -27,7 +27,7 @@ "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", - "esbuild": "0.25.11", + "esbuild": "0.25.12", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -37,8 +37,8 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.45", - "sass": "1.93.2", + "rolldown": "1.0.0-beta.46", + "sass": "1.93.3", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", @@ -51,7 +51,7 @@ "devDependencies": { "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", - "jsdom": "27.0.1", + "jsdom": "27.1.0", "less": "4.4.2", "ng-packagr": "21.0.0-rc.0", "postcss": "8.5.6", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 46935e0d866b..bf10e83ee30b 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -30,7 +30,7 @@ "@modelcontextprotocol/sdk": "1.20.2", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.41.0", + "algoliasearch": "5.42.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index d3228bd12dfc..7cf358505f7b 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -28,7 +28,7 @@ "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.25.11", + "esbuild-wasm": "0.25.12", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.93.2", + "sass": "1.93.3", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -62,7 +62,7 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.25.11" + "esbuild": "0.25.12" }, "devDependencies": { "@angular/ssr": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e6e4a064465..c541c3df5acc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,14 +71,14 @@ importers: specifier: 8.2.1 version: 8.2.1 '@eslint/compat': - specifier: 1.4.0 - version: 1.4.0(eslint@9.38.0(jiti@2.6.1)) + specifier: 1.4.1 + version: 1.4.1(eslint@9.39.0(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 '@eslint/js': - specifier: 9.38.0 - version: 9.38.0 + specifier: 9.39.0 + version: 9.39.0 '@rollup/plugin-alias': specifier: ^6.0.0 version: 6.0.0(rollup@4.52.5) @@ -93,7 +93,7 @@ importers: version: 16.0.3(rollup@4.52.5) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.5.0(eslint@9.38.0(jiti@2.6.1)) + version: 5.5.0(eslint@9.39.0(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -126,7 +126,7 @@ importers: version: 3.0.8 '@types/loader-utils': specifier: ^3.0.0 - version: 3.0.0(esbuild@0.25.11) + version: 3.0.0(esbuild@0.25.12) '@types/lodash': specifier: ^4.17.0 version: 4.17.20 @@ -165,10 +165,10 @@ importers: version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.46.2 - version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: 8.46.2 - version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -179,23 +179,23 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.25.11 - version: 0.25.11 + specifier: 0.25.12 + version: 0.25.12 esbuild-wasm: - specifier: 0.25.11 - version: 0.25.11 + specifier: 0.25.12 + version: 0.25.12 eslint: - specifier: 9.38.0 - version: 9.38.0(jiti@2.6.1) + specifier: 9.39.0 + version: 9.39.0(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.38.0(jiti@2.6.1)) + version: 10.1.8(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.38.0(jiti@2.6.1)) + version: 3.1.1(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -203,8 +203,8 @@ importers: specifier: 3.3.3 version: 3.3.3 globals: - specifier: 16.4.0 - version: 16.4.0 + specifier: 16.5.0 + version: 16.5.0 http-proxy: specifier: ^1.18.1 version: 1.18.1(debug@4.4.3) @@ -333,16 +333,16 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.6 - version: 4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: - specifier: 27.0.1 - version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + specifier: 27.1.0 + version: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -366,7 +366,7 @@ importers: version: 5.1.19(@types/node@24.9.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -374,8 +374,8 @@ importers: specifier: ^4.26.0 version: 4.27.0 esbuild: - specifier: 0.25.11 - version: 0.25.11 + specifier: 0.25.12 + version: 0.25.12 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.2.2) @@ -404,11 +404,11 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.45 - version: 1.0.0-beta.45 + specifier: 1.0.0-beta.46 + version: 1.0.0-beta.46 sass: - specifier: 1.93.2 - version: 1.93.2 + specifier: 1.93.3 + version: 1.93.3 semver: specifier: 7.7.3 version: 7.7.3 @@ -420,7 +420,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.12 - version: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -432,8 +432,8 @@ importers: specifier: workspace:* version: link:../ssr jsdom: - specifier: 27.0.1 - version: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + specifier: 27.1.0 + version: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -448,7 +448,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -481,8 +481,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.41.0 - version: 5.41.0 + specifier: 5.42.0 + version: 5.42.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -649,19 +649,19 @@ importers: version: 10.4.21(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.11)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.12)) browserslist: specifier: ^4.26.0 version: 4.27.0 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.102.1(esbuild@0.25.11)) + version: 13.0.1(webpack@5.102.1(esbuild@0.25.12)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.102.1(esbuild@0.25.11)) + version: 7.1.2(webpack@5.102.1(esbuild@0.25.12)) esbuild-wasm: - specifier: 0.25.11 - version: 0.25.11 + specifier: 0.25.12 + version: 0.25.12 http-proxy-middleware: specifier: 3.0.5 version: 3.0.5 @@ -679,16 +679,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.11)) + version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.12)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.102.1(esbuild@0.25.11)) + version: 4.0.2(webpack@5.102.1(esbuild@0.25.12)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.102.1(esbuild@0.25.11)) + version: 2.9.4(webpack@5.102.1(esbuild@0.25.12)) open: specifier: 10.2.0 version: 10.2.0 @@ -706,7 +706,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.12)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -714,17 +714,17 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.93.2 - version: 1.93.2 + specifier: 1.93.3 + version: 1.93.3 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)) + version: 16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.25.12)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.102.1(esbuild@0.25.11)) + version: 5.0.0(webpack@5.102.1(esbuild@0.25.12)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -742,19 +742,19 @@ importers: version: 2.8.1 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.11) + version: 5.102.1(esbuild@0.25.12) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.102.1(esbuild@0.25.11)) + version: 7.4.5(webpack@5.102.1(esbuild@0.25.12)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.11)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.12)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.102.1(esbuild@0.25.11)) + version: 5.1.0(webpack@5.102.1(esbuild@0.25.12)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -773,8 +773,8 @@ importers: version: 7.16.0 optionalDependencies: esbuild: - specifier: 0.25.11 - version: 0.25.11 + specifier: 0.25.12 + version: 0.25.12 packages/angular_devkit/build_webpack: dependencies: @@ -793,10 +793,10 @@ importers: version: link:../../ngtools/webpack webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.11) + version: 5.102.1(esbuild@0.25.12) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.11)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.12)) packages/angular_devkit/core: dependencies: @@ -875,7 +875,7 @@ importers: version: 5.9.3 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.11) + version: 5.102.1(esbuild@0.25.12) packages/schematics/angular: dependencies: @@ -903,6 +903,9 @@ importers: packages: + '@acemir/cssom@0.9.19': + resolution: {integrity: sha512-Pp2gAQXPZ2o7lt4j0IMwNRXqQ3pagxtDj5wctL5U2Lz4oV0ocDNlkgx4DpxfyKav4S/bePuI+SMqcBSUHLy9kg==} + '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -915,60 +918,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.7.0': - resolution: {integrity: sha512-hOEItTFOvNLI6QX6TSGu7VE4XcUcdoKZT8NwDY+5mWwu87rGhkjlY7uesKTInlg6Sh8cyRkDBYRumxbkoBbBhA==} + '@algolia/abtesting@1.8.0': + resolution: {integrity: sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.41.0': - resolution: {integrity: sha512-iRuvbEyuHCAhIMkyzG3tfINLxTS7mSKo7q8mQF+FbQpWenlAlrXnfZTN19LRwnVjx0UtAdZq96ThMWGS6cQ61A==} + '@algolia/client-abtesting@5.42.0': + resolution: {integrity: sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.41.0': - resolution: {integrity: sha512-OIPVbGfx/AO8l1V70xYTPSeTt/GCXPEl6vQICLAXLCk9WOUbcLGcy6t8qv0rO7Z7/M/h9afY6Af8JcnI+FBFdQ==} + '@algolia/client-analytics@5.42.0': + resolution: {integrity: sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.41.0': - resolution: {integrity: sha512-8Mc9niJvfuO8dudWN5vSUlYkz7U3M3X3m1crDLc9N7FZrIVoNGOUETPk3TTHviJIh9y6eKZKbq1hPGoGY9fqPA==} + '@algolia/client-common@5.42.0': + resolution: {integrity: sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.41.0': - resolution: {integrity: sha512-vXzvCGZS6Ixxn+WyzGUVDeR3HO/QO5POeeWy1kjNJbEf6f+tZSI+OiIU9Ha+T3ntV8oXFyBEuweygw4OLmgfiQ==} + '@algolia/client-insights@5.42.0': + resolution: {integrity: sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.41.0': - resolution: {integrity: sha512-tkymXhmlcc7w/HEvLRiHcpHxLFcUB+0PnE9FcG6hfFZ1ZXiWabH+sX+uukCVnluyhfysU9HRU2kUmUWfucx1Dg==} + '@algolia/client-personalization@5.42.0': + resolution: {integrity: sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.41.0': - resolution: {integrity: sha512-vyXDoz3kEZnosNeVQQwf0PbBt5IZJoHkozKRIsYfEVm+ylwSDFCW08qy2YIVSHdKy69/rWN6Ue/6W29GgVlmKQ==} + '@algolia/client-query-suggestions@5.42.0': + resolution: {integrity: sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.41.0': - resolution: {integrity: sha512-G9I2atg1ShtFp0t7zwleP6aPS4DcZvsV4uoQOripp16aR6VJzbEnKFPLW4OFXzX7avgZSpYeBAS+Zx4FOgmpPw==} + '@algolia/client-search@5.42.0': + resolution: {integrity: sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.41.0': - resolution: {integrity: sha512-sxU/ggHbZtmrYzTkueTXXNyifn+ozsLP+Wi9S2hOBVhNWPZ8uRiDTDcFyL7cpCs1q72HxPuhzTP5vn4sUl74cQ==} + '@algolia/ingestion@1.42.0': + resolution: {integrity: sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.41.0': - resolution: {integrity: sha512-UQ86R6ixraHUpd0hn4vjgTHbViNO8+wA979gJmSIsRI3yli2v89QSFF/9pPcADR6PbtSio/99PmSNxhZy+CR3Q==} + '@algolia/monitoring@1.42.0': + resolution: {integrity: sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.41.0': - resolution: {integrity: sha512-DxP9P8jJ8whJOnvmyA5mf1wv14jPuI0L25itGfOHSU6d4ZAjduVfPjTS3ROuUN5CJoTdlidYZE+DtfWHxJwyzQ==} + '@algolia/recommend@5.42.0': + resolution: {integrity: sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.41.0': - resolution: {integrity: sha512-C21J+LYkE48fDwtLX7YXZd2Fn7Fe0/DOEtvohSfr/ODP8dGDhy9faaYeWB0n1AvmZltugjkjAXT7xk0CYNIXsQ==} + '@algolia/requester-browser-xhr@5.42.0': + resolution: {integrity: sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.41.0': - resolution: {integrity: sha512-FhJy/+QJhMx1Hajf2LL8og4J7SqOAHiAuUXq27cct4QnPhSIuIGROzeRpfDNH5BUbq22UlMuGd44SeD4HRAqvA==} + '@algolia/requester-fetch@5.42.0': + resolution: {integrity: sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.41.0': - resolution: {integrity: sha512-tYv3rGbhBS0eZ5D8oCgV88iuWILROiemk+tQ3YsAKZv2J4kKUNvKkrX/If/SreRy4MGP2uJzMlyKcfSfO2mrsQ==} + '@algolia/requester-node-http@5.42.0': + resolution: {integrity: sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -1695,158 +1698,158 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1861,8 +1864,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.4.0': - resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} + '@eslint/compat@1.4.1': + resolution: {integrity: sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.40 || 9 @@ -1874,28 +1877,28 @@ packages: resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.4.1': - resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.16.0': - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} 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} - '@eslint/js@9.38.0': - resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} + '@eslint/js@9.39.0': + resolution: {integrity: sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.4.0': - resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.1.1': @@ -2768,8 +2771,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.95.0': - resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} + '@oxc-project/types@0.96.0': + resolution: {integrity: sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -2918,95 +2921,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.45': - resolution: {integrity: sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g==} + '@rolldown/binding-android-arm64@1.0.0-beta.46': + resolution: {integrity: sha512-1nfXUqZ227uKuLw9S12OQZU5z+h+cUOXLW5orntWVxHWvt20pt1PGUcVoIU8ssngKABu0vzHY268kAxuYX24BQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.45': - resolution: {integrity: sha512-xjCv4CRVsSnnIxTuyH1RDJl5OEQ1c9JYOwfDAHddjJDxCw46ZX9q80+xq7Eok7KC4bRSZudMJllkvOKv0T9SeA==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.46': + resolution: {integrity: sha512-w4IyumCQkpA3ezZ37COG3mMusFYxjEE8zqCfXZU/qb5k1JMD2kVl0fgJafIbGli27tgelYMweXkJGnlrxSGT9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.45': - resolution: {integrity: sha512-ddcO9TD3D/CLUa/l8GO8LHzBOaZqWg5ClMy3jICoxwCuoz47h9dtqPsIeTiB6yR501LQTeDsjA4lIFd7u3Ljfw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.46': + resolution: {integrity: sha512-9QqaRHPbdAnv306+7nzltq4CktJ49Z4W9ybHLWYxSeDSoOGL4l1QmxjDWoRHrqYEkNr+DWHqqoD4NNHgOk7lKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.45': - resolution: {integrity: sha512-MBTWdrzW9w+UMYDUvnEuh0pQvLENkl2Sis15fHTfHVW7ClbGuez+RWopZudIDEGkpZXdeI4CkRXk+vdIIebrmg==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.46': + resolution: {integrity: sha512-Cuk5opdEMb+Evi7QcGArc4hWVoHSGz/qyUUWLTpFJWjylb8wH1u4f+HZE6gVGACuf4w/5P/VhAIamHyweAbBVQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': - resolution: {integrity: sha512-4YgoCFiki1HR6oSg+GxxfzfnVCesQxLF1LEnw9uXS/MpBmuog0EOO2rYfy69rWP4tFZL9IWp6KEfGZLrZ7aUog==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': + resolution: {integrity: sha512-BPWDxEnxb4JNMXrSmPuc5ywI6cHOELofmT0e/WGkbL1MwKYRVvqTf+gMcGLF6zAV+OF5hLYMAEk8XKfao6xmDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': - resolution: {integrity: sha512-LE1gjAwQRrbCOorJJ7LFr10s5vqYf5a00V5Ea9wXcT2+56n5YosJkcp8eQ12FxRBv2YX8dsdQJb+ZTtYJwb6XQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': + resolution: {integrity: sha512-CDQSVlryuRC955EwgbBK1h/6xQyttSxQG8+6/PeOfvUlfKGPMbBdcsOEHzGve5ED1Y7Ovh2UFjY/eT106aQqig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': - resolution: {integrity: sha512-tdy8ThO/fPp40B81v0YK3QC+KODOmzJzSUOO37DinQxzlTJ026gqUSOM8tzlVixRbQJltgVDCTYF8HNPRErQTA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': + resolution: {integrity: sha512-6IZHycZetmVaC9zwcl1aA9fPYPuxLa5apALjJRoJu/2BZdER3zBWxDnCzlEh4SUlo++cwdfV9ZQRK9JS8cLNuA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': - resolution: {integrity: sha512-lS082ROBWdmOyVY/0YB3JmsiClaWoxvC+dA8/rbhyB9VLkvVEaihLEOr4CYmrMse151C4+S6hCw6oa1iewox7g==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': + resolution: {integrity: sha512-R/kI8fMnsxXvWzcMv5A408hfvrwtAwD/HdQKIE1HKWmfxdSHB11Y3PVwlnt7RVo7I++6mWCIxxj5o3gut4ibEw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': - resolution: {integrity: sha512-Hi73aYY0cBkr1/SvNQqH8Cd+rSV6S9RB5izCv0ySBcRnd/Wfn5plguUoGYwBnhHgFbh6cPw9m2dUVBR6BG1gxA==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': + resolution: {integrity: sha512-vGUXKuHGUlG2XBwvN4A8KIegeaVVxN2ZxdGG9thycwRkzUvZ9ccKvqUVZM8cVRyNRWgVgsGCS18qLUefVplwKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': - resolution: {integrity: sha512-fljEqbO7RHHogNDxYtTzr+GNjlfOx21RUyGmF+NrkebZ8emYYiIqzPxsaMZuRx0rgZmVmliOzEp86/CQFDKhJQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': + resolution: {integrity: sha512-6SpDGH+0Dud3/RFDoC6fva6+Cm/0COnMRKR8kI4ssHWlCXPymlM59kYFCIBLZZqwURpNVVMPln4rWjxXuwD23w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': - resolution: {integrity: sha512-ZJDB7lkuZE9XUnWQSYrBObZxczut+8FZ5pdanm8nNS1DAo8zsrPuvGwn+U3fwU98WaiFsNrA4XHngesCGr8tEQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': + resolution: {integrity: sha512-peWDGp8YUAbTw5RJzr9AuPlTuf2adr+TBNIGF6ysMbobBKuQL41wYfGQlcerXJfLmjnQLf6DU2zTPBTfrS2Y8A==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': - resolution: {integrity: sha512-zyzAjItHPUmxg6Z8SyRhLdXlJn3/D9KL5b9mObUrBHhWS/GwRH4665xCiFqeuktAhhWutqfc+rOV2LjK4VYQGQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': + resolution: {integrity: sha512-Ydbwg1JCnVbTAuDyKtu3dOuBLgZ6iZsy8p1jMPX/r7LMPnpXnS15GNcmMwa11nyl/M2VjGE1i/MORUTMt8mnRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': - resolution: {integrity: sha512-wODcGzlfxqS6D7BR0srkJk3drPwXYLu7jPHN27ce2c4PUnVVmJnp9mJzUQGT4LpmHmmVdMZ+P6hKvyTGBzc1CA==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': + resolution: {integrity: sha512-XcPZG2uDxEn6G3takXQvi7xWgDiJqdC0N6mubL/giKD4I65zgQtbadwlIR8oDB/erOahZr5IX8cRBVcK3xcvpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': - resolution: {integrity: sha512-wiU40G1nQo9rtfvF9jLbl79lUgjfaD/LTyUEw2Wg/gdF5OhjzpKMVugZQngO+RNdwYaNj+Fs+kWBWfp4VXPMHA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': + resolution: {integrity: sha512-VPC+F9S6nllv02aGG+gxHRgpOaOlYBPn94kDe9DCFSLOztf4uYIAkN+tLDlg5OcsOC8XNR5rP49zOfI0PfnHYw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.45': - resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} + '@rolldown/pluginutils@1.0.0-beta.46': + resolution: {integrity: sha512-xMNwJo/pHkEP/mhNVnW+zUiJDle6/hxrwO0mfSJuEVRbBfgrJFuUSRoZx/nYUw5pCjrysl9OkNXCkAdih8GCnA==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3922,8 +3925,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.41.0: - resolution: {integrity: sha512-9E4b3rJmYbBkn7e3aAPt1as+VVnRhsR4qwRRgOzpeyz4PAOuwKh0HI4AN6mTrqK0S0M9fCCSTOUnuJ8gPY/tvA==} + algoliasearch@5.42.0: + resolution: {integrity: sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -4666,8 +4669,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.1: - resolution: {integrity: sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==} + cssstyle@5.3.2: + resolution: {integrity: sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==} engines: {node: '>=20'} custom-event@1.0.1: @@ -5080,13 +5083,13 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.25.11: - resolution: {integrity: sha512-60gllbYFIRGzB6KALBB5Va9Wy3VeCi2U0NgmM7r+TFnRgzeEyoCn2D7fhacW2zWbd7MUeTKLDE7RlfYGBQ00bw==} + esbuild-wasm@0.25.12: + resolution: {integrity: sha512-rZqkjL3Y6FwLpSHzLnaEy8Ps6veCNo1kZa9EOfJvmWtBq5dJH4iVjfmOO6Mlkv9B0tt9WFPFmb/VxlgJOnueNg==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -5171,8 +5174,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.38.0: - resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} + eslint@9.39.0: + resolution: {integrity: sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -5582,8 +5585,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} globalthis@1.0.4: @@ -6266,9 +6269,9 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdom@27.0.1: - resolution: {integrity: sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==} - engines: {node: '>=20'} + jsdom@27.1.0: + resolution: {integrity: sha512-Pcfm3eZ+eO4JdZCXthW9tCDT3nF4K+9dmeZ+5X39n+Kqz0DDIABRP5CAEOHRFZk8RGuC2efksTJxrjp8EXCunQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -7648,8 +7651,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rolldown@1.0.0-beta.45: - resolution: {integrity: sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ==} + rolldown@1.0.0-beta.46: + resolution: {integrity: sha512-FYUbq0StVHOjkR/hEJ667Pup3ugeB9odBcbmxU5il9QfT9X2t/FPhkqFYQthbYxD2bKnQyO+2vHTgnmOHwZdeA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7683,9 +7686,6 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-applescript@7.1.0: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} @@ -7745,8 +7745,8 @@ packages: webpack: optional: true - sass@1.93.2: - resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} + sass@1.93.3: + resolution: {integrity: sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==} engines: {node: '>=14.0.0'} hasBin: true @@ -9023,6 +9023,8 @@ packages: snapshots: + '@acemir/cssom@0.9.19': {} + '@actions/core@1.11.1': dependencies: '@actions/exec': 1.1.1 @@ -9039,89 +9041,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.7.0': + '@algolia/abtesting@1.8.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/client-abtesting@5.41.0': + '@algolia/client-abtesting@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/client-analytics@5.41.0': + '@algolia/client-analytics@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/client-common@5.41.0': {} + '@algolia/client-common@5.42.0': {} - '@algolia/client-insights@5.41.0': + '@algolia/client-insights@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/client-personalization@5.41.0': + '@algolia/client-personalization@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/client-query-suggestions@5.41.0': + '@algolia/client-query-suggestions@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/client-search@5.41.0': + '@algolia/client-search@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/ingestion@1.41.0': + '@algolia/ingestion@1.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/monitoring@1.41.0': + '@algolia/monitoring@1.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/recommend@5.41.0': + '@algolia/recommend@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 - '@algolia/requester-browser-xhr@5.41.0': + '@algolia/requester-browser-xhr@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 + '@algolia/client-common': 5.42.0 - '@algolia/requester-fetch@5.41.0': + '@algolia/requester-fetch@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 + '@algolia/client-common': 5.42.0 - '@algolia/requester-node-http@5.41.0': + '@algolia/requester-node-http@5.42.0': dependencies: - '@algolia/client-common': 5.41.0 + '@algolia/client-common': 5.42.0 '@ampproject/remapping@2.3.0': dependencies: @@ -10098,96 +10100,96 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.11': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.11': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.25.11': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.25.11': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.11': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.11': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.11': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.11': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.11': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.11': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.11': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.11': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.11': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.11': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.11': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.11': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.25.11': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.11': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.11': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.11': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.11': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.11': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.11': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.11': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.11': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.25.11': + '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.0(jiti@2.6.1))': dependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.0(eslint@9.38.0(jiti@2.6.1))': + '@eslint/compat@1.4.1(eslint@9.39.0(jiti@2.6.1))': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 optionalDependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) '@eslint/config-array@0.21.1': dependencies: @@ -10197,11 +10199,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.1': + '@eslint/config-helpers@0.4.2': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 - '@eslint/core@0.16.0': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 @@ -10219,13 +10221,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.38.0': {} + '@eslint/js@9.39.0': {} '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.4.0': + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 levn: 0.4.1 '@fastify/busboy@2.1.1': {} @@ -11241,7 +11243,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.95.0': {} + '@oxc-project/types@0.96.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11365,51 +11367,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.45': + '@rolldown/binding-android-arm64@1.0.0-beta.46': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.45': + '@rolldown/binding-darwin-arm64@1.0.0-beta.46': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.45': + '@rolldown/binding-darwin-x64@1.0.0-beta.46': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.45': + '@rolldown/binding-freebsd-x64@1.0.0-beta.46': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': optional: true - '@rolldown/pluginutils@1.0.0-beta.45': {} + '@rolldown/pluginutils@1.0.0-beta.46': {} '@rollup/plugin-alias@6.0.0(rollup@4.52.5)': optionalDependencies: @@ -11581,11 +11583,11 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.5.0(eslint@9.39.0(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@typescript-eslint/types': 8.46.2 - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -11821,10 +11823,10 @@ snapshots: '@types/less@3.0.8': {} - '@types/loader-utils@3.0.0(esbuild@0.25.11)': + '@types/loader-utils@3.0.0(esbuild@0.25.12)': dependencies: '@types/node': 22.18.12 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) transitivePeerDependencies: - '@swc/core' - esbuild @@ -11969,15 +11971,15 @@ snapshots: '@types/node': 22.18.12 optional: true - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -11986,14 +11988,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12016,13 +12018,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12046,13 +12048,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12222,11 +12224,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.6 @@ -12239,7 +12241,7 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12252,13 +12254,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.6': dependencies: @@ -12619,22 +12621,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.41.0: - dependencies: - '@algolia/abtesting': 1.7.0 - '@algolia/client-abtesting': 5.41.0 - '@algolia/client-analytics': 5.41.0 - '@algolia/client-common': 5.41.0 - '@algolia/client-insights': 5.41.0 - '@algolia/client-personalization': 5.41.0 - '@algolia/client-query-suggestions': 5.41.0 - '@algolia/client-search': 5.41.0 - '@algolia/ingestion': 1.41.0 - '@algolia/monitoring': 1.41.0 - '@algolia/recommend': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + algoliasearch@5.42.0: + dependencies: + '@algolia/abtesting': 1.8.0 + '@algolia/client-abtesting': 5.42.0 + '@algolia/client-analytics': 5.42.0 + '@algolia/client-common': 5.42.0 + '@algolia/client-insights': 5.42.0 + '@algolia/client-personalization': 5.42.0 + '@algolia/client-query-suggestions': 5.42.0 + '@algolia/client-search': 5.42.0 + '@algolia/ingestion': 1.42.0 + '@algolia/monitoring': 1.42.0 + '@algolia/recommend': 5.42.0 + '@algolia/requester-browser-xhr': 5.42.0 + '@algolia/requester-fetch': 5.42.0 + '@algolia/requester-node-http': 5.42.0 ansi-colors@4.1.3: {} @@ -12799,11 +12801,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.11)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.12)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13403,14 +13405,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.25.11)): + copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.25.12)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) core-js-compat@3.46.0: dependencies: @@ -13454,7 +13456,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.102.1(esbuild@0.25.11)): + css-loader@7.1.2(webpack@5.102.1(esbuild@0.25.12)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13465,7 +13467,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) css-select@6.0.0: dependencies: @@ -13484,7 +13486,7 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.1(postcss@8.5.6): + cssstyle@5.3.2(postcss@8.5.6): dependencies: '@asamuzakjp/css-color': 4.0.5 '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) @@ -13917,36 +13919,36 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.25.11: {} + esbuild-wasm@0.25.12: {} - esbuild@0.25.11: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 escalade@3.2.0: {} @@ -13964,9 +13966,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.39.0(jiti@2.6.1)): dependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -13976,21 +13978,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.38.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.38.0(jiti@2.6.1)): + eslint-plugin-header@3.1.1(eslint@9.39.0(jiti@2.6.1)): dependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -13999,9 +14001,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14013,7 +14015,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14033,16 +14035,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.38.0(jiti@2.6.1): + eslint@9.39.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.1 - '@eslint/core': 0.16.0 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.38.0 - '@eslint/plugin-kit': 0.4.0 + '@eslint/js': 9.39.0 + '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -14604,7 +14606,7 @@ snapshots: globals@14.0.0: {} - globals@16.4.0: {} + globals@16.5.0: {} globalthis@1.0.4: dependencies: @@ -15318,10 +15320,11 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): + jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: + '@acemir/cssom': 0.9.19 '@asamuzakjp/dom-selector': 6.7.3 - cssstyle: 5.3.1(postcss@8.5.6) + cssstyle: 5.3.2(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -15329,7 +15332,6 @@ snapshots: https-proxy-agent: 7.0.6(supports-color@10.2.2) is-potential-custom-element-name: 1.0.1 parse5: 8.0.0 - rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 @@ -15573,11 +15575,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.11)): + less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.12)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) less@4.4.2: dependencies: @@ -15598,11 +15600,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.25.11)): + license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.25.12)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) lie@3.3.0: dependencies: @@ -15863,11 +15865,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.25.11)): + mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.25.12)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) minimalistic-assert@1.0.1: {} @@ -16011,7 +16013,7 @@ snapshots: chokidar: 4.0.3 commander: 14.0.2 dependency-graph: 1.0.0 - esbuild: 0.25.11 + esbuild: 0.25.12 find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 @@ -16021,7 +16023,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.93.2 + sass: 1.93.3 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -16498,14 +16500,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.12)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) transitivePeerDependencies: - typescript @@ -16947,25 +16949,25 @@ snapshots: dependencies: glob: 7.2.3 - rolldown@1.0.0-beta.45: + rolldown@1.0.0-beta.46: dependencies: - '@oxc-project/types': 0.95.0 - '@rolldown/pluginutils': 1.0.0-beta.45 + '@oxc-project/types': 0.96.0 + '@rolldown/pluginutils': 1.0.0-beta.46 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.45 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.45 - '@rolldown/binding-darwin-x64': 1.0.0-beta.45 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.45 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.45 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.45 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.45 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.45 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.45 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.45 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.45 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.45 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.45 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.45 + '@rolldown/binding-android-arm64': 1.0.0-beta.46 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.46 + '@rolldown/binding-darwin-x64': 1.0.0-beta.46 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.46 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.46 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.46 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.46 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.46 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.46 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.46 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.46 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.46 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.46 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.46 rollup-license-plugin@3.0.2: dependencies: @@ -17026,8 +17028,6 @@ snapshots: transitivePeerDependencies: - supports-color - rrweb-cssom@0.8.0: {} - run-applescript@7.1.0: {} run-parallel@1.2.0: @@ -17067,14 +17067,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.11)): + sass-loader@16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.25.12)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.93.2 - webpack: 5.102.1(esbuild@0.25.11) + sass: 1.93.3 + webpack: 5.102.1(esbuild@0.25.12) - sass@1.93.2: + sass@1.93.3: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -17385,11 +17385,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.25.11)): + source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.25.12)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) source-map-support@0.4.18: dependencies: @@ -17681,16 +17681,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)): + terser-webpack-plugin@5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) optionalDependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 terser@5.44.0: dependencies: @@ -17829,7 +17829,7 @@ snapshots: tsx@4.20.6: dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -18107,9 +18107,9 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -18120,15 +18120,15 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.93.2 + sass: 1.93.3 terser: 5.44.0 tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.6 - '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.6 '@vitest/runner': 4.0.6 '@vitest/snapshot': 4.0.6 @@ -18145,11 +18145,11 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.1 - jsdom: 27.0.1(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + jsdom: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less @@ -18213,7 +18213,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.11)): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.12)): dependencies: colorette: 2.0.20 memfs: 4.49.0 @@ -18222,9 +18222,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.11)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.12)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18252,10 +18252,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.11)) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.12)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) transitivePeerDependencies: - bufferutil - debug @@ -18270,12 +18270,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.25.11)): + webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.25.12)): dependencies: typed-assert: 1.0.9 - webpack: 5.102.1(esbuild@0.25.11) + webpack: 5.102.1(esbuild@0.25.12) - webpack@5.102.1(esbuild@0.25.11): + webpack@5.102.1(esbuild@0.25.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18299,7 +18299,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 9268cf3cc859c4d2af05e9e2db4873319e864473 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 4 Nov 2025 08:41:51 +0000 Subject: [PATCH 1723/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 1 - package.json | 6 +- pnpm-lock.yaml | 485 ++++++++++-------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 11 files changed, 341 insertions(+), 295 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 76275de9c29f..257f4e9799ae 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@8b845a41a4a3d812c4e6453217a36761c63bc832 + - uses: angular/dev-infra/github-actions/branch-manager@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12a26ff6482c..f579b967c47e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 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@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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 98be7673f254..eccca9c5dcb4 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@8b845a41a4a3d812c4e6453217a36761c63bc832 + - uses: angular/dev-infra/github-actions/pull-request-labeling@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@8b845a41a4a3d812c4e6453217a36761c63bc832 + - uses: angular/dev-infra/github-actions/post-approval-changes@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 221bc5ea6966..43b6b3f2164f 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@8b845a41a4a3d812c4e6453217a36761c63bc832 + - uses: angular/dev-infra/github-actions/feature-request@64fbfea9823cf54d2caa96753ae0cb0745736f01 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 199d3d48b187..c3fa94b64641 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@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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 17cb776f149f..fffcf2fd8edd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/linting/licenses@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8b845a41a4a3d812c4e6453217a36761c63bc832 + uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 - 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/MODULE.bazel b/MODULE.bazel index d9ffe77e4a14..bc615b24d9ce 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "8b845a41a4a3d812c4e6453217a36761c63bc832", + commit = "64fbfea9823cf54d2caa96753ae0cb0745736f01", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c9efb618ffde..a9e224f1b3f1 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -20,7 +20,6 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.23.0/MODULE.bazel": "9b437a9ec25a619304940434fa03b8d41248213eb7009da2c898f3d6a4075ef3", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/MODULE.bazel": "15d19e46ec74e9e49ddf3c335e7a91b0657571654b0960bdcd10b771eeb4f7cb", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/source.json": "6cc8c0ba6c623527e383acfe4ee73f290eeead2431093668db3b7a579a948deb", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", diff --git a/package.json b/package.json index a51024645b51..414b2f1cc0fa 100644 --- a/package.json +++ b/package.json @@ -45,15 +45,15 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@angular/animations": "21.0.0-rc.0", - "@angular/cdk": "21.0.0-next.10", + "@angular/cdk": "21.0.0-rc.0", "@angular/common": "21.0.0-rc.0", "@angular/compiler": "21.0.0-rc.0", "@angular/compiler-cli": "21.0.0-rc.0", "@angular/core": "21.0.0-rc.0", "@angular/forms": "21.0.0-rc.0", "@angular/localize": "21.0.0-rc.0", - "@angular/material": "21.0.0-next.10", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#b92e80b853e5a53612e80f329ab0faaa7eb7d8e2", + "@angular/material": "21.0.0-rc.0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#f3ab28388242df0aa4f44c8da303833914168118", "@angular/platform-browser": "21.0.0-rc.0", "@angular/platform-server": "21.0.0-rc.0", "@angular/router": "21.0.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c541c3df5acc..953af76fb2ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-next.10 - version: 21.0.0-next.10(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) @@ -44,11 +44,11 @@ importers: specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.0) '@angular/material': - specifier: 21.0.0-next.10 - version: 21.0.0-next.10(38e1f4a9e3d134edc7fd6e337dd0ae51) + specifier: 21.0.0-rc.0 + version: 21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#b92e80b853e5a53612e80f329ab0faaa7eb7d8e2 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2(@modelcontextprotocol/sdk@1.20.2) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#f3ab28388242df0aa4f44c8da303833914168118 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f3ab28388242df0aa4f44c8da303833914168118(@modelcontextprotocol/sdk@1.20.2) '@angular/platform-browser': specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -333,7 +333,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.6 - version: 4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) @@ -342,7 +342,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -363,10 +363,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.19 - version: 5.1.19(@types/node@24.9.1) + version: 5.1.19(@types/node@24.9.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -420,7 +420,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.12 - version: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -448,7 +448,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -467,10 +467,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.9.1) + version: 7.9.0(@types/node@24.9.2) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.1))(@types/node@24.9.1)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.2))(@types/node@24.9.2)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.20.2 version: 1.20.2 @@ -851,7 +851,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.9.1) + version: 7.9.0(@types/node@24.9.2) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -984,8 +984,8 @@ packages: peerDependencies: '@angular/core': 21.0.0-rc.0 - '@angular/cdk@21.0.0-next.10': - resolution: {integrity: sha512-2TrKv6q92eWHx+pB0WcignKqBnW6dY+1lFA1Nh0Dg6Al+/ZWhPP89dQUZylWlRQqKlolClJulRfE5PQXidlOIA==} + '@angular/cdk@21.0.0-rc.0': + resolution: {integrity: sha512-bcUYmpXhjOdNmIzbDi9K1Zx394IVDpUoi4SVC9hjUJSlrveFSwm+RmllCYEYZnKnitG7MICI3F6xH/nc+Xkx/Q==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 @@ -1044,19 +1044,19 @@ packages: '@angular/compiler': 21.0.0-rc.0 '@angular/compiler-cli': 21.0.0-rc.0 - '@angular/material@21.0.0-next.10': - resolution: {integrity: sha512-oh3SA4b4SLqBpPEWYO00LOSQKUSrSM96ladmr2O7bOpHk4VfRJBaSiX3Tkr/K1bsNrg88LZp3lBYtMN7soIxoQ==} + '@angular/material@21.0.0-rc.0': + resolution: {integrity: sha512-ohBIZLdMCQ8VInX+AMD6WIRzm4iR4c42at+6cISNe04qJsCxaFw8yoIK9wWOLURKxDa7tYiRseFM8vllB/78Ag==} peerDependencies: - '@angular/cdk': 21.0.0-next.10 + '@angular/cdk': 21.0.0-rc.0 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2} - version: 0.0.0-8b845a41a4a3d812c4e6453217a36761c63bc832 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f3ab28388242df0aa4f44c8da303833914168118': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f3ab28388242df0aa4f44c8da303833914168118} + version: 0.0.0-64fbfea9823cf54d2caa96753ae0cb0745736f01 hasBin: true '@angular/platform-browser@21.0.0-rc.0': @@ -1905,8 +1905,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.4.0': - resolution: {integrity: sha512-YilG6AJ/nYpCKtxZyvEzBRAQv5bU+2tBOKX4Ps0rNNSdxN39aT37kGhjATbk1kq1z5Lq7mkWglw/ajAF3lOWUg==} + '@firebase/ai@2.5.0': + resolution: {integrity: sha512-OXv/jZLRjV9jTejWA4KOvW8gM1hNsLvQSCPwKhi2CEfe0Nap3rM6z+Ial0PGqXga0WgzhpypEvJOFvaAUFX3kg==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -1943,19 +1943,19 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/app-compat@0.5.4': - resolution: {integrity: sha512-T7ifGmb+awJEcp542Ek4HtNfBxcBrnuk1ggUdqyFEdsXHdq7+wVlhvE6YukTL7NS8hIkEfL7TMAPx/uCNqt30g==} + '@firebase/app-compat@0.5.5': + resolution: {integrity: sha512-lVG/nRnXaot0rQSZazmTNqy83ti9O3+kdwoaE0d5wahRIWNoDirbIMcGVjDDgdmf4IE6FYreWOMh0L3DV1475w==} engines: {node: '>=20.0.0'} '@firebase/app-types@0.9.3': resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - '@firebase/app@0.14.4': - resolution: {integrity: sha512-pUxEGmR+uu21OG/icAovjlu1fcYJzyVhhT0rsCrn+zi+nHtrS43Bp9KPn9KGa4NMspCUE++nkyiqziuIvJdwzw==} + '@firebase/app@0.14.5': + resolution: {integrity: sha512-zyNY77xJOGwcuB+xCxF8z8lSiHvD4ox7BCsqLEHEvgqQoRjxFZ0fkROR6NV5QyXmCqRLodMM8J5d2EStOocWIw==} engines: {node: '>=20.0.0'} - '@firebase/auth-compat@0.6.0': - resolution: {integrity: sha512-J0lGSxXlG/lYVi45wbpPhcWiWUMXevY4fvLZsN1GHh+po7TZVng+figdHBVhFheaiipU8HZyc7ljw1jNojM2nw==} + '@firebase/auth-compat@0.6.1': + resolution: {integrity: sha512-I0o2ZiZMnMTOQfqT22ur+zcGDVSAfdNZBHo26/Tfi8EllfR1BO7aTVo2rt/ts8o/FWsK8pOALLeVBGhZt8w/vg==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app-compat': 0.x @@ -1969,8 +1969,8 @@ packages: '@firebase/app-types': 0.x '@firebase/util': 1.x - '@firebase/auth@1.11.0': - resolution: {integrity: sha512-5j7+ua93X+IRcJ1oMDTClTo85l7Xe40WSkoJ+shzPrX7OISlVWLdE1mKC57PSD+/LfAbdhJmvKixINBw2ESK6w==} + '@firebase/auth@1.11.1': + resolution: {integrity: sha512-Mea0G/BwC1D0voSG+60Ylu3KZchXAFilXQ/hJXWCw3gebAu+RDINZA0dJMNeym7HFxBaBaByX8jSa7ys5+F2VA==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -2146,8 +2146,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.27.0': - resolution: {integrity: sha512-sveeQqwyzO/U5kOjo3EflF1rf7v0ZGprrjPGmeT6V5u22IUTcA4wBFxW+q1n7hOX0M1iWR3944MImoNPOM+zsA==} + '@google/genai@1.28.0': + resolution: {integrity: sha512-0pfZ1EWQsM9kINsL+mFKJvpzM6NRHS9t360S1MzKq4JtIwTj/RbsPpC/K5wpKiPy9PC+J+bsz/9gvaL51++KrA==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.20.1 @@ -2709,12 +2709,21 @@ packages: '@octokit/openapi-types@26.0.0': resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} + '@octokit/openapi-types@27.0.0': + resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} + '@octokit/plugin-paginate-rest@13.2.1': resolution: {integrity: sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=6' + '@octokit/plugin-request-log@6.0.0': resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} engines: {node: '>= 20'} @@ -2727,6 +2736,12 @@ packages: peerDependencies: '@octokit/core': '>=6' + '@octokit/plugin-rest-endpoint-methods@17.0.0': + resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=6' + '@octokit/request-error@7.0.1': resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} engines: {node: '>= 20'} @@ -2742,6 +2757,9 @@ packages: '@octokit/types@15.0.1': resolution: {integrity: sha512-sdiirM93IYJ9ODDCBgmRPIboLbSkpLa5i+WLuXH8b8Atg+YMLAyLvDDhNWLV4OYd08tlvYfVm/dw88cqHWtw1Q==} + '@octokit/types@16.0.0': + resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} + '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -3451,8 +3469,8 @@ packages: '@types/node@22.18.12': resolution: {integrity: sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==} - '@types/node@24.9.1': - resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} + '@types/node@24.9.2': + resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -5387,8 +5405,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase@12.4.0: - resolution: {integrity: sha512-/chNgDQ6ppPPGOQO4jctxOa/5JeQxuhaxA7Y90K0I+n/wPfoO8mRveedhVUdo7ExLcWUivnnow/ouSLYSI5Icw==} + firebase@12.5.0: + resolution: {integrity: sha512-Ak8JcpH7FL6kiv0STwkv5+3CYEROO9iFWSx7OCZVvc4kIIABAIyAGs1mPGaHRxGUIApFZdMCXA7baq17uS6Mow==} flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} @@ -6227,6 +6245,9 @@ packages: jasmine-core@5.12.0: resolution: {integrity: sha512-QqO4pX33GEML5JoGQU6BM5NHKPgEsg+TXp3jCIDek9MbfEp2JUYEFBo9EF1+hegWy/bCHS1m5nP0BOp18G6rVA==} + jasmine-core@5.12.1: + resolution: {integrity: sha512-P/UbRZ0LKwXe7wEpwDheuhunPwITn4oPALhrJEQJo6756EwNGnsK/TSQrWojBB4cQDQ+VaxWYws9tFNDuiMh2Q==} + jasmine-reporters@2.5.2: resolution: {integrity: sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==} @@ -6714,6 +6735,10 @@ packages: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -9135,7 +9160,7 @@ snapshots: '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-next.10(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) @@ -9197,9 +9222,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-next.10(38e1f4a9e3d134edc7fd6e337dd0ae51)': + '@angular/material@21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22)': dependencies: - '@angular/cdk': 21.0.0-next.10(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/cdk': 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) @@ -9207,23 +9232,23 @@ 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/b92e80b853e5a53612e80f329ab0faaa7eb7d8e2(@modelcontextprotocol/sdk@1.20.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f3ab28388242df0aa4f44c8da303833914168118(@modelcontextprotocol/sdk@1.20.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.27.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.9.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 7.9.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) '@octokit/auth-app': 8.1.1 '@octokit/core': 7.0.5 '@octokit/graphql': 9.0.2 '@octokit/graphql-schema': 15.26.0 - '@octokit/openapi-types': 26.0.0 - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.5) + '@octokit/openapi-types': 27.0.0 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.5) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.5) '@octokit/request-error': 7.0.1 '@octokit/rest': 22.0.0 - '@octokit/types': 15.0.1 + '@octokit/types': 16.0.0 '@pnpm/dependency-path': 1001.1.3 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 @@ -9231,7 +9256,7 @@ snapshots: '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 '@types/jasmine': 5.1.12 - '@types/node': 24.9.1 + '@types/node': 24.9.2 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.34 @@ -9245,14 +9270,14 @@ snapshots: ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.4.0 + firebase: 12.5.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) jasmine: 5.12.0 - jasmine-core: 5.12.0 + jasmine-core: 5.12.1 jasmine-reporters: 2.5.2 jsonc-parser: 3.3.1 - minimatch: 10.0.3 + minimatch: 10.1.1 multimatch: 7.0.0 nock: 14.0.10 semver: 7.7.3 @@ -10232,9 +10257,9 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.4.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': + '@firebase/ai@2.5.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/app-check-interop-types': 0.3.3 '@firebase/app-types': 0.9.3 '@firebase/component': 0.7.0 @@ -10242,11 +10267,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': + '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': dependencies: - '@firebase/analytics': 0.10.19(@firebase/app@0.14.4) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.5) '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10255,20 +10280,20 @@ snapshots: '@firebase/analytics-types@0.8.3': {} - '@firebase/analytics@0.10.19(@firebase/app@0.14.4)': + '@firebase/analytics@0.10.19(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.5) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-check': 0.11.0(@firebase/app@0.14.4) + '@firebase/app-check': 0.11.0(@firebase/app@0.14.5) '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10280,17 +10305,17 @@ snapshots: '@firebase/app-check-types@0.5.3': {} - '@firebase/app-check@0.11.0(@firebase/app@0.14.4)': + '@firebase/app-check@0.11.0(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-compat@0.5.4': + '@firebase/app-compat@0.5.5': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10298,7 +10323,7 @@ snapshots: '@firebase/app-types@0.9.3': {} - '@firebase/app@0.14.4': + '@firebase/app@0.14.5': dependencies: '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10306,10 +10331,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': + '@firebase/auth-compat@0.6.1(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 - '@firebase/auth': 1.11.0(@firebase/app@0.14.4) + '@firebase/app-compat': 0.5.5 + '@firebase/auth': 1.11.1(@firebase/app@0.14.5) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -10326,9 +10351,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.11.0(@firebase/app@0.14.4)': + '@firebase/auth@1.11.1(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10339,9 +10364,9 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/data-connect@0.3.11(@firebase/app@0.14.4)': + '@firebase/data-connect@0.3.11(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10372,11 +10397,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': + '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.4) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.5) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10389,9 +10414,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.2(@firebase/app@0.14.4)': + '@firebase/firestore@4.9.2(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10400,11 +10425,11 @@ snapshots: '@grpc/proto-loader': 0.7.15 tslib: 2.8.1 - '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 - '@firebase/functions': 0.13.1(@firebase/app@0.14.4) + '@firebase/functions': 0.13.1(@firebase/app@0.14.5) '@firebase/functions-types': 0.6.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10413,9 +10438,9 @@ snapshots: '@firebase/functions-types@0.6.3': {} - '@firebase/functions@0.13.1(@firebase/app@0.14.4)': + '@firebase/functions@0.13.1(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/app-check-interop-types': 0.3.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 @@ -10423,11 +10448,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.5) '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10439,9 +10464,9 @@ snapshots: dependencies: '@firebase/app-types': 0.9.3 - '@firebase/installations@0.6.19(@firebase/app@0.14.4)': + '@firebase/installations@0.6.19(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 idb: 7.1.1 @@ -10451,11 +10476,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 - '@firebase/messaging': 0.12.23(@firebase/app@0.14.4) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.5) '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: @@ -10463,22 +10488,22 @@ snapshots: '@firebase/messaging-interop-types@0.2.3': {} - '@firebase/messaging@0.12.23(@firebase/app@0.14.4)': + '@firebase/messaging@0.12.23(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.5) '@firebase/messaging-interop-types': 0.2.3 '@firebase/util': 1.13.0 idb: 7.1.1 tslib: 2.8.1 - '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/performance': 0.7.9(@firebase/app@0.14.4) + '@firebase/performance': 0.7.9(@firebase/app@0.14.5) '@firebase/performance-types': 0.2.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10487,22 +10512,22 @@ snapshots: '@firebase/performance-types@0.2.3': {} - '@firebase/performance@0.7.9(@firebase/app@0.14.4)': + '@firebase/performance@0.7.9(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.5) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 web-vitals: 4.2.4 - '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4)': + '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.4) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.5) '@firebase/remote-config-types': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10511,20 +10536,20 @@ snapshots: '@firebase/remote-config-types@0.5.0': {} - '@firebase/remote-config@0.7.0(@firebase/app@0.14.4)': + '@firebase/remote-config@0.7.0(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.4) + '@firebase/installations': 0.6.19(@firebase/app@0.14.5) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4)': + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': dependencies: - '@firebase/app-compat': 0.5.4 + '@firebase/app-compat': 0.5.5 '@firebase/component': 0.7.0 - '@firebase/storage': 0.14.0(@firebase/app@0.14.4) + '@firebase/storage': 0.14.0(@firebase/app@0.14.5) '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10537,9 +10562,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/storage@0.14.0(@firebase/app@0.14.4)': + '@firebase/storage@0.14.0(@firebase/app@0.14.5)': dependencies: - '@firebase/app': 0.14.4 + '@firebase/app': 0.14.5 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10611,7 +10636,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.27.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.4.2(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -10661,128 +10686,128 @@ snapshots: '@inquirer/ansi@1.0.1': {} - '@inquirer/checkbox@4.3.0(@types/node@24.9.1)': + '@inquirer/checkbox@4.3.0(@types/node@24.9.2)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/confirm@5.1.19(@types/node@24.9.1)': + '@inquirer/confirm@5.1.19(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/core@10.3.0(@types/node@24.9.1)': + '@inquirer/core@10.3.0(@types/node@24.9.2)': dependencies: '@inquirer/ansi': 1.0.1 '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/editor@4.2.21(@types/node@24.9.1)': + '@inquirer/editor@4.2.21(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/external-editor': 1.0.2(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/external-editor': 1.0.2(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/expand@4.0.21(@types/node@24.9.1)': + '@inquirer/expand@4.0.21(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/external-editor@1.0.2(@types/node@24.9.1)': + '@inquirer/external-editor@1.0.2(@types/node@24.9.2)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 '@inquirer/figures@1.0.14': {} - '@inquirer/input@4.2.5(@types/node@24.9.1)': + '@inquirer/input@4.2.5(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/number@3.0.21(@types/node@24.9.1)': + '@inquirer/number@3.0.21(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/password@4.0.21(@types/node@24.9.1)': + '@inquirer/password@4.0.21(@types/node@24.9.2)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) optionalDependencies: - '@types/node': 24.9.1 - - '@inquirer/prompts@7.9.0(@types/node@24.9.1)': - dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.9.1) - '@inquirer/confirm': 5.1.19(@types/node@24.9.1) - '@inquirer/editor': 4.2.21(@types/node@24.9.1) - '@inquirer/expand': 4.0.21(@types/node@24.9.1) - '@inquirer/input': 4.2.5(@types/node@24.9.1) - '@inquirer/number': 3.0.21(@types/node@24.9.1) - '@inquirer/password': 4.0.21(@types/node@24.9.1) - '@inquirer/rawlist': 4.1.9(@types/node@24.9.1) - '@inquirer/search': 3.2.0(@types/node@24.9.1) - '@inquirer/select': 4.4.0(@types/node@24.9.1) + '@types/node': 24.9.2 + + '@inquirer/prompts@7.9.0(@types/node@24.9.2)': + dependencies: + '@inquirer/checkbox': 4.3.0(@types/node@24.9.2) + '@inquirer/confirm': 5.1.19(@types/node@24.9.2) + '@inquirer/editor': 4.2.21(@types/node@24.9.2) + '@inquirer/expand': 4.0.21(@types/node@24.9.2) + '@inquirer/input': 4.2.5(@types/node@24.9.2) + '@inquirer/number': 3.0.21(@types/node@24.9.2) + '@inquirer/password': 4.0.21(@types/node@24.9.2) + '@inquirer/rawlist': 4.1.9(@types/node@24.9.2) + '@inquirer/search': 3.2.0(@types/node@24.9.2) + '@inquirer/select': 4.4.0(@types/node@24.9.2) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/rawlist@4.1.9(@types/node@24.9.1)': + '@inquirer/rawlist@4.1.9(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/search@3.2.0(@types/node@24.9.1)': + '@inquirer/search@3.2.0(@types/node@24.9.2)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/select@4.4.0(@types/node@24.9.1)': + '@inquirer/select@4.4.0(@types/node@24.9.2)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) + '@inquirer/core': 10.3.0(@types/node@24.9.2) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/type': 3.0.9(@types/node@24.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 - '@inquirer/type@3.0.9(@types/node@24.9.1)': + '@inquirer/type@3.0.9(@types/node@24.9.2)': optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 '@isaacs/balanced-match@4.0.1': {} @@ -10874,10 +10899,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.1))(@types/node@24.9.1)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.2))(@types/node@24.9.2)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.9.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/prompts': 7.9.0(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.9.2) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11184,11 +11209,18 @@ snapshots: '@octokit/openapi-types@26.0.0': {} + '@octokit/openapi-types@27.0.0': {} + '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 '@octokit/types': 15.0.1 + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.5)': + dependencies: + '@octokit/core': 7.0.5 + '@octokit/types': 16.0.0 + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 @@ -11198,6 +11230,11 @@ snapshots: '@octokit/core': 7.0.5 '@octokit/types': 15.0.1 + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.5)': + dependencies: + '@octokit/core': 7.0.5 + '@octokit/types': 16.0.0 + '@octokit/request-error@7.0.1': dependencies: '@octokit/types': 15.0.1 @@ -11221,6 +11258,10 @@ snapshots: dependencies: '@octokit/openapi-types': 26.0.0 + '@octokit/types@16.0.0': + dependencies: + '@octokit/openapi-types': 27.0.0 + '@open-draft/deferred-promise@2.2.0': {} '@open-draft/logger@0.3.0': @@ -11854,7 +11895,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.9.1': + '@types/node@24.9.2': dependencies: undici-types: 7.16.0 @@ -12224,11 +12265,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.6 @@ -12241,7 +12282,7 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12254,13 +12295,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.6': dependencies: @@ -14355,35 +14396,35 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase@12.4.0: + firebase@12.5.0: dependencies: - '@firebase/ai': 2.4.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) - '@firebase/analytics': 0.10.19(@firebase/app@0.14.4) - '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) - '@firebase/app': 0.14.4 - '@firebase/app-check': 0.11.0(@firebase/app@0.14.4) - '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) - '@firebase/app-compat': 0.5.4 + '@firebase/ai': 2.5.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.5) + '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) + '@firebase/app': 0.14.5 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.5) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) + '@firebase/app-compat': 0.5.5 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.11.0(@firebase/app@0.14.4) - '@firebase/auth-compat': 0.6.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) - '@firebase/data-connect': 0.3.11(@firebase/app@0.14.4) + '@firebase/auth': 1.11.1(@firebase/app@0.14.5) + '@firebase/auth-compat': 0.6.1(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) + '@firebase/data-connect': 0.3.11(@firebase/app@0.14.5) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.4) - '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) - '@firebase/functions': 0.13.1(@firebase/app@0.14.4) - '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) - '@firebase/installations': 0.6.19(@firebase/app@0.14.4) - '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) - '@firebase/messaging': 0.12.23(@firebase/app@0.14.4) - '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) - '@firebase/performance': 0.7.9(@firebase/app@0.14.4) - '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.4) - '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.4)(@firebase/app@0.14.4) - '@firebase/storage': 0.14.0(@firebase/app@0.14.4) - '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.4)(@firebase/app-types@0.9.3)(@firebase/app@0.14.4) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.5) + '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) + '@firebase/functions': 0.13.1(@firebase/app@0.14.5) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) + '@firebase/installations': 0.6.19(@firebase/app@0.14.5) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.5) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) + '@firebase/performance': 0.7.9(@firebase/app@0.14.5) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.5) + '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) + '@firebase/storage': 0.14.0(@firebase/app@0.14.5) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) '@firebase/util': 1.13.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -15278,6 +15319,8 @@ snapshots: jasmine-core@5.12.0: {} + jasmine-core@5.12.1: {} + jasmine-reporters@2.5.2: dependencies: '@xmldom/xmldom': 0.8.11 @@ -15877,6 +15920,10 @@ snapshots: dependencies: '@isaacs/brace-expansion': 5.0.0 + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -18107,7 +18154,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18116,7 +18163,7 @@ snapshots: rollup: 4.52.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18125,10 +18172,10 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.6(@types/node@24.9.1)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.6 - '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.6 '@vitest/runner': 4.0.6 '@vitest/snapshot': 4.0.6 @@ -18145,10 +18192,10 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.9.2 jsdom: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index d00e45f58e22..628787497a4f 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#2c7cbe9d4cb4f5036601c9268ab3eafa0610fcac", - "@angular/cdk": "github:angular/cdk-builds#a6c89b8662fadbd3f3df8b04bd4605e35fdb311f", - "@angular/common": "github:angular/common-builds#6d1ebbf43ca9cb5eb98b801504922361eaa34b48", - "@angular/compiler": "github:angular/compiler-builds#566630def236febebfd803a03893af9d10d1a5dd", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#96dd65f9a64e2d37184958230c0345dfe1f941b1", - "@angular/core": "github:angular/core-builds#f3d636afefc784db7c689f3c227df16b0dbbb035", - "@angular/forms": "github:angular/forms-builds#b565be187e532b1b6d3300acb9c7f04162198086", - "@angular/language-service": "github:angular/language-service-builds#d2d5283327e0fce47de5691ea8ace50af0152d55", - "@angular/localize": "github:angular/localize-builds#fa69ebe5c25d2a87a1338841351578f1ce907ea8", - "@angular/material": "github:angular/material-builds#0a12abd740fff2fc4fa5ef5ca990eb3a2b5c4209", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f85b223ff8532681823e71287bb85f327667ca39", - "@angular/platform-browser": "github:angular/platform-browser-builds#5dcc143322d29440cf79c89161d3bac0b35bc746", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#f69537b8c9588a5f4d84e805c5d581424ad29815", - "@angular/platform-server": "github:angular/platform-server-builds#6630e171cff3812a167cc81aaee89e3bee96b528", - "@angular/router": "github:angular/router-builds#f36e84ea83289a403c920c225ff8e5069fe5f9b1", - "@angular/service-worker": "github:angular/service-worker-builds#c63eac2b3fc9998599003cad6f9090d7678fb7d3" + "@angular/animations": "github:angular/animations-builds#7547f3a3db1513cc1922c1af86fc04d01223f863", + "@angular/cdk": "github:angular/cdk-builds#0097a8fee9403000bc60b1a4c531d10875f71848", + "@angular/common": "github:angular/common-builds#65fe992cd8d7a5777487111b74bb553d32a92eff", + "@angular/compiler": "github:angular/compiler-builds#f128f40d82ca26deb0ace4cd47c8cf038e08968d", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#85d1ac8d2866ce5ba24619fa8e72726a56a0fc4b", + "@angular/core": "github:angular/core-builds#14103ef825a5a76bbe98957cbc6ce95c0e35abc8", + "@angular/forms": "github:angular/forms-builds#083b52bdb0c9becc785169424c7f94e194b3fba3", + "@angular/language-service": "github:angular/language-service-builds#70d6e527e626cc1d6a8d157d1036521b3c7e4d01", + "@angular/localize": "github:angular/localize-builds#f45aee420f840a4bbfa21a0cb59c50a65c67fc80", + "@angular/material": "github:angular/material-builds#2475f0d90005dca37a56d2dce0868a3ffe498513", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#50aa5ad97fb7738bc8755f014bfa2af72028ad74", + "@angular/platform-browser": "github:angular/platform-browser-builds#975983243b9b3a78c85a342d74022ed4b0677590", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#1d48689d07fd2a5396fdc27e38ae8a2f58ddca77", + "@angular/platform-server": "github:angular/platform-server-builds#e7401d395789da22ac3f84befdcc4815b2543a00", + "@angular/router": "github:angular/router-builds#63f1a11129243a9f1cdefdeef8b002ba89cc85c2", + "@angular/service-worker": "github:angular/service-worker-builds#943f0abd9f515ecd0be95ad3cbbf08e3a3ea4b31" } } From 1732e926d8332eb2f7f5a092caf77f32b2aa9eb0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 4 Nov 2025 10:05:56 +0000 Subject: [PATCH 1724/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 534 +++++++++++++++++++++++++------------------------ 1 file changed, 270 insertions(+), 264 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 953af76fb2ba..dff9617cbec5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,7 +105,7 @@ importers: version: 2.29.1 '@types/express': specifier: ~5.0.1 - version: 5.0.4 + version: 5.0.5 '@types/http-proxy': specifier: ^1.17.4 version: 1.17.17 @@ -132,7 +132,7 @@ importers: version: 4.17.20 '@types/node': specifier: ^22.12.0 - version: 22.18.12 + version: 22.19.0 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -219,7 +219,7 @@ importers: version: 5.12.0 jasmine-core: specifier: ~5.12.0 - version: 5.12.0 + version: 5.12.1 jasmine-reporters: specifier: ^2.5.2 version: 2.5.2 @@ -240,7 +240,7 @@ importers: version: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.12.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) + version: 2.1.0(jasmine-core@5.12.1)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -276,7 +276,7 @@ importers: version: 6.2.3(rollup@4.52.5)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.18.12)(rollup@4.52.5) + version: 0.5.4(@types/node@22.19.0)(rollup@4.52.5) semver: specifier: 7.7.3 version: 7.7.3 @@ -285,10 +285,10 @@ importers: version: 0.5.21 tar: specifier: ^7.0.0 - version: 7.5.1 + version: 7.5.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.18.12)(typescript@5.9.3) + version: 10.9.2(@types/node@22.19.0)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -333,16 +333,16 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.6 - version: 4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 - version: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -433,7 +433,7 @@ importers: version: link:../ssr jsdom: specifier: 27.1.0 - version: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -448,7 +448,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -1100,8 +1100,8 @@ packages: '@asamuzakjp/css-color@4.0.5': resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} - '@asamuzakjp/dom-selector@6.7.3': - resolution: {integrity: sha512-kiGFeY+Hxf5KbPpjRLf+ffWbkos1aGo8MBfd91oxS3O57RgU3XhZrt/6UzoVF9VMpWbC3v87SRc9jxGrc9qHtQ==} + '@asamuzakjp/dom-selector@6.7.4': + resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -1671,11 +1671,9 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.14': - resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} + '@csstools/css-syntax-patches-for-csstree@1.0.15': + resolution: {integrity: sha512-q0p6zkVq2lJnmzZVPR33doA51G7YOja+FBvRdp5ISIthL0MtFCgYHHhR563z9WFGxcOn0WfjSkPDJ5Qig3H3Sw==} engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} @@ -1689,11 +1687,11 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@emnapi/core@1.6.0': - resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + '@emnapi/core@1.7.0': + resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} - '@emnapi/runtime@1.6.0': - resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + '@emnapi/runtime@1.7.0': + resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -2667,16 +2665,16 @@ packages: resolution: {integrity: sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA==} engines: {node: '>= 20'} - '@octokit/auth-oauth-app@9.0.2': - resolution: {integrity: sha512-vmjSHeuHuM+OxZLzOuoYkcY3OPZ8erJ5lfswdTmm+4XiAKB5PmCk70bA1is4uwSl/APhRVAv4KHsgevWfEKIPQ==} + '@octokit/auth-oauth-app@9.0.3': + resolution: {integrity: sha512-+yoFQquaF8OxJSxTb7rnytBIC2ZLbLqA/yb71I4ZXT9+Slw4TziV9j/kyGhUFRRTF2+7WlnIWsePZCWHs+OGjg==} engines: {node: '>= 20'} - '@octokit/auth-oauth-device@8.0.2': - resolution: {integrity: sha512-KW7Ywrz7ei7JX+uClWD2DN1259fnkoKuVdhzfpQ3/GdETaCj4Tx0IjvuJrwhP/04OhcMu5yR6tjni0V6LBihdw==} + '@octokit/auth-oauth-device@8.0.3': + resolution: {integrity: sha512-zh2W0mKKMh/VWZhSqlaCzY7qFyrgd9oTWmTmHaXnHNeQRCZr/CXy2jCgHo4e4dJVTiuxP5dLa0YM5p5QVhJHbw==} engines: {node: '>= 20'} - '@octokit/auth-oauth-user@6.0.1': - resolution: {integrity: sha512-vlKsL1KUUPvwXpv574zvmRd+/4JiDFXABIZNM39+S+5j2kODzGgjk7w5WtiQ1x24kRKNaE7v9DShNbw43UA3Hw==} + '@octokit/auth-oauth-user@6.0.2': + resolution: {integrity: sha512-qLoPPc6E6GJoz3XeDG/pnDhJpTkODTGG4kY0/Py154i/I003O9NazkrwJwRuzgCalhzyIeWQ+6MDvkUmKXjg/A==} engines: {node: '>= 20'} '@octokit/auth-token@6.0.0': @@ -2687,8 +2685,8 @@ packages: resolution: {integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.1': - resolution: {integrity: sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==} + '@octokit/endpoint@11.0.2': + resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==} engines: {node: '>= 20'} '@octokit/graphql-schema@15.26.0': @@ -2702,8 +2700,8 @@ packages: resolution: {integrity: sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ==} engines: {node: '>= 20'} - '@octokit/oauth-methods@6.0.1': - resolution: {integrity: sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q==} + '@octokit/oauth-methods@6.0.2': + resolution: {integrity: sha512-HiNOO3MqLxlt5Da5bZbLV8Zarnphi4y9XehrbaFMkcoJ+FL7sMxH/UlUsCVxpddVu4qvNDrBdaTVE2o4ITK8ng==} engines: {node: '>= 20'} '@octokit/openapi-types@26.0.0': @@ -2746,16 +2744,20 @@ packages: resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} engines: {node: '>= 20'} - '@octokit/request@10.0.5': - resolution: {integrity: sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==} + '@octokit/request-error@7.0.2': + resolution: {integrity: sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==} + engines: {node: '>= 20'} + + '@octokit/request@10.0.6': + resolution: {integrity: sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==} engines: {node: '>= 20'} '@octokit/rest@22.0.0': resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} engines: {node: '>= 20'} - '@octokit/types@15.0.1': - resolution: {integrity: sha512-sdiirM93IYJ9ODDCBgmRPIboLbSkpLa5i+WLuXH8b8Atg+YMLAyLvDDhNWLV4OYd08tlvYfVm/dw88cqHWtw1Q==} + '@octokit/types@15.0.2': + resolution: {integrity: sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==} '@octokit/types@16.0.0': resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} @@ -3385,11 +3387,11 @@ packages: '@types/express-serve-static-core@5.1.0': resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} - '@types/express@4.17.24': - resolution: {integrity: sha512-Mbrt4SRlXSTWryOnHAh2d4UQ/E7n9lZyGSi6KgX+4hkuL9soYbLOVXVhnk/ODp12YsGc95f4pOvqywJ6kngUwg==} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - '@types/express@5.0.4': - resolution: {integrity: sha512-g64dbryHk7loCIrsa0R3shBnEu5p6LPJ09bu9NG58+jz+cRUjFrc3Bz0kNQ7j9bXeCsrRDvNET1G54P/GJkAyA==} + '@types/express@5.0.5': + resolution: {integrity: sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==} '@types/folder-hash@4.0.4': resolution: {integrity: sha512-c+PwHm51Dw3fXM8SDK+93PO3oXdk4XNouCCvV67lj4aijRkZz5g67myk+9wqWWnyv3go6q96hT6ywcd3XtoZiQ==} @@ -3466,8 +3468,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.18.12': - resolution: {integrity: sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==} + '@types/node@22.19.0': + resolution: {integrity: sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==} '@types/node@24.9.2': resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==} @@ -3538,6 +3540,9 @@ packages: '@types/serve-static@1.15.10': resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -4193,8 +4198,8 @@ packages: bare-events: optional: true - bare-url@2.3.1: - resolution: {integrity: sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==} + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -4203,8 +4208,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.20: - resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} + baseline-browser-mapping@2.8.23: + resolution: {integrity: sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ==} hasBin: true basic-ftp@5.0.5: @@ -4375,8 +4380,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + caniuse-lite@1.0.30001753: + resolution: {integrity: sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4401,8 +4406,8 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chardet@2.1.0: - resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} checkpoint-stream@0.1.2: resolution: {integrity: sha512-eYXIcydL3mPjjEVLxHdi1ISgTwmxGJZ8vyJ3lYVvFTDRyTOZMTbKZdRJqiA7Gi1rPcwOyyzcrZmGLL8ff7e69w==} @@ -4904,8 +4909,8 @@ packages: devtools-protocol@0.0.1045489: resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} - devtools-protocol@0.0.1508733: - resolution: {integrity: sha512-QJ1R5gtck6nDcdM+nlsaJXcelPEI7ZxSMw1ujHpO1c4+9l+Nue5qlebi9xO1Z2MGr92bFOQTW7/rrheh5hHxDg==} + devtools-protocol@0.0.1521046: + resolution: {integrity: sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==} di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} @@ -4981,8 +4986,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.240: - resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + electron-to-chromium@1.5.244: + resolution: {integrity: sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5506,12 +5511,12 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gaxios@7.1.2: - resolution: {integrity: sha512-/Szrn8nr+2TsQT1Gp8iIe/BEytJmbyfrbFh419DfGQSkEgNEhbPi7JRJuughjkTzPWgU9gBQf5AVu3DbHt0OXA==} + gaxios@7.1.3: + resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} engines: {node: '>=18'} - gcp-metadata@8.1.1: - resolution: {integrity: sha512-dTCcAe9fRQf06ELwel6lWWFrEbstwjUBYEhr5VRGoC+iPDZQucHppCowaIp8b8v92tU1G4X4H3b/Y6zXZxkMsQ==} + gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} engines: {node: '>=18'} generator-function@2.0.1: @@ -5619,16 +5624,16 @@ packages: resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} engines: {node: '>=0.10.0'} - google-auth-library@10.4.2: - resolution: {integrity: sha512-EKiQasw6aEdxSovPEf1oBxCEvxjFamZ6MPaVOSPXZMnqKFLo+rrYjHyjKlFfZcXiKi9qAH6cutr5WRqqa1jKhg==} + google-auth-library@10.5.0: + resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} engines: {node: '>=18'} - google-gax@5.0.4: - resolution: {integrity: sha512-HmQ6zIYBs2EikTk+kjeHmtHprNTEpsnVaKONw9cwZZwUNCkUb+D5RYrJpCxyjdvIDvJp3wLbVReolJLRZRms1g==} + google-gax@5.0.5: + resolution: {integrity: sha512-VuC6nVnPVfo/M1WudLoS4Y3dTepVndZatUmeb0nUNmfzft6mKSy8ffDh4h5qxR7L9lslDxNpWPYsuPrFboOmTw==} engines: {node: '>=18'} - google-logging-utils@1.1.1: - resolution: {integrity: sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==} + google-logging-utils@1.1.2: + resolution: {integrity: sha512-YsFPGVgDFf4IzSwbwIR0iaFJQFmR5Jp7V1WuYSjuRgAm9yWqsMhKE9YPlL+wvFLnc/wMiFV4SQUD9Y/JMpxIxQ==} engines: {node: '>=14'} gopd@1.2.0: @@ -5651,8 +5656,8 @@ packages: peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} grpc-gcp@1.0.1: @@ -6242,9 +6247,6 @@ packages: jasmine-core@4.6.1: resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} - jasmine-core@5.12.0: - resolution: {integrity: sha512-QqO4pX33GEML5JoGQU6BM5NHKPgEsg+TXp3jCIDek9MbfEp2JUYEFBo9EF1+hegWy/bCHS1m5nP0BOp18G6rVA==} - jasmine-core@5.12.1: resolution: {integrity: sha512-P/UbRZ0LKwXe7wEpwDheuhunPwITn4oPALhrJEQJo6756EwNGnsK/TSQrWojBB4cQDQ+VaxWYws9tFNDuiMh2Q==} @@ -6443,8 +6445,8 @@ packages: resolution: {integrity: sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - launch-editor@2.11.1: - resolution: {integrity: sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==} + launch-editor@2.12.0: + resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} less-loader@12.3.0: resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} @@ -6646,8 +6648,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.49.0: - resolution: {integrity: sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==} + memfs@4.50.0: + resolution: {integrity: sha512-N0LUYQMUA1yS5tJKmMtU9yprPm6ZIg24yr/OVv/7t6q0kKDIho4cBbXRi1XKttUmNYDYgF/q45qrKE/UhGO0CA==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -6731,10 +6733,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} - engines: {node: 20 || >=22} - minimatch@10.1.1: resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} @@ -6944,8 +6942,8 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - node-releases@2.0.26: - resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} @@ -6992,8 +6990,8 @@ packages: resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} engines: {node: ^20.17.0 || >=22.9.0} - npm-registry-fetch@19.0.0: - resolution: {integrity: sha512-DFxSAemHUwT/POaXAOY4NJmEWBPB0oKbwD6FFDE9hnt1nORkt/FXvgjD4hQjoKoHw9u0Ezws9SPXwV7xE/Gyww==} + npm-registry-fetch@19.1.0: + resolution: {integrity: sha512-xyZLfs7TxPu/WKjHUs0jZOPinzBAI32kEUel6za0vH+JUTnFZ5zbHI1ZoGZRDm6oMjADtrli6FxtMlk/5ABPNw==} engines: {node: ^20.17.0 || >=22.9.0} npm-run-path@4.0.1: @@ -7419,8 +7417,8 @@ packages: resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} engines: {node: '>= 8'} - proto3-json-serializer@3.0.3: - resolution: {integrity: sha512-iUi7jGLuECChuoUwtvf6eXBDcFXTHAt5GM6ckvtD3RqD+j2wW0GW6WndPOu9IWeUk7n933lzrskcNMHJy2tFSw==} + proto3-json-serializer@3.0.4: + resolution: {integrity: sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==} engines: {node: '>=18'} protobufjs@7.5.4: @@ -7470,8 +7468,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.26.1: - resolution: {integrity: sha512-YHZdo3chJ5b9pTYVnuDuoI3UX/tWJFJyRZvkLbThGy6XeHWC+0KI8iN0UMCkvde5l/YOk3huiVZ/PvwgSbwdrA==} + puppeteer-core@24.27.0: + resolution: {integrity: sha512-yubwj2XXmTM3wRIpbhO5nCjbByPgpFHlgrsD4IK+gMPqO7/a5FfnoSXDKjmqi8A2M1Ewusz0rTI/r+IN0GU0MA==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -7676,6 +7674,10 @@ 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 + rolldown@1.0.0-beta.46: resolution: {integrity: sha512-FYUbq0StVHOjkR/hEJ667Pup3ugeB9odBcbmxU5il9QfT9X2t/FPhkqFYQthbYxD2bKnQyO+2vHTgnmOHwZdeA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8204,8 +8206,8 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.5.1: - resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} + tar@7.5.2: + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} teeny-request@10.1.0: @@ -9333,7 +9335,7 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.2 - '@asamuzakjp/dom-selector@6.7.3': + '@asamuzakjp/dom-selector@6.7.4': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -10080,9 +10082,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': - dependencies: - postcss: 8.5.6 + '@csstools/css-syntax-patches-for-csstree@1.0.15': {} '@csstools/css-tokenizer@3.0.4': {} @@ -10109,13 +10109,13 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@emnapi/core@1.6.0': + '@emnapi/core@1.7.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.6.0': + '@emnapi/runtime@1.7.0': dependencies: tslib: 2.8.1 optional: true @@ -10584,7 +10584,7 @@ snapshots: arrify: 2.0.1 duplexify: 4.1.3 extend: 3.0.2 - google-auth-library: 10.4.2(supports-color@10.2.2) + google-auth-library: 10.5.0(supports-color@10.2.2) html-entities: 2.6.0 retry-request: 8.0.2(supports-color@10.2.2) teeny-request: 10.1.0(supports-color@10.2.2) @@ -10619,8 +10619,8 @@ snapshots: duplexify: 4.1.3 events-intercept: 2.0.0 extend: 3.0.2 - google-auth-library: 10.4.2(supports-color@10.2.2) - google-gax: 5.0.4(supports-color@10.2.2) + google-auth-library: 10.5.0(supports-color@10.2.2) + google-gax: 5.0.5(supports-color@10.2.2) grpc-gcp: 1.0.1(protobufjs@7.5.4) is: 3.3.2 lodash.snakecase: 4.1.1 @@ -10638,7 +10638,7 @@ snapshots: '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: - google-auth-library: 10.4.2(supports-color@10.2.2) + google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: '@modelcontextprotocol/sdk': 1.20.2 @@ -10655,7 +10655,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@grpc/proto-loader@0.7.15': dependencies: @@ -10734,7 +10734,7 @@ snapshots: '@inquirer/external-editor@1.0.2(@types/node@24.9.2)': dependencies: - chardet: 2.1.0 + chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: '@types/node': 24.9.2 @@ -11046,8 +11046,8 @@ snapshots: '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.6.0 - '@emnapi/runtime': 1.6.0 + '@emnapi/core': 1.7.0 + '@emnapi/runtime': 1.7.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -11138,36 +11138,36 @@ snapshots: '@octokit/auth-app@8.1.1': dependencies: - '@octokit/auth-oauth-app': 9.0.2 - '@octokit/auth-oauth-user': 6.0.1 - '@octokit/request': 10.0.5 + '@octokit/auth-oauth-app': 9.0.3 + '@octokit/auth-oauth-user': 6.0.2 + '@octokit/request': 10.0.6 '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.2 universal-user-agent: 7.0.3 - '@octokit/auth-oauth-app@9.0.2': + '@octokit/auth-oauth-app@9.0.3': dependencies: - '@octokit/auth-oauth-device': 8.0.2 - '@octokit/auth-oauth-user': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.1 + '@octokit/auth-oauth-device': 8.0.3 + '@octokit/auth-oauth-user': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 - '@octokit/auth-oauth-device@8.0.2': + '@octokit/auth-oauth-device@8.0.3': dependencies: - '@octokit/oauth-methods': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.1 + '@octokit/oauth-methods': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 - '@octokit/auth-oauth-user@6.0.1': + '@octokit/auth-oauth-user@6.0.2': dependencies: - '@octokit/auth-oauth-device': 8.0.2 - '@octokit/oauth-methods': 6.0.1 - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.1 + '@octokit/auth-oauth-device': 8.0.3 + '@octokit/oauth-methods': 6.0.2 + '@octokit/request': 10.0.6 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 '@octokit/auth-token@6.0.0': {} @@ -11176,36 +11176,36 @@ snapshots: dependencies: '@octokit/auth-token': 6.0.0 '@octokit/graphql': 9.0.2 - '@octokit/request': 10.0.5 + '@octokit/request': 10.0.6 '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.1': + '@octokit/endpoint@11.0.2': dependencies: - '@octokit/types': 15.0.1 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 '@octokit/graphql-schema@15.26.0': dependencies: - graphql: 16.11.0 - graphql-tag: 2.12.6(graphql@16.11.0) + graphql: 16.12.0 + graphql-tag: 2.12.6(graphql@16.12.0) '@octokit/graphql@9.0.2': dependencies: - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.1 + '@octokit/request': 10.0.6 + '@octokit/types': 15.0.2 universal-user-agent: 7.0.3 '@octokit/oauth-authorization-url@8.0.0': {} - '@octokit/oauth-methods@6.0.1': + '@octokit/oauth-methods@6.0.2': dependencies: '@octokit/oauth-authorization-url': 8.0.0 - '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.1 + '@octokit/request': 10.0.6 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 '@octokit/openapi-types@26.0.0': {} @@ -11214,7 +11214,7 @@ snapshots: '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.5)': dependencies: @@ -11228,7 +11228,7 @@ snapshots: '@octokit/plugin-rest-endpoint-methods@16.1.1(@octokit/core@7.0.5)': dependencies: '@octokit/core': 7.0.5 - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.5)': dependencies: @@ -11237,13 +11237,17 @@ snapshots: '@octokit/request-error@7.0.1': dependencies: - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 - '@octokit/request@10.0.5': + '@octokit/request-error@7.0.2': dependencies: - '@octokit/endpoint': 11.0.1 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.1 + '@octokit/types': 16.0.0 + + '@octokit/request@10.0.6': + dependencies: + '@octokit/endpoint': 11.0.2 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 @@ -11254,7 +11258,7 @@ snapshots: '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.5) '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.5) - '@octokit/types@15.0.1': + '@octokit/types@15.0.2': dependencies: '@octokit/openapi-types': 26.0.0 @@ -11664,7 +11668,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/babel__code-frame@7.0.6': {} @@ -11694,17 +11698,17 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/browser-sync@2.29.1': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.18.12 - '@types/serve-static': 1.15.10 + '@types/node': 22.19.0 + '@types/serve-static': 2.2.0 chokidar: 3.6.0 '@types/chai@5.2.3': @@ -11714,11 +11718,11 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -11726,11 +11730,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.7 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/content-disposition@0.5.9': {} @@ -11739,13 +11743,13 @@ snapshots: '@types/cookies@0.9.2': dependencies: '@types/connect': 3.4.38 - '@types/express': 5.0.4 + '@types/express': 5.0.5 '@types/keygrip': 1.0.6 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/cors@2.8.19': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/debounce@1.2.4': {} @@ -11753,7 +11757,7 @@ snapshots: '@types/duplexify@3.6.5': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/ejs@3.1.5': {} @@ -11773,26 +11777,26 @@ snapshots: '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 - '@types/express@4.17.24': + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.7 '@types/qs': 6.14.0 '@types/serve-static': 1.15.10 - '@types/express@5.0.4': + '@types/express@5.0.5': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 5.1.0 @@ -11802,11 +11806,11 @@ snapshots: '@types/git-raw-commits@5.0.1': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/http-assert@1.5.6': {} @@ -11814,7 +11818,7 @@ snapshots: '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/ini@4.1.1': {} @@ -11840,7 +11844,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -11860,13 +11864,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.9 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.25.12)': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 webpack: 5.102.1(esbuild@0.25.12) transitivePeerDependencies: - '@swc/core' @@ -11884,14 +11888,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 form-data: 4.0.4 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 - '@types/node@22.18.12': + '@types/node@22.19.0': dependencies: undici-types: 6.21.0 @@ -11903,7 +11907,7 @@ snapshots: '@types/npm-registry-fetch@8.0.9': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -11911,11 +11915,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/npm-registry-fetch': 8.0.9 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -11928,12 +11932,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/pumpify@1.4.5': dependencies: '@types/duplexify': 3.6.5 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/q@0.0.32': {} @@ -11947,7 +11951,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/retry@0.12.2': {} @@ -11958,46 +11962,51 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/send@1.2.1': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/serve-index@1.9.4': dependencies: - '@types/express': 5.0.4 + '@types/express': 5.0.5 '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/send': 0.17.6 + '@types/serve-static@2.2.0': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 22.19.0 + '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/stack-trace@0.0.33': {} '@types/watchpack@2.4.4': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 '@types/yargs-parser@21.0.3': {} @@ -12009,7 +12018,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 optional: true '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': @@ -12269,7 +12278,7 @@ snapshots: dependencies: vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.6 @@ -12282,7 +12291,7 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12400,7 +12409,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.26.1(bufferutil@4.0.9) + puppeteer-core: 24.27.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -12825,7 +12834,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.27.0 - caniuse-lite: 1.0.30001751 + caniuse-lite: 1.0.30001753 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -12881,7 +12890,7 @@ snapshots: bare-events: 2.8.1 bare-path: 3.0.0 bare-stream: 2.7.0(bare-events@2.8.1) - bare-url: 2.3.1 + bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller @@ -12906,7 +12915,7 @@ snapshots: - react-native-b4a optional: true - bare-url@2.3.1: + bare-url@2.3.2: dependencies: bare-path: 3.0.0 optional: true @@ -12915,7 +12924,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.20: {} + baseline-browser-mapping@2.8.23: {} basic-ftp@5.0.5: {} @@ -13077,10 +13086,10 @@ snapshots: browserslist@4.27.0: dependencies: - baseline-browser-mapping: 2.8.20 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.240 - node-releases: 2.0.26 + baseline-browser-mapping: 2.8.23 + caniuse-lite: 1.0.30001753 + electron-to-chromium: 1.5.244 + node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.27.0) browserstack@1.6.1: @@ -13129,7 +13138,7 @@ snapshots: minipass-pipeline: 1.2.4 p-map: 7.0.3 ssri: 12.0.0 - tar: 7.5.1 + tar: 7.5.2 unique-filename: 4.0.0 cacache@20.0.1: @@ -13186,7 +13195,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001751: {} + caniuse-lite@1.0.30001753: {} caseless@0.12.0: {} @@ -13211,7 +13220,7 @@ snapshots: chalk@5.6.2: {} - chardet@2.1.0: {} + chardet@2.1.1: {} checkpoint-stream@0.1.2: dependencies: @@ -13243,7 +13252,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13252,9 +13261,9 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@10.5.1(devtools-protocol@0.0.1508733): + chromium-bidi@10.5.1(devtools-protocol@0.0.1521046): dependencies: - devtools-protocol: 0.0.1508733 + devtools-protocol: 0.0.1521046 mitt: 3.0.1 zod: 3.25.76 @@ -13527,13 +13536,11 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.2(postcss@8.5.6): + cssstyle@5.3.2: dependencies: '@asamuzakjp/css-color': 4.0.5 - '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) + '@csstools/css-syntax-patches-for-csstree': 1.0.15 css-tree: 3.1.0 - transitivePeerDependencies: - - postcss custom-event@1.0.1: {} @@ -13693,7 +13700,7 @@ snapshots: devtools-protocol@0.0.1045489: {} - devtools-protocol@0.0.1508733: {} + devtools-protocol@0.0.1521046: {} di@0.0.1: {} @@ -13783,7 +13790,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.240: {} + electron-to-chromium@1.5.244: {} emoji-regex@10.6.0: {} @@ -13822,7 +13829,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.18.12 + '@types/node': 22.19.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14265,7 +14272,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14524,18 +14531,19 @@ snapshots: functions-have-names@1.2.3: {} - gaxios@7.1.2(supports-color@10.2.2): + gaxios@7.1.3(supports-color@10.2.2): dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) node-fetch: 3.3.2 + rimraf: 5.0.10 transitivePeerDependencies: - supports-color - gcp-metadata@8.1.1(supports-color@10.2.2): + gcp-metadata@8.1.2(supports-color@10.2.2): dependencies: - gaxios: 7.1.2(supports-color@10.2.2) - google-logging-utils: 1.1.1 + gaxios: 7.1.3(supports-color@10.2.2) + google-logging-utils: 1.1.2 json-bigint: 1.0.0 transitivePeerDependencies: - supports-color @@ -14631,7 +14639,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 - minimatch: 10.0.3 + minimatch: 10.1.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.0 @@ -14672,34 +14680,35 @@ snapshots: pify: 2.3.0 pinkie-promise: 2.0.1 - google-auth-library@10.4.2(supports-color@10.2.2): + google-auth-library@10.5.0(supports-color@10.2.2): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.2(supports-color@10.2.2) - gcp-metadata: 8.1.1(supports-color@10.2.2) - google-logging-utils: 1.1.1 + gaxios: 7.1.3(supports-color@10.2.2) + gcp-metadata: 8.1.2(supports-color@10.2.2) + google-logging-utils: 1.1.2 gtoken: 8.0.0(supports-color@10.2.2) jws: 4.0.0 transitivePeerDependencies: - supports-color - google-gax@5.0.4(supports-color@10.2.2): + google-gax@5.0.5(supports-color@10.2.2): dependencies: '@grpc/grpc-js': 1.14.0 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 - google-auth-library: 10.4.2(supports-color@10.2.2) - google-logging-utils: 1.1.1 + google-auth-library: 10.5.0(supports-color@10.2.2) + google-logging-utils: 1.1.2 node-fetch: 3.3.2 object-hash: 3.0.0 - proto3-json-serializer: 3.0.3 + proto3-json-serializer: 3.0.4 protobufjs: 7.5.4 retry-request: 8.0.2(supports-color@10.2.2) + rimraf: 5.0.10 transitivePeerDependencies: - supports-color - google-logging-utils@1.1.1: {} + google-logging-utils@1.1.2: {} gopd@1.2.0: {} @@ -14722,12 +14731,12 @@ snapshots: graphemer@1.4.0: {} - graphql-tag@2.12.6(graphql@16.11.0): + graphql-tag@2.12.6(graphql@16.12.0): dependencies: - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - graphql@16.11.0: {} + graphql@16.12.0: {} grpc-gcp@1.0.1(protobufjs@7.5.4): dependencies: @@ -14736,7 +14745,7 @@ snapshots: gtoken@8.0.0(supports-color@10.2.2): dependencies: - gaxios: 7.1.2(supports-color@10.2.2) + gaxios: 7.1.3(supports-color@10.2.2) jws: 4.0.0 transitivePeerDependencies: - supports-color @@ -14869,7 +14878,7 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.24): + http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: '@types/http-proxy': 1.17.17 http-proxy: 1.18.1(debug@4.4.3) @@ -14877,7 +14886,7 @@ snapshots: is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.24 + '@types/express': 4.17.25 transitivePeerDependencies: - debug @@ -14968,7 +14977,7 @@ snapshots: ignore-walk@8.0.0: dependencies: - minimatch: 10.0.3 + minimatch: 10.1.1 ignore@5.3.2: {} @@ -15317,8 +15326,6 @@ snapshots: jasmine-core@4.6.1: {} - jasmine-core@5.12.0: {} - jasmine-core@5.12.1: {} jasmine-reporters@2.5.2: @@ -15339,13 +15346,13 @@ snapshots: jasmine@5.12.0: dependencies: glob: 10.4.5 - jasmine-core: 5.12.0 + jasmine-core: 5.12.1 jasminewd2@2.2.0: {} jest-worker@27.5.1: dependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15363,11 +15370,11 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): + jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@acemir/cssom': 0.9.19 - '@asamuzakjp/dom-selector': 6.7.3 - cssstyle: 5.3.2(postcss@8.5.6) + '@asamuzakjp/dom-selector': 6.7.4 + cssstyle: 5.3.2 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -15387,7 +15394,6 @@ snapshots: xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - - postcss - supports-color - utf-8-validate @@ -15502,9 +15508,9 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.12.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.12.1)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): dependencies: - jasmine-core: 5.12.0 + jasmine-core: 5.12.1 karma: 6.4.4(bufferutil@4.0.9) karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) @@ -15613,7 +15619,7 @@ snapshots: transitivePeerDependencies: - supports-color - launch-editor@2.11.1: + launch-editor@2.12.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 @@ -15856,7 +15862,7 @@ snapshots: media-typer@1.1.0: {} - memfs@4.49.0: + memfs@4.50.0: dependencies: '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -15916,10 +15922,6 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.0.3: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -16129,13 +16131,13 @@ snapshots: nopt: 8.1.0 proc-log: 5.0.0 semver: 7.7.3 - tar: 7.5.1 + tar: 7.5.2 tinyglobby: 0.2.15 which: 5.0.0 transitivePeerDependencies: - supports-color - node-releases@2.0.26: {} + node-releases@2.0.27: {} nopt@8.1.0: dependencies: @@ -16178,7 +16180,7 @@ snapshots: npm-package-arg: 13.0.1 semver: 7.7.3 - npm-registry-fetch@19.0.0: + npm-registry-fetch@19.1.0: dependencies: '@npmcli/redact': 3.2.2 jsonparse: 1.3.1 @@ -16393,12 +16395,12 @@ snapshots: npm-package-arg: 13.0.1 npm-packlist: 10.0.3 npm-pick-manifest: 11.0.3 - npm-registry-fetch: 19.0.0 + npm-registry-fetch: 19.1.0 proc-log: 5.0.0 promise-retry: 2.0.1 sigstore: 4.0.0 ssri: 12.0.0 - tar: 7.5.1 + tar: 7.5.2 transitivePeerDependencies: - supports-color @@ -16619,7 +16621,7 @@ snapshots: propagate@2.0.1: {} - proto3-json-serializer@3.0.3: + proto3-json-serializer@3.0.4: dependencies: protobufjs: 7.5.4 @@ -16635,7 +16637,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.12 + '@types/node': 22.19.0 long: 5.3.2 protractor@7.0.0: @@ -16723,12 +16725,12 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.26.1(bufferutil@4.0.9): + puppeteer-core@24.27.0(bufferutil@4.0.9): dependencies: '@puppeteer/browsers': 2.10.12 - chromium-bidi: 10.5.1(devtools-protocol@0.0.1508733) + chromium-bidi: 10.5.1(devtools-protocol@0.0.1521046) debug: 4.4.3(supports-color@10.2.2) - devtools-protocol: 0.0.1508733 + devtools-protocol: 0.0.1521046 typed-query-selector: 2.12.0 webdriver-bidi-protocol: 0.3.8 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -16996,6 +16998,10 @@ snapshots: dependencies: glob: 7.2.3 + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + rolldown@1.0.0-beta.46: dependencies: '@oxc-project/types': 0.96.0 @@ -17030,12 +17036,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.18.12)(rollup@4.52.5): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.52.5): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.52.5) rollup: 4.52.5 optionalDependencies: - '@types/node': 22.18.12 + '@types/node': 22.19.0 rollup@4.52.5: dependencies: @@ -17711,7 +17717,7 @@ snapshots: - bare-abort-controller - react-native-b4a - tar@7.5.1: + tar@7.5.2: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -17845,14 +17851,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.18.12)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.19.0)(typescript@5.9.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': 22.18.12 + '@types/node': 22.19.0 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18172,7 +18178,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.6 '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) @@ -18196,7 +18202,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.2 - jsdom: 27.1.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + jsdom: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less @@ -18263,7 +18269,7 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.12)): dependencies: colorette: 2.0.20 - memfs: 4.49.0 + memfs: 4.50.0 mime-types: 3.0.1 on-finished: 2.4.1 range-parser: 1.2.1 @@ -18275,7 +18281,7 @@ snapshots: dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.24 + '@types/express': 4.17.25 '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.10 @@ -18289,9 +18295,9 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.24) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.1 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 From 7e724d7c0f9758542a67be15fcd4b6595836cf9b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:33:09 -0500 Subject: [PATCH 1725/2162] refactor(@schematics/angular): flatten `transformSpyCallInspection` logic Refactors the `transformSpyCallInspection` function in the Jasmine to Vitest schematic to improve readability and reduce nesting. The previous implementation used a deeply nested `if` condition to handle various spy call inspection patterns. This change inverts the primary `if` condition into a guard clause, allowing the function to exit early if the node does not match the expected type. This flattens the overall structure of the function, making the main logic more prominent and easier to follow. --- .../transformers/jasmine-spy.ts | 194 ++++++++++-------- 1 file changed, 107 insertions(+), 87 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index 759a93301438..6d5a0dc16727 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -338,104 +338,124 @@ function createMockedSpyMockProperty(spyIdentifier: ts.Expression): ts.PropertyA return createPropertyAccess(mockedSpy, 'mock'); } -export function transformSpyCallInspection( +function transformMostRecentArgs( node: ts.Node, { sourceFile, reporter }: RefactorContext, ): ts.Node { - // mySpy.calls.mostRecent().args -> vi.mocked(mySpy).mock.lastCall + // Check 1: Is it a property access for `.args`? if ( - ts.isPropertyAccessExpression(node) && - ts.isIdentifier(node.name) && - node.name.text === 'args' + !ts.isPropertyAccessExpression(node) || + !ts.isIdentifier(node.name) || + node.name.text !== 'args' ) { - const mostRecentCall = node.expression; - if ( - ts.isCallExpression(mostRecentCall) && - ts.isPropertyAccessExpression(mostRecentCall.expression) - ) { - const mostRecentPae = mostRecentCall.expression; // mySpy.calls.mostRecent - if ( - ts.isIdentifier(mostRecentPae.name) && - mostRecentPae.name.text === 'mostRecent' && - ts.isPropertyAccessExpression(mostRecentPae.expression) - ) { - const spyIdentifier = getSpyIdentifierFromCalls(mostRecentPae.expression); - if (spyIdentifier) { - reporter.reportTransformation( - sourceFile, - node, - 'Transformed `spy.calls.mostRecent().args` to `vi.mocked(spy).mock.lastCall`.', - ); - const mockProperty = createMockedSpyMockProperty(spyIdentifier); + return node; + } - return createPropertyAccess(mockProperty, 'lastCall'); - } - } - } + // Check 2: Is the preceding expression a call expression? + const mostRecentCall = node.expression; + if ( + !ts.isCallExpression(mostRecentCall) || + !ts.isPropertyAccessExpression(mostRecentCall.expression) + ) { + return node; } - if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression)) { - const pae = node.expression; // e.g., mySpy.calls.count - const spyIdentifier = ts.isPropertyAccessExpression(pae.expression) - ? getSpyIdentifierFromCalls(pae.expression) - : undefined; - - if (spyIdentifier) { - const mockProperty = createMockedSpyMockProperty(spyIdentifier); - const callsProperty = createPropertyAccess(mockProperty, 'calls'); - - const callName = pae.name.text; - let newExpression: ts.Node | undefined; - let message: string | undefined; - - switch (callName) { - case 'any': - message = 'Transformed `spy.calls.any()` to a check on `mock.calls.length`.'; - newExpression = ts.factory.createBinaryExpression( - createPropertyAccess(callsProperty, 'length'), - ts.SyntaxKind.GreaterThanToken, - ts.factory.createNumericLiteral(0), - ); - break; - case 'count': - message = 'Transformed `spy.calls.count()` to `mock.calls.length`.'; - newExpression = createPropertyAccess(callsProperty, 'length'); - break; - case 'first': - message = 'Transformed `spy.calls.first()` to `mock.calls[0]`.'; - newExpression = ts.factory.createElementAccessExpression(callsProperty, 0); - break; - case 'all': - case 'allArgs': - message = `Transformed \`spy.calls.${callName}()\` to \`mock.calls\`.`; - newExpression = callsProperty; - break; - case 'argsFor': - message = 'Transformed `spy.calls.argsFor()` to `mock.calls[i]`.'; - newExpression = ts.factory.createElementAccessExpression( - callsProperty, - node.arguments[0], - ); - break; - case 'mostRecent': - if ( - !ts.isPropertyAccessExpression(node.parent) || - !ts.isIdentifier(node.parent.name) || - node.parent.name.text !== 'args' - ) { - const category = 'mostRecent-without-args'; - reporter.recordTodo(category); - addTodoComment(node, category); - } + // Check 3: Is it a call to `.mostRecent`? + const mostRecentPae = mostRecentCall.expression; + if ( + !ts.isIdentifier(mostRecentPae.name) || + mostRecentPae.name.text !== 'mostRecent' || + !ts.isPropertyAccessExpression(mostRecentPae.expression) + ) { + return node; + } - return node; - } + // Check 4: Can we get the spy identifier from `spy.calls`? + const spyIdentifier = getSpyIdentifierFromCalls(mostRecentPae.expression); + if (!spyIdentifier) { + return node; + } - if (newExpression && message) { - reporter.reportTransformation(sourceFile, node, message); + // If all checks pass, perform the transformation. + reporter.reportTransformation( + sourceFile, + node, + 'Transformed `spy.calls.mostRecent().args` to `vi.mocked(spy).mock.lastCall`.', + ); + const mockProperty = createMockedSpyMockProperty(spyIdentifier); - return newExpression; - } + return createPropertyAccess(mockProperty, 'lastCall'); +} + +export function transformSpyCallInspection(node: ts.Node, refactorCtx: RefactorContext): ts.Node { + const mostRecentArgsTransformed = transformMostRecentArgs(node, refactorCtx); + if (mostRecentArgsTransformed !== node) { + return mostRecentArgsTransformed; + } + + if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression)) { + return node; + } + + const { sourceFile, reporter } = refactorCtx; + + const pae = node.expression; // e.g., mySpy.calls.count + const spyIdentifier = ts.isPropertyAccessExpression(pae.expression) + ? getSpyIdentifierFromCalls(pae.expression) + : undefined; + + if (spyIdentifier) { + const mockProperty = createMockedSpyMockProperty(spyIdentifier); + const callsProperty = createPropertyAccess(mockProperty, 'calls'); + + const callName = pae.name.text; + let newExpression: ts.Node | undefined; + let message: string | undefined; + + switch (callName) { + case 'any': + message = 'Transformed `spy.calls.any()` to a check on `mock.calls.length`.'; + newExpression = ts.factory.createBinaryExpression( + createPropertyAccess(callsProperty, 'length'), + ts.SyntaxKind.GreaterThanToken, + ts.factory.createNumericLiteral(0), + ); + break; + case 'count': + message = 'Transformed `spy.calls.count()` to `mock.calls.length`.'; + newExpression = createPropertyAccess(callsProperty, 'length'); + break; + case 'first': + message = 'Transformed `spy.calls.first()` to `mock.calls[0]`.'; + newExpression = ts.factory.createElementAccessExpression(callsProperty, 0); + break; + case 'all': + case 'allArgs': + message = `Transformed \`spy.calls.${callName}()\` to \`mock.calls\`.`; + newExpression = callsProperty; + break; + case 'argsFor': + message = 'Transformed `spy.calls.argsFor()` to `mock.calls[i]`.'; + newExpression = ts.factory.createElementAccessExpression(callsProperty, node.arguments[0]); + break; + case 'mostRecent': + if ( + !ts.isPropertyAccessExpression(node.parent) || + !ts.isIdentifier(node.parent.name) || + node.parent.name.text !== 'args' + ) { + const category = 'mostRecent-without-args'; + reporter.recordTodo(category); + addTodoComment(node, category); + } + + return node; + } + + if (newExpression && message) { + reporter.reportTransformation(sourceFile, node, message); + + return newExpression; } } From 430dad515ab0b35d1df5396fb5e80f68d70d609d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:13:14 -0400 Subject: [PATCH 1726/2162] fix(@schematics/angular): align Karma project generation with unified unit-test builder Updates the application and ng-new schematics to correctly configure Karma-based projects. - The test target in the generated angular.json now uses the `@angular/build:unit-test` builder. - The builder options are simplified to only include runner: 'karma', as other settings are now handled by the unified builder. - Corresponding schematic tests have been updated to reflect these changes. --- .../schematics/angular/application/index.ts | 8 +- .../angular/application/index_spec.ts | 9 ++- .../schematics/angular/ng-new/index_spec.ts | 3 +- .../e2e/initialize/500-create-project.ts | 3 + tests/legacy-cli/e2e/tests/basic/test.ts | 9 ++- .../tests/test/test-code-coverage-exclude.ts | 10 ++- .../e2e/tests/test/test-environment.ts | 73 +++++++++++-------- .../legacy-cli/e2e/tests/test/test-scripts.ts | 4 +- .../e2e/tests/test/test-sourcemap.ts | 25 ++++++- tests/legacy-cli/e2e/utils/project.ts | 6 +- 10 files changed, 98 insertions(+), 52 deletions(-) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 295c65ba93ca..95c8380b0817 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -396,13 +396,9 @@ function addAppToWorkspaceFile(options: ApplicationOptions, appDir: string): Rul options: {}, } : { - builder: Builders.BuildKarma, + builder: Builders.BuildUnitTest, options: { - polyfills: options.zoneless ? undefined : ['zone.js', 'zone.js/testing'], - tsConfig: `${projectRoot}tsconfig.spec.json`, - inlineStyleLanguage, - assets: [{ 'glob': '**/*', 'input': `${projectRoot}public` }], - styles: [`${sourceRoot}/styles.${options.style}`], + runner: 'karma', }, }, }, diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index e1867b24cf41..5c56e2ca7a4d 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -448,10 +448,11 @@ describe('Application Schematic', () => { const config = JSON.parse(tree.readContent('/angular.json')); const prj = config.projects.foo; const testOpt = prj.architect.test; - expect(testOpt.builder).toEqual('@angular/build:karma'); - expect(testOpt.options.tsConfig).toEqual('tsconfig.spec.json'); - expect(testOpt.options.assets).toEqual([{ glob: '**/*', input: 'public' }]); - expect(testOpt.options.styles).toEqual(['src/styles.css']); + expect(testOpt.builder).toEqual('@angular/build:unit-test'); + expect(testOpt.options.runner).toEqual('karma'); + expect(testOpt.options.tsConfig).toBeUndefined(); + expect(testOpt.options.assets).toBeUndefined(); + expect(testOpt.options.styles).toBeUndefined(); }); it('should set the relative tsconfig paths', async () => { diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index 20306b875a9a..7f136908c747 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -169,7 +169,8 @@ describe('Ng New Schematic', () => { }, }, } = JSON.parse(tree.readContent('/bar/angular.json')); - expect(test.builder).toBe('@angular/build:karma'); + expect(test.builder).toBe('@angular/build:unit-test'); + expect(test.options).toEqual({ runner: 'karma' }); const { devDependencies } = JSON.parse(tree.readContent('/bar/package.json')); expect(devDependencies['karma']).toBeDefined(); diff --git a/tests/legacy-cli/e2e/initialize/500-create-project.ts b/tests/legacy-cli/e2e/initialize/500-create-project.ts index c6c0f8ef243d..b48c8733a9a5 100644 --- a/tests/legacy-cli/e2e/initialize/500-create-project.ts +++ b/tests/legacy-cli/e2e/initialize/500-create-project.ts @@ -64,6 +64,9 @@ export default async function () { const test = json['projects']['test-project']['architect']['test']; test.builder = '@angular-devkit/build-angular:karma'; + test.options ??= {}; + test.options.tsConfig = 'tsconfig.spec.json'; + delete test.options.runner; }); await updateJsonFile('tsconfig.json', (tsconfig) => { delete tsconfig.compilerOptions.esModuleInterop; diff --git a/tests/legacy-cli/e2e/tests/basic/test.ts b/tests/legacy-cli/e2e/tests/basic/test.ts index d9066946ae8e..50580581d442 100644 --- a/tests/legacy-cli/e2e/tests/basic/test.ts +++ b/tests/legacy-cli/e2e/tests/basic/test.ts @@ -1,5 +1,6 @@ import { ng } from '../../utils/process'; import { writeMultipleFiles } from '../../utils/fs'; +import { getGlobalVariable } from '../../utils/env'; export default async function () { // make sure both --watch=false work @@ -48,5 +49,11 @@ export default async function () { `, }); - await ng('test', '--watch=false', '--karma-config=karma.conf.bis.js'); + const isWebpack = !getGlobalVariable('argv')['esbuild']; + + if (isWebpack) { + await ng('test', '--watch=false', '--karma-config=karma.conf.bis.js'); + } else { + await ng('test', '--watch=false', '--runner-config=karma.conf.bis.js'); + } } 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 3533e6c8e9a9..808bcb59e2d9 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 @@ -1,10 +1,14 @@ +import { getGlobalVariable } from '../../utils/env'; import { expectFileToExist, rimraf } from '../../utils/fs'; import { silentNg } from '../../utils/process'; import { expectToFail } from '../../utils/utils'; export default async function () { + const isWebpack = !getGlobalVariable('argv')['esbuild']; + const coverageOptionName = isWebpack ? '--code-coverage' : '--coverage'; + // This test is already in build-angular, but that doesn't run on Windows. - await silentNg('test', '--no-watch', '--code-coverage'); + await silentNg('test', '--no-watch', coverageOptionName); await expectFileToExist('coverage/test-project/app.ts.html'); // Delete coverage directory await rimraf('coverage'); @@ -12,8 +16,8 @@ export default async function () { await silentNg( 'test', '--no-watch', - '--code-coverage', - `--code-coverage-exclude='src/**/app.ts'`, + coverageOptionName, + `${coverageOptionName}-exclude='src/**/app.ts'`, ); // Doesn't include excluded. diff --git a/tests/legacy-cli/e2e/tests/test/test-environment.ts b/tests/legacy-cli/e2e/tests/test/test-environment.ts index 1a4dadaa4317..1670cb246521 100644 --- a/tests/legacy-cli/e2e/tests/test/test-environment.ts +++ b/tests/legacy-cli/e2e/tests/test/test-environment.ts @@ -1,21 +1,23 @@ import { ng } from '../../utils/process'; import { writeFile, writeMultipleFiles } from '../../utils/fs'; import { updateJsonFile } from '../../utils/project'; +import { getGlobalVariable } from '../../utils/env'; + +export default async function () { + const isWebpack = !getGlobalVariable('argv')['esbuild']; -export default function () { // Tests run in 'dev' environment by default. - return ( - writeMultipleFiles({ - 'src/environment.prod.ts': ` + await writeMultipleFiles({ + 'src/environment.prod.ts': ` export const environment = { production: true };`, - 'src/environment.ts': ` + 'src/environment.ts': ` export const environment = { production: false }; `, - 'src/app/environment.spec.ts': ` + 'src/app/environment.spec.ts': ` import { environment } from '../environment'; describe('Test environment', () => { @@ -24,29 +26,33 @@ export default function () { }); }); `, - }) - .then(() => ng('test', '--watch=false')) - .then(() => - updateJsonFile('angular.json', (configJson) => { - const appArchitect = configJson.projects['test-project'].architect; - appArchitect.test.configurations = { - production: { - fileReplacements: [ - { - replace: 'src/environment.ts', - with: 'src/environment.prod.ts', - }, - ], - }, - }; - }), - ) - - // Tests can run in different environment. - .then(() => - writeFile( - 'src/app/environment.spec.ts', - ` + }); + + await ng('test', '--watch=false'); + + await updateJsonFile('angular.json', (configJson) => { + const appArchitect = configJson.projects['test-project'].architect; + appArchitect[isWebpack ? 'test' : 'build'].configurations = { + production: { + fileReplacements: [ + { + replace: 'src/environment.ts', + with: 'src/environment.prod.ts', + }, + ], + }, + }; + if (!isWebpack) { + appArchitect.test.options ??= {}; + appArchitect.test.options.buildTarget = '::production'; + } + }); + + // Tests can run in different environment. + + await writeFile( + 'src/app/environment.spec.ts', + ` import { environment } from '../environment'; describe('Test environment', () => { @@ -55,8 +61,11 @@ export default function () { }); }); `, - ), - ) - .then(() => ng('test', '--configuration=production', '--watch=false')) ); + + if (isWebpack) { + await ng('test', '--watch=false', '--configuration=production'); + } else { + await ng('test', '--watch=false'); + } } diff --git a/tests/legacy-cli/e2e/tests/test/test-scripts.ts b/tests/legacy-cli/e2e/tests/test/test-scripts.ts index acbcc66dc230..1537cdddf349 100644 --- a/tests/legacy-cli/e2e/tests/test/test-scripts.ts +++ b/tests/legacy-cli/e2e/tests/test/test-scripts.ts @@ -1,3 +1,4 @@ +import { getGlobalVariable } from '../../utils/env'; import { writeMultipleFiles } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; @@ -60,9 +61,10 @@ export default async function () { // should fail because the global scripts were not added to scripts array await expectToFail(() => ng('test', '--watch=false')); + const isWebpack = !getGlobalVariable('argv')['esbuild']; await updateJsonFile('angular.json', (workspaceJson) => { const appArchitect = workspaceJson.projects['test-project'].architect; - appArchitect.test.options.scripts = [ + appArchitect[isWebpack ? 'test' : 'build'].options.scripts = [ { input: 'src/string-script.js' }, { input: 'src/input-script.js' }, ]; diff --git a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts b/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts index 9e2a8e3f36fa..6c1cf16cd7b3 100644 --- a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts +++ b/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts @@ -1,10 +1,13 @@ import assert from 'node:assert'; -import { getGlobalVariable } from '../../utils/env'; import { writeFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { assertIsError } from '../../utils/utils'; +import { updateJsonFile } from '../../utils/project'; +import { getGlobalVariable } from '../../utils/env'; export default async function () { + const isWebpack = !getGlobalVariable('argv')['esbuild']; + await writeFile( 'src/app/app.spec.ts', ` @@ -15,8 +18,16 @@ export default async function () { ); // when sourcemaps are 'on' the stacktrace will point to the spec.ts file. + await updateJsonFile('angular.json', (configJson) => { + const appArchitect = configJson.projects['test-project'].architect; + if (isWebpack) { + appArchitect['test'].options.sourceMap = true; + } else { + appArchitect['build'].configurations.development.sourceMap = true; + } + }); try { - await ng('test', '--no-watch', '--source-map'); + await ng('test', '--no-watch'); throw new Error('ng test should have failed.'); } catch (error) { assertIsError(error); @@ -25,8 +36,16 @@ export default async function () { } // when sourcemaps are 'off' the stacktrace won't point to the spec.ts file. + await updateJsonFile('angular.json', (configJson) => { + const appArchitect = configJson.projects['test-project'].architect; + if (isWebpack) { + appArchitect['test'].options.sourceMap = false; + } else { + appArchitect['build'].configurations.development.sourceMap = false; + } + }); try { - await ng('test', '--no-watch', '--no-source-map'); + await ng('test', '--no-watch'); throw new Error('ng test should have failed.'); } catch (error) { assertIsError(error); diff --git a/tests/legacy-cli/e2e/utils/project.ts b/tests/legacy-cli/e2e/utils/project.ts index ea764bb20314..c84b7fce8e1d 100644 --- a/tests/legacy-cli/e2e/utils/project.ts +++ b/tests/legacy-cli/e2e/utils/project.ts @@ -191,7 +191,11 @@ export async function useCIChrome(projectName: string, projectDir = ''): Promise return updateJsonFile('angular.json', (workspaceJson) => { const project = workspaceJson.projects[projectName]; const appTargets = project.targets || project.architect; - appTargets.test.options.browsers = 'ChromeHeadlessNoSandbox'; + if (appTargets.test.builder === '@angular/build:unit-test') { + appTargets.test.options.browsers = ['ChromeHeadlessNoSandbox']; + } else { + appTargets.test.options.browsers = 'ChromeHeadlessNoSandbox'; + } }); } From b5f41923e7dd08ca3777ec7c1fb708322ddf04bc Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 31 Oct 2025 10:08:19 -0400 Subject: [PATCH 1727/2162] fix(@schematics/angular): add warnings and improve Karma config generation This commit enhances the `config` schematic to provide better guidance and correctness when generating a Karma configuration file. Changes include: - The `addKarmaConfig` function now correctly handles projects using the `@angular/build:unit-test` builder. - When the `unit-test` builder is in use, the schematic checks the `runner` option in both the main `options` and all `configurations` of the `test` target. - Warnings are issued if the `runner` is not explicitly set to `karma` (defaulting to Vitest) or if it's set to a different runner, informing the user that the generated `karma.conf.js` might not be used. - Corresponding unit tests have been added to `packages/schematics/angular/config/index_spec.ts` to validate this new warning behavior and ensure correct interaction with the `unit-test` builder. --- packages/schematics/angular/config/index.ts | 119 ++++++++++++------ .../schematics/angular/config/index_spec.ts | 82 ++++++++++++ 2 files changed, 161 insertions(+), 40 deletions(-) diff --git a/packages/schematics/angular/config/index.ts b/packages/schematics/angular/config/index.ts index 209ac0de91f9..6bfd36f41b84 100644 --- a/packages/schematics/angular/config/index.ts +++ b/packages/schematics/angular/config/index.ts @@ -47,49 +47,88 @@ async function addBrowserslistConfig(projectRoot: string): Promise { } function addKarmaConfig(options: ConfigOptions): Rule { - return updateWorkspace((workspace) => { - const project = workspace.projects.get(options.project); - if (!project) { - throw new SchematicsException(`Project name "${options.project}" doesn't not exist.`); - } + return (_, context) => + updateWorkspace((workspace) => { + const project = workspace.projects.get(options.project); + if (!project) { + throw new SchematicsException(`Project name "${options.project}" doesn't not exist.`); + } - const testTarget = project.targets.get('test'); - if (!testTarget) { - throw new SchematicsException( - `No "test" target found for project "${options.project}".` + - ' A "test" target is required to generate a karma configuration.', - ); - } + const testTarget = project.targets.get('test'); + if (!testTarget) { + throw new SchematicsException( + `No "test" target found for project "${options.project}".` + + ' A "test" target is required to generate a karma configuration.', + ); + } - if ( - testTarget.builder !== AngularBuilder.Karma && - testTarget.builder !== AngularBuilder.BuildKarma - ) { - throw new SchematicsException( - `Cannot add a karma configuration as builder for "test" target in project does not` + - ` use "${AngularBuilder.Karma}" or "${AngularBuilder.BuildKarma}".`, - ); - } + if ( + testTarget.builder !== AngularBuilder.Karma && + testTarget.builder !== AngularBuilder.BuildKarma && + testTarget.builder !== AngularBuilder.BuildUnitTest + ) { + throw new SchematicsException( + `Cannot add a karma configuration as builder for "test" target in project does not` + + ` use "${AngularBuilder.Karma}", "${AngularBuilder.BuildKarma}", or ${AngularBuilder.BuildUnitTest}.`, + ); + } + + testTarget.options ??= {}; + if (testTarget.builder !== AngularBuilder.BuildUnitTest) { + testTarget.options.karmaConfig = path.join(project.root, 'karma.conf.js'); + } else { + // `unit-test` uses the `runnerConfig` option which has configuration discovery if enabled + testTarget.options.runnerConfig = true; - testTarget.options ??= {}; - testTarget.options.karmaConfig = path.join(project.root, 'karma.conf.js'); + let isKarmaRunnerConfigured = false; + // Check runner option + if (testTarget.options.runner) { + if (testTarget.options.runner === 'karma') { + isKarmaRunnerConfigured = true; + } else { + context.logger.warn( + `The "test" target is configured to use a runner other than "karma" in the main options.` + + ' The generated "karma.conf.js" file may not be used.', + ); + } + } - // If scoped project (i.e. "@foo/bar"), convert dir to "foo/bar". - let folderName = options.project.startsWith('@') ? options.project.slice(1) : options.project; - if (/[A-Z]/.test(folderName)) { - folderName = strings.dasherize(folderName); - } + for (const [name, config] of Object.entries(testTarget.configurations ?? {})) { + if (config && typeof config === 'object' && 'runner' in config) { + if (config.runner !== 'karma') { + context.logger.warn( + `The "test" target's "${name}" configuration is configured to use a runner other than "karma".` + + ' The generated "karma.conf.js" file may not be used for that configuration.', + ); + } else { + isKarmaRunnerConfigured = true; + } + } + } - return mergeWith( - apply(url('./files'), [ - filter((p) => p.endsWith('karma.conf.js.template')), - applyTemplates({ - relativePathToWorkspaceRoot: relativePathToWorkspaceRoot(project.root), - folderName, - needDevkitPlugin: testTarget.builder === AngularBuilder.Karma, - }), - move(project.root), - ]), - ); - }); + if (!isKarmaRunnerConfigured) { + context.logger.warn( + `The "test" target is not explicitly configured to use the "karma" runner.` + + ' The generated "karma.conf.js" file may not be used as the default runner is "vitest".', + ); + } + } + // If scoped project (i.e. "@foo/bar"), convert dir to "foo/bar". + let folderName = options.project.startsWith('@') ? options.project.slice(1) : options.project; + if (/[A-Z]/.test(folderName)) { + folderName = strings.dasherize(folderName); + } + + return mergeWith( + apply(url('./files'), [ + filter((p) => p.endsWith('karma.conf.js.template')), + applyTemplates({ + relativePathToWorkspaceRoot: relativePathToWorkspaceRoot(project.root), + folderName, + needDevkitPlugin: testTarget.builder === AngularBuilder.Karma, + }), + move(project.root), + ]), + ); + }); } diff --git a/packages/schematics/angular/config/index_spec.ts b/packages/schematics/angular/config/index_spec.ts index 1bbc08d9e85b..a63a58ab6887 100644 --- a/packages/schematics/angular/config/index_spec.ts +++ b/packages/schematics/angular/config/index_spec.ts @@ -95,6 +95,88 @@ describe('Config Schematic', () => { const { karmaConfig } = prj.architect.test.options; expect(karmaConfig).toBe('projects/foo/karma.conf.js'); }); + + describe('with "unit-test" builder', () => { + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.builder = '@angular/build:unit-test'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + }); + + it(`should not set 'karmaConfig' in test builder`, async () => { + const tree = await runConfigSchematic(ConfigType.Karma); + const config = JSON.parse(tree.readContent('/angular.json')); + const prj = config.projects.foo; + const { karmaConfig } = prj.architect.test.options; + expect(karmaConfig).toBeUndefined(); + }); + + it(`should warn when 'runner' is not specified`, async () => { + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Karma); + expect( + logs.some((v) => v.includes('may not be used as the default runner is "vitest"')), + ).toBeTrue(); + }); + + it(`should warn when 'runner' is 'vitest' in options`, async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.options ??= {}; + angularJson.projects.foo.architect.test.options.runner = 'vitest'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Karma); + expect( + logs.some((v) => v.includes('runner other than "karma" in the main options')), + ).toBeTrue(); + }); + + it(`should warn when 'runner' is 'vitest' in a configuration`, async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.configurations ??= {}; + angularJson.projects.foo.architect.test.configurations.ci = { runner: 'vitest' }; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Karma); + expect( + logs.some((v) => v.includes(`"ci" configuration is configured to use a runner`)), + ).toBeTrue(); + }); + + it(`should not warn when 'runner' is 'karma' in options`, async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.options ??= {}; + angularJson.projects.foo.architect.test.options.runner = 'karma'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Karma); + expect(logs.length).toBe(0); + }); + + it(`should not warn when 'runner' is 'karma' in a configuration`, async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.configurations ??= {}; + angularJson.projects.foo.architect.test.configurations.ci = { runner: 'karma' }; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Karma); + expect(logs.length).toBe(0); + }); + }); }); describe(`when 'type' is 'browserslist'`, () => { From 8edd3efc2cd6c9f35e567126c6e1e648b35a8ddf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:14:31 -0400 Subject: [PATCH 1728/2162] fix(@schematics/angular): add Vitest config generation and runner checks This commit expands the `config` schematic to support generating a `vitest-base.config.ts` file and includes runner checks to prevent misconfiguration. Changes include: - Added 'vitest' as a valid type for the `config` schematic in `schema.json`. - Created a new `vitest-base.config.ts.template` file for generating a basic Vitest configuration. - Implemented the `addVitestConfig` function in `packages/schematics/angular/config/index.ts`: - Verifies that the project's `test` target uses the `@angular/build:unit-test` builder. - Copies the `vitest-base.config.ts` template to the project root. - Sets the `runnerConfig` option to `true` in `angular.json` to enable automatic discovery. - Includes warning logic to notify users if the `runner` option in `angular.json` is explicitly set to `karma`, indicating that the generated Vitest config may not be used. --- .../files/vitest-base.config.ts.template | 9 +++ packages/schematics/angular/config/index.ts | 60 +++++++++++++++ .../schematics/angular/config/index_spec.ts | 74 +++++++++++++++++++ .../schematics/angular/config/schema.json | 2 +- 4 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 packages/schematics/angular/config/files/vitest-base.config.ts.template diff --git a/packages/schematics/angular/config/files/vitest-base.config.ts.template b/packages/schematics/angular/config/files/vitest-base.config.ts.template new file mode 100644 index 000000000000..1f5a2340af39 --- /dev/null +++ b/packages/schematics/angular/config/files/vitest-base.config.ts.template @@ -0,0 +1,9 @@ +// Learn more about Vitest configuration options at https://vitest.dev/config/ + +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + // ... + }, +}); diff --git a/packages/schematics/angular/config/index.ts b/packages/schematics/angular/config/index.ts index 6bfd36f41b84..c4bafc39657e 100644 --- a/packages/schematics/angular/config/index.ts +++ b/packages/schematics/angular/config/index.ts @@ -30,11 +30,71 @@ export default createProjectSchematic((options, { project }) => { return addKarmaConfig(options); case ConfigType.Browserslist: return addBrowserslistConfig(project.root); + case ConfigType.Vitest: + return addVitestConfig(options); default: throw new SchematicsException(`"${options.type}" is an unknown configuration file type.`); } }); +function addVitestConfig(options: ConfigOptions): Rule { + return (tree, context) => + updateWorkspace((workspace) => { + const project = workspace.projects.get(options.project); + if (!project) { + throw new SchematicsException(`Project name "${options.project}" doesn't not exist.`); + } + + const testTarget = project.targets.get('test'); + if (!testTarget) { + throw new SchematicsException( + `No "test" target found for project "${options.project}".` + + ' A "test" target is required to generate a Vitest configuration.', + ); + } + + if (testTarget.builder !== AngularBuilder.BuildUnitTest) { + throw new SchematicsException( + `Cannot add a Vitest configuration as builder for "test" target in project does not` + + ` use "${AngularBuilder.BuildUnitTest}".`, + ); + } + + testTarget.options ??= {}; + testTarget.options.runnerConfig = true; + + // Check runner option. + if (testTarget.options.runner === 'karma') { + context.logger.warn( + `The "test" target is configured to use the "karma" runner in the main options.` + + ' The generated "vitest-base.config.ts" file may not be used.', + ); + } + + for (const [name, config] of Object.entries(testTarget.configurations ?? {})) { + if ( + config && + typeof config === 'object' && + 'runner' in config && + config.runner === 'karma' + ) { + context.logger.warn( + `The "test" target's "${name}" configuration is configured to use the "karma" runner.` + + ' The generated "vitest-base.config.ts" file may not be used for that configuration.', + ); + } + } + + return mergeWith( + apply(url('./files'), [ + filter((p) => p.endsWith('vitest-base.config.ts.template')), + applyTemplates({}), + move(project.root), + ]), + ); + }); +} + async function addBrowserslistConfig(projectRoot: string): Promise { return mergeWith( apply(url('./files'), [ diff --git a/packages/schematics/angular/config/index_spec.ts b/packages/schematics/angular/config/index_spec.ts index a63a58ab6887..bc1715c4866a 100644 --- a/packages/schematics/angular/config/index_spec.ts +++ b/packages/schematics/angular/config/index_spec.ts @@ -185,4 +185,78 @@ describe('Config Schematic', () => { expect(tree.exists('projects/foo/.browserslistrc')).toBeTrue(); }); }); + + describe(`when 'type' is 'vitest'`, () => { + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.builder = '@angular/build:unit-test'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + }); + + it('should create a vitest-base.config.ts file', async () => { + const tree = await runConfigSchematic(ConfigType.Vitest); + expect(tree.exists('projects/foo/vitest-base.config.ts')).toBeTrue(); + }); + + it(`should set 'runnerConfig' in test builder`, async () => { + const tree = await runConfigSchematic(ConfigType.Vitest); + const config = JSON.parse(tree.readContent('/angular.json')); + const prj = config.projects.foo; + const { runnerConfig } = prj.architect.test.options; + expect(runnerConfig).toBe(true); + }); + + it('should throw an error if the builder is not "unit-test"', async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.builder = '@angular/build:karma'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + await expectAsync(runConfigSchematic(ConfigType.Vitest)).toBeRejectedWithError( + /Cannot add a Vitest configuration as builder for "test" target/, + ); + }); + + it(`should warn when 'runner' is 'karma' in options`, async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.options ??= {}; + angularJson.projects.foo.architect.test.options.runner = 'karma'; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Vitest); + expect( + logs.some((v) => + v.includes( + `The "test" target is configured to use the "karma" runner in the main options.`, + ), + ), + ).toBeTrue(); + }); + + it(`should warn when 'runner' is 'karma' in a configuration`, async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const angularJson = applicationTree.readJson('angular.json') as any; + angularJson.projects.foo.architect.test.configurations ??= {}; + angularJson.projects.foo.architect.test.configurations.ci = { runner: 'karma' }; + applicationTree.overwrite('angular.json', JSON.stringify(angularJson)); + + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Vitest); + expect( + logs.some((v) => v.includes(`"ci" configuration is configured to use the "karma" runner`)), + ).toBeTrue(); + }); + + it(`should not warn when 'runner' is not set`, async () => { + const logs: string[] = []; + schematicRunner.logger.subscribe(({ message }) => logs.push(message)); + await runConfigSchematic(ConfigType.Vitest); + expect(logs.length).toBe(0); + }); + }); }); diff --git a/packages/schematics/angular/config/schema.json b/packages/schematics/angular/config/schema.json index 14bb34f07260..dd755e5ac6ae 100644 --- a/packages/schematics/angular/config/schema.json +++ b/packages/schematics/angular/config/schema.json @@ -16,7 +16,7 @@ "type": { "type": "string", "description": "Specifies the type of configuration file to generate.", - "enum": ["karma", "browserslist"], + "enum": ["karma", "browserslist", "vitest"], "x-prompt": "Which type of configuration file would you like to create?", "$default": { "$source": "argv", From 30efc56333f56a0feda418cee57eccbfbaf46936 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 4 Nov 2025 09:48:11 +0000 Subject: [PATCH 1729/2162] fix(@angular/ssr): improve locale handling in app-engine Refactor app-engine to correctly handle single locale configurations and update manifest type definitions. Add new test cases for localized apps with a single locale. closes #31675 --- packages/angular/ssr/src/app-engine.ts | 5 +- packages/angular/ssr/src/manifest.ts | 2 +- packages/angular/ssr/test/app-engine_spec.ts | 60 ++++++++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/packages/angular/ssr/src/app-engine.ts b/packages/angular/ssr/src/app-engine.ts index 0ce5d23c30d1..dd204a4b595f 100644 --- a/packages/angular/ssr/src/app-engine.ts +++ b/packages/angular/ssr/src/app-engine.ts @@ -191,9 +191,10 @@ export class AngularAppEngine { * @returns A promise that resolves to the entry point exports or `undefined` if not found. */ private getEntryPointExportsForUrl(url: URL): Promise | undefined { - const { basePath } = this.manifest; + const { basePath, supportedLocales } = this.manifest; + if (this.supportedLocales.length === 1) { - return this.getEntryPointExports(''); + return this.getEntryPointExports(supportedLocales[this.supportedLocales[0]]); } const potentialLocale = getPotentialLocaleIdFromUrl(url, basePath); diff --git a/packages/angular/ssr/src/manifest.ts b/packages/angular/ssr/src/manifest.ts index 8fc415546033..0de603bba104 100644 --- a/packages/angular/ssr/src/manifest.ts +++ b/packages/angular/ssr/src/manifest.ts @@ -73,7 +73,7 @@ export interface AngularAppEngineManifest { * - `key`: The locale identifier (e.g., 'en', 'fr'). * - `value`: The url segment associated with that locale. */ - readonly supportedLocales: Readonly>; + readonly supportedLocales: Readonly>; } /** diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index 966edadce843..b08931b9400b 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -157,6 +157,66 @@ describe('AngularAppEngine', () => { }); }); + describe('Localized app with single locale', () => { + beforeAll(() => { + setAngularAppEngineManifest({ + entryPoints: { + it: createEntryPoint('it'), + }, + supportedLocales: { 'it': 'it' }, + basePath: '/', + }); + + appEngine = new AngularAppEngine(); + }); + + describe('handle', () => { + it('should return null for requests to unknown pages', async () => { + const request = new Request('https://example.com/unknown/page'); + const response = await appEngine.handle(request); + expect(response).toBeNull(); + }); + + it('should return a rendered page with correct locale', async () => { + const request = new Request('https://example.com/it/ssr'); + const response = await appEngine.handle(request); + expect(await response?.text()).toContain('SSR works IT'); + }); + + it('should correctly render the content when the URL ends with "index.html" with correct locale', async () => { + const request = new Request('https://example.com/it/ssr/index.html'); + const response = await appEngine.handle(request); + expect(await response?.text()).toContain('SSR works IT'); + expect(response?.headers?.get('Content-Language')).toBe('it'); + }); + + it('should return a serve prerendered page with correct locale', async () => { + const request = new Request('https://example.com/it/ssg'); + const response = await appEngine.handle(request); + expect(await response?.text()).toContain('SSG works IT'); + expect(response?.headers?.get('Content-Language')).toBe('it'); + }); + + it('should correctly serve the prerendered content when the URL ends with "index.html" with correct locale', async () => { + const request = new Request('https://example.com/it/ssg/index.html'); + const response = await appEngine.handle(request); + expect(await response?.text()).toContain('SSG works IT'); + }); + + it('should return null for requests to unknown pages in a locale', async () => { + const request = new Request('https://example.com/it/unknown/page'); + const response = await appEngine.handle(request); + expect(response).toBeNull(); + }); + + it('should return null for requests to file-like resources in a locale', async () => { + const request = new Request('https://example.com/it/logo.png'); + const response = await appEngine.handle(request); + expect(response).toBeNull(); + }); + }); + }); + describe('Non-localized app', () => { beforeAll(() => { @Component({ From 4eb22bc2e6bb90aa8d9d617e864e7976da3feb5a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 4 Nov 2025 09:56:08 +0000 Subject: [PATCH 1730/2162] fix(@angular/ssr): improve route matching for wildcard routes Enhance the route traversal logic to correctly identify and process wildcard route matchers (e.g., '**'). This ensures that routes with matchers are properly marked as present in the client router and handled according to their render mode. closes #31666 --- packages/angular/ssr/src/routes/ng-routes.ts | 19 ++++++--- .../angular/ssr/test/routes/ng-routes_spec.ts | 39 +++++++++++++++++++ 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 2a9281f40e9b..e46dd685511a 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -251,15 +251,22 @@ async function* traverseRoutesConfig(options: { const currentRoutePath = joinUrlParts(parentRoute, path); if (matcher && serverConfigRouteTree) { - let foundMatch = false; + const matches: (RouteTreeNodeMetadata & ServerConfigRouteTreeAdditionalMetadata)[] = []; for (const matchedMetaData of serverConfigRouteTree.traverse()) { - if (!matchedMetaData.route.startsWith(currentRoutePath)) { - continue; + if (matchedMetaData.route.startsWith(currentRoutePath)) { + matches.push(matchedMetaData); } + } - foundMatch = true; - matchedMetaData.presentInClientRouter = true; + if (!matches.length) { + const matchedMetaData = serverConfigRouteTree.match(currentRoutePath); + if (matchedMetaData) { + matches.push(matchedMetaData); + } + } + for (const matchedMetaData of matches) { + matchedMetaData.presentInClientRouter = true; if (matchedMetaData.renderMode === RenderMode.Prerender) { yield { error: @@ -282,7 +289,7 @@ async function* traverseRoutesConfig(options: { }); } - if (!foundMatch) { + if (!matches.length) { yield { error: `The route '${stripLeadingSlash(currentRoutePath)}' has a defined matcher but does not ` + diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index 628546432d0c..324abe8c4d29 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -428,6 +428,45 @@ describe('extractRoutesAndCreateRouteTree', () => { ]); }); + it('should extract routes with a route level matcher captured by "**"', async () => { + setAngularAppTestingManifest( + [ + { + path: '', + component: DummyComponent, + }, + { + path: 'list', + component: DummyComponent, + }, + { + path: 'product', + component: DummyComponent, + children: [ + { + matcher: () => null, + component: DummyComponent, + }, + ], + }, + ], + [ + { path: 'list', renderMode: RenderMode.Client }, + { path: '', renderMode: RenderMode.Client }, + { path: '**', renderMode: RenderMode.Server }, + ], + ); + + const { routeTree, errors } = await extractRoutesAndCreateRouteTree({ url }); + expect(errors).toHaveSize(0); + expect(routeTree.toObject()).toEqual([ + { route: '/', renderMode: RenderMode.Client }, + { route: '/list', renderMode: RenderMode.Client }, + { route: '/product', renderMode: RenderMode.Server }, + { route: '/**', renderMode: RenderMode.Server }, + ]); + }); + it('should extract nested redirects that are not explicitly defined.', async () => { setAngularAppTestingManifest( [ From 1c4af8d3d8806b8374d5035736de41faa5b1a955 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 4 Nov 2025 16:31:28 +0100 Subject: [PATCH 1731/2162] docs: clarify `outputMode` description in application schema Updates the description for the property in the application builder's schema. This change clarifies that both 'static' and 'server' modes generate build artifacts, and specifies that the 'server' mode is required for applications using hybrid rendering or APIs. --- packages/angular/build/src/builders/application/schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/schema.json b/packages/angular/build/src/builders/application/schema.json index c0a0f98313aa..8db4e6145b3f 100644 --- a/packages/angular/build/src/builders/application/schema.json +++ b/packages/angular/build/src/builders/application/schema.json @@ -611,7 +611,7 @@ }, "outputMode": { "type": "string", - "description": "Defines the build output target. 'static': Generates a static site for deployment on any static hosting service. 'server': Produces an application designed for deployment on a server that supports server-side rendering (SSR).", + "description": "Defines the type of build output artifact. 'static': Generates a static site build artifact for deployment on any static hosting service. 'server': Generates a server application build artifact, required for applications using hybrid rendering or APIs.", "enum": ["static", "server"] } }, From cc132e9524a136575685961b2ef934eb0aca5c60 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 4 Nov 2025 11:44:49 -0500 Subject: [PATCH 1732/2162] fix(@schematics/angular): add `addImports` option to jasmine-vitest schematic Introduces a new `--add-imports` boolean option to the Jasmine to Vitest refactoring schematic. When this option is set to `true`, the schematic will automatically add a single, consolidated `import { ... } from 'vitest';` statement at the top of the transformed file for any Vitest APIs that are used. Key changes: - Type-only imports (e.g., `Mock`, `MockedObject`) are now always added to ensure the refactored code remains type-correct. - Value imports (e.g., `vi`, `describe`, `it`, `expect`) are only added when `--add-imports` is `true`. - The import generation logic correctly handles all scenarios, including type-only imports (`import type {...}`), value-only imports, and combined imports with inline `type` keywords. - A new test suite has been added to validate the import generation logic under various conditions. --- .../angular/refactor/jasmine-vitest/index.ts | 4 +- .../refactor/jasmine-vitest/schema.json | 5 ++ .../test-file-transformer.integration_spec.ts | 2 +- .../jasmine-vitest/test-file-transformer.ts | 45 +++++++++++---- .../test-file-transformer_add-imports_spec.ts | 56 +++++++++++++++++++ .../refactor/jasmine-vitest/test-helpers.ts | 8 ++- .../transformers/jasmine-matcher.ts | 9 ++- .../transformers/jasmine-misc.ts | 8 ++- .../transformers/jasmine-spy.ts | 27 ++++++--- .../transformers/jasmine-type.ts | 8 +-- .../jasmine-vitest/utils/ast-helpers.ts | 51 +++++++++++++---- .../jasmine-vitest/utils/refactor-context.ts | 5 +- 12 files changed, 184 insertions(+), 44 deletions(-) create mode 100644 packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index.ts b/packages/schematics/angular/refactor/jasmine-vitest/index.ts index fb545b8bcbca..a7e34ad26c02 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index.ts @@ -119,7 +119,9 @@ export default function (options: Schema): Rule { for (const file of files) { reporter.incrementScannedFiles(); const content = tree.readText(file); - const newContent = transformJasmineToVitest(file, content, reporter); + const newContent = transformJasmineToVitest(file, content, reporter, { + addImports: !!options.addImports, + }); if (content !== newContent) { tree.overwrite(file, newContent); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/schema.json b/packages/schematics/angular/refactor/jasmine-vitest/schema.json index 5756b1f68ce9..99f34057ffb5 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/schema.json +++ b/packages/schematics/angular/refactor/jasmine-vitest/schema.json @@ -25,6 +25,11 @@ "type": "boolean", "description": "Enable verbose logging to see detailed information about the transformations being applied.", "default": false + }, + "addImports": { + "type": "boolean", + "description": "Whether to add imports for the Vitest API. The Angular `unit-test` system automatically uses the Vitest globals option, which means explicit imports for global APIs like `describe`, `it`, `expect`, and `vi` are often not strictly necessary unless Vitest has been configured not to use globals.", + "default": false } } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index 60e2675b7572..ebc7e1631907 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -14,7 +14,7 @@ import { RefactorReporter } from './utils/refactor-reporter'; async function expectTransformation(input: string, expected: string): Promise { const logger = new logging.NullLogger(); const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const transformed = transformJasmineToVitest('spec.ts', input, reporter, { addImports: false }); const formattedTransformed = await format(transformed, { parser: 'typescript' }); const formattedExpected = await format(expected, { parser: 'typescript' }); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index 36fa9a856f37..da9bf28ba420 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -39,7 +39,7 @@ import { transformSpyReset, } from './transformers/jasmine-spy'; import { transformJasmineTypes } from './transformers/jasmine-type'; -import { getVitestAutoImports } from './utils/ast-helpers'; +import { addVitestValueImport, getVitestAutoImports } from './utils/ast-helpers'; import { RefactorContext } from './utils/refactor-context'; import { RefactorReporter } from './utils/refactor-reporter'; @@ -61,14 +61,17 @@ function restoreBlankLines(content: string): string { /** * Transforms a string of Jasmine test code to Vitest test code. * This is the main entry point for the transformation. + * @param filePath The path to the file being transformed. * @param content The source code to transform. * @param reporter The reporter to track TODOs. + * @param options Transformation options. * @returns The transformed code. */ export function transformJasmineToVitest( filePath: string, content: string, reporter: RefactorReporter, + options: { addImports: boolean }, ): string { const contentWithPlaceholders = preserveBlankLines(content); @@ -80,13 +83,15 @@ export function transformJasmineToVitest( ts.ScriptKind.TS, ); - const pendingVitestImports = new Set(); + const pendingVitestValueImports = new Set(); + const pendingVitestTypeImports = new Set(); const transformer: ts.TransformerFactory = (context) => { const refactorCtx: RefactorContext = { sourceFile, reporter, tsContext: context, - pendingVitestImports, + pendingVitestValueImports, + pendingVitestTypeImports, }; const visitor: ts.Visitor = (node) => { @@ -94,6 +99,13 @@ export function transformJasmineToVitest( // Transform the node itself based on its type if (ts.isCallExpression(transformedNode)) { + if (options.addImports && ts.isIdentifier(transformedNode.expression)) { + const name = transformedNode.expression.text; + if (name === 'describe' || name === 'it' || name === 'expect') { + addVitestValueImport(pendingVitestValueImports, name); + } + } + const transformations = [ // **Stage 1: High-Level & Context-Sensitive Transformations** // These transformers often wrap or fundamentally change the nature of the call, @@ -171,16 +183,29 @@ export function transformJasmineToVitest( const result = ts.transform(sourceFile, [transformer]); let transformedSourceFile = result.transformed[0]; - if (transformedSourceFile === sourceFile && !reporter.hasTodos && !pendingVitestImports.size) { + const hasPendingValueImports = pendingVitestValueImports.size > 0; + const hasPendingTypeImports = pendingVitestTypeImports.size > 0; + + if ( + transformedSourceFile === sourceFile && + !reporter.hasTodos && + !hasPendingValueImports && + !hasPendingTypeImports + ) { return content; } - const vitestImport = getVitestAutoImports(pendingVitestImports); - if (vitestImport) { - transformedSourceFile = ts.factory.updateSourceFile(transformedSourceFile, [ - vitestImport, - ...transformedSourceFile.statements, - ]); + if (hasPendingTypeImports || (options.addImports && hasPendingValueImports)) { + const vitestImport = getVitestAutoImports( + options.addImports ? pendingVitestValueImports : new Set(), + pendingVitestTypeImports, + ); + if (vitestImport) { + transformedSourceFile = ts.factory.updateSourceFile(transformedSourceFile, [ + vitestImport, + ...transformedSourceFile.statements, + ]); + } } const printer = ts.createPrinter(); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts new file mode 100644 index 000000000000..4f85efc48807 --- /dev/null +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts @@ -0,0 +1,56 @@ +/** + * @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 { expectTransformation } from './test-helpers'; + +describe('Jasmine to Vitest Transformer', () => { + describe('addImports option', () => { + it('should add value imports when addImports is true', async () => { + const input = `spyOn(foo, 'bar');`; + const expected = ` + import { vi } from 'vitest'; + vi.spyOn(foo, 'bar'); + `; + await expectTransformation(input, expected, true); + }); + + it('should generate a single, combined import for value and type imports when addImports is true', async () => { + const input = ` + let mySpy: jasmine.Spy; + spyOn(foo, 'bar'); + `; + const expected = ` + import { type Mock, vi } from 'vitest'; + + let mySpy: Mock; + vi.spyOn(foo, 'bar'); + `; + await expectTransformation(input, expected, true); + }); + + it('should only add type imports when addImports is false', async () => { + const input = ` + let mySpy: jasmine.Spy; + spyOn(foo, 'bar'); + `; + const expected = ` + import type { Mock } from 'vitest'; + + let mySpy: Mock; + vi.spyOn(foo, 'bar'); + `; + await expectTransformation(input, expected, false); + }); + + it('should not add an import if no Vitest APIs are used, even when addImports is true', async () => { + const input = `const a = 1;`; + const expected = `const a = 1;`; + await expectTransformation(input, expected, true); + }); + }); +}); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts index bf162192ab2a..a93875b912e9 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts @@ -23,10 +23,14 @@ import { RefactorReporter } from './utils/refactor-reporter'; * @param input The Jasmine code snippet to be transformed. * @param expected The expected Vitest code snippet after transformation. */ -export async function expectTransformation(input: string, expected: string): Promise { +export async function expectTransformation( + input: string, + expected: string, + addImports = false, +): Promise { const logger = new logging.NullLogger(); const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter); + const transformed = transformJasmineToVitest('spec.ts', input, reporter, { addImports }); const formattedTransformed = await format(transformed, { parser: 'typescript' }); const formattedExpected = await format(expected, { parser: 'typescript' }); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts index 00ea5fa0e775..b1b746aad504 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts @@ -15,7 +15,11 @@ */ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; -import { createExpectCallExpression, createPropertyAccess } from '../utils/ast-helpers'; +import { + addVitestValueImport, + createExpectCallExpression, + createPropertyAccess, +} from '../utils/ast-helpers'; import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; import { addTodoComment } from '../utils/comment-helpers'; import { RefactorContext } from '../utils/refactor-context'; @@ -94,7 +98,7 @@ const ASYMMETRIC_MATCHER_NAMES: ReadonlyArray = [ export function transformAsymmetricMatchers( node: ts.Node, - { sourceFile, reporter }: RefactorContext, + { sourceFile, reporter, pendingVitestValueImports }: RefactorContext, ): ts.Node { if ( ts.isPropertyAccessExpression(node) && @@ -103,6 +107,7 @@ export function transformAsymmetricMatchers( ) { const matcherName = node.name.text; if (ASYMMETRIC_MATCHER_NAMES.includes(matcherName)) { + addVitestValueImport(pendingVitestValueImports, 'expect'); reporter.reportTransformation( sourceFile, node, diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts index 1a2c15b2c539..f9667701e376 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts @@ -14,7 +14,7 @@ */ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; -import { createViCallExpression } from '../utils/ast-helpers'; +import { addVitestValueImport, createViCallExpression } from '../utils/ast-helpers'; import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; import { addTodoComment } from '../utils/comment-helpers'; import { RefactorContext } from '../utils/refactor-context'; @@ -22,7 +22,7 @@ import { TodoCategory } from '../utils/todo-notes'; export function transformTimerMocks( node: ts.Node, - { sourceFile, reporter }: RefactorContext, + { sourceFile, reporter, pendingVitestValueImports }: RefactorContext, ): ts.Node { if ( !ts.isCallExpression(node) || @@ -55,6 +55,7 @@ export function transformTimerMocks( } if (newMethodName) { + addVitestValueImport(pendingVitestValueImports, 'vi'); reporter.reportTransformation( sourceFile, node, @@ -94,7 +95,7 @@ export function transformFail(node: ts.Node, { sourceFile, reporter }: RefactorC export function transformDefaultTimeoutInterval( node: ts.Node, - { sourceFile, reporter }: RefactorContext, + { sourceFile, reporter, pendingVitestValueImports }: RefactorContext, ): ts.Node { if ( ts.isExpressionStatement(node) && @@ -108,6 +109,7 @@ export function transformDefaultTimeoutInterval( assignment.left.expression.text === 'jasmine' && assignment.left.name.text === 'DEFAULT_TIMEOUT_INTERVAL' ) { + addVitestValueImport(pendingVitestValueImports, 'vi'); reporter.reportTransformation( sourceFile, node, diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index 6d5a0dc16727..d2d9af5f01a6 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -14,13 +14,17 @@ */ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; -import { createPropertyAccess, createViCallExpression } from '../utils/ast-helpers'; +import { + addVitestValueImport, + createPropertyAccess, + createViCallExpression, +} from '../utils/ast-helpers'; import { getJasmineMethodName, isJasmineCallExpression } from '../utils/ast-validation'; import { addTodoComment } from '../utils/comment-helpers'; import { RefactorContext } from '../utils/refactor-context'; export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts.Node { - const { sourceFile, reporter } = refactorCtx; + const { sourceFile, reporter, pendingVitestValueImports } = refactorCtx; if (!ts.isCallExpression(node)) { return node; } @@ -29,6 +33,7 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. ts.isIdentifier(node.expression) && (node.expression.text === 'spyOn' || node.expression.text === 'spyOnProperty') ) { + addVitestValueImport(pendingVitestValueImports, 'vi'); reporter.reportTransformation( sourceFile, node, @@ -181,6 +186,7 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. const jasmineMethodName = getJasmineMethodName(node); switch (jasmineMethodName) { case 'createSpy': + addVitestValueImport(pendingVitestValueImports, 'vi'); reporter.reportTransformation( sourceFile, node, @@ -208,12 +214,13 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. export function transformCreateSpyObj( node: ts.Node, - { sourceFile, reporter }: RefactorContext, + { sourceFile, reporter, pendingVitestValueImports }: RefactorContext, ): ts.Node { if (!isJasmineCallExpression(node, 'createSpyObj')) { return node; } + addVitestValueImport(pendingVitestValueImports, 'vi'); reporter.reportTransformation( sourceFile, node, @@ -328,7 +335,11 @@ function getSpyIdentifierFromCalls(node: ts.PropertyAccessExpression): ts.Expres return undefined; } -function createMockedSpyMockProperty(spyIdentifier: ts.Expression): ts.PropertyAccessExpression { +function createMockedSpyMockProperty( + spyIdentifier: ts.Expression, + pendingVitestValueImports: Set, +): ts.PropertyAccessExpression { + addVitestValueImport(pendingVitestValueImports, 'vi'); const mockedSpy = ts.factory.createCallExpression( createPropertyAccess('vi', 'mocked'), undefined, @@ -340,7 +351,7 @@ function createMockedSpyMockProperty(spyIdentifier: ts.Expression): ts.PropertyA function transformMostRecentArgs( node: ts.Node, - { sourceFile, reporter }: RefactorContext, + { sourceFile, reporter, pendingVitestValueImports }: RefactorContext, ): ts.Node { // Check 1: Is it a property access for `.args`? if ( @@ -382,7 +393,7 @@ function transformMostRecentArgs( node, 'Transformed `spy.calls.mostRecent().args` to `vi.mocked(spy).mock.lastCall`.', ); - const mockProperty = createMockedSpyMockProperty(spyIdentifier); + const mockProperty = createMockedSpyMockProperty(spyIdentifier, pendingVitestValueImports); return createPropertyAccess(mockProperty, 'lastCall'); } @@ -397,7 +408,7 @@ export function transformSpyCallInspection(node: ts.Node, refactorCtx: RefactorC return node; } - const { sourceFile, reporter } = refactorCtx; + const { sourceFile, reporter, pendingVitestValueImports } = refactorCtx; const pae = node.expression; // e.g., mySpy.calls.count const spyIdentifier = ts.isPropertyAccessExpression(pae.expression) @@ -405,7 +416,7 @@ export function transformSpyCallInspection(node: ts.Node, refactorCtx: RefactorC : undefined; if (spyIdentifier) { - const mockProperty = createMockedSpyMockProperty(spyIdentifier); + const mockProperty = createMockedSpyMockProperty(spyIdentifier, pendingVitestValueImports); const callsProperty = createPropertyAccess(mockProperty, 'calls'); const callName = pae.name.text; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts index c39674d38045..a7a0c7bedf80 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-type.ts @@ -14,12 +14,12 @@ */ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; -import { addVitestAutoImport } from '../utils/ast-helpers'; +import { addVitestTypeImport } from '../utils/ast-helpers'; import { RefactorContext } from '../utils/refactor-context'; export function transformJasmineTypes( node: ts.Node, - { sourceFile, reporter, pendingVitestImports }: RefactorContext, + { sourceFile, reporter, pendingVitestTypeImports }: RefactorContext, ): ts.Node { const typeNameNode = ts.isTypeReferenceNode(node) ? node.typeName : node; if ( @@ -40,7 +40,7 @@ export function transformJasmineTypes( node, `Transformed type \`jasmine.Spy\` to \`${vitestTypeName}\`.`, ); - addVitestAutoImport(pendingVitestImports, vitestTypeName); + addVitestTypeImport(pendingVitestTypeImports, vitestTypeName); return ts.factory.createIdentifier(vitestTypeName); } @@ -51,7 +51,7 @@ export function transformJasmineTypes( node, `Transformed type \`jasmine.SpyObj\` to \`${vitestTypeName}\`.`, ); - addVitestAutoImport(pendingVitestImports, vitestTypeName); + addVitestTypeImport(pendingVitestTypeImports, vitestTypeName); if (ts.isTypeReferenceNode(node)) { return ts.factory.updateTypeReferenceNode( diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts index 5bdb07dd4225..f6f363df1643 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/ast-helpers.ts @@ -8,28 +8,55 @@ import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; -export function addVitestAutoImport(imports: Set, importName: string): void { +export function addVitestValueImport(imports: Set, importName: string): void { imports.add(importName); } -export function getVitestAutoImports(imports: Set): ts.ImportDeclaration | undefined { - if (!imports?.size) { +export function addVitestTypeImport(imports: Set, importName: string): void { + imports.add(importName); +} + +export function getVitestAutoImports( + valueImports: Set, + typeImports: Set, +): ts.ImportDeclaration | undefined { + if (valueImports.size === 0 && typeImports.size === 0) { return undefined; } - const importNames = [...imports]; - importNames.sort(); - const importSpecifiers = importNames.map((i) => - ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(i)), + const isClauseTypeOnly = valueImports.size === 0 && typeImports.size > 0; + const allSpecifiers: ts.ImportSpecifier[] = []; + + // Add value imports + for (const i of [...valueImports].sort()) { + allSpecifiers.push( + ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(i)), + ); + } + + // Add type imports + for (const i of [...typeImports].sort()) { + // Only set isTypeOnly on individual specifiers if the clause itself is NOT type-only + allSpecifiers.push( + ts.factory.createImportSpecifier( + !isClauseTypeOnly, + undefined, + ts.factory.createIdentifier(i), + ), + ); + } + + allSpecifiers.sort((a, b) => a.name.text.localeCompare(b.name.text)); + + const importClause = ts.factory.createImportClause( + isClauseTypeOnly, // Set isTypeOnly on the clause if only type imports + undefined, + ts.factory.createNamedImports(allSpecifiers), ); return ts.factory.createImportDeclaration( undefined, - ts.factory.createImportClause( - ts.SyntaxKind.TypeKeyword, - undefined, - ts.factory.createNamedImports(importSpecifiers), - ), + importClause, ts.factory.createStringLiteral('vitest'), ); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts index 3ca9fd3810e7..a7e705a83ce5 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-context.ts @@ -23,8 +23,11 @@ export interface RefactorContext { /** The official context from the TypeScript Transformer API. */ readonly tsContext: ts.TransformationContext; + /** A set of Vitest value imports to be added to the file. */ + readonly pendingVitestValueImports: Set; + /** A set of Vitest type imports to be added to the file. */ - readonly pendingVitestImports: Set; + readonly pendingVitestTypeImports: Set; } /** From f4895d660e15f277a74e5135ad829e5075a086b9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 4 Nov 2025 14:36:24 -0500 Subject: [PATCH 1733/2162] refactor(@schematics/angular): improve code quality in jasmine-vitest transformer This commit introduces several code quality improvements to the `test-file-transformer.ts` file within the Jasmine to Vitest schematic. These changes enhance readability, maintainability, and performance without altering the existing behavior. Key improvements include: - **Module-level transformer arrays:** The `callExpressionTransformers`, `propertyAccessExpressionTransformers`, and `expressionStatementTransformers` arrays have been refactored to be module-level constants. This ensures they are initialized only once when the module is loaded, improving performance, and clearly separates static configuration from dynamic execution logic. - **Comprehensive JSDoc comments:** Extensive JSDoc comments have been added or updated throughout the file, including a file-level overview, detailed explanations for module-level constants, and updated documentation for key functions. This significantly improves code clarity and maintainability for future development. --- .../jasmine-vitest/test-file-transformer.ts | 134 ++++++++++++------ .../test-file-transformer_add-imports_spec.ts | 29 ++++ 2 files changed, 116 insertions(+), 47 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index da9bf28ba420..eb8afdfe0449 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -6,6 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ +/** + * @fileoverview This is the main entry point for the Jasmine to Vitest transformation. + * It orchestrates the application of various AST transformers to convert Jasmine test + * syntax and APIs to their Vitest equivalents. It also handles import management, + * blank line preservation, and reporting of transformation details. + */ + import ts from '../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; import { transformDoneCallback, @@ -43,8 +50,18 @@ import { addVitestValueImport, getVitestAutoImports } from './utils/ast-helpers' import { RefactorContext } from './utils/refactor-context'; import { RefactorReporter } from './utils/refactor-reporter'; +/** + * A placeholder used to temporarily replace blank lines in the source code. + * This is necessary because TypeScript's printer removes blank lines by default. + */ const BLANK_LINE_PLACEHOLDER = '// __PRESERVE_BLANK_LINE__'; +/** + * Replaces blank lines in the content with a placeholder to prevent TypeScript's printer + * from removing them. This ensures that the original formatting of blank lines is preserved. + * @param content The source code content. + * @returns The content with blank lines replaced by placeholders. + */ function preserveBlankLines(content: string): string { return content .split('\n') @@ -52,19 +69,83 @@ function preserveBlankLines(content: string): string { .join('\n'); } +/** + * Restores blank lines in the content by replacing the placeholder with actual blank lines. + * This is called after TypeScript's printer has processed the file. + * @param content The content with blank line placeholders. + * @returns The content with blank lines restored. + */ function restoreBlankLines(content: string): string { - const regex = new RegExp(`^\\s*${BLANK_LINE_PLACEHOLDER.replace(/\//g, '\\/')}\\s*$`, 'gm'); + const regex = /^\s*\/\/ __PRESERVE_BLANK_LINE__\s*$/gm; return content.replace(regex, ''); } +/** + * A collection of transformers that operate on `ts.CallExpression` nodes. + * These are applied in stages to ensure correct order of operations: + * 1. High-Level & Context-Sensitive: Transformations that fundamentally change the call. + * 2. Core Matcher & Spy: Bulk conversions for `expect(...)` and `spyOn(...)`. + * 3. Global Functions & Cleanup: Handles global Jasmine functions and unsupported APIs. + */ +const callExpressionTransformers = [ + // **Stage 1: High-Level & Context-Sensitive Transformations** + // These transformers often wrap or fundamentally change the nature of the call, + // so they need to run before more specific matchers. + transformWithContext, + transformExpectAsync, + transformFocusedAndSkippedTests, + transformPending, + transformDoneCallback, + + // **Stage 2: Core Matcher & Spy Transformations** + // This is the bulk of the `expect(...)` and `spyOn(...)` conversions. + transformSyntacticSugarMatchers, + transformComplexMatchers, + transformSpies, + transformCreateSpyObj, + transformSpyReset, + transformSpyCallInspection, + transformtoHaveBeenCalledBefore, + transformToHaveClass, + + // **Stage 3: Global Functions & Cleanup** + // These handle global Jasmine functions and catch-alls for unsupported APIs. + transformTimerMocks, + transformGlobalFunctions, + transformUnsupportedJasmineCalls, +]; + +/** + * A collection of transformers that operate on `ts.PropertyAccessExpression` nodes. + * These primarily handle `jasmine.any()` and other `jasmine.*` properties. + */ +const propertyAccessExpressionTransformers = [ + // These transformers handle `jasmine.any()` and other `jasmine.*` properties. + transformAsymmetricMatchers, + transformSpyCallInspection, + transformUnknownJasmineProperties, +]; + +/** + * A collection of transformers that operate on `ts.ExpressionStatement` nodes. + * These are mutually exclusive; the first one that matches will be applied. + */ +const expressionStatementTransformers = [ + transformCalledOnceWith, + transformArrayWithExactContents, + transformExpectNothing, + transformFail, + transformDefaultTimeoutInterval, +]; + /** * Transforms a string of Jasmine test code to Vitest test code. * This is the main entry point for the transformation. * @param filePath The path to the file being transformed. * @param content The source code to transform. * @param reporter The reporter to track TODOs. - * @param options Transformation options. + * @param options Transformation options, including whether to add Vitest API imports. * @returns The transformed code. */ export function transformJasmineToVitest( @@ -85,6 +166,7 @@ export function transformJasmineToVitest( const pendingVitestValueImports = new Set(); const pendingVitestTypeImports = new Set(); + const transformer: ts.TransformerFactory = (context) => { const refactorCtx: RefactorContext = { sourceFile, @@ -106,59 +188,17 @@ export function transformJasmineToVitest( } } - const transformations = [ - // **Stage 1: High-Level & Context-Sensitive Transformations** - // These transformers often wrap or fundamentally change the nature of the call, - // so they need to run before more specific matchers. - transformWithContext, - transformExpectAsync, - transformFocusedAndSkippedTests, - transformPending, - transformDoneCallback, - - // **Stage 2: Core Matcher & Spy Transformations** - // This is the bulk of the `expect(...)` and `spyOn(...)` conversions. - transformSyntacticSugarMatchers, - transformComplexMatchers, - transformSpies, - transformCreateSpyObj, - transformSpyReset, - transformSpyCallInspection, - transformtoHaveBeenCalledBefore, - transformToHaveClass, - - // **Stage 3: Global Functions & Cleanup** - // These handle global Jasmine functions and catch-alls for unsupported APIs. - transformTimerMocks, - transformGlobalFunctions, - transformUnsupportedJasmineCalls, - ]; - - for (const transformer of transformations) { + for (const transformer of callExpressionTransformers) { transformedNode = transformer(transformedNode, refactorCtx); } } else if (ts.isPropertyAccessExpression(transformedNode)) { - const transformations = [ - // These transformers handle `jasmine.any()` and other `jasmine.*` properties. - transformAsymmetricMatchers, - transformSpyCallInspection, - transformUnknownJasmineProperties, - ]; - for (const transformer of transformations) { + for (const transformer of propertyAccessExpressionTransformers) { transformedNode = transformer(transformedNode, refactorCtx); } } else if (ts.isExpressionStatement(transformedNode)) { // Statement-level transformers are mutually exclusive. The first one that // matches will be applied, and then the visitor will stop for this node. - const statementTransformers = [ - transformCalledOnceWith, - transformArrayWithExactContents, - transformExpectNothing, - transformFail, - transformDefaultTimeoutInterval, - ]; - - for (const transformer of statementTransformers) { + for (const transformer of expressionStatementTransformers) { const result = transformer(transformedNode, refactorCtx); if (result !== transformedNode) { transformedNode = result; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts index 4f85efc48807..fac88bb9ed02 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts @@ -52,5 +52,34 @@ describe('Jasmine to Vitest Transformer', () => { const expected = `const a = 1;`; await expectTransformation(input, expected, true); }); + + it('should add imports for top-level describe and it when addImports is true', async () => { + const input = ` + describe('My Suite', () => { + it('should do something', () => { + // test content + }); + }); + `; + const expected = ` + import { describe, it } from 'vitest'; + + describe('My Suite', () => { + it('should do something', () => { + // test content + }); + }); + `; + await expectTransformation(input, expected, true); + }); + + it('should add imports for top-level expect when addImports is true', async () => { + const input = `expect(true).toBe(true);`; + const expected = ` + import { expect } from 'vitest'; + expect(true).toBe(true); + `; + await expectTransformation(input, expected, true); + }); }); }); From 6cec9c84a5558cc81c185582b22e30a4a51215ca Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 5 Nov 2025 05:05:50 +0000 Subject: [PATCH 1734/2162] build: update github/codeql-action action to v4.31.2 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7354c6757990..fb4789033a1a 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@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5cee4e987fb3..5b82ca3bd6e6 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@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0 + uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: sarif_file: results.sarif From de3d03ba338d84e0bc33730d079bb18d1369256e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 5 Nov 2025 06:06:17 +0000 Subject: [PATCH 1735/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 14 +++++--------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index bc615b24d9ce..de15bb4d4e6d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -7,7 +7,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.1") bazel_dep(name = "rules_nodejs", version = "6.6.0") bazel_dep(name = "aspect_rules_js", version = "2.7.0") -bazel_dep(name = "aspect_rules_ts", version = "3.7.0") +bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") # Alow for usage of rules_pkg@0.8.1 even though other deps want a later verison. @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "b97a21c7cead2a07ea1bffa68eaae7f7e08dfc5f", + commit = "059242464577ca9046451afebd6734ec79908d6f", remote = "https://github.com/devversion/rules_angular.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index a9e224f1b3f1..66ae63953d25 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -31,7 +31,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.7.0/source.json": "20c34042beca8ea1e5996989dc163a75cb04ec4e75dc64f78d936497aea78e4b", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", - "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/source.json": "4a8115ea69dd796353232ff27a7e93e6d7d1ad43bea1eb33c6bd3acfa656bf2e", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/source.json": "7914a860fdf6ac399a3142fee2579184f0810fe0b7dee2eb9216ab72e6d8864e", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.3/MODULE.bazel": "20f53b145f40957a51077ae90b37b7ce83582a1daf9350349f0f86179e19dd0d", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.6/MODULE.bazel": "cafb8781ad591bc57cc765dca5fefab08cf9f65af363d162b79d49205c7f8af7", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", @@ -534,7 +535,7 @@ }, "@@aspect_rules_ts~//ts:extensions.bzl%ext": { "general": { - "bzlTransitiveDigest": "25n5BHszsoidcCJPv4PIOP5VHUNHHdu7CoI46TM/fGk=", + "bzlTransitiveDigest": "pEu5+6q07zdUqscbVkhWTNLGT9OGRpnFCF4OGHv1n1k=", "usagesDigest": "PB65rYTG/QbLoSQfRhLDeERG+0m7bjTPzYXBqieQ5/4=", "recordedFileInputs": { "@@rules_browsers~//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" @@ -594,11 +595,6 @@ "aspect_rules_ts", "aspect_rules_ts~" ], - [ - "aspect_rules_ts~", - "aspect_tools_telemetry_report", - "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" - ], [ "aspect_rules_ts~", "bazel_tools", @@ -610,7 +606,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "NoBcR/+eQ7MKZpK18FmGcKu3HepSaZ6doKSVjHJraTc=", + "usagesDigest": "gAZ4dZheYy/Vw50DLj0z0qQti9SneH4ffzao2GhlSak=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -621,7 +617,7 @@ "attributes": { "deps": { "aspect_rules_js": "2.7.0", - "aspect_rules_ts": "3.7.0", + "aspect_rules_ts": "3.7.1", "aspect_rules_esbuild": "0.24.0", "aspect_tools_telemetry": "0.2.8" } From 882698be8e1acdc9857767a290d1cd733040d564 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 5 Nov 2025 00:50:00 +0000 Subject: [PATCH 1736/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +-- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 308 ++++++++---------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 10 files changed, 206 insertions(+), 248 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 257f4e9799ae..eee4e99dd25b 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@64fbfea9823cf54d2caa96753ae0cb0745736f01 + - uses: angular/dev-infra/github-actions/branch-manager@75d22eaeab72c5f03da29038c3f367a36c42017a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f579b967c47e..f792d983cdd9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a 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@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - 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 eccca9c5dcb4..238eb0ea5d88 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@64fbfea9823cf54d2caa96753ae0cb0745736f01 + - uses: angular/dev-infra/github-actions/pull-request-labeling@75d22eaeab72c5f03da29038c3f367a36c42017a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@64fbfea9823cf54d2caa96753ae0cb0745736f01 + - uses: angular/dev-infra/github-actions/post-approval-changes@75d22eaeab72c5f03da29038c3f367a36c42017a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 43b6b3f2164f..bb703875e0d7 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@64fbfea9823cf54d2caa96753ae0cb0745736f01 + - uses: angular/dev-infra/github-actions/feature-request@75d22eaeab72c5f03da29038c3f367a36c42017a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c3fa94b64641..c062d0ebfc58 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@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - 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@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - 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 fffcf2fd8edd..93bb992d9cc1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/linting/licenses@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a - 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@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@64fbfea9823cf54d2caa96753ae0cb0745736f01 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a - 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/MODULE.bazel b/MODULE.bazel index de15bb4d4e6d..097c1f6714bd 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "64fbfea9823cf54d2caa96753ae0cb0745736f01", + commit = "75d22eaeab72c5f03da29038c3f367a36c42017a", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 414b2f1cc0fa..f49d7d56cf55 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-rc.0", "@angular/localize": "21.0.0-rc.0", "@angular/material": "21.0.0-rc.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#f3ab28388242df0aa4f44c8da303833914168118", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2a91d0e8e153f50fc072455c6dd52ac3fea664e6", "@angular/platform-browser": "21.0.0-rc.0", "@angular/platform-server": "21.0.0-rc.0", "@angular/router": "21.0.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dff9617cbec5..24731b0417a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#f3ab28388242df0aa4f44c8da303833914168118 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f3ab28388242df0aa4f44c8da303833914168118(@modelcontextprotocol/sdk@1.20.2) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2a91d0e8e153f50fc072455c6dd52ac3fea664e6 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.20.2) '@angular/platform-browser': specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -333,7 +333,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.6 - version: 4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.6(vitest@4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -342,7 +342,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -363,10 +363,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.19 - version: 5.1.19(@types/node@24.9.2) + version: 5.1.19(@types/node@24.10.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -420,7 +420,7 @@ importers: version: 0.2.15 vite: specifier: 7.1.12 - version: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -448,7 +448,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.6 - version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -467,10 +467,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.9.2) + version: 7.9.0(@types/node@24.10.0) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.2))(@types/node@24.9.2)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.20.2 version: 1.20.2 @@ -851,7 +851,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.9.0 - version: 7.9.0(@types/node@24.9.2) + version: 7.9.0(@types/node@24.10.0) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -1054,9 +1054,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/f3ab28388242df0aa4f44c8da303833914168118': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f3ab28388242df0aa4f44c8da303833914168118} - version: 0.0.0-64fbfea9823cf54d2caa96753ae0cb0745736f01 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6} + version: 0.0.0-75d22eaeab72c5f03da29038c3f367a36c42017a hasBin: true '@angular/platform-browser@21.0.0-rc.0': @@ -2661,8 +2661,8 @@ packages: resolution: {integrity: sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==} engines: {node: ^20.17.0 || >=22.9.0} - '@octokit/auth-app@8.1.1': - resolution: {integrity: sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA==} + '@octokit/auth-app@8.1.2': + resolution: {integrity: sha512-db8VO0PqXxfzI6GdjtgEFHY9tzqUql5xMFXYA12juq8TeTgPAuiiP3zid4h50lwlIP457p5+56PnJOgd2GGBuw==} engines: {node: '>= 20'} '@octokit/auth-oauth-app@9.0.3': @@ -2681,8 +2681,8 @@ packages: resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} - '@octokit/core@7.0.5': - resolution: {integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==} + '@octokit/core@7.0.6': + resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} engines: {node: '>= 20'} '@octokit/endpoint@11.0.2': @@ -2692,8 +2692,8 @@ packages: '@octokit/graphql-schema@15.26.0': resolution: {integrity: sha512-SoVbh+sXe9nsoweFbLT3tAk3XWYbYLs5ku05wij1zhyQ2U3lewdrhjo5Tb7lfaOGWNHSkPZT4uuPZp8neF7P7A==} - '@octokit/graphql@9.0.2': - resolution: {integrity: sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==} + '@octokit/graphql@9.0.3': + resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} engines: {node: '>= 20'} '@octokit/oauth-authorization-url@8.0.0': @@ -2704,18 +2704,9 @@ packages: resolution: {integrity: sha512-HiNOO3MqLxlt5Da5bZbLV8Zarnphi4y9XehrbaFMkcoJ+FL7sMxH/UlUsCVxpddVu4qvNDrBdaTVE2o4ITK8ng==} engines: {node: '>= 20'} - '@octokit/openapi-types@26.0.0': - resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} - '@octokit/openapi-types@27.0.0': resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} - '@octokit/plugin-paginate-rest@13.2.1': - resolution: {integrity: sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==} - engines: {node: '>= 20'} - peerDependencies: - '@octokit/core': '>=6' - '@octokit/plugin-paginate-rest@14.0.0': resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} engines: {node: '>= 20'} @@ -2728,22 +2719,12 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@16.1.1': - resolution: {integrity: sha512-VztDkhM0ketQYSh5Im3IcKWFZl7VIrrsCaHbDINkdYeiiAsJzjhS2xRFCSJgfN6VOcsoW4laMtsmf3HcNqIimg==} - engines: {node: '>= 20'} - peerDependencies: - '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@17.0.0': resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/request-error@7.0.1': - resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} - engines: {node: '>= 20'} - '@octokit/request-error@7.0.2': resolution: {integrity: sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==} engines: {node: '>= 20'} @@ -2752,13 +2733,10 @@ packages: resolution: {integrity: sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==} engines: {node: '>= 20'} - '@octokit/rest@22.0.0': - resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} + '@octokit/rest@22.0.1': + resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==} engines: {node: '>= 20'} - '@octokit/types@15.0.2': - resolution: {integrity: sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==} - '@octokit/types@16.0.0': resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} @@ -3471,8 +3449,8 @@ packages: '@types/node@22.19.0': resolution: {integrity: sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==} - '@types/node@24.9.2': - resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==} + '@types/node@24.10.0': + resolution: {integrity: sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -9234,22 +9212,22 @@ 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/f3ab28388242df0aa4f44c8da303833914168118(@modelcontextprotocol/sdk@1.20.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.20.2)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.9.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) - '@octokit/auth-app': 8.1.1 - '@octokit/core': 7.0.5 - '@octokit/graphql': 9.0.2 + '@inquirer/prompts': 7.9.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) + '@octokit/auth-app': 8.1.2 + '@octokit/core': 7.0.6 + '@octokit/graphql': 9.0.3 '@octokit/graphql-schema': 15.26.0 '@octokit/openapi-types': 27.0.0 - '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.5) - '@octokit/request-error': 7.0.1 - '@octokit/rest': 22.0.0 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) + '@octokit/request-error': 7.0.2 + '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 '@pnpm/dependency-path': 1001.1.3 '@types/cli-progress': 3.11.6 @@ -9258,7 +9236,7 @@ snapshots: '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 '@types/jasmine': 5.1.12 - '@types/node': 24.9.2 + '@types/node': 24.10.0 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.34 @@ -10686,128 +10664,128 @@ snapshots: '@inquirer/ansi@1.0.1': {} - '@inquirer/checkbox@4.3.0(@types/node@24.9.2)': + '@inquirer/checkbox@4.3.0(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.10.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/confirm@5.1.19(@types/node@24.9.2)': + '@inquirer/confirm@5.1.19(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/core@10.3.0(@types/node@24.9.2)': + '@inquirer/core@10.3.0(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.10.0) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/editor@4.2.21(@types/node@24.9.2)': + '@inquirer/editor@4.2.21(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/external-editor': 1.0.2(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/external-editor': 1.0.2(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/expand@4.0.21(@types/node@24.9.2)': + '@inquirer/expand@4.0.21(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/external-editor@1.0.2(@types/node@24.9.2)': + '@inquirer/external-editor@1.0.2(@types/node@24.10.0)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 '@inquirer/figures@1.0.14': {} - '@inquirer/input@4.2.5(@types/node@24.9.2)': + '@inquirer/input@4.2.5(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/number@3.0.21(@types/node@24.9.2)': + '@inquirer/number@3.0.21(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/password@4.0.21(@types/node@24.9.2)': + '@inquirer/password@4.0.21(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) optionalDependencies: - '@types/node': 24.9.2 - - '@inquirer/prompts@7.9.0(@types/node@24.9.2)': - dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.9.2) - '@inquirer/confirm': 5.1.19(@types/node@24.9.2) - '@inquirer/editor': 4.2.21(@types/node@24.9.2) - '@inquirer/expand': 4.0.21(@types/node@24.9.2) - '@inquirer/input': 4.2.5(@types/node@24.9.2) - '@inquirer/number': 3.0.21(@types/node@24.9.2) - '@inquirer/password': 4.0.21(@types/node@24.9.2) - '@inquirer/rawlist': 4.1.9(@types/node@24.9.2) - '@inquirer/search': 3.2.0(@types/node@24.9.2) - '@inquirer/select': 4.4.0(@types/node@24.9.2) + '@types/node': 24.10.0 + + '@inquirer/prompts@7.9.0(@types/node@24.10.0)': + dependencies: + '@inquirer/checkbox': 4.3.0(@types/node@24.10.0) + '@inquirer/confirm': 5.1.19(@types/node@24.10.0) + '@inquirer/editor': 4.2.21(@types/node@24.10.0) + '@inquirer/expand': 4.0.21(@types/node@24.10.0) + '@inquirer/input': 4.2.5(@types/node@24.10.0) + '@inquirer/number': 3.0.21(@types/node@24.10.0) + '@inquirer/password': 4.0.21(@types/node@24.10.0) + '@inquirer/rawlist': 4.1.9(@types/node@24.10.0) + '@inquirer/search': 3.2.0(@types/node@24.10.0) + '@inquirer/select': 4.4.0(@types/node@24.10.0) optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/rawlist@4.1.9(@types/node@24.9.2)': + '@inquirer/rawlist@4.1.9(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/search@3.2.0(@types/node@24.9.2)': + '@inquirer/search@3.2.0(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.10.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/select@4.4.0(@types/node@24.9.2)': + '@inquirer/select@4.4.0(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.2) + '@inquirer/core': 10.3.0(@types/node@24.10.0) '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/type': 3.0.9(@types/node@24.10.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 - '@inquirer/type@3.0.9(@types/node@24.9.2)': + '@inquirer/type@3.0.9(@types/node@24.10.0)': optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 '@isaacs/balanced-match@4.0.1': {} @@ -10899,10 +10877,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.9.2))(@types/node@24.9.2)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.9.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) + '@inquirer/prompts': 7.9.0(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11136,13 +11114,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@octokit/auth-app@8.1.1': + '@octokit/auth-app@8.1.2': dependencies: '@octokit/auth-oauth-app': 9.0.3 '@octokit/auth-oauth-user': 6.0.2 '@octokit/request': 10.0.6 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.2 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.2 universal-user-agent: 7.0.3 @@ -11172,13 +11150,13 @@ snapshots: '@octokit/auth-token@6.0.0': {} - '@octokit/core@7.0.5': + '@octokit/core@7.0.6': dependencies: '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.2 + '@octokit/graphql': 9.0.3 '@octokit/request': 10.0.6 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.2 + '@octokit/request-error': 7.0.2 + '@octokit/types': 16.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 @@ -11192,10 +11170,10 @@ snapshots: graphql: 16.12.0 graphql-tag: 2.12.6(graphql@16.12.0) - '@octokit/graphql@9.0.2': + '@octokit/graphql@9.0.3': dependencies: '@octokit/request': 10.0.6 - '@octokit/types': 15.0.2 + '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 '@octokit/oauth-authorization-url@8.0.0': {} @@ -11207,38 +11185,22 @@ snapshots: '@octokit/request-error': 7.0.2 '@octokit/types': 16.0.0 - '@octokit/openapi-types@26.0.0': {} - '@octokit/openapi-types@27.0.0': {} - '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.5)': - dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.2 - - '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.5)': + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 + '@octokit/core': 7.0.6 '@octokit/types': 16.0.0 - '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.5)': + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 + '@octokit/core': 7.0.6 - '@octokit/plugin-rest-endpoint-methods@16.1.1(@octokit/core@7.0.5)': + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.2 - - '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.5)': - dependencies: - '@octokit/core': 7.0.5 + '@octokit/core': 7.0.6 '@octokit/types': 16.0.0 - '@octokit/request-error@7.0.1': - dependencies: - '@octokit/types': 15.0.2 - '@octokit/request-error@7.0.2': dependencies: '@octokit/types': 16.0.0 @@ -11251,16 +11213,12 @@ snapshots: fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 - '@octokit/rest@22.0.0': - dependencies: - '@octokit/core': 7.0.5 - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) - '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.5) - '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.5) - - '@octokit/types@15.0.2': + '@octokit/rest@22.0.1': dependencies: - '@octokit/openapi-types': 26.0.0 + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) '@octokit/types@16.0.0': dependencies: @@ -11899,7 +11857,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.9.2': + '@types/node@24.10.0': dependencies: undici-types: 7.16.0 @@ -12274,11 +12232,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.6 @@ -12291,7 +12249,7 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12304,13 +12262,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.6 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.6': dependencies: @@ -18160,7 +18118,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18169,7 +18127,7 @@ snapshots: rollup: 4.52.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18178,10 +18136,10 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.6 - '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.6 '@vitest/runner': 4.0.6 '@vitest/snapshot': 4.0.6 @@ -18198,10 +18156,10 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.9.2 + '@types/node': 24.10.0 jsdom: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 628787497a4f..382d9438b016 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#7547f3a3db1513cc1922c1af86fc04d01223f863", - "@angular/cdk": "github:angular/cdk-builds#0097a8fee9403000bc60b1a4c531d10875f71848", - "@angular/common": "github:angular/common-builds#65fe992cd8d7a5777487111b74bb553d32a92eff", - "@angular/compiler": "github:angular/compiler-builds#f128f40d82ca26deb0ace4cd47c8cf038e08968d", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#85d1ac8d2866ce5ba24619fa8e72726a56a0fc4b", - "@angular/core": "github:angular/core-builds#14103ef825a5a76bbe98957cbc6ce95c0e35abc8", - "@angular/forms": "github:angular/forms-builds#083b52bdb0c9becc785169424c7f94e194b3fba3", - "@angular/language-service": "github:angular/language-service-builds#70d6e527e626cc1d6a8d157d1036521b3c7e4d01", - "@angular/localize": "github:angular/localize-builds#f45aee420f840a4bbfa21a0cb59c50a65c67fc80", - "@angular/material": "github:angular/material-builds#2475f0d90005dca37a56d2dce0868a3ffe498513", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#50aa5ad97fb7738bc8755f014bfa2af72028ad74", - "@angular/platform-browser": "github:angular/platform-browser-builds#975983243b9b3a78c85a342d74022ed4b0677590", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#1d48689d07fd2a5396fdc27e38ae8a2f58ddca77", - "@angular/platform-server": "github:angular/platform-server-builds#e7401d395789da22ac3f84befdcc4815b2543a00", - "@angular/router": "github:angular/router-builds#63f1a11129243a9f1cdefdeef8b002ba89cc85c2", - "@angular/service-worker": "github:angular/service-worker-builds#943f0abd9f515ecd0be95ad3cbbf08e3a3ea4b31" + "@angular/animations": "github:angular/animations-builds#6ac4d0bcc953794d22d66b521ac608fe385e0a7a", + "@angular/cdk": "github:angular/cdk-builds#a118b7b8d97e031d7b7205cbc14e3de0a5b1038a", + "@angular/common": "github:angular/common-builds#098ac8c5dc62dc2069672aa482fb47f84cb88b8a", + "@angular/compiler": "github:angular/compiler-builds#a3729e5a3baf9347a63c4ca1245264d445bbfd27", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#0bc40efbd87d4cbf2011874237032ab0870ac5a6", + "@angular/core": "github:angular/core-builds#d0375d5cb400fefc8396dd06932a8898b453c20a", + "@angular/forms": "github:angular/forms-builds#daf7fbe7f8559d46ef091f89fe00aab69af7cf20", + "@angular/language-service": "github:angular/language-service-builds#05d3d4a00eb76a4d543e4e5f2a34608d197c851a", + "@angular/localize": "github:angular/localize-builds#c53812136dd2f9d3e238d310784ff54d40d1ae81", + "@angular/material": "github:angular/material-builds#03117cb9d69fae1a4a7c16c5b118b8c1fe3c43da", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ca1026c9e2bdd9ce601de1b16fe29a10065f0d66", + "@angular/platform-browser": "github:angular/platform-browser-builds#8841c54bb7303f5278aeafaa7936f43a0f045ccf", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#d39a9009cfefe54454e088ab155682425c1cfc08", + "@angular/platform-server": "github:angular/platform-server-builds#767b4aaa5d29634cd06707ab825138cc1838f905", + "@angular/router": "github:angular/router-builds#afa6892ff46ed2e11fcb6d2cbb091df7f2f62161", + "@angular/service-worker": "github:angular/service-worker-builds#48315dc2e237cf776438482b241f87f19a616cba" } } From ae1b00db177c99a1dd217fccfa1fec302a8b69ca Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:58:48 -0500 Subject: [PATCH 1737/2162] refactor(@angular/build): improve vitest `runnerConfig` support via plugin Refactors the Vitest unit test runner to use a dedicated plugin for merging builder-defined configurations with user-provided configurations from a `runnerConfig` file. Previously, the configuration merging logic was handled directly in the executor, which had limitations and did not always correctly apply user overrides. By moving this logic into a Vitest plugin, we leverage Vitest's intended extension mechanism, ensuring a more robust and predictable merge of configurations. This significantly improves the ability for users to customize their test setup. Adds a new test suite to verify that common custom configurations, such as custom reporters, file exclusions, option overrides, and environment settings, are correctly applied from a `vitest.config.ts` file. --- .../unit-test/runners/vitest/executor.ts | 89 +++-------- .../unit-test/runners/vitest/plugins.ts | 95 +++++++++++- .../behavior/runner-config-vitest_spec.ts | 146 ++++++++++++++++++ 3 files changed, 256 insertions(+), 74 deletions(-) create mode 100644 packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 7e1e931f6c3a..3f9640142e37 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -10,9 +10,8 @@ import type { BuilderOutput } from '@angular-devkit/architect'; import assert from 'node:assert'; import path from 'node:path'; import { isMatch } from 'picomatch'; -import type { InlineConfig, Vitest } from 'vitest/node'; +import type { Vitest } from 'vitest/node'; import { assertIsError } from '../../../../utils/error'; -import { toPosixPath } from '../../../../utils/path'; import { type FullResult, type IncrementalResult, @@ -23,9 +22,7 @@ import { NormalizedUnitTestBuilderOptions } from '../../options'; import type { TestExecutor } from '../api'; import { setupBrowserConfiguration } from './browser-provider'; import { findVitestBaseConfig } from './configuration'; -import { createVitestPlugins } from './plugins'; - -type VitestCoverageOption = Exclude; +import { createVitestConfigPlugin, createVitestPlugins } from './plugins'; export class VitestExecutor implements TestExecutor { private vitest: Vitest | undefined; @@ -89,7 +86,9 @@ export class VitestExecutor implements TestExecutor { if (source) { modifiedSourceFiles.add(source); } - vitest.invalidateFile(toPosixPath(path.join(this.options.workspaceRoot, modifiedFile))); + vitest.invalidateFile( + this.normalizePath(path.join(this.options.workspaceRoot, modifiedFile)), + ); } const specsToRerun = []; @@ -141,6 +140,7 @@ export class VitestExecutor implements TestExecutor { browserViewport, ui, } = this.options; + const projectName = this.projectName; let vitestNodeModule; try { @@ -173,12 +173,10 @@ export class VitestExecutor implements TestExecutor { ); const testSetupFiles = this.prepareSetupFiles(); - const plugins = createVitestPlugins({ + const projectPlugins = createVitestPlugins({ workspaceRoot, projectSourceRoot: this.options.projectSourceRoot, - projectName: this.projectName, - include: this.options.include, - exclude: this.options.exclude, + projectName, buildResultFiles: this.buildResultFiles, testFileToEntryPoint: this.testFileToEntryPoint, }); @@ -196,7 +194,6 @@ export class VitestExecutor implements TestExecutor { runnerConfig === true ? await findVitestBaseConfig([this.options.projectRoot, this.options.workspaceRoot]) : runnerConfig; - const projectName = this.projectName; return startVitest( 'test', @@ -212,71 +209,23 @@ export class VitestExecutor implements TestExecutor { ...debugOptions, }, { - test: { - coverage: await generateCoverageOption(coverage, this.projectName), - ...(reporters ? { reporters } : {}), - projects: [ - { - extends: externalConfigPath || true, - test: { - name: projectName, - globals: true, - setupFiles: testSetupFiles, - ...(this.options.exclude ? { exclude: this.options.exclude } : {}), - browser: browserOptions.browser, - // Use `jsdom` if no browsers are explicitly configured. - ...(browserOptions.browser ? {} : { environment: 'jsdom' }), - ...(this.options.include ? { include: this.options.include } : {}), - }, - optimizeDeps: { - noDiscovery: true, - }, - plugins, - }, - ], - }, server: { // Disable the actual file watcher. The boolean watch option above should still // be enabled as it controls other internal behavior related to rerunning tests. watch: null, }, + plugins: [ + createVitestConfigPlugin({ + browser: browserOptions.browser, + coverage, + projectName, + reporters, + setupFiles: testSetupFiles, + projectPlugins, + include: [...this.testFileToEntryPoint.keys()], + }), + ], }, ); } } - -async function generateCoverageOption( - coverage: NormalizedUnitTestBuilderOptions['coverage'], - projectName: string, -): Promise { - let defaultExcludes: string[] = []; - if (coverage.exclude) { - try { - const vitestConfig = await import('vitest/config'); - defaultExcludes = vitestConfig.coverageConfigDefaults.exclude; - } catch {} - } - - return { - enabled: coverage.enabled, - excludeAfterRemap: true, - include: coverage.include, - reportsDirectory: toPosixPath(path.join('coverage', projectName)), - thresholds: coverage.thresholds, - watermarks: coverage.watermarks, - // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures - ...(coverage.exclude - ? { - exclude: [ - // Augment the default exclude https://vitest.dev/config/#coverage-exclude - // with the user defined exclusions - ...coverage.exclude, - ...defaultExcludes, - ], - } - : {}), - ...(coverage.reporters - ? ({ reporter: coverage.reporters } satisfies VitestCoverageOption) - : {}), - }; -} diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index fd06475e6980..22f3eeb77922 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -9,12 +9,16 @@ import assert from 'node:assert'; import { readFile } from 'node:fs/promises'; import path from 'node:path'; -import type { VitestPlugin } from 'vitest/node'; +import type { + BrowserConfigOptions, + InlineConfig, + UserWorkspaceConfig, + VitestPlugin, +} from 'vitest/node'; import { createBuildAssetsMiddleware } from '../../../../tools/vite/middlewares/assets-middleware'; import { toPosixPath } from '../../../../utils/path'; import type { ResultFile } from '../../../application/results'; import type { NormalizedUnitTestBuilderOptions } from '../../options'; -import type { BrowserConfiguration } from './browser-provider'; type VitestPlugins = Awaited>; @@ -22,12 +26,59 @@ interface PluginOptions { workspaceRoot: string; projectSourceRoot: string; projectName: string; - include?: string[]; - exclude?: string[]; buildResultFiles: ReadonlyMap; testFileToEntryPoint: ReadonlyMap; } +type VitestCoverageOption = Exclude; + +interface VitestConfigPluginOptions { + browser: BrowserConfigOptions | undefined; + coverage: NormalizedUnitTestBuilderOptions['coverage']; + projectName: string; + reporters?: string[] | [string, object][]; + setupFiles: string[]; + projectPlugins: VitestPlugins; + include: string[]; +} + +export function createVitestConfigPlugin(options: VitestConfigPluginOptions): VitestPlugins[0] { + const { include, browser, projectName, reporters, setupFiles, projectPlugins } = options; + + return { + name: 'angular:vitest-configuration', + async config(config) { + const testConfig = config.test; + + const projectConfig: UserWorkspaceConfig = { + test: { + ...testConfig, + name: projectName, + setupFiles, + include, + globals: testConfig?.globals ?? true, + ...(browser ? { browser } : {}), + // If the user has not specified an environment, use `jsdom`. + ...(!testConfig?.environment ? { environment: 'jsdom' } : {}), + }, + optimizeDeps: { + noDiscovery: true, + }, + plugins: projectPlugins, + }; + + return { + test: { + coverage: await generateCoverageOption(options.coverage, projectName), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...(reporters ? ({ reporters } as any) : {}), + projects: [projectConfig], + }, + }; + }, + }; +} + export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins { const { workspaceRoot, buildResultFiles, testFileToEntryPoint } = pluginOptions; @@ -134,3 +185,39 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins }, ]; } + +async function generateCoverageOption( + coverage: NormalizedUnitTestBuilderOptions['coverage'], + projectName: string, +): Promise { + let defaultExcludes: string[] = []; + if (coverage.exclude) { + try { + const vitestConfig = await import('vitest/config'); + defaultExcludes = vitestConfig.coverageConfigDefaults.exclude; + } catch {} + } + + return { + enabled: coverage.enabled, + excludeAfterRemap: true, + include: coverage.include, + reportsDirectory: toPosixPath(path.join('coverage', projectName)), + thresholds: coverage.thresholds, + watermarks: coverage.watermarks, + // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures + ...(coverage.exclude + ? { + exclude: [ + // Augment the default exclude https://vitest.dev/config/#coverage-exclude + // with the user defined exclusions + ...coverage.exclude, + ...defaultExcludes, + ], + } + : {}), + ...(coverage.reporters + ? ({ reporter: coverage.reporters } satisfies VitestCoverageOption) + : {}), + }; +} diff --git a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts new file mode 100644 index 000000000000..e2a50001dd9e --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts @@ -0,0 +1,146 @@ +/** + * @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, + describeBuilder, + UNIT_TEST_BUILDER_INFO, + setupApplicationTarget, +} from '../setup'; + +const VITEST_CONFIG_CONTENT = ` +import { defineConfig } from 'vitest/config'; +export default defineConfig({ + test: { + reporters: [['junit', { outputFile: './vitest-results.xml' }]], + }, +}); +`; + +describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { + describe('Behavior: "runnerConfig with Vitest runner"', () => { + beforeEach(() => { + setupApplicationTarget(harness); + }); + + it('should use custom reporters defined in runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile('vitest.config.ts', VITEST_CONFIG_CONTENT); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + harness.expectFile('vitest-results.xml').toExist(); + }); + + it('should exclude test files based on runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + exclude: ['src/app/app.component.spec.ts'], + reporters: ['default', ['json', { outputFile: 'vitest-results.json' }]], + }, + }); + `, + ); + + // Create a second test file that should be executed + harness.writeFile( + 'src/app/app-second.spec.ts', + ` + import { TestBed } from '@angular/core/testing'; + import { AppComponent } from './app.component'; + + describe('AppComponent', () => { + beforeEach(() => TestBed.configureTestingModule({ + declarations: [AppComponent], + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + const results = JSON.parse(harness.readFile('vitest-results.json')); + expect(results.numPassedTests).toBe(1); + }); + it('should allow overriding builder options via runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + globals: false, + }, + }); + `, + ); + + // This test will fail if globals are enabled, because `test` will not be defined. + harness.writeFile( + 'src/app/app.component.spec.ts', + ` + import { vi, test, expect } from 'vitest'; + test('should pass', () => { + expect(true).toBe(true); + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeFalse(); + }); + + it('should fail when a DOM-dependent test is run in a node environment', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + environment: 'node', + }, + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeFalse(); + }); + }); +}); From ff190db95eed85d6822d6284f73f7130b40788a6 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 5 Nov 2025 14:50:37 +0000 Subject: [PATCH 1738/2162] docs: release notes for the v20.3.9 release --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2607536c325..8e460db18e6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ + + +# 20.3.9 (2025-11-05) + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | +| [08e07e338](https://github.com/angular/angular-cli/commit/08e07e338edd799400e18cd62cd131b6d408f4cf) | fix | improve locale handling in app-engine | +| [683697ebc](https://github.com/angular/angular-cli/commit/683697ebc5e129d2b17bded9e4ff318d598e0bd3) | fix | improve route matching for wildcard routes | + + + # 21.0.0-rc.0 (2025-10-30) From b1bbd646a7e0971d1851ed87cc3a2276945514d4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 5 Nov 2025 15:03:53 +0000 Subject: [PATCH 1739/2162] docs: release notes for the v21.0.0-rc.1 release --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e460db18e6b..22b275a5128b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,37 @@ + + +# 21.0.0-rc.1 (2025-11-05) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------ | +| [dfb4242b3](https://github.com/angular/angular-cli/commit/dfb4242b347365f3a2c6d006f07a16c982ff4dbe) | fix | add vitest to version command output | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | +| [f89750b27](https://github.com/angular/angular-cli/commit/f89750b27866c307da546fe4f33da980693ca5c1) | fix | add `addImports` option to jasmine-vitest schematic | +| [515b09c4f](https://github.com/angular/angular-cli/commit/515b09c4f28ef1c2eb911cb73135a6086dcab3c9) | fix | add Vitest config generation and runner checks | +| [0e83fe1a8](https://github.com/angular/angular-cli/commit/0e83fe1a87cc3dcbc9daa4440a050ae6aafc8042) | fix | add warnings and improve Karma config generation | +| [b91fa31f2](https://github.com/angular/angular-cli/commit/b91fa31f20b49ead021c72c271f67da38b340584) | fix | align Karma project generation with unified unit-test builder | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | +| [62938e799](https://github.com/angular/angular-cli/commit/62938e79977d14045b7883d459d786dbb8d4d7ee) | fix | update vitest to 4.0.6 and remove coverage workaround | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | +| [5d76d84e6](https://github.com/angular/angular-cli/commit/5d76d84e64db717e177b77f7a07ee8819b258877) | fix | improve locale handling in app-engine | +| [4a3cfdfce](https://github.com/angular/angular-cli/commit/4a3cfdfce75b7cedf64e26d85b0a92ec92ddd12d) | fix | improve route matching for wildcard routes | + + + # 20.3.9 (2025-11-05) From 11569c2df89b5a643de19eeaf9d3c99053af50eb Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 5 Nov 2025 15:36:57 +0000 Subject: [PATCH 1740/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 8 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 336 ++++++++++++++------------- 5 files changed, 182 insertions(+), 170 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 64a02aa63ba3..532534e75a5c 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,9 +4,9 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", - "@vitest/coverage-v8": "4.0.6", + "@vitest/coverage-v8": "4.0.7", "jsdom": "27.1.0", "rxjs": "7.8.2", - "vitest": "4.0.6" + "vitest": "4.0.7" } } diff --git a/package.json b/package.json index f49d7d56cf55..2a45ab656476 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "@bazel/buildifier": "8.2.1", "@eslint/compat": "1.4.1", "@eslint/eslintrc": "3.3.1", - "@eslint/js": "9.39.0", + "@eslint/js": "9.39.1", "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", @@ -92,14 +92,14 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.46.2", - "@typescript-eslint/parser": "8.46.2", + "@typescript-eslint/eslint-plugin": "8.46.3", + "@typescript-eslint/parser": "8.46.3", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", "esbuild": "0.25.12", "esbuild-wasm": "0.25.12", - "eslint": "9.39.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 5145951460a7..5c2046bc1137 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -56,7 +56,7 @@ "ng-packagr": "21.0.0-rc.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.6" + "vitest": "4.0.7" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index bf10e83ee30b..bfa371a8d796 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.9.0", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.20.2", + "@modelcontextprotocol/sdk": "1.21.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.42.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24731b0417a6..902b214c5b98 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2a91d0e8e153f50fc072455c6dd52ac3fea664e6 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.20.2) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.0) '@angular/platform-browser': specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -72,13 +72,13 @@ importers: version: 8.2.1 '@eslint/compat': specifier: 1.4.1 - version: 1.4.1(eslint@9.39.0(jiti@2.6.1)) + version: 1.4.1(eslint@9.39.1(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 '@eslint/js': - specifier: 9.39.0 - version: 9.39.0 + specifier: 9.39.1 + version: 9.39.1 '@rollup/plugin-alias': specifier: ^6.0.0 version: 6.0.0(rollup@4.52.5) @@ -93,7 +93,7 @@ importers: version: 16.0.3(rollup@4.52.5) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.5.0(eslint@9.39.0(jiti@2.6.1)) + version: 5.5.0(eslint@9.39.1(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.46.2 - version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.3 + version: 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.2 - version: 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.3 + version: 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -185,17 +185,17 @@ importers: specifier: 0.25.12 version: 0.25.12 eslint: - specifier: 9.39.0 - version: 9.39.0(jiti@2.6.1) + specifier: 9.39.1 + version: 9.39.1(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.39.0(jiti@2.6.1)) + version: 10.1.8(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.39.0(jiti@2.6.1)) + version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.6 - version: 4.0.6(vitest@4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.7 + version: 4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -341,8 +341,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.6 - version: 4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.7 + version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -447,8 +447,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.6 - version: 4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.7 + version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -472,8 +472,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.20.2 - version: 1.20.2 + specifier: 1.21.0 + version: 1.21.0 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -1887,8 +1887,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.0': - resolution: {integrity: sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==} + '@eslint/js@9.39.1': + resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -2450,9 +2450,14 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.20.2': - resolution: {integrity: sha512-6rqTdFt67AAAzln3NOKsXRmv5ZzPkgbfaebKBqUbts7vK1GZudqnrun5a8d3M/h955cam9RHZ6Jb4Y1XhnmFPg==} + '@modelcontextprotocol/sdk@1.21.0': + resolution: {integrity: sha512-YFBsXJMFCyI1zP98u7gezMFKX4lgu/XpoZJk7ufI6UlFKXLj2hAMUuRlQX/nrmIPOmhRrG6tw2OQ2ZA/ZlXYpQ==} engines: {node: '>=18'} + peerDependencies: + '@cfworker/json-schema': ^4.1.1 + peerDependenciesMeta: + '@cfworker/json-schema': + optional: true '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} @@ -3554,39 +3559,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.46.2': - resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} + '@typescript-eslint/eslint-plugin@8.46.3': + resolution: {integrity: sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.2 + '@typescript-eslint/parser': ^8.46.3 eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/parser@8.46.2': - resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + '@typescript-eslint/parser@8.46.3': + resolution: {integrity: sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/project-service@8.46.2': - resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + '@typescript-eslint/project-service@8.46.3': + resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/scope-manager@8.46.2': - resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + '@typescript-eslint/scope-manager@8.46.3': + resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.2': - resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + '@typescript-eslint/tsconfig-utils@8.46.3': + resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2': - resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} + '@typescript-eslint/type-utils@8.46.3': + resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3596,21 +3601,25 @@ packages: resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.2': - resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + '@typescript-eslint/types@8.46.3': + resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.3': + resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.9.3 - '@typescript-eslint/utils@8.46.2': - resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} + '@typescript-eslint/utils@8.46.3': + resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/visitor-keys@8.46.2': - resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + '@typescript-eslint/visitor-keys@8.46.3': + resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.24': @@ -3698,20 +3707,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.6': - resolution: {integrity: sha512-cv6pFXj9/Otk7q1Ocoj8k3BUVVwnFr3jqcqpwYrU5LkKClU9DpaMEdX+zptx/RyIJS+/VpoxMWmfISXchmVDPQ==} + '@vitest/coverage-v8@4.0.7': + resolution: {integrity: sha512-MXc+kEA5EUwMMGmNt1S6CIOEl/iCmAhGZQq1QgMNC3/QpYSOxkysEi6pxWhkqJ7YT/RduoVEV5rxFxHG18V3LA==} peerDependencies: - '@vitest/browser': 4.0.6 - vitest: 4.0.6 + '@vitest/browser': 4.0.7 + vitest: 4.0.7 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.6': - resolution: {integrity: sha512-5j8UUlBVhOjhj4lR2Nt9sEV8b4WtbcYh8vnfhTNA2Kn5+smtevzjNq+xlBuVhnFGXiyPPNzGrOVvmyHWkS5QGg==} + '@vitest/expect@4.0.7': + resolution: {integrity: sha512-jGRG6HghnJDjljdjYIoVzX17S6uCVCBRFnsgdLGJ6CaxfPh8kzUKe/2n533y4O/aeZ/sIr7q7GbuEbeGDsWv4Q==} - '@vitest/mocker@4.0.6': - resolution: {integrity: sha512-3COEIew5HqdzBFEYN9+u0dT3i/NCwppLnO1HkjGfAP1Vs3vti1Hxm/MvcbC4DAn3Szo1M7M3otiAaT83jvqIjA==} + '@vitest/mocker@4.0.7': + resolution: {integrity: sha512-OsDwLS7WnpuNslOV6bJkXVYVV/6RSc4eeVxV7h9wxQPNxnjRvTTrIikfwCbMyl8XJmW6oOccBj2Q07YwZtQcCw==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3721,20 +3730,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.6': - resolution: {integrity: sha512-4vptgNkLIA1W1Nn5X4x8rLJBzPiJwnPc+awKtfBE5hNMVsoAl/JCCPPzNrbf+L4NKgklsis5Yp2gYa+XAS442g==} + '@vitest/pretty-format@4.0.7': + resolution: {integrity: sha512-YY//yxqTmk29+/pK+Wi1UB4DUH3lSVgIm+M10rAJ74pOSMgT7rydMSc+vFuq9LjZLhFvVEXir8EcqMke3SVM6Q==} - '@vitest/runner@4.0.6': - resolution: {integrity: sha512-trPk5qpd7Jj+AiLZbV/e+KiiaGXZ8ECsRxtnPnCrJr9OW2mLB72Cb824IXgxVz/mVU3Aj4VebY+tDTPn++j1Og==} + '@vitest/runner@4.0.7': + resolution: {integrity: sha512-orU1lsu4PxLEcDWfjVCNGIedOSF/YtZ+XMrd1PZb90E68khWCNzD8y1dtxtgd0hyBIQk8XggteKN/38VQLvzuw==} - '@vitest/snapshot@4.0.6': - resolution: {integrity: sha512-PaYLt7n2YzuvxhulDDu6c9EosiRuIE+FI2ECKs6yvHyhoga+2TBWI8dwBjs+IeuQaMtZTfioa9tj3uZb7nev1g==} + '@vitest/snapshot@4.0.7': + resolution: {integrity: sha512-xJL+Nkw0OjaUXXQf13B8iKK5pI9QVtN9uOtzNHYuG/o/B7fIEg0DQ+xOe0/RcqwDEI15rud1k7y5xznBKGUXAA==} - '@vitest/spy@4.0.6': - resolution: {integrity: sha512-g9jTUYPV1LtRPRCQfhbMintW7BTQz1n6WXYQYRQ25qkyffA4bjVXjkROokZnv7t07OqfaFKw1lPzqKGk1hmNuQ==} + '@vitest/spy@4.0.7': + resolution: {integrity: sha512-FW4X8hzIEn4z+HublB4hBF/FhCVaXfIHm8sUfvlznrcy1MQG7VooBgZPMtVCGZtHi0yl3KESaXTqsKh16d8cFg==} - '@vitest/utils@4.0.6': - resolution: {integrity: sha512-bG43VS3iYKrMIZXBo+y8Pti0O7uNju3KvNn6DrQWhQQKcLavMB+0NZfO1/QBAEbq0MaQ3QjNsnnXlGQvsh0Z6A==} + '@vitest/utils@4.0.7': + resolution: {integrity: sha512-HNrg9CM/Z4ZWB6RuExhuC6FPmLipiShKVMnT9JlQvfhwR47JatWLChA6mtZqVHqypE6p/z6ofcjbyWpM7YLxPQ==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -5175,8 +5184,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.0: - resolution: {integrity: sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==} + eslint@9.39.1: + resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -8626,18 +8635,18 @@ packages: yaml: optional: true - vitest@4.0.6: - resolution: {integrity: sha512-gR7INfiVRwnEOkCk47faros/9McCZMp5LM+OMNWGLaDBSvJxIzwjgNFufkuePBNaesGRnLmNfW+ddbUJRZn0nQ==} + vitest@4.0.7: + resolution: {integrity: sha512-xQroKAadK503CrmbzCISvQUjeuvEZzv6U0wlnlVFOi5i3gnzfH4onyQ29f3lzpe0FresAiTAd3aqK0Bi/jLI8w==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.6 - '@vitest/browser-preview': 4.0.6 - '@vitest/browser-webdriverio': 4.0.6 - '@vitest/ui': 4.0.6 + '@vitest/browser-playwright': 4.0.7 + '@vitest/browser-preview': 4.0.7 + '@vitest/browser-webdriverio': 4.0.7 + '@vitest/ui': 4.0.7 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9212,11 +9221,11 @@ 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/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.20.2)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.21.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.9.0(@types/node@24.10.0) '@inquirer/type': 3.0.9(@types/node@24.10.0) '@octokit/auth-app': 8.1.2 @@ -10181,18 +10190,18 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.1(eslint@9.39.0(jiti@2.6.1))': + '@eslint/compat@1.4.1(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint/core': 0.17.0 optionalDependencies: - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) '@eslint/config-array@0.21.1': dependencies: @@ -10224,7 +10233,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.39.0': {} + '@eslint/js@9.39.1': {} '@eslint/object-schema@2.1.7': {} @@ -10614,12 +10623,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.20.2)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.21.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.20.2 + '@modelcontextprotocol/sdk': 1.21.0 transitivePeerDependencies: - bufferutil - supports-color @@ -10906,9 +10915,10 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.3': optional: true - '@modelcontextprotocol/sdk@1.20.2': + '@modelcontextprotocol/sdk@1.21.0': dependencies: - ajv: 6.12.6 + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 cors: 2.8.5 cross-spawn: 7.0.6 @@ -11586,11 +11596,11 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@stylistic/eslint-plugin@5.5.0(eslint@9.39.0(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@typescript-eslint/types': 8.46.2 - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -11979,15 +11989,15 @@ snapshots: '@types/node': 22.19.0 optional: true - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.39.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.3 + '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.3 + eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -11996,43 +12006,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/scope-manager': 8.46.3 + '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.3 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.3(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) + '@typescript-eslint/types': 8.46.3 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.2': + '@typescript-eslint/scope-manager@8.46.3': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/visitor-keys': 8.46.3 - '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12040,12 +12050,14 @@ snapshots: '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': + '@typescript-eslint/types@8.46.3': {} + + '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/project-service': 8.46.3(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) + '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/visitor-keys': 8.46.3 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12056,20 +12068,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.39.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.46.3 + '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) + eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.2': + '@typescript-eslint/visitor-keys@8.46.3': dependencies: - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.3 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.24': @@ -12236,10 +12248,10 @@ snapshots: dependencies: vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.6(vitest@4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.6 + '@vitest/utils': 4.0.7 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -12249,47 +12261,47 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.6': + '@vitest/expect@4.0.7': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.6 - '@vitest/utils': 4.0.6 + '@vitest/spy': 4.0.7 + '@vitest/utils': 4.0.7 chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.6 + '@vitest/spy': 4.0.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.6': + '@vitest/pretty-format@4.0.7': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.6': + '@vitest/runner@4.0.7': dependencies: - '@vitest/utils': 4.0.6 + '@vitest/utils': 4.0.7 pathe: 2.0.3 - '@vitest/snapshot@4.0.6': + '@vitest/snapshot@4.0.7': dependencies: - '@vitest/pretty-format': 4.0.6 + '@vitest/pretty-format': 4.0.7 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.6': {} + '@vitest/spy@4.0.7': {} - '@vitest/utils@4.0.6': + '@vitest/utils@4.0.7': dependencies: - '@vitest/pretty-format': 4.0.6 + '@vitest/pretty-format': 4.0.7 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -13972,9 +13984,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.39.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -13984,21 +13996,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.39.0(jiti@2.6.1)): + eslint-plugin-header@3.1.1(eslint@9.39.1(jiti@2.6.1)): dependencies: - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14007,9 +14019,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.0(jiti@2.6.1) + eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14021,7 +14033,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14041,15 +14053,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.0(jiti@2.6.1): + eslint@9.39.1(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.39.0 + '@eslint/js': 9.39.1 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 @@ -14230,7 +14242,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -18136,15 +18148,15 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.6(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.6 - '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.6 - '@vitest/runner': 4.0.6 - '@vitest/snapshot': 4.0.6 - '@vitest/spy': 4.0.6 - '@vitest/utils': 4.0.6 + '@vitest/expect': 4.0.7 + '@vitest/mocker': 4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.7 + '@vitest/runner': 4.0.7 + '@vitest/snapshot': 4.0.7 + '@vitest/spy': 4.0.7 + '@vitest/utils': 4.0.7 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 From ea4fb9dc22b3bf9fbcc4c495b905dc0832ff1578 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:31:15 -0500 Subject: [PATCH 1741/2162] fix(@angular/cli): promote zoneless migration MCP tool to stable The zoneless migration tool has been moved from the experimental to the stable toolset within the MCP server, making it available by default. --- packages/angular/cli/src/commands/mcp/mcp-server.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index 9f84bcf55704..8a006c98be60 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -30,13 +30,14 @@ const STABLE_TOOLS = [ DOC_SEARCH_TOOL, FIND_EXAMPLE_TOOL, LIST_PROJECTS_TOOL, + ZONELESS_MIGRATION_TOOL, ] as const; /** * The set of tools that are available but not enabled by default. * These tools are considered experimental and may have limitations. */ -export const EXPERIMENTAL_TOOLS = [MODERNIZE_TOOL, ZONELESS_MIGRATION_TOOL] as const; +export const EXPERIMENTAL_TOOLS = [MODERNIZE_TOOL] as const; export async function createMcpServer( options: { From 50072cd90ed703b10f5cbd10790c48471ddbac25 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 5 Nov 2025 16:19:47 -0500 Subject: [PATCH 1742/2162] fix(@angular/build): add webcontainer support for Vitest browser provider Currently, Vitest's browser providers (playwright, webdriverio) are not compatible with webcontainer environments. This change introduces detection for webcontainers and and automatically configures the Vitest unit test builder to use the `@vitest/browser-preview` provider when running within a webcontainer. This ensures that browser-based unit tests can execute correctly in webcontainer environments, providing a more consistent development experience across different platforms. The user is notified when the webcontainer environment is detected and the preview provider is activated. Dependency checks are also updated to ensure the correct `@vitest/browser-preview` package is installed when needed. --- .../runners/vitest/browser-provider.ts | 15 ++++++++++++--- .../unit-test/runners/vitest/index.ts | 19 +++++++++++++++---- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index be2fc3da22f7..da1827790794 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -18,12 +18,16 @@ export interface BrowserConfiguration { function findBrowserProvider( projectResolver: NodeJS.RequireResolve, ): BrowserBuiltinProvider | undefined { + const requiresPreview = !!process.versions.webcontainer; + // One of these must be installed in the project to use browser testing - const vitestBuiltinProviders = ['playwright', 'webdriverio'] as const; + const vitestBuiltinProviders = requiresPreview + ? (['preview'] as const) + : (['playwright', 'webdriverio', 'preview'] as const); for (const providerName of vitestBuiltinProviders) { try { - projectResolver(providerName); + projectResolver(`@vitest/browser-${providerName}`); return providerName; } catch {} @@ -102,13 +106,18 @@ export async function setupBrowserConfiguration( } const isCI = !!process.env['CI']; - const headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless')); + let headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless')); + if (providerName === 'preview') { + // `preview` provider does not support headless mode + headless = false; + } const browser = { enabled: true, provider, headless, ui: !headless, + isolate: debug, viewport, instances: browsers.map((browserName) => ({ browser: normalizeBrowserName(browserName), diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index a36b75331388..6ff67a56563c 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -23,10 +23,15 @@ const VitestTestRunner: TestRunner = { checker.check('vitest'); if (options.browsers?.length) { - checker.checkAny( - ['playwright', 'webdriverio'], - 'The "browsers" option requires either "playwright" or "webdriverio" to be installed.', - ); + if (process.versions.webcontainer) { + checker.check('@vitest/browser-preview'); + } else { + checker.checkAny( + ['@vitest/browser-playwright', '@vitest/browser-webdriverio', '@vitest/browser-preview'], + 'The "browsers" option requires either ' + + '"@vitest/browser-playwright", "@vitest/browser-webdriverio", or "@vitest/browser-preview" to be installed.', + ); + } } else { // JSDOM is used when no browsers are specified checker.check('jsdom'); @@ -47,6 +52,12 @@ const VitestTestRunner: TestRunner = { const projectName = context.target?.project; assert(projectName, 'The builder requires a target.'); + if (!!process.versions.webcontainer && options.browsers?.length) { + context.logger.info( + `Webcontainer environment detected. Using '@vitest/browser-preview' for browser-based tests.`, + ); + } + if (typeof options.runnerConfig === 'string') { context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`); } else if (options.runnerConfig) { From d2bd7f67a2253cd856a0411d54083cadc2b7cec1 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 17 Oct 2025 19:53:33 -0400 Subject: [PATCH 1743/2162] refactor(@angular/build): remove advanced chunking option in experimental chunk optimizer Removes the experimental `advancedChunks` configuration from the Rolldown-based chunk optimizer. This experimental feature is being temporarily removed to allow for further refinement and testing of the chunking strategy. A new E2E test (`chunk-optimizer-lazy`) has been added to validate the default chunking behavior with multiple lazy-loaded routes, ensuring that the optimizer still produces a reasonable number of output files without the advanced configuration. --- .../builders/application/chunk-optimizer.ts | 1 - tests/legacy-cli/e2e.bzl | 1 + .../e2e/tests/build/chunk-optimizer-lazy.ts | 52 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 tests/legacy-cli/e2e/tests/build/chunk-optimizer-lazy.ts diff --git a/packages/angular/build/src/builders/application/chunk-optimizer.ts b/packages/angular/build/src/builders/application/chunk-optimizer.ts index 0ba059df291f..e6827479b784 100644 --- a/packages/angular/build/src/builders/application/chunk-optimizer.ts +++ b/packages/angular/build/src/builders/application/chunk-optimizer.ts @@ -253,7 +253,6 @@ export async function optimizeChunks( const result = await bundle.generate({ minify: { mangle: false, compress: false }, - advancedChunks: { minSize: 8192 }, sourcemap, chunkFileNames: (chunkInfo) => `${chunkInfo.name.replace(/-[a-zA-Z0-9]{8}$/, '')}-[hash].js`, }); diff --git a/tests/legacy-cli/e2e.bzl b/tests/legacy-cli/e2e.bzl index fe7af0c1d133..62a89ee6a76f 100644 --- a/tests/legacy-cli/e2e.bzl +++ b/tests/legacy-cli/e2e.bzl @@ -56,6 +56,7 @@ WEBPACK_IGNORE_TESTS = [ "tests/build/auto-csp*", "tests/build/incremental-watch.js", "tests/build/chunk-optimizer.js", + "tests/build/chunk-optimizer-lazy.js", ] def _to_glob(patterns): diff --git a/tests/legacy-cli/e2e/tests/build/chunk-optimizer-lazy.ts b/tests/legacy-cli/e2e/tests/build/chunk-optimizer-lazy.ts new file mode 100644 index 000000000000..7f57e6d88e68 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/build/chunk-optimizer-lazy.ts @@ -0,0 +1,52 @@ +import assert from 'node:assert/strict'; +import { readdir } from 'node:fs/promises'; +import { replaceInFile } from '../../utils/fs'; +import { execWithEnv, ng } from '../../utils/process'; + +export default async function () { + // Add lazy routes. + await ng('generate', 'component', 'lazy-a'); + await ng('generate', 'component', 'lazy-b'); + await ng('generate', 'component', 'lazy-c'); + await replaceInFile( + 'src/app/app.routes.ts', + 'routes: Routes = [];', + `routes: Routes = [ + { + path: 'lazy-a', + loadComponent: () => import('./lazy-a/lazy-a').then(m => m.LazyA), + }, + { + path: 'lazy-b', + loadComponent: () => import('./lazy-b/lazy-b').then(m => m.LazyB), + }, + { + path: 'lazy-c', + loadComponent: () => import('./lazy-c/lazy-c').then(m => m.LazyC), + }, + ];`, + ); + + // Build without chunk optimization + await ng('build', '--output-hashing=none'); + const unoptimizedFiles = await readdir('dist/test-project/browser'); + const unoptimizedJsFiles = unoptimizedFiles.filter((f) => f.endsWith('.js')); + + // Build with chunk optimization + await execWithEnv('ng', ['build', '--output-hashing=none'], { + ...process.env, + NG_BUILD_OPTIMIZE_CHUNKS: '1', + }); + const optimizedFiles = await readdir('dist/test-project/browser'); + const optimizedJsFiles = optimizedFiles.filter((f) => f.endsWith('.js')); + + // Check that the number of chunks is reduced but not all combined + assert.ok( + optimizedJsFiles.length < unoptimizedJsFiles.length, + `Expected chunk count to be less than ${unoptimizedJsFiles.length}, but was ${optimizedJsFiles.length}.`, + ); + assert.ok( + optimizedJsFiles.length > 1, + `Expected more than one chunk, but found ${optimizedJsFiles.length}.`, + ); +} From d556c6082702750f1453265eb265bd9a08fe3b0e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:31:23 -0500 Subject: [PATCH 1744/2162] fix(@angular/build): show full aggregate errors from vitest Vitest may throw an `AggregateError` which can contain one or more specific errors. The output console logging will now show each of these specific errors in addition to the main thrown error. --- packages/angular/build/src/builders/unit-test/builder.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/angular/build/src/builders/unit-test/builder.ts b/packages/angular/build/src/builders/unit-test/builder.ts index 105e34b8a72c..122039595bd9 100644 --- a/packages/angular/build/src/builders/unit-test/builder.ts +++ b/packages/angular/build/src/builders/unit-test/builder.ts @@ -146,6 +146,13 @@ async function* runBuildAndTest( } catch (e) { assertIsError(e); context.logger.error(`An exception occurred during test execution:\n${e.stack ?? e.message}`); + if (e instanceof AggregateError) { + e.errors.forEach((inner) => { + assertIsError(inner); + context.logger.error(inner.stack ?? inner.message); + }); + } + yield { success: false }; consecutiveErrorCount++; } From c3c9ac5067275461e2d8caefba81ac9701949776 Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Mon, 27 Oct 2025 11:46:59 -0700 Subject: [PATCH 1745/2162] feat(@angular/cli): Add MCP tools for building and running devservers New tools: * build * start_devserver * stop_devserver * wait_for_devserver_build See tool descriptions and MCP documentations for more. --- packages/angular/cli/BUILD.bazel | 6 +- .../cli/src/commands/mcp/dev-server.ts | 148 +++++++++++++++ packages/angular/cli/src/commands/mcp/host.ts | 96 ++++++++-- .../cli/src/commands/mcp/mcp-server.ts | 13 +- .../cli/src/commands/mcp/testing/mock-host.ts | 21 +++ .../cli/src/commands/mcp/tools/build.ts | 111 +++++++++++ .../cli/src/commands/mcp/tools/build_spec.ts | 99 ++++++++++ .../mcp/tools/devserver/serve_spec.ts | 172 ++++++++++++++++++ .../mcp/tools/devserver/start-devserver.ts | 103 +++++++++++ .../mcp/tools/devserver/stop-devserver.ts | 78 ++++++++ .../devserver/wait-for-devserver-build.ts | 122 +++++++++++++ .../cli/src/commands/mcp/tools/modernize.ts | 48 ++--- .../src/commands/mcp/tools/modernize_spec.ts | 21 +-- .../src/commands/mcp/tools/tool-registry.ts | 2 + .../angular/cli/src/commands/mcp/utils.ts | 24 +++ 15 files changed, 1004 insertions(+), 60 deletions(-) create mode 100644 packages/angular/cli/src/commands/mcp/dev-server.ts create mode 100644 packages/angular/cli/src/commands/mcp/testing/mock-host.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/build.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/build_spec.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts create mode 100644 packages/angular/cli/src/commands/mcp/utils.ts diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index 6cbb09b36c31..e173d31e5413 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -38,6 +38,7 @@ ts_project( ], exclude = [ "**/*_spec.ts", + "**/testing/**", ], ) + [ # These files are generated from the JSON schema @@ -116,7 +117,10 @@ ts_project( name = "angular-cli_test_lib", testonly = True, srcs = glob( - include = ["**/*_spec.ts"], + include = [ + "**/*_spec.ts", + "**/testing/**", + ], exclude = [ # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces "node_modules/**", diff --git a/packages/angular/cli/src/commands/mcp/dev-server.ts b/packages/angular/cli/src/commands/mcp/dev-server.ts new file mode 100644 index 000000000000..7645e6010abb --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/dev-server.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 { ChildProcess } from 'child_process'; +import { Host } from './host'; + +// Log messages that we want to catch to identify the build status. + +const BUILD_SUCCEEDED_MESSAGE = 'Application bundle generation complete.'; +const BUILD_FAILED_MESSAGE = 'Application bundle generation failed.'; +const WAITING_FOR_CHANGES_MESSAGE = 'Watch mode enabled. Watching for file changes...'; +const CHANGES_DETECTED_START_MESSAGE = '❯ Changes detected. Rebuilding...'; +const CHANGES_DETECTED_SUCCESS_MESSAGE = '✔ Changes detected. Rebuilding...'; + +const BUILD_START_MESSAGES = [CHANGES_DETECTED_START_MESSAGE]; +const BUILD_END_MESSAGES = [ + BUILD_SUCCEEDED_MESSAGE, + BUILD_FAILED_MESSAGE, + WAITING_FOR_CHANGES_MESSAGE, + CHANGES_DETECTED_SUCCESS_MESSAGE, +]; + +export type BuildStatus = 'success' | 'failure' | 'unknown'; + +/** + * An Angular development server managed by the MCP server. + */ +export interface DevServer { + /** + * Launches the dev server and returns immediately. + * + * Throws if this server is already running. + */ + start(): void; + + /** + * If the dev server is running, stops it. + */ + stop(): void; + + /** + * Gets all the server logs so far (stdout + stderr). + */ + getServerLogs(): string[]; + + /** + * Gets all the server logs from the latest build. + */ + getMostRecentBuild(): { status: BuildStatus; logs: string[] }; + + /** + * Whether the dev server is currently being built, or is awaiting further changes. + */ + isBuilding(): boolean; + + /** + * `ng serve` port to use. + */ + port: number; +} + +export function devServerKey(project?: string) { + return project ?? ''; +} + +/** + * A local Angular development server managed by the MCP server. + */ +export class LocalDevServer implements DevServer { + readonly host: Host; + readonly port: number; + readonly project?: string; + + private devServerProcess: ChildProcess | null = null; + private serverLogs: string[] = []; + private buildInProgress = false; + private latestBuildLogStartIndex?: number = undefined; + private latestBuildStatus: BuildStatus = 'unknown'; + + constructor({ host, port, project }: { host: Host; port: number; project?: string }) { + this.host = host; + this.project = project; + this.port = port; + } + + start() { + if (this.devServerProcess) { + throw Error('Dev server already started.'); + } + + const args = ['serve']; + if (this.project) { + args.push(this.project); + } + + args.push(`--port=${this.port}`); + + this.devServerProcess = this.host.spawn('ng', args, { stdio: 'pipe' }); + this.devServerProcess.stdout?.on('data', (data) => { + this.addLog(data.toString()); + }); + this.devServerProcess.stderr?.on('data', (data) => { + this.addLog(data.toString()); + }); + this.devServerProcess.stderr?.on('close', () => { + this.stop(); + }); + this.buildInProgress = true; + } + + private addLog(log: string) { + this.serverLogs.push(log); + + if (BUILD_START_MESSAGES.some((message) => log.startsWith(message))) { + this.buildInProgress = true; + this.latestBuildLogStartIndex = this.serverLogs.length - 1; + } else if (BUILD_END_MESSAGES.some((message) => log.startsWith(message))) { + this.buildInProgress = false; + // We consider everything except a specific failure message to be a success. + this.latestBuildStatus = log.startsWith(BUILD_FAILED_MESSAGE) ? 'failure' : 'success'; + } + } + + stop() { + this.devServerProcess?.kill(); + this.devServerProcess = null; + } + + getServerLogs(): string[] { + return [...this.serverLogs]; + } + + getMostRecentBuild() { + return { + status: this.latestBuildStatus, + logs: this.serverLogs.slice(this.latestBuildLogStartIndex), + }; + } + + isBuilding() { + return this.buildInProgress; + } +} diff --git a/packages/angular/cli/src/commands/mcp/host.ts b/packages/angular/cli/src/commands/mcp/host.ts index ad57b03550bf..0be6ff67a7fc 100644 --- a/packages/angular/cli/src/commands/mcp/host.ts +++ b/packages/angular/cli/src/commands/mcp/host.ts @@ -14,9 +14,10 @@ */ import { existsSync as nodeExistsSync } from 'fs'; -import { spawn } from 'node:child_process'; +import { ChildProcess, spawn } from 'node:child_process'; import { Stats } from 'node:fs'; import { stat } from 'node:fs/promises'; +import { createServer } from 'node:net'; /** * An error thrown when a command fails to execute. @@ -24,8 +25,7 @@ import { stat } from 'node:fs/promises'; export class CommandError extends Error { constructor( message: string, - public readonly stdout: string, - public readonly stderr: string, + public readonly logs: string[], public readonly code: number | null, ) { super(message); @@ -67,7 +67,29 @@ export interface Host { cwd?: string; env?: Record; }, - ): Promise<{ stdout: string; stderr: string }>; + ): Promise<{ logs: string[] }>; + + /** + * Spawns a long-running child process and returns the `ChildProcess` object. + * @param command The command to run. + * @param args The arguments to pass to the command. + * @param options Options for the child process. + * @returns The spawned `ChildProcess` instance. + */ + spawn( + command: string, + args: readonly string[], + options?: { + stdio?: 'pipe' | 'ignore'; + cwd?: string; + env?: Record; + }, + ): ChildProcess; + + /** + * Finds an available TCP port on the system. + */ + getAvailablePort(): Promise; } /** @@ -75,7 +97,9 @@ export interface Host { */ export const LocalWorkspaceHost: Host = { stat, + existsSync: nodeExistsSync, + runCommand: async ( command: string, args: readonly string[], @@ -85,7 +109,7 @@ export const LocalWorkspaceHost: Host = { cwd?: string; env?: Record; } = {}, - ): Promise<{ stdout: string; stderr: string }> => { + ): Promise<{ logs: string[] }> => { const signal = options.timeout ? AbortSignal.timeout(options.timeout) : undefined; return new Promise((resolve, reject) => { @@ -100,30 +124,74 @@ export const LocalWorkspaceHost: Host = { }, }); - let stdout = ''; - childProcess.stdout?.on('data', (data) => (stdout += data.toString())); - - let stderr = ''; - childProcess.stderr?.on('data', (data) => (stderr += data.toString())); + const logs: string[] = []; + childProcess.stdout?.on('data', (data) => logs.push(data.toString())); + childProcess.stderr?.on('data', (data) => logs.push(data.toString())); childProcess.on('close', (code) => { if (code === 0) { - resolve({ stdout, stderr }); + resolve({ logs }); } else { const message = `Process exited with code ${code}.`; - reject(new CommandError(message, stdout, stderr, code)); + reject(new CommandError(message, logs, code)); } }); childProcess.on('error', (err) => { if (err.name === 'AbortError') { const message = `Process timed out.`; - reject(new CommandError(message, stdout, stderr, null)); + reject(new CommandError(message, logs, null)); return; } const message = `Process failed with error: ${err.message}`; - reject(new CommandError(message, stdout, stderr, null)); + reject(new CommandError(message, logs, null)); + }); + }); + }, + + spawn( + command: string, + args: readonly string[], + options: { + stdio?: 'pipe' | 'ignore'; + cwd?: string; + env?: Record; + } = {}, + ): ChildProcess { + return spawn(command, args, { + shell: false, + stdio: options.stdio ?? 'pipe', + cwd: options.cwd, + env: { + ...process.env, + ...options.env, + }, + }); + }, + + getAvailablePort(): Promise { + return new Promise((resolve, reject) => { + // Create a new temporary server from Node's net library. + const server = createServer(); + + server.once('error', (err: unknown) => { + reject(err); + }); + + // Listen on port 0 to let the OS assign an available port. + server.listen(0, () => { + const address = server.address(); + + // Ensure address is an object with a port property. + if (address && typeof address === 'object') { + const port = address.port; + + server.close(); + resolve(port); + } else { + reject(new Error('Unable to retrieve address information from server.')); + } }); }); }, diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index 8a006c98be60..e4c2c799f4b5 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -10,9 +10,14 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import path from 'node:path'; import type { AngularWorkspace } from '../../utilities/config'; import { VERSION } from '../../utilities/version'; +import { DevServer } from './dev-server'; import { registerInstructionsResource } from './resources/instructions'; import { AI_TUTOR_TOOL } from './tools/ai-tutor'; import { BEST_PRACTICES_TOOL } from './tools/best-practices'; +import { BUILD_TOOL } from './tools/build'; +import { START_DEVSERVER_TOOL } from './tools/devserver/start-devserver'; +import { STOP_DEVSERVER_TOOL } from './tools/devserver/stop-devserver'; +import { WAIT_FOR_DEVSERVER_BUILD_TOOL } from './tools/devserver/wait-for-devserver-build'; import { DOC_SEARCH_TOOL } from './tools/doc-search'; import { FIND_EXAMPLE_TOOL } from './tools/examples'; import { MODERNIZE_TOOL } from './tools/modernize'; @@ -20,6 +25,11 @@ import { ZONELESS_MIGRATION_TOOL } from './tools/onpush-zoneless-migration/zonel import { LIST_PROJECTS_TOOL } from './tools/projects'; import { AnyMcpToolDeclaration, registerTools } from './tools/tool-registry'; +/** + * Tools to manage devservers. Should be bundled together, then added to experimental or stable as a group. + */ +const SERVE_TOOLS = [START_DEVSERVER_TOOL, STOP_DEVSERVER_TOOL, WAIT_FOR_DEVSERVER_BUILD_TOOL]; + /** * The set of tools that are enabled by default for the MCP server. * These tools are considered stable and suitable for general use. @@ -37,7 +47,7 @@ const STABLE_TOOLS = [ * The set of tools that are available but not enabled by default. * These tools are considered experimental and may have limitations. */ -export const EXPERIMENTAL_TOOLS = [MODERNIZE_TOOL] as const; +export const EXPERIMENTAL_TOOLS = [BUILD_TOOL, MODERNIZE_TOOL, ...SERVE_TOOLS] as const; export async function createMcpServer( options: { @@ -104,6 +114,7 @@ equivalent actions. workspace: options.workspace, logger, exampleDatabasePath: path.join(__dirname, '../../../lib/code-examples.db'), + devServers: new Map(), }, toolDeclarations, ); diff --git a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts new file mode 100644 index 000000000000..0a758a6925f5 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts @@ -0,0 +1,21 @@ +/** + * @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 { Host } from '../host'; + +/** + * A mock implementation of the `Host` interface for testing purposes. + * This class allows spying on host methods and controlling their return values. + */ +export class MockHost implements Host { + runCommand = jasmine.createSpy('runCommand').and.resolveTo({ stdout: '', stderr: '' }); + stat = jasmine.createSpy('stat'); + existsSync = jasmine.createSpy('existsSync'); + spawn = jasmine.createSpy('spawn'); + getAvailablePort = jasmine.createSpy('getAvailablePort'); +} diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts new file mode 100644 index 000000000000..75812460bd22 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -0,0 +1,111 @@ +/** + * @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 { z } from 'zod'; +import { CommandError, Host, LocalWorkspaceHost } from '../host'; +import { createStructuredContentOutput } from '../utils'; +import { McpToolDeclaration, declareTool } from './tool-registry'; + +const DEFAULT_CONFIGURATION = 'development'; + +const buildStatusSchema = z.enum(['success', 'failure']); +type BuildStatus = z.infer; + +const buildToolInputSchema = z.object({ + project: z + .string() + .optional() + .describe( + 'Which project to build in a monorepo context. If not provided, builds the default project.', + ), + configuration: z + .string() + .optional() + .describe('Which build configuration to use. Defaults to "development".'), +}); + +export type BuildToolInput = z.infer; + +const buildToolOutputSchema = z.object({ + status: buildStatusSchema.describe('Build status.'), + logs: z.array(z.string()).optional().describe('Output logs from `ng build`.'), + path: z.string().optional().describe('The output location for the build, if successful.'), +}); + +export type BuildToolOutput = z.infer; + +export async function runBuild(input: BuildToolInput, host: Host) { + // Build "ng"'s command line. + const args = ['build']; + if (input.project) { + args.push(input.project); + } + args.push('-c', input.configuration ?? DEFAULT_CONFIGURATION); + + let status: BuildStatus = 'success'; + let logs: string[] = []; + let outputPath: string | undefined; + + try { + logs = (await host.runCommand('ng', args)).logs; + } catch (e) { + status = 'failure'; + if (e instanceof CommandError) { + logs = e.logs; + } else if (e instanceof Error) { + logs = [e.message]; + } else { + logs = [String(e)]; + } + } + + for (const line of logs) { + const match = line.match(/Output location: (.*)/); + if (match) { + outputPath = match[1].trim(); + break; + } + } + + const structuredContent: BuildToolOutput = { + status, + logs, + path: outputPath, + }; + + return createStructuredContentOutput(structuredContent); +} + +export const BUILD_TOOL: McpToolDeclaration< + typeof buildToolInputSchema.shape, + typeof buildToolOutputSchema.shape +> = declareTool({ + name: 'build', + title: 'Build Tool', + description: ` + +Perform a one-off, non-watched build using "ng build". Use this tool whenever the user wants to build an Angular project; this is similar to +"ng build", but the tool is smarter about using the right configuration and collecting the output logs. + + +* Building an Angular project and getting build logs back. + + +* This tool runs "ng build" so it expects to run within an Angular workspace. +* If you want a watched build which updates as files are changed, use "start_devserver" instead, which also serves the app. +* You can provide a project instead of building the root one. The "list_projects" MCP tool could be used to obtain the list of projects. +* This tool defaults to a development environment while a regular "ng build" defaults to a production environment. An unexpected build + failure might suggest the project is not configured for the requested environment. + +`, + isReadOnly: false, + isLocalOnly: true, + inputSchema: buildToolInputSchema.shape, + outputSchema: buildToolOutputSchema.shape, + factory: () => (input) => runBuild(input, LocalWorkspaceHost), +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts new file mode 100644 index 000000000000..20678501b977 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts @@ -0,0 +1,99 @@ +/** + * @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 { CommandError, Host } from '../host'; +import { MockHost } from '../testing/mock-host'; +import { runBuild } from './build'; + +describe('Build Tool', () => { + let mockHost: MockHost; + + beforeEach(() => { + mockHost = { + runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), + stat: jasmine.createSpy('stat'), + existsSync: jasmine.createSpy('existsSync'), + } as Partial as MockHost; + }); + + it('should construct the command correctly with default configuration', async () => { + await runBuild({}, mockHost); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['build', '-c', 'development']); + }); + + it('should construct the command correctly with a specified project', async () => { + await runBuild({ project: 'another-app' }, mockHost); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'build', + 'another-app', + '-c', + 'development', + ]); + }); + + it('should construct the command correctly for a custom configuration', async () => { + await runBuild({ configuration: 'myconfig' }, mockHost); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['build', '-c', 'myconfig']); + }); + + it('should handle a successful build and extract the output path and logs', async () => { + const buildLogs = [ + 'Build successful!', + 'Some other log lines...', + 'some warning', + 'Output location: dist/my-app', + ]; + mockHost.runCommand.and.resolveTo({ + logs: buildLogs, + }); + + const { structuredContent } = await runBuild({ project: 'my-app' }, mockHost); + + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'build', + 'my-app', + '-c', + 'development', + ]); + expect(structuredContent.status).toBe('success'); + expect(structuredContent.logs).toEqual(buildLogs); + expect(structuredContent.path).toBe('dist/my-app'); + }); + + it('should handle a failed build and capture logs', async () => { + const buildLogs = ['Some output before the crash.', 'Error: Something went wrong!']; + const error = new CommandError('Build failed', buildLogs, 1); + mockHost.runCommand.and.rejectWith(error); + + const { structuredContent } = await runBuild( + { project: 'my-failed-app', configuration: 'production' }, + mockHost, + ); + + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'build', + 'my-failed-app', + '-c', + 'production', + ]); + expect(structuredContent.status).toBe('failure'); + expect(structuredContent.logs).toEqual(buildLogs); + expect(structuredContent.path).toBeUndefined(); + }); + + it('should handle builds where the output path is not found in logs', async () => { + const buildLogs = ["Some logs that don't match any output path."]; + mockHost.runCommand.and.resolveTo({ logs: buildLogs }); + + const { structuredContent } = await runBuild({}, mockHost); + + expect(structuredContent.status).toBe('success'); + expect(structuredContent.logs).toEqual(buildLogs); + expect(structuredContent.path).toBeUndefined(); + }); +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts new file mode 100644 index 000000000000..5b3116125223 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts @@ -0,0 +1,172 @@ +/** + * @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 { EventEmitter } from 'events'; +import { ChildProcess } from 'node:child_process'; +import { MockHost } from '../../testing/mock-host'; +import { McpToolContext } from '../tool-registry'; +import { startDevServer } from './start-devserver'; +import { stopDevserver } from './stop-devserver'; +import { WATCH_DELAY, waitForDevserverBuild } from './wait-for-devserver-build'; + +class MockChildProcess extends EventEmitter { + stdout = new EventEmitter(); + stderr = new EventEmitter(); + kill = jasmine.createSpy('kill'); +} + +describe('Serve Tools', () => { + let mockHost: MockHost; + let mockContext: McpToolContext; + let mockProcess: MockChildProcess; + let portCounter: number; + + beforeEach(() => { + portCounter = 12345; + mockProcess = new MockChildProcess(); + mockHost = { + spawn: jasmine.createSpy('spawn').and.returnValue(mockProcess as unknown as ChildProcess), + getAvailablePort: jasmine.createSpy('getAvailablePort').and.callFake(() => { + return Promise.resolve(portCounter++); + }), + } as Partial as MockHost; + + mockContext = { + devServers: new Map(), + } as Partial as McpToolContext; + }); + + it('should start and stop a dev server', async () => { + const startResult = await startDevServer({}, mockContext, mockHost); + expect(startResult.structuredContent.message).toBe( + `Development server for project '' started and watching for workspace changes.`, + ); + expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', '--port=12345'], { stdio: 'pipe' }); + + const stopResult = stopDevserver({}, mockContext); + expect(stopResult.structuredContent.message).toBe( + `Development server for project '' stopped.`, + ); + expect(mockProcess.kill).toHaveBeenCalled(); + }); + + it('should wait for a build to complete', async () => { + await startDevServer({}, mockContext, mockHost); + + const waitPromise = waitForDevserverBuild({ timeout: 10 }, mockContext); + + // Simulate build logs. + mockProcess.stdout.emit('data', '... building ...'); + mockProcess.stdout.emit('data', '✔ Changes detected. Rebuilding...'); + mockProcess.stdout.emit('data', '... more logs ...'); + mockProcess.stdout.emit('data', 'Application bundle generation complete.'); + + const waitResult = await waitPromise; + expect(waitResult.structuredContent.status).toBe('success'); + expect(waitResult.structuredContent.logs).toEqual([ + '... building ...', + '✔ Changes detected. Rebuilding...', + '... more logs ...', + 'Application bundle generation complete.', + ]); + }); + + it('should handle multiple dev servers', async () => { + // Start server for project 1. This uses the basic mockProcess created for the tests. + const startResult1 = await startDevServer({ project: 'app-one' }, mockContext, mockHost); + expect(startResult1.structuredContent.message).toBe( + `Development server for project 'app-one' started and watching for workspace changes.`, + ); + const process1 = mockProcess; + + // Start server for project 2, returning a new mock process. + const process2 = new MockChildProcess(); + mockHost.spawn.and.returnValue(process2 as unknown as ChildProcess); + const startResult2 = await startDevServer({ project: 'app-two' }, mockContext, mockHost); + expect(startResult2.structuredContent.message).toBe( + `Development server for project 'app-two' started and watching for workspace changes.`, + ); + + expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'app-one', '--port=12345'], { + stdio: 'pipe', + }); + expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'app-two', '--port=12346'], { + stdio: 'pipe', + }); + + // Stop server for project 1 + const stopResult1 = stopDevserver({ project: 'app-one' }, mockContext); + expect(stopResult1.structuredContent.message).toBe( + `Development server for project 'app-one' stopped.`, + ); + expect(process1.kill).toHaveBeenCalled(); + expect(process2.kill).not.toHaveBeenCalled(); + + // Stop server for project 2 + const stopResult2 = stopDevserver({ project: 'app-two' }, mockContext); + expect(stopResult2.structuredContent.message).toBe( + `Development server for project 'app-two' stopped.`, + ); + expect(process2.kill).toHaveBeenCalled(); + }); + + it('should handle server crash', async () => { + await startDevServer({ project: 'crash-app' }, mockContext, mockHost); + + // Simulate a crash with exit code 1 + mockProcess.stdout.emit('data', 'Fatal error.'); + mockProcess.emit('close', 1); + + const stopResult = stopDevserver({ project: 'crash-app' }, mockContext); + expect(stopResult.structuredContent.message).toContain('stopped'); + expect(stopResult.structuredContent.logs).toEqual(['Fatal error.']); + }); + + it('wait should timeout if build takes too long', async () => { + await startDevServer({ project: 'timeout-app' }, mockContext, mockHost); + const waitResult = await waitForDevserverBuild( + { project: 'timeout-app', timeout: 10 }, + mockContext, + ); + expect(waitResult.structuredContent.status).toBe('timeout'); + }); + + it('should wait through multiple cycles for a build to complete', async () => { + jasmine.clock().install(); + try { + await startDevServer({}, mockContext, mockHost); + + // Immediately simulate a build starting so isBuilding() is true. + mockProcess.stdout.emit('data', '❯ Changes detected. Rebuilding...'); + + const waitPromise = waitForDevserverBuild({ timeout: 5 * WATCH_DELAY }, mockContext); + + // Tick past the first debounce. The while loop will be entered. + jasmine.clock().tick(WATCH_DELAY + 1); + + // Tick past the second debounce (inside the loop). + jasmine.clock().tick(WATCH_DELAY + 1); + + // Now finish the build. + mockProcess.stdout.emit('data', 'Application bundle generation complete.'); + + // Tick past another debounce to exit the loop. + jasmine.clock().tick(WATCH_DELAY + 1); + + const waitResult = await waitPromise; + + expect(waitResult.structuredContent.status).toBe('success'); + expect(waitResult.structuredContent.logs).toEqual([ + '❯ Changes detected. Rebuilding...', + 'Application bundle generation complete.', + ]); + } finally { + jasmine.clock().uninstall(); + } + }); +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts new file mode 100644 index 000000000000..abc6a8cdfa33 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts @@ -0,0 +1,103 @@ +/** + * @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 { z } from 'zod'; +import { LocalDevServer, devServerKey } from '../../dev-server'; +import { Host, LocalWorkspaceHost } from '../../host'; +import { createStructuredContentOutput } from '../../utils'; +import { McpToolContext, McpToolDeclaration, declareTool } from '../tool-registry'; + +const startDevServerToolInputSchema = z.object({ + project: z + .string() + .optional() + .describe( + 'Which project to serve in a monorepo context. If not provided, serves the default project.', + ), +}); + +export type StartDevserverToolInput = z.infer; + +const startDevServerToolOutputSchema = z.object({ + message: z.string().describe('A message indicating the result of the operation.'), + address: z + .string() + .optional() + .describe( + 'If the operation was successful, this is the HTTP address that the server can be found at.', + ), +}); + +export type StartDevserverToolOutput = z.infer; + +function localhostAddress(port: number) { + return `http://localhost:${port}/`; +} + +export async function startDevServer( + input: StartDevserverToolInput, + context: McpToolContext, + host: Host, +) { + const projectKey = devServerKey(input.project); + + let devServer = context.devServers.get(projectKey); + if (devServer) { + return createStructuredContentOutput({ + message: `Development server for project '${projectKey}' is already running.`, + address: localhostAddress(devServer.port), + }); + } + + const port = await host.getAvailablePort(); + + devServer = new LocalDevServer({ host, project: input.project, port }); + devServer.start(); + + context.devServers.set(projectKey, devServer); + + return createStructuredContentOutput({ + message: `Development server for project '${projectKey}' started and watching for workspace changes.`, + address: localhostAddress(port), + }); +} + +export const START_DEVSERVER_TOOL: McpToolDeclaration< + typeof startDevServerToolInputSchema.shape, + typeof startDevServerToolOutputSchema.shape +> = declareTool({ + name: 'start_devserver', + title: 'Start Development Server', + description: ` + +Starts the Angular development server ("ng serve") as a background process. Follow this up with "wait_for_devserver_build" to wait until +the first build completes. + + +* **Starting the Server:** Use this tool to begin serving the application. The tool will return immediately while the server runs in the + background. +* **Get Initial Build Logs:** Once a dev server has started, use the "wait_for_devserver_build" tool to ensure it's alive. If there are any + build errors, "wait_for_devserver_build" would provide them back and you can give them to the user or rely on them to propose a fix. +* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "stop_devserver" wasn't called), after every time you make a + change to the workspace, re-run "wait_for_devserver_build" to see whether the change was successfully built and wait for the devserver to + be updated. + + +* This tool manages development servers by itself. It maintains at most a single dev server instance for each project in the monorepo. +* This is an asynchronous operation. Subsequent commands can be ran while the server is active. +* Use 'stop_devserver' to gracefully shut down the server and access the full log output. + +`, + isReadOnly: true, + isLocalOnly: true, + inputSchema: startDevServerToolInputSchema.shape, + outputSchema: startDevServerToolOutputSchema.shape, + factory: (context) => (input) => { + return startDevServer(input, context, LocalWorkspaceHost); + }, +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts new file mode 100644 index 000000000000..842910e6cac0 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts @@ -0,0 +1,78 @@ +/** + * @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 { z } from 'zod'; +import { devServerKey } from '../../dev-server'; +import { createStructuredContentOutput } from '../../utils'; +import { McpToolContext, McpToolDeclaration, declareTool } from '../tool-registry'; + +const stopDevserverToolInputSchema = z.object({ + project: z + .string() + .optional() + .describe( + 'Which project to stop serving in a monorepo context. If not provided, stops the default project server.', + ), +}); + +export type StopDevserverToolInput = z.infer; + +const stopDevserverToolOutputSchema = z.object({ + message: z.string().describe('A message indicating the result of the operation.'), + logs: z.array(z.string()).optional().describe('The full logs from the dev server.'), +}); + +export type StopDevserverToolOutput = z.infer; + +export function stopDevserver(input: StopDevserverToolInput, context: McpToolContext) { + const projectKey = devServerKey(input.project); + const devServer = context.devServers.get(projectKey); + + if (!devServer) { + return createStructuredContentOutput({ + message: `Development server for project '${projectKey}' was not running.`, + logs: undefined, + }); + } + + devServer.stop(); + context.devServers.delete(projectKey); + + return createStructuredContentOutput({ + message: `Development server for project '${projectKey}' stopped.`, + logs: devServer.getServerLogs(), + }); +} + +export const STOP_DEVSERVER_TOOL: McpToolDeclaration< + typeof stopDevserverToolInputSchema.shape, + typeof stopDevserverToolOutputSchema.shape +> = declareTool({ + name: 'stop_devserver', + title: 'Stop Development Server', + description: ` + +Stops a running Angular development server ("ng serve") that was started with the "start_devserver" tool. + + +* **Stopping the Server:** Use this tool to terminate a running development server and retrieve the logs. + + +* This should be called to gracefully shut down the server and access the full log output. +* This just sends a SIGTERM to the server and returns immediately; so the server might still be functional for a short + time after this is called. However note that this is not a blocker for starting a new devserver. + +`, + isReadOnly: true, + isLocalOnly: true, + inputSchema: stopDevserverToolInputSchema.shape, + outputSchema: stopDevserverToolOutputSchema.shape, + factory: (context) => (input) => { + return stopDevserver(input, context); + }, +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts new file mode 100644 index 000000000000..0d698c8f452a --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts @@ -0,0 +1,122 @@ +/** + * @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 { z } from 'zod'; +import { devServerKey } from '../../dev-server'; +import { createStructuredContentOutput } from '../../utils'; +import { McpToolContext, McpToolDeclaration, declareTool } from '../tool-registry'; + +/** + * How long to wait to give "ng serve" time to identify whether the watched workspace has changed. + */ +export const WATCH_DELAY = 1000; + +/** + * Default timeout for waiting for the build to complete. + */ +const DEFAULT_TIMEOUT = 180_000; // In milliseconds + +const waitForDevserverBuildToolInputSchema = z.object({ + project: z + .string() + .optional() + .describe( + 'Which project to wait for in a monorepo context. If not provided, waits for the default project server.', + ), + timeout: z + .number() + .default(DEFAULT_TIMEOUT) + .describe( + `The maximum time to wait for the build to complete, in milliseconds. This can't be lower than ${WATCH_DELAY}.`, + ), +}); + +export type WaitForDevserverBuildToolInput = z.infer; + +const waitForDevserverBuildToolOutputSchema = z.object({ + status: z + .enum(['success', 'failure', 'unknown', 'timeout', 'no_devserver_found']) + .describe( + "The status of the build if it's complete, or a status indicating why the wait operation failed.", + ), + logs: z + .array(z.string()) + .optional() + .describe('The logs from the most recent build, if one exists.'), +}); + +export type WaitForDevserverBuildToolOutput = z.infer; + +function wait(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +export async function waitForDevserverBuild( + input: WaitForDevserverBuildToolInput, + context: McpToolContext, +) { + const projectKey = devServerKey(input.project); + const devServer = context.devServers.get(projectKey); + const deadline = Date.now() + input.timeout; + + if (!devServer) { + return createStructuredContentOutput({ + status: 'no_devserver_found', + }); + } + + await wait(WATCH_DELAY); + while (devServer.isBuilding()) { + if (Date.now() > deadline) { + return createStructuredContentOutput({ + status: 'timeout', + }); + } + await wait(WATCH_DELAY); + } + + return createStructuredContentOutput({ + ...devServer.getMostRecentBuild(), + }); +} + +export const WAIT_FOR_DEVSERVER_BUILD_TOOL: McpToolDeclaration< + typeof waitForDevserverBuildToolInputSchema.shape, + typeof waitForDevserverBuildToolOutputSchema.shape +> = declareTool({ + name: 'wait_for_devserver_build', + title: 'Wait for Devserver Build', + description: ` + +Waits for a dev server that was started with the "start_devserver" tool to complete its build, then reports the build logs from its most +recent build. + + +* **Waiting for a build:** As long as a devserver is alive ("start_devserver" was called for this project and "stop_devserver" wasn't + called yet), then if you're making a file change and want to ensure it was successfully built, call this tool instead of any other build + tool or command. When it retuns you'll get build logs back **and** you'll know the user's devserver is up-to-date with the latest changes. + + +* This tool expects that a dev server was launched on the same project with the "start_devserver" tool, otherwise a "no_devserver_found" + status will be returned. +* This tool will block until the build is complete or the timeout is reached. If you expect a long build process, consider increasing the + timeout. Timeouts on initial run (right after "start_devserver" calls) or after a big change are not necessarily indicative of an error. +* If you encountered a timeout and it might be reasonable, just call this tool again. +* If the dev server is not building, it will return quickly, with the logs from the last build. +* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "start_devserver" + tool again, before giving up. + +`, + isReadOnly: true, + isLocalOnly: true, + inputSchema: waitForDevserverBuildToolInputSchema.shape, + outputSchema: waitForDevserverBuildToolOutputSchema.shape, + factory: (context) => (input) => { + return waitForDevserverBuild(input, context); + }, +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 2ad3e737578c..fc9b1d6cc45a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -9,6 +9,7 @@ import { dirname, join, relative } from 'path'; import { z } from 'zod'; import { CommandError, Host, LocalWorkspaceHost } from '../host'; +import { createStructuredContentOutput } from '../utils'; import { McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { @@ -86,20 +87,12 @@ const modernizeOutputSchema = z.object({ .describe( 'Migration summary, as well as any instructions that need to be performed to complete the migrations.', ), - stdout: z.string().optional().describe('The stdout from the executed commands.'), - stderr: z.string().optional().describe('The stderr from the executed commands.'), + logs: z.array(z.string()).optional().describe('All logs from all executed commands.'), }); export type ModernizeInput = z.infer; export type ModernizeOutput = z.infer; -function createToolOutput(structuredContent: ModernizeOutput) { - return { - content: [{ type: 'text' as const, text: JSON.stringify(structuredContent, null, 2) }], - structuredContent, - }; -} - function findAngularJsonDir(startDir: string, host: Host): string | null { let currentDir = startDir; while (true) { @@ -119,7 +112,7 @@ export async function runModernization(input: ModernizeInput, host: Host) { const directories = input.directories ?? []; if (transformationNames.length === 0) { - return createToolOutput({ + return createStructuredContentOutput({ instructions: [ 'See https://angular.dev/best-practices for Angular best practices. ' + 'You can call this tool if you have specific transformation you want to run.', @@ -127,7 +120,7 @@ export async function runModernization(input: ModernizeInput, host: Host) { }); } if (directories.length === 0) { - return createToolOutput({ + return createStructuredContentOutput({ instructions: [ 'Provide this tool with a list of directory paths in your workspace ' + 'to run the modernization on.', @@ -140,14 +133,13 @@ export async function runModernization(input: ModernizeInput, host: Host) { const angularProjectRoot = findAngularJsonDir(executionDir, host); if (!angularProjectRoot) { - return createToolOutput({ + return createStructuredContentOutput({ instructions: ['Could not find an angular.json file in the current or parent directories.'], }); } const instructions: string[] = []; - const stdoutMessages: string[] = []; - const stderrMessages: string[] = []; + let logs: string[] = []; const transformationsToRun = TRANSFORMATIONS.filter((t) => transformationNames.includes(t.name)); for (const transformation of transformationsToRun) { @@ -165,28 +157,19 @@ export async function runModernization(input: ModernizeInput, host: Host) { const command = 'ng'; const args = ['generate', `@angular/core:${transformation.name}`, '--path', relativePath]; try { - const { stdout, stderr } = await host.runCommand(command, args, { - cwd: angularProjectRoot, - }); - if (stdout) { - stdoutMessages.push(stdout); - } - if (stderr) { - stderrMessages.push(stderr); - } + logs = ( + await host.runCommand(command, args, { + cwd: angularProjectRoot, + }) + ).logs; instructions.push( `Migration ${transformation.name} on directory ${relativePath} completed successfully.`, ); } catch (e) { if (e instanceof CommandError) { - if (e.stdout) { - stdoutMessages.push(e.stdout); - } - if (e.stderr) { - stderrMessages.push(e.stderr); - } + logs = e.logs; } - stderrMessages.push((e as Error).message); + logs.push((e as Error).message); instructions.push( `Migration ${transformation.name} on directory ${relativePath} failed.`, ); @@ -195,10 +178,9 @@ export async function runModernization(input: ModernizeInput, host: Host) { } } - return createToolOutput({ + return createStructuredContentOutput({ instructions: instructions.length > 0 ? instructions : undefined, - stdout: stdoutMessages?.join('\n\n') || undefined, - stderr: stderrMessages?.join('\n\n') || undefined, + logs, }); } diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index a00894dde5f6..13b0e55f6946 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -10,12 +10,13 @@ import { Stats } from 'fs'; import { mkdir, mkdtemp, rm, writeFile } from 'fs/promises'; import { tmpdir } from 'os'; import { join } from 'path'; -import * as host from '../host'; +import { CommandError } from '../host'; +import { MockHost } from '../testing/mock-host'; import { ModernizeOutput, runModernization } from './modernize'; describe('Modernize Tool', () => { let projectDir: string; - let mockHost: host.Host; + let mockHost: MockHost; beforeEach(async () => { // Create a temporary directory and a fake angular.json to satisfy the tool's project root search. @@ -28,7 +29,7 @@ describe('Modernize Tool', () => { existsSync: jasmine.createSpy('existsSync').and.callFake((p: string) => { return p === join(projectDir, 'angular.json'); }), - }; + } as Partial as MockHost; }); afterEach(async () => { @@ -105,7 +106,7 @@ describe('Modernize Tool', () => { ['generate', '@angular/core:self-closing-tag', '--path', '.'], { cwd: projectDir }, ); - expect(structuredContent?.stderr).toBeUndefined(); + expect(structuredContent?.logs).toBeUndefined(); expect(structuredContent?.instructions).toEqual( jasmine.arrayWithExactContents([ 'Migration control-flow on directory . completed successfully.', @@ -149,7 +150,7 @@ describe('Modernize Tool', () => { ['generate', '@angular/core:self-closing-tag', '--path', 'subfolder2'], { cwd: projectDir }, ); - expect(structuredContent?.stderr).toBeUndefined(); + expect(structuredContent?.logs).toBeUndefined(); expect(structuredContent?.instructions).toEqual( jasmine.arrayWithExactContents([ 'Migration control-flow on directory subfolder1 completed successfully.', @@ -161,7 +162,7 @@ describe('Modernize Tool', () => { }); it('should return an error if angular.json is not found', async () => { - (mockHost.existsSync as jasmine.Spy).and.returnValue(false); + mockHost.existsSync.and.returnValue(false); const { structuredContent } = (await runModernization( { @@ -179,8 +180,8 @@ describe('Modernize Tool', () => { it('should report errors from transformations', async () => { // Simulate a failed execution - (mockHost.runCommand as jasmine.Spy).and.rejectWith( - new host.CommandError('Command failed with error', 'stdout', 'stderr', 1), + mockHost.runCommand.and.rejectWith( + new CommandError('Command failed with error', ['some logs'], 1), ); const { structuredContent } = (await runModernization( @@ -196,9 +197,7 @@ describe('Modernize Tool', () => { ['generate', '@angular/core:self-closing-tag', '--path', '.'], { cwd: projectDir }, ); - expect(structuredContent?.stdout).toContain('stdout'); - expect(structuredContent?.stderr).toContain('stderr'); - expect(structuredContent?.stderr).toContain('Command failed with error'); + expect(structuredContent?.logs).toEqual(['some logs', 'Command failed with error']); expect(structuredContent?.instructions).toEqual([ 'Migration self-closing-tag on directory . failed.', ]); diff --git a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts index 4a4ee474428f..a70d4185dd81 100644 --- a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts +++ b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts @@ -9,6 +9,7 @@ import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/mcp.js'; import { ZodRawShape } from 'zod'; import type { AngularWorkspace } from '../../../utilities/config'; +import { DevServer } from '../dev-server'; type ToolConfig = Parameters[1]; @@ -17,6 +18,7 @@ export interface McpToolContext { workspace?: AngularWorkspace; logger: { warn(text: string): void }; exampleDatabasePath?: string; + devServers: Map; } export type McpToolFactory = ( diff --git a/packages/angular/cli/src/commands/mcp/utils.ts b/packages/angular/cli/src/commands/mcp/utils.ts new file mode 100644 index 000000000000..49fa697ceca8 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/utils.ts @@ -0,0 +1,24 @@ +/** + * @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 + */ + +/** + * @fileoverview + * Utility functions shared across MCP tools. + */ + +/** + * Returns simple structured content output from an MCP tool. + * + * @returns A structure with both `content` and `structuredContent` for maximum compatibility. + */ +export function createStructuredContentOutput(structuredContent: OutputType) { + return { + content: [{ type: 'text' as const, text: JSON.stringify(structuredContent, null, 2) }], + structuredContent, + }; +} From a8465d41d35f01349bed7b7c02be03c5dfbf1b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=AA=20Nam=20Kh=C3=A1nh?= <55955273+khanhkhanhlele@users.noreply.github.com> Date: Fri, 7 Nov 2025 17:51:43 +0700 Subject: [PATCH 1746/2162] refactor: fix several typos (#31716) This commit fixes a number of typos in tests. --- .../application/tests/behavior/component-stylesheets_spec.ts | 2 +- .../application/tests/options/external-dependencies_spec.ts | 4 ++-- 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 ecc460bcb405..ddae750a64a4 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 @@ -11,7 +11,7 @@ import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setu describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { describe('Behavior: "Component Stylesheets"', () => { - it('should successfuly compile with an empty inline style', async () => { + it('should successfully compile with an empty inline style', async () => { await harness.modifyFile('src/app/app.component.ts', (content) => { return content.replace('styleUrls', 'styles').replace('./app.component.css', ''); }); diff --git a/packages/angular/build/src/builders/application/tests/options/external-dependencies_spec.ts b/packages/angular/build/src/builders/application/tests/options/external-dependencies_spec.ts index feb9b6447c3b..deb55e172109 100644 --- a/packages/angular/build/src/builders/application/tests/options/external-dependencies_spec.ts +++ b/packages/angular/build/src/builders/application/tests/options/external-dependencies_spec.ts @@ -24,7 +24,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { .content.not.toMatch(/from ['"]@angular\/common['"]/); }); - it('should only externalize the listed depedencies when option is set', async () => { + it('should only externalize the listed dependencies when option is set', async () => { harness.useTarget('build', { ...BASE_OPTIONS, externalDependencies: ['@angular/core'], @@ -39,7 +39,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { .content.not.toMatch(/from ['"]@angular\/common['"]/); }); - it('should externalize the listed depedencies in Web Workers when option is set', async () => { + it('should externalize the listed dependencies in Web Workers when option is set', async () => { harness.useTarget('build', { ...BASE_OPTIONS, externalDependencies: ['path'], From 9efcb0386e185d70cf215a383bfbf086f030a790 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:08:07 -0500 Subject: [PATCH 1747/2162] test(@angular/build): add an E2E test for absolute include paths for unit tests An additional E2E test has been added that tests the usage of an absolute path for the `unit-test` command line `--include` option. --- .../legacy-cli/e2e/tests/vitest/absolute-include.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vitest/absolute-include.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/absolute-include.ts b/tests/legacy-cli/e2e/tests/vitest/absolute-include.ts new file mode 100644 index 000000000000..787fe942edbd --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/absolute-include.ts @@ -0,0 +1,12 @@ +import assert from 'node:assert/strict'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { ng } from '../../utils/process'; +import path from 'node:path'; + +export default async function (): Promise { + await applyVitestBuilder(); + + const { stdout } = await ng('test', '--include', path.resolve('src/app/app.spec.ts')); + + assert.match(stdout, /1 passed/, 'Expected 1 test to pass.'); +} From 683d0e09e58c76889386ce142d1b01d136411add Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 6 Nov 2025 15:30:54 -0500 Subject: [PATCH 1748/2162] fix(@angular/build): correctly handle absolute paths and casing in test discovery The `findTests` function's path normalization logic had two flaws that affected cross-platform compatibility and user experience: 1. Absolute paths provided in the `include` patterns were incorrectly processed. The leading slash was removed, causing the globber to fail to find the specified test files. 2. The prefix removal logic was case-sensitive, which would fail to normalize workspace-relative paths on case-insensitive filesystems (like Windows and macOS) if the user's input casing for the project path differed from the actual directory casing. This commit corrects both issues: - The `normalizePattern` function now uses `isAbsolute` to detect and preserve absolute paths, ensuring they are passed to the globber unmodified. - The `removePrefix` helper function is now conditionally case-insensitive based on the host operating system (`win32`, `darwin`), aligning its behavior with the underlying filesystem and making path normalization more robust. - Minor code style refactoring and JSDoc comments have been added for clarity. --- .../build/src/builders/karma/find-tests.ts | 23 +++++++- .../src/builders/unit-test/test-discovery.ts | 57 +++++++++++++------ 2 files changed, 62 insertions(+), 18 deletions(-) diff --git a/packages/angular/build/src/builders/karma/find-tests.ts b/packages/angular/build/src/builders/karma/find-tests.ts index 62bcd563d455..00468146df5f 100644 --- a/packages/angular/build/src/builders/karma/find-tests.ts +++ b/packages/angular/build/src/builders/karma/find-tests.ts @@ -6,6 +6,27 @@ * found in the LICENSE file at https://angular.dev/license */ +import { findTests as findTestsBase } from '../unit-test/test-discovery'; + // This file is a compatibility layer that re-exports the test discovery logic from its new location. // This is necessary to avoid breaking the Karma builder, which still depends on this file. -export { findTests, getTestEntrypoints } from '../unit-test/test-discovery'; +export { getTestEntrypoints } from '../unit-test/test-discovery'; + +const removeLeadingSlash = (path: string): string => { + return path.startsWith('/') ? path.substring(1) : path; +}; + +export async function findTests( + include: string[], + exclude: string[], + workspaceRoot: string, + projectSourceRoot: string, +): Promise { + // Karma has legacy support for workspace "root-relative" file paths + return findTestsBase( + include.map(removeLeadingSlash), + exclude.map(removeLeadingSlash), + workspaceRoot, + projectSourceRoot, + ); +} diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index 987b55e39a81..89d38dbbe787 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -7,6 +7,7 @@ */ import { type PathLike, constants, promises as fs } from 'node:fs'; +import os from 'node:os'; import { basename, dirname, extname, isAbsolute, join, relative } from 'node:path'; import { glob, isDynamicPattern } from 'tinyglobby'; import { toPosixPath } from '../../utils/path'; @@ -157,15 +158,32 @@ function generateNameFromPath( return result; } -/** Removes a leading slash from a path. */ -const removeLeadingSlash = (path: string): string => { - return path.startsWith('/') ? path.substring(1) : path; -}; +/** + * Whether the current operating system's filesystem is case-insensitive. + */ +const isCaseInsensitiveFilesystem = os.platform() === 'win32' || os.platform() === 'darwin'; -/** Removes a prefix from the beginning of a string. */ -const removePrefix = (str: string, prefix: string): string => { - return str.startsWith(prefix) ? str.substring(prefix.length) : str; -}; +/** + * Removes a prefix from the beginning of a string, with conditional case-insensitivity + * based on the operating system's filesystem characteristics. + * + * @param text The string to remove the prefix from. + * @param prefix The prefix to remove. + * @returns The string with the prefix removed, or the original string if the prefix was not found. + */ +function removePrefix(text: string, prefix: string): string { + if (isCaseInsensitiveFilesystem) { + if (text.toLowerCase().startsWith(prefix.toLowerCase())) { + return text.substring(prefix.length); + } + } else { + if (text.startsWith(prefix)) { + return text.substring(prefix.length); + } + } + + return text; +} /** * Removes potential root paths from a file path, returning a relative path. @@ -177,8 +195,10 @@ const removePrefix = (str: string, prefix: string): string => { */ function removeRoots(path: string, roots: string[]): string { for (const root of roots) { - if (path.startsWith(root)) { - return path.substring(root.length); + const result = removePrefix(path, root); + // If the prefix was removed, the result will be a different string. + if (result !== path) { + return result; } } @@ -194,15 +214,18 @@ function removeRoots(path: string, roots: string[]): string { * @returns A normalized glob pattern. */ function normalizePattern(pattern: string, projectRootPrefix: string): string { - let normalizedPattern = toPosixPath(pattern); - normalizedPattern = removeLeadingSlash(normalizedPattern); + const posixPattern = toPosixPath(pattern); + + // Do not modify absolute paths. The globber will handle them correctly. + if (isAbsolute(posixPattern)) { + return posixPattern; + } - // Some IDEs and tools may provide patterns relative to the workspace root. - // To ensure the glob operates correctly within the project's source root, - // we remove the project's relative path from the front of the pattern. - normalizedPattern = removePrefix(normalizedPattern, projectRootPrefix); + // For relative paths, ensure they are correctly relative to the project source root. + // This involves removing the project root prefix if the user provided a workspace-relative path. + const normalizedRelative = removePrefix(posixPattern, projectRootPrefix); - return normalizedPattern; + return normalizedRelative; } /** From 8a17fe8b841cf59390f85119227e39b367a35425 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 7 Nov 2025 05:06:11 +0000 Subject: [PATCH 1749/2162] build: update dependency aspect_rules_js to v2.8.0 See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 097c1f6714bd..696be6bbf297 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.1") bazel_dep(name = "rules_nodejs", version = "6.6.0") -bazel_dep(name = "aspect_rules_js", version = "2.7.0") +bazel_dep(name = "aspect_rules_js", version = "2.8.0") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 66ae63953d25..30bafcb05d7c 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -14,6 +14,7 @@ "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "852f9ebbda017572a7c113a2434592dd3b2f55cd9a0faea3d4be5a09a59e4900", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/MODULE.bazel": "276347663a25b0d5bd6cad869252bea3e160c4d980e764b15f3bae7f80b30624", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/source.json": "f42051fa42629f0e59b7ac2adf0a55749144b11f1efcd8c697f0ee247181e526", @@ -28,7 +29,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.7.0/MODULE.bazel": "ac879ee86f124c827e4e87942b3797ff4aaf90360eb9d7bff5321fc45d5ebefb", - "https://bcr.bazel.build/modules/aspect_rules_js/2.7.0/source.json": "20c34042beca8ea1e5996989dc163a75cb04ec4e75dc64f78d936497aea78e4b", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/MODULE.bazel": "b2e0576866a3f1cca3286ad1efefa4099a6546a3239dffa802a551521e8fbf3d", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/source.json": "5e68a29bef5b3609a60f2b3f7be02023d6ad8224c3501cc1b51ba66791f2f332", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", @@ -208,7 +210,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "siDaq634IrZw5T09gCYUzwdqbloipc7/4CSuHiQGGv0=", + "bzlTransitiveDigest": "YvkJWukIM5Ev6xNW6ySjp6cE2bfSLKke99BALBMT8ro=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -292,8 +294,7 @@ "extra_build_content": "", "generate_bzl_library_targets": false, "extract_full_archive": false, - "exclude_package_contents": [], - "system_tar": "auto" + "exclude_package_contents": [] } }, "npm__esbuild_0.19.9__links": { @@ -398,8 +399,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "rbcmAPYHn7ktliFPVn+tPYuueodkLahPDN76U6iheR0=", - "usagesDigest": "IVicAE5kmPjEcCQ3BjtqveHxlxyM0WJ/OuayGov8SLE=", + "bzlTransitiveDigest": "mweOMQTBuXWZta9QVVcvPXd9OFG60cwYkTOTetZwtAA=", + "usagesDigest": "e5/bEO6uDxa5C/p576W7VqaXk+nzIKZvtUFWD9kTD9o=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -409,11 +410,11 @@ "ruleClassName": "npm_import_rule", "attributes": { "package": "pnpm", - "version": "8.6.7", + "version": "9.15.9", "root_package": "", "link_workspace": "", "link_packages": {}, - "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==", + "integrity": "sha512-aARhQYk8ZvrQHAeSMRKOmvuJ74fiaR1p5NQO7iKJiClf1GghgbrlW1hBjDolO95lpQXsfF+UA+zlzDzTfc8lMQ==", "url": "", "commit": "", "patch_args": [ @@ -429,8 +430,7 @@ "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])", "generate_bzl_library_targets": false, "extract_full_archive": true, - "exclude_package_contents": [], - "system_tar": "auto" + "exclude_package_contents": [] } }, "pnpm__links": { @@ -438,7 +438,7 @@ "ruleClassName": "npm_import_links", "attributes": { "package": "pnpm", - "version": "8.6.7", + "version": "9.15.9", "dev": false, "root_package": "", "link_packages": {}, @@ -606,7 +606,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "gAZ4dZheYy/Vw50DLj0z0qQti9SneH4ffzao2GhlSak=", + "usagesDigest": "+m2xFcbJ0y2hkJstxlIUL8Om12UzrH7gt+Fl8h5I/IA=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -616,7 +616,7 @@ "ruleClassName": "tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.7.0", + "aspect_rules_js": "2.8.0", "aspect_rules_ts": "3.7.1", "aspect_rules_esbuild": "0.24.0", "aspect_tools_telemetry": "0.2.8" @@ -1120,7 +1120,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "71PwVsMlLx+RWdt1SI9nSqRHX7DX/NstWwr7/XBxEMs=", - "usagesDigest": "lqo/UXkPCwj19uB1o0D7KeWvm99ttcmhk7BOoYRXRp0=", + "usagesDigest": "88RybJXEODrqz353smguedoFgMg9se+FF59/WpviJM8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From a9c700a04d1ac1920e6660ea0c43049c6b5503ff Mon Sep 17 00:00:00 2001 From: Ruslan Lekhman Date: Fri, 7 Nov 2025 05:02:28 -0700 Subject: [PATCH 1750/2162] refactor(@angular/cli): import type improvements & mcp cleanups --- packages/angular/cli/src/commands/mcp/cli.ts | 7 +++-- .../cli/src/commands/mcp/dev-server.ts | 4 +-- .../cli/src/commands/mcp/mcp-server.ts | 8 ++--- .../commands/mcp/resources/instructions.ts | 6 ++-- .../cli/src/commands/mcp/testing/mock-host.ts | 2 +- .../cli/src/commands/mcp/tools/ai-tutor.ts | 7 ++--- .../src/commands/mcp/tools/best-practices.ts | 14 ++++----- .../cli/src/commands/mcp/tools/build.ts | 4 +-- .../cli/src/commands/mcp/tools/build_spec.ts | 4 +-- .../mcp/tools/devserver/serve_spec.ts | 8 ++--- .../mcp/tools/devserver/start-devserver.ts | 4 +-- .../mcp/tools/devserver/stop-devserver.ts | 2 +- .../devserver/wait-for-devserver-build.ts | 2 +- .../cli/src/commands/mcp/tools/doc-search.ts | 2 +- .../cli/src/commands/mcp/tools/examples.ts | 14 ++++----- .../cli/src/commands/mcp/tools/modernize.ts | 20 ++----------- .../src/commands/mcp/tools/modernize_spec.ts | 6 ++-- ...s => analyze-for-unsupported-zone-uses.ts} | 4 +-- ..._single_file.ts => migrate-single-file.ts} | 14 ++++----- ...le_spec.ts => migrate-single-file_spec.ts} | 6 ++-- ...rate_test_file.ts => migrate-test-file.ts} | 21 +++---------- ...file_spec.ts => migrate-test-file_spec.ts} | 2 +- .../onpush-zoneless-migration/prompts.ts | 6 ++-- ...debug_message.ts => send-debug-message.ts} | 4 +-- .../{ts_utils.ts => ts-utils.ts} | 19 ++++++------ .../zoneless-migration.ts | 22 +++++++------- .../cli/src/commands/mcp/tools/projects.ts | 28 ++++++++--------- .../src/commands/mcp/tools/tool-registry.ts | 4 +-- .../angular/cli/src/commands/mcp/utils.ts | 30 +++++++++++++++++++ ...{schematics.spec.ts => schematics_spec.ts} | 0 30 files changed, 138 insertions(+), 136 deletions(-) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{analyze_for_unsupported_zone_uses.ts => analyze-for-unsupported-zone-uses.ts} (95%) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_single_file.ts => migrate-single-file.ts} (86%) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_single_file_spec.ts => migrate-single-file_spec.ts} (95%) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_test_file.ts => migrate-test-file.ts} (82%) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_test_file_spec.ts => migrate-test-file_spec.ts} (97%) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{send_debug_message.ts => send-debug-message.ts} (73%) rename packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/{ts_utils.ts => ts-utils.ts} (90%) rename packages/angular_devkit/schematics_cli/test/{schematics.spec.ts => schematics_spec.ts} (100%) diff --git a/packages/angular/cli/src/commands/mcp/cli.ts b/packages/angular/cli/src/commands/mcp/cli.ts index 9f8cfef91997..0076752ac6f3 100644 --- a/packages/angular/cli/src/commands/mcp/cli.ts +++ b/packages/angular/cli/src/commands/mcp/cli.ts @@ -7,8 +7,11 @@ */ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; -import { Argv } from 'yargs'; -import { CommandModule, CommandModuleImplementation } from '../../command-builder/command-module'; +import type { Argv } from 'yargs'; +import { + CommandModule, + type CommandModuleImplementation, +} from '../../command-builder/command-module'; import { isTTY } from '../../utilities/tty'; import { EXPERIMENTAL_TOOLS, createMcpServer } from './mcp-server'; diff --git a/packages/angular/cli/src/commands/mcp/dev-server.ts b/packages/angular/cli/src/commands/mcp/dev-server.ts index 7645e6010abb..e6da33aa7bd3 100644 --- a/packages/angular/cli/src/commands/mcp/dev-server.ts +++ b/packages/angular/cli/src/commands/mcp/dev-server.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import { ChildProcess } from 'child_process'; -import { Host } from './host'; +import type { ChildProcess } from 'child_process'; +import type { Host } from './host'; // Log messages that we want to catch to identify the build status. diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index e4c2c799f4b5..dfcd162a44f7 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -7,10 +7,10 @@ */ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import path from 'node:path'; +import { join } from 'node:path'; import type { AngularWorkspace } from '../../utilities/config'; import { VERSION } from '../../utilities/version'; -import { DevServer } from './dev-server'; +import type { DevServer } from './dev-server'; import { registerInstructionsResource } from './resources/instructions'; import { AI_TUTOR_TOOL } from './tools/ai-tutor'; import { BEST_PRACTICES_TOOL } from './tools/best-practices'; @@ -23,7 +23,7 @@ import { FIND_EXAMPLE_TOOL } from './tools/examples'; import { MODERNIZE_TOOL } from './tools/modernize'; import { ZONELESS_MIGRATION_TOOL } from './tools/onpush-zoneless-migration/zoneless-migration'; import { LIST_PROJECTS_TOOL } from './tools/projects'; -import { AnyMcpToolDeclaration, registerTools } from './tools/tool-registry'; +import { type AnyMcpToolDeclaration, registerTools } from './tools/tool-registry'; /** * Tools to manage devservers. Should be bundled together, then added to experimental or stable as a group. @@ -113,7 +113,7 @@ equivalent actions. { workspace: options.workspace, logger, - exampleDatabasePath: path.join(__dirname, '../../../lib/code-examples.db'), + exampleDatabasePath: join(__dirname, '../../../lib/code-examples.db'), devServers: new Map(), }, toolDeclarations, diff --git a/packages/angular/cli/src/commands/mcp/resources/instructions.ts b/packages/angular/cli/src/commands/mcp/resources/instructions.ts index f2a0ac814b0a..bf85a3d54384 100644 --- a/packages/angular/cli/src/commands/mcp/resources/instructions.ts +++ b/packages/angular/cli/src/commands/mcp/resources/instructions.ts @@ -6,9 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; +import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { readFile } from 'node:fs/promises'; -import path from 'node:path'; +import { join } from 'node:path'; export function registerInstructionsResource(server: McpServer): void { server.registerResource( @@ -24,7 +24,7 @@ export function registerInstructionsResource(server: McpServer): void { mimeType: 'text/markdown', }, async () => { - const text = await readFile(path.join(__dirname, 'best-practices.md'), 'utf-8'); + const text = await readFile(join(__dirname, 'best-practices.md'), 'utf-8'); return { contents: [{ uri: 'instructions://best-practices', text }] }; }, diff --git a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts index 0a758a6925f5..1720b1377792 100644 --- a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts +++ b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Host } from '../host'; +import type { Host } from '../host'; /** * A mock implementation of the `Host` interface for testing purposes. diff --git a/packages/angular/cli/src/commands/mcp/tools/ai-tutor.ts b/packages/angular/cli/src/commands/mcp/tools/ai-tutor.ts index 2d1780b283f9..590d0940c747 100644 --- a/packages/angular/cli/src/commands/mcp/tools/ai-tutor.ts +++ b/packages/angular/cli/src/commands/mcp/tools/ai-tutor.ts @@ -7,7 +7,7 @@ */ import { readFile } from 'node:fs/promises'; -import path from 'node:path'; +import { join } from 'node:path'; import { declareTool } from './tool-registry'; export const AI_TUTOR_TOOL = declareTool({ @@ -40,10 +40,7 @@ with a new core identity and knowledge base. let aiTutorText: string; return async () => { - aiTutorText ??= await readFile( - path.join(__dirname, '..', 'resources', 'ai-tutor.md'), - 'utf-8', - ); + aiTutorText ??= await readFile(join(__dirname, '../resources/ai-tutor.md'), 'utf-8'); return { content: [ diff --git a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts index 3245bbb5e5af..2c72d2175bac 100644 --- a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts +++ b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts @@ -17,10 +17,10 @@ import { readFile, stat } from 'node:fs/promises'; import { createRequire } from 'node:module'; -import path from 'node:path'; +import { dirname, isAbsolute, join, relative, resolve } from 'node:path'; import { z } from 'zod'; import { VERSION } from '../../../utilities/version'; -import { McpToolContext, declareTool } from './tool-registry'; +import { type McpToolContext, declareTool } from './tool-registry'; const bestPracticesInputSchema = z.object({ workspacePath: z @@ -72,7 +72,7 @@ that **MUST** be followed for any task involving the creation, analysis, or modi * @returns A promise that resolves to the string content of the bundled markdown file. */ async function getBundledBestPractices(): Promise { - return readFile(path.join(__dirname, '..', 'resources', 'best-practices.md'), 'utf-8'); + return readFile(join(__dirname, '../resources/best-practices.md'), 'utf-8'); } /** @@ -126,14 +126,14 @@ async function getVersionSpecificBestPractices( bestPracticesInfo.format === 'markdown' && typeof bestPracticesInfo.path === 'string' ) { - const packageDirectory = path.dirname(pkgJsonPath); - const guidePath = path.resolve(packageDirectory, bestPracticesInfo.path); + const packageDirectory = dirname(pkgJsonPath); + const guidePath = resolve(packageDirectory, bestPracticesInfo.path); // Ensure the resolved guide path is within the package boundary. // Uses path.relative to create a cross-platform, case-insensitive check. // If the relative path starts with '..' or is absolute, it is a traversal attempt. - const relativePath = path.relative(packageDirectory, guidePath); - if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) { + const relativePath = relative(packageDirectory, guidePath); + if (relativePath.startsWith('..') || isAbsolute(relativePath)) { logger.warn( `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + `The path '${bestPracticesInfo.path}' escapes the package boundary. ` + diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index 75812460bd22..f2618f8e6309 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -7,9 +7,9 @@ */ import { z } from 'zod'; -import { CommandError, Host, LocalWorkspaceHost } from '../host'; +import { CommandError, type Host, LocalWorkspaceHost } from '../host'; import { createStructuredContentOutput } from '../utils'; -import { McpToolDeclaration, declareTool } from './tool-registry'; +import { type McpToolDeclaration, declareTool } from './tool-registry'; const DEFAULT_CONFIGURATION = 'development'; diff --git a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts index 20678501b977..4ad98e0456b9 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts @@ -7,7 +7,7 @@ */ import { CommandError, Host } from '../host'; -import { MockHost } from '../testing/mock-host'; +import type { MockHost } from '../testing/mock-host'; import { runBuild } from './build'; describe('Build Tool', () => { @@ -18,7 +18,7 @@ describe('Build Tool', () => { runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), stat: jasmine.createSpy('stat'), existsSync: jasmine.createSpy('existsSync'), - } as Partial as MockHost; + } as MockHost; }); it('should construct the command correctly with default configuration', async () => { diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts index 5b3116125223..7b9ce0f10a08 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts @@ -7,9 +7,9 @@ */ import { EventEmitter } from 'events'; -import { ChildProcess } from 'node:child_process'; -import { MockHost } from '../../testing/mock-host'; -import { McpToolContext } from '../tool-registry'; +import type { ChildProcess } from 'node:child_process'; +import type { MockHost } from '../../testing/mock-host'; +import type { McpToolContext } from '../tool-registry'; import { startDevServer } from './start-devserver'; import { stopDevserver } from './stop-devserver'; import { WATCH_DELAY, waitForDevserverBuild } from './wait-for-devserver-build'; @@ -34,7 +34,7 @@ describe('Serve Tools', () => { getAvailablePort: jasmine.createSpy('getAvailablePort').and.callFake(() => { return Promise.resolve(portCounter++); }), - } as Partial as MockHost; + } as MockHost; mockContext = { devServers: new Map(), diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts index abc6a8cdfa33..dbbc4dbd3cfd 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts @@ -8,9 +8,9 @@ import { z } from 'zod'; import { LocalDevServer, devServerKey } from '../../dev-server'; -import { Host, LocalWorkspaceHost } from '../../host'; +import { type Host, LocalWorkspaceHost } from '../../host'; import { createStructuredContentOutput } from '../../utils'; -import { McpToolContext, McpToolDeclaration, declareTool } from '../tool-registry'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; const startDevServerToolInputSchema = z.object({ project: z diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts index 842910e6cac0..ed33ff3f0f7d 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts @@ -9,7 +9,7 @@ import { z } from 'zod'; import { devServerKey } from '../../dev-server'; import { createStructuredContentOutput } from '../../utils'; -import { McpToolContext, McpToolDeclaration, declareTool } from '../tool-registry'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; const stopDevserverToolInputSchema = z.object({ project: z diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts index 0d698c8f452a..1a002f4c5b2a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts @@ -9,7 +9,7 @@ import { z } from 'zod'; import { devServerKey } from '../../dev-server'; import { createStructuredContentOutput } from '../../utils'; -import { McpToolContext, McpToolDeclaration, declareTool } from '../tool-registry'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; /** * How long to wait to give "ng serve" time to identify whether the watched workspace has changed. diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts index dbf80794cc26..7d0f1bd92ab5 100644 --- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts +++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts @@ -11,7 +11,7 @@ import { createDecipheriv } from 'node:crypto'; import { Readable } from 'node:stream'; import { z } from 'zod'; import { at, iv, k1 } from '../constants'; -import { McpToolContext, declareTool } from './tool-registry'; +import { type McpToolContext, declareTool } from './tool-registry'; const ALGOLIA_APP_ID = 'L1XWT2UJ7F'; // https://www.algolia.com/doc/guides/security/api-keys/#search-only-api-key diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts index 8866761017a6..709bbebfc6ae 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples.ts @@ -8,10 +8,10 @@ import { glob, readFile, stat } from 'node:fs/promises'; import { createRequire } from 'node:module'; -import path from 'node:path'; +import { dirname, isAbsolute, join, relative, resolve } from 'node:path'; import type { DatabaseSync, SQLInputValue } from 'node:sqlite'; import { z } from 'zod'; -import { McpToolContext, declareTool } from './tool-registry'; +import { type McpToolContext, declareTool } from './tool-registry'; const findExampleInputSchema = z.object({ workspacePath: z @@ -246,12 +246,12 @@ async function getVersionSpecificExampleDatabase( const examplesInfo = pkgJson['angular']?.examples; if (examplesInfo && examplesInfo.format === 'sqlite' && typeof examplesInfo.path === 'string') { - const packageDirectory = path.dirname(pkgJsonPath); - const dbPath = path.resolve(packageDirectory, examplesInfo.path); + const packageDirectory = dirname(pkgJsonPath); + const dbPath = resolve(packageDirectory, examplesInfo.path); // Ensure the resolved database path is within the package boundary. - const relativePath = path.relative(packageDirectory, dbPath); - if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) { + const relativePath = relative(packageDirectory, dbPath); + if (relativePath.startsWith('..') || isAbsolute(relativePath)) { logger.warn( `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + `The path '${examplesInfo.path}' escapes the package boundary. ` + @@ -634,7 +634,7 @@ async function setupRuntimeExamples(examplesPath: string): Promise continue; } - const content = await readFile(path.join(entry.parentPath, entry.name), 'utf-8'); + const content = await readFile(join(entry.parentPath, entry.name), 'utf-8'); const frontmatter = parseFrontmatter(content); const validation = frontmatterSchema.safeParse(frontmatter); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index fc9b1d6cc45a..754bb683bdc0 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -8,9 +8,9 @@ import { dirname, join, relative } from 'path'; import { z } from 'zod'; -import { CommandError, Host, LocalWorkspaceHost } from '../host'; -import { createStructuredContentOutput } from '../utils'; -import { McpToolDeclaration, declareTool } from './tool-registry'; +import { CommandError, type Host, LocalWorkspaceHost } from '../host'; +import { createStructuredContentOutput, findAngularJsonDir } from '../utils'; +import { type McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { name: string; @@ -93,20 +93,6 @@ const modernizeOutputSchema = z.object({ export type ModernizeInput = z.infer; export type ModernizeOutput = z.infer; -function findAngularJsonDir(startDir: string, host: Host): string | null { - let currentDir = startDir; - while (true) { - if (host.existsSync(join(currentDir, 'angular.json'))) { - return currentDir; - } - const parentDir = dirname(currentDir); - if (parentDir === currentDir) { - return null; - } - currentDir = parentDir; - } -} - export async function runModernization(input: ModernizeInput, host: Host) { const transformationNames = input.transformations ?? []; const directories = input.directories ?? []; diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index 13b0e55f6946..82f0c70e11d3 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -11,8 +11,8 @@ import { mkdir, mkdtemp, rm, writeFile } from 'fs/promises'; import { tmpdir } from 'os'; import { join } from 'path'; import { CommandError } from '../host'; -import { MockHost } from '../testing/mock-host'; -import { ModernizeOutput, runModernization } from './modernize'; +import type { MockHost } from '../testing/mock-host'; +import { type ModernizeOutput, runModernization } from './modernize'; describe('Modernize Tool', () => { let projectDir: string; @@ -29,7 +29,7 @@ describe('Modernize Tool', () => { existsSync: jasmine.createSpy('existsSync').and.callFake((p: string) => { return p === join(projectDir, 'angular.json'); }), - } as Partial as MockHost; + } as MockHost; }); afterEach(async () => { diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/analyze_for_unsupported_zone_uses.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/analyze-for-unsupported-zone-uses.ts similarity index 95% rename from packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/analyze_for_unsupported_zone_uses.ts rename to packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/analyze-for-unsupported-zone-uses.ts index dd3d848e8883..a523b43145eb 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/analyze_for_unsupported_zone_uses.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/analyze-for-unsupported-zone-uses.ts @@ -8,8 +8,8 @@ import type { ImportSpecifier, Node, SourceFile } from 'typescript'; import { createUnsupportedZoneUsagesMessage } from './prompts'; -import { getImportSpecifier, loadTypescript } from './ts_utils'; -import { MigrationResponse } from './types'; +import { getImportSpecifier, loadTypescript } from './ts-utils'; +import type { MigrationResponse } from './types'; export async function analyzeForUnsupportedZoneUses( sourceFile: SourceFile, diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts similarity index 86% rename from packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file.ts rename to packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts index 757da8883505..1a1bc2c58f34 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts @@ -6,15 +6,15 @@ * found in the LICENSE file at https://angular.dev/license */ -import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; -import { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; +import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; +import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; import type { SourceFile } from 'typescript'; -import { analyzeForUnsupportedZoneUses } from './analyze_for_unsupported_zone_uses'; -import { migrateTestFile } from './migrate_test_file'; +import { analyzeForUnsupportedZoneUses } from './analyze-for-unsupported-zone-uses'; +import { migrateTestFile } from './migrate-test-file'; import { generateZonelessMigrationInstructionsForComponent } from './prompts'; -import { sendDebugMessage } from './send_debug_message'; -import { getImportSpecifier, loadTypescript } from './ts_utils'; -import { MigrationResponse } from './types'; +import { sendDebugMessage } from './send-debug-message'; +import { getImportSpecifier, loadTypescript } from './ts-utils'; +import type { MigrationResponse } from './types'; export async function migrateSingleFile( sourceFile: SourceFile, diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file_spec.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts similarity index 95% rename from packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file_spec.ts rename to packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts index da2f59db0182..20ed43626639 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_single_file_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts @@ -6,10 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; -import { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; +import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; +import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; import ts from 'typescript'; -import { migrateSingleFile } from './migrate_single_file'; +import { migrateSingleFile } from './migrate-single-file'; const fakeExtras = { sendDebugMessage: jasmine.createSpy(), diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts similarity index 82% rename from packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.ts rename to packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts index 479251c428a8..bae1762282a1 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts @@ -6,12 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import * as fs from 'node:fs'; +import { existsSync, readFileSync } from 'node:fs'; import { glob } from 'node:fs/promises'; import { dirname, join } from 'node:path'; import type { SourceFile } from 'typescript'; +import { findAngularJsonDir } from '../../utils'; import { createFixResponseForZoneTests, createProvideZonelessForTestsSetupPrompt } from './prompts'; -import { loadTypescript } from './ts_utils'; +import { loadTypescript } from './ts-utils'; import { MigrationResponse } from './types'; export async function migrateTestFile(sourceFile: SourceFile): Promise { @@ -52,7 +53,7 @@ export async function searchForGlobalZoneless(startPath: string): Promise { it('should return setup prompt when zoneless is not detected', async () => { diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/prompts.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/prompts.ts index b01dd5bdee94..f4eba63ceb4c 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/prompts.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/prompts.ts @@ -7,8 +7,8 @@ */ import type { Node, SourceFile } from 'typescript'; -import { loadTypescript } from './ts_utils'; -import { MigrationResponse } from './types'; +import { loadTypescript } from './ts-utils'; +import type { MigrationResponse } from './types'; /* eslint-disable max-len */ @@ -31,7 +31,7 @@ export function createProvideZonelessForTestsSetupPrompt(testFilePath: string): \`\`\`diff - import {{ SomeImport }} from '@angular/core'; + import {{ SomeImport, provideZonelessChangeDetection }} from '@angular/core'; - + describe('MyComponent', () => { + beforeEach(() => { + TestBed.configureTestingModule({providers: [provideZonelessChangeDetection()]}); diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/send_debug_message.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/send-debug-message.ts similarity index 73% rename from packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/send_debug_message.ts rename to packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/send-debug-message.ts index 73a1b068a698..b2f5436d497a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/send_debug_message.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/send-debug-message.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; -import { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; +import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; +import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; export function sendDebugMessage( message: string, diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts_utils.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts similarity index 90% rename from packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts_utils.ts rename to packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts index 72764d648b88..08a3f6f0dcfd 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts_utils.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts @@ -6,8 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import * as fs from 'node:fs'; -import type { ImportSpecifier, NodeArray, SourceFile } from 'typescript'; +import { readFileSync } from 'node:fs'; import type ts from 'typescript'; let typescriptModule: typeof ts; @@ -34,10 +33,10 @@ export async function loadTypescript(): Promise { * their original name. */ export async function getImportSpecifier( - sourceFile: SourceFile, + sourceFile: ts.SourceFile, moduleName: string | RegExp, specifierName: string, -): Promise { +): Promise { return ( getImportSpecifiers(sourceFile, moduleName, specifierName, await loadTypescript())[0] ?? null ); @@ -61,12 +60,12 @@ export async function getImportSpecifier( * names. Aliases will be resolved to their original name. */ function getImportSpecifiers( - sourceFile: SourceFile, + sourceFile: ts.SourceFile, moduleName: string | RegExp, specifierOrSpecifiers: string | string[], { isNamedImports, isImportDeclaration, isStringLiteral }: typeof ts, -): ImportSpecifier[] { - const matches: ImportSpecifier[] = []; +): ts.ImportSpecifier[] { + const matches: ts.ImportSpecifier[] = []; for (const node of sourceFile.statements) { if (!isImportDeclaration(node) || !isStringLiteral(node.moduleSpecifier)) { continue; @@ -106,9 +105,9 @@ function getImportSpecifiers( * @param specifierName Name of the specifier to look for. */ export function findImportSpecifier( - nodes: NodeArray, + nodes: ts.NodeArray, specifierName: string, -): ImportSpecifier | undefined { +): ts.ImportSpecifier | undefined { return nodes.find((element) => { const { name, propertyName } = element; @@ -118,7 +117,7 @@ export function findImportSpecifier( /** Creates a TypeScript source file from a file path. */ export async function createSourceFile(file: string) { - const content = fs.readFileSync(file, 'utf8'); + const content = readFileSync(file, 'utf8'); const ts = await loadTypescript(); diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts index eaca30e274d9..bb2b1574d294 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts @@ -6,19 +6,19 @@ * found in the LICENSE file at https://angular.dev/license */ -import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; -import { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; -import * as fs from 'node:fs'; +import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol'; +import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types'; +import { existsSync, statSync } from 'node:fs'; import { glob } from 'node:fs/promises'; -import { type SourceFile } from 'typescript'; +import type { SourceFile } from 'typescript'; import { z } from 'zod'; import { declareTool } from '../tool-registry'; -import { analyzeForUnsupportedZoneUses } from './analyze_for_unsupported_zone_uses'; -import { migrateSingleFile } from './migrate_single_file'; -import { migrateTestFile } from './migrate_test_file'; +import { analyzeForUnsupportedZoneUses } from './analyze-for-unsupported-zone-uses'; +import { migrateSingleFile } from './migrate-single-file'; +import { migrateTestFile } from './migrate-test-file'; import { createResponse, createTestDebuggingGuideForNonActionableInput } from './prompts'; -import { sendDebugMessage } from './send_debug_message'; -import { createSourceFile, getImportSpecifier } from './ts_utils'; +import { sendDebugMessage } from './send-debug-message'; +import { createSourceFile, getImportSpecifier } from './ts-utils'; export const ZONELESS_MIGRATION_TOOL = declareTool({ name: 'onpush-zoneless-migration', @@ -127,7 +127,7 @@ async function discoverAndCategorizeFiles( let isDirectory: boolean; try { - isDirectory = fs.statSync(fileOrDirPath).isDirectory(); + isDirectory = statSync(fileOrDirPath).isDirectory(); } catch (e) { // Re-throw to be handled by the main function as a user input error throw new Error(`Failed to access path: ${fileOrDirPath}`); @@ -232,7 +232,7 @@ async function rankComponentFilesForMigration( async function getTestFilePath(filePath: string): Promise { const testFilePath = filePath.replace(/\.ts$/, '.spec.ts'); - if (fs.existsSync(testFilePath)) { + if (existsSync(testFilePath)) { return testFilePath; } diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index e3990b1b74c5..e6abff0ca418 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -7,13 +7,13 @@ */ import { readFile, readdir, stat } from 'node:fs/promises'; -import path from 'node:path'; +import { dirname, extname, join, normalize, posix, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; import semver from 'semver'; -import z from 'zod'; +import { z } from 'zod'; import { AngularWorkspace } from '../../../utilities/config'; import { assertIsError } from '../../../utilities/error'; -import { McpToolContext, declareTool } from './tool-registry'; +import { type McpToolContext, declareTool } from './tool-registry'; // Single source of truth for what constitutes a valid style language. const styleLanguageSchema = z.enum(['css', 'scss', 'sass', 'less']); @@ -181,7 +181,7 @@ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { const entries = await readdir(dir, { withFileTypes: true }); const subdirectories: string[] = []; for (const entry of entries) { - const fullPath = path.join(dir, entry.name); + const fullPath = join(dir, entry.name); if (entry.isDirectory()) { // Exclude dot-directories, build/cache directories, and node_modules if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name)) { @@ -251,7 +251,7 @@ async function findAngularCoreVersion( return cachedResult; } - const pkgPath = path.join(currentDir, 'package.json'); + const pkgPath = join(currentDir, 'package.json'); try { const pkgContent = await readFile(pkgPath, 'utf-8'); const pkg = JSON.parse(pkgContent); @@ -279,7 +279,7 @@ async function findAngularCoreVersion( if (currentDir === searchRoot) { break; } - const parentDir = path.dirname(currentDir); + const parentDir = dirname(currentDir); if (parentDir === currentDir) { break; // Reached the filesystem root. } @@ -388,7 +388,7 @@ async function getProjectStyleLanguage( const styles = buildTarget.options['styles'] as string[] | undefined; if (Array.isArray(styles)) { for (const stylePath of styles) { - const style = getStyleLanguageFromExtension(path.extname(stylePath)); + const style = getStyleLanguageFromExtension(extname(stylePath)); if (style) { return style; } @@ -399,7 +399,7 @@ async function getProjectStyleLanguage( // 5. Infer from implicit default styles file (future-proofing). for (const ext of STYLE_LANGUAGE_SEARCH_ORDER) { try { - await stat(path.join(fullSourceRoot, `styles.${ext}`)); + await stat(join(fullSourceRoot, `styles.${ext}`)); return ext; } catch { @@ -424,7 +424,7 @@ async function loadAndParseWorkspace( seenPaths: Set, ): Promise<{ workspace: WorkspaceData | null; error: ParsingError | null }> { try { - const resolvedPath = path.resolve(configFile); + const resolvedPath = resolve(configFile); if (seenPaths.has(resolvedPath)) { return { workspace: null, error: null }; // Already processed, skip. } @@ -432,10 +432,10 @@ async function loadAndParseWorkspace( const ws = await AngularWorkspace.load(configFile); const projects = []; - const workspaceRoot = path.dirname(configFile); + const workspaceRoot = dirname(configFile); for (const [name, project] of ws.projects.entries()) { - const sourceRoot = path.posix.join(project.root, project.sourceRoot ?? 'src'); - const fullSourceRoot = path.join(workspaceRoot, sourceRoot); + const sourceRoot = posix.join(project.root, project.sourceRoot ?? 'src'); + const fullSourceRoot = join(workspaceRoot, sourceRoot); const unitTestFramework = getUnitTestFramework(project.targets.get('test')); const styleLanguage = await getProjectStyleLanguage(project, ws, fullSourceRoot); @@ -492,7 +492,7 @@ async function processConfigFile( } try { - const workspaceDir = path.dirname(configFile); + const workspaceDir = dirname(configFile); workspace.frameworkVersion = await findAngularCoreVersion( workspaceDir, versionCache, @@ -523,7 +523,7 @@ async function createListProjectsHandler({ server }: McpToolContext) { const clientCapabilities = server.server.getClientCapabilities(); if (clientCapabilities?.roots) { const { roots } = await server.server.listRoots(); - searchRoots = roots?.map((r) => path.normalize(fileURLToPath(r.uri))) ?? []; + searchRoots = roots?.map((r) => normalize(fileURLToPath(r.uri))) ?? []; } else { // Fallback to the current working directory if client does not support roots searchRoots = [process.cwd()]; diff --git a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts index a70d4185dd81..9bbce768000b 100644 --- a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts +++ b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts @@ -7,9 +7,9 @@ */ import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { ZodRawShape } from 'zod'; +import type { ZodRawShape } from 'zod'; import type { AngularWorkspace } from '../../../utilities/config'; -import { DevServer } from '../dev-server'; +import type { DevServer } from '../dev-server'; type ToolConfig = Parameters[1]; diff --git a/packages/angular/cli/src/commands/mcp/utils.ts b/packages/angular/cli/src/commands/mcp/utils.ts index 49fa697ceca8..f5fdd70ef40e 100644 --- a/packages/angular/cli/src/commands/mcp/utils.ts +++ b/packages/angular/cli/src/commands/mcp/utils.ts @@ -11,6 +11,9 @@ * Utility functions shared across MCP tools. */ +import { dirname, join } from 'node:path'; +import { LocalWorkspaceHost } from './host'; + /** * Returns simple structured content output from an MCP tool. * @@ -22,3 +25,30 @@ export function createStructuredContentOutput(structuredContent: Out structuredContent, }; } + +/** + * Searches for an angular.json file by traversing up the directory tree from a starting directory. + * + * @param startDir The directory path to start searching from + * @param host The workspace host instance used to check file existence. Defaults to LocalWorkspaceHost + * @returns The absolute path to the directory containing angular.json, or null if not found + * + * @remarks + * This function performs an upward directory traversal starting from `startDir`. + * It checks each directory for the presence of an angular.json file until either: + * - The file is found (returns the directory path) + * - The root of the filesystem is reached (returns null) + */ +export function findAngularJsonDir(startDir: string, host = LocalWorkspaceHost): string | null { + let currentDir = startDir; + while (true) { + if (host.existsSync(join(currentDir, 'angular.json'))) { + return currentDir; + } + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + return null; + } + currentDir = parentDir; + } +} diff --git a/packages/angular_devkit/schematics_cli/test/schematics.spec.ts b/packages/angular_devkit/schematics_cli/test/schematics_spec.ts similarity index 100% rename from packages/angular_devkit/schematics_cli/test/schematics.spec.ts rename to packages/angular_devkit/schematics_cli/test/schematics_spec.ts From eca8236ef9188e9437f2b236ecc729db620c9b30 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 7 Nov 2025 17:46:05 +0000 Subject: [PATCH 1751/2162] build: migrate license file handling to `write_source_file` Migrate the handling of THIRD_PARTY_LICENSES.txt.golden in the SSR npm package from using `bazel_skylib`'s `diff_test` and `write_file` rules to `aspect_bazel_lib`'s `write_source_file` rule. This simplifies the Bazel configuration for managing the golden license file. --- .../angular/ssr/test/npm_package/BUILD.bazel | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/packages/angular/ssr/test/npm_package/BUILD.bazel b/packages/angular/ssr/test/npm_package/BUILD.bazel index d79cbf7d0105..ae1694d8caac 100644 --- a/packages/angular/ssr/test/npm_package/BUILD.bazel +++ b/packages/angular/ssr/test/npm_package/BUILD.bazel @@ -1,5 +1,4 @@ -load("@bazel_skylib//rules:diff_test.bzl", "diff_test") -load("@bazel_skylib//rules:write_file.bzl", "write_file") +load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_file") load("//tools:defaults.bzl", "jasmine_test", "ts_project") ts_project( @@ -32,26 +31,8 @@ genrule( """, ) -diff_test( - name = "beasties_license_test", - failure_message = """ - - To accept the new golden file, execute: - pnpm bazel run //packages/angular/ssr/test/npm_package:beasties_license_test.accept - """, - file1 = ":THIRD_PARTY_LICENSES.txt.golden", - file2 = ":beasties_license_file", -) - -write_file( - name = "beasties_license_test.accept", - out = "beasties_license_file_accept.sh", - content = - [ - "#!/usr/bin/env bash", - "cd ${BUILD_WORKSPACE_DIRECTORY}", - "pnpm bazel build //packages/angular/ssr:npm_package", - "cp -fv dist/bin/packages/angular/ssr/npm_package/third_party/beasties/THIRD_PARTY_LICENSES.txt packages/angular/ssr/test/npm_package/THIRD_PARTY_LICENSES.txt.golden", - ], - is_executable = True, +write_source_file( + name = "beasties_license", + in_file = ":beasties_license_file", + out_file = ":THIRD_PARTY_LICENSES.txt.golden", ) From 38c22001330eaf2b37b8a0a04fdda50666458664 Mon Sep 17 00:00:00 2001 From: Claudio Roma <36543510+roma-claudio@users.noreply.github.com> Date: Sat, 8 Nov 2025 01:07:52 +0700 Subject: [PATCH 1752/2162] fix(@angular/build): do not remove `@angular/localize` when having external packages (#31721) The current bundle logic removes the `@angular/localize` polyfill if i18n inline is active. However, i18n inlining is not applied on external packages (e.g. during `ng serve` for prebundled dependencies) This causes an issue at runtime execution of the packages which are external and depend on localization. With this change the `@angular/localize` polyfill is retained when external packages is truthy. --- .../build/src/tools/esbuild/application-code-bundle.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 51d3702887f7..635faca8c82e 100644 --- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts +++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts @@ -654,7 +654,7 @@ function getEsBuildCommonPolyfillsOptions( tryToResolvePolyfillsAsRelative: boolean, loadResultCache: LoadResultCache | undefined, ): BuildOptions | undefined { - const { jit, workspaceRoot, i18nOptions } = options; + const { jit, workspaceRoot, i18nOptions, externalPackages } = options; const buildOptions = getEsBuildCommonOptions(options); buildOptions.splitting = false; @@ -671,8 +671,10 @@ function getEsBuildCommonPolyfillsOptions( // Locale data should go first so that project provided polyfill code can augment if needed. let needLocaleDataPlugin = false; if (i18nOptions.shouldInline) { - // Remove localize polyfill as this is not needed for build time i18n. - polyfills = polyfills.filter((path) => !path.startsWith('@angular/localize')); + if (!externalPackages) { + // Remove localize polyfill when i18n inline transformation have been applied to all the packages. + polyfills = polyfills.filter((path) => !path.startsWith('@angular/localize')); + } // Add locale data for all active locales // TODO: Inject each individually within the inlining process itself From d6b3074812676142559fe396d345401c15296c02 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 7 Nov 2025 05:05:47 +0000 Subject: [PATCH 1753/2162] build: update all non-major dependencies See associated pull request for more information. --- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 234 +++++++++++------- 3 files changed, 149 insertions(+), 91 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 5c2046bc1137..345d83a0b22a 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,12 +37,12 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.3", - "rolldown": "1.0.0-beta.46", + "rolldown": "1.0.0-beta.47", "sass": "1.93.3", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "vite": "7.1.12", + "vite": "7.2.1", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 7cf358505f7b..fcbca99f780c 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -51,7 +51,7 @@ "semver": "7.7.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.44.0", + "terser": "5.44.1", "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 902b214c5b98..ab1741abe7f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -333,7 +333,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.7 - version: 4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -342,7 +342,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.7 - version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -366,7 +366,7 @@ importers: version: 5.1.19(@types/node@24.10.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -404,8 +404,8 @@ importers: specifier: 5.1.3 version: 5.1.3 rolldown: - specifier: 1.0.0-beta.46 - version: 1.0.0-beta.46 + specifier: 1.0.0-beta.47 + version: 1.0.0-beta.47 sass: specifier: 1.93.3 version: 1.93.3 @@ -419,8 +419,8 @@ importers: specifier: 0.2.15 version: 0.2.15 vite: - specifier: 7.1.12 - version: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.2.1 + version: 7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -448,7 +448,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.7 - version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.3 @@ -729,8 +729,8 @@ importers: specifier: 0.5.21 version: 0.5.21 terser: - specifier: 5.44.0 - version: 5.44.0 + specifier: 5.44.1 + version: 5.44.1 tinyglobby: specifier: 0.2.15 version: 0.2.15 @@ -2924,95 +2924,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.46': - resolution: {integrity: sha512-1nfXUqZ227uKuLw9S12OQZU5z+h+cUOXLW5orntWVxHWvt20pt1PGUcVoIU8ssngKABu0vzHY268kAxuYX24BQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.47': + resolution: {integrity: sha512-vPP9/MZzESh9QtmvQYojXP/midjgkkc1E4AdnPPAzQXo668ncHJcVLKjJKzoBdsQmaIvNjrMdsCwES8vTQHRQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.46': - resolution: {integrity: sha512-w4IyumCQkpA3ezZ37COG3mMusFYxjEE8zqCfXZU/qb5k1JMD2kVl0fgJafIbGli27tgelYMweXkJGnlrxSGT9Q==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.47': + resolution: {integrity: sha512-Lc3nrkxeaDVCVl8qR3qoxh6ltDZfkQ98j5vwIr5ALPkgjZtDK4BGCrrBoLpGVMg+csWcaqUbwbKwH5yvVa0oOw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.46': - resolution: {integrity: sha512-9QqaRHPbdAnv306+7nzltq4CktJ49Z4W9ybHLWYxSeDSoOGL4l1QmxjDWoRHrqYEkNr+DWHqqoD4NNHgOk7lKw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.47': + resolution: {integrity: sha512-eBYxQDwP0O33plqNVqOtUHqRiSYVneAknviM5XMawke3mwMuVlAsohtOqEjbCEl/Loi/FWdVeks5WkqAkzkYWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.46': - resolution: {integrity: sha512-Cuk5opdEMb+Evi7QcGArc4hWVoHSGz/qyUUWLTpFJWjylb8wH1u4f+HZE6gVGACuf4w/5P/VhAIamHyweAbBVQ==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.47': + resolution: {integrity: sha512-Ns+kgp2+1Iq/44bY/Z30DETUSiHY7ZuqaOgD5bHVW++8vme9rdiWsN4yG4rRPXkdgzjvQ9TDHmZZKfY4/G11AA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': - resolution: {integrity: sha512-BPWDxEnxb4JNMXrSmPuc5ywI6cHOELofmT0e/WGkbL1MwKYRVvqTf+gMcGLF6zAV+OF5hLYMAEk8XKfao6xmDQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.47': + resolution: {integrity: sha512-4PecgWCJhTA2EFOlptYJiNyVP2MrVP4cWdndpOu3WmXqWqZUmSubhb4YUAIxAxnXATlGjC1WjxNPhV7ZllNgdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': - resolution: {integrity: sha512-CDQSVlryuRC955EwgbBK1h/6xQyttSxQG8+6/PeOfvUlfKGPMbBdcsOEHzGve5ED1Y7Ovh2UFjY/eT106aQqig==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.47': + resolution: {integrity: sha512-CyIunZ6D9U9Xg94roQI1INt/bLkOpPsZjZZkiaAZ0r6uccQdICmC99M9RUPlMLw/qg4yEWLlQhG73W/mG437NA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': - resolution: {integrity: sha512-6IZHycZetmVaC9zwcl1aA9fPYPuxLa5apALjJRoJu/2BZdER3zBWxDnCzlEh4SUlo++cwdfV9ZQRK9JS8cLNuA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.47': + resolution: {integrity: sha512-doozc/Goe7qRCSnzfJbFINTHsMktqmZQmweull6hsZZ9sjNWQ6BWQnbvOlfZJe4xE5NxM1NhPnY5Giqnl3ZrYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': - resolution: {integrity: sha512-R/kI8fMnsxXvWzcMv5A408hfvrwtAwD/HdQKIE1HKWmfxdSHB11Y3PVwlnt7RVo7I++6mWCIxxj5o3gut4ibEw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.47': + resolution: {integrity: sha512-fodvSMf6Aqwa0wEUSTPewmmZOD44rc5Tpr5p9NkwQ6W1SSpUKzD3SwpJIgANDOhwiYhDuiIaYPGB7Ujkx1q0UQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': - resolution: {integrity: sha512-vGUXKuHGUlG2XBwvN4A8KIegeaVVxN2ZxdGG9thycwRkzUvZ9ccKvqUVZM8cVRyNRWgVgsGCS18qLUefVplwKw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.47': + resolution: {integrity: sha512-Rxm5hYc0mGjwLh5sjlGmMygxAaV2gnsx7CNm2lsb47oyt5UQyPDZf3GP/ct8BEcwuikdqzsrrlIp8+kCSvMFNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': - resolution: {integrity: sha512-6SpDGH+0Dud3/RFDoC6fva6+Cm/0COnMRKR8kI4ssHWlCXPymlM59kYFCIBLZZqwURpNVVMPln4rWjxXuwD23w==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.47': + resolution: {integrity: sha512-YakuVe+Gc87jjxazBL34hbr8RJpRuFBhun7NEqoChVDlH5FLhLXjAPHqZd990TVGVNkemourf817Z8u2fONS8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': - resolution: {integrity: sha512-peWDGp8YUAbTw5RJzr9AuPlTuf2adr+TBNIGF6ysMbobBKuQL41wYfGQlcerXJfLmjnQLf6DU2zTPBTfrS2Y8A==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.47': + resolution: {integrity: sha512-ak2GvTFQz3UAOw8cuQq8pWE+TNygQB6O47rMhvevvTzETh7VkHRFtRUwJynX5hwzFvQMP6G0az5JrBGuwaMwYQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': - resolution: {integrity: sha512-Ydbwg1JCnVbTAuDyKtu3dOuBLgZ6iZsy8p1jMPX/r7LMPnpXnS15GNcmMwa11nyl/M2VjGE1i/MORUTMt8mnRQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.47': + resolution: {integrity: sha512-o5BpmBnXU+Cj+9+ndMcdKjhZlPb79dVPBZnWwMnI4RlNSSq5yOvFZqvfPYbyacvnW03Na4n5XXQAPhu3RydZ0w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': - resolution: {integrity: sha512-XcPZG2uDxEn6G3takXQvi7xWgDiJqdC0N6mubL/giKD4I65zgQtbadwlIR8oDB/erOahZr5IX8cRBVcK3xcvpg==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.47': + resolution: {integrity: sha512-FVOmfyYehNE92IfC9Kgs913UerDog2M1m+FADJypKz0gmRg3UyTt4o1cZMCAl7MiR89JpM9jegNO1nXuP1w1vw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': - resolution: {integrity: sha512-VPC+F9S6nllv02aGG+gxHRgpOaOlYBPn94kDe9DCFSLOztf4uYIAkN+tLDlg5OcsOC8XNR5rP49zOfI0PfnHYw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.47': + resolution: {integrity: sha512-by/70F13IUE101Bat0oeH8miwWX5mhMFPk1yjCdxoTNHTyTdLgb0THNaebRM6AP7Kz+O3O2qx87sruYuF5UxHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.46': - resolution: {integrity: sha512-xMNwJo/pHkEP/mhNVnW+zUiJDle6/hxrwO0mfSJuEVRbBfgrJFuUSRoZx/nYUw5pCjrysl9OkNXCkAdih8GCnA==} + '@rolldown/pluginutils@1.0.0-beta.47': + resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -7665,8 +7665,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.46: - resolution: {integrity: sha512-FYUbq0StVHOjkR/hEJ667Pup3ugeB9odBcbmxU5il9QfT9X2t/FPhkqFYQthbYxD2bKnQyO+2vHTgnmOHwZdeA==} + rolldown@1.0.0-beta.47: + resolution: {integrity: sha512-Mid74GckX1OeFAOYz9KuXeWYhq3xkXbMziYIC+ULVdUzPTG9y70OBSBQDQn9hQP8u/AfhuYw1R0BSg15nBI4Dg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8217,8 +8217,8 @@ packages: uglify-js: optional: true - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true @@ -8635,6 +8635,46 @@ packages: yaml: optional: true + vite@7.2.1: + resolution: {integrity: sha512-qTl3VF7BvOupTR85Zc561sPEgxyUSNSvTQ9fit7DEMP7yPgvvIGm5Zfa1dOM+kOwWGNviK9uFM9ra77+OjK7lQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@4.0.7: resolution: {integrity: sha512-xQroKAadK503CrmbzCISvQUjeuvEZzv6U0wlnlVFOi5i3gnzfH4onyQ29f3lzpe0FresAiTAd3aqK0Bi/jLI8w==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -11380,51 +11420,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.46': + '@rolldown/binding-android-arm64@1.0.0-beta.47': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.46': + '@rolldown/binding-darwin-arm64@1.0.0-beta.47': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.46': + '@rolldown/binding-darwin-x64@1.0.0-beta.47': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.46': + '@rolldown/binding-freebsd-x64@1.0.0-beta.47': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.47': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.47': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.47': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.47': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.47': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.47': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.47': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.47': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.47': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.47': optional: true - '@rolldown/pluginutils@1.0.0-beta.46': {} + '@rolldown/pluginutils@1.0.0-beta.47': {} '@rollup/plugin-alias@6.0.0(rollup@4.52.5)': optionalDependencies: @@ -12244,11 +12284,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.7 @@ -12261,7 +12301,7 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12274,13 +12314,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.7': dependencies: @@ -16972,25 +17012,25 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@1.0.0-beta.46: + rolldown@1.0.0-beta.47: dependencies: '@oxc-project/types': 0.96.0 - '@rolldown/pluginutils': 1.0.0-beta.46 + '@rolldown/pluginutils': 1.0.0-beta.47 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.46 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.46 - '@rolldown/binding-darwin-x64': 1.0.0-beta.46 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.46 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.46 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.46 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.46 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.46 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.46 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.46 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.46 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.46 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.46 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.46 + '@rolldown/binding-android-arm64': 1.0.0-beta.47 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.47 + '@rolldown/binding-darwin-x64': 1.0.0-beta.47 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.47 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.47 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.47 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.47 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.47 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.47 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.47 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.47 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.47 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.47 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.47 rollup-license-plugin@3.0.2: dependencies: @@ -17710,12 +17750,12 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.0 + terser: 5.44.1 webpack: 5.102.1(esbuild@0.25.12) optionalDependencies: esbuild: 0.25.12 - terser@5.44.0: + terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -18130,7 +18170,25 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.5 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.0 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.93.3 + terser: 5.44.1 + tsx: 4.20.6 + yaml: 2.8.1 + + vite@7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18144,14 +18202,14 @@ snapshots: jiti: 2.6.1 less: 4.4.2 sass: 1.93.3 - terser: 5.44.0 + terser: 5.44.1 tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.7 - '@vitest/mocker': 4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.7 '@vitest/runner': 4.0.7 '@vitest/snapshot': 4.0.7 @@ -18168,7 +18226,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 From ad99e00ad7edd17e369777c8d38b4137ea736121 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Sat, 8 Nov 2025 09:34:51 +0100 Subject: [PATCH 1754/2162] fix(@angular/build): simplify SSL handling for `ng serve` with SSR (#31722) This commit simplifies the handling of self-signed SSL certificates for `ng serve` with SSR. Previously, tests and potentially users had to set `NODE_TLS_REJECT_UNAUTHORIZED` or `NODE_EXTRA_CA_CERTS` to bypass certificate validation issues with self-signed certificates. Closes #31710 --- package.json | 3 +- packages/angular/build/BUILD.bazel | 1 + packages/angular/build/package.json | 5 +- .../src/builders/dev-server/vite/server.ts | 30 +++-- .../build/src/tools/vite/plugins/index.ts | 1 + .../src/tools/vite/plugins/ssr-ssl-plugin.ts | 46 +++++++ .../src/builders/dev-server/specs/ssl_spec.ts | 34 ++--- .../builders/ssr-dev-server/specs/ssl_spec.ts | 19 +-- pnpm-lock.yaml | 11 +- tests/legacy-cli/BUILD.bazel | 1 + tests/legacy-cli/e2e/tests/BUILD.bazel | 1 + .../serve/ssr-http-requests-assets.ts | 125 ++++++++++++++++-- .../legacy-cli/e2e/tests/vite/ssr-with-ssl.ts | 21 +-- tests/legacy-cli/rollup.config.mjs | 2 +- 14 files changed, 224 insertions(+), 76 deletions(-) create mode 100644 packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts diff --git a/package.json b/package.json index 2a45ab656476..a04ea47beead 100644 --- a/package.json +++ b/package.json @@ -169,6 +169,7 @@ } }, "resolutions": { - "typescript": "5.9.3" + "typescript": "5.9.3", + "undici-types": "^7.16.0" } } diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index 05f42e4dcd95..d8f89be1d5cd 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -105,6 +105,7 @@ ts_project( ":node_modules/sass", ":node_modules/source-map-support", ":node_modules/tinyglobby", + ":node_modules/undici", ":node_modules/vite", ":node_modules/vitest", ":node_modules/watchpack", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 345d83a0b22a..aaefb19bd7b9 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -42,6 +42,7 @@ "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", + "undici": "7.16.0", "vite": "7.2.1", "watchpack": "2.4.4" }, @@ -49,8 +50,8 @@ "lmdb": "3.4.3" }, "devDependencies": { - "@angular/ssr": "workspace:*", "@angular-devkit/core": "workspace:*", + "@angular/ssr": "workspace:*", "jsdom": "27.1.0", "less": "4.4.2", "ng-packagr": "21.0.0-rc.0", @@ -59,9 +60,9 @@ "vitest": "4.0.7" }, "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/core": "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", 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 f527e41d33d0..9cabeabccfec 100644 --- a/packages/angular/build/src/builders/dev-server/vite/server.ts +++ b/packages/angular/build/src/builders/dev-server/vite/server.ts @@ -13,6 +13,7 @@ import type { ComponentStyleRecord } from '../../../tools/vite/middlewares'; import { ServerSsrMode, createAngularMemoryPlugin, + createAngularServerSideSSLPlugin, createAngularSetupMiddlewaresPlugin, createAngularSsrTransformPlugin, createRemoveIdPrefixPlugin, @@ -207,16 +208,19 @@ export async function setupServer( preTransformRequests, cacheDir, ), - ssr: createSsrConfig( - externalMetadata, - serverOptions, - prebundleTransformer, - zoneless, - target, - prebundleLoaderExtensions, - thirdPartySourcemaps, - define, - ), + ssr: + ssrMode === ServerSsrMode.NoSsr + ? undefined + : createSsrConfig( + externalMetadata, + serverOptions, + prebundleTransformer, + zoneless, + target, + prebundleLoaderExtensions, + thirdPartySourcemaps, + define, + ), plugins: [ createAngularSetupMiddlewaresPlugin({ outputFiles, @@ -258,11 +262,15 @@ export async function setupServer( }; if (serverOptions.ssl) { + configuration.plugins ??= []; if (!serverOptions.sslCert || !serverOptions.sslKey) { const { default: basicSslPlugin } = await import('@vitejs/plugin-basic-ssl'); - configuration.plugins ??= []; configuration.plugins.push(basicSslPlugin()); } + + if (ssrMode !== ServerSsrMode.NoSsr) { + configuration.plugins?.push(createAngularServerSideSSLPlugin()); + } } return configuration; diff --git a/packages/angular/build/src/tools/vite/plugins/index.ts b/packages/angular/build/src/tools/vite/plugins/index.ts index ef697aa7395a..6c4cdd4496e4 100644 --- a/packages/angular/build/src/tools/vite/plugins/index.ts +++ b/packages/angular/build/src/tools/vite/plugins/index.ts @@ -10,3 +10,4 @@ export { createAngularMemoryPlugin } from './angular-memory-plugin'; export { createRemoveIdPrefixPlugin } from './id-prefix-plugin'; export { createAngularSetupMiddlewaresPlugin, ServerSsrMode } from './setup-middlewares-plugin'; export { createAngularSsrTransformPlugin } from './ssr-transform-plugin'; +export { createAngularServerSideSSLPlugin } from './ssr-ssl-plugin'; diff --git a/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts b/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts new file mode 100644 index 000000000000..c87e0bd112a0 --- /dev/null +++ b/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts @@ -0,0 +1,46 @@ +/** + * @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 { rootCertificates } from 'node:tls'; +import type { Plugin } from 'vite'; + +export function createAngularServerSideSSLPlugin(): Plugin { + return { + name: 'angular-ssr-ssl-plugin', + apply: 'serve', + async configureServer({ config, httpServer }) { + const { + ssr, + server: { https }, + } = config; + + if (!ssr || !https?.cert) { + return; + } + + // TODO(alanagius): Replace `undici` with `tls.setDefaultCACertificates` once we only support Node.js 22.18.0+ and 24.5.0+. + // See: https://nodejs.org/api/tls.html#tlssetdefaultcacertificatescerts + const { getGlobalDispatcher, setGlobalDispatcher, Agent } = await import('undici'); + const originalDispatcher = getGlobalDispatcher(); + const { cert } = https; + const certificates = Array.isArray(cert) ? cert : [cert]; + + setGlobalDispatcher( + new Agent({ + connect: { + ca: [...rootCertificates, ...certificates], + }, + }), + ); + + httpServer?.on('close', () => { + setGlobalDispatcher(originalDispatcher); + }); + }, + }; +} diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts index 1f41eba74279..60ed65793c7f 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts @@ -8,7 +8,7 @@ import { Architect, BuilderRun } from '@angular-devkit/architect'; import { tags } from '@angular-devkit/core'; -import { Agent, getGlobalDispatcher, setGlobalDispatcher } from 'undici'; +import { Agent } from 'undici'; import { createArchitect, host } from '../../../testing/test-utils'; import { DevServerBuilderOutput } from '../index'; @@ -35,20 +35,12 @@ describe('Dev Server Builder ssl', () => { expect(output.success).toBe(true); expect(output.baseUrl).toMatch(/^https:\/\/localhost:\d+\//); - // The self-signed certificate used by the dev server will cause fetch to fail - // unless reject unauthorized is disabled. - const originalDispatcher = getGlobalDispatcher(); - setGlobalDispatcher( - new Agent({ + const response = await fetch(output.baseUrl, { + dispatcher: new Agent({ connect: { rejectUnauthorized: false }, }), - ); - try { - const response = await fetch(output.baseUrl); - expect(await response.text()).toContain('HelloWorldApp'); - } finally { - setGlobalDispatcher(originalDispatcher); - } + }); + expect(await response.text()).toContain('HelloWorldApp'); }); it('supports key and cert', async () => { @@ -122,19 +114,11 @@ describe('Dev Server Builder ssl', () => { expect(output.success).toBe(true); expect(output.baseUrl).toMatch(/^https:\/\/localhost:\d+\//); - // The self-signed certificate used by the dev server will cause fetch to fail - // unless reject unauthorized is disabled. - const originalDispatcher = getGlobalDispatcher(); - setGlobalDispatcher( - new Agent({ + const response = await fetch(output.baseUrl, { + dispatcher: new Agent({ connect: { rejectUnauthorized: false }, }), - ); - try { - const response = await fetch(output.baseUrl); - expect(await response.text()).toContain('HelloWorldApp'); - } finally { - setGlobalDispatcher(originalDispatcher); - } + }); + expect(await response.text()).toContain('HelloWorldApp'); }); }); 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 a67cf0b3c5b5..7651b2387c16 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 @@ -9,7 +9,7 @@ import { Architect } from '@angular-devkit/architect'; // eslint-disable-next-line import/no-extraneous-dependencies import * as browserSync from 'browser-sync'; -import { Agent, getGlobalDispatcher, setGlobalDispatcher } from 'undici'; +import { Agent } from 'undici'; import { createArchitect, host } from '../../../testing/test-utils'; import { SSRDevServerBuilderOutput } from '../index'; @@ -85,20 +85,13 @@ describe('Serve SSR Builder', () => { expect(output.success).toBe(true); expect(output.baseUrl).toBe(`https://localhost:${output.port}`); - // The self-signed certificate used by the dev server will cause fetch to fail - // unless reject unauthorized is disabled. - const originalDispatcher = getGlobalDispatcher(); - setGlobalDispatcher( - new Agent({ + const response = await fetch(`https://localhost:${output.port}/index.html`, { + dispatcher: new Agent({ connect: { rejectUnauthorized: false }, }), - ); - try { - const response = await fetch(`https://localhost:${output.port}/index.html`); - expect(await response.text()).toContain('HelloWorldApp'); - } finally { - setGlobalDispatcher(originalDispatcher); - } + }); + + expect(await response.text()).toContain('HelloWorldApp'); await run.stop(); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab1741abe7f8..c1d305ec98a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: overrides: typescript: 5.9.3 + undici-types: ^7.16.0 '@angular/build': workspace:* packageExtensionsChecksum: sha256-3L73Fw32UVtE6x5BJxJPBtQtH/mgsr31grNpdhHP1IY= @@ -418,6 +419,9 @@ importers: tinyglobby: specifier: 0.2.15 version: 0.2.15 + undici: + specifier: 7.16.0 + version: 7.16.0 vite: specifier: 7.2.1 version: 7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) @@ -8456,9 +8460,6 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -11905,7 +11906,7 @@ snapshots: '@types/node@22.19.0': dependencies: - undici-types: 6.21.0 + undici-types: 7.16.0 '@types/node@24.10.0': dependencies: @@ -17996,8 +17997,6 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - undici-types@6.21.0: {} - undici-types@7.16.0: {} undici@5.29.0: diff --git a/tests/legacy-cli/BUILD.bazel b/tests/legacy-cli/BUILD.bazel index 0b66850c52b2..713bc31b5c82 100644 --- a/tests/legacy-cli/BUILD.bazel +++ b/tests/legacy-cli/BUILD.bazel @@ -68,6 +68,7 @@ e2e_suites( # Extra runtime deps due to bundling issues. # TODO: Clean this up. "//:node_modules/express", + "//:node_modules/undici", ], runner = ":runner_entrypoint", ) diff --git a/tests/legacy-cli/e2e/tests/BUILD.bazel b/tests/legacy-cli/e2e/tests/BUILD.bazel index 55f5019b568f..0ed3f83428f7 100644 --- a/tests/legacy-cli/e2e/tests/BUILD.bazel +++ b/tests/legacy-cli/e2e/tests/BUILD.bazel @@ -13,6 +13,7 @@ ts_project( "//:node_modules/express", "//:node_modules/fast-glob", "//:node_modules/semver", + "//:node_modules/undici", "//tests/legacy-cli/e2e/utils", ], ) 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 aa7e33089666..19f1208646d6 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 @@ -1,5 +1,5 @@ import assert from 'node:assert'; - +import { Agent } from 'undici'; import { killAllProcesses, ng } from '../../../utils/process'; import { writeMultipleFiles } from '../../../utils/fs'; import { installWorkspacePackages, uninstallPackage } from '../../../utils/packages'; @@ -71,11 +71,120 @@ export default async function () { await killAllProcesses(); - try { - process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; - const sslPort = await ngServe('--ssl'); - assert.match(await (await fetch(`https://localhost:${sslPort}/`)).text(), match); - } finally { - process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1'; - } + const sslPort = await ngServe('--ssl'); + assert.match( + await ( + await fetch(`https://localhost:${sslPort}/`, { + dispatcher: new Agent({ + connect: { + rejectUnauthorized: false, + }, + }), + }) + ).text(), + match, + ); + + await killAllProcesses(); + + // With OpenSSl cert+key + writeMultipleFiles({ + 'server.key': `-----BEGIN PRIVATE KEY----- +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDOyBmVy61zEqfs +oTPQ9gTX233/nlrVXtaUGJkbDR5actq0X+XQtZuIoO4JgRpiYz5/8XiY8AiaMdt3 +0abugO5AhyIbsGyQxvz2si7yKQ+WUdF/DRTpfTq76E8EXR8W9BI+DTpG/1nNGBd1 +lpMa8NMfHqLvhtpebHuBcb1BCRely+FILHVDGf+dfCIvR0Zvt8Ah3qLL6vvX3pzF +qM9XrXfUgWKqpbz+L1BeCPILsH+UaOOCzzbyrLoY6fnawjUkc/ieHWycro7dBUlu +JJ/kcGtpPYD/hsMFcXz6D67qbIFuc6Dz9CrWIagAFMqK91FAtUpyfP7+jLikQOST +pFDLgJ+klADGCiZ6C/dvjUsYM+4ML9dX6Q9rj6sQo/oj0Dsdj39J5mVmklkbRP5q +heMGTyc09/ambiYFfzWEMMnEcCT/CS/r1q93oRDG02Cx6F1B05mtR+/AFxAJ6UxL +2u3oMPVY179FWjx2+YvbfrdNrFnWb8eRMiRZIW8O8ptKkrh+LL1Rhep+W/1Nxdrp +g7E2rWP8AWr3mdd+cnauvF/2yMecBDLVnk3OOSjcuLc+i9ngOD0xHdcRfO89mryj +IewEIrUQ4U0ZgyHMi99qV4wyXhd9HzTUgT01QofsiuF9xyVfnansQOj3oqOgCS92 +VEeqZnLXgaVoh/++/FV7r4C5zxLzLwIDAQABAoICAAeKSqD98iE3o5qc6AAiqj79 +r8L2dJ+0F9cDF4Bh6aLFYBGUoS/Sr38Cm7m0/3qiiEKvbpM9/0QVfHLRoBNcJnBk +0mrp1yD1tfEOUPcJ12D/3XJ2zlIv+7oUn97Ia9h4NCzBv5zw7lTsrjHenDMSZ7XD +PR6qb064XfiRETKFeCJk64Godj/3QkmX2FApCMDwXJttynLQseK5RZnDHojhuDuR +vgfC+aOCTit8GOkxi1Hdppxm8tmMwfqyJmAJh5IdKkNA3MHtbyPCxSXRRIUdwMXT +bhhVCh9/W3prv/vEYSPfRGs9WdtrTBj/U8GlgGlxa87h1i/i8N4I5RP+8lic6zVL +BIIPamkRFRNUmV7ZzpWsrLl1TUUcQJ1UsjNqaLD7jl+l0IaUta8I9crJQWIuQu+G +5C0XJQPZrqGkZfLSMvi08S+8myCzf+3P3ayUHAKz4Q1pTeM2BbHQi1HbT+WUsA5G +DD4xBwc8VJXOy0dB4v4e5eK8aZaJZroR5LJT7bvKw1MNpyAt6w2Z17eSSuEE0x6u +4uzOfHRaWiKH9gXVSKyo8xM08wiKAJIpDg4fDsu/XPjfPzV3eSHwin6ADw7rcOrW +j4Ca43Ts7Fz0Y40dtUyrrQ3f7WSQ9C+M88NuI9WYPWmXqPQY9+b5Au0Q8rq1j3dW +1YB3vYd6ElaLI6k7c5OhAoIBAQDt+Dgi2jrx2Xol0Per/cIFyG/hX/h+tavj++xl +gIMLLwhFmBVIkkXHjG5v5rZFCY7giQgdy+JHAIDUg3Ae3K7zSYidkMwQzLJ9udaT +nJEybY4RlEJZVBs58pkjevqTD/pZ+Kj09/VLAJIhOInFQHQ+ZVn4uHF+NO4tcsH+ +Wtsyyf8tFMkoNQ38o2oTnJtsotssKGdXCgi36BCCCUQk98113RK9dBTi+2iB59qr +WczAb6Jl5cs1j/2IC3z9KilZ3/ww4Bshs5LThIGR66KZIfApzf8XQzHM9mhiLgRU +thUZ0a/ougqf4FovLAezsNM7kYqbPDPOh/CayN5KZ8pHNLt1AoIBAQDecvFejv3u +Lm9kf2xRv06HTsLeEUSgRVoWdKidwW3tXOkl8vuBTzeFl9yrgtMBbSgcFASbEKPP +uPc6g+zkcakUB+FLGGNwNFKhdGPUMI7u8i9WeWH+e3Aios7n0tCPP0Xv6d1Lhcyw +X1nz07hZ+sT40nLGyf/6vfg8LFGSBrr3YQLseodKGTC9jc5yJqEX16cqHppkwaJT +Elsona7PZGFm/WFGWn4wZiPpd9P5lnxP+KrI+m84z4Gw5txcJsE8WiUrrQYHG3+2 +yeztwYl+JGHcspsU4WTPCupyVRHt0uuGVN+UhLKgER8wghc6fL08jGkHgVLrStnN +ekRA0gEZRzOTAoIBAGuQMheW2uPssGidfwXP6r5gbinKDnF/vpWLjrwGjbUlajDC +4IPwEfhzwot0Flk4S8u0ROXq/XmogZMNYkWg7LdtOoI2K/c//0ITGSmZsIvBt2C8 +ygzElpXn0U6XTOHia//1BLHNzqM7O9ImUyfEzYZSm4twG2S3mh0S7RsCiGf5pA0F +gzNYX90dJFp/BEXjivv3u1Y9Y9l03NlaROIM3GL1LX5TFQnQJ9noKhAfxAwLqbUz +XFn2ntu6jaGFSDGmq8CP29Os7qYLE+IYR2O+UmcjBLXIGp+RlXcjY7PCpeEIxeGF +Dj5b04fU+BpByAj57VPjr2sgSSI9vzSUm3r6G+0CggEBALK7JgZ028BxHN1hqHWy +QXVkKhxlQX+I2Y5rY0OFtD5gRZBRQBUwwgqb7xj7P3DI9M5Co0S4RPZUxogEkeUn +EdPfVPySdusjjzTcoI1QCrggbTqMwtjG811Q9O+9Kge+rgHLJRxWQBWCN3M6rMfX +PkYySThB+2PLGVW3wj6TG8xB7Sh2dpdp0AitlK+RLCRNCKpF9oV4M2WNvSLQNzG5 +lK08btkpQnS+zKH8vpuudumGgiqDVbQOvkSV6X49QUutnmoOVmaFiMMkUTLjKwbo +Up0SAJrxUp8sRR1iDsrIiqbfMNlTGXaU6zt9ew5qRV4N7yGxnh8hgAih8Y8nbOyT +kfMCggEBAMVOGy7yzaMQvVSkcFkUAnznI7RwvhUWusomfyaVgHm+j3Y7OPius1ah +4Da3kvb4t8OFUIdnMz/rte8xRKE6lKLNmXG9+8nPkCdrB9ovDr0Pw3ONZ7kKHuhm +75IKV72f3krZK5jJ88p/ruUUotButZb+WlGW5qQOJEJnHi65ABGYchAADAOBflXK +XbklHb6sVmEx6Ds4OMAbEmgH4C7BZuvmVeYMY7ihGIuBF3rE70rc2meQl/fxn0Gd ++/FrHDqCSkXwNT69HEOoLT/hi6Pc3kyn1bFOK+W8AydilI+6yOKkiYTSoCAO/yi/ +xlFXnn9FIQthAEWUhFgqApO+oKBn0hw= +-----END PRIVATE KEY----- +`, + 'server.crt': `-----BEGIN CERTIFICATE----- +MIIFCTCCAvGgAwIBAgIUd0CiuFYYUTnnfB/Q6lijpEZJy4wwDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MTEwNzEwMTE0NFoXDTI2MTEw +NzEwMTE0NFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAzsgZlcutcxKn7KEz0PYE19t9/55a1V7WlBiZGw0eWnLa +tF/l0LWbiKDuCYEaYmM+f/F4mPAImjHbd9Gm7oDuQIciG7BskMb89rIu8ikPllHR +fw0U6X06u+hPBF0fFvQSPg06Rv9ZzRgXdZaTGvDTHx6i74baXmx7gXG9QQkXpcvh +SCx1Qxn/nXwiL0dGb7fAId6iy+r7196cxajPV6131IFiqqW8/i9QXgjyC7B/lGjj +gs828qy6GOn52sI1JHP4nh1snK6O3QVJbiSf5HBraT2A/4bDBXF8+g+u6myBbnOg +8/Qq1iGoABTKivdRQLVKcnz+/oy4pEDkk6RQy4CfpJQAxgomegv3b41LGDPuDC/X +V+kPa4+rEKP6I9A7HY9/SeZlZpJZG0T+aoXjBk8nNPf2pm4mBX81hDDJxHAk/wkv +69avd6EQxtNgsehdQdOZrUfvwBcQCelMS9rt6DD1WNe/RVo8dvmL2363TaxZ1m/H +kTIkWSFvDvKbSpK4fiy9UYXqflv9TcXa6YOxNq1j/AFq95nXfnJ2rrxf9sjHnAQy +1Z5Nzjko3Li3PovZ4Dg9MR3XEXzvPZq8oyHsBCK1EOFNGYMhzIvfaleMMl4XfR80 +1IE9NUKH7IrhfcclX52p7EDo96KjoAkvdlRHqmZy14GlaIf/vvxVe6+Auc8S8y8C +AwEAAaNTMFEwHQYDVR0OBBYEFCOiC0xvMbfCFzmseoMDht+ydKBbMB8GA1UdIwQY +MBaAFCOiC0xvMbfCFzmseoMDht+ydKBbMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI +hvcNAQELBQADggIBAJSiQwcaGVhwUorkb062cyyZOAstEJ5meg6H2g3nL894oWEU +FLc/S20z2tqO1It4rZB3cRKmB0RvH78eh4aUPAh0lPa/bm/h7WrgdEAJUmlNuZV3 +Hitd/c1d2OVzx6w+CFYd/G5GW3sWblYiH0paIN6s4TqHFY/IAzzZKQB7Ud7FJagM +KMkEP8RFDm7iRcENuSf51LtZb2NjN1TM5CK5sVXu62dvPYZC6SW052/qd1U+1Tyw +EX4fCqUgEoGoU6+Ftz3hCdVy3E4uzFBK1e5wmct6HULBZL51PWpf3BgwneZy0itE +lD6Y0H6m/9KMVcXpAHZK+6YnOOcWxIgfjykjZEO99rx3pVWPw1uSBUJEu1SLknAn +JDe+WLp+xmB8s62EjixZsEGqoQYYrtZ3vz8u4PSSgYPJjdAkFdLOPitf0U8ZW9/7 +hGyHgqd7WQ3toBwwdnPo6fZqHHyN8rXeWcmx8Uj9oyY1uunkSmq3csITPQg/zKBO +6RsO3pPj8mHjeAZCDs+Ks68ccPsn+53fJ9CrjiJlHFIP0ywbEBO1snJDit5q3gQI +/UpClB9Sl+mz4wznOvrKycrxrLEptZeBA5c6M9Qr30YJAb/prxvzSY5FrUGcstkO +CQVzSwZEUXxSo6K4cJ55vC0p3P3aoMvEpHfM+JqL3lCM9qWrxfkhvn8YS+Gg +-----END CERTIFICATE----- +`, + }); + + const sslPortForCerts = await ngServe('--ssl', '--ssl-cert=server.crt', '--ssl-key="server.key"'); + assert.match( + await ( + await fetch(`https://localhost:${sslPortForCerts}/`, { + dispatcher: new Agent({ + connect: { + rejectUnauthorized: false, + }, + }), + }) + ).text(), + match, + ); } 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 c4c0fd34ec75..5bb8d9105cf8 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts @@ -1,3 +1,4 @@ +import { Agent } from 'undici'; import assert from 'node:assert'; import { writeMultipleFiles } from '../../utils/fs'; import { ng, silentNg } from '../../utils/process'; @@ -46,14 +47,16 @@ export default async function () { await validateResponse('/home', /home works/); async function validateResponse(pathname: string, match: RegExp): Promise { - try { - process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; - const response = await fetch(new URL(pathname, `https://localhost:${port}`)); - const text = await response.text(); - assert.match(text, match); - assert.equal(response.status, 200); - } finally { - process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1'; - } + const response = await fetch(new URL(pathname, `https://localhost:${port}`), { + dispatcher: new Agent({ + connect: { + rejectUnauthorized: false, + }, + }), + }); + + const text = await response.text(); + assert.match(text, match); + assert.equal(response.status, 200); } } diff --git a/tests/legacy-cli/rollup.config.mjs b/tests/legacy-cli/rollup.config.mjs index 0fc2768c5057..208e4cc78c42 100644 --- a/tests/legacy-cli/rollup.config.mjs +++ b/tests/legacy-cli/rollup.config.mjs @@ -25,7 +25,7 @@ for (const file of testFiles) { export default { input: chunks, - external: [], + external: ['undici'], // This cannot be bundled as `node:sqlite` is experimental in node.js 22. Remove once this feature is no longer behind a flag plugins: [ nodeResolve({ preferBuiltins: true, From 53bdbf1dc056ad8a3c29000b66dc780217b4d28c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 7 Nov 2025 12:51:50 -0500 Subject: [PATCH 1755/2162] fix(@angular/build): dynamically select Vitest DOM environment This change enhances the Vitest unit test builder to intelligently select the default DOM test environment (`jsdom` or `happy-dom`) based on which package is installed in the user's project. Previously, the builder strictly defaulted to `jsdom`. With this update: - The `validateDependencies` function now checks for the presence of either `jsdom` or `happy-dom` when browser-based tests are not configured, providing a more flexible dependency requirement. - A new `findTestEnvironment` helper function is introduced to detect the available DOM environment (`happy-dom` is preferred if installed, otherwise `jsdom`). - The `createVitestConfigPlugin` now uses this helper to dynamically set the `environment` in the Vitest configuration, ensuring a smart default if the user has not explicitly specified one. This improves the out-of-the-box experience by adapting to common project setups and offering more choice in DOM emulation. --- .../unit-test/runners/vitest/executor.ts | 1 + .../unit-test/runners/vitest/index.ts | 7 ++-- .../unit-test/runners/vitest/plugins.ts | 33 +++++++++++++++++-- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 3f9640142e37..950a96f2adac 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -219,6 +219,7 @@ export class VitestExecutor implements TestExecutor { browser: browserOptions.browser, coverage, projectName, + projectSourceRoot: this.options.projectSourceRoot, reporters, setupFiles: testSetupFiles, projectPlugins, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index 6ff67a56563c..fed814bdd78e 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -33,8 +33,11 @@ const VitestTestRunner: TestRunner = { ); } } else { - // JSDOM is used when no browsers are specified - checker.check('jsdom'); + // DOM emulation is used when no browsers are specified + checker.checkAny( + ['jsdom', 'happy-dom'], + 'A DOM environment is required for non-browser tests. Please install either "jsdom" or "happy-dom".', + ); } if (options.coverage.enabled) { diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 22f3eeb77922..9772b6294089 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -8,6 +8,7 @@ import assert from 'node:assert'; import { readFile } from 'node:fs/promises'; +import { createRequire } from 'node:module'; import path from 'node:path'; import type { BrowserConfigOptions, @@ -36,20 +37,44 @@ interface VitestConfigPluginOptions { browser: BrowserConfigOptions | undefined; coverage: NormalizedUnitTestBuilderOptions['coverage']; projectName: string; + projectSourceRoot: string; reporters?: string[] | [string, object][]; setupFiles: string[]; projectPlugins: VitestPlugins; include: string[]; } +async function findTestEnvironment( + projectResolver: NodeJS.RequireResolve, +): Promise<'jsdom' | 'happy-dom'> { + try { + projectResolver('happy-dom'); + + return 'happy-dom'; + } catch { + // happy-dom is not installed, fallback to jsdom + return 'jsdom'; + } +} + export function createVitestConfigPlugin(options: VitestConfigPluginOptions): VitestPlugins[0] { - const { include, browser, projectName, reporters, setupFiles, projectPlugins } = options; + const { + include, + browser, + projectName, + reporters, + setupFiles, + projectPlugins, + projectSourceRoot, + } = options; return { name: 'angular:vitest-configuration', async config(config) { const testConfig = config.test; + const projectResolver = createRequire(projectSourceRoot + '/').resolve; + const projectConfig: UserWorkspaceConfig = { test: { ...testConfig, @@ -58,8 +83,10 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi include, globals: testConfig?.globals ?? true, ...(browser ? { browser } : {}), - // If the user has not specified an environment, use `jsdom`. - ...(!testConfig?.environment ? { environment: 'jsdom' } : {}), + // If the user has not specified an environment, use a smart default. + ...(!testConfig?.environment + ? { environment: await findTestEnvironment(projectResolver) } + : {}), }, optimizeDeps: { noDiscovery: true, From 0aab1158d63ad13f1dc02c40608bac2f68bdfc93 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Sat, 8 Nov 2025 21:47:50 -0500 Subject: [PATCH 1756/2162] fix(@angular/build): enhance Vitest config merging and validation This change improves how user-defined Vitest configurations work with the Angular CLI's unit test builder. The builder now checks for and handles specific options in `vitest-base.config.ts`. It detects the `test.projects` option, logs a warning, and removes it to prevent conflicts. The `test.include` option is handled in a similar way, ensuring the builder's test discovery is used. Any `test.setupFiles` from `vitest-base.config.ts` are now added to the CLI's setup files, supporting both single string and array formats. User-defined Vite plugins from `vitest-base.config.ts` are also combined with the builder's plugins, with a filter to prevent duplicating internal CLI plugins. These updates give users more flexibility to customize their Vitest setup while keeping the Angular CLI's test builder predictable. --- .../unit-test/runners/vitest/plugins.ts | 48 ++++- .../behavior/runner-config-vitest_spec.ts | 175 ++++++++++++++++++ 2 files changed, 221 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 9772b6294089..e425bdf95e4d 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -40,7 +40,7 @@ interface VitestConfigPluginOptions { projectSourceRoot: string; reporters?: string[] | [string, object][]; setupFiles: string[]; - projectPlugins: VitestPlugins; + projectPlugins: Exclude; include: string[]; } @@ -73,13 +73,56 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi async config(config) { const testConfig = config.test; + if (testConfig?.projects?.length) { + this.warn( + 'The "test.projects" option in the Vitest configuration file is not supported. ' + + 'The Angular CLI Test system will construct its own project configuration.', + ); + delete testConfig.projects; + } + + if (testConfig?.include) { + this.warn( + 'The "test.include" option in the Vitest configuration file is not supported. ' + + 'The Angular CLI Test system will manage test file discovery.', + ); + delete testConfig.include; + } + + // The user's setup files should be appended to the CLI's setup files. + const combinedSetupFiles = [...setupFiles]; + if (testConfig?.setupFiles) { + if (typeof testConfig.setupFiles === 'string') { + combinedSetupFiles.push(testConfig.setupFiles); + } else if (Array.isArray(testConfig.setupFiles)) { + combinedSetupFiles.push(...testConfig.setupFiles); + } + delete testConfig.setupFiles; + } + + // Merge user-defined plugins from the Vitest config with the CLI's internal plugins. + if (config.plugins) { + const userPlugins = config.plugins.filter( + (plugin) => + // Only inspect objects with a `name` property as these would be the internal injected plugins + !plugin || + typeof plugin !== 'object' || + !('name' in plugin) || + (!plugin.name.startsWith('angular:') && !plugin.name.startsWith('vitest')), + ); + + if (userPlugins.length > 0) { + projectPlugins.push(...userPlugins); + } + } + const projectResolver = createRequire(projectSourceRoot + '/').resolve; const projectConfig: UserWorkspaceConfig = { test: { ...testConfig, name: projectName, - setupFiles, + setupFiles: combinedSetupFiles, include, globals: testConfig?.globals ?? true, ...(browser ? { browser } : {}), @@ -99,6 +142,7 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi coverage: await generateCoverageOption(options.coverage, projectName), // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(reporters ? ({ reporters } as any) : {}), + ...(browser ? { browser } : {}), projects: [projectConfig], }, }; diff --git a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts index e2a50001dd9e..ec3a52e7686b 100644 --- a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts @@ -88,6 +88,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { const results = JSON.parse(harness.readFile('vitest-results.json')); expect(results.numPassedTests).toBe(1); }); + it('should allow overriding builder options via runnerConfig file', async () => { harness.useTarget('test', { ...BASE_OPTIONS, @@ -142,5 +143,179 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { const { result } = await harness.executeOnce(); expect(result?.success).toBeFalse(); }); + + it('should warn and ignore "test.projects" option from runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + projects: ['./foo.config.ts'], + }, + }); + `, + ); + + const { result, logs } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + // TODO: Re-enable once Vite logs are remapped through build system + // expect(logs).toContain( + // jasmine.objectContaining({ + // level: 'warn', + // message: jasmine.stringMatching( + // 'The "test.projects" option in the Vitest configuration file is not supported.', + // ), + // }), + // ); + }); + + it('should warn and ignore "test.include" option from runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + include: ['src/app/non-existent.spec.ts'], + }, + }); + `, + ); + + const { result, logs } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + // TODO: Re-enable once Vite logs are remapped through build system + // expect(logs).toContain( + // jasmine.objectContaining({ + // level: 'warn', + // message: jasmine.stringMatching( + // 'The "test.include" option in the Vitest configuration file is not supported.', + // ), + // }), + // ); + }); + + it(`should append "test.setupFiles" (string) from runnerConfig to the CLI's setup`, async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + setupFiles: './src/app/custom-setup.ts', + }, + }); + `, + ); + + harness.writeFile('src/app/custom-setup.ts', `(globalThis as any).customSetupLoaded = true;`); + + harness.writeFile( + 'src/app/app.component.spec.ts', + ` + import { test, expect } from 'vitest'; + test('should have custom setup loaded', () => { + expect((globalThis as any).customSetupLoaded).toBe(true); + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + }); + + it(`should append "test.setupFiles" (array) from runnerConfig to the CLI's setup`, async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + setupFiles: ['./src/app/custom-setup-1.ts', './src/app/custom-setup-2.ts'], + }, + }); + `, + ); + + harness.writeFile('src/app/custom-setup-1.ts', `(globalThis as any).customSetup1 = true;`); + harness.writeFile('src/app/custom-setup-2.ts', `(globalThis as any).customSetup2 = true;`); + + harness.writeFile( + 'src/app/app.component.spec.ts', + ` + import { test, expect } from 'vitest'; + test('should have custom setups loaded', () => { + expect((globalThis as any).customSetup1).toBe(true); + expect((globalThis as any).customSetup2).toBe(true); + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + }); + + it('should merge and apply custom Vite plugins from runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + plugins: [ + { + name: 'my-custom-transform-plugin', + transform(code, id) { + if (code.includes('__PLACEHOLDER__')) { + return code.replace('__PLACEHOLDER__', 'transformed by custom plugin'); + } + }, + }, + ], + }); + `, + ); + + harness.writeFile( + 'src/app/app.component.spec.ts', + ` + import { test, expect } from 'vitest'; + test('should have been transformed by custom plugin', () => { + const placeholder = '__PLACEHOLDER__'; + expect(placeholder).toBe('transformed by custom plugin'); + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + }); }); }); From 5b0afb324d6fa0acfc4f53394f728f9ffb65dc63 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 10 Nov 2025 08:23:39 +0100 Subject: [PATCH 1757/2162] fix(@schematics/angular): correct `tsconfig.spec.json` include for spec files Updates the files in both application and library schematics to specifically include instead of . This ensures that only test specification files are processed for testing, preventing unintended inclusion of other TypeScript files. --- .../application/files/common-files/tsconfig.spec.json.template | 3 ++- .../angular/library/files/tsconfig.spec.json.template | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template b/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template index af71f061e884..dae0fe57b3c4 100644 --- a/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template +++ b/packages/schematics/angular/application/files/common-files/tsconfig.spec.json.template @@ -9,6 +9,7 @@ ] }, "include": [ - "src/**/*.ts" + "src/**/*.d.ts", + "src/**/*<% if (standalone) { %>.spec<% } %>.ts" ] } diff --git a/packages/schematics/angular/library/files/tsconfig.spec.json.template b/packages/schematics/angular/library/files/tsconfig.spec.json.template index 0cec657c8ae9..b2370befce4f 100644 --- a/packages/schematics/angular/library/files/tsconfig.spec.json.template +++ b/packages/schematics/angular/library/files/tsconfig.spec.json.template @@ -9,6 +9,7 @@ ] }, "include": [ - "src/**/*.ts" + "src/**/*.d.ts", + "src/**/*<% if (standalone) { %>.spec<% } %>.ts" ] } From af43fc619d6f399f510c1b387d460f2c42b67304 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 10 Nov 2025 05:06:13 +0000 Subject: [PATCH 1758/2162] build: update rules_angular digest to f568493 See associated pull request for more information. --- MODULE.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MODULE.bazel b/MODULE.bazel index 696be6bbf297..14815454bd2b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "059242464577ca9046451afebd6734ec79908d6f", + commit = "f56849353ab74c3f5ede0efa7d0bf7266fddddcb", remote = "https://github.com/devversion/rules_angular.git", ) From 04fda1327984a7119ca4c32deee4dbb0a2494a78 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 10 Nov 2025 05:06:36 +0000 Subject: [PATCH 1759/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 6 +- packages/angular/build/package.json | 12 +- packages/angular/cli/package.json | 6 +- .../angular_devkit/build_angular/package.json | 6 +- .../schematics_cli/package.json | 2 +- pnpm-lock.yaml | 1473 ++++++++++++----- 7 files changed, 1105 insertions(+), 404 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 532534e75a5c..ddc029374d18 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,9 +4,9 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", - "@vitest/coverage-v8": "4.0.7", + "@vitest/coverage-v8": "4.0.8", "jsdom": "27.1.0", "rxjs": "7.8.2", - "vitest": "4.0.7" + "vitest": "4.0.8" } } diff --git a/package.json b/package.json index a04ea47beead..98de07e11c4f 100644 --- a/package.json +++ b/package.json @@ -97,8 +97,8 @@ "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", - "esbuild": "0.25.12", - "esbuild-wasm": "0.25.12", + "esbuild": "0.26.0", + "esbuild-wasm": "0.26.0", "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", @@ -126,7 +126,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.52.5", + "rollup": "4.53.1", "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index aaefb19bd7b9..b1306f2dcbd5 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -23,11 +23,11 @@ "@babel/core": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@inquirer/confirm": "5.1.19", + "@inquirer/confirm": "5.1.20", "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", - "esbuild": "0.25.12", + "esbuild": "0.26.0", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -36,18 +36,18 @@ "mrmime": "2.0.1", "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", - "piscina": "5.1.3", + "piscina": "5.1.4", "rolldown": "1.0.0-beta.47", "sass": "1.93.3", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", "undici": "7.16.0", - "vite": "7.2.1", + "vite": "7.2.2", "watchpack": "2.4.4" }, "optionalDependencies": { - "lmdb": "3.4.3" + "lmdb": "3.4.4" }, "devDependencies": { "@angular-devkit/core": "workspace:*", @@ -57,7 +57,7 @@ "ng-packagr": "21.0.0-rc.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.7" + "vitest": "4.0.8" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index bfa371a8d796..f14a53fd839c 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -25,12 +25,12 @@ "@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.9.0", + "@inquirer/prompts": "7.10.0", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.21.0", + "@modelcontextprotocol/sdk": "1.21.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.42.0", + "algoliasearch": "5.43.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index fcbca99f780c..1a24112e122c 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -28,7 +28,7 @@ "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.25.12", + "esbuild-wasm": "0.26.0", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -41,7 +41,7 @@ "open": "10.2.0", "ora": "9.0.0", "picomatch": "4.0.3", - "piscina": "5.1.3", + "piscina": "5.1.4", "postcss": "8.5.6", "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", @@ -62,7 +62,7 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.25.12" + "esbuild": "0.26.0" }, "devDependencies": { "@angular/ssr": "workspace:*", diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index 14db21f20579..dd9e1ae39d6a 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.9.0", + "@inquirer/prompts": "7.10.0", "ansi-colors": "4.1.3", "yargs-parser": "22.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1d305ec98a0..3272d8e6710d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,7 +49,7 @@ importers: version: 21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2a91d0e8e153f50fc072455c6dd52ac3fea664e6 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.0) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -82,16 +82,16 @@ importers: version: 9.39.1 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.52.5) + version: 6.0.0(rollup@4.53.1) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.52.5) + version: 29.0.0(rollup@4.53.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.52.5) + version: 6.1.0(rollup@4.53.1) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.52.5) + version: 16.0.3(rollup@4.53.1) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.5.0(eslint@9.39.1(jiti@2.6.1)) @@ -127,7 +127,7 @@ importers: version: 3.0.8 '@types/loader-utils': specifier: ^3.0.0 - version: 3.0.0(esbuild@0.25.12) + version: 3.0.0(esbuild@0.26.0) '@types/lodash': specifier: ^4.17.0 version: 4.17.20 @@ -180,11 +180,11 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.25.12 - version: 0.25.12 + specifier: 0.26.0 + version: 0.26.0 esbuild-wasm: - specifier: 0.25.12 - version: 0.25.12 + specifier: 0.26.0 + version: 0.26.0 eslint: specifier: 9.39.1 version: 9.39.1(jiti@2.6.1) @@ -267,17 +267,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.52.5 - version: 4.52.5 + specifier: 4.53.1 + version: 4.53.1 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.52.5)(typescript@5.9.3) + version: 6.2.3(rollup@4.53.1)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.0)(rollup@4.52.5) + version: 0.5.4(@types/node@22.19.0)(rollup@4.53.1) semver: specifier: 7.7.3 version: 7.7.3 @@ -333,8 +333,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.7 - version: 4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.8 + version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -342,8 +342,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.7 - version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.8 + version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -363,11 +363,11 @@ importers: specifier: 7.24.7 version: 7.24.7 '@inquirer/confirm': - specifier: 5.1.19 - version: 5.1.19(@types/node@24.10.0) + specifier: 5.1.20 + version: 5.1.20(@types/node@24.10.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -375,8 +375,8 @@ importers: specifier: ^4.26.0 version: 4.27.0 esbuild: - specifier: 0.25.12 - version: 0.25.12 + specifier: 0.26.0 + version: 0.26.0 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.2.2) @@ -402,8 +402,8 @@ importers: specifier: 4.0.3 version: 4.0.3 piscina: - specifier: 5.1.3 - version: 5.1.3 + specifier: 5.1.4 + version: 5.1.4 rolldown: specifier: 1.0.0-beta.47 version: 1.0.0-beta.47 @@ -423,8 +423,8 @@ importers: specifier: 7.16.0 version: 7.16.0 vite: - specifier: 7.2.1 - version: 7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.2.2 + version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -451,12 +451,12 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.7 - version: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.8 + version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: - specifier: 3.4.3 - version: 3.4.3 + specifier: 3.4.4 + version: 3.4.4 packages/angular/cli: dependencies: @@ -470,14 +470,14 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/schematics '@inquirer/prompts': - specifier: 7.9.0 - version: 7.9.0(@types/node@24.10.0) + specifier: 7.10.0 + version: 7.10.0(@types/node@24.10.0) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.9.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.21.0 - version: 1.21.0 + specifier: 1.21.1 + version: 1.21.1 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -485,8 +485,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.42.0 - version: 5.42.0 + specifier: 5.43.0 + version: 5.43.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -653,19 +653,19 @@ importers: version: 10.4.21(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.12)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.26.0)) browserslist: specifier: ^4.26.0 version: 4.27.0 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.102.1(esbuild@0.25.12)) + version: 13.0.1(webpack@5.102.1(esbuild@0.26.0)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.102.1(esbuild@0.25.12)) + version: 7.1.2(webpack@5.102.1(esbuild@0.26.0)) esbuild-wasm: - specifier: 0.25.12 - version: 0.25.12 + specifier: 0.26.0 + version: 0.26.0 http-proxy-middleware: specifier: 3.0.5 version: 3.0.5 @@ -683,16 +683,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.12)) + version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.26.0)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.102.1(esbuild@0.25.12)) + version: 4.0.2(webpack@5.102.1(esbuild@0.26.0)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.102.1(esbuild@0.25.12)) + version: 2.9.4(webpack@5.102.1(esbuild@0.26.0)) open: specifier: 10.2.0 version: 10.2.0 @@ -703,14 +703,14 @@ importers: specifier: 4.0.3 version: 4.0.3 piscina: - specifier: 5.1.3 - version: 5.1.3 + specifier: 5.1.4 + version: 5.1.4 postcss: specifier: 8.5.6 version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.12)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.26.0)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -722,13 +722,13 @@ importers: version: 1.93.3 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.25.12)) + version: 16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.26.0)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.102.1(esbuild@0.25.12)) + version: 5.0.0(webpack@5.102.1(esbuild@0.26.0)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -746,19 +746,19 @@ importers: version: 2.8.1 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.12) + version: 5.102.1(esbuild@0.26.0) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.102.1(esbuild@0.25.12)) + version: 7.4.5(webpack@5.102.1(esbuild@0.26.0)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.12)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.102.1(esbuild@0.25.12)) + version: 5.1.0(webpack@5.102.1(esbuild@0.26.0)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -777,8 +777,8 @@ importers: version: 7.16.0 optionalDependencies: esbuild: - specifier: 0.25.12 - version: 0.25.12 + specifier: 0.26.0 + version: 0.26.0 packages/angular_devkit/build_webpack: dependencies: @@ -797,10 +797,10 @@ importers: version: link:../../ngtools/webpack webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.12) + version: 5.102.1(esbuild@0.26.0) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.12)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)) packages/angular_devkit/core: dependencies: @@ -854,8 +854,8 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../schematics '@inquirer/prompts': - specifier: 7.9.0 - version: 7.9.0(@types/node@24.10.0) + specifier: 7.10.0 + version: 7.10.0(@types/node@24.10.0) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -879,7 +879,7 @@ importers: version: 5.9.3 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.25.12) + version: 5.102.1(esbuild@0.26.0) packages/schematics/angular: dependencies: @@ -922,60 +922,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.8.0': - resolution: {integrity: sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg==} + '@algolia/abtesting@1.9.0': + resolution: {integrity: sha512-4q9QCxFPiDIx1n5w41A1JMkrXI8p0ugCQnCGFtCKZPmWtwgWCqwVRncIbp++81xSELFZVQUfiB7Kbsla1tIBSw==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.42.0': - resolution: {integrity: sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA==} + '@algolia/client-abtesting@5.43.0': + resolution: {integrity: sha512-YsKYkohIMxiYEAu8nppZi5EioYDUIo9Heoor8K8vMUnkUtGCOEU/Q4p5OWaYSSBx3evo09Ga9rG4jsKViIcDzQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.42.0': - resolution: {integrity: sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA==} + '@algolia/client-analytics@5.43.0': + resolution: {integrity: sha512-kDGJWt3nzf0nu5RPFXQhNGl6Q0cn35fazxVWXhd0Fw3Vo6gcVfrcezcBenHb66laxnVJ7uwr1uKhmsu3Wy25sQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.42.0': - resolution: {integrity: sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ==} + '@algolia/client-common@5.43.0': + resolution: {integrity: sha512-RAFipkAnI8xhL/Sgi/gpXgNWN5HDM6F7z4NNNOcI8ZMYysZEBsqVXojg/WdKEKkQCOHVTZ3mooIjc5BaQdyVtA==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.42.0': - resolution: {integrity: sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg==} + '@algolia/client-insights@5.43.0': + resolution: {integrity: sha512-PmVs83THco8Qig3cAjU9a5eAGaSxsfgh7PdmWMQFE/MCmIcLPv0MVpgfcGGyPjZGYvPC4cg+3q7JJxcNSsEaTg==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.42.0': - resolution: {integrity: sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw==} + '@algolia/client-personalization@5.43.0': + resolution: {integrity: sha512-Bs4zMLXvkAr19FSOZWNizlNUpRFxZVxtvyEJ+q3n3+hPZUcKjo0LIh15qghhRcQPEihjBN6Gr/U+AqRfOCsvnA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.42.0': - resolution: {integrity: sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA==} + '@algolia/client-query-suggestions@5.43.0': + resolution: {integrity: sha512-pwHv+z8TZAKbwAWt9+v2gIqlqcCFiMdteTdgdPn2yOBRx4WUQdsIWAaG9GiV3by8jO51FuFQnTohhauuI63y3A==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.42.0': - resolution: {integrity: sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==} + '@algolia/client-search@5.43.0': + resolution: {integrity: sha512-wKy6x6fKcnB1CsfeNNdGp4dzLzz04k8II3JLt6Sp81F8s57Ks3/K9qsysmL9SJa8P486s719bBttVLE8JJYurQ==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.42.0': - resolution: {integrity: sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw==} + '@algolia/ingestion@1.43.0': + resolution: {integrity: sha512-TA21h2KwqCUyPXhSAWF3R2UES/FAnzjaVPDI6cRPXeadX+pdrGN0GWat5gSUATJVcMHECn+lGvuMMRxO86o2Pg==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.42.0': - resolution: {integrity: sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ==} + '@algolia/monitoring@1.43.0': + resolution: {integrity: sha512-rvWVEiA1iLcFmHS3oIXGIBreHIxNZqEFDjiNyRtLEffgd62kul2DjXM7H5bOouDMTo1ywMWT9OeQnzrhlTGAwA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.42.0': - resolution: {integrity: sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw==} + '@algolia/recommend@5.43.0': + resolution: {integrity: sha512-scCijGd38npvH2uHbYhO4f1SR8It5R2FZqOjNcMfw/7Ph7Hxvl+cd7Mo6RzIxsNRcLW5RrwjtpTK3gpDe8r/WQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.42.0': - resolution: {integrity: sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A==} + '@algolia/requester-browser-xhr@5.43.0': + resolution: {integrity: sha512-jMkRLWJYr4Hcmpl89e4vIWs69Mkf8Uwx7MG5ZKk2UxW3G3TmouGjI0Ph5mVPmg3Jf1UG3AdmVDc4XupzycT1Jw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.42.0': - resolution: {integrity: sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ==} + '@algolia/requester-fetch@5.43.0': + resolution: {integrity: sha512-KyQiVz+HdYtissC0J9KIGhHhKytQyJX+82GVsbv5rSCXbETnAoojvUyCn+3KRtWUvMDYCsZ+Y7hM71STTUJUJg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.42.0': - resolution: {integrity: sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==} + '@algolia/requester-node-http@5.43.0': + resolution: {integrity: sha512-UnUBNY0U+oT0bkYDsEqVsCkErC2w7idk4CRiLSzicqY8tGylD9oP0j13X/fse1CuiAFCCr3jfl+cBlN6dC0OFw==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -1706,156 +1706,312 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.26.0': + resolution: {integrity: sha512-hj0sKNCQOOo2fgyII3clmJXP28VhgDfU5iy3GNHlWO76KG6N7x4D9ezH5lJtQTG+1J6MFDAJXC1qsI+W+LvZoA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.26.0': + resolution: {integrity: sha512-DDnoJ5eoa13L8zPh87PUlRd/IyFaIKOlRbxiwcSbeumcJ7UZKdtuMCHa1Q27LWQggug6W4m28i4/O2qiQQ5NZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.26.0': + resolution: {integrity: sha512-C0hkDsYNHZkBtPxxDx177JN90/1MiCpvBNjz1f5yWJo1+5+c5zr8apjastpEG+wtPjo9FFtGG7owSsAxyKiHxA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.26.0': + resolution: {integrity: sha512-bKDkGXGZnj0T70cRpgmv549x38Vr2O3UWLbjT2qmIkdIWcmlg8yebcFWoT9Dku7b5OV3UqPEuNKRzlNhjwUJ9A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.26.0': + resolution: {integrity: sha512-6Z3naJgOuAIB0RLlJkYc81An3rTlQ/IeRdrU3dOea8h/PvZSgitZV+thNuIccw0MuK1GmIAnAmd5TrMZad8FTQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.26.0': + resolution: {integrity: sha512-OPnYj0zpYW0tHusMefyaMvNYQX5pNQuSsHFTHUBNp3vVXupwqpxofcjVsUx11CQhGVkGeXjC3WLjh91hgBG2xw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.26.0': + resolution: {integrity: sha512-jix2fa6GQeZhO1sCKNaNMjfj5hbOvoL2F5t+w6gEPxALumkpOV/wq7oUBMHBn2hY2dOm+mEV/K+xfZy3mrsxNQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.26.0': + resolution: {integrity: sha512-tccJaH5xHJD/239LjbVvJwf6T4kSzbk6wPFerF0uwWlkw/u7HL+wnAzAH5GB2irGhYemDgiNTp8wJzhAHQ64oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.26.0': + resolution: {integrity: sha512-IMJYN7FSkLttYyTbsbme0Ra14cBO5z47kpamo16IwggzzATFY2lcZAwkbcNkWiAduKrTgFJP7fW5cBI7FzcuNQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.26.0': + resolution: {integrity: sha512-JY8NyU31SyRmRpuc5W8PQarAx4TvuYbyxbPIpHAZdr/0g4iBr8KwQBS4kiiamGl2f42BBecHusYCsyxi7Kn8UQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.26.0': + resolution: {integrity: sha512-XITaGqGVLgk8WOHw8We9Z1L0lbLFip8LyQzKYFKO4zFo1PFaaSKsbNjvkb7O8kEXytmSGRkYpE8LLVpPJpsSlw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.26.0': + resolution: {integrity: sha512-MkggfbDIczStUJwq9wU7gQ7kO33d8j9lWuOCDifN9t47+PeI+9m2QVh51EI/zZQ1spZtFMC1nzBJ+qNGCjJnsg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.26.0': + resolution: {integrity: sha512-fUYup12HZWAeccNLhQ5HwNBPr4zXCPgUWzEq2Rfw7UwqwfQrFZ0SR/JljaURR8xIh9t+o1lNUFTECUTmaP7yKA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.26.0': + resolution: {integrity: sha512-MzRKhM0Ip+//VYwC8tialCiwUQ4G65WfALtJEFyU0GKJzfTYoPBw5XNWf0SLbCUYQbxTKamlVwPmcw4DgZzFxg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.26.0': + resolution: {integrity: sha512-QhCc32CwI1I4Jrg1enCv292sm3YJprW8WHHlyxJhae/dVs+KRWkbvz2Nynl5HmZDW/m9ZxrXayHzjzVNvQMGQA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.26.0': + resolution: {integrity: sha512-1D6vi6lfI18aNT1aTf2HV+RIlm6fxtlAp8eOJ4mmnbYmZ4boz8zYDar86sIYNh0wmiLJEbW/EocaKAX6Yso2fw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.26.0': + resolution: {integrity: sha512-rnDcepj7LjrKFvZkx+WrBv6wECeYACcFjdNPvVPojCPJD8nHpb3pv3AuR9CXgdnjH1O23btICj0rsp0L9wAnHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.26.0': + resolution: {integrity: sha512-FSWmgGp0mDNjEXXFcsf12BmVrb+sZBBBlyh3LwB/B9ac3Kkc8x5D2WimYW9N7SUkolui8JzVnVlWh7ZmjCpnxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.26.0': + resolution: {integrity: sha512-0QfciUDFryD39QoSPUDshj4uNEjQhp73+3pbSAaxjV2qGOEDsM67P7KbJq7LzHoVl46oqhIhJ1S+skKGR7lMXA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.26.0': + resolution: {integrity: sha512-vmAK+nHhIZWImwJ3RNw9hX3fU4UGN/OqbSE0imqljNbUQC3GvVJ1jpwYoTfD6mmXmQaxdJY6Hn4jQbLGJKg5Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.26.0': + resolution: {integrity: sha512-GPXF7RMkJ7o9bTyUsnyNtrFMqgM3X+uM/LWw4CeHIjqc32fm0Ir6jKDnWHpj8xHFstgWDUYseSABK9KCkHGnpg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.26.0': + resolution: {integrity: sha512-nUHZ5jEYqbBthbiBksbmHTlbb5eElyVfs/s1iHQ8rLBq1eWsd5maOnDpCocw1OM8kFK747d1Xms8dXJHtduxSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.26.0': + resolution: {integrity: sha512-TMg3KCTCYYaVO+R6P5mSORhcNDDlemUVnUbb8QkboUtOhb5JWKAzd5uMIMECJQOxHZ/R+N8HHtDF5ylzLfMiLw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.26.0': + resolution: {integrity: sha512-apqYgoAUd6ZCb9Phcs8zN32q6l0ZQzQBdVXOofa6WvHDlSOhwCWgSfVQabGViThS40Y1NA4SCvQickgZMFZRlA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.26.0': + resolution: {integrity: sha512-FGJAcImbJNZzLWu7U6WB0iKHl4RuY4TsXEwxJPl9UZLS47agIZuILZEX3Pagfw7I4J3ddflomt9f0apfaJSbaw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.26.0': + resolution: {integrity: sha512-WAckBKaVnmFqbEhbymrPK7M086DQMpL1XoRbpmN0iW8k5JSXjDRQBhcZNa0VweItknLq9eAeCL34jK7/CDcw7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2198,6 +2354,10 @@ packages: resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} engines: {node: '>=18'} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + '@inquirer/checkbox@4.3.0': resolution: {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} engines: {node: '>=18'} @@ -2207,8 +2367,17 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.19': - resolution: {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} + '@inquirer/checkbox@4.3.1': + resolution: {integrity: sha512-rOcLotrptYIy59SGQhKlU0xBg1vvcVl2FdPIEclUvKHh0wo12OfGkId/01PIMJ/V+EimJ77t085YabgnQHBa5A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.20': + resolution: {integrity: sha512-HDGiWh2tyRZa0M1ZnEIUCQro25gW/mN8ODByicQrbR1yHx4hT+IOpozCMi5TgBtUdklLwRI2mv14eNpftDluEw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2225,6 +2394,15 @@ packages: '@types/node': optional: true + '@inquirer/core@10.3.1': + resolution: {integrity: sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/editor@4.2.21': resolution: {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} engines: {node: '>=18'} @@ -2234,6 +2412,15 @@ packages: '@types/node': optional: true + '@inquirer/editor@4.2.22': + resolution: {integrity: sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/expand@4.0.21': resolution: {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} engines: {node: '>=18'} @@ -2243,6 +2430,15 @@ packages: '@types/node': optional: true + '@inquirer/expand@4.0.22': + resolution: {integrity: sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/external-editor@1.0.2': resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} engines: {node: '>=18'} @@ -2252,10 +2448,23 @@ packages: '@types/node': optional: true + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/figures@1.0.14': resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} engines: {node: '>=18'} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + '@inquirer/input@4.2.5': resolution: {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} engines: {node: '>=18'} @@ -2265,6 +2474,15 @@ packages: '@types/node': optional: true + '@inquirer/input@4.3.0': + resolution: {integrity: sha512-h4fgse5zeGsBSW3cRQqu9a99OXRdRsNCvHoBqVmz40cjYjYFzcfwD0KA96BHIPlT7rZw0IpiefQIqXrjbzjS4Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/number@3.0.21': resolution: {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} engines: {node: '>=18'} @@ -2274,6 +2492,15 @@ packages: '@types/node': optional: true + '@inquirer/number@3.0.22': + resolution: {integrity: sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/password@4.0.21': resolution: {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} engines: {node: '>=18'} @@ -2283,6 +2510,24 @@ packages: '@types/node': optional: true + '@inquirer/password@4.0.22': + resolution: {integrity: sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.0': + resolution: {integrity: sha512-X2HAjY9BClfFkJ2RP3iIiFxlct5JJVdaYYXhA7RKxsbc9KL+VbId79PSoUGH/OLS011NFbHHDMDcBKUj3T89+Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/prompts@7.9.0': resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} engines: {node: '>=18'} @@ -2292,6 +2537,15 @@ packages: '@types/node': optional: true + '@inquirer/rawlist@4.1.10': + resolution: {integrity: sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/rawlist@4.1.9': resolution: {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} engines: {node: '>=18'} @@ -2310,6 +2564,15 @@ packages: '@types/node': optional: true + '@inquirer/search@3.2.1': + resolution: {integrity: sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/select@4.4.0': resolution: {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} engines: {node: '>=18'} @@ -2319,6 +2582,24 @@ packages: '@types/node': optional: true + '@inquirer/select@4.4.1': + resolution: {integrity: sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.9': resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} engines: {node: '>=18'} @@ -2419,43 +2700,43 @@ packages: '@inquirer/prompts': '>= 3 < 8' listr2: 9.0.5 - '@lmdb/lmdb-darwin-arm64@3.4.3': - resolution: {integrity: sha512-zR6Y45VNtW5s+A+4AyhrJk0VJKhXdkLhrySCpCu7PSdnakebsOzNxf58p5Xoq66vOSuueGAxlqDAF49HwdrSTQ==} + '@lmdb/lmdb-darwin-arm64@3.4.4': + resolution: {integrity: sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.4.3': - resolution: {integrity: sha512-nfGm5pQksBGfaj9uMbjC0YyQreny/Pl7mIDtHtw6g7WQuCgeLullr9FNRsYyKplaEJBPrCVpEjpAznxTBIrXBw==} + '@lmdb/lmdb-darwin-x64@3.4.4': + resolution: {integrity: sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.4.3': - resolution: {integrity: sha512-uX9eaPqWb740wg5D3TCvU/js23lSRSKT7lJrrQ8IuEG/VLgpPlxO3lHDywU44yFYdGS7pElBn6ioKFKhvALZlw==} + '@lmdb/lmdb-linux-arm64@3.4.4': + resolution: {integrity: sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.4.3': - resolution: {integrity: sha512-Kjqomp7i0rgSbYSUmv9JnXpS55zYT/YcW3Bdf9oqOTjcH0/8tFAP8MLhu/i9V2pMKIURDZk63Ww49DTK0T3c/Q==} + '@lmdb/lmdb-linux-arm@3.4.4': + resolution: {integrity: sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.4.3': - resolution: {integrity: sha512-7/8l20D55CfwdMupkc3fNxNJdn4bHsti2X0cp6PwiXlLeSFvAfWs5kCCx+2Cyje4l4GtN//LtKWjTru/9hDJQg==} + '@lmdb/lmdb-linux-x64@3.4.4': + resolution: {integrity: sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-arm64@3.4.3': - resolution: {integrity: sha512-yWVR0e5Gl35EGJBsAuqPOdjtUYuN8CcTLKrqpQFoM+KsMadViVCulhKNhkcjSGJB88Am5bRPjMro4MBB9FS23Q==} + '@lmdb/lmdb-win32-arm64@3.4.4': + resolution: {integrity: sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==} cpu: [arm64] os: [win32] - '@lmdb/lmdb-win32-x64@3.4.3': - resolution: {integrity: sha512-1JdBkcO0Vrua4LUgr4jAe4FUyluwCeq/pDkBrlaVjX3/BBWP1TzVjCL+TibWNQtPAL1BITXPAhlK5Ru4FBd/hg==} + '@lmdb/lmdb-win32-x64@3.4.4': + resolution: {integrity: sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==} cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.21.0': - resolution: {integrity: sha512-YFBsXJMFCyI1zP98u7gezMFKX4lgu/XpoZJk7ufI6UlFKXLj2hAMUuRlQX/nrmIPOmhRrG6tw2OQ2ZA/ZlXYpQ==} + '@modelcontextprotocol/sdk@1.21.1': + resolution: {integrity: sha512-UyLFcJLDvUuZbGnaQqXFT32CpPpGj7VS19roLut6gkQVhb439xUzYWbsUvdI3ZPL+2hnFosuugtYWE0Mcs1rmQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -3086,122 +3367,243 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.53.1': + resolution: {integrity: sha512-bxZtughE4VNVJlL1RdoSE545kc4JxL7op57KKoi59/gwuU5rV6jLWFXXc8jwgFoT6vtj+ZjO+Z2C5nrY0Cl6wA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.52.5': resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.53.1': + resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.52.5': resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.53.1': + resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.52.5': resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.53.1': + resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.52.5': resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.53.1': + resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.5': resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.1': + resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': + resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.52.5': resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.53.1': + resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.52.5': resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.53.1': + resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.52.5': resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.53.1': + resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.52.5': resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.53.1': + resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.52.5': resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.53.1': + resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.52.5': resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.53.1': + resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.52.5': resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.53.1': + resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.52.5': resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.53.1': + resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.52.5': resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.53.1': + resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.52.5': resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.53.1': + resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openharmony-arm64@4.52.5': resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.53.1': + resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.52.5': resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.53.1': + resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.5': resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.1': + resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.5': resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.53.1': + resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.5': resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.1': + resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.52.5': resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3711,20 +4113,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.7': - resolution: {integrity: sha512-MXc+kEA5EUwMMGmNt1S6CIOEl/iCmAhGZQq1QgMNC3/QpYSOxkysEi6pxWhkqJ7YT/RduoVEV5rxFxHG18V3LA==} + '@vitest/coverage-v8@4.0.8': + resolution: {integrity: sha512-wQgmtW6FtPNn4lWUXi8ZSYLpOIb92j3QCujxX3sQ81NTfQ/ORnE0HtK7Kqf2+7J9jeveMGyGyc4NWc5qy3rC4A==} peerDependencies: - '@vitest/browser': 4.0.7 - vitest: 4.0.7 + '@vitest/browser': 4.0.8 + vitest: 4.0.8 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.7': - resolution: {integrity: sha512-jGRG6HghnJDjljdjYIoVzX17S6uCVCBRFnsgdLGJ6CaxfPh8kzUKe/2n533y4O/aeZ/sIr7q7GbuEbeGDsWv4Q==} + '@vitest/expect@4.0.8': + resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} - '@vitest/mocker@4.0.7': - resolution: {integrity: sha512-OsDwLS7WnpuNslOV6bJkXVYVV/6RSc4eeVxV7h9wxQPNxnjRvTTrIikfwCbMyl8XJmW6oOccBj2Q07YwZtQcCw==} + '@vitest/mocker@4.0.8': + resolution: {integrity: sha512-9FRM3MZCedXH3+pIh+ME5Up2NBBHDq0wqwhOKkN4VnvCiKbVxddqH9mSGPZeawjd12pCOGnl+lo/ZGHt0/dQSg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3734,20 +4136,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.7': - resolution: {integrity: sha512-YY//yxqTmk29+/pK+Wi1UB4DUH3lSVgIm+M10rAJ74pOSMgT7rydMSc+vFuq9LjZLhFvVEXir8EcqMke3SVM6Q==} + '@vitest/pretty-format@4.0.8': + resolution: {integrity: sha512-qRrjdRkINi9DaZHAimV+8ia9Gq6LeGz2CgIEmMLz3sBDYV53EsnLZbJMR1q84z1HZCMsf7s0orDgZn7ScXsZKg==} - '@vitest/runner@4.0.7': - resolution: {integrity: sha512-orU1lsu4PxLEcDWfjVCNGIedOSF/YtZ+XMrd1PZb90E68khWCNzD8y1dtxtgd0hyBIQk8XggteKN/38VQLvzuw==} + '@vitest/runner@4.0.8': + resolution: {integrity: sha512-mdY8Sf1gsM8hKJUQfiPT3pn1n8RF4QBcJYFslgWh41JTfrK1cbqY8whpGCFzBl45LN028g0njLCYm0d7XxSaQQ==} - '@vitest/snapshot@4.0.7': - resolution: {integrity: sha512-xJL+Nkw0OjaUXXQf13B8iKK5pI9QVtN9uOtzNHYuG/o/B7fIEg0DQ+xOe0/RcqwDEI15rud1k7y5xznBKGUXAA==} + '@vitest/snapshot@4.0.8': + resolution: {integrity: sha512-Nar9OTU03KGiubrIOFhcfHg8FYaRaNT+bh5VUlNz8stFhCZPNrJvmZkhsr1jtaYvuefYFwK2Hwrq026u4uPWCw==} - '@vitest/spy@4.0.7': - resolution: {integrity: sha512-FW4X8hzIEn4z+HublB4hBF/FhCVaXfIHm8sUfvlznrcy1MQG7VooBgZPMtVCGZtHi0yl3KESaXTqsKh16d8cFg==} + '@vitest/spy@4.0.8': + resolution: {integrity: sha512-nvGVqUunyCgZH7kmo+Ord4WgZ7lN0sOULYXUOYuHr55dvg9YvMz3izfB189Pgp28w0vWFbEEfNc/c3VTrqrXeA==} - '@vitest/utils@4.0.7': - resolution: {integrity: sha512-HNrg9CM/Z4ZWB6RuExhuC6FPmLipiShKVMnT9JlQvfhwR47JatWLChA6mtZqVHqypE6p/z6ofcjbyWpM7YLxPQ==} + '@vitest/utils@4.0.8': + resolution: {integrity: sha512-pdk2phO5NDvEFfUTxcTP8RFYjVj/kfLSPIN5ebP2Mu9kcIMeAQTbknqcFEyBcC4z2pJlJI9aS5UQjcYfhmKAow==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -3939,8 +4341,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.42.0: - resolution: {integrity: sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==} + algoliasearch@5.43.0: + resolution: {integrity: sha512-hbkK41JsuGYhk+atBDxlcKxskjDCh3OOEDpdKZPtw+3zucBqhlojRG5e5KtCmByGyYvwZswVeaSWglgLn2fibg==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -5097,8 +5499,8 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.25.12: - resolution: {integrity: sha512-rZqkjL3Y6FwLpSHzLnaEy8Ps6veCNo1kZa9EOfJvmWtBq5dJH4iVjfmOO6Mlkv9B0tt9WFPFmb/VxlgJOnueNg==} + esbuild-wasm@0.26.0: + resolution: {integrity: sha512-9rZuermDo9ZbWvKBv/vDRaRciCpR4L3rEbZLDs5kDq3TrCHRQZaQipQeV9wK/btpLBzNUBujTrd1uorDxbL/GA==} engines: {node: '>=18'} hasBin: true @@ -5107,6 +5509,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.26.0: + resolution: {integrity: sha512-3Hq7jri+tRrVWha+ZeIVhl4qJRha/XjRNSopvTsOaCvfPHrflTYTcUFcEjMKdxofsXXsdc4zjg5NOTnL4Gl57Q==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -6485,8 +6892,8 @@ packages: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - lmdb@3.4.3: - resolution: {integrity: sha512-GWV1kVi6uhrXWqe+3NXWO73OYe8fto6q8JMo0HOpk1vf8nEyFWgo4CSNJpIFzsOxOrysVUlcO48qRbQfmKd1gA==} + lmdb@3.4.4: + resolution: {integrity: sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==} hasBin: true loader-runner@4.3.1: @@ -6599,8 +7006,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -6828,6 +7235,10 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} + nanocolors@0.2.13: resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} @@ -7287,8 +7698,8 @@ packages: resolution: {integrity: sha512-Szuj+ViDTjKPQYiKumGmEn3frdl+ZPSdosHyt9SnUevFosOkMY2b7ipxlEctNKPmMD/VibeBI+ZcZCJK+4DPuw==} hasBin: true - piscina@5.1.3: - resolution: {integrity: sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==} + piscina@5.1.4: + resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} engines: {node: '>=20.x'} pkce-challenge@5.0.0: @@ -7700,6 +8111,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.53.1: + resolution: {integrity: sha512-n2I0V0lN3E9cxxMqBCT3opWOiQBzRN7UG60z/WDKqdX2zHUS/39lezBcsckZFsV6fUTSnfqI7kHf60jDAPGKug==} + 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'} @@ -8596,48 +9012,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.1.12: - resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vite@7.2.1: - resolution: {integrity: sha512-qTl3VF7BvOupTR85Zc561sPEgxyUSNSvTQ9fit7DEMP7yPgvvIGm5Zfa1dOM+kOwWGNviK9uFM9ra77+OjK7lQ==} + vite@7.2.2: + resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -8676,18 +9052,18 @@ packages: yaml: optional: true - vitest@4.0.7: - resolution: {integrity: sha512-xQroKAadK503CrmbzCISvQUjeuvEZzv6U0wlnlVFOi5i3gnzfH4onyQ29f3lzpe0FresAiTAd3aqK0Bi/jLI8w==} + vitest@4.0.8: + resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.7 - '@vitest/browser-preview': 4.0.7 - '@vitest/browser-webdriverio': 4.0.7 - '@vitest/ui': 4.0.7 + '@vitest/browser-playwright': 4.0.8 + '@vitest/browser-preview': 4.0.8 + '@vitest/browser-webdriverio': 4.0.8 + '@vitest/ui': 4.0.8 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9096,89 +9472,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.8.0': + '@algolia/abtesting@1.9.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-abtesting@5.42.0': + '@algolia/client-abtesting@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-analytics@5.42.0': + '@algolia/client-analytics@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-common@5.42.0': {} + '@algolia/client-common@5.43.0': {} - '@algolia/client-insights@5.42.0': + '@algolia/client-insights@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-personalization@5.42.0': + '@algolia/client-personalization@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-query-suggestions@5.42.0': + '@algolia/client-query-suggestions@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-search@5.42.0': + '@algolia/client-search@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/ingestion@1.42.0': + '@algolia/ingestion@1.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/monitoring@1.42.0': + '@algolia/monitoring@1.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/recommend@5.42.0': + '@algolia/recommend@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/requester-browser-xhr@5.42.0': + '@algolia/requester-browser-xhr@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 + '@algolia/client-common': 5.43.0 - '@algolia/requester-fetch@5.42.0': + '@algolia/requester-fetch@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 + '@algolia/client-common': 5.43.0 - '@algolia/requester-node-http@5.42.0': + '@algolia/requester-node-http@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 + '@algolia/client-common': 5.43.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9262,11 +9638,11 @@ 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/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.21.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.9.0(@types/node@24.10.0) '@inquirer/type': 3.0.9(@types/node@24.10.0) '@octokit/auth-app': 8.1.2 @@ -10156,81 +10532,159 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true + '@esbuild/aix-ppc64@0.26.0': + optional: true + '@esbuild/android-arm64@0.25.12': optional: true + '@esbuild/android-arm64@0.26.0': + optional: true + '@esbuild/android-arm@0.25.12': optional: true + '@esbuild/android-arm@0.26.0': + optional: true + '@esbuild/android-x64@0.25.12': optional: true + '@esbuild/android-x64@0.26.0': + optional: true + '@esbuild/darwin-arm64@0.25.12': optional: true + '@esbuild/darwin-arm64@0.26.0': + optional: true + '@esbuild/darwin-x64@0.25.12': optional: true + '@esbuild/darwin-x64@0.26.0': + optional: true + '@esbuild/freebsd-arm64@0.25.12': optional: true + '@esbuild/freebsd-arm64@0.26.0': + optional: true + '@esbuild/freebsd-x64@0.25.12': optional: true + '@esbuild/freebsd-x64@0.26.0': + optional: true + '@esbuild/linux-arm64@0.25.12': optional: true + '@esbuild/linux-arm64@0.26.0': + optional: true + '@esbuild/linux-arm@0.25.12': optional: true + '@esbuild/linux-arm@0.26.0': + optional: true + '@esbuild/linux-ia32@0.25.12': optional: true + '@esbuild/linux-ia32@0.26.0': + optional: true + '@esbuild/linux-loong64@0.25.12': optional: true + '@esbuild/linux-loong64@0.26.0': + optional: true + '@esbuild/linux-mips64el@0.25.12': optional: true + '@esbuild/linux-mips64el@0.26.0': + optional: true + '@esbuild/linux-ppc64@0.25.12': optional: true + '@esbuild/linux-ppc64@0.26.0': + optional: true + '@esbuild/linux-riscv64@0.25.12': optional: true + '@esbuild/linux-riscv64@0.26.0': + optional: true + '@esbuild/linux-s390x@0.25.12': optional: true + '@esbuild/linux-s390x@0.26.0': + optional: true + '@esbuild/linux-x64@0.25.12': optional: true + '@esbuild/linux-x64@0.26.0': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true + '@esbuild/netbsd-arm64@0.26.0': + optional: true + '@esbuild/netbsd-x64@0.25.12': optional: true + '@esbuild/netbsd-x64@0.26.0': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true + '@esbuild/openbsd-arm64@0.26.0': + optional: true + '@esbuild/openbsd-x64@0.25.12': optional: true + '@esbuild/openbsd-x64@0.26.0': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true + '@esbuild/openharmony-arm64@0.26.0': + optional: true + '@esbuild/sunos-x64@0.25.12': optional: true + '@esbuild/sunos-x64@0.26.0': + optional: true + '@esbuild/win32-arm64@0.25.12': optional: true + '@esbuild/win32-arm64@0.26.0': + optional: true + '@esbuild/win32-ia32@0.25.12': optional: true + '@esbuild/win32-ia32@0.26.0': + optional: true + '@esbuild/win32-x64@0.25.12': optional: true + '@esbuild/win32-x64@0.26.0': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -10664,12 +11118,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.21.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.21.0 + '@modelcontextprotocol/sdk': 1.21.1 transitivePeerDependencies: - bufferutil - supports-color @@ -10714,6 +11168,8 @@ snapshots: '@inquirer/ansi@1.0.1': {} + '@inquirer/ansi@1.0.2': {} + '@inquirer/checkbox@4.3.0(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 @@ -10724,10 +11180,20 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/confirm@5.1.19(@types/node@24.10.0)': + '@inquirer/checkbox@4.3.1(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + + '@inquirer/confirm@5.1.20(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) optionalDependencies: '@types/node': 24.10.0 @@ -10744,6 +11210,19 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/core@10.3.1(@types/node@24.10.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + cli-width: 4.1.0 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/editor@4.2.21(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.10.0) @@ -10752,6 +11231,14 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/editor@4.2.22(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/expand@4.0.21(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.10.0) @@ -10760,6 +11247,14 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/expand@4.0.22(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/external-editor@1.0.2(@types/node@24.10.0)': dependencies: chardet: 2.1.1 @@ -10767,8 +11262,17 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/external-editor@1.0.3(@types/node@24.10.0)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/figures@1.0.14': {} + '@inquirer/figures@1.0.15': {} + '@inquirer/input@4.2.5(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.10.0) @@ -10776,6 +11280,13 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/input@4.3.0(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/number@3.0.21(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.10.0) @@ -10783,6 +11294,13 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/number@3.0.22(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/password@4.0.21(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 @@ -10791,10 +11309,33 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/password@4.0.22(@types/node@24.10.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + + '@inquirer/prompts@7.10.0(@types/node@24.10.0)': + dependencies: + '@inquirer/checkbox': 4.3.1(@types/node@24.10.0) + '@inquirer/confirm': 5.1.20(@types/node@24.10.0) + '@inquirer/editor': 4.2.22(@types/node@24.10.0) + '@inquirer/expand': 4.0.22(@types/node@24.10.0) + '@inquirer/input': 4.3.0(@types/node@24.10.0) + '@inquirer/number': 3.0.22(@types/node@24.10.0) + '@inquirer/password': 4.0.22(@types/node@24.10.0) + '@inquirer/rawlist': 4.1.10(@types/node@24.10.0) + '@inquirer/search': 3.2.1(@types/node@24.10.0) + '@inquirer/select': 4.4.1(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/prompts@7.9.0(@types/node@24.10.0)': dependencies: '@inquirer/checkbox': 4.3.0(@types/node@24.10.0) - '@inquirer/confirm': 5.1.19(@types/node@24.10.0) + '@inquirer/confirm': 5.1.20(@types/node@24.10.0) '@inquirer/editor': 4.2.21(@types/node@24.10.0) '@inquirer/expand': 4.0.21(@types/node@24.10.0) '@inquirer/input': 4.2.5(@types/node@24.10.0) @@ -10806,6 +11347,14 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/rawlist@4.1.10(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/rawlist@4.1.9(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.0(@types/node@24.10.0) @@ -10823,6 +11372,15 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/search@3.2.1(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/select@4.4.0(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.1 @@ -10833,6 +11391,20 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/select@4.4.1(@types/node@24.10.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + + '@inquirer/type@3.0.10(@types/node@24.10.0)': + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/type@3.0.9(@types/node@24.10.0)': optionalDependencies: '@types/node': 24.10.0 @@ -10927,36 +11499,36 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.9.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.9.0(@types/node@24.10.0) + '@inquirer/prompts': 7.10.0(@types/node@24.10.0) '@inquirer/type': 3.0.9(@types/node@24.10.0) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.4.3': + '@lmdb/lmdb-darwin-arm64@3.4.4': optional: true - '@lmdb/lmdb-darwin-x64@3.4.3': + '@lmdb/lmdb-darwin-x64@3.4.4': optional: true - '@lmdb/lmdb-linux-arm64@3.4.3': + '@lmdb/lmdb-linux-arm64@3.4.4': optional: true - '@lmdb/lmdb-linux-arm@3.4.3': + '@lmdb/lmdb-linux-arm@3.4.4': optional: true - '@lmdb/lmdb-linux-x64@3.4.3': + '@lmdb/lmdb-linux-x64@3.4.4': optional: true - '@lmdb/lmdb-win32-arm64@3.4.3': + '@lmdb/lmdb-win32-arm64@3.4.4': optional: true - '@lmdb/lmdb-win32-x64@3.4.3': + '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.21.0': + '@modelcontextprotocol/sdk@1.21.1': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11467,13 +12039,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.47': {} - '@rollup/plugin-alias@6.0.0(rollup@4.52.5)': + '@rollup/plugin-alias@6.0.0(rollup@4.53.1)': optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - '@rollup/plugin-commonjs@29.0.0(rollup@4.52.5)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11481,7 +12053,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/plugin-json@6.1.0(rollup@4.52.5)': dependencies: @@ -11489,33 +12061,39 @@ snapshots: optionalDependencies: rollup: 4.52.5 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.52.5)': + '@rollup/plugin-json@6.1.0(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) + optionalDependencies: + rollup: 4.53.1 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.1)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.5)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - '@rollup/pluginutils@5.2.0(rollup@4.52.5)': + '@rollup/pluginutils@5.2.0(rollup@4.53.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: @@ -11525,72 +12103,146 @@ snapshots: optionalDependencies: rollup: 4.52.5 + '@rollup/pluginutils@5.3.0(rollup@4.53.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.53.1 + '@rollup/rollup-android-arm-eabi@4.52.5': optional: true + '@rollup/rollup-android-arm-eabi@4.53.1': + optional: true + '@rollup/rollup-android-arm64@4.52.5': optional: true + '@rollup/rollup-android-arm64@4.53.1': + optional: true + '@rollup/rollup-darwin-arm64@4.52.5': optional: true + '@rollup/rollup-darwin-arm64@4.53.1': + optional: true + '@rollup/rollup-darwin-x64@4.52.5': optional: true + '@rollup/rollup-darwin-x64@4.53.1': + optional: true + '@rollup/rollup-freebsd-arm64@4.52.5': optional: true + '@rollup/rollup-freebsd-arm64@4.53.1': + optional: true + '@rollup/rollup-freebsd-x64@4.52.5': optional: true + '@rollup/rollup-freebsd-x64@4.53.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true + '@rollup/rollup-linux-arm64-musl@4.53.1': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-loong64-gnu@4.53.1': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.1': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true + '@rollup/rollup-linux-riscv64-musl@4.53.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-x64-gnu@4.53.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.52.5': optional: true + '@rollup/rollup-linux-x64-musl@4.53.1': + optional: true + '@rollup/rollup-openharmony-arm64@4.52.5': optional: true + '@rollup/rollup-openharmony-arm64@4.53.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.5': optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.1': + optional: true + '@rollup/rollup-win32-x64-gnu@4.52.5': optional: true + '@rollup/rollup-win32-x64-gnu@4.53.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true + '@rollup/rollup-win32-x64-msvc@4.53.1': + optional: true + '@rollup/wasm-node@4.52.5': dependencies: '@types/estree': 1.0.8 @@ -11877,10 +12529,10 @@ snapshots: '@types/less@3.0.8': {} - '@types/loader-utils@3.0.0(esbuild@0.25.12)': + '@types/loader-utils@3.0.0(esbuild@0.26.0)': dependencies: '@types/node': 22.19.0 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12285,64 +12937,64 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.7(vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.7 + '@vitest/utils': 4.0.8 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magicast: 0.3.5 + magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.7': + '@vitest/expect@4.0.8': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.7 - '@vitest/utils': 4.0.7 + '@vitest/spy': 4.0.8 + '@vitest/utils': 4.0.8 chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.7 + '@vitest/spy': 4.0.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.7': + '@vitest/pretty-format@4.0.8': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.7': + '@vitest/runner@4.0.8': dependencies: - '@vitest/utils': 4.0.7 + '@vitest/utils': 4.0.8 pathe: 2.0.3 - '@vitest/snapshot@4.0.7': + '@vitest/snapshot@4.0.8': dependencies: - '@vitest/pretty-format': 4.0.7 + '@vitest/pretty-format': 4.0.8 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.7': {} + '@vitest/spy@4.0.8': {} - '@vitest/utils@4.0.7': + '@vitest/utils@4.0.8': dependencies: - '@vitest/pretty-format': 4.0.7 + '@vitest/pretty-format': 4.0.8 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -12378,11 +13030,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.52.5) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.1) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.52.5 + rollup: 4.53.1 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -12682,22 +13334,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.42.0: - dependencies: - '@algolia/abtesting': 1.8.0 - '@algolia/client-abtesting': 5.42.0 - '@algolia/client-analytics': 5.42.0 - '@algolia/client-common': 5.42.0 - '@algolia/client-insights': 5.42.0 - '@algolia/client-personalization': 5.42.0 - '@algolia/client-query-suggestions': 5.42.0 - '@algolia/client-search': 5.42.0 - '@algolia/ingestion': 1.42.0 - '@algolia/monitoring': 1.42.0 - '@algolia/recommend': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + algoliasearch@5.43.0: + dependencies: + '@algolia/abtesting': 1.9.0 + '@algolia/client-abtesting': 5.43.0 + '@algolia/client-analytics': 5.43.0 + '@algolia/client-common': 5.43.0 + '@algolia/client-insights': 5.43.0 + '@algolia/client-personalization': 5.43.0 + '@algolia/client-query-suggestions': 5.43.0 + '@algolia/client-search': 5.43.0 + '@algolia/ingestion': 1.43.0 + '@algolia/monitoring': 1.43.0 + '@algolia/recommend': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 ansi-colors@4.1.3: {} @@ -12862,11 +13514,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.25.12)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.26.0)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13466,14 +14118,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.25.12)): + copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.26.0)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) core-js-compat@3.46.0: dependencies: @@ -13517,7 +14169,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.102.1(esbuild@0.25.12)): + css-loader@7.1.2(webpack@5.102.1(esbuild@0.26.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13528,7 +14180,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) css-select@6.0.0: dependencies: @@ -13978,7 +14630,7 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.25.12: {} + esbuild-wasm@0.26.0: {} esbuild@0.25.12: optionalDependencies: @@ -14009,6 +14661,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 + esbuild@0.26.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.26.0 + '@esbuild/android-arm': 0.26.0 + '@esbuild/android-arm64': 0.26.0 + '@esbuild/android-x64': 0.26.0 + '@esbuild/darwin-arm64': 0.26.0 + '@esbuild/darwin-x64': 0.26.0 + '@esbuild/freebsd-arm64': 0.26.0 + '@esbuild/freebsd-x64': 0.26.0 + '@esbuild/linux-arm': 0.26.0 + '@esbuild/linux-arm64': 0.26.0 + '@esbuild/linux-ia32': 0.26.0 + '@esbuild/linux-loong64': 0.26.0 + '@esbuild/linux-mips64el': 0.26.0 + '@esbuild/linux-ppc64': 0.26.0 + '@esbuild/linux-riscv64': 0.26.0 + '@esbuild/linux-s390x': 0.26.0 + '@esbuild/linux-x64': 0.26.0 + '@esbuild/netbsd-arm64': 0.26.0 + '@esbuild/netbsd-x64': 0.26.0 + '@esbuild/openbsd-arm64': 0.26.0 + '@esbuild/openbsd-x64': 0.26.0 + '@esbuild/openharmony-arm64': 0.26.0 + '@esbuild/sunos-x64': 0.26.0 + '@esbuild/win32-arm64': 0.26.0 + '@esbuild/win32-ia32': 0.26.0 + '@esbuild/win32-x64': 0.26.0 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -15635,11 +16316,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.25.12)): + less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.26.0)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) less@4.4.2: dependencies: @@ -15660,11 +16341,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.25.12)): + license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.26.0)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) lie@3.3.0: dependencies: @@ -15690,7 +16371,7 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - lmdb@3.4.3: + lmdb@3.4.4: dependencies: msgpackr: 1.11.5 node-addon-api: 6.1.0 @@ -15698,13 +16379,13 @@ snapshots: ordered-binary: 1.6.0 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.4.3 - '@lmdb/lmdb-darwin-x64': 3.4.3 - '@lmdb/lmdb-linux-arm': 3.4.3 - '@lmdb/lmdb-linux-arm64': 3.4.3 - '@lmdb/lmdb-linux-x64': 3.4.3 - '@lmdb/lmdb-win32-arm64': 3.4.3 - '@lmdb/lmdb-win32-x64': 3.4.3 + '@lmdb/lmdb-darwin-arm64': 3.4.4 + '@lmdb/lmdb-darwin-x64': 3.4.4 + '@lmdb/lmdb-linux-arm': 3.4.4 + '@lmdb/lmdb-linux-arm64': 3.4.4 + '@lmdb/lmdb-linux-x64': 3.4.4 + '@lmdb/lmdb-win32-arm64': 3.4.4 + '@lmdb/lmdb-win32-x64': 3.4.4 optional: true loader-runner@4.3.1: {} @@ -15813,7 +16494,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.1: dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 @@ -15925,11 +16606,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.25.12)): + mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.26.0)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) minimalistic-assert@1.0.1: {} @@ -16039,6 +16720,8 @@ snapshots: mute-stream@2.0.0: {} + mute-stream@3.0.0: {} + nanocolors@0.2.13: {} nanoid@3.3.11: {} @@ -16079,7 +16762,7 @@ snapshots: jsonc-parser: 3.3.1 less: 4.4.2 ora: 9.0.0 - piscina: 5.1.3 + piscina: 5.1.4 postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@5.9.3) rxjs: 7.8.2 @@ -16534,7 +17217,7 @@ snapshots: sonic-boom: 4.2.0 thread-stream: 3.1.0 - piscina@5.1.3: + piscina@5.1.4: optionalDependencies: '@napi-rs/nice': 1.1.1 @@ -16560,14 +17243,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.12)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.26.0)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) transitivePeerDependencies: - typescript @@ -17047,10 +17730,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.52.5): + rollup-plugin-dts@6.2.3(rollup@4.53.1)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.52.5) - rollup: 4.52.5 + magic-string: 0.30.21 + rollup: 4.53.1 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.53.1): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.53.1) + rollup: 4.53.1 optionalDependencies: '@types/node': 22.19.0 @@ -17082,6 +17773,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 + rollup@4.53.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.1 + '@rollup/rollup-android-arm64': 4.53.1 + '@rollup/rollup-darwin-arm64': 4.53.1 + '@rollup/rollup-darwin-x64': 4.53.1 + '@rollup/rollup-freebsd-arm64': 4.53.1 + '@rollup/rollup-freebsd-x64': 4.53.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.1 + '@rollup/rollup-linux-arm-musleabihf': 4.53.1 + '@rollup/rollup-linux-arm64-gnu': 4.53.1 + '@rollup/rollup-linux-arm64-musl': 4.53.1 + '@rollup/rollup-linux-loong64-gnu': 4.53.1 + '@rollup/rollup-linux-ppc64-gnu': 4.53.1 + '@rollup/rollup-linux-riscv64-gnu': 4.53.1 + '@rollup/rollup-linux-riscv64-musl': 4.53.1 + '@rollup/rollup-linux-s390x-gnu': 4.53.1 + '@rollup/rollup-linux-x64-gnu': 4.53.1 + '@rollup/rollup-linux-x64-musl': 4.53.1 + '@rollup/rollup-openharmony-arm64': 4.53.1 + '@rollup/rollup-win32-arm64-msvc': 4.53.1 + '@rollup/rollup-win32-ia32-msvc': 4.53.1 + '@rollup/rollup-win32-x64-gnu': 4.53.1 + '@rollup/rollup-win32-x64-msvc': 4.53.1 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -17131,12 +17850,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.25.12)): + sass-loader@16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.26.0)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.93.3 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) sass@1.93.3: dependencies: @@ -17449,11 +18168,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.25.12)): + source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.26.0)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) source-map-support@0.4.18: dependencies: @@ -17745,16 +18464,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)): + terser-webpack-plugin@5.3.14(esbuild@0.26.0)(webpack@5.102.1(esbuild@0.26.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) optionalDependencies: - esbuild: 0.25.12 + esbuild: 0.26.0 terser@5.44.1: dependencies: @@ -18169,31 +18888,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.5 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.0 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.93.3 - terser: 5.44.1 - tsx: 4.20.6 - yaml: 2.8.1 - - vite@7.2.1(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.5 + rollup: 4.53.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.0 @@ -18205,15 +18906,15 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.7(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.7 - '@vitest/mocker': 4.0.7(vite@7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.7 - '@vitest/runner': 4.0.7 - '@vitest/snapshot': 4.0.7 - '@vitest/spy': 4.0.7 - '@vitest/utils': 4.0.7 + '@vitest/expect': 4.0.8 + '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.8 + '@vitest/runner': 4.0.8 + '@vitest/snapshot': 4.0.8 + '@vitest/spy': 4.0.8 + '@vitest/utils': 4.0.8 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 @@ -18225,7 +18926,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 @@ -18293,7 +18994,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.25.12)): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.26.0)): dependencies: colorette: 2.0.20 memfs: 4.50.0 @@ -18302,9 +19003,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.25.12)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18332,10 +19033,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.25.12)) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.26.0)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) transitivePeerDependencies: - bufferutil - debug @@ -18350,12 +19051,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.25.12)): + webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.26.0)): dependencies: typed-assert: 1.0.9 - webpack: 5.102.1(esbuild@0.25.12) + webpack: 5.102.1(esbuild@0.26.0) - webpack@5.102.1(esbuild@0.25.12): + webpack@5.102.1(esbuild@0.26.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18379,7 +19080,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.12)(webpack@5.102.1(esbuild@0.25.12)) + terser-webpack-plugin: 5.3.14(esbuild@0.26.0)(webpack@5.102.1(esbuild@0.26.0)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 4cf1aa32cb4ba601c23f4e953fb1a0125aecae19 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Sun, 9 Nov 2025 21:24:44 -0500 Subject: [PATCH 1760/2162] refactor(@angular/build): create shared utility for external metadata The logic to process external metadata from build results was previously implemented directly within the dev-server. This commit extracts this logic into a shared utility function, `updateExternalMetadata`, and moves it to a common location. The dev-server is updated to use this new function. Additionally, the Vitest unit test builder is modified to leverage this utility, allowing it to correctly track external dependencies for Vite's dependency optimization. --- .../src/builders/dev-server/vite/index.ts | 32 +--------- .../unit-test/runners/vitest/build-options.ts | 7 +-- .../unit-test/runners/vitest/executor.ts | 14 ++++- .../unit-test/runners/vitest/plugins.ts | 2 + .../angular/build/src/tools/vite/utils.ts | 60 +++++++++++++++++++ 5 files changed, 79 insertions(+), 36 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/vite/index.ts b/packages/angular/build/src/builders/dev-server/vite/index.ts index b1f70379125c..75987b2c2cc2 100644 --- a/packages/angular/build/src/builders/dev-server/vite/index.ts +++ b/packages/angular/build/src/builders/dev-server/vite/index.ts @@ -14,7 +14,7 @@ import { join } from 'node:path'; import type { Connect, ViteDevServer } from 'vite'; import type { ComponentStyleRecord } from '../../../tools/vite/middlewares'; import { ServerSsrMode } from '../../../tools/vite/plugins'; -import { EsbuildLoaderOption } from '../../../tools/vite/utils'; +import { EsbuildLoaderOption, updateExternalMetadata } from '../../../tools/vite/utils'; import { normalizeSourceMaps } from '../../../utils'; import { useComponentStyleHmr, useComponentTemplateHmr } from '../../../utils/environment-options'; import { Result, ResultKind } from '../../application/results'; @@ -35,7 +35,6 @@ import { DevServerExternalResultMetadata, OutputAssetRecord, OutputFileRecord, - isAbsoluteUrl, updateResultRecord, } from './utils'; @@ -333,34 +332,7 @@ export async function* serveWithVite( } // To avoid disconnecting the array objects from the option, these arrays need to be mutated instead of replaced. - if (result.detail?.['externalMetadata']) { - const { implicitBrowser, implicitServer, explicit } = result.detail[ - 'externalMetadata' - ] as ExternalResultMetadata; - const implicitServerFiltered = implicitServer.filter( - (m) => !isBuiltin(m) && !isAbsoluteUrl(m), - ); - const implicitBrowserFiltered = implicitBrowser.filter((m) => !isAbsoluteUrl(m)); - - // Empty Arrays to avoid growing unlimited with every re-build. - externalMetadata.explicitBrowser.length = 0; - externalMetadata.explicitServer.length = 0; - externalMetadata.implicitServer.length = 0; - externalMetadata.implicitBrowser.length = 0; - - const externalDeps = browserOptions.externalDependencies ?? []; - externalMetadata.explicitBrowser.push(...explicit, ...externalDeps); - externalMetadata.explicitServer.push(...explicit, ...externalDeps, ...builtinModules); - externalMetadata.implicitServer.push(...implicitServerFiltered); - externalMetadata.implicitBrowser.push(...implicitBrowserFiltered); - - // The below needs to be sorted as Vite uses these options are part of the hashing invalidation algorithm. - // See: https://github.com/vitejs/vite/blob/0873bae0cfe0f0718ad2f5743dd34a17e4ab563d/packages/vite/src/node/optimizer/index.ts#L1203-L1239 - externalMetadata.explicitBrowser.sort(); - externalMetadata.explicitServer.sort(); - externalMetadata.implicitServer.sort(); - externalMetadata.implicitBrowser.sort(); - } + updateExternalMetadata(result, externalMetadata, browserOptions.externalDependencies); if (server) { // Update fs allow list to include any new assets from the build option. diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 5df9aafe0d57..007a9a7d4a50 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -99,11 +99,8 @@ export async function getVitestBuildOptions( entryPoints.set('init-testbed', 'angular:test-bed-init'); const externalDependencies = new Set(['vitest']); - if (!options.browsers?.length) { - // Only add for non-browser setups. - // Comprehensive browser prebundling will be handled separately. - ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep)); - } + ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep)); + if (baseBuildOptions.externalDependencies) { baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep)); } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 950a96f2adac..538f005ecdcc 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -9,8 +9,11 @@ import type { BuilderOutput } from '@angular-devkit/architect'; import assert from 'node:assert'; import path from 'node:path'; -import { isMatch } from 'picomatch'; import type { Vitest } from 'vitest/node'; +import { + DevServerExternalResultMetadata, + updateExternalMetadata, +} from '../../../../tools/vite/utils'; import { assertIsError } from '../../../../utils/error'; import { type FullResult, @@ -30,6 +33,12 @@ export class VitestExecutor implements TestExecutor { private readonly projectName: string; private readonly options: NormalizedUnitTestBuilderOptions; private readonly buildResultFiles = new Map(); + private readonly externalMetadata: DevServerExternalResultMetadata = { + implicitBrowser: [], + implicitServer: [], + explicitBrowser: [], + explicitServer: [], + }; // This is a reverse map of the entry points created in `build-options.ts`. // It is used by the in-memory provider plugin to map the requested test file @@ -71,6 +80,8 @@ export class VitestExecutor implements TestExecutor { } } + updateExternalMetadata(buildResult, this.externalMetadata, undefined, true); + // Initialize Vitest if not already present. this.vitest ??= await this.initializeVitest(); const vitest = this.vitest; @@ -220,6 +231,7 @@ export class VitestExecutor implements TestExecutor { coverage, projectName, projectSourceRoot: this.options.projectSourceRoot, + optimizeDepsInclude: this.externalMetadata.explicitBrowser, reporters, setupFiles: testSetupFiles, projectPlugins, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index e425bdf95e4d..fa3f5f7d3ab9 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -42,6 +42,7 @@ interface VitestConfigPluginOptions { setupFiles: string[]; projectPlugins: Exclude; include: string[]; + optimizeDepsInclude: string[]; } async function findTestEnvironment( @@ -133,6 +134,7 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi }, optimizeDeps: { noDiscovery: true, + include: options.optimizeDepsInclude, }, plugins: projectPlugins, }; diff --git a/packages/angular/build/src/tools/vite/utils.ts b/packages/angular/build/src/tools/vite/utils.ts index 2322eb210bec..2f7cfba84306 100644 --- a/packages/angular/build/src/tools/vite/utils.ts +++ b/packages/angular/build/src/tools/vite/utils.ts @@ -7,8 +7,10 @@ */ import { lookup as lookupMimeType } from 'mrmime'; +import { builtinModules, isBuiltin } from 'node:module'; import { extname } from 'node:path'; import type { DepOptimizationConfig } from 'vite'; +import type { ExternalResultMetadata } from '../esbuild/bundler-execution-result'; import { JavaScriptTransformer } from '../esbuild/javascript-transformer'; import { getFeatureSupport } from '../esbuild/utils'; @@ -109,3 +111,61 @@ export function getDepOptimizationConfig({ }, }; } + +export interface DevServerExternalResultMetadata { + implicitBrowser: string[]; + implicitServer: string[]; + explicitBrowser: string[]; + explicitServer: string[]; +} + +export function isAbsoluteUrl(url: string): boolean { + try { + new URL(url); + + return true; + } catch { + return false; + } +} + +export function updateExternalMetadata( + result: { detail?: { externalMetadata?: ExternalResultMetadata } }, + externalMetadata: DevServerExternalResultMetadata, + externalDependencies: string[] | undefined, + explicitPackagesOnly: boolean = false, +): void { + if (!result.detail?.['externalMetadata']) { + return; + } + + const { implicitBrowser, implicitServer, explicit } = result.detail['externalMetadata']; + const implicitServerFiltered = implicitServer.filter((m) => !isBuiltin(m) && !isAbsoluteUrl(m)); + const implicitBrowserFiltered = implicitBrowser.filter((m) => !isAbsoluteUrl(m)); + const explicitBrowserFiltered = explicitPackagesOnly + ? explicit.filter((m) => !isAbsoluteUrl(m)) + : explicit; + + // Empty Arrays to avoid growing unlimited with every re-build. + externalMetadata.explicitBrowser.length = 0; + externalMetadata.explicitServer.length = 0; + externalMetadata.implicitServer.length = 0; + externalMetadata.implicitBrowser.length = 0; + + const externalDeps = externalDependencies ?? []; + externalMetadata.explicitBrowser.push(...explicitBrowserFiltered, ...externalDeps); + externalMetadata.explicitServer.push( + ...explicitBrowserFiltered, + ...externalDeps, + ...builtinModules, + ); + externalMetadata.implicitServer.push(...implicitServerFiltered); + externalMetadata.implicitBrowser.push(...implicitBrowserFiltered); + + // The below needs to be sorted as Vite uses these options as part of the hashing invalidation algorithm. + // See: https://github.com/vitejs/vite/blob/0873bae0cfe0f0718ad2f5743dd34a17e4ab563d/packages/vite/src/node/optimizer/index.ts#L1203-L1239 + externalMetadata.explicitBrowser.sort(); + externalMetadata.explicitServer.sort(); + externalMetadata.implicitServer.sort(); + externalMetadata.implicitBrowser.sort(); +} From 377780a1c2878f1028ae7a74f8c5387863a27974 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Sun, 9 Nov 2025 09:16:50 -0500 Subject: [PATCH 1761/2162] fix(@angular/build): ensure TestBed setup is robust in non-isolated Vitest This commit refines the Angular TestBed initialization within the Vitest runner to ensure correct behavior in non-isolated test environments (`isolate: false`). Previously, in a non-isolated setup, the TestBed initialization logic in the virtual setup file could be problematic if the file was evaluated multiple times. This could lead to re-registering `beforeEach`/`afterEach` hooks or attempting to re-initialize the TestBed, causing errors or unexpected test behavior. This change introduces a globally unique symbol guard (`Symbol.for('@angular/cli/testbed-setup')`) that ensures the entire TestBed setup block (including hook registration and `initTestEnvironment`) is executed only once per test run. This prevents redundant executions and potential errors. Finally, the `isolate` option in Vitest is now explicitly defaulted to `false` when not specified by the user, aligning with the traditional Karma/Jasmine experience. --- .../unit-test/runners/vitest/build-options.ts | 34 +++++++++++++------ .../unit-test/runners/vitest/executor.ts | 5 ++- .../unit-test/runners/vitest/plugins.ts | 2 ++ 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 007a9a7d4a50..72152bd8c624 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -49,17 +49,29 @@ function createTestBedInitVirtualFile( import { getTestBed, ɵgetCleanupHook as getCleanupHook } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; ${providersImport} - // Same as https://github.com/angular/angular/blob/05a03d3f975771bb59c7eefd37c01fa127ee2229/packages/core/testing/srcs/test_hooks.ts#L21-L29 - beforeEach(getCleanupHook(false)); - afterEach(getCleanupHook(true)); - @NgModule({ - providers: [${usesZoneJS ? 'provideZoneChangeDetection(), ' : ''}...providers], - }) - export class TestModule {} - getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), { - errorOnUnknownElements: true, - errorOnUnknownProperties: true, - }); + + const ANGULAR_TESTBED_SETUP = Symbol.for('@angular/cli/testbed-setup'); + if (!globalThis[ANGULAR_TESTBED_SETUP]) { + globalThis[ANGULAR_TESTBED_SETUP] = true; + + // The Angular TestBed needs to be initialized before any tests are run. + // In a non-isolated environment, this setup file can be executed multiple times. + // The guard condition above ensures that the setup is only performed once. + + // Same as https://github.com/angular/angular/blob/05a03d3f975771bb59c7eefd37c01fa127ee2229/packages/core/testing/srcs/test_hooks.ts#L21-L29 + beforeEach(getCleanupHook(false)); + afterEach(getCleanupHook(true)); + + @NgModule({ + providers: [${usesZoneJS ? 'provideZoneChangeDetection(), ' : ''}...providers], + }) + class TestModule {} + + getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), { + errorOnUnknownElements: true, + errorOnUnknownProperties: true, + }); + } `; } diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 538f005ecdcc..510cf70545d3 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -235,7 +235,10 @@ export class VitestExecutor implements TestExecutor { reporters, setupFiles: testSetupFiles, projectPlugins, - include: [...this.testFileToEntryPoint.keys()], + include: [...this.testFileToEntryPoint.keys()].filter( + // Filter internal entries + (entry) => !entry.startsWith('angular:'), + ), }), ], }, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index fa3f5f7d3ab9..93ed6497a946 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -126,6 +126,8 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi setupFiles: combinedSetupFiles, include, globals: testConfig?.globals ?? true, + // Default to `false` to align with the Karma/Jasmine experience. + isolate: testConfig?.isolate ?? false, ...(browser ? { browser } : {}), // If the user has not specified an environment, use a smart default. ...(!testConfig?.environment From 21a486b3d593d9c0fcd7ed0a976d153fde15dd23 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 10 Nov 2025 07:35:56 +0000 Subject: [PATCH 1762/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 1 - package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 508 +++++------------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 242 insertions(+), 455 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index eee4e99dd25b..2d5430e7d332 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@75d22eaeab72c5f03da29038c3f367a36c42017a + - uses: angular/dev-infra/github-actions/branch-manager@7fa1ab52a99168e16ea3722e4b7313839daea490 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f792d983cdd9..eb976d5fe8f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 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@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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 238eb0ea5d88..632f8e07bfd0 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@75d22eaeab72c5f03da29038c3f367a36c42017a + - uses: angular/dev-infra/github-actions/pull-request-labeling@7fa1ab52a99168e16ea3722e4b7313839daea490 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@75d22eaeab72c5f03da29038c3f367a36c42017a + - uses: angular/dev-infra/github-actions/post-approval-changes@7fa1ab52a99168e16ea3722e4b7313839daea490 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index bb703875e0d7..a1d83a36a457 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@75d22eaeab72c5f03da29038c3f367a36c42017a + - uses: angular/dev-infra/github-actions/feature-request@7fa1ab52a99168e16ea3722e4b7313839daea490 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index c062d0ebfc58..abd375f1eafb 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@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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 93bb992d9cc1..384c1fbfffa8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/linting/licenses@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75d22eaeab72c5f03da29038c3f367a36c42017a + uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 - 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/MODULE.bazel b/MODULE.bazel index 14815454bd2b..1df5f3b77a8a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "75d22eaeab72c5f03da29038c3f367a36c42017a", + commit = "7fa1ab52a99168e16ea3722e4b7313839daea490", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 30bafcb05d7c..fdd0f14611d9 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -28,7 +28,6 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.7.0/MODULE.bazel": "ac879ee86f124c827e4e87942b3797ff4aaf90360eb9d7bff5321fc45d5ebefb", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/MODULE.bazel": "b2e0576866a3f1cca3286ad1efefa4099a6546a3239dffa802a551521e8fbf3d", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/source.json": "5e68a29bef5b3609a60f2b3f7be02023d6ad8224c3501cc1b51ba66791f2f332", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", diff --git a/package.json b/package.json index 98de07e11c4f..1e987da3a001 100644 --- a/package.json +++ b/package.json @@ -44,20 +44,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-rc.0", - "@angular/cdk": "21.0.0-rc.0", - "@angular/common": "21.0.0-rc.0", - "@angular/compiler": "21.0.0-rc.0", - "@angular/compiler-cli": "21.0.0-rc.0", - "@angular/core": "21.0.0-rc.0", - "@angular/forms": "21.0.0-rc.0", - "@angular/localize": "21.0.0-rc.0", - "@angular/material": "21.0.0-rc.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2a91d0e8e153f50fc072455c6dd52ac3fea664e6", - "@angular/platform-browser": "21.0.0-rc.0", - "@angular/platform-server": "21.0.0-rc.0", - "@angular/router": "21.0.0-rc.0", - "@angular/service-worker": "21.0.0-rc.0", + "@angular/animations": "21.0.0-rc.1", + "@angular/cdk": "21.0.0-rc.1", + "@angular/common": "21.0.0-rc.1", + "@angular/compiler": "21.0.0-rc.1", + "@angular/compiler-cli": "21.0.0-rc.1", + "@angular/core": "21.0.0-rc.1", + "@angular/forms": "21.0.0-rc.1", + "@angular/localize": "21.0.0-rc.1", + "@angular/material": "21.0.0-rc.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#39869500e7723f91e1797f575d663afaff1b97e7", + "@angular/platform-browser": "21.0.0-rc.1", + "@angular/platform-server": "21.0.0-rc.1", + "@angular/router": "21.0.0-rc.1", + "@angular/service-worker": "21.0.0-rc.1", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 93ceb8f65d91..467d57e5957b 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-rc.0", - "@angular/compiler": "21.0.0-rc.0", - "@angular/core": "21.0.0-rc.0", - "@angular/platform-browser": "21.0.0-rc.0", - "@angular/platform-server": "21.0.0-rc.0", - "@angular/router": "21.0.0-rc.0", + "@angular/common": "21.0.0-rc.1", + "@angular/compiler": "21.0.0-rc.1", + "@angular/core": "21.0.0-rc.1", + "@angular/platform-browser": "21.0.0-rc.1", + "@angular/platform-server": "21.0.0-rc.1", + "@angular/router": "21.0.0-rc.1", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index ca009456954a..99590defe5f7 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": "21.0.0-rc.0", - "@angular/compiler-cli": "21.0.0-rc.0", + "@angular/compiler": "21.0.0-rc.1", + "@angular/compiler-cli": "21.0.0-rc.1", "typescript": "5.9.3", "webpack": "5.102.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3272d8e6710d..896b428702d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,47 +21,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0 + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1 '@angular/compiler-cli': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.0) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.1) '@angular/material': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(8360cac76c139f5acb8182abdf456916) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2a91d0e8e153f50fc072455c6dd52ac3fea664e6 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#39869500e7723f91e1797f575d663afaff1b97e7 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/39869500e7723f91e1797f575d663afaff1b97e7(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.0)(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.1)(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -443,7 +443,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -540,23 +540,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0 + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1 '@angular/core': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.0)(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.1)(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -771,7 +771,7 @@ importers: version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -869,11 +869,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0 + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1 '@angular/compiler-cli': - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -982,46 +982,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-rc.0': - resolution: {integrity: sha512-uIi4hoKTB2RYoFzyMWGLskVnHmM0Xn1KgHcc9KJ+OxrYlxSxxKmzo1YG2iIcMx/R76HJk7ug/dkg+HbKcjpQeQ==} + '@angular/animations@21.0.0-rc.1': + resolution: {integrity: sha512-DrIWB+k/hzi67XQkQBy3bvFTpk9xfkeoQOXms1RynKIvydtqKZGNMJZo/zmSS2Uj5J0j9HjfslZPmHZPqpG16w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.1 - '@angular/cdk@21.0.0-rc.0': - resolution: {integrity: sha512-bcUYmpXhjOdNmIzbDi9K1Zx394IVDpUoi4SVC9hjUJSlrveFSwm+RmllCYEYZnKnitG7MICI3F6xH/nc+Xkx/Q==} + '@angular/cdk@21.0.0-rc.1': + resolution: {integrity: sha512-7h4BWSg/Ah6S/YSf8IxSCQNTBSkKJNvJInRIoyQa1eDt3rMLOOu93nbrjyiwDbuuENeqrpiRJbulZDyO67LQEw==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-rc.0': - resolution: {integrity: sha512-wZg/eNYdI/u6zU5DnfXM5tAmjByTXlPlWk4ve9LMZMyKAaw8jqrN0k210519D72saytkE7TPohL2aFGr/O8LGw==} + '@angular/common@21.0.0-rc.1': + resolution: {integrity: sha512-CDOqiXAOGt8owBKOWXnvcmt1ZhKgEybgWTn44cLFPdFK13l6ial09R5dDe+tqKAT2FOwB0AXpB9My3jEn3FHCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-rc.0': - resolution: {integrity: sha512-sEljEVfXxMrSq4cBbbmCbgAhr+NKU971bXxGVm4JHJ7gKLW5s5S7r/rlHGMVCe3GfBwydRF8UrtE0Q2SZltEAg==} + '@angular/compiler-cli@21.0.0-rc.1': + resolution: {integrity: sha512-tYBqNDsDOPTF11ol3CHwe1/rNmhC94jM8P6vBMEY7YTfriH6awD3scvFAuJWz3VS1ojzhNu/eX2rzzOcCCC92A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-rc.0 + '@angular/compiler': 21.0.0-rc.1 typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-rc.0': - resolution: {integrity: sha512-zFk1JOlOjQx1ZPyfN4UoPz2kF2B2XXfr3J+5qDqxPavv0bUa/zo/BeC8s12r53kRB3kmLQblcoyzt+KbFkLrzA==} + '@angular/compiler@21.0.0-rc.1': + resolution: {integrity: sha512-b3RlK+Dznn08rbTg4Oi/ICCPO6A0Vvnb+FsAxeLRtYx9TGFhWcaOPI9N/okU/lPb7Js4HYX9SoVaN/5S3hh8Lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-rc.0': - resolution: {integrity: sha512-dRhlcCfrAbUsNycZ7eqxu54knq1ejKmyznmaJTwqA7sHIfgxC4C78tE2r6rylNECcvvB3EySV749yLHJJNDNfw==} + '@angular/core@21.0.0-rc.1': + resolution: {integrity: sha512-ZPV+9usViVFnHPrd1NECrLjERYTRf3ycjG6XH6cCeneWxj8nFtvuNdLOVhWT5fvPYVJfdfYrwG52+Oi36AkaSg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-rc.0 + '@angular/compiler': 21.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1030,75 +1030,75 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-rc.0': - resolution: {integrity: sha512-ppGTKrFYAwXHwAXPoqkj63L7n6QvLgpLlp/No6mvDnn9/x34ZrcabvZWuxqj64+Mf1JJZSK8hYKbhzNz/zskcA==} + '@angular/forms@21.0.0-rc.1': + resolution: {integrity: sha512-xxs+TRLbKHPACrxLZUve/yAza0h3+PU4xMoQhBDLgQQk4145wvGc2c/t5CNwBso7C4pB5zaxRsEt2DLecuFexg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.0 - '@angular/core': 21.0.0-rc.0 - '@angular/platform-browser': 21.0.0-rc.0 + '@angular/common': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.1 + '@angular/platform-browser': 21.0.0-rc.1 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-rc.0': - resolution: {integrity: sha512-KtjeHQ9qYj2K8Ek1QzBFaZlv9YMfZoXxjNtOmJ8HNAEHoyAf14lUBNAjw4OCKDccTT42TTeJ631BB5BtOGibrw==} + '@angular/localize@21.0.0-rc.1': + resolution: {integrity: sha512-+jEmbmjQ4z694NytqwDRyudG3Ew+fn/18AUR/i4xDlgaWRSfgSPmiMlyimBvByOvci0K5VX8NvT5Qwf7BcHEGw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-rc.0 - '@angular/compiler-cli': 21.0.0-rc.0 + '@angular/compiler': 21.0.0-rc.1 + '@angular/compiler-cli': 21.0.0-rc.1 - '@angular/material@21.0.0-rc.0': - resolution: {integrity: sha512-ohBIZLdMCQ8VInX+AMD6WIRzm4iR4c42at+6cISNe04qJsCxaFw8yoIK9wWOLURKxDa7tYiRseFM8vllB/78Ag==} + '@angular/material@21.0.0-rc.1': + resolution: {integrity: sha512-NJi30CrDu9h2vAMMq7xOG8XpAZ4CdSezO+Ss+ZZ5fsD9LEaR7HiLj1SUtObp12wakGa0vBj/rFkHlbaxyEZF1Q==} peerDependencies: - '@angular/cdk': 21.0.0-rc.0 + '@angular/cdk': 21.0.0-rc.1 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/2a91d0e8e153f50fc072455c6dd52ac3fea664e6': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6} - version: 0.0.0-75d22eaeab72c5f03da29038c3f367a36c42017a + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/39869500e7723f91e1797f575d663afaff1b97e7': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/39869500e7723f91e1797f575d663afaff1b97e7} + version: 0.0.0-7fa1ab52a99168e16ea3722e4b7313839daea490 hasBin: true - '@angular/platform-browser@21.0.0-rc.0': - resolution: {integrity: sha512-h6zj3cMXkXlKEAk2O1tAYc1rFJfC7zHEUmWfB/9KeGxDaBzf2A9LRLcsiApUx0Jt8qnGxPRGZq28vuAiXBCyiA==} + '@angular/platform-browser@21.0.0-rc.1': + resolution: {integrity: sha512-1uu2JPC+da9hJfVOvoCSKxDYiyw9XPG6bVgNn1j/UEyUy3knvRMU/L/iDlLDQiSX1hLu0NdWF58eNbgHxqo+Fg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-rc.0 - '@angular/common': 21.0.0-rc.0 - '@angular/core': 21.0.0-rc.0 + '@angular/animations': 21.0.0-rc.1 + '@angular/common': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-rc.0': - resolution: {integrity: sha512-r2KiSmCepQpzSw+54r9Axh5mW59chcGa7r6/OcSJ+Jnlnw8k3V/tJYy0UPIh16qWi4pUVoRimyjE/0nZe/2C/g==} + '@angular/platform-server@21.0.0-rc.1': + resolution: {integrity: sha512-nQTpOOIeTCmBqd9g/txoQjhcxNYaKZ3gXR84O0lIY2nQ1jzHxKzQueDgY3C19+2etaZWNpHzCMfrF3oAMeCdsA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.0 - '@angular/compiler': 21.0.0-rc.0 - '@angular/core': 21.0.0-rc.0 - '@angular/platform-browser': 21.0.0-rc.0 + '@angular/common': 21.0.0-rc.1 + '@angular/compiler': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.1 + '@angular/platform-browser': 21.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-rc.0': - resolution: {integrity: sha512-iel8D+n+aqsrKgUvGJbBvNhLl10DKxEfTy6qIKk34FP01wgOJ3ni/pvnY3KYzEfGPGtAwuiM5hV0lDj+RlC+vw==} + '@angular/router@21.0.0-rc.1': + resolution: {integrity: sha512-TGpvzEh6PgOwEKCKffQQQPB08MSnO3n/JSkAgWliEMQpnbP9aLFFyInFnlNxD2j2IhJ7xbneIrywTxBxcGJhrw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.0 - '@angular/core': 21.0.0-rc.0 - '@angular/platform-browser': 21.0.0-rc.0 + '@angular/common': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.1 + '@angular/platform-browser': 21.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-rc.0': - resolution: {integrity: sha512-eXpwMxVqsnatT7cAgEbvT2wsP3I6MMAGDQ0Tv8XHNlGgXNnf61y232SHxOjA5Zg4d4WyaPEp2WEv4o2Uq/P0cQ==} + '@angular/service-worker@21.0.0-rc.1': + resolution: {integrity: sha512-z8Sf9xnkcfEp67O+weE+IDDMgjE2Plspw1Su8v7g7LogkPAP9QiNBoKIyENjxs0VwOXQhosgU4lujBNK5XITqg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-rc.0 + '@angular/core': 21.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -2350,23 +2350,10 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/ansi@1.0.1': - resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} - engines: {node: '>=18'} - '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/checkbox@4.3.0': - resolution: {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/checkbox@4.3.1': resolution: {integrity: sha512-rOcLotrptYIy59SGQhKlU0xBg1vvcVl2FdPIEclUvKHh0wo12OfGkId/01PIMJ/V+EimJ77t085YabgnQHBa5A==} engines: {node: '>=18'} @@ -2385,15 +2372,6 @@ packages: '@types/node': optional: true - '@inquirer/core@10.3.0': - resolution: {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/core@10.3.1': resolution: {integrity: sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w==} engines: {node: '>=18'} @@ -2403,15 +2381,6 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.21': - resolution: {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/editor@4.2.22': resolution: {integrity: sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A==} engines: {node: '>=18'} @@ -2421,15 +2390,6 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.21': - resolution: {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/expand@4.0.22': resolution: {integrity: sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q==} engines: {node: '>=18'} @@ -2439,15 +2399,6 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@1.0.2': - resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/external-editor@1.0.3': resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} @@ -2457,23 +2408,10 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.14': - resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} - engines: {node: '>=18'} - '@inquirer/figures@1.0.15': resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/input@4.2.5': - resolution: {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/input@4.3.0': resolution: {integrity: sha512-h4fgse5zeGsBSW3cRQqu9a99OXRdRsNCvHoBqVmz40cjYjYFzcfwD0KA96BHIPlT7rZw0IpiefQIqXrjbzjS4Q==} engines: {node: '>=18'} @@ -2483,15 +2421,6 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.21': - resolution: {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/number@3.0.22': resolution: {integrity: sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg==} engines: {node: '>=18'} @@ -2501,15 +2430,6 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.21': - resolution: {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/password@4.0.22': resolution: {integrity: sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g==} engines: {node: '>=18'} @@ -2546,24 +2466,6 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.9': - resolution: {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/search@3.2.0': - resolution: {integrity: sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/search@3.2.1': resolution: {integrity: sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA==} engines: {node: '>=18'} @@ -2573,15 +2475,6 @@ packages: '@types/node': optional: true - '@inquirer/select@4.4.0': - resolution: {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/select@4.4.1': resolution: {integrity: sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q==} engines: {node: '>=18'} @@ -7231,10 +7124,6 @@ packages: resolution: {integrity: sha512-SYU3HBAdF4psHEL/+jXDKHO95/m5P2RvboHT2Y0WtTttvJLP4H/2WS9WlQPFvF6C8d6SpLw8vjCnQOnVIVOSJQ==} engines: {node: '>=18'} - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} - mute-stream@3.0.0: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9561,28 +9450,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-rc.0 + '@angular/compiler': 21.0.0-rc.1 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9596,31 +9485,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-rc.0': + '@angular/compiler@21.0.0-rc.1': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-rc.0 + '@angular/compiler': 21.0.0-rc.1 zone.js: 0.15.1 - '@angular/forms@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.0)': + '@angular/localize@21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.1)': dependencies: - '@angular/compiler': 21.0.0-rc.0 - '@angular/compiler-cli': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) + '@angular/compiler': 21.0.0-rc.1 + '@angular/compiler-cli': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9628,17 +9517,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-rc.0(e2f5ff25075af2c77f7bbc1ff15b3f22)': + '@angular/material@21.0.0-rc.1(8360cac76c139f5acb8182abdf456916)': dependencies: - '@angular/cdk': 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2a91d0e8e153f50fc072455c6dd52ac3fea664e6(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/39869500e7723f91e1797f575d663afaff1b97e7(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -9699,35 +9588,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.0)(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.1)(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-rc.0 - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-rc.0(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.0(@angular/animations@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-rc.0(@angular/core@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -11166,20 +11055,8 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/ansi@1.0.1': {} - '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.0(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/checkbox@4.3.1(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11197,19 +11074,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/core@10.3.0(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.10.0) - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/core@10.3.1(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11223,14 +11087,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/editor@4.2.21(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/external-editor': 1.0.2(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/editor@4.2.22(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11239,14 +11095,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/expand@4.0.21(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/expand@4.0.22(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11255,13 +11103,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/external-editor@1.0.2(@types/node@24.10.0)': - dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.0 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/external-editor@1.0.3(@types/node@24.10.0)': dependencies: chardet: 2.1.1 @@ -11269,17 +11110,8 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/figures@1.0.14': {} - '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.2.5(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/input@4.3.0(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11287,13 +11119,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/number@3.0.21(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/number@3.0.22(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11301,14 +11126,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/password@4.0.21(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/password@4.0.22(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11334,16 +11151,16 @@ snapshots: '@inquirer/prompts@7.9.0(@types/node@24.10.0)': dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.10.0) + '@inquirer/checkbox': 4.3.1(@types/node@24.10.0) '@inquirer/confirm': 5.1.20(@types/node@24.10.0) - '@inquirer/editor': 4.2.21(@types/node@24.10.0) - '@inquirer/expand': 4.0.21(@types/node@24.10.0) - '@inquirer/input': 4.2.5(@types/node@24.10.0) - '@inquirer/number': 3.0.21(@types/node@24.10.0) - '@inquirer/password': 4.0.21(@types/node@24.10.0) - '@inquirer/rawlist': 4.1.9(@types/node@24.10.0) - '@inquirer/search': 3.2.0(@types/node@24.10.0) - '@inquirer/select': 4.4.0(@types/node@24.10.0) + '@inquirer/editor': 4.2.22(@types/node@24.10.0) + '@inquirer/expand': 4.0.22(@types/node@24.10.0) + '@inquirer/input': 4.3.0(@types/node@24.10.0) + '@inquirer/number': 3.0.22(@types/node@24.10.0) + '@inquirer/password': 4.0.22(@types/node@24.10.0) + '@inquirer/rawlist': 4.1.10(@types/node@24.10.0) + '@inquirer/search': 3.2.1(@types/node@24.10.0) + '@inquirer/select': 4.4.1(@types/node@24.10.0) optionalDependencies: '@types/node': 24.10.0 @@ -11355,23 +11172,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/rawlist@4.1.9(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - - '@inquirer/search@3.2.0(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/search@3.2.1(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11381,16 +11181,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/select@4.4.0(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.10.0) - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/select@4.4.1(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -16718,8 +16508,6 @@ snapshots: array-union: 3.0.1 minimatch: 9.0.5 - mute-stream@2.0.0: {} - mute-stream@3.0.0: {} nanocolors@0.2.13: {} @@ -16744,10 +16532,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-rc.0(@angular/compiler@21.0.0-rc.0)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.52.5) '@rollup/wasm-node': 4.52.5 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 382d9438b016..611187acb45c 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#6ac4d0bcc953794d22d66b521ac608fe385e0a7a", - "@angular/cdk": "github:angular/cdk-builds#a118b7b8d97e031d7b7205cbc14e3de0a5b1038a", - "@angular/common": "github:angular/common-builds#098ac8c5dc62dc2069672aa482fb47f84cb88b8a", - "@angular/compiler": "github:angular/compiler-builds#a3729e5a3baf9347a63c4ca1245264d445bbfd27", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#0bc40efbd87d4cbf2011874237032ab0870ac5a6", - "@angular/core": "github:angular/core-builds#d0375d5cb400fefc8396dd06932a8898b453c20a", - "@angular/forms": "github:angular/forms-builds#daf7fbe7f8559d46ef091f89fe00aab69af7cf20", - "@angular/language-service": "github:angular/language-service-builds#05d3d4a00eb76a4d543e4e5f2a34608d197c851a", - "@angular/localize": "github:angular/localize-builds#c53812136dd2f9d3e238d310784ff54d40d1ae81", - "@angular/material": "github:angular/material-builds#03117cb9d69fae1a4a7c16c5b118b8c1fe3c43da", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ca1026c9e2bdd9ce601de1b16fe29a10065f0d66", - "@angular/platform-browser": "github:angular/platform-browser-builds#8841c54bb7303f5278aeafaa7936f43a0f045ccf", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#d39a9009cfefe54454e088ab155682425c1cfc08", - "@angular/platform-server": "github:angular/platform-server-builds#767b4aaa5d29634cd06707ab825138cc1838f905", - "@angular/router": "github:angular/router-builds#afa6892ff46ed2e11fcb6d2cbb091df7f2f62161", - "@angular/service-worker": "github:angular/service-worker-builds#48315dc2e237cf776438482b241f87f19a616cba" + "@angular/animations": "github:angular/animations-builds#af2c4cbea4e79fedf24464e7b1fb4bfabdc7c7a5", + "@angular/cdk": "github:angular/cdk-builds#84c7240a385b3dd7c74d7ec0a6192cdbfcb6ba5d", + "@angular/common": "github:angular/common-builds#668908415ca4f984639884c6f42f4b46589a79f9", + "@angular/compiler": "github:angular/compiler-builds#3ce70ea6a95fad22b081b7b0a8188a323120d015", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#7a51de0da35052e0f27de12423495ab07478c384", + "@angular/core": "github:angular/core-builds#7f65418fd4fa19bd810fbc3580dff5acf0a8bae3", + "@angular/forms": "github:angular/forms-builds#f2672a2476da447d865090c85e373be8e77f859e", + "@angular/language-service": "github:angular/language-service-builds#e4f7504eca233bca75c33d6bd567c261f89482f9", + "@angular/localize": "github:angular/localize-builds#bd971f2ef19f610289f00f0b70b8257d547d50e6", + "@angular/material": "github:angular/material-builds#7fc212d23db0b5baad85a96c7bbe552e168ee34c", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#15acb52d0884719e6bc2cdb3a2ca3f27987ec008", + "@angular/platform-browser": "github:angular/platform-browser-builds#8f8db638f75f84b5e1c95772771c195bbe646afe", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#10c7d453cd58e4b592b7d0e47821e3c1c01dee0c", + "@angular/platform-server": "github:angular/platform-server-builds#63e4487fea0e9bcca59f460f41ac305a2e524ef8", + "@angular/router": "github:angular/router-builds#77d67925e44f2e83206521c4e0633fd2deafaa18", + "@angular/service-worker": "github:angular/service-worker-builds#f4f48bf4dfb00254c607f787ae3e3a407e3af609" } } From 42ebf94db9ad4c6f81cbbfd436b6f0a2d3cd1db8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 10 Nov 2025 22:38:13 +0000 Subject: [PATCH 1763/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 48 +++++------------ tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 85 insertions(+), 109 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 2d5430e7d332..69a28df441f0 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@7fa1ab52a99168e16ea3722e4b7313839daea490 + - uses: angular/dev-infra/github-actions/branch-manager@7b0cc896370708d4849b3e37167f9b47137ba22c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eb976d5fe8f2..4a3aac594ff9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c 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@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - 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 632f8e07bfd0..cb225286e4c5 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@7fa1ab52a99168e16ea3722e4b7313839daea490 + - uses: angular/dev-infra/github-actions/pull-request-labeling@7b0cc896370708d4849b3e37167f9b47137ba22c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@7fa1ab52a99168e16ea3722e4b7313839daea490 + - uses: angular/dev-infra/github-actions/post-approval-changes@7b0cc896370708d4849b3e37167f9b47137ba22c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index a1d83a36a457..e572e75c8c97 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@7fa1ab52a99168e16ea3722e4b7313839daea490 + - uses: angular/dev-infra/github-actions/feature-request@7b0cc896370708d4849b3e37167f9b47137ba22c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index abd375f1eafb..7f586021b73a 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@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - 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@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - 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 384c1fbfffa8..2d24c808caa6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/linting/licenses@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c - 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@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7fa1ab52a99168e16ea3722e4b7313839daea490 + uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c - 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/MODULE.bazel b/MODULE.bazel index 1df5f3b77a8a..5c3a52afa584 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "7fa1ab52a99168e16ea3722e4b7313839daea490", + commit = "7b0cc896370708d4849b3e37167f9b47137ba22c", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 1e987da3a001..ebd3c81bf6a8 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-rc.1", "@angular/localize": "21.0.0-rc.1", "@angular/material": "21.0.0-rc.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#39869500e7723f91e1797f575d663afaff1b97e7", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#55d321e3273d0eb4bf0329db7c315ebb142978fb", "@angular/platform-browser": "21.0.0-rc.1", "@angular/platform-server": "21.0.0-rc.1", "@angular/router": "21.0.0-rc.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 896b428702d8..1ed81823bfbf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,8 +48,8 @@ importers: specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(8360cac76c139f5acb8182abdf456916) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#39869500e7723f91e1797f575d663afaff1b97e7 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/39869500e7723f91e1797f575d663afaff1b97e7(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#55d321e3273d0eb4bf0329db7c315ebb142978fb + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/55d321e3273d0eb4bf0329db7c315ebb142978fb(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1058,9 +1058,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/39869500e7723f91e1797f575d663afaff1b97e7': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/39869500e7723f91e1797f575d663afaff1b97e7} - version: 0.0.0-7fa1ab52a99168e16ea3722e4b7313839daea490 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/55d321e3273d0eb4bf0329db7c315ebb142978fb': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/55d321e3273d0eb4bf0329db7c315ebb142978fb} + version: 0.0.0-7b0cc896370708d4849b3e37167f9b47137ba22c hasBin: true '@angular/platform-browser@21.0.0-rc.1': @@ -2304,8 +2304,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.28.0': - resolution: {integrity: sha512-0pfZ1EWQsM9kINsL+mFKJvpzM6NRHS9t360S1MzKq4JtIwTj/RbsPpC/K5wpKiPy9PC+J+bsz/9gvaL51++KrA==} + '@google/genai@1.29.0': + resolution: {integrity: sha512-cQP7Ssa06W+MSAyVtL/812FBtZDoDehnFObIpK1xo5Uv4XvqBcVZ8OhXgihOIXWn7xvPQGvLclR8+yt3Ysnd9g==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.20.1 @@ -2448,15 +2448,6 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.9.0': - resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/rawlist@4.1.10': resolution: {integrity: sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw==} engines: {node: '>=18'} @@ -9527,13 +9518,13 @@ 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/39869500e7723f91e1797f575d663afaff1b97e7(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/55d321e3273d0eb4bf0329db7c315ebb142978fb(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.28.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.9.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) + '@google/genai': 1.29.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 7.10.0(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -11007,7 +10998,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.28.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.29.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -11149,21 +11140,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/prompts@7.9.0(@types/node@24.10.0)': - dependencies: - '@inquirer/checkbox': 4.3.1(@types/node@24.10.0) - '@inquirer/confirm': 5.1.20(@types/node@24.10.0) - '@inquirer/editor': 4.2.22(@types/node@24.10.0) - '@inquirer/expand': 4.0.22(@types/node@24.10.0) - '@inquirer/input': 4.3.0(@types/node@24.10.0) - '@inquirer/number': 3.0.22(@types/node@24.10.0) - '@inquirer/password': 4.0.22(@types/node@24.10.0) - '@inquirer/rawlist': 4.1.10(@types/node@24.10.0) - '@inquirer/search': 3.2.1(@types/node@24.10.0) - '@inquirer/select': 4.4.1(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/rawlist@4.1.10(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 611187acb45c..acbe609ceb97 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#af2c4cbea4e79fedf24464e7b1fb4bfabdc7c7a5", - "@angular/cdk": "github:angular/cdk-builds#84c7240a385b3dd7c74d7ec0a6192cdbfcb6ba5d", - "@angular/common": "github:angular/common-builds#668908415ca4f984639884c6f42f4b46589a79f9", - "@angular/compiler": "github:angular/compiler-builds#3ce70ea6a95fad22b081b7b0a8188a323120d015", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#7a51de0da35052e0f27de12423495ab07478c384", - "@angular/core": "github:angular/core-builds#7f65418fd4fa19bd810fbc3580dff5acf0a8bae3", - "@angular/forms": "github:angular/forms-builds#f2672a2476da447d865090c85e373be8e77f859e", - "@angular/language-service": "github:angular/language-service-builds#e4f7504eca233bca75c33d6bd567c261f89482f9", - "@angular/localize": "github:angular/localize-builds#bd971f2ef19f610289f00f0b70b8257d547d50e6", - "@angular/material": "github:angular/material-builds#7fc212d23db0b5baad85a96c7bbe552e168ee34c", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#15acb52d0884719e6bc2cdb3a2ca3f27987ec008", - "@angular/platform-browser": "github:angular/platform-browser-builds#8f8db638f75f84b5e1c95772771c195bbe646afe", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#10c7d453cd58e4b592b7d0e47821e3c1c01dee0c", - "@angular/platform-server": "github:angular/platform-server-builds#63e4487fea0e9bcca59f460f41ac305a2e524ef8", - "@angular/router": "github:angular/router-builds#77d67925e44f2e83206521c4e0633fd2deafaa18", - "@angular/service-worker": "github:angular/service-worker-builds#f4f48bf4dfb00254c607f787ae3e3a407e3af609" + "@angular/animations": "github:angular/animations-builds#a444fdf6d75944345b749ae6cb31367fe23f1846", + "@angular/cdk": "github:angular/cdk-builds#082ab7e799952e0b764b1e690529159e8017cfd6", + "@angular/common": "github:angular/common-builds#6f726643ffe0c6c03921752517888c6aa3b6f7f8", + "@angular/compiler": "github:angular/compiler-builds#335a7f9069545cb1316c8bd0f093f679e4372de6", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#99806e1c441448c050414a47aef822d07f5f31f5", + "@angular/core": "github:angular/core-builds#f55c68c9d7c765839bd99dacabf18fc463700f04", + "@angular/forms": "github:angular/forms-builds#daf34399014193916e5f06e476f89275e775e537", + "@angular/language-service": "github:angular/language-service-builds#ef5179ed03d5032463ca5490fdce1ecc75a3f90a", + "@angular/localize": "github:angular/localize-builds#ca8ec68a7951ce0b5daab875585f9c69f379433f", + "@angular/material": "github:angular/material-builds#52430967c8c6f854d23d8dd4fc79811d8e0f22e9", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#c820083deebe465562209bd3cae8dbabf496cc40", + "@angular/platform-browser": "github:angular/platform-browser-builds#cf98f8940ac52d81d540dfdc637d3b3cbc2b1bd7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5187e2cbfc9fc6abc61b21dcb28f4cbf9e417485", + "@angular/platform-server": "github:angular/platform-server-builds#45a0ecd5779e2142de9123289aa72bc39e858160", + "@angular/router": "github:angular/router-builds#ca73dca5fe6051d9cc044ade5f57810edc89f53e", + "@angular/service-worker": "github:angular/service-worker-builds#4a879286594dbd62b13d19075b5bf4a843148eec" } } From 81f7e9245f0618883c8591661e33f48c7827807b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 10 Nov 2025 16:24:47 +0000 Subject: [PATCH 1764/2162] build: bump min version of vitest to 4.0.8 This bump the vitest peer dep to 4.0.8 --- packages/angular/build/package.json | 2 +- .../schematics/angular/utility/latest-versions/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index b1306f2dcbd5..ba350d20a892 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -75,7 +75,7 @@ "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", "tslib": "^2.3.0", "typescript": ">=5.9 <6.0", - "vitest": "^4.0.6" + "vitest": "^4.0.8" }, "peerDependenciesMeta": { "@angular/core": { diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 0c6385202905..1e85f36f9c28 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -25,7 +25,7 @@ "tslib": "^2.3.0", "ts-node": "~10.9.0", "typescript": "~5.9.2", - "vitest": "^4.0.0", + "vitest": "^4.0.8", "zone.js": "~0.15.0" } } From 42a6da9a0c81ba507389fd0802ef6d60bc0d77d4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 10 Nov 2025 17:55:54 +0000 Subject: [PATCH 1765/2162] build: bump jsdom to `^27.1.0` This is the min supported version. --- .../schematics/angular/utility/latest-versions/package.json | 2 +- tests/legacy-cli/e2e/utils/vitest.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 1e85f36f9c28..10f2cf8eb6bd 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -15,7 +15,7 @@ "karma-jasmine-html-reporter": "~2.1.0", "karma-jasmine": "~5.1.0", "karma": "~6.4.0", - "jsdom": "^27.0.0", + "jsdom": "^27.1.0", "less": "^4.2.0", "postcss": "^8.5.3", "protractor": "~7.0.0", diff --git a/tests/legacy-cli/e2e/utils/vitest.ts b/tests/legacy-cli/e2e/utils/vitest.ts index 3f312ff29c3e..af40e66b18b1 100644 --- a/tests/legacy-cli/e2e/utils/vitest.ts +++ b/tests/legacy-cli/e2e/utils/vitest.ts @@ -3,7 +3,8 @@ import { updateJsonFile } from './project'; /** Updates the `test` builder in the current workspace to use Vitest. */ export async function applyVitestBuilder(): Promise { - await silentNpm('install', 'vitest@4.0.6', 'jsdom@27.0.0', '--save-dev'); + // These deps matches the deps in `@schematics/angular` + await silentNpm('install', 'vitest@^4.0.8', 'jsdom@^27.1.0', '--save-dev'); await updateJsonFile('angular.json', (json) => { const projects = Object.values(json['projects']); From a9acc2ee65ff8f6cde2046dfd4cf8815f500b047 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 11 Nov 2025 12:05:38 -0500 Subject: [PATCH 1766/2162] fix(@angular/cli): add schema versioning and metadata to example database This commit introduces schema versioning and metadata to the Angular CLI's example database. A new `metadata` table has been added to both the runtime and build-time example databases. This table stores key-value pairs, initially including `schema_version` and `created_at`. The `find_examples` tool now validates the `schema_version` of the loaded database. If a schema mismatch is detected, the tool throws a descriptive error message that guides the user on how to resolve the incompatibility (e.g., by updating their CLI or project's `@angular/core` package). This change improves the robustness and maintainability of the example database by: - Ensuring compatibility between the CLI and the example database schema. - Providing actionable feedback to users when schema versions are incompatible. - Laying the groundwork for future metadata additions and database evolution. --- .../cli/src/commands/mcp/tools/examples.ts | 61 ++++++++++++++++--- tools/example_db_generator.js | 14 +++++ 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts index 709bbebfc6ae..97bc71a94e8a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples.ts @@ -20,8 +20,8 @@ const findExampleInputSchema = z.object({ .describe( 'The absolute path to the `angular.json` file for the workspace. This is used to find the ' + 'version-specific code examples that correspond to the installed version of the ' + - 'Angular framework. You **MUST** get this path from the `list_projects` tool. If omitted, ' + - 'the tool will search the generic code examples bundled with the CLI.', + 'Angular framework. You **MUST** get this path from the `list_projects` tool. ' + + 'If omitted, the tool will search the generic code examples bundled with the CLI.', ), query: z .string() @@ -306,28 +306,60 @@ async function createFindExampleHandler({ logger, exampleDatabasePath }: McpTool return queryDatabase(runtimeDb, input); } - let dbPath: string | undefined; + let resolvedDbPath: string | undefined; + let dbSource: string | undefined; // First, try to get the version-specific guide. if (input.workspacePath) { const versionSpecific = await getVersionSpecificExampleDatabase(input.workspacePath, logger); if (versionSpecific) { - dbPath = versionSpecific.dbPath; + resolvedDbPath = versionSpecific.dbPath; + dbSource = versionSpecific.source; } } // If the version-specific guide was not found for any reason, fall back to the bundled version. - if (!dbPath) { - dbPath = exampleDatabasePath; + if (!resolvedDbPath) { + resolvedDbPath = exampleDatabasePath; + dbSource = 'bundled'; } - if (!dbPath) { + if (!resolvedDbPath) { // This should be prevented by the registration logic in mcp-server.ts throw new Error('Example database path is not available.'); } const { DatabaseSync } = await import('node:sqlite'); - const db = new DatabaseSync(dbPath, { readOnly: true }); + const db = new DatabaseSync(resolvedDbPath, { readOnly: true }); + + // Validate the schema version of the database. + const EXPECTED_SCHEMA_VERSION = 1; + const schemaVersionResult = db + .prepare('SELECT value FROM metadata WHERE key = ?') + .get('schema_version') as { value: string } | undefined; + const actualSchemaVersion = schemaVersionResult ? Number(schemaVersionResult.value) : undefined; + + if (actualSchemaVersion !== EXPECTED_SCHEMA_VERSION) { + db.close(); + + let errorMessage: string; + if (actualSchemaVersion === undefined) { + errorMessage = 'The example database is missing a schema version and cannot be used.'; + } else if (actualSchemaVersion > EXPECTED_SCHEMA_VERSION) { + errorMessage = + `This project's example database (version ${actualSchemaVersion})` + + ` is newer than what this version of the Angular CLI supports (version ${EXPECTED_SCHEMA_VERSION}).` + + ' Please update your `@angular/cli` package to a newer version.'; + } else { + errorMessage = + `This version of the Angular CLI (expects schema version ${EXPECTED_SCHEMA_VERSION})` + + ` requires a newer example database than the one found in this project (version ${actualSchemaVersion}).`; + } + + throw new Error( + `Incompatible example database schema from source '${dbSource}':\n${errorMessage}`, + ); + } return queryDatabase(db, input); }; @@ -571,6 +603,19 @@ async function setupRuntimeExamples(examplesPath: string): Promise const db = new DatabaseSync(':memory:'); // Create a relational table to store the structured example data. + db.exec(` + CREATE TABLE metadata ( + key TEXT PRIMARY KEY NOT NULL, + value TEXT NOT NULL + ); + `); + + db.exec(` + INSERT INTO metadata (key, value) VALUES + ('schema_version', '1'), + ('created_at', '${new Date().toISOString()}'); + `); + db.exec(` CREATE TABLE examples ( id INTEGER PRIMARY KEY, diff --git a/tools/example_db_generator.js b/tools/example_db_generator.js index 142bd1e8a7ed..052bb1afb53d 100644 --- a/tools/example_db_generator.js +++ b/tools/example_db_generator.js @@ -89,6 +89,20 @@ function generate(inPath, outPath) { } const db = new DatabaseSync(dbPath); + // Create a table to store metadata. + db.exec(` + CREATE TABLE metadata ( + key TEXT PRIMARY KEY NOT NULL, + value TEXT NOT NULL + ); + `); + + db.exec(` + INSERT INTO metadata (key, value) VALUES + ('schema_version', '1'), + ('created_at', '${new Date().toISOString()}'); + `); + // Create a relational table to store the structured example data. db.exec(` CREATE TABLE examples ( From 84a8d8a9a02f5ebe3d0b81bc38de262cafeb2ead Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 11 Nov 2025 04:07:49 +0000 Subject: [PATCH 1767/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 431 ++++++++++--------------------------------------- 1 file changed, 85 insertions(+), 346 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ed81823bfbf..1353ef327e75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -907,8 +907,8 @@ importers: packages: - '@acemir/cssom@0.9.19': - resolution: {integrity: sha512-Pp2gAQXPZ2o7lt4j0IMwNRXqQ3pagxtDj5wctL5U2Lz4oV0ocDNlkgx4DpxfyKav4S/bePuI+SMqcBSUHLy9kg==} + '@acemir/cssom@0.9.23': + resolution: {integrity: sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -2313,8 +2313,8 @@ packages: '@modelcontextprotocol/sdk': optional: true - '@grpc/grpc-js@1.14.0': - resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} + '@grpc/grpc-js@1.14.1': + resolution: {integrity: sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==} engines: {node: '>=12.10.0'} '@grpc/grpc-js@1.9.15': @@ -2484,15 +2484,6 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.9': - resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -2815,8 +2806,8 @@ packages: resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/package-json@7.0.1': - resolution: {integrity: sha512-956YUeI0YITbk2+KnirCkD19HLzES0habV+Els+dyZaVsaM6VGSiNwnRu6t3CZaqDLz4KXy2zx+0N/Zy6YjlAA==} + '@npmcli/package-json@7.0.2': + resolution: {integrity: sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==} engines: {node: ^20.17.0 || >=22.9.0} '@npmcli/promise-spawn@8.0.3': @@ -2939,8 +2930,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.37.0': - resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} + '@opentelemetry/semantic-conventions@1.38.0': + resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} '@oxc-project/types@0.96.0': @@ -3088,8 +3079,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.12': - resolution: {integrity: sha512-mP9iLFZwH+FapKJLeA7/fLqOlSUwYpMwjR1P5J23qd4e7qGJwecJccJqHYrjw33jmIZYV4dtiTHPD/J+1e7cEw==} + '@puppeteer/browsers@2.10.13': + resolution: {integrity: sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==} engines: {node: '>=18'} hasBin: true @@ -3246,250 +3237,129 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.53.1': resolution: {integrity: sha512-bxZtughE4VNVJlL1RdoSE545kc4JxL7op57KKoi59/gwuU5rV6jLWFXXc8jwgFoT6vtj+ZjO+Z2C5nrY0Cl6wA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.53.1': resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.53.1': resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.53.1': resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.53.1': resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.1': resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.53.1': resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.53.1': resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.53.1': resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.53.1': resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.53.1': resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.1': resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.1': resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.53.1': resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.53.1': resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.1': resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.53.1': resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.53.1': resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.53.1': resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.1': resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.1': resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.1': resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.52.5': - resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} + '@rollup/wasm-node@4.53.1': + resolution: {integrity: sha512-S2Vy3hXqx+j+Yo4Pks/avPv3ogXO5E5dmvpm2YhjABnYVI7r6myI9KaDzJRL64s0ZHG1044InpA9DysCIe45GQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3887,10 +3757,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.9.3 - '@typescript-eslint/types@8.46.2': - resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.46.3': resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4237,8 +4103,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.1.1: - resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -4440,8 +4306,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.1: - resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: @@ -4485,8 +4351,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.23: - resolution: {integrity: sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ==} + baseline-browser-mapping@2.8.25: + resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==} hasBin: true basic-ftp@5.0.5: @@ -4657,8 +4523,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001753: - resolution: {integrity: sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw==} + caniuse-lite@1.0.30001754: + resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4969,8 +4835,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.2: - resolution: {integrity: sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==} + cssstyle@5.3.3: + resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} engines: {node: '>=20'} custom-event@1.0.1: @@ -5263,8 +5129,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.244: - resolution: {integrity: sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==} + electron-to-chromium@1.5.249: + resolution: {integrity: sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -6209,8 +6075,8 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ip-regex@4.3.0: @@ -6597,9 +6463,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@4.0.0: - resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} - engines: {node: ^18.17.0 || >=20.5.0} + json-parse-even-better-errors@5.0.0: + resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} + engines: {node: ^20.17.0 || >=22.9.0} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7505,8 +7371,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: @@ -7750,8 +7616,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.27.0: - resolution: {integrity: sha512-yubwj2XXmTM3wRIpbhO5nCjbByPgpFHlgrsD4IK+gMPqO7/a5FfnoSXDKjmqi8A2M1Ewusz0rTI/r+IN0GU0MA==} + puppeteer-core@24.29.1: + resolution: {integrity: sha512-ErJ9qKCK+bdLvBa7QVSQTBSPm8KZbl1yC/WvhrZ0ut27hDf2QBzjDsn1IukzE1i1KtZ7NYGETOV4W1beoo9izA==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -7986,11 +7852,6 @@ packages: '@types/node': optional: true - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.53.1: resolution: {integrity: sha512-n2I0V0lN3E9cxxMqBCT3opWOiQBzRN7UG60z/WDKqdX2zHUS/39lezBcsckZFsV6fUTSnfqI7kHf60jDAPGKug==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8067,8 +7928,8 @@ packages: saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -9334,7 +9195,7 @@ packages: snapshots: - '@acemir/cssom@0.9.19': {} + '@acemir/cssom@0.9.23': {} '@actions/core@1.11.1': dependencies: @@ -10973,7 +10834,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 big.js: 7.0.1 @@ -11009,7 +10870,7 @@ snapshots: - supports-color - utf-8-validate - '@grpc/grpc-js@1.14.0': + '@grpc/grpc-js@1.14.1': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -11171,10 +11032,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/type@3.0.9(@types/node@24.10.0)': - optionalDependencies: - '@types/node': 24.10.0 - '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -11268,7 +11125,7 @@ snapshots: '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': dependencies: '@inquirer/prompts': 7.10.0(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11472,13 +11329,13 @@ snapshots: '@npmcli/node-gyp@5.0.0': {} - '@npmcli/package-json@7.0.1': + '@npmcli/package-json@7.0.2': dependencies: '@npmcli/git': 7.0.0 glob: 11.0.3 hosted-git-info: 9.0.2 - json-parse-even-better-errors: 4.0.0 - proc-log: 5.0.0 + json-parse-even-better-errors: 5.0.0 + proc-log: 6.0.0 semver: 7.7.3 validate-npm-package-license: 3.0.4 @@ -11495,7 +11352,7 @@ snapshots: '@npmcli/run-script@10.0.2': dependencies: '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.1 + '@npmcli/package-json': 7.0.2 '@npmcli/promise-spawn': 9.0.0 node-gyp: 11.5.0 proc-log: 6.0.0 @@ -11631,9 +11488,9 @@ snapshots: '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/semantic-conventions@1.37.0': {} + '@opentelemetry/semantic-conventions@1.38.0': {} '@oxc-project/types@0.96.0': {} @@ -11744,7 +11601,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.12': + '@puppeteer/browsers@2.10.13': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -11821,12 +11678,6 @@ snapshots: optionalDependencies: rollup: 4.53.1 - '@rollup/plugin-json@6.1.0(rollup@4.52.5)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) - optionalDependencies: - rollup: 4.52.5 - '@rollup/plugin-json@6.1.0(rollup@4.53.1)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.1) @@ -11861,14 +11712,6 @@ snapshots: optionalDependencies: rollup: 4.53.1 - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.52.5 - '@rollup/pluginutils@5.3.0(rollup@4.53.1)': dependencies: '@types/estree': 1.0.8 @@ -11877,139 +11720,73 @@ snapshots: optionalDependencies: rollup: 4.53.1 - '@rollup/rollup-android-arm-eabi@4.52.5': - optional: true - '@rollup/rollup-android-arm-eabi@4.53.1': optional: true - '@rollup/rollup-android-arm64@4.52.5': - optional: true - '@rollup/rollup-android-arm64@4.53.1': optional: true - '@rollup/rollup-darwin-arm64@4.52.5': - optional: true - '@rollup/rollup-darwin-arm64@4.53.1': optional: true - '@rollup/rollup-darwin-x64@4.52.5': - optional: true - '@rollup/rollup-darwin-x64@4.53.1': optional: true - '@rollup/rollup-freebsd-arm64@4.52.5': - optional: true - '@rollup/rollup-freebsd-arm64@4.53.1': optional: true - '@rollup/rollup-freebsd-x64@4.52.5': - optional: true - '@rollup/rollup-freebsd-x64@4.53.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.5': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.5': - optional: true - '@rollup/rollup-linux-arm64-musl@4.53.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.5': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.5': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.5': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.5': - optional: true - '@rollup/rollup-linux-x64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-x64-musl@4.52.5': - optional: true - '@rollup/rollup-linux-x64-musl@4.53.1': optional: true - '@rollup/rollup-openharmony-arm64@4.52.5': - optional: true - '@rollup/rollup-openharmony-arm64@4.53.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.5': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.5': - optional: true - '@rollup/rollup-win32-x64-gnu@4.53.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.5': - optional: true - '@rollup/rollup-win32-x64-msvc@4.53.1': optional: true - '@rollup/wasm-node@4.52.5': + '@rollup/wasm-node@4.53.1': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -12058,7 +11835,7 @@ snapshots: '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.3 eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12507,8 +12284,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/types@8.46.3': {} '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)': @@ -12838,7 +12613,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.27.0(bufferutil@4.0.9) + puppeteer-core: 24.29.1(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13123,7 +12898,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.1.1: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -13263,7 +13038,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.27.0 - caniuse-lite: 1.0.30001753 + caniuse-lite: 1.0.30001754 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13312,13 +13087,13 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.8.1: {} + bare-events@2.8.2: {} bare-fs@4.5.0: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.8.1) + bare-stream: 2.7.0(bare-events@2.8.2) bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: @@ -13334,11 +13109,11 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.8.1): + bare-stream@2.7.0(bare-events@2.8.2): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -13353,7 +13128,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.23: {} + baseline-browser-mapping@2.8.25: {} basic-ftp@5.0.5: {} @@ -13515,9 +13290,9 @@ snapshots: browserslist@4.27.0: dependencies: - baseline-browser-mapping: 2.8.23 - caniuse-lite: 1.0.30001753 - electron-to-chromium: 1.5.244 + baseline-browser-mapping: 2.8.25 + caniuse-lite: 1.0.30001754 + electron-to-chromium: 1.5.249 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.27.0) @@ -13624,7 +13399,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001753: {} + caniuse-lite@1.0.30001754: {} caseless@0.12.0: {} @@ -13965,7 +13740,7 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.2: + cssstyle@5.3.3: dependencies: '@asamuzakjp/css-color': 4.0.5 '@csstools/css-syntax-patches-for-csstree': 1.0.15 @@ -14219,7 +13994,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.244: {} + electron-to-chromium@1.5.249: {} emoji-regex@10.6.0: {} @@ -14622,7 +14397,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller @@ -14730,7 +14505,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15100,7 +14875,7 @@ snapshots: minimatch: 10.1.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -15152,7 +14927,7 @@ snapshots: google-gax@5.0.5(supports-color@10.2.2): dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.1 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 google-auth-library: 10.5.0(supports-color@10.2.2) @@ -15198,7 +14973,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.5.4): dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.1 protobufjs: 7.5.4 gtoken@8.0.0(supports-color@10.2.2): @@ -15491,7 +15266,7 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - ip-address@10.0.1: {} + ip-address@10.1.0: {} ip-regex@4.3.0: {} @@ -15830,9 +15605,9 @@ snapshots: jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.19 + '@acemir/cssom': 0.9.23 '@asamuzakjp/dom-selector': 6.7.4 - cssstyle: 5.3.2 + cssstyle: 5.3.3 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -15865,7 +15640,7 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@4.0.0: {} + json-parse-even-better-errors@5.0.0: {} json-schema-traverse@0.4.1: {} @@ -16216,7 +15991,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.1.1 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -16495,7 +16270,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.1 + sax: 1.4.3 optional: true negotiator@0.6.3: {} @@ -16512,8 +16287,8 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.52.5) - '@rollup/wasm-node': 4.52.5 + '@rollup/plugin-json': 6.1.0(rollup@4.53.1) + '@rollup/wasm-node': 4.53.1 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.27.0 @@ -16528,14 +16303,14 @@ snapshots: ora: 9.0.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@5.9.3) + rollup-plugin-dts: 6.2.3(rollup@4.53.1)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.93.3 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 nock@14.0.10: dependencies: @@ -16844,7 +16619,7 @@ snapshots: dependencies: '@npmcli/git': 7.0.0 '@npmcli/installed-package-contents': 3.0.0 - '@npmcli/package-json': 7.0.1 + '@npmcli/package-json': 7.0.2 '@npmcli/promise-spawn': 8.0.3 '@npmcli/run-script': 10.0.2 cacache: 20.0.1 @@ -16912,7 +16687,7 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: lru-cache: 11.2.2 minipass: 7.1.2 @@ -17183,9 +16958,9 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.27.0(bufferutil@4.0.9): + puppeteer-core@24.29.1(bufferutil@4.0.9): dependencies: - '@puppeteer/browsers': 2.10.12 + '@puppeteer/browsers': 2.10.13 chromium-bidi: 10.5.1(devtools-protocol@0.0.1521046) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1521046 @@ -17486,14 +17261,6 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.52.5 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.53.1)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17509,34 +17276,6 @@ snapshots: optionalDependencies: '@types/node': 22.19.0 - rollup@4.52.5: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 - fsevents: 2.3.3 - rollup@4.53.1: dependencies: '@types/estree': 1.0.8 @@ -17635,7 +17374,7 @@ snapshots: transitivePeerDependencies: - supports-color - sax@1.4.1: {} + sax@1.4.3: {} saxes@6.0.0: dependencies: @@ -17919,7 +17658,7 @@ snapshots: socks@2.8.7: dependencies: - ip-address: 10.0.1 + ip-address: 10.1.0 smart-buffer: 4.2.0 sonic-boom@3.8.1: @@ -19002,7 +18741,7 @@ snapshots: xml2js@0.4.23: dependencies: - sax: 1.4.1 + sax: 1.4.3 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} From 5cc8c8479a3f6959f2834145b5163ef2245c2f31 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 11 Nov 2025 22:37:22 +0000 Subject: [PATCH 1768/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 69a28df441f0..b57b0e6087fa 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@7b0cc896370708d4849b3e37167f9b47137ba22c + - uses: angular/dev-infra/github-actions/branch-manager@b14d0b01760280c36f6fcfdd31f120a465a56501 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a3aac594ff9..8944ff3c0420 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 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@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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 cb225286e4c5..b87ebdd061ce 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@7b0cc896370708d4849b3e37167f9b47137ba22c + - uses: angular/dev-infra/github-actions/pull-request-labeling@b14d0b01760280c36f6fcfdd31f120a465a56501 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@7b0cc896370708d4849b3e37167f9b47137ba22c + - uses: angular/dev-infra/github-actions/post-approval-changes@b14d0b01760280c36f6fcfdd31f120a465a56501 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index e572e75c8c97..1bfe3477cadf 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@7b0cc896370708d4849b3e37167f9b47137ba22c + - uses: angular/dev-infra/github-actions/feature-request@b14d0b01760280c36f6fcfdd31f120a465a56501 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 7f586021b73a..2958a30af87f 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@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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 2d24c808caa6..2e2c2c69b04c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/linting/licenses@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@7b0cc896370708d4849b3e37167f9b47137ba22c + uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 - 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/MODULE.bazel b/MODULE.bazel index 5c3a52afa584..8fc653eae954 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "7b0cc896370708d4849b3e37167f9b47137ba22c", + commit = "b14d0b01760280c36f6fcfdd31f120a465a56501", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index ebd3c81bf6a8..4b635ec3d0bb 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-rc.1", "@angular/localize": "21.0.0-rc.1", "@angular/material": "21.0.0-rc.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#55d321e3273d0eb4bf0329db7c315ebb142978fb", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#308cdfc2c5fb51ccb998ed7afca314da3ba49f14", "@angular/platform-browser": "21.0.0-rc.1", "@angular/platform-server": "21.0.0-rc.1", "@angular/router": "21.0.0-rc.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1353ef327e75..046e04558c75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,8 +48,8 @@ importers: specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(8360cac76c139f5acb8182abdf456916) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#55d321e3273d0eb4bf0329db7c315ebb142978fb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/55d321e3273d0eb4bf0329db7c315ebb142978fb(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#308cdfc2c5fb51ccb998ed7afca314da3ba49f14 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1058,9 +1058,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/55d321e3273d0eb4bf0329db7c315ebb142978fb': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/55d321e3273d0eb4bf0329db7c315ebb142978fb} - version: 0.0.0-7b0cc896370708d4849b3e37167f9b47137ba22c + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14} + version: 0.0.0-b14d0b01760280c36f6fcfdd31f120a465a56501 hasBin: true '@angular/platform-browser@21.0.0-rc.1': @@ -9379,7 +9379,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/55d321e3273d0eb4bf0329db7c315ebb142978fb(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index acbe609ceb97..57c199b32b22 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#a444fdf6d75944345b749ae6cb31367fe23f1846", - "@angular/cdk": "github:angular/cdk-builds#082ab7e799952e0b764b1e690529159e8017cfd6", - "@angular/common": "github:angular/common-builds#6f726643ffe0c6c03921752517888c6aa3b6f7f8", - "@angular/compiler": "github:angular/compiler-builds#335a7f9069545cb1316c8bd0f093f679e4372de6", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#99806e1c441448c050414a47aef822d07f5f31f5", - "@angular/core": "github:angular/core-builds#f55c68c9d7c765839bd99dacabf18fc463700f04", - "@angular/forms": "github:angular/forms-builds#daf34399014193916e5f06e476f89275e775e537", - "@angular/language-service": "github:angular/language-service-builds#ef5179ed03d5032463ca5490fdce1ecc75a3f90a", - "@angular/localize": "github:angular/localize-builds#ca8ec68a7951ce0b5daab875585f9c69f379433f", - "@angular/material": "github:angular/material-builds#52430967c8c6f854d23d8dd4fc79811d8e0f22e9", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#c820083deebe465562209bd3cae8dbabf496cc40", - "@angular/platform-browser": "github:angular/platform-browser-builds#cf98f8940ac52d81d540dfdc637d3b3cbc2b1bd7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5187e2cbfc9fc6abc61b21dcb28f4cbf9e417485", - "@angular/platform-server": "github:angular/platform-server-builds#45a0ecd5779e2142de9123289aa72bc39e858160", - "@angular/router": "github:angular/router-builds#ca73dca5fe6051d9cc044ade5f57810edc89f53e", - "@angular/service-worker": "github:angular/service-worker-builds#4a879286594dbd62b13d19075b5bf4a843148eec" + "@angular/animations": "github:angular/animations-builds#8022f0c2bdf43fc75cfbadaf656a789e95d84e7c", + "@angular/cdk": "github:angular/cdk-builds#6a17dcb93b22df30f6e45fc1ce8d1a9d0ea88475", + "@angular/common": "github:angular/common-builds#2e3063ff081099c38f6f75c6c654470b124e4509", + "@angular/compiler": "github:angular/compiler-builds#34a96f0f9017496fbb8ccd179436e90361ca1096", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#be06748351fac2ef4e95707d8bf3d574d4798b04", + "@angular/core": "github:angular/core-builds#e7d050646caa1eca6af745da312bd1ff6e6ecbdc", + "@angular/forms": "github:angular/forms-builds#1e917489de718befd682d527467bcbcae62b276d", + "@angular/language-service": "github:angular/language-service-builds#747c91f73b12fd4a402dda26bbb38233d9ed7dd4", + "@angular/localize": "github:angular/localize-builds#26a2c802bc77ad7586a0033001974a63ea34613b", + "@angular/material": "github:angular/material-builds#164a1490719c162e609ebee6178a7247d1c61978", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9ea9682b0c431182429a9dd793619ae97a7ce84b", + "@angular/platform-browser": "github:angular/platform-browser-builds#dfb2ceb2a82f8de1785b601a4165d69b56050ae7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0dc21af5f46446b913be79990395a0f25eb19b2b", + "@angular/platform-server": "github:angular/platform-server-builds#fc62d3e32dce1e66e11b6d1ae61aa97e173e8e5b", + "@angular/router": "github:angular/router-builds#430baf4007581c175ccd689fb79f91eec5ea7edf", + "@angular/service-worker": "github:angular/service-worker-builds#fc3059ad1be777a27fac344c04f02d59c416aea6" } } From 53ee2573b93514d84a439becf4d5cc7e8405ae1b Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 12 Nov 2025 15:16:52 +0000 Subject: [PATCH 1769/2162] build: update bazel dependencies See: https://github.com/angular/angular-cli/pull/31762 for more info --- .pnpmfile.cjs | 42 +++++++++++++++++++++++++++++++++++ MODULE.bazel | 5 +++-- MODULE.bazel.lock | 45 +++++++++++++++++++++++++++---------- package.json | 1 - pnpm-lock.yaml | 56 ++++++++++++++++++++++++----------------------- 5 files changed, 108 insertions(+), 41 deletions(-) create mode 100644 .pnpmfile.cjs diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs new file mode 100644 index 000000000000..111350ae8f9a --- /dev/null +++ b/.pnpmfile.cjs @@ -0,0 +1,42 @@ +const localPackages = new Set([ + '@angular-devkit/build-angular', + '@angular-devkit/build-webpack', + '@ngtools/webpack', +]); + +const peerDependenciesToTransform = ['webpack', 'webpack-dev-server', 'browser-sync']; + +function readPackage(pkg, context) { + // TODO(devversion): This allows us to make the peer dependencies of (e.g. webpack) a production dependency. + // because `rules_js` doesn't otherwise include the dependency in the `npm_package_store`. + // See: https://github.com/aspect-build/rules_js/issues/2226 + if (!pkg.peerDependencies || !localPackages.has(pkg.name)) { + return pkg; + } + + for (const key of peerDependenciesToTransform) { + // Any package that has a peerDependency on these deps, should instead treat the peerDependency as a + // regular dependency. + if (!pkg.peerDependencies[key]) { + continue; + } + + if (!pkg.devDependencies?.[key]) { + throw new Error( + `${key} is listed as a peerDependency in ${pkg.name}, but it is not listed in devDependencies. This is required.`, + ); + } + + pkg.dependencies ??= {}; + pkg.dependencies[key] = pkg.devDependencies[key]; + pkg.devDependencies[key] = undefined; + } + + return pkg; +} + +module.exports = { + hooks: { + readPackage, + }, +}; diff --git a/MODULE.bazel b/MODULE.bazel index 8fc653eae954..40e47430283c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.1") bazel_dep(name = "rules_nodejs", version = "6.6.0") -bazel_dep(name = "aspect_rules_js", version = "2.8.0") +bazel_dep(name = "aspect_rules_js", version = "2.8.1") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "f56849353ab74c3f5ede0efa7d0bf7266fddddcb", + commit = "74d8baec22a5ffd3a1a36bac252399fa125a6c4b", remote = "https://github.com/devversion/rules_angular.git", ) @@ -115,6 +115,7 @@ npm.npm_translate_lock( "webdriver-manager": "node ./bin/webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21", }, data = [ + "//:.pnpmfile.cjs", "//:package.json", "//:pnpm-workspace.yaml", "//modules/testing/builder:package.json", diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index fdd0f14611d9..8912a460b5a5 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -15,6 +15,7 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "852f9ebbda017572a7c113a2434592dd3b2f55cd9a0faea3d4be5a09a59e4900", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/MODULE.bazel": "276347663a25b0d5bd6cad869252bea3e160c4d980e764b15f3bae7f80b30624", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/source.json": "f42051fa42629f0e59b7ac2adf0a55749144b11f1efcd8c697f0ee247181e526", @@ -29,7 +30,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/MODULE.bazel": "b2e0576866a3f1cca3286ad1efefa4099a6546a3239dffa802a551521e8fbf3d", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/source.json": "5e68a29bef5b3609a60f2b3f7be02023d6ad8224c3501cc1b51ba66791f2f332", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/MODULE.bazel": "edcde75a1357952d3acedb6f3622614c87f730927d753af77b36c604ff407f0d", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/source.json": "6da210e9e76eda699f9ca998a6f6c48980f78589f0f6d240842de6cef96543ce", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", @@ -51,7 +53,8 @@ "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "407729e232f611c3270005b016b437005daa7b1505826798ea584169a476e878", - "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/source.json": "72bfbe19a3936675719157798de64631e9ac54c2b41f13b544b821d094f4840a", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/source.json": "895f21909c6fba01d7c17914bb6c8e135982275a1b18cdaa4e62272217ef1751", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", @@ -209,7 +212,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "YvkJWukIM5Ev6xNW6ySjp6cE2bfSLKke99BALBMT8ro=", + "bzlTransitiveDigest": "PXvA3NOvgV+GXd72C+Zd7J5oEOKpEXHsGxKvRiqCb9U=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -368,6 +371,11 @@ "aspect_tools_telemetry_report", "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" ], + [ + "aspect_rules_js~", + "bazel_lib", + "bazel_lib~" + ], [ "aspect_rules_js~", "bazel_skylib", @@ -378,6 +386,11 @@ "bazel_tools", "bazel_tools" ], + [ + "bazel_lib~", + "bazel_tools", + "bazel_tools" + ], [ "tar.bzl~", "aspect_bazel_lib", @@ -398,8 +411,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "mweOMQTBuXWZta9QVVcvPXd9OFG60cwYkTOTetZwtAA=", - "usagesDigest": "e5/bEO6uDxa5C/p576W7VqaXk+nzIKZvtUFWD9kTD9o=", + "bzlTransitiveDigest": "ZfvqwqI78+Qya3TZeBMFWtEQnzIDz8j9njbobQLxswI=", + "usagesDigest": "J526kdgX5AQ2bYrNGwe6lTrakPUSZPfyHG24PGMUG0s=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -409,11 +422,11 @@ "ruleClassName": "npm_import_rule", "attributes": { "package": "pnpm", - "version": "9.15.9", + "version": "8.15.9", "root_package": "", "link_workspace": "", "link_packages": {}, - "integrity": "sha512-aARhQYk8ZvrQHAeSMRKOmvuJ74fiaR1p5NQO7iKJiClf1GghgbrlW1hBjDolO95lpQXsfF+UA+zlzDzTfc8lMQ==", + "integrity": "sha512-SZQ0ydj90aJ5Tr9FUrOyXApjOrzuW7Fee13pDzL0e1E6ypjNXP0AHDHw20VLw4BO3M1XhQHkyik6aBYWa72fgQ==", "url": "", "commit": "", "patch_args": [ @@ -437,7 +450,7 @@ "ruleClassName": "npm_import_links", "attributes": { "package": "pnpm", - "version": "9.15.9", + "version": "8.15.9", "dev": false, "root_package": "", "link_packages": {}, @@ -494,6 +507,11 @@ "bazel_features", "bazel_features~" ], + [ + "aspect_rules_js~", + "bazel_lib", + "bazel_lib~" + ], [ "aspect_rules_js~", "bazel_skylib", @@ -514,6 +532,11 @@ "bazel_features_version", "bazel_features~~version_extension~bazel_features_version" ], + [ + "bazel_lib~", + "bazel_tools", + "bazel_tools" + ], [ "tar.bzl~", "aspect_bazel_lib", @@ -605,7 +628,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "+m2xFcbJ0y2hkJstxlIUL8Om12UzrH7gt+Fl8h5I/IA=", + "usagesDigest": "SMpx40jPXDQGAklWybhmgSAy5HdV4ZEIYFMuHxifgT0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -615,7 +638,7 @@ "ruleClassName": "tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.8.0", + "aspect_rules_js": "2.8.1", "aspect_rules_ts": "3.7.1", "aspect_rules_esbuild": "0.24.0", "aspect_tools_telemetry": "0.2.8" @@ -1119,7 +1142,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "71PwVsMlLx+RWdt1SI9nSqRHX7DX/NstWwr7/XBxEMs=", - "usagesDigest": "88RybJXEODrqz353smguedoFgMg9se+FF59/WpviJM8=", + "usagesDigest": "vDvuJNQ53pdrjDK3KsRv93SOvSUPTnB/K25YVdsZiLo=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index 4b635ec3d0bb..8786ff1ba2c0 100644 --- a/package.json +++ b/package.json @@ -169,7 +169,6 @@ } }, "resolutions": { - "typescript": "5.9.3", "undici-types": "^7.16.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 046e04558c75..f0ce09b11188 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,12 +5,13 @@ settings: excludeLinksFromLockfile: false overrides: - typescript: 5.9.3 undici-types: ^7.16.0 '@angular/build': workspace:* packageExtensionsChecksum: sha256-3L73Fw32UVtE6x5BJxJPBtQtH/mgsr31grNpdhHP1IY= +pnpmfileChecksum: sha256-uP8jbELX5QePWiOvv7dnhxXXQrLZ8/Qxn4a0akzOcCQ= + importers: .: @@ -654,6 +655,9 @@ importers: babel-loader: specifier: 10.0.0 version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.26.0)) + browser-sync: + specifier: 3.0.4 + version: 3.0.4(bufferutil@4.0.9) browserslist: specifier: ^4.26.0 version: 4.27.0 @@ -766,9 +770,6 @@ importers: '@web/test-runner': specifier: 0.20.2 version: 0.20.2(bufferutil@4.0.9) - browser-sync: - specifier: 3.0.4 - version: 3.0.4(bufferutil@4.0.9) ng-packagr: specifier: 21.0.0-rc.0 version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) @@ -788,6 +789,12 @@ importers: rxjs: specifier: 7.8.2 version: 7.8.2 + webpack: + specifier: 5.102.1 + version: 5.102.1(esbuild@0.26.0) + webpack-dev-server: + specifier: 5.2.2 + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)) devDependencies: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER @@ -795,12 +802,6 @@ importers: '@ngtools/webpack': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack - webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.26.0) - webpack-dev-server: - specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)) packages/angular_devkit/core: dependencies: @@ -864,6 +865,10 @@ importers: version: 22.0.0 packages/ngtools/webpack: + dependencies: + webpack: + specifier: 5.102.1 + version: 5.102.1(esbuild@0.26.0) devDependencies: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER @@ -877,9 +882,6 @@ importers: typescript: specifier: 5.9.3 version: 5.9.3 - webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.26.0) packages/schematics/angular: dependencies: @@ -1008,7 +1010,7 @@ packages: hasBin: true peerDependencies: '@angular/compiler': 21.0.0-rc.1 - typescript: 5.9.3 + typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true @@ -3725,20 +3727,20 @@ packages: peerDependencies: '@typescript-eslint/parser': ^8.46.3 eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/parser@8.46.3': resolution: {integrity: sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/project-service@8.46.3': resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/scope-manager@8.46.3': resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==} @@ -3748,14 +3750,14 @@ packages: resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/type-utils@8.46.3': resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@8.46.3': resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} @@ -3765,14 +3767,14 @@ packages: resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/utils@8.46.3': resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: 5.9.3 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/visitor-keys@8.46.3': resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==} @@ -4789,7 +4791,7 @@ packages: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: - typescript: 5.9.3 + typescript: '>=4.9.5' peerDependenciesMeta: typescript: optional: true @@ -7028,7 +7030,7 @@ packages: '@angular/compiler-cli': ^21.0.0-next tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: 5.9.3 + typescript: '>=5.9 <6.0' peerDependenciesMeta: tailwindcss: optional: true @@ -7840,7 +7842,7 @@ packages: engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 - typescript: 5.9.3 + typescript: ^4.5 || ^5.0 rollup-plugin-sourcemaps2@0.5.4: resolution: {integrity: sha512-XK6ITvEsKtUFN1GQbYKoqilwh1yKxTS9BLaFlVsm0IaYUYe3eVnhBWzKP4AHbkBO2BNOheGNlf407K7wCj6Rrw==} @@ -8495,7 +8497,7 @@ packages: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: - typescript: 5.9.3 + typescript: '>=4.8.4' ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -8504,7 +8506,7 @@ packages: '@swc/core': '>=1.2.50' '@swc/wasm': '>=1.2.50' '@types/node': '*' - typescript: 5.9.3 + typescript: '>=2.7' peerDependenciesMeta: '@swc/core': optional: true @@ -11933,7 +11935,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.7 + '@types/express-serve-static-core': 5.1.0 '@types/node': 22.19.0 '@types/connect@3.4.38': From edc9693fc51d8ef073166c9dcd0d47b620c7fc54 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 12 Nov 2025 05:06:17 +0000 Subject: [PATCH 1770/2162] build: update pnpm to v10.21.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8786ff1ba2c0..573969ea2ca0 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.20.0", + "packageManager": "pnpm@10.21.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.20.0" + "pnpm": "10.21.0" }, "author": "Angular Authors", "license": "MIT", From 23ff4e98a480a788985f6de4ff1204f0c938fd65 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 11 Nov 2025 09:15:39 -0500 Subject: [PATCH 1771/2162] refactor(@angular/build): improve Vitest configuration merging This commit refactors the Vitest configuration handling within the unit test builder to more reliably merge the CLI-generated configuration with a user's `vitest-base.config.ts` file. The new implementation uses Vitest's `mergeConfig` utility to create a layered configuration, ensuring that essential CLI settings (such as test entry points and in-memory file providers) are preserved while still allowing users to customize other options. This prevents user configurations from inadvertently overriding critical builder settings, leading to a more stable and predictable testing experience. --- .../unit-test/runners/vitest/executor.ts | 2 +- .../unit-test/runners/vitest/plugins.ts | 50 ++++++++++--------- .../unit-test/tests/options/browsers_spec.ts | 38 ++++---------- 3 files changed, 37 insertions(+), 53 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 510cf70545d3..21cdd05c9359 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -226,7 +226,7 @@ export class VitestExecutor implements TestExecutor { watch: null, }, plugins: [ - createVitestConfigPlugin({ + await createVitestConfigPlugin({ browser: browserOptions.browser, coverage, projectName, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 93ed6497a946..c375d182750d 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -58,7 +58,9 @@ async function findTestEnvironment( } } -export function createVitestConfigPlugin(options: VitestConfigPluginOptions): VitestPlugins[0] { +export async function createVitestConfigPlugin( + options: VitestConfigPluginOptions, +): Promise { const { include, browser, @@ -69,6 +71,8 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi projectSourceRoot, } = options; + const { mergeConfig } = await import('vitest/config'); + return { name: 'angular:vitest-configuration', async config(config) { @@ -90,17 +94,6 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi delete testConfig.include; } - // The user's setup files should be appended to the CLI's setup files. - const combinedSetupFiles = [...setupFiles]; - if (testConfig?.setupFiles) { - if (typeof testConfig.setupFiles === 'string') { - combinedSetupFiles.push(testConfig.setupFiles); - } else if (Array.isArray(testConfig.setupFiles)) { - combinedSetupFiles.push(...testConfig.setupFiles); - } - delete testConfig.setupFiles; - } - // Merge user-defined plugins from the Vitest config with the CLI's internal plugins. if (config.plugins) { const userPlugins = config.plugins.filter( @@ -115,38 +108,49 @@ export function createVitestConfigPlugin(options: VitestConfigPluginOptions): Vi if (userPlugins.length > 0) { projectPlugins.push(...userPlugins); } + delete config.plugins; } const projectResolver = createRequire(projectSourceRoot + '/').resolve; - const projectConfig: UserWorkspaceConfig = { + const projectDefaults: UserWorkspaceConfig = { + test: { + setupFiles, + globals: true, + // Default to `false` to align with the Karma/Jasmine experience. + isolate: false, + }, + optimizeDeps: { + noDiscovery: true, + include: options.optimizeDepsInclude, + }, + }; + + const { optimizeDeps, resolve } = config; + const projectOverrides: UserWorkspaceConfig = { test: { - ...testConfig, name: projectName, - setupFiles: combinedSetupFiles, include, - globals: testConfig?.globals ?? true, - // Default to `false` to align with the Karma/Jasmine experience. - isolate: testConfig?.isolate ?? false, + // CLI provider browser options override, if present ...(browser ? { browser } : {}), // If the user has not specified an environment, use a smart default. ...(!testConfig?.environment ? { environment: await findTestEnvironment(projectResolver) } : {}), }, - optimizeDeps: { - noDiscovery: true, - include: options.optimizeDepsInclude, - }, plugins: projectPlugins, + optimizeDeps, + resolve, }; + const projectBase = mergeConfig(projectDefaults, testConfig ? { test: testConfig } : {}); + const projectConfig = mergeConfig(projectBase, projectOverrides); + return { test: { coverage: await generateCoverageOption(options.coverage, projectName), // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(reporters ? ({ reporters } as any) : {}), - ...(browser ? { browser } : {}), projects: [projectConfig], }, }; diff --git a/packages/angular/build/src/builders/unit-test/tests/options/browsers_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/browsers_spec.ts index aa0b3c4368fa..afb7aee20d22 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/browsers_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/browsers_spec.ts @@ -16,53 +16,33 @@ import { } from '../setup'; describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { - xdescribe('Option: "browsers"', () => { + describe('Option: "browsers"', () => { beforeEach(async () => { setupApplicationTarget(harness); }); - it('should use jsdom when browsers is not provided', async () => { + it('should use DOM emulation when browsers is not provided', async () => { harness.useTarget('test', { ...BASE_OPTIONS, browsers: undefined, }); - const { result, logs } = await harness.executeOnce(); + const { result } = await harness.executeOnce(); expect(result?.success).toBeTrue(); - expectLog(logs, 'Using jsdom in Node.js for test execution.'); }); - it('should fail when browsers is empty', async () => { - harness.useTarget('test', { - ...BASE_OPTIONS, - browsers: [], - }); - - await expectAsync(harness.executeOnce()).toBeRejectedWithError( - /must NOT have fewer than 1 items/, - ); - }); - - it('should launch a browser when provided', async () => { + it('should fail when a browser is requested but no provider is installed', async () => { harness.useTarget('test', { ...BASE_OPTIONS, browsers: ['chrome'], }); const { result, logs } = await harness.executeOnce(); - expect(result?.success).toBeTrue(); - expectLog(logs, /Starting browser "chrome"/); - }); - - it('should launch a browser in headless mode when specified', async () => { - harness.useTarget('test', { - ...BASE_OPTIONS, - browsers: ['chromeheadless'], - }); - - const { result, logs } = await harness.executeOnce(); - expect(result?.success).toBeTrue(); - expectLog(logs, /Starting browser "chrome" in headless mode/); + expect(result?.success).toBeFalse(); + expectLog( + logs, + `The "browsers" option requires either "@vitest/browser-playwright", "@vitest/browser-webdriverio", or "@vitest/browser-preview" to be installed`, + ); }); }); }); From 576cfe0fe803e8d00dc266bfba35971267b68c8d Mon Sep 17 00:00:00 2001 From: deku-nattsu Date: Sun, 9 Nov 2025 01:24:22 +0100 Subject: [PATCH 1772/2162] refactor(@angular/build): provide component resources dependencies map on compilation initialize results --- .../compilation/angular-compilation.ts | 1 + .../angular/compilation/aot-compilation.ts | 6 +- .../angular/compilation/parallel-worker.ts | 94 ++++++++++--------- 3 files changed, 56 insertions(+), 45 deletions(-) diff --git a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts index f22e8c813ecc..ca4e869aecd5 100644 --- a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts @@ -76,6 +76,7 @@ export abstract class AngularCompilation { referencedFiles: readonly string[]; externalStylesheets?: ReadonlyMap; templateUpdates?: ReadonlyMap; + componentResourcesDependencies?: ReadonlyMap; }>; abstract emitAffectedFiles(): Iterable | Promise>; diff --git a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts index a340d602577e..32bd7c586ed2 100644 --- a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts @@ -62,6 +62,7 @@ export class AotCompilation extends AngularCompilation { referencedFiles: readonly string[]; externalStylesheets?: ReadonlyMap; templateUpdates?: ReadonlyMap; + componentResourcesDependencies?: ReadonlyMap; }> { // Dynamically load the Angular compiler CLI package const { NgtscProgram, OptimizeFor } = await AngularCompilation.loadCompilerCli(); @@ -175,13 +176,15 @@ export class AotCompilation extends AngularCompilation { findAffectedFiles(typeScriptProgram, angularCompiler, usingBuildInfo), ); + const componentResourcesDependencies = new Map(); + // Get all files referenced in the TypeScript/Angular program including component resources const referencedFiles = typeScriptProgram .getSourceFiles() .filter((sourceFile) => !angularCompiler.ignoreForEmit.has(sourceFile)) .flatMap((sourceFile) => { const resourceDependencies = angularCompiler.getResourceDependencies(sourceFile); - + componentResourcesDependencies.set(sourceFile.fileName, resourceDependencies); // Also invalidate Angular diagnostics for a source file if component resources are modified if (this.#state && hostOptions.modifiedFiles?.size) { for (const resourceDependency of resourceDependencies) { @@ -212,6 +215,7 @@ export class AotCompilation extends AngularCompilation { referencedFiles, externalStylesheets: hostOptions.externalStylesheets, templateUpdates, + componentResourcesDependencies, }; } diff --git a/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts b/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts index d67fbb9bd06c..b6eccf20e3db 100644 --- a/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts +++ b/packages/angular/build/src/tools/angular/compilation/parallel-worker.ts @@ -45,58 +45,63 @@ export async function initialize(request: InitRequest) { } }); - const { compilerOptions, referencedFiles, externalStylesheets, templateUpdates } = - await compilation.initialize( - request.tsconfig, - { - fileReplacements: request.fileReplacements, - sourceFileCache, - modifiedFiles: sourceFileCache.modifiedFiles, - transformStylesheet(data, containingFile, stylesheetFile, order, className) { - const requestId = randomUUID(); - const resultPromise = new Promise((resolve, reject) => - stylesheetRequests.set(requestId, [resolve, reject]), - ); - - request.stylesheetPort.postMessage({ - requestId, - data, - containingFile, - stylesheetFile, - order, - className, - }); - - return resultPromise; - }, - processWebWorker(workerFile, containingFile) { - Atomics.store(request.webWorkerSignal, 0, 0); - request.webWorkerPort.postMessage({ workerFile, containingFile }); - - Atomics.wait(request.webWorkerSignal, 0, 0); - const result = receiveMessageOnPort(request.webWorkerPort)?.message; - - if (result?.error) { - throw result.error; - } - - return result?.workerCodeFile ?? workerFile; - }, + const { + compilerOptions, + referencedFiles, + externalStylesheets, + templateUpdates, + componentResourcesDependencies, + } = await compilation.initialize( + request.tsconfig, + { + fileReplacements: request.fileReplacements, + sourceFileCache, + modifiedFiles: sourceFileCache.modifiedFiles, + transformStylesheet(data, containingFile, stylesheetFile, order, className) { + const requestId = randomUUID(); + const resultPromise = new Promise((resolve, reject) => + stylesheetRequests.set(requestId, [resolve, reject]), + ); + + request.stylesheetPort.postMessage({ + requestId, + data, + containingFile, + stylesheetFile, + order, + className, + }); + + return resultPromise; }, - (compilerOptions) => { - Atomics.store(request.optionsSignal, 0, 0); - request.optionsPort.postMessage(compilerOptions); + processWebWorker(workerFile, containingFile) { + Atomics.store(request.webWorkerSignal, 0, 0); + request.webWorkerPort.postMessage({ workerFile, containingFile }); - Atomics.wait(request.optionsSignal, 0, 0); - const result = receiveMessageOnPort(request.optionsPort)?.message; + Atomics.wait(request.webWorkerSignal, 0, 0); + const result = receiveMessageOnPort(request.webWorkerPort)?.message; if (result?.error) { throw result.error; } - return result?.transformedOptions ?? compilerOptions; + return result?.workerCodeFile ?? workerFile; }, - ); + }, + (compilerOptions) => { + Atomics.store(request.optionsSignal, 0, 0); + request.optionsPort.postMessage(compilerOptions); + + Atomics.wait(request.optionsSignal, 0, 0); + const result = receiveMessageOnPort(request.optionsPort)?.message; + + if (result?.error) { + throw result.error; + } + + return result?.transformedOptions ?? compilerOptions; + }, + ); return { externalStylesheets, @@ -109,6 +114,7 @@ export async function initialize(request: InitRequest) { sourceMap: compilerOptions.sourceMap, inlineSourceMap: compilerOptions.inlineSourceMap, }, + componentResourcesDependencies, }; } From 3bb9d0e74976fd97b4c19623233348facca68bf2 Mon Sep 17 00:00:00 2001 From: deku-nattsu Date: Tue, 11 Nov 2025 19:51:05 +0100 Subject: [PATCH 1773/2162] refactor(@angular/build): update private exports to allow external cache usage --- packages/angular/build/src/private.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/angular/build/src/private.ts b/packages/angular/build/src/private.ts index 5368eb3574e5..1c67c5d5226c 100644 --- a/packages/angular/build/src/private.ts +++ b/packages/angular/build/src/private.ts @@ -35,6 +35,8 @@ export { transformSupportedBrowsersToTargets } from './tools/esbuild/utils'; export { SassWorkerImplementation } from './tools/sass/sass-service'; export { SourceFileCache } from './tools/esbuild/angular/source-file-cache'; +export { Cache } from './tools/esbuild/cache'; +export { LmbdCacheStore } from './tools/esbuild/lmdb-cache-store'; export { createJitResourceTransformer } from './tools/angular/transformers/jit-resource-transformer'; export { JavaScriptTransformer } from './tools/esbuild/javascript-transformer'; From a6747cea3619112d187dcb585859278748af05e2 Mon Sep 17 00:00:00 2001 From: deku-nattsu Date: Tue, 11 Nov 2025 20:03:20 +0100 Subject: [PATCH 1774/2162] refactor(@angular/build): fix LmdbCacheStore typo --- packages/angular/build/src/private.ts | 2 +- .../build/src/tools/esbuild/angular/compiler-plugin.ts | 6 +++--- packages/angular/build/src/tools/esbuild/i18n-inliner.ts | 8 ++++---- .../angular/build/src/tools/esbuild/lmdb-cache-store.ts | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/angular/build/src/private.ts b/packages/angular/build/src/private.ts index 1c67c5d5226c..8012ad7f567a 100644 --- a/packages/angular/build/src/private.ts +++ b/packages/angular/build/src/private.ts @@ -36,7 +36,7 @@ export { SassWorkerImplementation } from './tools/sass/sass-service'; export { SourceFileCache } from './tools/esbuild/angular/source-file-cache'; export { Cache } from './tools/esbuild/cache'; -export { LmbdCacheStore } from './tools/esbuild/lmdb-cache-store'; +export { LmdbCacheStore } from './tools/esbuild/lmdb-cache-store'; export { createJitResourceTransformer } from './tools/angular/transformers/jit-resource-transformer'; export { JavaScriptTransformer } from './tools/esbuild/javascript-transformer'; 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 eb9daa3b6155..95e6694b728b 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -73,11 +73,11 @@ export function createCompilerPlugin( // Initialize a worker pool for JavaScript transformations. // Webcontainers currently do not support this persistent cache store. - let cacheStore: import('../lmdb-cache-store').LmbdCacheStore | undefined; + let cacheStore: import('../lmdb-cache-store').LmdbCacheStore | undefined; if (pluginOptions.sourceFileCache?.persistentCachePath && !process.versions.webcontainer) { try { - const { LmbdCacheStore } = await import('../lmdb-cache-store'); - cacheStore = new LmbdCacheStore( + const { LmdbCacheStore } = await import('../lmdb-cache-store'); + cacheStore = new LmdbCacheStore( path.join(pluginOptions.sourceFileCache.persistentCachePath, 'angular-compiler.db'), ); } catch (e) { diff --git a/packages/angular/build/src/tools/esbuild/i18n-inliner.ts b/packages/angular/build/src/tools/esbuild/i18n-inliner.ts index 365fbb300953..fcb439b84c5c 100644 --- a/packages/angular/build/src/tools/esbuild/i18n-inliner.ts +++ b/packages/angular/build/src/tools/esbuild/i18n-inliner.ts @@ -11,7 +11,7 @@ import { createHash } from 'node:crypto'; import { extname, join } from 'node:path'; import { WorkerPool } from '../../utils/worker-pool'; import { BuildOutputFile, BuildOutputFileType } from './bundler-context'; -import type { LmbdCacheStore } from './lmdb-cache-store'; +import type { LmdbCacheStore } from './lmdb-cache-store'; import { createOutputFile } from './utils'; /** @@ -39,7 +39,7 @@ export interface I18nInlinerOptions { export class I18nInliner { #cacheInitFailed = false; #workerPool: WorkerPool; - #cache: LmbdCacheStore | undefined; + #cache: LmdbCacheStore | undefined; readonly #localizeFiles: ReadonlyMap; readonly #unmodifiedFiles: Array; @@ -274,9 +274,9 @@ export class I18nInliner { // Initialize a persistent cache for i18n transformations. try { - const { LmbdCacheStore } = await import('./lmdb-cache-store'); + const { LmdbCacheStore } = await import('./lmdb-cache-store'); - this.#cache = new LmbdCacheStore(join(persistentCachePath, 'angular-i18n.db')); + this.#cache = new LmdbCacheStore(join(persistentCachePath, 'angular-i18n.db')); } catch { this.#cacheInitFailed = true; diff --git a/packages/angular/build/src/tools/esbuild/lmdb-cache-store.ts b/packages/angular/build/src/tools/esbuild/lmdb-cache-store.ts index 7d03cb597738..dba108285342 100644 --- a/packages/angular/build/src/tools/esbuild/lmdb-cache-store.ts +++ b/packages/angular/build/src/tools/esbuild/lmdb-cache-store.ts @@ -9,7 +9,7 @@ import { RootDatabase, open } from 'lmdb'; import { Cache, CacheStore } from './cache'; -export class LmbdCacheStore implements CacheStore { +export class LmdbCacheStore implements CacheStore { readonly #cacheFileUrl; #db: RootDatabase | undefined; From 561488f6fbff46ac332570d32626e980877cbc2d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 12 Nov 2025 17:06:29 +0000 Subject: [PATCH 1775/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 - package.json | 24 +- packages/angular/build/package.json | 2 +- packages/angular/ssr/package.json | 12 +- .../angular_devkit/build_angular/package.json | 2 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 571 +++++++++++++----- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 15 files changed, 518 insertions(+), 243 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index b57b0e6087fa..aac5a765ee48 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@b14d0b01760280c36f6fcfdd31f120a465a56501 + - uses: angular/dev-infra/github-actions/branch-manager@75e967a4a7dd593c812c0b05382c562283ee4d39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8944ff3c0420..e9cabf086548 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 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@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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 b87ebdd061ce..585239721fab 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@b14d0b01760280c36f6fcfdd31f120a465a56501 + - uses: angular/dev-infra/github-actions/pull-request-labeling@75e967a4a7dd593c812c0b05382c562283ee4d39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@b14d0b01760280c36f6fcfdd31f120a465a56501 + - uses: angular/dev-infra/github-actions/post-approval-changes@75e967a4a7dd593c812c0b05382c562283ee4d39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 1bfe3477cadf..f00bf085a431 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@b14d0b01760280c36f6fcfdd31f120a465a56501 + - uses: angular/dev-infra/github-actions/feature-request@75e967a4a7dd593c812c0b05382c562283ee4d39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 2958a30af87f..d727ccba8f9e 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@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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 2e2c2c69b04c..a525a0556735 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/linting/licenses@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b14d0b01760280c36f6fcfdd31f120a465a56501 + uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 - 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/MODULE.bazel b/MODULE.bazel index 40e47430283c..07065d2cb70f 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "b14d0b01760280c36f6fcfdd31f120a465a56501", + commit = "75e967a4a7dd593c812c0b05382c562283ee4d39", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 8912a460b5a5..ce35165c7b47 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -14,7 +14,6 @@ "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "852f9ebbda017572a7c113a2434592dd3b2f55cd9a0faea3d4be5a09a59e4900", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/MODULE.bazel": "276347663a25b0d5bd6cad869252bea3e160c4d980e764b15f3bae7f80b30624", @@ -29,7 +28,6 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.0/MODULE.bazel": "b2e0576866a3f1cca3286ad1efefa4099a6546a3239dffa802a551521e8fbf3d", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/MODULE.bazel": "edcde75a1357952d3acedb6f3622614c87f730927d753af77b36c604ff407f0d", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/source.json": "6da210e9e76eda699f9ca998a6f6c48980f78589f0f6d240842de6cef96543ce", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", diff --git a/package.json b/package.json index 573969ea2ca0..fc5f1f92c934 100644 --- a/package.json +++ b/package.json @@ -44,20 +44,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-rc.1", + "@angular/animations": "21.0.0-rc.2", "@angular/cdk": "21.0.0-rc.1", - "@angular/common": "21.0.0-rc.1", - "@angular/compiler": "21.0.0-rc.1", - "@angular/compiler-cli": "21.0.0-rc.1", - "@angular/core": "21.0.0-rc.1", - "@angular/forms": "21.0.0-rc.1", - "@angular/localize": "21.0.0-rc.1", + "@angular/common": "21.0.0-rc.2", + "@angular/compiler": "21.0.0-rc.2", + "@angular/compiler-cli": "21.0.0-rc.2", + "@angular/core": "21.0.0-rc.2", + "@angular/forms": "21.0.0-rc.2", + "@angular/localize": "21.0.0-rc.2", "@angular/material": "21.0.0-rc.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#308cdfc2c5fb51ccb998ed7afca314da3ba49f14", - "@angular/platform-browser": "21.0.0-rc.1", - "@angular/platform-server": "21.0.0-rc.1", - "@angular/router": "21.0.0-rc.1", - "@angular/service-worker": "21.0.0-rc.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a", + "@angular/platform-browser": "21.0.0-rc.2", + "@angular/platform-server": "21.0.0-rc.2", + "@angular/router": "21.0.0-rc.2", + "@angular/service-worker": "21.0.0-rc.2", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index ba350d20a892..cdfff193055b 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -54,7 +54,7 @@ "@angular/ssr": "workspace:*", "jsdom": "27.1.0", "less": "4.4.2", - "ng-packagr": "21.0.0-rc.0", + "ng-packagr": "21.0.0-rc.1", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "4.0.8" diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 467d57e5957b..8037c8a075e6 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-rc.1", - "@angular/compiler": "21.0.0-rc.1", - "@angular/core": "21.0.0-rc.1", - "@angular/platform-browser": "21.0.0-rc.1", - "@angular/platform-server": "21.0.0-rc.1", - "@angular/router": "21.0.0-rc.1", + "@angular/common": "21.0.0-rc.2", + "@angular/compiler": "21.0.0-rc.2", + "@angular/core": "21.0.0-rc.2", + "@angular/platform-browser": "21.0.0-rc.2", + "@angular/platform-server": "21.0.0-rc.2", + "@angular/router": "21.0.0-rc.2", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 1a24112e122c..2deec293e5d4 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.0.0-rc.0", + "ng-packagr": "21.0.0-rc.1", "undici": "7.16.0" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 99590defe5f7..618d45ce52d9 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": "21.0.0-rc.1", - "@angular/compiler-cli": "21.0.0-rc.1", + "@angular/compiler": "21.0.0-rc.2", + "@angular/compiler-cli": "21.0.0-rc.2", "typescript": "5.9.3", "webpack": "5.102.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0ce09b11188..e9f88770c1fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,47 +22,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0-rc.1(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1 + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2 '@angular/compiler-cli': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.1) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.2) '@angular/material': specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(8360cac76c139f5acb8182abdf456916) + version: 21.0.0-rc.1(36cf5dcd6d9a30c992eda0464d5874e2) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#308cdfc2c5fb51ccb998ed7afca314da3ba49f14 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.1)(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.2)(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -443,8 +443,8 @@ importers: specifier: 4.4.2 version: 4.4.2 ng-packagr: - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -541,23 +541,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1 + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2 '@angular/core': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.1)(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.2)(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -771,8 +771,8 @@ importers: specifier: 0.20.2 version: 0.20.2(bufferutil@4.0.9) ng-packagr: - specifier: 21.0.0-rc.0 - version: 21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.0.0-rc.1 + version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -874,11 +874,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1 + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2 '@angular/compiler-cli': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -984,11 +984,11 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-rc.1': - resolution: {integrity: sha512-DrIWB+k/hzi67XQkQBy3bvFTpk9xfkeoQOXms1RynKIvydtqKZGNMJZo/zmSS2Uj5J0j9HjfslZPmHZPqpG16w==} + '@angular/animations@21.0.0-rc.2': + resolution: {integrity: sha512-NibaaIiPHwp7MlLt3ncNmwiX5GdXtBFzsYnsKt19W9KRR51XGBj+Cr85fyhLF+UyntPZKWMbllia22IvxOL84g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.2 '@angular/cdk@21.0.0-rc.1': resolution: {integrity: sha512-7h4BWSg/Ah6S/YSf8IxSCQNTBSkKJNvJInRIoyQa1eDt3rMLOOu93nbrjyiwDbuuENeqrpiRJbulZDyO67LQEw==} @@ -997,33 +997,33 @@ packages: '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-rc.1': - resolution: {integrity: sha512-CDOqiXAOGt8owBKOWXnvcmt1ZhKgEybgWTn44cLFPdFK13l6ial09R5dDe+tqKAT2FOwB0AXpB9My3jEn3FHCA==} + '@angular/common@21.0.0-rc.2': + resolution: {integrity: sha512-NAu9v3CPxkGHoZvvauywNlr0mPa7WBtyvS03WJlBD6vijruBdbmB5ey9CKTAmAtPWadN0Wld+/SKuy+aVs6VKQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-rc.1': - resolution: {integrity: sha512-tYBqNDsDOPTF11ol3CHwe1/rNmhC94jM8P6vBMEY7YTfriH6awD3scvFAuJWz3VS1ojzhNu/eX2rzzOcCCC92A==} + '@angular/compiler-cli@21.0.0-rc.2': + resolution: {integrity: sha512-mAdWUJ2ZWqgs9fQa1NxqcYeXAgoE6jl2l4kcWNKKGP7WLjNSoE0A1MrIx9fsp+bbKXzY8Ly1WpwS9iTABFA9Xg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-rc.1 + '@angular/compiler': 21.0.0-rc.2 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-rc.1': - resolution: {integrity: sha512-b3RlK+Dznn08rbTg4Oi/ICCPO6A0Vvnb+FsAxeLRtYx9TGFhWcaOPI9N/okU/lPb7Js4HYX9SoVaN/5S3hh8Lw==} + '@angular/compiler@21.0.0-rc.2': + resolution: {integrity: sha512-wJOwO9GoWhMm0c3ITgLhGN/tglN1Ntx6Mj588pQpHb5SKEdriqdUwEwu66MNrMy3o0FXdfiuahzWuqL37DDR3w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-rc.1': - resolution: {integrity: sha512-ZPV+9usViVFnHPrd1NECrLjERYTRf3ycjG6XH6cCeneWxj8nFtvuNdLOVhWT5fvPYVJfdfYrwG52+Oi36AkaSg==} + '@angular/core@21.0.0-rc.2': + resolution: {integrity: sha512-ycxrRfvIcerGomRBdre28lh9N/h7rbxqoeRN0SjycsigJZ5FUBmvN9CyXdQdEXCjNi4ctzSOX3NEvytvJX7M/Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-rc.1 + '@angular/compiler': 21.0.0-rc.2 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1032,23 +1032,23 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-rc.1': - resolution: {integrity: sha512-xxs+TRLbKHPACrxLZUve/yAza0h3+PU4xMoQhBDLgQQk4145wvGc2c/t5CNwBso7C4pB5zaxRsEt2DLecuFexg==} + '@angular/forms@21.0.0-rc.2': + resolution: {integrity: sha512-OrCwXBnC2KeY2tUoBzIeQqARlXTspkBhRG6qmTZmqStKvrLRx6yDjXCPtYpl8+LwyzU6IMl/UmqGVXfr0aXVoA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.1 - '@angular/core': 21.0.0-rc.1 - '@angular/platform-browser': 21.0.0-rc.1 + '@angular/common': 21.0.0-rc.2 + '@angular/core': 21.0.0-rc.2 + '@angular/platform-browser': 21.0.0-rc.2 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-rc.1': - resolution: {integrity: sha512-+jEmbmjQ4z694NytqwDRyudG3Ew+fn/18AUR/i4xDlgaWRSfgSPmiMlyimBvByOvci0K5VX8NvT5Qwf7BcHEGw==} + '@angular/localize@21.0.0-rc.2': + resolution: {integrity: sha512-tSmCEYjDJAygBoQDNHT1hkZ1UK3I9QwbsC8L7hgsynJioDNqV2X4zAE748G/zvMT4PLb9LMadx4e0yvSE8TDog==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-rc.1 - '@angular/compiler-cli': 21.0.0-rc.1 + '@angular/compiler': 21.0.0-rc.2 + '@angular/compiler-cli': 21.0.0-rc.2 '@angular/material@21.0.0-rc.1': resolution: {integrity: sha512-NJi30CrDu9h2vAMMq7xOG8XpAZ4CdSezO+Ss+ZZ5fsD9LEaR7HiLj1SUtObp12wakGa0vBj/rFkHlbaxyEZF1Q==} @@ -1060,47 +1060,47 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/308cdfc2c5fb51ccb998ed7afca314da3ba49f14': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14} - version: 0.0.0-b14d0b01760280c36f6fcfdd31f120a465a56501 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a} + version: 0.0.0-75e967a4a7dd593c812c0b05382c562283ee4d39 hasBin: true - '@angular/platform-browser@21.0.0-rc.1': - resolution: {integrity: sha512-1uu2JPC+da9hJfVOvoCSKxDYiyw9XPG6bVgNn1j/UEyUy3knvRMU/L/iDlLDQiSX1hLu0NdWF58eNbgHxqo+Fg==} + '@angular/platform-browser@21.0.0-rc.2': + resolution: {integrity: sha512-j1owMY2oI+AUxQUdo7Y/R+r6sEqg+u4tr4CNcLvunV8DVqvSjwr3AqHI87fcQ6o+9b1GiiM6lvJil8OCPcUOjw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-rc.1 - '@angular/common': 21.0.0-rc.1 - '@angular/core': 21.0.0-rc.1 + '@angular/animations': 21.0.0-rc.2 + '@angular/common': 21.0.0-rc.2 + '@angular/core': 21.0.0-rc.2 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-rc.1': - resolution: {integrity: sha512-nQTpOOIeTCmBqd9g/txoQjhcxNYaKZ3gXR84O0lIY2nQ1jzHxKzQueDgY3C19+2etaZWNpHzCMfrF3oAMeCdsA==} + '@angular/platform-server@21.0.0-rc.2': + resolution: {integrity: sha512-YrdFBZXdOVyS6wkZT3vqQ/3I/a915lS98UnF6BGtXCpmjxVfR737kmJHNG2FHMz7vo3HefQMxoz7Xb/my3HPIg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.1 - '@angular/compiler': 21.0.0-rc.1 - '@angular/core': 21.0.0-rc.1 - '@angular/platform-browser': 21.0.0-rc.1 + '@angular/common': 21.0.0-rc.2 + '@angular/compiler': 21.0.0-rc.2 + '@angular/core': 21.0.0-rc.2 + '@angular/platform-browser': 21.0.0-rc.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-rc.1': - resolution: {integrity: sha512-TGpvzEh6PgOwEKCKffQQQPB08MSnO3n/JSkAgWliEMQpnbP9aLFFyInFnlNxD2j2IhJ7xbneIrywTxBxcGJhrw==} + '@angular/router@21.0.0-rc.2': + resolution: {integrity: sha512-C/tWcfqU/Zx0uLEAfho3nWA9f1mfcDUZxRCLnf9zDksoJl5yJbgIFeNytU5aheHAWKqA3Laj5tnbfUNeU/Vtfg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.1 - '@angular/core': 21.0.0-rc.1 - '@angular/platform-browser': 21.0.0-rc.1 + '@angular/common': 21.0.0-rc.2 + '@angular/core': 21.0.0-rc.2 + '@angular/platform-browser': 21.0.0-rc.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-rc.1': - resolution: {integrity: sha512-z8Sf9xnkcfEp67O+weE+IDDMgjE2Plspw1Su8v7g7LogkPAP9QiNBoKIyENjxs0VwOXQhosgU4lujBNK5XITqg==} + '@angular/service-worker@21.0.0-rc.2': + resolution: {integrity: sha512-X+FjX76ceQzE4gC5pZzCkPoQlDkcO8pDMbP1gYz745GMwO0TROUVVDrQb9h8Fu1ptknQB+tT1YprStxpVmDQXw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-rc.1 + '@angular/core': 21.0.0-rc.2 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -1714,6 +1714,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.0': + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} @@ -1726,6 +1732,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.0': + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} @@ -1738,6 +1750,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.0': + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -1750,6 +1768,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.0': + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} @@ -1762,6 +1786,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.0': + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} @@ -1774,6 +1804,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.0': + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -1786,6 +1822,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.0': + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} @@ -1798,6 +1840,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.0': + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} @@ -1810,6 +1858,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.0': + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} @@ -1822,6 +1876,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.0': + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} @@ -1834,6 +1894,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.0': + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} @@ -1846,6 +1912,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.0': + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} @@ -1858,6 +1930,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.0': + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} @@ -1870,6 +1948,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.0': + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -1882,6 +1966,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.0': + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} @@ -1894,6 +1984,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.0': + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -1906,6 +2002,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.0': + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -1918,6 +2020,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.0': + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -1930,6 +2038,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.0': + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -1942,6 +2056,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.0': + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -1954,6 +2074,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.0': + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -1966,6 +2092,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.0': + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} @@ -1978,6 +2110,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.0': + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} @@ -1990,6 +2128,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.0': + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} @@ -2002,6 +2146,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.0': + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} @@ -2014,6 +2164,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.0': + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3039,16 +3195,16 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.3': - resolution: {integrity: sha512-ScPXDrlpNNrvV+l4Z1Mh7HjejkltQWfSa3PIaB+WJ3h+PoC1w5blbgfq6ENdHdkRU7L14ie/3MqUGMIx2gZldA==} + '@pnpm/dependency-path@1001.1.4': + resolution: {integrity: sha512-AUFsnxZB13ME7JKFis3/zo+Cz4qvYl7PzpzFFrw0bL75OY2+jeXcG3dbNXoVfpjaA3/lyZBtQmxE+Q6xbjyV5Q==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} - '@pnpm/types@1000.9.0': - resolution: {integrity: sha512-UvDTCxnbyqkTg2X0dBOuZ4IdFJ8g4UFu0Ybv/5/cZAxCWVhNl1hC/Xc9hR4tZrlBL0NRFePLRhO/iw9LmA1lbw==} + '@pnpm/types@1001.0.0': + resolution: {integrity: sha512-9P7I8Zv8hvAO81+D5KVmwveH4nmxhBNFEEeb77YYPV72bkyqzKTR6I8OGEs7TNZ6gPHufF+lIyBVEqO6SMFpJA==} engines: {node: '>=18.12'} '@protobufjs/aspromise@1.1.2': @@ -5266,6 +5422,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -7022,8 +7183,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.0.0-rc.0: - resolution: {integrity: sha512-dCvyhGTRFRSY08rJMNmyBRt1wHGFx+J9YjWcbN2LXfJgeKYf2pgjhHnbHjrrN623nsgokcahRAfQ0ohJExUMAw==} + ng-packagr@21.0.0-rc.1: + resolution: {integrity: sha512-e3R45a5fuQ/bxdegHO+P+10+YjamgZvInx+cKD0exHPTLwqTN9JNWkyfL/pZf4wyyDzTvmcmADNvqPOml9GJ0w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: @@ -8987,6 +9148,11 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + which@6.0.0: + resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -9304,28 +9470,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-rc.1(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-rc.1 + '@angular/compiler': 21.0.0-rc.2 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9339,31 +9505,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-rc.1': + '@angular/compiler@21.0.0-rc.2': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-rc.1 + '@angular/compiler': 21.0.0-rc.2 zone.js: 0.15.1 - '@angular/forms@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.1)': + '@angular/localize@21.0.0-rc.2(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.2)': dependencies: - '@angular/compiler': 21.0.0-rc.1 - '@angular/compiler-cli': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) + '@angular/compiler': 21.0.0-rc.2 + '@angular/compiler-cli': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9371,17 +9537,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-rc.1(8360cac76c139f5acb8182abdf456916)': + '@angular/material@21.0.0-rc.1(36cf5dcd6d9a30c992eda0464d5874e2)': dependencies: - '@angular/cdk': 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0-rc.1(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/308cdfc2c5fb51ccb998ed7afca314da3ba49f14(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -9398,7 +9564,7 @@ snapshots: '@octokit/request-error': 7.0.2 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 - '@pnpm/dependency-path': 1001.1.3 + '@pnpm/dependency-path': 1001.1.4 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 @@ -9435,42 +9601,42 @@ snapshots: typed-graphqlify: 3.1.6 typescript: 5.9.3 utf-8-validate: 6.0.5 - which: 5.0.0 + which: 6.0.0 yaml: 2.8.1 yargs: 18.0.0 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.1)(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.2)(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-rc.1 - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0-rc.2 + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-rc.1(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.1(@angular/animations@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-rc.1(@angular/core@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -10278,156 +10444,234 @@ snapshots: '@esbuild/aix-ppc64@0.26.0': optional: true + '@esbuild/aix-ppc64@0.27.0': + optional: true + '@esbuild/android-arm64@0.25.12': optional: true '@esbuild/android-arm64@0.26.0': optional: true + '@esbuild/android-arm64@0.27.0': + optional: true + '@esbuild/android-arm@0.25.12': optional: true '@esbuild/android-arm@0.26.0': optional: true + '@esbuild/android-arm@0.27.0': + optional: true + '@esbuild/android-x64@0.25.12': optional: true '@esbuild/android-x64@0.26.0': optional: true + '@esbuild/android-x64@0.27.0': + optional: true + '@esbuild/darwin-arm64@0.25.12': optional: true '@esbuild/darwin-arm64@0.26.0': optional: true + '@esbuild/darwin-arm64@0.27.0': + optional: true + '@esbuild/darwin-x64@0.25.12': optional: true '@esbuild/darwin-x64@0.26.0': optional: true + '@esbuild/darwin-x64@0.27.0': + optional: true + '@esbuild/freebsd-arm64@0.25.12': optional: true '@esbuild/freebsd-arm64@0.26.0': optional: true + '@esbuild/freebsd-arm64@0.27.0': + optional: true + '@esbuild/freebsd-x64@0.25.12': optional: true '@esbuild/freebsd-x64@0.26.0': optional: true + '@esbuild/freebsd-x64@0.27.0': + optional: true + '@esbuild/linux-arm64@0.25.12': optional: true '@esbuild/linux-arm64@0.26.0': optional: true + '@esbuild/linux-arm64@0.27.0': + optional: true + '@esbuild/linux-arm@0.25.12': optional: true '@esbuild/linux-arm@0.26.0': optional: true + '@esbuild/linux-arm@0.27.0': + optional: true + '@esbuild/linux-ia32@0.25.12': optional: true '@esbuild/linux-ia32@0.26.0': optional: true + '@esbuild/linux-ia32@0.27.0': + optional: true + '@esbuild/linux-loong64@0.25.12': optional: true '@esbuild/linux-loong64@0.26.0': optional: true + '@esbuild/linux-loong64@0.27.0': + optional: true + '@esbuild/linux-mips64el@0.25.12': optional: true '@esbuild/linux-mips64el@0.26.0': optional: true + '@esbuild/linux-mips64el@0.27.0': + optional: true + '@esbuild/linux-ppc64@0.25.12': optional: true '@esbuild/linux-ppc64@0.26.0': optional: true + '@esbuild/linux-ppc64@0.27.0': + optional: true + '@esbuild/linux-riscv64@0.25.12': optional: true '@esbuild/linux-riscv64@0.26.0': optional: true + '@esbuild/linux-riscv64@0.27.0': + optional: true + '@esbuild/linux-s390x@0.25.12': optional: true '@esbuild/linux-s390x@0.26.0': optional: true + '@esbuild/linux-s390x@0.27.0': + optional: true + '@esbuild/linux-x64@0.25.12': optional: true '@esbuild/linux-x64@0.26.0': optional: true + '@esbuild/linux-x64@0.27.0': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.26.0': optional: true + '@esbuild/netbsd-arm64@0.27.0': + optional: true + '@esbuild/netbsd-x64@0.25.12': optional: true '@esbuild/netbsd-x64@0.26.0': optional: true + '@esbuild/netbsd-x64@0.27.0': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.26.0': optional: true + '@esbuild/openbsd-arm64@0.27.0': + optional: true + '@esbuild/openbsd-x64@0.25.12': optional: true '@esbuild/openbsd-x64@0.26.0': optional: true + '@esbuild/openbsd-x64@0.27.0': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.26.0': optional: true + '@esbuild/openharmony-arm64@0.27.0': + optional: true + '@esbuild/sunos-x64@0.25.12': optional: true '@esbuild/sunos-x64@0.26.0': optional: true + '@esbuild/sunos-x64@0.27.0': + optional: true + '@esbuild/win32-arm64@0.25.12': optional: true '@esbuild/win32-arm64@0.26.0': optional: true + '@esbuild/win32-arm64@0.27.0': + optional: true + '@esbuild/win32-ia32@0.25.12': optional: true '@esbuild/win32-ia32@0.26.0': optional: true + '@esbuild/win32-ia32@0.27.0': + optional: true + '@esbuild/win32-x64@0.25.12': optional: true '@esbuild/win32-x64@0.26.0': optional: true + '@esbuild/win32-x64@0.27.0': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -11568,17 +11812,17 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.3': + '@pnpm/dependency-path@1001.1.4': dependencies: '@pnpm/crypto.hash': 1000.2.1 - '@pnpm/types': 1000.9.0 + '@pnpm/types': 1001.0.0 semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 - '@pnpm/types@1000.9.0': {} + '@pnpm/types@1001.0.0': {} '@protobufjs/aspromise@1.1.2': {} @@ -14233,6 +14477,35 @@ snapshots: '@esbuild/win32-ia32': 0.26.0 '@esbuild/win32-x64': 0.26.0 + esbuild@0.27.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.0 + '@esbuild/android-arm': 0.27.0 + '@esbuild/android-arm64': 0.27.0 + '@esbuild/android-x64': 0.27.0 + '@esbuild/darwin-arm64': 0.27.0 + '@esbuild/darwin-x64': 0.27.0 + '@esbuild/freebsd-arm64': 0.27.0 + '@esbuild/freebsd-x64': 0.27.0 + '@esbuild/linux-arm': 0.27.0 + '@esbuild/linux-arm64': 0.27.0 + '@esbuild/linux-ia32': 0.27.0 + '@esbuild/linux-loong64': 0.27.0 + '@esbuild/linux-mips64el': 0.27.0 + '@esbuild/linux-ppc64': 0.27.0 + '@esbuild/linux-riscv64': 0.27.0 + '@esbuild/linux-s390x': 0.27.0 + '@esbuild/linux-x64': 0.27.0 + '@esbuild/netbsd-arm64': 0.27.0 + '@esbuild/netbsd-x64': 0.27.0 + '@esbuild/openbsd-arm64': 0.27.0 + '@esbuild/openbsd-x64': 0.27.0 + '@esbuild/openharmony-arm64': 0.27.0 + '@esbuild/sunos-x64': 0.27.0 + '@esbuild/win32-arm64': 0.27.0 + '@esbuild/win32-ia32': 0.27.0 + '@esbuild/win32-x64': 0.27.0 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -14507,7 +14780,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -16285,10 +16558,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-rc.0(@angular/compiler-cli@21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-rc.1(@angular/compiler@21.0.0-rc.1)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.53.1) '@rollup/wasm-node': 4.53.1 ajv: 8.17.1 @@ -16297,7 +16570,7 @@ snapshots: chokidar: 4.0.3 commander: 14.0.2 dependency-graph: 1.0.0 - esbuild: 0.25.12 + esbuild: 0.27.0 find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 @@ -18677,6 +18950,10 @@ snapshots: dependencies: isexe: 3.1.1 + which@6.0.0: + dependencies: + isexe: 3.1.1 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 57c199b32b22..8104a64806db 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#8022f0c2bdf43fc75cfbadaf656a789e95d84e7c", - "@angular/cdk": "github:angular/cdk-builds#6a17dcb93b22df30f6e45fc1ce8d1a9d0ea88475", - "@angular/common": "github:angular/common-builds#2e3063ff081099c38f6f75c6c654470b124e4509", - "@angular/compiler": "github:angular/compiler-builds#34a96f0f9017496fbb8ccd179436e90361ca1096", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#be06748351fac2ef4e95707d8bf3d574d4798b04", - "@angular/core": "github:angular/core-builds#e7d050646caa1eca6af745da312bd1ff6e6ecbdc", - "@angular/forms": "github:angular/forms-builds#1e917489de718befd682d527467bcbcae62b276d", - "@angular/language-service": "github:angular/language-service-builds#747c91f73b12fd4a402dda26bbb38233d9ed7dd4", - "@angular/localize": "github:angular/localize-builds#26a2c802bc77ad7586a0033001974a63ea34613b", - "@angular/material": "github:angular/material-builds#164a1490719c162e609ebee6178a7247d1c61978", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9ea9682b0c431182429a9dd793619ae97a7ce84b", - "@angular/platform-browser": "github:angular/platform-browser-builds#dfb2ceb2a82f8de1785b601a4165d69b56050ae7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0dc21af5f46446b913be79990395a0f25eb19b2b", - "@angular/platform-server": "github:angular/platform-server-builds#fc62d3e32dce1e66e11b6d1ae61aa97e173e8e5b", - "@angular/router": "github:angular/router-builds#430baf4007581c175ccd689fb79f91eec5ea7edf", - "@angular/service-worker": "github:angular/service-worker-builds#fc3059ad1be777a27fac344c04f02d59c416aea6" + "@angular/animations": "github:angular/animations-builds#43282f1b0f01054f910e69dd605ecb8dd075d9bf", + "@angular/cdk": "github:angular/cdk-builds#c2bafca3fbb38b5339dcad30d726d35a821b5079", + "@angular/common": "github:angular/common-builds#b67b671cf1ef8a0095de80ce8619ef5da48eac4c", + "@angular/compiler": "github:angular/compiler-builds#c39afec0d512adcde87f3ed33175be6ed91198f3", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#26c22742008c38e633d6ced34f7422ed3dfe5d81", + "@angular/core": "github:angular/core-builds#a0ea5fc7b8c1aa9b9e1a1930a01700b21b939485", + "@angular/forms": "github:angular/forms-builds#9e94e2d5c0f5cf5f4319f32ecd138c252c8df8e0", + "@angular/language-service": "github:angular/language-service-builds#cec81111868fbc843dd8d4d200837e3e95fafd73", + "@angular/localize": "github:angular/localize-builds#061bb3688a81739030a3ffb6c1d1617cf5a164be", + "@angular/material": "github:angular/material-builds#510bda9fd706ea383dd37f626a0a34f5b7568267", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#7dae03cb69cc44f3f2b314727814ba1df6b8ca12", + "@angular/platform-browser": "github:angular/platform-browser-builds#0130ba329842023ca56aca3ec56790eafa5dca06", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#684f0c416c6de62e0280131377753041566ecfd1", + "@angular/platform-server": "github:angular/platform-server-builds#38b1b323ded75600c312f5f1c13c39d52053da98", + "@angular/router": "github:angular/router-builds#04a2030472b22bea996993afa919aef870f7306f", + "@angular/service-worker": "github:angular/service-worker-builds#e4798e165e890799183da8e16cfc843372787739" } } From 633f4e9a255953bf6f2427117c0eabfafa4c94f9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 12 Nov 2025 15:40:11 +0000 Subject: [PATCH 1776/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 10 +- packages/angular/build/package.json | 6 +- .../angular_devkit/build_angular/package.json | 8 +- pnpm-lock.yaml | 960 +++++++++++------- 4 files changed, 616 insertions(+), 368 deletions(-) diff --git a/package.json b/package.json index fc5f1f92c934..9f98687356ea 100644 --- a/package.json +++ b/package.json @@ -92,13 +92,13 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.46.3", - "@typescript-eslint/parser": "8.46.3", + "@typescript-eslint/eslint-plugin": "8.46.4", + "@typescript-eslint/parser": "8.46.4", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", - "esbuild": "0.26.0", - "esbuild-wasm": "0.26.0", + "esbuild": "0.27.0", + "esbuild-wasm": "0.27.0", "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", @@ -126,7 +126,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.53.1", + "rollup": "4.53.2", "rollup-license-plugin": "~3.0.1", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index cdfff193055b..32711508f331 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -27,7 +27,7 @@ "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", - "esbuild": "0.26.0", + "esbuild": "0.27.0", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -37,8 +37,8 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.47", - "sass": "1.93.3", + "rolldown": "1.0.0-beta.49", + "sass": "1.94.0", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 2deec293e5d4..9cbd58bdddf6 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -23,12 +23,12 @@ "@discoveryjs/json-ext": "0.6.3", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.21", + "autoprefixer": "10.4.22", "babel-loader": "10.0.0", "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.26.0", + "esbuild-wasm": "0.27.0", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.93.3", + "sass": "1.94.0", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -62,7 +62,7 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.26.0" + "esbuild": "0.27.0" }, "devDependencies": { "@angular/ssr": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9f88770c1fa..d231297e8149 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,16 +83,16 @@ importers: version: 9.39.1 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.53.1) + version: 6.0.0(rollup@4.53.2) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.53.1) + version: 29.0.0(rollup@4.53.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.53.1) + version: 6.1.0(rollup@4.53.2) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.53.1) + version: 16.0.3(rollup@4.53.2) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.5.0(eslint@9.39.1(jiti@2.6.1)) @@ -128,7 +128,7 @@ importers: version: 3.0.8 '@types/loader-utils': specifier: ^3.0.0 - version: 3.0.0(esbuild@0.26.0) + version: 3.0.0(esbuild@0.27.0) '@types/lodash': specifier: ^4.17.0 version: 4.17.20 @@ -166,11 +166,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.46.3 - version: 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.4 + version: 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.3 - version: 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.4 + version: 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -181,11 +181,11 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.26.0 - version: 0.26.0 + specifier: 0.27.0 + version: 0.27.0 esbuild-wasm: - specifier: 0.26.0 - version: 0.26.0 + specifier: 0.27.0 + version: 0.27.0 eslint: specifier: 9.39.1 version: 9.39.1(jiti@2.6.1) @@ -197,7 +197,7 @@ importers: version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -268,17 +268,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.53.1 - version: 4.53.1 + specifier: 4.53.2 + version: 4.53.2 rollup-license-plugin: specifier: ~3.0.1 version: 3.0.2 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.53.1)(typescript@5.9.3) + version: 6.2.3(rollup@4.53.2)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.0)(rollup@4.53.1) + version: 0.5.4(@types/node@22.19.0)(rollup@4.53.2) semver: specifier: 7.7.3 version: 7.7.3 @@ -335,7 +335,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.8 - version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -344,7 +344,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -368,7 +368,7 @@ importers: version: 5.1.20(@types/node@24.10.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -376,8 +376,8 @@ importers: specifier: ^4.26.0 version: 4.27.0 esbuild: - specifier: 0.26.0 - version: 0.26.0 + specifier: 0.27.0 + version: 0.27.0 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.2.2) @@ -406,11 +406,11 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.47 - version: 1.0.0-beta.47 + specifier: 1.0.0-beta.49 + version: 1.0.0-beta.49 sass: - specifier: 1.93.3 - version: 1.93.3 + specifier: 1.94.0 + version: 1.94.0 semver: specifier: 7.7.3 version: 7.7.3 @@ -425,7 +425,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.2 - version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -453,7 +453,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -650,11 +650,11 @@ importers: specifier: 4.1.3 version: 4.1.3 autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.6) + specifier: 10.4.22 + version: 10.4.22(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.26.0)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.27.0)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9) @@ -663,13 +663,13 @@ importers: version: 4.27.0 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.102.1(esbuild@0.26.0)) + version: 13.0.1(webpack@5.102.1(esbuild@0.27.0)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.102.1(esbuild@0.26.0)) + version: 7.1.2(webpack@5.102.1(esbuild@0.27.0)) esbuild-wasm: - specifier: 0.26.0 - version: 0.26.0 + specifier: 0.27.0 + version: 0.27.0 http-proxy-middleware: specifier: 3.0.5 version: 3.0.5 @@ -687,16 +687,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.26.0)) + version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.27.0)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.102.1(esbuild@0.26.0)) + version: 4.0.2(webpack@5.102.1(esbuild@0.27.0)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.102.1(esbuild@0.26.0)) + version: 2.9.4(webpack@5.102.1(esbuild@0.27.0)) open: specifier: 10.2.0 version: 10.2.0 @@ -714,7 +714,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.26.0)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.27.0)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -722,17 +722,17 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.93.3 - version: 1.93.3 + specifier: 1.94.0 + version: 1.94.0 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.26.0)) + version: 16.0.6(sass@1.94.0)(webpack@5.102.1(esbuild@0.27.0)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.102.1(esbuild@0.26.0)) + version: 5.0.0(webpack@5.102.1(esbuild@0.27.0)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -750,19 +750,19 @@ importers: version: 2.8.1 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.26.0) + version: 5.102.1(esbuild@0.27.0) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.102.1(esbuild@0.26.0)) + version: 7.4.5(webpack@5.102.1(esbuild@0.27.0)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.102.1(esbuild@0.26.0)) + version: 5.1.0(webpack@5.102.1(esbuild@0.27.0)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -778,8 +778,8 @@ importers: version: 7.16.0 optionalDependencies: esbuild: - specifier: 0.26.0 - version: 0.26.0 + specifier: 0.27.0 + version: 0.27.0 packages/angular_devkit/build_webpack: dependencies: @@ -791,10 +791,10 @@ importers: version: 7.8.2 webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.26.0) + version: 5.102.1(esbuild@0.27.0) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)) devDependencies: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER @@ -868,7 +868,7 @@ importers: dependencies: webpack: specifier: 5.102.1 - version: 5.102.1(esbuild@0.26.0) + version: 5.102.1(esbuild@0.27.0) devDependencies: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER @@ -1708,8 +1708,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.26.0': - resolution: {integrity: sha512-hj0sKNCQOOo2fgyII3clmJXP28VhgDfU5iy3GNHlWO76KG6N7x4D9ezH5lJtQTG+1J6MFDAJXC1qsI+W+LvZoA==} + '@esbuild/aix-ppc64@0.27.0': + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1726,8 +1726,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.26.0': - resolution: {integrity: sha512-DDnoJ5eoa13L8zPh87PUlRd/IyFaIKOlRbxiwcSbeumcJ7UZKdtuMCHa1Q27LWQggug6W4m28i4/O2qiQQ5NZQ==} + '@esbuild/android-arm64@0.27.0': + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1744,8 +1744,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.26.0': - resolution: {integrity: sha512-C0hkDsYNHZkBtPxxDx177JN90/1MiCpvBNjz1f5yWJo1+5+c5zr8apjastpEG+wtPjo9FFtGG7owSsAxyKiHxA==} + '@esbuild/android-arm@0.27.0': + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1762,8 +1762,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.26.0': - resolution: {integrity: sha512-bKDkGXGZnj0T70cRpgmv549x38Vr2O3UWLbjT2qmIkdIWcmlg8yebcFWoT9Dku7b5OV3UqPEuNKRzlNhjwUJ9A==} + '@esbuild/android-x64@0.27.0': + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1780,8 +1780,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.26.0': - resolution: {integrity: sha512-6Z3naJgOuAIB0RLlJkYc81An3rTlQ/IeRdrU3dOea8h/PvZSgitZV+thNuIccw0MuK1GmIAnAmd5TrMZad8FTQ==} + '@esbuild/darwin-arm64@0.27.0': + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1798,8 +1798,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.26.0': - resolution: {integrity: sha512-OPnYj0zpYW0tHusMefyaMvNYQX5pNQuSsHFTHUBNp3vVXupwqpxofcjVsUx11CQhGVkGeXjC3WLjh91hgBG2xw==} + '@esbuild/darwin-x64@0.27.0': + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1816,8 +1816,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.26.0': - resolution: {integrity: sha512-jix2fa6GQeZhO1sCKNaNMjfj5hbOvoL2F5t+w6gEPxALumkpOV/wq7oUBMHBn2hY2dOm+mEV/K+xfZy3mrsxNQ==} + '@esbuild/freebsd-arm64@0.27.0': + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1834,8 +1834,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.26.0': - resolution: {integrity: sha512-tccJaH5xHJD/239LjbVvJwf6T4kSzbk6wPFerF0uwWlkw/u7HL+wnAzAH5GB2irGhYemDgiNTp8wJzhAHQ64oA==} + '@esbuild/freebsd-x64@0.27.0': + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1852,8 +1852,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.26.0': - resolution: {integrity: sha512-IMJYN7FSkLttYyTbsbme0Ra14cBO5z47kpamo16IwggzzATFY2lcZAwkbcNkWiAduKrTgFJP7fW5cBI7FzcuNQ==} + '@esbuild/linux-arm64@0.27.0': + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1870,8 +1870,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.26.0': - resolution: {integrity: sha512-JY8NyU31SyRmRpuc5W8PQarAx4TvuYbyxbPIpHAZdr/0g4iBr8KwQBS4kiiamGl2f42BBecHusYCsyxi7Kn8UQ==} + '@esbuild/linux-arm@0.27.0': + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1888,8 +1888,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.26.0': - resolution: {integrity: sha512-XITaGqGVLgk8WOHw8We9Z1L0lbLFip8LyQzKYFKO4zFo1PFaaSKsbNjvkb7O8kEXytmSGRkYpE8LLVpPJpsSlw==} + '@esbuild/linux-ia32@0.27.0': + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1906,8 +1906,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.26.0': - resolution: {integrity: sha512-MkggfbDIczStUJwq9wU7gQ7kO33d8j9lWuOCDifN9t47+PeI+9m2QVh51EI/zZQ1spZtFMC1nzBJ+qNGCjJnsg==} + '@esbuild/linux-loong64@0.27.0': + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1924,8 +1924,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.26.0': - resolution: {integrity: sha512-fUYup12HZWAeccNLhQ5HwNBPr4zXCPgUWzEq2Rfw7UwqwfQrFZ0SR/JljaURR8xIh9t+o1lNUFTECUTmaP7yKA==} + '@esbuild/linux-mips64el@0.27.0': + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1942,8 +1942,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.26.0': - resolution: {integrity: sha512-MzRKhM0Ip+//VYwC8tialCiwUQ4G65WfALtJEFyU0GKJzfTYoPBw5XNWf0SLbCUYQbxTKamlVwPmcw4DgZzFxg==} + '@esbuild/linux-ppc64@0.27.0': + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1960,8 +1960,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.26.0': - resolution: {integrity: sha512-QhCc32CwI1I4Jrg1enCv292sm3YJprW8WHHlyxJhae/dVs+KRWkbvz2Nynl5HmZDW/m9ZxrXayHzjzVNvQMGQA==} + '@esbuild/linux-riscv64@0.27.0': + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1978,8 +1978,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.26.0': - resolution: {integrity: sha512-1D6vi6lfI18aNT1aTf2HV+RIlm6fxtlAp8eOJ4mmnbYmZ4boz8zYDar86sIYNh0wmiLJEbW/EocaKAX6Yso2fw==} + '@esbuild/linux-s390x@0.27.0': + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1996,8 +1996,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.26.0': - resolution: {integrity: sha512-rnDcepj7LjrKFvZkx+WrBv6wECeYACcFjdNPvVPojCPJD8nHpb3pv3AuR9CXgdnjH1O23btICj0rsp0L9wAnHA==} + '@esbuild/linux-x64@0.27.0': + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -2014,8 +2014,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.26.0': - resolution: {integrity: sha512-FSWmgGp0mDNjEXXFcsf12BmVrb+sZBBBlyh3LwB/B9ac3Kkc8x5D2WimYW9N7SUkolui8JzVnVlWh7ZmjCpnxw==} + '@esbuild/netbsd-arm64@0.27.0': + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -2032,8 +2032,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.26.0': - resolution: {integrity: sha512-0QfciUDFryD39QoSPUDshj4uNEjQhp73+3pbSAaxjV2qGOEDsM67P7KbJq7LzHoVl46oqhIhJ1S+skKGR7lMXA==} + '@esbuild/netbsd-x64@0.27.0': + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -2050,8 +2050,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.26.0': - resolution: {integrity: sha512-vmAK+nHhIZWImwJ3RNw9hX3fU4UGN/OqbSE0imqljNbUQC3GvVJ1jpwYoTfD6mmXmQaxdJY6Hn4jQbLGJKg5Yw==} + '@esbuild/openbsd-arm64@0.27.0': + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -2068,8 +2068,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.26.0': - resolution: {integrity: sha512-GPXF7RMkJ7o9bTyUsnyNtrFMqgM3X+uM/LWw4CeHIjqc32fm0Ir6jKDnWHpj8xHFstgWDUYseSABK9KCkHGnpg==} + '@esbuild/openbsd-x64@0.27.0': + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -2086,8 +2086,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.26.0': - resolution: {integrity: sha512-nUHZ5jEYqbBthbiBksbmHTlbb5eElyVfs/s1iHQ8rLBq1eWsd5maOnDpCocw1OM8kFK747d1Xms8dXJHtduxSw==} + '@esbuild/openharmony-arm64@0.27.0': + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -2104,8 +2104,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.26.0': - resolution: {integrity: sha512-TMg3KCTCYYaVO+R6P5mSORhcNDDlemUVnUbb8QkboUtOhb5JWKAzd5uMIMECJQOxHZ/R+N8HHtDF5ylzLfMiLw==} + '@esbuild/sunos-x64@0.27.0': + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -2122,8 +2122,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.26.0': - resolution: {integrity: sha512-apqYgoAUd6ZCb9Phcs8zN32q6l0ZQzQBdVXOofa6WvHDlSOhwCWgSfVQabGViThS40Y1NA4SCvQickgZMFZRlA==} + '@esbuild/win32-arm64@0.27.0': + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2140,8 +2140,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.26.0': - resolution: {integrity: sha512-FGJAcImbJNZzLWu7U6WB0iKHl4RuY4TsXEwxJPl9UZLS47agIZuILZEX3Pagfw7I4J3ddflomt9f0apfaJSbaw==} + '@esbuild/win32-ia32@0.27.0': + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2158,8 +2158,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.26.0': - resolution: {integrity: sha512-WAckBKaVnmFqbEhbymrPK7M086DQMpL1XoRbpmN0iW8k5JSXjDRQBhcZNa0VweItknLq9eAeCL34jK7/CDcw7A==} + '@esbuild/win32-x64@0.27.0': + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3242,95 +3242,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.47': - resolution: {integrity: sha512-vPP9/MZzESh9QtmvQYojXP/midjgkkc1E4AdnPPAzQXo668ncHJcVLKjJKzoBdsQmaIvNjrMdsCwES8vTQHRQw==} + '@rolldown/binding-android-arm64@1.0.0-beta.49': + resolution: {integrity: sha512-xKQEOmqOet0vFHt/aqcoQGWvoDJhfSO8EBhuST0CDnxQRmnVzbI8keeeX62vi53ZyICKZxczyfx4A8dUY3dqKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.47': - resolution: {integrity: sha512-Lc3nrkxeaDVCVl8qR3qoxh6ltDZfkQ98j5vwIr5ALPkgjZtDK4BGCrrBoLpGVMg+csWcaqUbwbKwH5yvVa0oOw==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.49': + resolution: {integrity: sha512-kN0N/8m8HUYO13PqlIwxcXD7fu2E6GKu0J4iH7wUJw3T3QK+nvrc20rxtTZ0J6sA1sGCE8UYvvvnurDwMUp0dg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.47': - resolution: {integrity: sha512-eBYxQDwP0O33plqNVqOtUHqRiSYVneAknviM5XMawke3mwMuVlAsohtOqEjbCEl/Loi/FWdVeks5WkqAkzkYWQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.49': + resolution: {integrity: sha512-29qmvsgY2A4ymfy8sQkFFOFc13m04SLUcYn1iil41gpkYrAspBLkvsOQMHPCs3rQCOImgweT4tFotqTAonwphQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.47': - resolution: {integrity: sha512-Ns+kgp2+1Iq/44bY/Z30DETUSiHY7ZuqaOgD5bHVW++8vme9rdiWsN4yG4rRPXkdgzjvQ9TDHmZZKfY4/G11AA==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.49': + resolution: {integrity: sha512-fY+esrHjgt6+RAnDPuUk39RvFNmYhJekGyC6wr0HWXGTBed07Feap9BrYINSh6x5xFlNpOPs6tImKnV0zVDuWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.47': - resolution: {integrity: sha512-4PecgWCJhTA2EFOlptYJiNyVP2MrVP4cWdndpOu3WmXqWqZUmSubhb4YUAIxAxnXATlGjC1WjxNPhV7ZllNgdA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.49': + resolution: {integrity: sha512-oQNAqB+XrRM2AZaSPyudQETsPhzCZqgPICQu80fJuNyBFYoz6nonNNZtm3BJ9uP+HZfUk9NfOn9vPoCNuk6gAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.47': - resolution: {integrity: sha512-CyIunZ6D9U9Xg94roQI1INt/bLkOpPsZjZZkiaAZ0r6uccQdICmC99M9RUPlMLw/qg4yEWLlQhG73W/mG437NA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.49': + resolution: {integrity: sha512-bJinAiuWUJvlBxPa8ZmRnWkmmAoUlSWtZT4pRkWi/QX3HlgHfUUbhF+d7aZLciai+iFfbiPqOwCL2tqNXXrUsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.47': - resolution: {integrity: sha512-doozc/Goe7qRCSnzfJbFINTHsMktqmZQmweull6hsZZ9sjNWQ6BWQnbvOlfZJe4xE5NxM1NhPnY5Giqnl3ZrYQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.49': + resolution: {integrity: sha512-gwueY8EJU7afq5tNwKSjYy5JqTR/0MNzZfv6s5dX+rMgeUpTNhwIToLO1F41TPYEa+6LRTXUWG23DO/ONPzUJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.47': - resolution: {integrity: sha512-fodvSMf6Aqwa0wEUSTPewmmZOD44rc5Tpr5p9NkwQ6W1SSpUKzD3SwpJIgANDOhwiYhDuiIaYPGB7Ujkx1q0UQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.49': + resolution: {integrity: sha512-VXYkjzzEZh5N5Ue1IEcBgL8RuJu5jWrIKmg8WY6hhCbnNJ1IOsObT4HFW+rE8ZaKNjoIXzImoiYi1UAkKiQRYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.47': - resolution: {integrity: sha512-Rxm5hYc0mGjwLh5sjlGmMygxAaV2gnsx7CNm2lsb47oyt5UQyPDZf3GP/ct8BEcwuikdqzsrrlIp8+kCSvMFNQ==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.49': + resolution: {integrity: sha512-S5Yw6g/ftiW7MpNpnOM5vSIlDzGuohDY8y7VOI47+92HhO6WqsNfcMkDZXm3G5l6YIfUNStGBV86NWrzasp+sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.47': - resolution: {integrity: sha512-YakuVe+Gc87jjxazBL34hbr8RJpRuFBhun7NEqoChVDlH5FLhLXjAPHqZd990TVGVNkemourf817Z8u2fONS8w==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.49': + resolution: {integrity: sha512-bhRoMO2oP46W1UDd/PTrSdoIYfvLS2jiFAned0SOzOO0tcait9u+b9i8h4ZugbT2IK4qUXNezovbHJs7hKJOEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.47': - resolution: {integrity: sha512-ak2GvTFQz3UAOw8cuQq8pWE+TNygQB6O47rMhvevvTzETh7VkHRFtRUwJynX5hwzFvQMP6G0az5JrBGuwaMwYQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.49': + resolution: {integrity: sha512-Owp6Y1RQ84UMOV8hrg5e1Fmu8Po1IUXWytAHUtPcc00+ty6Gr9g5GgLLw0oblu7QovBr4848ozvkMcEj3vDKgA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.47': - resolution: {integrity: sha512-o5BpmBnXU+Cj+9+ndMcdKjhZlPb79dVPBZnWwMnI4RlNSSq5yOvFZqvfPYbyacvnW03Na4n5XXQAPhu3RydZ0w==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.49': + resolution: {integrity: sha512-dnheX8aXsN9P12uwPOW3TVvqSnQ1cfjKQlYgU2dTkrRpnco0kTGvqE1nEWybGukTyuPdzVvrGElgSGEJ7crcSQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.47': - resolution: {integrity: sha512-FVOmfyYehNE92IfC9Kgs913UerDog2M1m+FADJypKz0gmRg3UyTt4o1cZMCAl7MiR89JpM9jegNO1nXuP1w1vw==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.49': + resolution: {integrity: sha512-Blt1aODXiAuEdZBqHYXGJwVFlonXKkVEJy5hhxOgnAVi/0mzFNWDxc8qVlxl7dpQjQdboW/wXdgMHpTDfomicg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.47': - resolution: {integrity: sha512-by/70F13IUE101Bat0oeH8miwWX5mhMFPk1yjCdxoTNHTyTdLgb0THNaebRM6AP7Kz+O3O2qx87sruYuF5UxHg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.49': + resolution: {integrity: sha512-sSu4qUlL/62QJrR3P+Bd+EblD8tUpnovUz65qow3PA7YxH+f5NFDbCJMR1m5b8zBuVZwZIHfzbuawz+Vl34/xg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.47': - resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==} + '@rolldown/pluginutils@1.0.0-beta.49': + resolution: {integrity: sha512-HLlu3Qn3ePmNCbfehwKWXQMzX/2rzcL6Jmpo+Dl3xnq46TGMyJAgO+IsS8ka7IDLeD3wcoOhjJwxTdIdbrFhGw==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3400,122 +3400,243 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.53.2': + resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.53.1': resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.53.2': + resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.53.1': resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.53.2': + resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.53.1': resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.53.2': + resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.53.1': resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.53.2': + resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.1': resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.2': + resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.53.1': resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.53.2': + resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.53.1': resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.53.2': + resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.53.1': resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.53.2': + resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.53.1': resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.53.2': + resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.53.1': resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.53.2': + resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.53.1': resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.53.2': + resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.53.1': resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.53.2': + resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.53.1': resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.53.2': + resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.53.1': resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.53.2': + resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.53.1': resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.53.2': + resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openharmony-arm64@4.53.1': resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.53.2': + resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.53.1': resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.53.2': + resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.1': resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.2': + resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.53.1': resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.53.2': + resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.1': resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.2': + resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.53.1': resolution: {integrity: sha512-S2Vy3hXqx+j+Yo4Pks/avPv3ogXO5E5dmvpm2YhjABnYVI7r6myI9KaDzJRL64s0ZHG1044InpA9DysCIe45GQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3877,39 +3998,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.46.3': - resolution: {integrity: sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==} + '@typescript-eslint/eslint-plugin@8.46.4': + resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.3 + '@typescript-eslint/parser': ^8.46.4 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.3': - resolution: {integrity: sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==} + '@typescript-eslint/parser@8.46.4': + resolution: {integrity: sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.3': - resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==} + '@typescript-eslint/project-service@8.46.4': + resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.3': - resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==} + '@typescript-eslint/scope-manager@8.46.4': + resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.3': - resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==} + '@typescript-eslint/tsconfig-utils@8.46.4': + resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.3': - resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==} + '@typescript-eslint/type-utils@8.46.4': + resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3919,21 +4040,25 @@ packages: resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.3': - resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==} + '@typescript-eslint/types@8.46.4': + resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.4': + resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.3': - resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==} + '@typescript-eslint/utils@8.46.4': + resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.3': - resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==} + '@typescript-eslint/visitor-keys@8.46.4': + resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.24': @@ -4414,8 +4539,8 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + autoprefixer@10.4.22: + resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -5407,8 +5532,8 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.26.0: - resolution: {integrity: sha512-9rZuermDo9ZbWvKBv/vDRaRciCpR4L3rEbZLDs5kDq3TrCHRQZaQipQeV9wK/btpLBzNUBujTrd1uorDxbL/GA==} + esbuild-wasm@0.27.0: + resolution: {integrity: sha512-4XpLDOY4sOzqgiezPXDkHTn25cBA1MKN5OTotehoFR7/wTpSYCK76OA8rQfpiuz12G27JpGxxdh+/D9GcNl61w==} engines: {node: '>=18'} hasBin: true @@ -5417,8 +5542,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.26.0: - resolution: {integrity: sha512-3Hq7jri+tRrVWha+ZeIVhl4qJRha/XjRNSopvTsOaCvfPHrflTYTcUFcEjMKdxofsXXsdc4zjg5NOTnL4Gl57Q==} + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} engines: {node: '>=18'} hasBin: true @@ -5779,8 +5904,8 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -7989,8 +8114,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.47: - resolution: {integrity: sha512-Mid74GckX1OeFAOYz9KuXeWYhq3xkXbMziYIC+ULVdUzPTG9y70OBSBQDQn9hQP8u/AfhuYw1R0BSg15nBI4Dg==} + rolldown@1.0.0-beta.49: + resolution: {integrity: sha512-Bfmdn3ZqyCwi1LxG39KBrSlil9a/xnrOrAj+jqqN2YTR/WJIEOOfwNKgDALQvr0xlO9bG/i1C883KGd4nd7SrA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8020,6 +8145,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.53.2: + resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} + 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'} @@ -8083,8 +8213,8 @@ packages: webpack: optional: true - sass@1.93.3: - resolution: {integrity: sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==} + sass@1.94.0: + resolution: {integrity: sha512-Dqh7SiYcaFtdv5Wvku6QgS5IGPm281L+ZtVD1U2FJa7Q0EFRlq8Z3sjYtz6gYObsYThUOz9ArwFqPZx+1azILQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -10441,7 +10571,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.26.0': + '@esbuild/aix-ppc64@0.27.0': optional: true '@esbuild/aix-ppc64@0.27.0': @@ -10450,7 +10580,7 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.26.0': + '@esbuild/android-arm64@0.27.0': optional: true '@esbuild/android-arm64@0.27.0': @@ -10459,7 +10589,7 @@ snapshots: '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.26.0': + '@esbuild/android-arm@0.27.0': optional: true '@esbuild/android-arm@0.27.0': @@ -10468,7 +10598,7 @@ snapshots: '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.26.0': + '@esbuild/android-x64@0.27.0': optional: true '@esbuild/android-x64@0.27.0': @@ -10477,7 +10607,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.26.0': + '@esbuild/darwin-arm64@0.27.0': optional: true '@esbuild/darwin-arm64@0.27.0': @@ -10486,7 +10616,7 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.26.0': + '@esbuild/darwin-x64@0.27.0': optional: true '@esbuild/darwin-x64@0.27.0': @@ -10495,7 +10625,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.26.0': + '@esbuild/freebsd-arm64@0.27.0': optional: true '@esbuild/freebsd-arm64@0.27.0': @@ -10504,7 +10634,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.26.0': + '@esbuild/freebsd-x64@0.27.0': optional: true '@esbuild/freebsd-x64@0.27.0': @@ -10513,7 +10643,7 @@ snapshots: '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.26.0': + '@esbuild/linux-arm64@0.27.0': optional: true '@esbuild/linux-arm64@0.27.0': @@ -10522,7 +10652,7 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.26.0': + '@esbuild/linux-arm@0.27.0': optional: true '@esbuild/linux-arm@0.27.0': @@ -10531,7 +10661,7 @@ snapshots: '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.26.0': + '@esbuild/linux-ia32@0.27.0': optional: true '@esbuild/linux-ia32@0.27.0': @@ -10540,7 +10670,7 @@ snapshots: '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.26.0': + '@esbuild/linux-loong64@0.27.0': optional: true '@esbuild/linux-loong64@0.27.0': @@ -10549,7 +10679,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.26.0': + '@esbuild/linux-mips64el@0.27.0': optional: true '@esbuild/linux-mips64el@0.27.0': @@ -10558,7 +10688,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.26.0': + '@esbuild/linux-ppc64@0.27.0': optional: true '@esbuild/linux-ppc64@0.27.0': @@ -10567,7 +10697,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.26.0': + '@esbuild/linux-riscv64@0.27.0': optional: true '@esbuild/linux-riscv64@0.27.0': @@ -10576,7 +10706,7 @@ snapshots: '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.26.0': + '@esbuild/linux-s390x@0.27.0': optional: true '@esbuild/linux-s390x@0.27.0': @@ -10585,7 +10715,7 @@ snapshots: '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.26.0': + '@esbuild/linux-x64@0.27.0': optional: true '@esbuild/linux-x64@0.27.0': @@ -10594,7 +10724,7 @@ snapshots: '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.26.0': + '@esbuild/netbsd-arm64@0.27.0': optional: true '@esbuild/netbsd-arm64@0.27.0': @@ -10603,7 +10733,7 @@ snapshots: '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.26.0': + '@esbuild/netbsd-x64@0.27.0': optional: true '@esbuild/netbsd-x64@0.27.0': @@ -10612,7 +10742,7 @@ snapshots: '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.26.0': + '@esbuild/openbsd-arm64@0.27.0': optional: true '@esbuild/openbsd-arm64@0.27.0': @@ -10621,7 +10751,7 @@ snapshots: '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.26.0': + '@esbuild/openbsd-x64@0.27.0': optional: true '@esbuild/openbsd-x64@0.27.0': @@ -10630,7 +10760,7 @@ snapshots: '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.26.0': + '@esbuild/openharmony-arm64@0.27.0': optional: true '@esbuild/openharmony-arm64@0.27.0': @@ -10639,7 +10769,7 @@ snapshots: '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.26.0': + '@esbuild/sunos-x64@0.27.0': optional: true '@esbuild/sunos-x64@0.27.0': @@ -10648,7 +10778,7 @@ snapshots: '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.26.0': + '@esbuild/win32-arm64@0.27.0': optional: true '@esbuild/win32-arm64@0.27.0': @@ -10657,7 +10787,7 @@ snapshots: '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.26.0': + '@esbuild/win32-ia32@0.27.0': optional: true '@esbuild/win32-ia32@0.27.0': @@ -10666,7 +10796,7 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.26.0': + '@esbuild/win32-x64@0.27.0': optional: true '@esbuild/win32-x64@0.27.0': @@ -11862,59 +11992,59 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.47': + '@rolldown/binding-android-arm64@1.0.0-beta.49': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.47': + '@rolldown/binding-darwin-arm64@1.0.0-beta.49': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.47': + '@rolldown/binding-darwin-x64@1.0.0-beta.49': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.47': + '@rolldown/binding-freebsd-x64@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.47': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.47': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.47': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.47': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.49': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.47': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.49': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.47': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.49': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.47': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.49': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.47': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.49': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.47': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.49': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.47': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.49': optional: true - '@rolldown/pluginutils@1.0.0-beta.47': {} + '@rolldown/pluginutils@1.0.0-beta.49': {} - '@rollup/plugin-alias@6.0.0(rollup@4.53.1)': + '@rollup/plugin-alias@6.0.0(rollup@4.53.2)': optionalDependencies: - rollup: 4.53.1 + rollup: 4.53.2 - '@rollup/plugin-commonjs@29.0.0(rollup@4.53.1)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.1) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11922,7 +12052,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.1 + rollup: 4.53.2 '@rollup/plugin-json@6.1.0(rollup@4.53.1)': dependencies: @@ -11930,33 +12060,39 @@ snapshots: optionalDependencies: rollup: 4.53.1 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.1)': + '@rollup/plugin-json@6.1.0(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.1) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + optionalDependencies: + rollup: 4.53.2 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.2)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.1 + rollup: 4.53.2 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.1)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.1) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.1 + rollup: 4.53.2 - '@rollup/pluginutils@5.2.0(rollup@4.53.1)': + '@rollup/pluginutils@5.2.0(rollup@4.53.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.1 + rollup: 4.53.2 '@rollup/pluginutils@5.3.0(rollup@4.53.1)': dependencies: @@ -11966,72 +12102,146 @@ snapshots: optionalDependencies: rollup: 4.53.1 + '@rollup/pluginutils@5.3.0(rollup@4.53.2)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.53.2 + '@rollup/rollup-android-arm-eabi@4.53.1': optional: true + '@rollup/rollup-android-arm-eabi@4.53.2': + optional: true + '@rollup/rollup-android-arm64@4.53.1': optional: true + '@rollup/rollup-android-arm64@4.53.2': + optional: true + '@rollup/rollup-darwin-arm64@4.53.1': optional: true + '@rollup/rollup-darwin-arm64@4.53.2': + optional: true + '@rollup/rollup-darwin-x64@4.53.1': optional: true + '@rollup/rollup-darwin-x64@4.53.2': + optional: true + '@rollup/rollup-freebsd-arm64@4.53.1': optional: true + '@rollup/rollup-freebsd-arm64@4.53.2': + optional: true + '@rollup/rollup-freebsd-x64@4.53.1': optional: true + '@rollup/rollup-freebsd-x64@4.53.2': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.1': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.2': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.1': optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.2': + optional: true + '@rollup/rollup-linux-arm64-musl@4.53.1': optional: true + '@rollup/rollup-linux-arm64-musl@4.53.2': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.53.1': optional: true + '@rollup/rollup-linux-loong64-gnu@4.53.2': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.1': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.2': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.1': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.2': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.53.1': optional: true + '@rollup/rollup-linux-riscv64-musl@4.53.2': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.1': optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.2': + optional: true + '@rollup/rollup-linux-x64-gnu@4.53.1': optional: true + '@rollup/rollup-linux-x64-gnu@4.53.2': + optional: true + '@rollup/rollup-linux-x64-musl@4.53.1': optional: true + '@rollup/rollup-linux-x64-musl@4.53.2': + optional: true + '@rollup/rollup-openharmony-arm64@4.53.1': optional: true + '@rollup/rollup-openharmony-arm64@4.53.2': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.1': optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.2': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.1': optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.2': + optional: true + '@rollup/rollup-win32-x64-gnu@4.53.1': optional: true + '@rollup/rollup-win32-x64-gnu@4.53.2': + optional: true + '@rollup/rollup-win32-x64-msvc@4.53.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.53.2': + optional: true + '@rollup/wasm-node@4.53.1': dependencies: '@types/estree': 1.0.8 @@ -12318,10 +12528,10 @@ snapshots: '@types/less@3.0.8': {} - '@types/loader-utils@3.0.0(esbuild@0.26.0)': + '@types/loader-utils@3.0.0(esbuild@0.27.0)': dependencies: '@types/node': 22.19.0 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12471,14 +12681,14 @@ snapshots: '@types/node': 22.19.0 optional: true - '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.3 - '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.3 + '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.4 eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12488,41 +12698,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.3 - '@typescript-eslint/types': 8.46.3 - '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.3 + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.4 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.3(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) - '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.3': + '@typescript-eslint/scope-manager@8.46.4': dependencies: - '@typescript-eslint/types': 8.46.3 - '@typescript-eslint/visitor-keys': 8.46.3 + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/visitor-keys': 8.46.4 - '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.3 - '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12532,12 +12742,14 @@ snapshots: '@typescript-eslint/types@8.46.3': {} - '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)': + '@typescript-eslint/types@8.46.4': {} + + '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.3(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) - '@typescript-eslint/types': 8.46.3 - '@typescript-eslint/visitor-keys': 8.46.3 + '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/visitor-keys': 8.46.4 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12548,20 +12760,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.3 - '@typescript-eslint/types': 8.46.3 - '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.3': + '@typescript-eslint/visitor-keys@8.46.4': dependencies: - '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/types': 8.46.4 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.24': @@ -12724,11 +12936,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.8 @@ -12741,7 +12953,7 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12754,13 +12966,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.8': dependencies: @@ -12817,11 +13029,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.1) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.2) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.53.1 + rollup: 4.53.2 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -13281,11 +13493,11 @@ snapshots: atomic-sleep@1.0.0: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.22(postcss@8.5.6): dependencies: browserslist: 4.27.0 caniuse-lite: 1.0.30001754 - fraction.js: 4.3.7 + fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 @@ -13301,11 +13513,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.26.0)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.27.0)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13905,14 +14117,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.26.0)): + copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.27.0)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) core-js-compat@3.46.0: dependencies: @@ -13956,7 +14168,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.102.1(esbuild@0.26.0)): + css-loader@7.1.2(webpack@5.102.1(esbuild@0.27.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13967,7 +14179,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) css-select@6.0.0: dependencies: @@ -14417,7 +14629,7 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.26.0: {} + esbuild-wasm@0.27.0: {} esbuild@0.25.12: optionalDependencies: @@ -14448,34 +14660,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.26.0: + esbuild@0.27.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.26.0 - '@esbuild/android-arm': 0.26.0 - '@esbuild/android-arm64': 0.26.0 - '@esbuild/android-x64': 0.26.0 - '@esbuild/darwin-arm64': 0.26.0 - '@esbuild/darwin-x64': 0.26.0 - '@esbuild/freebsd-arm64': 0.26.0 - '@esbuild/freebsd-x64': 0.26.0 - '@esbuild/linux-arm': 0.26.0 - '@esbuild/linux-arm64': 0.26.0 - '@esbuild/linux-ia32': 0.26.0 - '@esbuild/linux-loong64': 0.26.0 - '@esbuild/linux-mips64el': 0.26.0 - '@esbuild/linux-ppc64': 0.26.0 - '@esbuild/linux-riscv64': 0.26.0 - '@esbuild/linux-s390x': 0.26.0 - '@esbuild/linux-x64': 0.26.0 - '@esbuild/netbsd-arm64': 0.26.0 - '@esbuild/netbsd-x64': 0.26.0 - '@esbuild/openbsd-arm64': 0.26.0 - '@esbuild/openbsd-x64': 0.26.0 - '@esbuild/openharmony-arm64': 0.26.0 - '@esbuild/sunos-x64': 0.26.0 - '@esbuild/win32-arm64': 0.26.0 - '@esbuild/win32-ia32': 0.26.0 - '@esbuild/win32-x64': 0.26.0 + '@esbuild/aix-ppc64': 0.27.0 + '@esbuild/android-arm': 0.27.0 + '@esbuild/android-arm64': 0.27.0 + '@esbuild/android-x64': 0.27.0 + '@esbuild/darwin-arm64': 0.27.0 + '@esbuild/darwin-x64': 0.27.0 + '@esbuild/freebsd-arm64': 0.27.0 + '@esbuild/freebsd-x64': 0.27.0 + '@esbuild/linux-arm': 0.27.0 + '@esbuild/linux-arm64': 0.27.0 + '@esbuild/linux-ia32': 0.27.0 + '@esbuild/linux-loong64': 0.27.0 + '@esbuild/linux-mips64el': 0.27.0 + '@esbuild/linux-ppc64': 0.27.0 + '@esbuild/linux-riscv64': 0.27.0 + '@esbuild/linux-s390x': 0.27.0 + '@esbuild/linux-x64': 0.27.0 + '@esbuild/netbsd-arm64': 0.27.0 + '@esbuild/netbsd-x64': 0.27.0 + '@esbuild/openbsd-arm64': 0.27.0 + '@esbuild/openbsd-x64': 0.27.0 + '@esbuild/openharmony-arm64': 0.27.0 + '@esbuild/sunos-x64': 0.27.0 + '@esbuild/win32-arm64': 0.27.0 + '@esbuild/win32-ia32': 0.27.0 + '@esbuild/win32-x64': 0.27.0 esbuild@0.27.0: optionalDependencies: @@ -14534,11 +14746,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14548,7 +14760,7 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14559,7 +14771,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14571,7 +14783,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14997,7 +15209,7 @@ snapshots: forwarded@0.2.0: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} fresh@0.5.2: {} @@ -16132,11 +16344,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.26.0)): + less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.27.0)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) less@4.4.2: dependencies: @@ -16157,11 +16369,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.26.0)): + license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.27.0)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) lie@3.3.0: dependencies: @@ -16422,11 +16634,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.26.0)): + mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.27.0)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) minimalistic-assert@1.0.1: {} @@ -16580,7 +16792,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.53.1)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.93.3 + sass: 1.94.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -17057,14 +17269,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.26.0)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.27.0)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) transitivePeerDependencies: - typescript @@ -17510,25 +17722,25 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@1.0.0-beta.47: + rolldown@1.0.0-beta.49: dependencies: '@oxc-project/types': 0.96.0 - '@rolldown/pluginutils': 1.0.0-beta.47 + '@rolldown/pluginutils': 1.0.0-beta.49 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.47 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.47 - '@rolldown/binding-darwin-x64': 1.0.0-beta.47 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.47 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.47 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.47 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.47 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.47 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.47 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.47 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.47 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.47 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.47 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.47 + '@rolldown/binding-android-arm64': 1.0.0-beta.49 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.49 + '@rolldown/binding-darwin-x64': 1.0.0-beta.49 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.49 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.49 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.49 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.49 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.49 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.49 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.49 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.49 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.49 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.49 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.49 rollup-license-plugin@3.0.2: dependencies: @@ -17544,10 +17756,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.53.1): + rollup-plugin-dts@6.2.3(rollup@4.53.2)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.1) - rollup: 4.53.1 + magic-string: 0.30.21 + rollup: 4.53.2 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.53.2): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.53.2) + rollup: 4.53.2 optionalDependencies: '@types/node': 22.19.0 @@ -17579,6 +17799,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.53.1 fsevents: 2.3.3 + rollup@4.53.2: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.2 + '@rollup/rollup-android-arm64': 4.53.2 + '@rollup/rollup-darwin-arm64': 4.53.2 + '@rollup/rollup-darwin-x64': 4.53.2 + '@rollup/rollup-freebsd-arm64': 4.53.2 + '@rollup/rollup-freebsd-x64': 4.53.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 + '@rollup/rollup-linux-arm-musleabihf': 4.53.2 + '@rollup/rollup-linux-arm64-gnu': 4.53.2 + '@rollup/rollup-linux-arm64-musl': 4.53.2 + '@rollup/rollup-linux-loong64-gnu': 4.53.2 + '@rollup/rollup-linux-ppc64-gnu': 4.53.2 + '@rollup/rollup-linux-riscv64-gnu': 4.53.2 + '@rollup/rollup-linux-riscv64-musl': 4.53.2 + '@rollup/rollup-linux-s390x-gnu': 4.53.2 + '@rollup/rollup-linux-x64-gnu': 4.53.2 + '@rollup/rollup-linux-x64-musl': 4.53.2 + '@rollup/rollup-openharmony-arm64': 4.53.2 + '@rollup/rollup-win32-arm64-msvc': 4.53.2 + '@rollup/rollup-win32-ia32-msvc': 4.53.2 + '@rollup/rollup-win32-x64-gnu': 4.53.2 + '@rollup/rollup-win32-x64-msvc': 4.53.2 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -17628,14 +17876,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.93.3)(webpack@5.102.1(esbuild@0.26.0)): + sass-loader@16.0.6(sass@1.94.0)(webpack@5.102.1(esbuild@0.27.0)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.93.3 - webpack: 5.102.1(esbuild@0.26.0) + sass: 1.94.0 + webpack: 5.102.1(esbuild@0.27.0) - sass@1.93.3: + sass@1.94.0: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -17946,11 +18194,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.26.0)): + source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.27.0)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) source-map-support@0.4.18: dependencies: @@ -18242,16 +18490,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.26.0)(webpack@5.102.1(esbuild@0.26.0)): + terser-webpack-plugin@5.3.14(esbuild@0.27.0)(webpack@5.102.1(esbuild@0.27.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) optionalDependencies: - esbuild: 0.26.0 + esbuild: 0.27.0 terser@5.44.1: dependencies: @@ -18666,7 +18914,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18679,15 +18927,15 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.93.3 + sass: 1.94.0 terser: 5.44.1 tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.8 - '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.8 '@vitest/runner': 4.0.8 '@vitest/snapshot': 4.0.8 @@ -18704,7 +18952,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 @@ -18772,7 +19020,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.26.0)): + webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.27.0)): dependencies: colorette: 2.0.20 memfs: 4.50.0 @@ -18781,9 +19029,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.26.0)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18811,10 +19059,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.26.0)) + webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.27.0)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) transitivePeerDependencies: - bufferutil - debug @@ -18829,12 +19077,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.26.0)): + webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.27.0)): dependencies: typed-assert: 1.0.9 - webpack: 5.102.1(esbuild@0.26.0) + webpack: 5.102.1(esbuild@0.27.0) - webpack@5.102.1(esbuild@0.26.0): + webpack@5.102.1(esbuild@0.27.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18858,7 +19106,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.26.0)(webpack@5.102.1(esbuild@0.26.0)) + terser-webpack-plugin: 5.3.14(esbuild@0.27.0)(webpack@5.102.1(esbuild@0.27.0)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 067004d6c76b88902cf52f0da9f4a3d2d59f4983 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 12 Nov 2025 09:43:37 -0800 Subject: [PATCH 1777/2162] build: fix lock file --- pnpm-lock.yaml | 476 +++++++++++-------------------------------------- 1 file changed, 102 insertions(+), 374 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d231297e8149..49f8b884120f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -909,8 +909,8 @@ importers: packages: - '@acemir/cssom@0.9.23': - resolution: {integrity: sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==} + '@acemir/cssom@0.9.19': + resolution: {integrity: sha512-Pp2gAQXPZ2o7lt4j0IMwNRXqQ3pagxtDj5wctL5U2Lz4oV0ocDNlkgx4DpxfyKav4S/bePuI+SMqcBSUHLy9kg==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -1714,12 +1714,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.0': - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} @@ -1732,12 +1726,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.0': - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} @@ -1750,12 +1738,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.0': - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -1768,12 +1750,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.0': - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} @@ -1786,12 +1762,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.0': - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} @@ -1804,12 +1774,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.0': - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -1822,12 +1786,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.0': - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} @@ -1840,12 +1798,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.0': - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} @@ -1858,12 +1810,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.0': - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} @@ -1876,12 +1822,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.0': - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} @@ -1894,12 +1834,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.0': - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} @@ -1912,12 +1846,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.0': - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} @@ -1930,12 +1858,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.0': - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} @@ -1948,12 +1870,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.0': - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -1966,12 +1882,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.0': - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} @@ -1984,12 +1894,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.0': - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -2002,12 +1906,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.0': - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -2020,12 +1918,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.0': - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -2038,12 +1930,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.0': - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -2056,12 +1942,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.0': - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -2074,12 +1954,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.0': - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -2092,12 +1966,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.0': - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} @@ -2110,12 +1978,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.0': - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} @@ -2128,12 +1990,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.0': - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} @@ -2146,12 +2002,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.0': - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} @@ -2164,12 +2014,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.0': - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2471,8 +2315,8 @@ packages: '@modelcontextprotocol/sdk': optional: true - '@grpc/grpc-js@1.14.1': - resolution: {integrity: sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==} + '@grpc/grpc-js@1.14.0': + resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} engines: {node: '>=12.10.0'} '@grpc/grpc-js@1.9.15': @@ -2642,6 +2486,15 @@ packages: '@types/node': optional: true + '@inquirer/type@3.0.9': + resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -2964,8 +2817,8 @@ packages: resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/package-json@7.0.2': - resolution: {integrity: sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==} + '@npmcli/package-json@7.0.1': + resolution: {integrity: sha512-956YUeI0YITbk2+KnirCkD19HLzES0habV+Els+dyZaVsaM6VGSiNwnRu6t3CZaqDLz4KXy2zx+0N/Zy6YjlAA==} engines: {node: ^20.17.0 || >=22.9.0} '@npmcli/promise-spawn@8.0.3': @@ -3088,8 +2941,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.38.0': - resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} + '@opentelemetry/semantic-conventions@1.37.0': + resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} '@oxc-project/types@0.96.0': @@ -3237,8 +3090,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.13': - resolution: {integrity: sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==} + '@puppeteer/browsers@2.10.12': + resolution: {integrity: sha512-mP9iLFZwH+FapKJLeA7/fLqOlSUwYpMwjR1P5J23qd4e7qGJwecJccJqHYrjw33jmIZYV4dtiTHPD/J+1e7cEw==} engines: {node: '>=18'} hasBin: true @@ -3637,8 +3490,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.53.1': - resolution: {integrity: sha512-S2Vy3hXqx+j+Yo4Pks/avPv3ogXO5E5dmvpm2YhjABnYVI7r6myI9KaDzJRL64s0ZHG1044InpA9DysCIe45GQ==} + '@rollup/wasm-node@4.52.5': + resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4036,8 +3889,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.3': - resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} + '@typescript-eslint/types@8.46.2': + resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/types@8.46.4': @@ -4386,8 +4239,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.2.0: - resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + ansi-escapes@7.1.1: + resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -4589,8 +4442,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.2: - resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + bare-events@2.8.1: + resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: @@ -4634,8 +4487,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.25: - resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==} + baseline-browser-mapping@2.8.23: + resolution: {integrity: sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ==} hasBin: true basic-ftp@5.0.5: @@ -4806,6 +4659,9 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + caniuse-lite@1.0.30001753: + resolution: {integrity: sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw==} + caniuse-lite@1.0.30001754: resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} @@ -5118,8 +4974,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.3: - resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} + cssstyle@5.3.2: + resolution: {integrity: sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==} engines: {node: '>=20'} custom-event@1.0.1: @@ -5412,8 +5268,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.249: - resolution: {integrity: sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==} + electron-to-chromium@1.5.244: + resolution: {integrity: sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5547,11 +5403,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.0: - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -6363,8 +6214,8 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - ip-address@10.1.0: - resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} ip-regex@4.3.0: @@ -6751,9 +6602,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@5.0.0: - resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} - engines: {node: ^20.17.0 || >=22.9.0} + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7659,8 +7510,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: @@ -7904,8 +7755,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.29.1: - resolution: {integrity: sha512-ErJ9qKCK+bdLvBa7QVSQTBSPm8KZbl1yC/WvhrZ0ut27hDf2QBzjDsn1IukzE1i1KtZ7NYGETOV4W1beoo9izA==} + puppeteer-core@24.27.0: + resolution: {integrity: sha512-yubwj2XXmTM3wRIpbhO5nCjbByPgpFHlgrsD4IK+gMPqO7/a5FfnoSXDKjmqi8A2M1Ewusz0rTI/r+IN0GU0MA==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8221,8 +8072,8 @@ packages: saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} - sax@1.4.3: - resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -9493,7 +9344,7 @@ packages: snapshots: - '@acemir/cssom@0.9.23': {} + '@acemir/cssom@0.9.19': {} '@actions/core@1.11.1': dependencies: @@ -10574,234 +10425,156 @@ snapshots: '@esbuild/aix-ppc64@0.27.0': optional: true - '@esbuild/aix-ppc64@0.27.0': - optional: true - '@esbuild/android-arm64@0.25.12': optional: true '@esbuild/android-arm64@0.27.0': optional: true - '@esbuild/android-arm64@0.27.0': - optional: true - '@esbuild/android-arm@0.25.12': optional: true '@esbuild/android-arm@0.27.0': optional: true - '@esbuild/android-arm@0.27.0': - optional: true - '@esbuild/android-x64@0.25.12': optional: true '@esbuild/android-x64@0.27.0': optional: true - '@esbuild/android-x64@0.27.0': - optional: true - '@esbuild/darwin-arm64@0.25.12': optional: true '@esbuild/darwin-arm64@0.27.0': optional: true - '@esbuild/darwin-arm64@0.27.0': - optional: true - '@esbuild/darwin-x64@0.25.12': optional: true '@esbuild/darwin-x64@0.27.0': optional: true - '@esbuild/darwin-x64@0.27.0': - optional: true - '@esbuild/freebsd-arm64@0.25.12': optional: true '@esbuild/freebsd-arm64@0.27.0': optional: true - '@esbuild/freebsd-arm64@0.27.0': - optional: true - '@esbuild/freebsd-x64@0.25.12': optional: true '@esbuild/freebsd-x64@0.27.0': optional: true - '@esbuild/freebsd-x64@0.27.0': - optional: true - '@esbuild/linux-arm64@0.25.12': optional: true '@esbuild/linux-arm64@0.27.0': optional: true - '@esbuild/linux-arm64@0.27.0': - optional: true - '@esbuild/linux-arm@0.25.12': optional: true '@esbuild/linux-arm@0.27.0': optional: true - '@esbuild/linux-arm@0.27.0': - optional: true - '@esbuild/linux-ia32@0.25.12': optional: true '@esbuild/linux-ia32@0.27.0': optional: true - '@esbuild/linux-ia32@0.27.0': - optional: true - '@esbuild/linux-loong64@0.25.12': optional: true '@esbuild/linux-loong64@0.27.0': optional: true - '@esbuild/linux-loong64@0.27.0': - optional: true - '@esbuild/linux-mips64el@0.25.12': optional: true '@esbuild/linux-mips64el@0.27.0': optional: true - '@esbuild/linux-mips64el@0.27.0': - optional: true - '@esbuild/linux-ppc64@0.25.12': optional: true '@esbuild/linux-ppc64@0.27.0': optional: true - '@esbuild/linux-ppc64@0.27.0': - optional: true - '@esbuild/linux-riscv64@0.25.12': optional: true '@esbuild/linux-riscv64@0.27.0': optional: true - '@esbuild/linux-riscv64@0.27.0': - optional: true - '@esbuild/linux-s390x@0.25.12': optional: true '@esbuild/linux-s390x@0.27.0': optional: true - '@esbuild/linux-s390x@0.27.0': - optional: true - '@esbuild/linux-x64@0.25.12': optional: true '@esbuild/linux-x64@0.27.0': optional: true - '@esbuild/linux-x64@0.27.0': - optional: true - '@esbuild/netbsd-arm64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.27.0': optional: true - '@esbuild/netbsd-arm64@0.27.0': - optional: true - '@esbuild/netbsd-x64@0.25.12': optional: true '@esbuild/netbsd-x64@0.27.0': optional: true - '@esbuild/netbsd-x64@0.27.0': - optional: true - '@esbuild/openbsd-arm64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.27.0': optional: true - '@esbuild/openbsd-arm64@0.27.0': - optional: true - '@esbuild/openbsd-x64@0.25.12': optional: true '@esbuild/openbsd-x64@0.27.0': optional: true - '@esbuild/openbsd-x64@0.27.0': - optional: true - '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.27.0': optional: true - '@esbuild/openharmony-arm64@0.27.0': - optional: true - '@esbuild/sunos-x64@0.25.12': optional: true '@esbuild/sunos-x64@0.27.0': optional: true - '@esbuild/sunos-x64@0.27.0': - optional: true - '@esbuild/win32-arm64@0.25.12': optional: true '@esbuild/win32-arm64@0.27.0': optional: true - '@esbuild/win32-arm64@0.27.0': - optional: true - '@esbuild/win32-ia32@0.25.12': optional: true '@esbuild/win32-ia32@0.27.0': optional: true - '@esbuild/win32-ia32@0.27.0': - optional: true - '@esbuild/win32-x64@0.25.12': optional: true '@esbuild/win32-x64@0.27.0': optional: true - '@esbuild/win32-x64@0.27.0': - optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -11210,7 +10983,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.37.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 big.js: 7.0.1 @@ -11246,7 +11019,7 @@ snapshots: - supports-color - utf-8-validate - '@grpc/grpc-js@1.14.1': + '@grpc/grpc-js@1.14.0': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -11408,6 +11181,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/type@3.0.9(@types/node@24.10.0)': + optionalDependencies: + '@types/node': 24.10.0 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -11501,7 +11278,7 @@ snapshots: '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': dependencies: '@inquirer/prompts': 7.10.0(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/type': 3.0.9(@types/node@24.10.0) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11705,13 +11482,13 @@ snapshots: '@npmcli/node-gyp@5.0.0': {} - '@npmcli/package-json@7.0.2': + '@npmcli/package-json@7.0.1': dependencies: '@npmcli/git': 7.0.0 glob: 11.0.3 hosted-git-info: 9.0.2 - json-parse-even-better-errors: 5.0.0 - proc-log: 6.0.0 + json-parse-even-better-errors: 4.0.0 + proc-log: 5.0.0 semver: 7.7.3 validate-npm-package-license: 3.0.4 @@ -11728,7 +11505,7 @@ snapshots: '@npmcli/run-script@10.0.2': dependencies: '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.2 + '@npmcli/package-json': 7.0.1 '@npmcli/promise-spawn': 9.0.0 node-gyp: 11.5.0 proc-log: 6.0.0 @@ -11864,9 +11641,9 @@ snapshots: '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/semantic-conventions@1.38.0': {} + '@opentelemetry/semantic-conventions@1.37.0': {} '@oxc-project/types@0.96.0': {} @@ -11977,7 +11754,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.13': + '@puppeteer/browsers@2.10.12': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -12054,12 +11831,6 @@ snapshots: optionalDependencies: rollup: 4.53.2 - '@rollup/plugin-json@6.1.0(rollup@4.53.1)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.1) - optionalDependencies: - rollup: 4.53.1 - '@rollup/plugin-json@6.1.0(rollup@4.53.2)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.2) @@ -12094,14 +11865,6 @@ snapshots: optionalDependencies: rollup: 4.53.2 - '@rollup/pluginutils@5.3.0(rollup@4.53.1)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.53.1 - '@rollup/pluginutils@5.3.0(rollup@4.53.2)': dependencies: '@types/estree': 1.0.8 @@ -12242,7 +12005,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.53.2': optional: true - '@rollup/wasm-node@4.53.1': + '@rollup/wasm-node@4.52.5': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -12291,7 +12054,7 @@ snapshots: '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.3 + '@typescript-eslint/types': 8.46.2 eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12389,7 +12152,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.1.0 + '@types/express-serve-static-core': 4.19.7 '@types/node': 22.19.0 '@types/connect@3.4.38': @@ -12740,7 +12503,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.3': {} + '@typescript-eslint/types@8.46.2': {} '@typescript-eslint/types@8.46.4': {} @@ -13071,7 +12834,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.29.1(bufferutil@4.0.9) + puppeteer-core: 24.27.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13356,7 +13119,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.2.0: + ansi-escapes@7.1.1: dependencies: environment: 1.1.0 @@ -13545,13 +13308,13 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.8.2: {} + bare-events@2.8.1: {} bare-fs@4.5.0: dependencies: - bare-events: 2.8.2 + bare-events: 2.8.1 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.8.2) + bare-stream: 2.7.0(bare-events@2.8.1) bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: @@ -13567,11 +13330,11 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.8.2): + bare-stream@2.7.0(bare-events@2.8.1): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.8.2 + bare-events: 2.8.1 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -13586,7 +13349,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.25: {} + baseline-browser-mapping@2.8.23: {} basic-ftp@5.0.5: {} @@ -13748,9 +13511,9 @@ snapshots: browserslist@4.27.0: dependencies: - baseline-browser-mapping: 2.8.25 - caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.249 + baseline-browser-mapping: 2.8.23 + caniuse-lite: 1.0.30001753 + electron-to-chromium: 1.5.244 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.27.0) @@ -13857,6 +13620,8 @@ snapshots: camelcase@6.3.0: {} + caniuse-lite@1.0.30001753: {} + caniuse-lite@1.0.30001754: {} caseless@0.12.0: {} @@ -14198,7 +13963,7 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.3: + cssstyle@5.3.2: dependencies: '@asamuzakjp/css-color': 4.0.5 '@csstools/css-syntax-patches-for-csstree': 1.0.15 @@ -14452,7 +14217,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.249: {} + electron-to-chromium@1.5.244: {} emoji-regex@10.6.0: {} @@ -14689,35 +14454,6 @@ snapshots: '@esbuild/win32-ia32': 0.27.0 '@esbuild/win32-x64': 0.27.0 - esbuild@0.27.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.0 - '@esbuild/android-arm': 0.27.0 - '@esbuild/android-arm64': 0.27.0 - '@esbuild/android-x64': 0.27.0 - '@esbuild/darwin-arm64': 0.27.0 - '@esbuild/darwin-x64': 0.27.0 - '@esbuild/freebsd-arm64': 0.27.0 - '@esbuild/freebsd-x64': 0.27.0 - '@esbuild/linux-arm': 0.27.0 - '@esbuild/linux-arm64': 0.27.0 - '@esbuild/linux-ia32': 0.27.0 - '@esbuild/linux-loong64': 0.27.0 - '@esbuild/linux-mips64el': 0.27.0 - '@esbuild/linux-ppc64': 0.27.0 - '@esbuild/linux-riscv64': 0.27.0 - '@esbuild/linux-s390x': 0.27.0 - '@esbuild/linux-x64': 0.27.0 - '@esbuild/netbsd-arm64': 0.27.0 - '@esbuild/netbsd-x64': 0.27.0 - '@esbuild/openbsd-arm64': 0.27.0 - '@esbuild/openbsd-x64': 0.27.0 - '@esbuild/openharmony-arm64': 0.27.0 - '@esbuild/sunos-x64': 0.27.0 - '@esbuild/win32-arm64': 0.27.0 - '@esbuild/win32-ia32': 0.27.0 - '@esbuild/win32-x64': 0.27.0 - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -14884,7 +14620,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.2 + bare-events: 2.8.1 transitivePeerDependencies: - bare-abort-controller @@ -15362,7 +15098,7 @@ snapshots: minimatch: 10.1.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 - path-scurry: 2.0.1 + path-scurry: 2.0.0 glob@7.2.3: dependencies: @@ -15414,7 +15150,7 @@ snapshots: google-gax@5.0.5(supports-color@10.2.2): dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.0 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 google-auth-library: 10.5.0(supports-color@10.2.2) @@ -15460,7 +15196,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.5.4): dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.0 protobufjs: 7.5.4 gtoken@8.0.0(supports-color@10.2.2): @@ -15753,7 +15489,7 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - ip-address@10.1.0: {} + ip-address@10.0.1: {} ip-regex@4.3.0: {} @@ -16092,9 +15828,9 @@ snapshots: jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.23 + '@acemir/cssom': 0.9.19 '@asamuzakjp/dom-selector': 6.7.4 - cssstyle: 5.3.3 + cssstyle: 5.3.2 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -16127,7 +15863,7 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@5.0.0: {} + json-parse-even-better-errors@4.0.0: {} json-schema-traverse@0.4.1: {} @@ -16478,7 +16214,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.2.0 + ansi-escapes: 7.1.1 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -16757,7 +16493,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.3 + sax: 1.4.1 optional: true negotiator@0.6.3: {} @@ -16774,8 +16510,8 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.53.1) - '@rollup/wasm-node': 4.53.1 + '@rollup/plugin-json': 6.1.0(rollup@4.53.2) + '@rollup/wasm-node': 4.52.5 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.27.0 @@ -16790,14 +16526,14 @@ snapshots: ora: 9.0.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.53.1)(typescript@5.9.3) + rollup-plugin-dts: 6.2.3(rollup@4.53.2)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.94.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.53.1 + rollup: 4.53.2 nock@14.0.10: dependencies: @@ -17106,7 +16842,7 @@ snapshots: dependencies: '@npmcli/git': 7.0.0 '@npmcli/installed-package-contents': 3.0.0 - '@npmcli/package-json': 7.0.2 + '@npmcli/package-json': 7.0.1 '@npmcli/promise-spawn': 8.0.3 '@npmcli/run-script': 10.0.2 cacache: 20.0.1 @@ -17174,7 +16910,7 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.1: + path-scurry@2.0.0: dependencies: lru-cache: 11.2.2 minipass: 7.1.2 @@ -17445,9 +17181,9 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.29.1(bufferutil@4.0.9): + puppeteer-core@24.27.0(bufferutil@4.0.9): dependencies: - '@puppeteer/browsers': 2.10.13 + '@puppeteer/browsers': 2.10.12 chromium-bidi: 10.5.1(devtools-protocol@0.0.1521046) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1521046 @@ -17748,14 +17484,6 @@ snapshots: node-fetch: 3.3.2 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.53.1)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.53.1 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.53.2)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17897,7 +17625,7 @@ snapshots: transitivePeerDependencies: - supports-color - sax@1.4.3: {} + sax@1.4.1: {} saxes@6.0.0: dependencies: @@ -18181,7 +17909,7 @@ snapshots: socks@2.8.7: dependencies: - ip-address: 10.1.0 + ip-address: 10.0.1 smart-buffer: 4.2.0 sonic-boom@3.8.1: @@ -19268,7 +18996,7 @@ snapshots: xml2js@0.4.23: dependencies: - sax: 1.4.3 + sax: 1.4.1 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} From 9c3d5ffb2168806a4abdcdb3fd7d1e4fc6e929be Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 12 Nov 2025 10:06:47 -0800 Subject: [PATCH 1778/2162] docs: release notes for the v20.3.10 release --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22b275a5128b..d9d6c4634355 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ + + +# 20.3.10 (2025-11-12) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [c854a719b](https://github.com/angular/angular-cli/commit/c854a719bb3a8d92fe42c8fba4b0b1789081b21c) | fix | correct `tsconfig.spec.json` include for spec files | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------- | +| [b3908f68e](https://github.com/angular/angular-cli/commit/b3908f68ed2f05cee56cbf0d9895dcfc3dc0ac25) | fix | do not remove `@angular/localize` when having external packages ([#31721](https://github.com/angular/angular-cli/pull/31721)) | + + + # 21.0.0-rc.1 (2025-11-05) From 5e580437ff152e232042728a7b8b18a5887827a2 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 12 Nov 2025 11:14:48 -0800 Subject: [PATCH 1779/2162] docs: release notes for the v21.0.0-rc.2 release --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9d6c4634355..c663e2d96270 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ + + +# 21.0.0-rc.2 (2025-11-12) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [c17d7a929](https://github.com/angular/angular-cli/commit/c17d7a929adccb77f3c2c33e70005f50032d8cae) | fix | add schema versioning and metadata to example database | +| [1be35b343](https://github.com/angular/angular-cli/commit/1be35b3433179481be85ea1cb892d66170e0aebe) | fix | promote zoneless migration MCP tool to stable | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [02f579f6e](https://github.com/angular/angular-cli/commit/02f579f6e7e490744deea5a193b0751ce31262db) | fix | correct `tsconfig.spec.json` include for spec files | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------- | +| [63c98741a](https://github.com/angular/angular-cli/commit/63c98741adcd21701b8bc572e9410cc1cf4f91c3) | fix | add webcontainer support for Vitest browser provider | +| [07f712253](https://github.com/angular/angular-cli/commit/07f712253bb6c37d27ae7be9845f497002b0780c) | fix | correctly handle absolute paths and casing in test discovery | +| [f82b77e47](https://github.com/angular/angular-cli/commit/f82b77e475e270dd0d23ce5d6b445c0a8aa8599a) | fix | do not remove `@angular/localize` when having external packages ([#31721](https://github.com/angular/angular-cli/pull/31721)) | +| [a44f8fa94](https://github.com/angular/angular-cli/commit/a44f8fa94bbf6ce8cdee05552dc56124507c6971) | fix | dynamically select Vitest DOM environment | +| [ae35543af](https://github.com/angular/angular-cli/commit/ae35543af7f5b3a5328c39fd4617d61b48067357) | fix | enhance Vitest config merging and validation | +| [41b12509a](https://github.com/angular/angular-cli/commit/41b12509a9db8bca637e0c67d21301a75774129c) | fix | ensure TestBed setup is robust in non-isolated Vitest | +| [0851d2eae](https://github.com/angular/angular-cli/commit/0851d2eae1e5b854a0a8a7df3a47b00693508a0f) | fix | show full aggregate errors from vitest | +| [cc2668f57](https://github.com/angular/angular-cli/commit/cc2668f5744588f9c3d847d2450dd1361e73c690) | fix | simplify SSL handling for `ng serve` with SSR ([#31723](https://github.com/angular/angular-cli/pull/31723)) | + + + # 20.3.10 (2025-11-12) From 5c3cb14e6dec8731533e031cca1088e56cd42535 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 12 Nov 2025 20:06:00 +0000 Subject: [PATCH 1780/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index aac5a765ee48..7487ab7618c1 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@75e967a4a7dd593c812c0b05382c562283ee4d39 + - uses: angular/dev-infra/github-actions/branch-manager@b1a3582375c99e7af6487d9eff637242652acbc2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9cabf086548..3ef91a10aa6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 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@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - 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 585239721fab..1d2de44a4146 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@75e967a4a7dd593c812c0b05382c562283ee4d39 + - uses: angular/dev-infra/github-actions/pull-request-labeling@b1a3582375c99e7af6487d9eff637242652acbc2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@75e967a4a7dd593c812c0b05382c562283ee4d39 + - uses: angular/dev-infra/github-actions/post-approval-changes@b1a3582375c99e7af6487d9eff637242652acbc2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index f00bf085a431..fd5c606a686e 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@75e967a4a7dd593c812c0b05382c562283ee4d39 + - uses: angular/dev-infra/github-actions/feature-request@b1a3582375c99e7af6487d9eff637242652acbc2 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index d727ccba8f9e..409d3ae5af79 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@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - 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@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - 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 a525a0556735..b6f1ab863c4c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/linting/licenses@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 - 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@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@75e967a4a7dd593c812c0b05382c562283ee4d39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 - 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/MODULE.bazel b/MODULE.bazel index 07065d2cb70f..c6d0c1005ef7 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "75e967a4a7dd593c812c0b05382c562283ee4d39", + commit = "b1a3582375c99e7af6487d9eff637242652acbc2", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 9f98687356ea..d495d1a8246a 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-rc.2", "@angular/localize": "21.0.0-rc.2", "@angular/material": "21.0.0-rc.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#58db89e9679349076ef973b2f2e64d0c808edffa", "@angular/platform-browser": "21.0.0-rc.2", "@angular/platform-server": "21.0.0-rc.2", "@angular/router": "21.0.0-rc.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49f8b884120f..e59501da4208 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,8 +49,8 @@ importers: specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(36cf5dcd6d9a30c992eda0464d5874e2) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#58db89e9679349076ef973b2f2e64d0c808edffa + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/58db89e9679349076ef973b2f2e64d0c808edffa(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1060,9 +1060,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a} - version: 0.0.0-75e967a4a7dd593c812c0b05382c562283ee4d39 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/58db89e9679349076ef973b2f2e64d0c808edffa': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/58db89e9679349076ef973b2f2e64d0c808edffa} + version: 0.0.0-b1a3582375c99e7af6487d9eff637242652acbc2 hasBin: true '@angular/platform-browser@21.0.0-rc.2': @@ -9528,7 +9528,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/fa2b2b9a824c1599b99b5279a3e2f28ecf472a6a(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/58db89e9679349076ef973b2f2e64d0c808edffa(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 8104a64806db..bb3892a02856 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#43282f1b0f01054f910e69dd605ecb8dd075d9bf", - "@angular/cdk": "github:angular/cdk-builds#c2bafca3fbb38b5339dcad30d726d35a821b5079", - "@angular/common": "github:angular/common-builds#b67b671cf1ef8a0095de80ce8619ef5da48eac4c", - "@angular/compiler": "github:angular/compiler-builds#c39afec0d512adcde87f3ed33175be6ed91198f3", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#26c22742008c38e633d6ced34f7422ed3dfe5d81", - "@angular/core": "github:angular/core-builds#a0ea5fc7b8c1aa9b9e1a1930a01700b21b939485", - "@angular/forms": "github:angular/forms-builds#9e94e2d5c0f5cf5f4319f32ecd138c252c8df8e0", - "@angular/language-service": "github:angular/language-service-builds#cec81111868fbc843dd8d4d200837e3e95fafd73", - "@angular/localize": "github:angular/localize-builds#061bb3688a81739030a3ffb6c1d1617cf5a164be", - "@angular/material": "github:angular/material-builds#510bda9fd706ea383dd37f626a0a34f5b7568267", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#7dae03cb69cc44f3f2b314727814ba1df6b8ca12", - "@angular/platform-browser": "github:angular/platform-browser-builds#0130ba329842023ca56aca3ec56790eafa5dca06", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#684f0c416c6de62e0280131377753041566ecfd1", - "@angular/platform-server": "github:angular/platform-server-builds#38b1b323ded75600c312f5f1c13c39d52053da98", - "@angular/router": "github:angular/router-builds#04a2030472b22bea996993afa919aef870f7306f", - "@angular/service-worker": "github:angular/service-worker-builds#e4798e165e890799183da8e16cfc843372787739" + "@angular/animations": "github:angular/animations-builds#6dbc69fa16a36a60935ed9c31a91e6d2960749de", + "@angular/cdk": "github:angular/cdk-builds#687e379f17563b317b754f9dd0f1b336f69e8eee", + "@angular/common": "github:angular/common-builds#68f18a3f1e734d8f35f00e2e7d82ad4de4dd2094", + "@angular/compiler": "github:angular/compiler-builds#fbb506ef62770cd167c889a697208e122090fe46", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#f88396669efee6452f783b9854b1e06e936fbc04", + "@angular/core": "github:angular/core-builds#6c4d50f7a603144bd932a44ac37674886e661f80", + "@angular/forms": "github:angular/forms-builds#6a5f9a2174175d4fa12cad652ea0e7740bcd0180", + "@angular/language-service": "github:angular/language-service-builds#ee8adeb90aabda8a4d18a6abd32a7c37327d6cd6", + "@angular/localize": "github:angular/localize-builds#058707e07ddcc2501a09e26d125b5b22baaa8cc6", + "@angular/material": "github:angular/material-builds#c90077cb072b42670a5a64baa3f0d2de98ca51b5", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#556f44a95261759b589dc724eb2a295ddb9ac9f3", + "@angular/platform-browser": "github:angular/platform-browser-builds#281e360fd2d728c9d48ce814f52d73887a7122b1", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#ab52678c5297407cf074b0b87a2de5fa12f43b3e", + "@angular/platform-server": "github:angular/platform-server-builds#ef3398b7c5780fff9e504c18dd13e6762d074432", + "@angular/router": "github:angular/router-builds#5988f9dd63618c1551b141d0fec3ce6ade1bc51c", + "@angular/service-worker": "github:angular/service-worker-builds#6ea3db4a89e1416e6893033e5b497ff877a8736d" } } From 72f2a46d66c16e83d2ed7fc5c41c0565a0ebe56e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 12 Nov 2025 13:13:05 -0500 Subject: [PATCH 1781/2162] refactor(@schematics/angular): rename jasmine-to-vitest schematic Renames the `jasmine-to-vitest` schematic to `refactor-jasmine-vitest` for better clarity and consistency with the `refactor` directory structure. This new name more accurately reflects the schematic's action and aligns with a scalable naming convention for future refactoring schematics. --- packages/schematics/angular/collection.json | 2 +- .../refactor/jasmine-vitest/index_spec.ts | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/schematics/angular/collection.json b/packages/schematics/angular/collection.json index 88bd8b2ee326..8d876cf7cb5b 100755 --- a/packages/schematics/angular/collection.json +++ b/packages/schematics/angular/collection.json @@ -144,7 +144,7 @@ "private": true, "description": "[INTERNAL] Adds tailwind to a project. Intended for use for ng new/add." }, - "jasmine-to-vitest": { + "refactor-jasmine-vitest": { "factory": "./refactor/jasmine-vitest", "schema": "./refactor/jasmine-vitest/schema.json", "description": "[EXPERIMENTAL] Refactors Jasmine tests to use Vitest APIs.", diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts index 194c4be4298d..fcb804886286 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index_spec.ts @@ -53,7 +53,7 @@ describe('Jasmine to Vitest Schematic', () => { appTree.overwrite(specFilePath, content); const tree = await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar' }, appTree, ); @@ -84,7 +84,7 @@ describe('Jasmine to Vitest Schematic', () => { appTree.create(testFilePath, testFileContent); const tree = await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar', fileSuffix: '.test.ts' }, appTree, ); @@ -113,7 +113,7 @@ describe('Jasmine to Vitest Schematic', () => { schematicRunner.logger.subscribe((entry) => logs.push(entry.message)); await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar', verbose: true }, appTree, ); @@ -138,7 +138,7 @@ describe('Jasmine to Vitest Schematic', () => { it('should only transform the specified file', async () => { const tree = await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar', include: 'src/app/nested/nested.spec.ts' }, appTree, ); @@ -152,7 +152,7 @@ describe('Jasmine to Vitest Schematic', () => { it('should handle a Windows-style path', async () => { const tree = await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar', include: 'src\\app\\nested\\nested.spec.ts' }, appTree, ); @@ -171,7 +171,7 @@ describe('Jasmine to Vitest Schematic', () => { ); const tree = await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar', include: 'src/app' }, appTree, ); @@ -188,7 +188,7 @@ describe('Jasmine to Vitest Schematic', () => { it('should process all files if `include` is not provided', async () => { const tree = await schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar' }, appTree, ); @@ -203,7 +203,7 @@ describe('Jasmine to Vitest Schematic', () => { it('should throw if the include path does not exist', async () => { await expectAsync( schematicRunner.runSchematic( - 'jasmine-to-vitest', + 'refactor-jasmine-vitest', { project: 'bar', include: 'src/non-existent' }, appTree, ), @@ -226,7 +226,7 @@ describe('Jasmine to Vitest Schematic', () => { const logs: string[] = []; schematicRunner.logger.subscribe((entry) => logs.push(entry.message)); - await schematicRunner.runSchematic('jasmine-to-vitest', {}, appTree); + await schematicRunner.runSchematic('refactor-jasmine-vitest', {}, appTree); expect(logs).toContain('Jasmine to Vitest Refactoring Summary:'); expect(logs).toContain('- 1 test file(s) scanned.'); From f826968d438e82f44217e09e60b9339190099dfd Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 13 Nov 2025 10:49:06 +0100 Subject: [PATCH 1782/2162] refactor: address issue with bazel resolution of peer dependencies Key changes include: --- .pnpmfile.cjs | 42 ------------ MODULE.bazel | 1 - .../angular_devkit/build_webpack/index.api.md | 4 +- modules/testing/builder/BUILD.bazel | 1 + modules/testing/builder/package.json | 1 + .../angular_devkit/build_angular/BUILD.bazel | 3 - .../src/builders/ssr-dev-server/index.ts | 3 +- .../src/builders/webpack-dev-server/index.ts | 21 +++--- .../src/builders/webpack/index.ts | 4 +- pnpm-lock.yaml | 67 ++++++++++--------- 10 files changed, 55 insertions(+), 92 deletions(-) delete mode 100644 .pnpmfile.cjs diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs deleted file mode 100644 index 111350ae8f9a..000000000000 --- a/.pnpmfile.cjs +++ /dev/null @@ -1,42 +0,0 @@ -const localPackages = new Set([ - '@angular-devkit/build-angular', - '@angular-devkit/build-webpack', - '@ngtools/webpack', -]); - -const peerDependenciesToTransform = ['webpack', 'webpack-dev-server', 'browser-sync']; - -function readPackage(pkg, context) { - // TODO(devversion): This allows us to make the peer dependencies of (e.g. webpack) a production dependency. - // because `rules_js` doesn't otherwise include the dependency in the `npm_package_store`. - // See: https://github.com/aspect-build/rules_js/issues/2226 - if (!pkg.peerDependencies || !localPackages.has(pkg.name)) { - return pkg; - } - - for (const key of peerDependenciesToTransform) { - // Any package that has a peerDependency on these deps, should instead treat the peerDependency as a - // regular dependency. - if (!pkg.peerDependencies[key]) { - continue; - } - - if (!pkg.devDependencies?.[key]) { - throw new Error( - `${key} is listed as a peerDependency in ${pkg.name}, but it is not listed in devDependencies. This is required.`, - ); - } - - pkg.dependencies ??= {}; - pkg.dependencies[key] = pkg.devDependencies[key]; - pkg.devDependencies[key] = undefined; - } - - return pkg; -} - -module.exports = { - hooks: { - readPackage, - }, -}; diff --git a/MODULE.bazel b/MODULE.bazel index c6d0c1005ef7..4e34d82ca83f 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -115,7 +115,6 @@ npm.npm_translate_lock( "webdriver-manager": "node ./bin/webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21", }, data = [ - "//:.pnpmfile.cjs", "//:package.json", "//:pnpm-workspace.yaml", "//modules/testing/builder:package.json", diff --git a/goldens/public-api/angular_devkit/build_webpack/index.api.md b/goldens/public-api/angular_devkit/build_webpack/index.api.md index db2b47c9ed74..0d60187627d5 100644 --- a/goldens/public-api/angular_devkit/build_webpack/index.api.md +++ b/goldens/public-api/angular_devkit/build_webpack/index.api.md @@ -7,8 +7,8 @@ import { BuilderContext } from '@angular-devkit/architect'; import { BuilderOutput } from '@angular-devkit/architect'; import { Observable } from 'rxjs'; -import webpack from 'webpack'; -import WebpackDevServer from 'webpack-dev-server'; +import type webpack from 'webpack'; +import type WebpackDevServer from 'webpack-dev-server'; // @public (undocumented) export type BuildResult = BuilderOutput & { diff --git a/modules/testing/builder/BUILD.bazel b/modules/testing/builder/BUILD.bazel index 9b88a714cd05..7f542efb0138 100644 --- a/modules/testing/builder/BUILD.bazel +++ b/modules/testing/builder/BUILD.bazel @@ -20,6 +20,7 @@ ts_project( # Needed at runtime by some builder tests relying on SSR being # resolvable in the test project. ":node_modules/@angular/ssr", + ":node_modules/browser-sync", ":node_modules/jsdom", ":node_modules/vitest", ":node_modules/@vitest/coverage-v8", diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index ddc029374d18..7d04585665af 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -4,6 +4,7 @@ "@angular-devkit/architect": "workspace:*", "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", + "browser-sync": "3.0.4", "@vitest/coverage-v8": "4.0.8", "jsdom": "27.1.0", "rxjs": "7.8.2", diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 7654aeadf12a..2a505e1fd8ca 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -226,7 +226,6 @@ ts_project( ":build_angular", ":build_angular_test_utils", ":node_modules/tinyglobby", - ":node_modules/webpack", "//:node_modules/@types/node", "//:node_modules/prettier", "//:node_modules/typescript", @@ -392,8 +391,6 @@ LARGE_SPECS = { ":node_modules/@angular/build", ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", - ":node_modules/@angular-devkit/build-webpack", - "//modules/testing/builder", # Base dependencies for the application in hello-world-app. # Some tests also require extra dependencies. diff --git a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts index 6219ea6a46a2..8ec879993e4f 100644 --- a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/index.ts @@ -21,6 +21,7 @@ import type { MiddlewareHandler, ProxyOptions, } from 'browser-sync'; +import { createRequire } from 'node:module'; import { join, resolve as pathResolve } from 'node:path'; import * as url from 'node:url'; import { @@ -64,7 +65,7 @@ export function execute( ): Observable { let browserSync: typeof import('browser-sync'); try { - browserSync = require('browser-sync'); + browserSync = createRequire(context.workspaceRoot + '/')('browser-sync'); } catch { return of({ success: false, diff --git a/packages/angular_devkit/build_webpack/src/builders/webpack-dev-server/index.ts b/packages/angular_devkit/build_webpack/src/builders/webpack-dev-server/index.ts index f078b614796c..66a2f09a6422 100644 --- a/packages/angular_devkit/build_webpack/src/builders/webpack-dev-server/index.ts +++ b/packages/angular_devkit/build_webpack/src/builders/webpack-dev-server/index.ts @@ -10,8 +10,8 @@ import { Builder, BuilderContext, createBuilder } from '@angular-devkit/architec import assert from 'node:assert'; import { resolve as pathResolve } from 'node:path'; import { Observable, from, isObservable, of, switchMap } from 'rxjs'; -import webpack from 'webpack'; -import WebpackDevServer from 'webpack-dev-server'; +import type webpack from 'webpack'; +import type WebpackDevServer from 'webpack-dev-server'; import { getEmittedFiles, getWebpackConfig } from '../../utils'; import { BuildResult, WebpackFactory, WebpackLoggingCallback } from '../webpack'; import { Schema as WebpackDevServerBuilderSchema } from './schema'; @@ -44,7 +44,7 @@ export function runWebpackDevServer( return of(result); } } else { - return of(webpack(c)); + return from(import('webpack').then((mod) => mod.default(c))); } }; @@ -54,9 +54,9 @@ export function runWebpackDevServer( ) => { if (options.webpackDevServerFactory) { return new options.webpackDevServerFactory(config, webpack); + } else { + return from(import('webpack-dev-server').then((mod) => new mod.default(config, webpack))); } - - return new WebpackDevServer(config, webpack); }; const { @@ -70,8 +70,14 @@ export function runWebpackDevServer( } = options; return createWebpack({ ...config, watch: false }).pipe( + switchMap(async (webpackCompiler) => { + return [ + webpackCompiler, + options.webpackDevServerFactory ?? (await import('webpack-dev-server')).default, + ] as unknown as [webpack.Compiler | null, WebpackDevServerFactory]; + }), switchMap( - (webpackCompiler) => + ([webpackCompiler, webpackDevServerFactory]) => new Observable((obs) => { assert(webpackCompiler, 'Webpack compiler factory did not return a compiler instance.'); @@ -79,7 +85,6 @@ export function runWebpackDevServer( devServerConfig.host ??= 'localhost'; let result: Partial; - const statsOptions = typeof config.stats === 'boolean' ? undefined : config.stats; webpackCompiler.hooks.done.tap('build-webpack', (stats) => { @@ -94,7 +99,7 @@ export function runWebpackDevServer( } as unknown as DevServerBuildOutput); }); - const devServer = createWebpackDevServer(webpackCompiler, devServerConfig); + const devServer = new webpackDevServerFactory(devServerConfig, webpackCompiler); devServer.startCallback((err) => { if (err) { obs.error(err); diff --git a/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts b/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts index 166a6385a0e1..ce3f91fd69d4 100644 --- a/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts +++ b/packages/angular_devkit/build_webpack/src/builders/webpack/index.ts @@ -10,7 +10,7 @@ import { Builder, BuilderContext, BuilderOutput, createBuilder } from '@angular- import assert from 'node:assert'; import { resolve as pathResolve } from 'node:path'; import { Observable, from, isObservable, of, switchMap } from 'rxjs'; -import webpack from 'webpack'; +import type webpack from 'webpack'; import { EmittedFiles, getEmittedFiles, getWebpackConfig } from '../../utils'; import { Schema as RealWebpackBuilderSchema } from './schema'; @@ -57,7 +57,7 @@ export function runWebpack( return of(result); } } else { - return of(webpack(c)); + return from(import('webpack').then((mod) => mod.default(c))); } }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e59501da4208..9ee2108110d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,8 +10,6 @@ overrides: packageExtensionsChecksum: sha256-3L73Fw32UVtE6x5BJxJPBtQtH/mgsr31grNpdhHP1IY= -pnpmfileChecksum: sha256-uP8jbELX5QePWiOvv7dnhxXXQrLZ8/Qxn4a0akzOcCQ= - importers: .: @@ -336,6 +334,9 @@ importers: '@vitest/coverage-v8': specifier: 4.0.8 version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + browser-sync: + specifier: 3.0.4 + version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: specifier: 27.1.0 version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -655,9 +656,6 @@ importers: babel-loader: specifier: 10.0.0 version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.27.0)) - browser-sync: - specifier: 3.0.4 - version: 3.0.4(bufferutil@4.0.9) browserslist: specifier: ^4.26.0 version: 4.27.0 @@ -770,6 +768,9 @@ importers: '@web/test-runner': specifier: 0.20.2 version: 0.20.2(bufferutil@4.0.9) + browser-sync: + specifier: 3.0.4 + version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) ng-packagr: specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) @@ -789,12 +790,6 @@ importers: rxjs: specifier: 7.8.2 version: 7.8.2 - webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.27.0) - webpack-dev-server: - specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)) devDependencies: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER @@ -802,6 +797,12 @@ importers: '@ngtools/webpack': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack + webpack: + specifier: 5.102.1 + version: 5.102.1(esbuild@0.27.0) + webpack-dev-server: + specifier: 5.2.2 + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)) packages/angular_devkit/core: dependencies: @@ -865,10 +866,6 @@ importers: version: 22.0.0 packages/ngtools/webpack: - dependencies: - webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.27.0) devDependencies: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER @@ -882,6 +879,9 @@ importers: typescript: specifier: 5.9.3 version: 5.9.3 + webpack: + specifier: 5.102.1 + version: 5.102.1(esbuild@0.27.0) packages/schematics/angular: dependencies: @@ -13455,24 +13455,24 @@ snapshots: fresh: 0.5.2 mitt: 1.2.0 - browser-sync-ui@3.0.4(bufferutil@4.0.9): + browser-sync-ui@3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: async-each-series: 0.1.1 chalk: 4.1.2 connect-history-api-fallback: 1.6.0 immutable: 3.8.2 server-destroy: 1.0.1 - socket.io-client: 4.8.1(bufferutil@4.0.9) + socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) stream-throttle: 0.1.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - browser-sync@3.0.4(bufferutil@4.0.9): + browser-sync@3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: browser-sync-client: 3.0.4 - browser-sync-ui: 3.0.4(bufferutil@4.0.9) + browser-sync-ui: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) bs-recipes: 1.3.4 chalk: 4.1.2 chokidar: 3.6.0 @@ -13496,7 +13496,7 @@ snapshots: serve-index: 1.9.1 serve-static: 1.16.2 server-destroy: 1.0.1 - socket.io: 4.8.1(bufferutil@4.0.9) + socket.io: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) ua-parser-js: 1.0.41 yargs: 17.7.2 transitivePeerDependencies: @@ -14239,12 +14239,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.3(bufferutil@4.0.9): + engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.7 engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9) + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -14253,7 +14253,7 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.4(bufferutil@4.0.9): + engine.io@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/cors': 2.8.19 '@types/node': 22.19.0 @@ -14263,7 +14263,7 @@ snapshots: cors: 2.8.5 debug: 4.3.7 engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9) + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - supports-color @@ -16000,7 +16000,7 @@ snapshots: qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 - socket.io: 4.8.1(bufferutil@4.0.9) + socket.io: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) source-map: 0.6.1 tmp: 0.2.5 ua-parser-js: 0.7.41 @@ -17852,20 +17852,20 @@ snapshots: smart-buffer@4.2.0: {} - socket.io-adapter@2.5.5(bufferutil@4.0.9): + socket.io-adapter@2.5.5(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: debug: 4.3.7 - ws: 8.17.1(bufferutil@4.0.9) + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-client@4.8.1(bufferutil@4.0.9): + socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.7 - engine.io-client: 6.6.3(bufferutil@4.0.9) + engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -17879,14 +17879,14 @@ snapshots: transitivePeerDependencies: - supports-color - socket.io@4.8.1(bufferutil@4.0.9): + socket.io@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 debug: 4.3.7 - engine.io: 6.6.4(bufferutil@4.0.9) - socket.io-adapter: 2.5.5(bufferutil@4.0.9) + engine.io: 6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io-adapter: 2.5.5(bufferutil@4.0.9)(utf-8-validate@6.0.5) socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -18973,9 +18973,10 @@ snapshots: optionalDependencies: bufferutil: 4.0.9 - ws@8.17.1(bufferutil@4.0.9): + ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): optionalDependencies: bufferutil: 4.0.9 + utf-8-validate: 6.0.5 ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): optionalDependencies: From 6e0f5da9fceeb359e2e476328a17ef78c43391db Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 12 Nov 2025 20:52:30 -0500 Subject: [PATCH 1783/2162] fix(@angular/build): enhance Vitest dependency externalization and pre-bundling This commit refactors the dependency handling for the Vitest runner to improve flexibility and correctness, especially for browser-based tests. The previously hardcoded list of external Angular packages has been removed. Instead, a new `externalPackages: true` option is passed to the application builder, allowing for more dynamic and configurable externalization of packages. This prevents packages from `node_modules` from being bundled into the test entry points. Note: For cases where a dependency should not be pre-bundled, the `optimizeDeps.exclude` option can be used within a custom runner configuration file. --- .../unit-test/runners/vitest/build-options.ts | 27 +++++-------------- .../unit-test/runners/vitest/executor.ts | 2 +- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 72152bd8c624..05aba1d9c261 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -14,21 +14,6 @@ import { NormalizedUnitTestBuilderOptions, injectTestingPolyfills } from '../../ import { findTests, getTestEntrypoints } from '../../test-discovery'; import { RunnerOptions } from '../api'; -/** - * A list of Angular related packages that should be marked as external. - * This allows Vite to pre-bundle them, improving performance. - */ -const ANGULAR_PACKAGES_TO_EXTERNALIZE = [ - '@angular/core', - '@angular/common', - '@angular/platform-browser', - '@angular/compiler', - '@angular/router', - '@angular/forms', - '@angular/animations', - 'rxjs', -]; - function createTestBedInitVirtualFile( providersFile: string | undefined, projectSourceRoot: string, @@ -110,11 +95,10 @@ export async function getVitestBuildOptions( }); entryPoints.set('init-testbed', 'angular:test-bed-init'); - const externalDependencies = new Set(['vitest']); - ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep)); - + // The 'vitest' package is always external for testing purposes + const externalDependencies = ['vitest']; if (baseBuildOptions.externalDependencies) { - baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep)); + externalDependencies.push(...baseBuildOptions.externalDependencies); } const buildOptions: Partial = { @@ -135,7 +119,10 @@ export async function getVitestBuildOptions( outputHashing: adjustOutputHashing(baseBuildOptions.outputHashing), optimization: false, entryPoints, - externalDependencies: [...externalDependencies], + // Enable support for vitest browser prebundling. Excludes can be controlled with a runnerConfig + // and the `optimizeDeps.exclude` option. + externalPackages: true, + externalDependencies, }; buildOptions.polyfills = injectTestingPolyfills(buildOptions.polyfills); diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 21cdd05c9359..8d09550b671a 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -231,7 +231,7 @@ export class VitestExecutor implements TestExecutor { coverage, projectName, projectSourceRoot: this.options.projectSourceRoot, - optimizeDepsInclude: this.externalMetadata.explicitBrowser, + optimizeDepsInclude: this.externalMetadata.implicitBrowser, reporters, setupFiles: testSetupFiles, projectPlugins, From c9389acc84ab425556188f648034c3b49fbecae4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 12 Nov 2025 17:34:41 -0500 Subject: [PATCH 1784/2162] fix(@angular/build): allow unit-test runner config with absolute path The `unit-test` builder now supports passing an absolute path as the value of the `runnerConfig` option. Previously all paths were joined with the workspace root. --- packages/angular/build/src/builders/unit-test/options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 74b30b1e95a6..3b003e9c3620 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -127,7 +127,7 @@ export async function normalizeOptions( dumpVirtualFiles: options.dumpVirtualFiles, listTests: options.listTests, runnerConfig: - typeof runnerConfig === 'string' ? path.join(workspaceRoot, runnerConfig) : runnerConfig, + typeof runnerConfig === 'string' ? path.resolve(workspaceRoot, runnerConfig) : runnerConfig, }; } From c235ccfe8a92613234f893a9a08b78dcd59d1f30 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 13 Nov 2025 10:15:57 +0000 Subject: [PATCH 1785/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 7487ab7618c1..df60213dca0b 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@b1a3582375c99e7af6487d9eff637242652acbc2 + - uses: angular/dev-infra/github-actions/branch-manager@854a5073df0fbdb0ea42232ba84b28d64014c56c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ef91a10aa6f..bc0509ca57cb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c 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@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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 1d2de44a4146..03d914b8ea29 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@b1a3582375c99e7af6487d9eff637242652acbc2 + - uses: angular/dev-infra/github-actions/pull-request-labeling@854a5073df0fbdb0ea42232ba84b28d64014c56c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@b1a3582375c99e7af6487d9eff637242652acbc2 + - uses: angular/dev-infra/github-actions/post-approval-changes@854a5073df0fbdb0ea42232ba84b28d64014c56c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index fd5c606a686e..f784e3fbb9c5 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@b1a3582375c99e7af6487d9eff637242652acbc2 + - uses: angular/dev-infra/github-actions/feature-request@854a5073df0fbdb0ea42232ba84b28d64014c56c with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 409d3ae5af79..d35ba8393f2c 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@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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 b6f1ab863c4c..15c670e53017 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/linting/licenses@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@b1a3582375c99e7af6487d9eff637242652acbc2 + uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c - 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/MODULE.bazel b/MODULE.bazel index 4e34d82ca83f..83143619bc9c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "b1a3582375c99e7af6487d9eff637242652acbc2", + commit = "854a5073df0fbdb0ea42232ba84b28d64014c56c", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index d495d1a8246a..eb3e1469e018 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/forms": "21.0.0-rc.2", "@angular/localize": "21.0.0-rc.2", "@angular/material": "21.0.0-rc.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#58db89e9679349076ef973b2f2e64d0c808edffa", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6e336a2e2a8919e0a5049c6800da3258d785d365", "@angular/platform-browser": "21.0.0-rc.2", "@angular/platform-server": "21.0.0-rc.2", "@angular/router": "21.0.0-rc.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ee2108110d3..a40698350ab4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0-rc.1 version: 21.0.0-rc.1(36cf5dcd6d9a30c992eda0464d5874e2) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#58db89e9679349076ef973b2f2e64d0c808edffa - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/58db89e9679349076ef973b2f2e64d0c808edffa(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6e336a2e2a8919e0a5049c6800da3258d785d365 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6e336a2e2a8919e0a5049c6800da3258d785d365(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -1060,9 +1060,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/58db89e9679349076ef973b2f2e64d0c808edffa': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/58db89e9679349076ef973b2f2e64d0c808edffa} - version: 0.0.0-b1a3582375c99e7af6487d9eff637242652acbc2 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6e336a2e2a8919e0a5049c6800da3258d785d365': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6e336a2e2a8919e0a5049c6800da3258d785d365} + version: 0.0.0-854a5073df0fbdb0ea42232ba84b28d64014c56c hasBin: true '@angular/platform-browser@21.0.0-rc.2': @@ -9528,7 +9528,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/58db89e9679349076ef973b2f2e64d0c808edffa(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6e336a2e2a8919e0a5049c6800da3258d785d365(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index bb3892a02856..c90516a91cd0 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#6dbc69fa16a36a60935ed9c31a91e6d2960749de", - "@angular/cdk": "github:angular/cdk-builds#687e379f17563b317b754f9dd0f1b336f69e8eee", - "@angular/common": "github:angular/common-builds#68f18a3f1e734d8f35f00e2e7d82ad4de4dd2094", - "@angular/compiler": "github:angular/compiler-builds#fbb506ef62770cd167c889a697208e122090fe46", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#f88396669efee6452f783b9854b1e06e936fbc04", - "@angular/core": "github:angular/core-builds#6c4d50f7a603144bd932a44ac37674886e661f80", - "@angular/forms": "github:angular/forms-builds#6a5f9a2174175d4fa12cad652ea0e7740bcd0180", - "@angular/language-service": "github:angular/language-service-builds#ee8adeb90aabda8a4d18a6abd32a7c37327d6cd6", - "@angular/localize": "github:angular/localize-builds#058707e07ddcc2501a09e26d125b5b22baaa8cc6", - "@angular/material": "github:angular/material-builds#c90077cb072b42670a5a64baa3f0d2de98ca51b5", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#556f44a95261759b589dc724eb2a295ddb9ac9f3", - "@angular/platform-browser": "github:angular/platform-browser-builds#281e360fd2d728c9d48ce814f52d73887a7122b1", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#ab52678c5297407cf074b0b87a2de5fa12f43b3e", - "@angular/platform-server": "github:angular/platform-server-builds#ef3398b7c5780fff9e504c18dd13e6762d074432", - "@angular/router": "github:angular/router-builds#5988f9dd63618c1551b141d0fec3ce6ade1bc51c", - "@angular/service-worker": "github:angular/service-worker-builds#6ea3db4a89e1416e6893033e5b497ff877a8736d" + "@angular/animations": "github:angular/animations-builds#dcc26b56ffd77839ebe87705493aeb7ab51a9fbc", + "@angular/cdk": "github:angular/cdk-builds#9dbde742f93bb01483266ed5d2000771f93c68b2", + "@angular/common": "github:angular/common-builds#2b28bfe46c4769556c790178ea3e839e04e7436a", + "@angular/compiler": "github:angular/compiler-builds#fbe10ce1f2ad3ef4383afba5b845d470c0e4ff86", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e49b4aa583523fc7496ff601f866eefbc2ed9d8c", + "@angular/core": "github:angular/core-builds#af30188ff191a854afaa463d77e5b78c3c511f2f", + "@angular/forms": "github:angular/forms-builds#a735eea055a4689f346ce013695f276c3d248715", + "@angular/language-service": "github:angular/language-service-builds#536b171576a24833374bbf3e925976b0c42074c3", + "@angular/localize": "github:angular/localize-builds#4c34be62125f2f6f9372c2a17f41ddfb35c55750", + "@angular/material": "github:angular/material-builds#09ab0b2adf586c1194dcd392c2d601fec00f0f6a", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8fdfe9458ec414186ce25f9105ac0226f7e8aec7", + "@angular/platform-browser": "github:angular/platform-browser-builds#2dc4cb098cb127a4a7f0233f32c23979ce59c796", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#04cf43df57d9615bb16780e8a4462728173ff0b6", + "@angular/platform-server": "github:angular/platform-server-builds#32d268e608f28e566619915620ff6466303513bc", + "@angular/router": "github:angular/router-builds#17355149048f68e6dec67e5b64b0c5fbadcc818c", + "@angular/service-worker": "github:angular/service-worker-builds#5a5fdaefeb72ed77a0e18ff86e5ab08b40f570b3" } } From 1ef24a750901dbc496362a9c494d1479ba145835 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Nov 2025 06:21:18 -0500 Subject: [PATCH 1786/2162] fix(@angular/build): ensure Vitest setup files are executed in order This commit configures the Vitest runner to execute setup files in the order they are defined. This is crucial for ensuring that polyfills and the Angular TestBed are initialized in the correct sequence before any tests are run, preventing potential issues with the testing environment. --- .../unit-test/runners/vitest/plugins.ts | 1 + .../e2e/tests/vitest/browser-playwright.ts | 34 +++++++++++++++++++ .../e2e/tests/vitest/browser-webdriverio.ts | 33 ++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts create mode 100644 tests/legacy-cli/e2e/tests/vitest/browser-webdriverio.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index c375d182750d..04554955cd18 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -119,6 +119,7 @@ export async function createVitestConfigPlugin( globals: true, // Default to `false` to align with the Karma/Jasmine experience. isolate: false, + sequence: { setupFiles: 'list' }, }, optimizeDeps: { noDiscovery: true, diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts b/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts new file mode 100644 index 000000000000..9b22b81736e4 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts @@ -0,0 +1,34 @@ +import assert from 'node:assert/strict'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { exec, ng } from '../../utils/process'; +import { installPackage } from '../../utils/packages'; +import { writeFile } from '../../utils/fs'; + +export default async function (): Promise { + await applyVitestBuilder(); + await installPackage('playwright@1'); + await installPackage('@vitest/browser-playwright@4'); + await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); + + await ng('generate', 'component', 'my-comp'); + + await writeFile( + 'src/setup1.ts', + ` + import { getTestBed } from '@angular/core/testing'; + + getTestBed().configureTestingModule({}); + `, + ); + + const { stdout } = await ng( + 'test', + '--no-watch', + '--browsers', + 'chromiumHeadless', + '--setup-files', + 'src/setup1.ts', + ); + + assert.match(stdout, /2 passed/, 'Expected 2 tests to pass.'); +} diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-webdriverio.ts b/tests/legacy-cli/e2e/tests/vitest/browser-webdriverio.ts new file mode 100644 index 000000000000..4ea1b913c3b0 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/browser-webdriverio.ts @@ -0,0 +1,33 @@ +import assert from 'node:assert/strict'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { ng } from '../../utils/process'; +import { installPackage } from '../../utils/packages'; +import { writeFile } from '../../utils/fs'; + +export default async function (): Promise { + await applyVitestBuilder(); + await installPackage('webdriverio@9'); + await installPackage('@vitest/browser-webdriverio@4'); + + await ng('generate', 'component', 'my-comp'); + + await writeFile( + 'src/setup1.ts', + ` + import { getTestBed } from '@angular/core/testing'; + + getTestBed().configureTestingModule({}); + `, + ); + + const { stdout } = await ng( + 'test', + '--no-watch', + '--browsers', + 'chromeHeadless', + '--setup-files', + 'src/setup1.ts', + ); + + assert.match(stdout, /2 passed/, 'Expected 2 tests to pass.'); +} From 5e78117a258720d588c42da88bb41d362459d5f9 Mon Sep 17 00:00:00 2001 From: Younes Jaaidi Date: Thu, 13 Nov 2025 10:16:08 +0100 Subject: [PATCH 1787/2162] fix(@angular/build): allow `globals` to be set to false Closes #31785 --- .../unit-test/runners/vitest/build-options.ts | 1 + .../behavior/runner-config-vitest_spec.ts | 36 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 05aba1d9c261..408e1d6d4999 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -33,6 +33,7 @@ function createTestBedInitVirtualFile( import { NgModule${usesZoneJS ? ', provideZoneChangeDetection' : ''} } from '@angular/core'; import { getTestBed, ɵgetCleanupHook as getCleanupHook } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; + import { afterEach, beforeEach } from 'vitest'; ${providersImport} const ANGULAR_TESTBED_SETUP = Symbol.for('@angular/cli/testbed-setup'); diff --git a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts index ec3a52e7686b..f68dd8daa171 100644 --- a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts @@ -89,7 +89,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { expect(results.numPassedTests).toBe(1); }); - it('should allow overriding builder options via runnerConfig file', async () => { + it('should allow overriding globals to false via runnerConfig file', async () => { harness.useTarget('test', { ...BASE_OPTIONS, runnerConfig: 'vitest.config.ts', @@ -111,7 +111,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { harness.writeFile( 'src/app/app.component.spec.ts', ` - import { vi, test, expect } from 'vitest'; + import { expect } from 'vitest'; test('should pass', () => { expect(true).toBe(true); }); @@ -122,6 +122,38 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { expect(result?.success).toBeFalse(); }); + it('should initialize environment even when globals are disabled in runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + globals: false, + }, + }); + `, + ); + + harness.writeFile( + 'src/app/app.component.spec.ts', + ` + import { test, expect } from 'vitest'; + test('should pass', () => { + expect(true).toBe(true); + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + }); + it('should fail when a DOM-dependent test is run in a node environment', async () => { harness.useTarget('test', { ...BASE_OPTIONS, From d74626fe26d71ed165f79ee02acff0717d2512a5 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 11 Nov 2025 13:00:09 -0500 Subject: [PATCH 1788/2162] fix(@angular/cli): support multi-database search in find_examples MCP tool This commit enhances the `find_examples` MCP server tool to support searching across multiple example databases. The tool now discovers and loads example databases from a predefined list of known Angular packages (e.g., `@angular/core`, `@angular/forms`). It gracefully handles missing packages and validates the schema of each discovered database. The search query is executed against all valid databases, and the results are aggregated and sorted by relevance, providing the user with a comprehensive and unified set of code examples from across the Angular ecosystem. --- .../cli/src/commands/mcp/tools/examples.ts | 299 ++++++++++-------- 1 file changed, 169 insertions(+), 130 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts index 97bc71a94e8a..b05b2b4edf97 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples.ts @@ -200,9 +200,15 @@ new or evolving features. }); /** - * Attempts to find a version-specific example database from the user's installed - * version of `@angular/core`. It looks for a custom `angular` metadata property in the - * framework's `package.json` to locate the database. + * A list of known Angular packages that may contain example databases. + * The tool will attempt to resolve and load example databases from these packages. + */ +const KNOWN_EXAMPLE_PACKAGES = ['@angular/core', '@angular/aria', '@angular/forms']; + +/** + * Attempts to find version-specific example databases from the user's installed + * versions of known Angular packages. It looks for a custom `angular` metadata property in each + * package's `package.json` to locate the database. * * @example A sample `package.json` `angular` field: * ```json @@ -218,79 +224,74 @@ new or evolving features. * * @param workspacePath The absolute path to the user's `angular.json` file. * @param logger The MCP tool context logger for reporting warnings. - * @returns A promise that resolves to an object containing the database path and source, - * or `undefined` if the database could not be resolved. + * @returns A promise that resolves to an array of objects, each containing a database path and source. */ -async function getVersionSpecificExampleDatabase( +async function getVersionSpecificExampleDatabases( workspacePath: string, logger: McpToolContext['logger'], -): Promise<{ dbPath: string; source: string } | undefined> { - // 1. Resolve the path to package.json - let pkgJsonPath: string; - try { - const workspaceRequire = createRequire(workspacePath); - pkgJsonPath = workspaceRequire.resolve('@angular/core/package.json'); - } catch (e) { - logger.warn( - `Could not resolve '@angular/core/package.json' from '${workspacePath}'. ` + - 'Is Angular installed in this project? Falling back to the bundled examples.', - ); - - return undefined; - } +): Promise<{ dbPath: string; source: string }[]> { + const workspaceRequire = createRequire(workspacePath); + const databases: { dbPath: string; source: string }[] = []; + + for (const packageName of KNOWN_EXAMPLE_PACKAGES) { + // 1. Resolve the path to package.json + let pkgJsonPath: string; + try { + pkgJsonPath = workspaceRequire.resolve(`${packageName}/package.json`); + } catch (e) { + // This is not a warning because the user may not have all known packages installed. + continue; + } - // 2. Read and parse package.json, then find the database. - try { - const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); - const pkgJson = JSON.parse(pkgJsonContent); - const examplesInfo = pkgJson['angular']?.examples; - - if (examplesInfo && examplesInfo.format === 'sqlite' && typeof examplesInfo.path === 'string') { - const packageDirectory = dirname(pkgJsonPath); - const dbPath = resolve(packageDirectory, examplesInfo.path); - - // Ensure the resolved database path is within the package boundary. - const relativePath = relative(packageDirectory, dbPath); - if (relativePath.startsWith('..') || isAbsolute(relativePath)) { - logger.warn( - `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + - `The path '${examplesInfo.path}' escapes the package boundary. ` + - 'Falling back to the bundled examples.', - ); - - return undefined; - } + // 2. Read and parse package.json, then find the database. + try { + const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); + const pkgJson = JSON.parse(pkgJsonContent); + const examplesInfo = pkgJson['angular']?.examples; + + if ( + examplesInfo && + examplesInfo.format === 'sqlite' && + typeof examplesInfo.path === 'string' + ) { + const packageDirectory = dirname(pkgJsonPath); + const dbPath = resolve(packageDirectory, examplesInfo.path); + + // Ensure the resolved database path is within the package boundary. + const relativePath = relative(packageDirectory, dbPath); + if (relativePath.startsWith('..') || isAbsolute(relativePath)) { + logger.warn( + `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + + `The path '${examplesInfo.path}' escapes the package boundary. ` + + 'This database will be skipped.', + ); + continue; + } - // Check the file size to prevent reading a very large file. - const stats = await stat(dbPath); - if (stats.size > 10 * 1024 * 1024) { - // 10MB - logger.warn( - `The example database at '${dbPath}' is larger than 10MB (${stats.size} bytes). ` + - 'This is unexpected and the file will not be used. Falling back to the bundled examples.', - ); + // Check the file size to prevent reading a very large file. + const stats = await stat(dbPath); + if (stats.size > 10 * 1024 * 1024) { + // 10MB + logger.warn( + `The example database at '${dbPath}' is larger than 10MB (${stats.size} bytes). ` + + 'This is unexpected and the file will not be used.', + ); + continue; + } - return undefined; + const source = `package ${packageName}@${pkgJson.version}`; + databases.push({ dbPath, source }); } - - const source = `framework version ${pkgJson.version}`; - - return { dbPath, source }; - } else { + } catch (e) { logger.warn( - `Did not find valid 'angular.examples' metadata in '${pkgJsonPath}'. ` + - 'Falling back to the bundled examples.', + `Failed to read or parse version-specific examples metadata referenced in '${pkgJsonPath}': ${ + e instanceof Error ? e.message : e + }.`, ); } - } catch (e) { - logger.warn( - `Failed to read or parse version-specific examples metadata referenced in '${pkgJsonPath}': ${ - e instanceof Error ? e.message : e - }. Falling back to the bundled examples.`, - ); } - return undefined; + return databases; } async function createFindExampleHandler({ logger, exampleDatabasePath }: McpToolContext) { @@ -303,69 +304,57 @@ async function createFindExampleHandler({ logger, exampleDatabasePath }: McpTool return async (input: FindExampleInput) => { // If the dev-time override is present, use it and bypass all other logic. if (runtimeDb) { - return queryDatabase(runtimeDb, input); + return queryDatabase([runtimeDb], input); } - let resolvedDbPath: string | undefined; - let dbSource: string | undefined; + const resolvedDbs: { path: string; source: string }[] = []; - // First, try to get the version-specific guide. + // First, try to get all available version-specific guides. if (input.workspacePath) { - const versionSpecific = await getVersionSpecificExampleDatabase(input.workspacePath, logger); - if (versionSpecific) { - resolvedDbPath = versionSpecific.dbPath; - dbSource = versionSpecific.source; + const versionSpecificDbs = await getVersionSpecificExampleDatabases( + input.workspacePath, + logger, + ); + for (const db of versionSpecificDbs) { + resolvedDbs.push({ path: db.dbPath, source: db.source }); } } - // If the version-specific guide was not found for any reason, fall back to the bundled version. - if (!resolvedDbPath) { - resolvedDbPath = exampleDatabasePath; - dbSource = 'bundled'; + // If no version-specific guides were found for any reason, fall back to the bundled version. + if (resolvedDbs.length === 0 && exampleDatabasePath) { + resolvedDbs.push({ path: exampleDatabasePath, source: 'bundled' }); } - if (!resolvedDbPath) { + if (resolvedDbs.length === 0) { // This should be prevented by the registration logic in mcp-server.ts - throw new Error('Example database path is not available.'); + throw new Error('No example databases are available.'); } const { DatabaseSync } = await import('node:sqlite'); - const db = new DatabaseSync(resolvedDbPath, { readOnly: true }); - - // Validate the schema version of the database. - const EXPECTED_SCHEMA_VERSION = 1; - const schemaVersionResult = db - .prepare('SELECT value FROM metadata WHERE key = ?') - .get('schema_version') as { value: string } | undefined; - const actualSchemaVersion = schemaVersionResult ? Number(schemaVersionResult.value) : undefined; - - if (actualSchemaVersion !== EXPECTED_SCHEMA_VERSION) { - db.close(); - - let errorMessage: string; - if (actualSchemaVersion === undefined) { - errorMessage = 'The example database is missing a schema version and cannot be used.'; - } else if (actualSchemaVersion > EXPECTED_SCHEMA_VERSION) { - errorMessage = - `This project's example database (version ${actualSchemaVersion})` + - ` is newer than what this version of the Angular CLI supports (version ${EXPECTED_SCHEMA_VERSION}).` + - ' Please update your `@angular/cli` package to a newer version.'; - } else { - errorMessage = - `This version of the Angular CLI (expects schema version ${EXPECTED_SCHEMA_VERSION})` + - ` requires a newer example database than the one found in this project (version ${actualSchemaVersion}).`; + const dbConnections: DatabaseSync[] = []; + + for (const { path, source } of resolvedDbs) { + const db = new DatabaseSync(path, { readOnly: true }); + try { + validateDatabaseSchema(db, source); + dbConnections.push(db); + } catch (e) { + logger.warn((e as Error).message); + // If a database is invalid, we should not query it, but we should not fail the whole tool. + // We will just skip this database and try to use the others. + continue; } + } - throw new Error( - `Incompatible example database schema from source '${dbSource}':\n${errorMessage}`, - ); + if (dbConnections.length === 0) { + throw new Error('All available example databases were invalid. Cannot perform query.'); } - return queryDatabase(db, input); + return queryDatabase(dbConnections, input); }; } -function queryDatabase(db: DatabaseSync, input: FindExampleInput) { +function queryDatabase(dbs: DatabaseSync[], input: FindExampleInput) { const { query, keywords, required_packages, related_concepts, includeExperimental } = input; // Build the query dynamically @@ -374,7 +363,12 @@ function queryDatabase(db: DatabaseSync, input: FindExampleInput) { `SELECT e.title, e.summary, e.keywords, e.required_packages, e.related_concepts, e.related_tools, e.content, ` + // The `snippet` function generates a contextual snippet of the matched text. // Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size. - "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet " + + "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet, " + + // The `bm25` function returns the relevance score of the match. The weights + // assigned to each column boost the ranking of documents where the search + // term appears in a more important field. + // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content + 'bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0) AS rank ' + 'FROM examples e JOIN examples_fts ON e.id = examples_fts.rowid'; const whereClauses = []; @@ -406,31 +400,38 @@ function queryDatabase(db: DatabaseSync, input: FindExampleInput) { sql += ` WHERE ${whereClauses.join(' AND ')}`; } - // Order the results by relevance using the BM25 algorithm. - // The weights assigned to each column boost the ranking of documents where the - // search term appears in a more important field. - // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content - sql += ' ORDER BY bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0);'; - - const queryStatement = db.prepare(sql); - // Query database and return results const examples = []; const textContent = []; - for (const exampleRecord of queryStatement.all(...params)) { - const record = exampleRecord as Record; - const example = { - title: record['title'], - summary: record['summary'], - keywords: JSON.parse(record['keywords'] || '[]') as string[], - required_packages: JSON.parse(record['required_packages'] || '[]') as string[], - related_concepts: JSON.parse(record['related_concepts'] || '[]') as string[], - related_tools: JSON.parse(record['related_tools'] || '[]') as string[], - content: record['content'], - snippet: record['snippet'], - }; - examples.push(example); + for (const db of dbs) { + const queryStatement = db.prepare(sql); + for (const exampleRecord of queryStatement.all(...params)) { + const record = exampleRecord as Record; + const example = { + title: record['title'] as string, + summary: record['summary'] as string, + keywords: JSON.parse((record['keywords'] as string) || '[]') as string[], + required_packages: JSON.parse((record['required_packages'] as string) || '[]') as string[], + related_concepts: JSON.parse((record['related_concepts'] as string) || '[]') as string[], + related_tools: JSON.parse((record['related_tools'] as string) || '[]') as string[], + content: record['content'] as string, + snippet: record['snippet'] as string, + rank: record['rank'] as number, + }; + examples.push(example); + } + } + + // Order the combined results by relevance. + // The `bm25` algorithm returns a smaller number for a more relevant match. + examples.sort((a, b) => a.rank - b.rank); + + // The `rank` field is an internal implementation detail for sorting and should not be + // returned to the user. We create a new array of examples without the `rank`. + const finalExamples = examples.map(({ rank, ...rest }) => rest); + + for (const example of finalExamples) { // Also create a more structured text output let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`; if (example.snippet) { @@ -442,7 +443,7 @@ function queryDatabase(db: DatabaseSync, input: FindExampleInput) { return { content: textContent, - structuredContent: { examples }, + structuredContent: { examples: finalExamples }, }; } @@ -714,3 +715,41 @@ async function setupRuntimeExamples(examplesPath: string): Promise return db; } + +const EXPECTED_SCHEMA_VERSION = 1; + +/** + * Validates the schema version of the example database. + * + * @param db The database connection to validate. + * @param dbSource A string identifying the source of the database (e.g., 'bundled' or a version number). + * @throws An error if the schema version is missing or incompatible. + */ +function validateDatabaseSchema(db: DatabaseSync, dbSource: string): void { + const schemaVersionResult = db + .prepare('SELECT value FROM metadata WHERE key = ?') + .get('schema_version') as { value: string } | undefined; + const actualSchemaVersion = schemaVersionResult ? Number(schemaVersionResult.value) : undefined; + + if (actualSchemaVersion !== EXPECTED_SCHEMA_VERSION) { + db.close(); + + let errorMessage: string; + if (actualSchemaVersion === undefined) { + errorMessage = 'The example database is missing a schema version and cannot be used.'; + } else if (actualSchemaVersion > EXPECTED_SCHEMA_VERSION) { + errorMessage = + `This project's example database (version ${actualSchemaVersion})` + + ` is newer than what this version of the Angular CLI supports (version ${EXPECTED_SCHEMA_VERSION}).` + + ' Please update your `@angular/cli` package to a newer version.'; + } else { + errorMessage = + `This version of the Angular CLI (expects schema version ${EXPECTED_SCHEMA_VERSION})` + + ` requires a newer example database than the one found in this project (version ${actualSchemaVersion}).`; + } + + throw new Error( + `Incompatible example database schema from source '${dbSource}':\n${errorMessage}`, + ); + } +} From 6f2d4a9fd206d18a3d83d8abbe93f9c118a59305 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Nov 2025 12:04:59 -0500 Subject: [PATCH 1789/2162] refactor(@angular/build): remove deprecated browser-level isolate option This commit removes the deprecated `isolate` option from the browser-level configuration for the Vitest runner. The `browser.isolate` option has been deprecated in Vitest. Test isolation should now be controlled at the test level, which is already the default behavior. This change aligns the builder with the latest Vitest practices and removes a deprecated setting. --- .../src/builders/unit-test/runners/vitest/browser-provider.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index da1827790794..7eed077fc03c 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -117,7 +117,6 @@ export async function setupBrowserConfiguration( provider, headless, ui: !headless, - isolate: debug, viewport, instances: browsers.map((browserName) => ({ browser: normalizeBrowserName(browserName), From 80f9082df454b570350ab74aba8b2458e7decbab Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:08:48 +0000 Subject: [PATCH 1790/2162] =?UTF-8?q?fix(@angular/build):=20ensure=20`?= =?UTF-8?q?=C9=B5getOrCreateAngularServerApp`=20=20is=20always=20defined?= =?UTF-8?q?=20after=20errors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses an issue where could become `ɵgetOrCreateAngularServerApp` undefined after an error, leading to subsequent rendering failures. This change modifies the HMR process to include a timestamp when loading. This ensures the server application is always re-evaluated, preventing stale application states. --- .../angular/build/src/builders/dev-server/vite/hmr.ts | 9 ++++++--- .../build/src/tools/vite/middlewares/ssr-middleware.ts | 6 ------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/vite/hmr.ts b/packages/angular/build/src/builders/dev-server/vite/hmr.ts index ae2fb1b91bb0..467962572463 100644 --- a/packages/angular/build/src/builders/dev-server/vite/hmr.ts +++ b/packages/angular/build/src/builders/dev-server/vite/hmr.ts @@ -57,9 +57,12 @@ export async function invalidateUpdatedFiles( } if (serverApplicationChanged) { - // Clear the server app cache and - // trigger module evaluation before reload to initiate dependency optimization. - const { ɵdestroyAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { + // Clear the server app cache and trigger module evaluation before reload to initiate dependency optimization. + // The querystring is needed as a workaround for: + // `ɵgetOrCreateAngularServerApp` can be undefined right after an error. + const { ɵdestroyAngularServerApp } = (await server.ssrLoadModule( + `/main.server.mjs?timestamp=${Date.now()}`, + )) as { ɵdestroyAngularServerApp: typeof destroyAngularServerApp; }; 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 0d8ac5441f1d..9719fc6b7482 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -45,12 +45,6 @@ export function createAngularSsrInternalMiddleware( ɵ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 138649ee61a3e3f2390a448630782e75b2d69277 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Nov 2025 14:01:30 -0500 Subject: [PATCH 1791/2162] fix(@angular/build): remove explicit test isolation configuration This commit removes the explicit `isolate` option from the Vitest configuration within the Angular CLI builder. Previously, the `isolate` option was explicitly set to `false` for DOM emulation and browser mode. However, due to observed non-deterministic failures and the need for consistent isolation behavior across all environments, it's more robust to allow Vitest to manage test isolation by its own default mechanisms. This change ensures that Vitest's internal defaults for isolation are respected, which are generally designed for optimal reliability. --- .../build/src/builders/unit-test/runners/vitest/plugins.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 04554955cd18..5255ef519fec 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -117,8 +117,7 @@ export async function createVitestConfigPlugin( test: { setupFiles, globals: true, - // Default to `false` to align with the Karma/Jasmine experience. - isolate: false, + // Allow Vitest to manage test isolation by its default behavior. sequence: { setupFiles: 'list' }, }, optimizeDeps: { From 8bde4a3c5004c45572a17e7b7798297517b4fe97 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Nov 2025 13:27:56 -0500 Subject: [PATCH 1792/2162] test: stabilize Vitest snapshot E2E test on Windows This commit introduces several changes to fix a non-deterministic E2E test for Vitest snapshots that was failing on Windows. The primary fix is to standardize the line endings of the test spec file to LF (`\n`) before running the test. This works around an issue where Vitest can miscalculate line counts when encountering mixed line endings (CRLF and LF), which is common in Windows environments. Additionally, the snapshot content assertion has been updated to match Vitest's current format, which includes the test suite name. The file modification logic was also refactored to use `replaceInFile` for better reliability. --- tests/legacy-cli/e2e/tests/vitest/snapshot.ts | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/vitest/snapshot.ts b/tests/legacy-cli/e2e/tests/vitest/snapshot.ts index d610f8f861dc..f099ba6f8d30 100644 --- a/tests/legacy-cli/e2e/tests/vitest/snapshot.ts +++ b/tests/legacy-cli/e2e/tests/vitest/snapshot.ts @@ -1,5 +1,5 @@ import { ng } from '../../utils/process'; -import { appendToFile, replaceInFile, readFile } from '../../utils/fs'; +import { replaceInFile, readFile, writeFile } from '../../utils/fs'; import { applyVitestBuilder } from '../../utils/vitest'; import assert from 'node:assert/strict'; import { stripVTControlCharacters } from 'node:util'; @@ -9,23 +9,32 @@ export default async function () { await applyVitestBuilder(); // Add snapshot assertions to the test file - await appendToFile( + await replaceInFile( 'src/app/app.spec.ts', + `describe('App', () => {`, ` - it('should match file snapshot', () => { - const fixture = TestBed.createComponent(App); - const app = fixture.componentInstance; - expect((app as any).title()).toMatchSnapshot(); - }); +describe('App', () => { + it('should match file snapshot', () => { + const fixture = TestBed.createComponent(App); + const app = fixture.componentInstance; + expect((app as any).title()).toMatchSnapshot(); + }); - it('should match inline snapshot', () => { - const fixture = TestBed.createComponent(App); - const app = fixture.componentInstance; - expect((app as any).title()).toMatchInlineSnapshot(); - }); - `, + it('should match inline snapshot', () => { + const fixture = TestBed.createComponent(App); + const app = fixture.componentInstance; + expect((app as any).title()).toMatchInlineSnapshot(); + }); +`, ); + // Synchronize line endings for Vitest which currently may miscalculate line counts + // with mixed file line endings. + let content = await readFile('src/app/app.spec.ts'); + content = content.replace(/\r\n/g, '\n'); + content = content.replace(/\r/g, '\n'); + await writeFile('src/app/app.spec.ts', content); + // First run: create snapshots const { stdout: firstRunStdout } = await ng('test'); assert.match( @@ -44,7 +53,7 @@ export default async function () { const snapshotContent = await readFile('src/app/__snapshots__/app.spec.ts.snap'); assert.match( snapshotContent, - /exports\[`should match file snapshot 1`\] = `"test-project"`;/, + /exports\[`App > should match file snapshot 1`\] = `"test-project"`;/, 'File snapshot was not written to disk.', ); From 650eaa036e92348761799e3e64462c64a79a1d0a Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Thu, 13 Nov 2025 16:26:51 -0800 Subject: [PATCH 1793/2162] docs: release notes for the v21.0.0-rc.3 release --- CHANGELOG.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c663e2d96270..e5fb0dee54d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ + + +# 21.0.0-rc.3 (2025-11-13) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | +| [4deac3ec7](https://github.com/angular/angular-cli/commit/4deac3ec785b1a53156aac90441d0ed129df71ef) | fix | support multi-database search in find_examples MCP tool | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | +| [fcdbf6c19](https://github.com/angular/angular-cli/commit/fcdbf6c19b5a8549011aebec9e517feb12a99895) | fix | allow `globals` to be set to false | +| [931c62d20](https://github.com/angular/angular-cli/commit/931c62d20915c6c772b61d76ab88657c0858f6bd) | fix | allow unit-test runner config with absolute path | +| [fec106b60](https://github.com/angular/angular-cli/commit/fec106b60553394aab51d713e5437a713085089b) | fix | enhance Vitest dependency externalization and pre-bundling | +| [ee5e127d5](https://github.com/angular/angular-cli/commit/ee5e127d551269fa9a3e39b9b28e38d7ab35806f) | fix | ensure `ɵgetOrCreateAngularServerApp` is always defined after errors | +| [55145f582](https://github.com/angular/angular-cli/commit/55145f582253b4ecb47add7ff2ef459b7535dfdb) | fix | ensure Vitest setup files are executed in order | +| [6576bb598](https://github.com/angular/angular-cli/commit/6576bb5985c18dca7cecd9509939c2a78bf9758a) | fix | remove explicit test isolation configuration | + + + # 21.0.0-rc.2 (2025-11-12) From 720603223f2e9d1487ce54dac903fe8954bda3a5 Mon Sep 17 00:00:00 2001 From: Younes Jaaidi Date: Thu, 13 Nov 2025 17:07:03 +0100 Subject: [PATCH 1794/2162] test(@angular/build): add test with 'vitest' import in browser mode Closes #31745 Actually closed by #31781 --- .../e2e/tests/vitest/browser-no-globals.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts b/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts new file mode 100644 index 000000000000..21135ff42f83 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts @@ -0,0 +1,33 @@ +import assert from 'node:assert/strict'; +import { writeFile } from '../../utils/fs'; +import { installPackage } from '../../utils/packages'; +import { exec, ng } from '../../utils/process'; +import { applyVitestBuilder } from '../../utils/vitest'; + +/** + * Allow `vitest` import in browser mode. + * @see https://github.com/angular/angular-cli/issues/31745 + */ +export default async function (): Promise { + await applyVitestBuilder(); + + await installPackage('playwright@1'); + await installPackage('@vitest/browser-playwright@4'); + + await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); + + await writeFile( + 'src/app/app.spec.ts', + ` + import { test, expect } from 'vitest'; + + test('should pass', () => { + expect(true).toBe(true); + }); + `, + ); + + const { stdout } = await ng('test', '--browsers', 'ChromiumHeadless'); + + assert.match(stdout, /1 passed/, 'Expected 1 tests to pass.'); +} From 8af4163b2984b4c8c1fa5815d08457945d7d7db4 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Nov 2025 05:06:09 +0000 Subject: [PATCH 1795/2162] build: update dependency bazel to v7.7.1 See associated pull request for more information. --- .bazelversion | 2 +- MODULE.bazel.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.bazelversion b/.bazelversion index 1985849fb589..5942a0d3a0e7 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.7.0 +7.7.1 diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index ce35165c7b47..2dc691e66a8f 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -409,7 +409,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "ZfvqwqI78+Qya3TZeBMFWtEQnzIDz8j9njbobQLxswI=", + "bzlTransitiveDigest": "MDL1U5KxASXhKcoXRgOqr7qxCgpKkNaQ2HSyFvw6u1U=", "usagesDigest": "J526kdgX5AQ2bYrNGwe6lTrakPUSZPfyHG24PGMUG0s=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1683,7 +1683,7 @@ }, "@@rules_python~//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "UP3OtPScohkFlJevXYy5MF6NWqjUwRxO7SflJmjbM+o=", + "bzlTransitiveDigest": "VKf3JZIRvp7gyc5Q9pSqri7bmB3079s5o6Yg7IaUHZI=", "usagesDigest": "K3E4RGDnEgGXkrLOS8/ma4NTUiLvGkMrRIhPiFxv8u0=", "recordedFileInputs": { "@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", From 83f39383efb83840ff32bed98a9fd6ce2d97aa9c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Nov 2025 05:06:31 +0000 Subject: [PATCH 1796/2162] build: update pnpm to v10.22.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index eb3e1469e018..a256672e59d3 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.21.0", + "packageManager": "pnpm@10.22.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.21.0" + "pnpm": "10.22.0" }, "author": "Angular Authors", "license": "MIT", From 245d464e27f0ae5798a3564b78172972cf555d2b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Nov 2025 13:13:17 +0000 Subject: [PATCH 1797/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 2 +- package.json | 2 +- packages/angular/build/package.json | 6 +- packages/angular/cli/package.json | 2 +- .../schematics_cli/package.json | 2 +- pnpm-lock.yaml | 431 +++++++++++++----- 6 files changed, 327 insertions(+), 118 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 7d04585665af..fa7810f68892 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -6,7 +6,7 @@ "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", "@vitest/coverage-v8": "4.0.8", - "jsdom": "27.1.0", + "jsdom": "27.2.0", "rxjs": "7.8.2", "vitest": "4.0.8" } diff --git a/package.json b/package.json index a256672e59d3..81b2c5553779 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "puppeteer": "18.2.1", "quicktype-core": "23.2.6", "rollup": "4.53.2", - "rollup-license-plugin": "~3.0.1", + "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", "semver": "7.7.3", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 32711508f331..4b24b0cabe3b 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -23,7 +23,7 @@ "@babel/core": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@inquirer/confirm": "5.1.20", + "@inquirer/confirm": "5.1.21", "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.49", + "rolldown": "1.0.0-beta.50", "sass": "1.94.0", "semver": "7.7.3", "source-map-support": "0.5.21", @@ -52,7 +52,7 @@ "devDependencies": { "@angular-devkit/core": "workspace:*", "@angular/ssr": "workspace:*", - "jsdom": "27.1.0", + "jsdom": "27.2.0", "less": "4.4.2", "ng-packagr": "21.0.0-rc.1", "postcss": "8.5.6", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index f14a53fd839c..db18df264765 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.10.0", + "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.21.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index dd9e1ae39d6a..c48815b3cb52 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.10.0", + "@inquirer/prompts": "7.10.1", "ansi-colors": "4.1.3", "yargs-parser": "22.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a40698350ab4..e52edc056698 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -269,8 +269,8 @@ importers: specifier: 4.53.2 version: 4.53.2 rollup-license-plugin: - specifier: ~3.0.1 - version: 3.0.2 + specifier: ~3.1.0 + version: 3.1.0 rollup-plugin-dts: specifier: 6.2.3 version: 6.2.3(rollup@4.53.2)(typescript@5.9.3) @@ -333,19 +333,19 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.8 - version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: - specifier: 27.1.0 - version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 27.2.0 + version: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -365,8 +365,8 @@ importers: specifier: 7.24.7 version: 7.24.7 '@inquirer/confirm': - specifier: 5.1.20 - version: 5.1.20(@types/node@24.10.0) + specifier: 5.1.21 + version: 5.1.21(@types/node@24.10.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) @@ -407,8 +407,8 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.49 - version: 1.0.0-beta.49 + specifier: 1.0.0-beta.50 + version: 1.0.0-beta.50 sass: specifier: 1.94.0 version: 1.94.0 @@ -438,8 +438,8 @@ importers: specifier: workspace:* version: link:../ssr jsdom: - specifier: 27.1.0 - version: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 27.2.0 + version: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -472,11 +472,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/schematics '@inquirer/prompts': - specifier: 7.10.0 - version: 7.10.0(@types/node@24.10.0) + specifier: 7.10.1 + version: 7.10.1(@types/node@24.10.0) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.10.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.21.1 version: 1.21.1 @@ -856,8 +856,8 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../schematics '@inquirer/prompts': - specifier: 7.10.0 - version: 7.10.0(@types/node@24.10.0) + specifier: 7.10.1 + version: 7.10.1(@types/node@24.10.0) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -909,8 +909,8 @@ importers: packages: - '@acemir/cssom@0.9.19': - resolution: {integrity: sha512-Pp2gAQXPZ2o7lt4j0IMwNRXqQ3pagxtDj5wctL5U2Lz4oV0ocDNlkgx4DpxfyKav4S/bePuI+SMqcBSUHLy9kg==} + '@acemir/cssom@0.9.23': + resolution: {integrity: sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -2365,8 +2365,17 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.20': - resolution: {integrity: sha512-HDGiWh2tyRZa0M1ZnEIUCQro25gW/mN8ODByicQrbR1yHx4hT+IOpozCMi5TgBtUdklLwRI2mv14eNpftDluEw==} + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2383,6 +2392,15 @@ packages: '@types/node': optional: true + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/editor@4.2.22': resolution: {integrity: sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A==} engines: {node: '>=18'} @@ -2392,6 +2410,15 @@ packages: '@types/node': optional: true + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/expand@4.0.22': resolution: {integrity: sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q==} engines: {node: '>=18'} @@ -2401,6 +2428,15 @@ packages: '@types/node': optional: true + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/external-editor@1.0.3': resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} @@ -2423,6 +2459,15 @@ packages: '@types/node': optional: true + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/number@3.0.22': resolution: {integrity: sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg==} engines: {node: '>=18'} @@ -2432,6 +2477,15 @@ packages: '@types/node': optional: true + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/password@4.0.22': resolution: {integrity: sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g==} engines: {node: '>=18'} @@ -2441,6 +2495,15 @@ packages: '@types/node': optional: true + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/prompts@7.10.0': resolution: {integrity: sha512-X2HAjY9BClfFkJ2RP3iIiFxlct5JJVdaYYXhA7RKxsbc9KL+VbId79PSoUGH/OLS011NFbHHDMDcBKUj3T89+Q==} engines: {node: '>=18'} @@ -2450,6 +2513,15 @@ packages: '@types/node': optional: true + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/rawlist@4.1.10': resolution: {integrity: sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw==} engines: {node: '>=18'} @@ -2459,6 +2531,15 @@ packages: '@types/node': optional: true + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/search@3.2.1': resolution: {integrity: sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA==} engines: {node: '>=18'} @@ -2468,6 +2549,15 @@ packages: '@types/node': optional: true + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/select@4.4.1': resolution: {integrity: sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q==} engines: {node: '>=18'} @@ -2477,6 +2567,15 @@ packages: '@types/node': optional: true + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.10': resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} @@ -2945,8 +3044,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.96.0': - resolution: {integrity: sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==} + '@oxc-project/types@0.97.0': + resolution: {integrity: sha512-lxmZK4xFrdvU0yZiDwgVQTCvh2gHWBJCBk5ALsrtsBWhs0uDIi+FTOnXRQeQfs304imdvTdaakT/lqwQ8hkOXQ==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3095,95 +3194,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.49': - resolution: {integrity: sha512-xKQEOmqOet0vFHt/aqcoQGWvoDJhfSO8EBhuST0CDnxQRmnVzbI8keeeX62vi53ZyICKZxczyfx4A8dUY3dqKw==} + '@rolldown/binding-android-arm64@1.0.0-beta.50': + resolution: {integrity: sha512-XlEkrOIHLyGT3avOgzfTFSjG+f+dZMw+/qd+Y3HLN86wlndrB/gSimrJCk4gOhr1XtRtEKfszpadI3Md4Z4/Ag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.49': - resolution: {integrity: sha512-kN0N/8m8HUYO13PqlIwxcXD7fu2E6GKu0J4iH7wUJw3T3QK+nvrc20rxtTZ0J6sA1sGCE8UYvvvnurDwMUp0dg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.50': + resolution: {integrity: sha512-+JRqKJhoFlt5r9q+DecAGPLZ5PxeLva+wCMtAuoFMWPoZzgcYrr599KQ+Ix0jwll4B4HGP43avu9My8KtSOR+w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.49': - resolution: {integrity: sha512-29qmvsgY2A4ymfy8sQkFFOFc13m04SLUcYn1iil41gpkYrAspBLkvsOQMHPCs3rQCOImgweT4tFotqTAonwphQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.50': + resolution: {integrity: sha512-fFXDjXnuX7/gQZQm/1FoivVtRcyAzdjSik7Eo+9iwPQ9EgtA5/nB2+jmbzaKtMGG3q+BnZbdKHCtOacmNrkIDA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.49': - resolution: {integrity: sha512-fY+esrHjgt6+RAnDPuUk39RvFNmYhJekGyC6wr0HWXGTBed07Feap9BrYINSh6x5xFlNpOPs6tImKnV0zVDuWQ==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.50': + resolution: {integrity: sha512-F1b6vARy49tjmT/hbloplzgJS7GIvwWZqt+tAHEstCh0JIh9sa8FAMVqEmYxDviqKBaAI8iVvUREm/Kh/PD26Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.49': - resolution: {integrity: sha512-oQNAqB+XrRM2AZaSPyudQETsPhzCZqgPICQu80fJuNyBFYoz6nonNNZtm3BJ9uP+HZfUk9NfOn9vPoCNuk6gAw==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50': + resolution: {integrity: sha512-U6cR76N8T8M6lHj7EZrQ3xunLPxSvYYxA8vJsBKZiFZkT8YV4kjgCO3KwMJL0NOjQCPGKyiXO07U+KmJzdPGRw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.49': - resolution: {integrity: sha512-bJinAiuWUJvlBxPa8ZmRnWkmmAoUlSWtZT4pRkWi/QX3HlgHfUUbhF+d7aZLciai+iFfbiPqOwCL2tqNXXrUsA==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50': + resolution: {integrity: sha512-ONgyjofCrrE3bnh5GZb8EINSFyR/hmwTzZ7oVuyUB170lboza1VMCnb8jgE6MsyyRgHYmN8Lb59i3NKGrxrYjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.49': - resolution: {integrity: sha512-gwueY8EJU7afq5tNwKSjYy5JqTR/0MNzZfv6s5dX+rMgeUpTNhwIToLO1F41TPYEa+6LRTXUWG23DO/ONPzUJA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50': + resolution: {integrity: sha512-L0zRdH2oDPkmB+wvuTl+dJbXCsx62SkqcEqdM+79LOcB+PxbAxxjzHU14BuZIQdXcAVDzfpMfaHWzZuwhhBTcw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.49': - resolution: {integrity: sha512-VXYkjzzEZh5N5Ue1IEcBgL8RuJu5jWrIKmg8WY6hhCbnNJ1IOsObT4HFW+rE8ZaKNjoIXzImoiYi1UAkKiQRYA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50': + resolution: {integrity: sha512-gyoI8o/TGpQd3OzkJnh1M2kxy1Bisg8qJ5Gci0sXm9yLFzEXIFdtc4EAzepxGvrT2ri99ar5rdsmNG0zP0SbIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.49': - resolution: {integrity: sha512-S5Yw6g/ftiW7MpNpnOM5vSIlDzGuohDY8y7VOI47+92HhO6WqsNfcMkDZXm3G5l6YIfUNStGBV86NWrzasp+sw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.50': + resolution: {integrity: sha512-zti8A7M+xFDpKlghpcCAzyOi+e5nfUl3QhU023ce5NCgUxRG5zGP2GR9LTydQ1rnIPwZUVBWd4o7NjZDaQxaXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.49': - resolution: {integrity: sha512-bhRoMO2oP46W1UDd/PTrSdoIYfvLS2jiFAned0SOzOO0tcait9u+b9i8h4ZugbT2IK4qUXNezovbHJs7hKJOEQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.50': + resolution: {integrity: sha512-eZUssog7qljrrRU9Mi0eqYEPm3Ch0UwB+qlWPMKSUXHNqhm3TvDZarJQdTevGEfu3EHAXJvBIe0YFYr0TPVaMA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.49': - resolution: {integrity: sha512-Owp6Y1RQ84UMOV8hrg5e1Fmu8Po1IUXWytAHUtPcc00+ty6Gr9g5GgLLw0oblu7QovBr4848ozvkMcEj3vDKgA==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.50': + resolution: {integrity: sha512-nmCN0nIdeUnmgeDXiQ+2HU6FT162o+rxnF7WMkBm4M5Ds8qTU7Dzv2Wrf22bo4ftnlrb2hKK6FSwAJSAe2FWLg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.49': - resolution: {integrity: sha512-dnheX8aXsN9P12uwPOW3TVvqSnQ1cfjKQlYgU2dTkrRpnco0kTGvqE1nEWybGukTyuPdzVvrGElgSGEJ7crcSQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50': + resolution: {integrity: sha512-7kcNLi7Ua59JTTLvbe1dYb028QEPaJPJQHqkmSZ5q3tJueUeb6yjRtx8mw4uIqgWZcnQHAR3PrLN4XRJxvgIkA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.49': - resolution: {integrity: sha512-Blt1aODXiAuEdZBqHYXGJwVFlonXKkVEJy5hhxOgnAVi/0mzFNWDxc8qVlxl7dpQjQdboW/wXdgMHpTDfomicg==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50': + resolution: {integrity: sha512-lL70VTNvSCdSZkDPPVMwWn/M2yQiYvSoXw9hTLgdIWdUfC3g72UaruezusR6ceRuwHCY1Ayu2LtKqXkBO5LIwg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.49': - resolution: {integrity: sha512-sSu4qUlL/62QJrR3P+Bd+EblD8tUpnovUz65qow3PA7YxH+f5NFDbCJMR1m5b8zBuVZwZIHfzbuawz+Vl34/xg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50': + resolution: {integrity: sha512-4qU4x5DXWB4JPjyTne/wBNPqkbQU8J45bl21geERBKtEittleonioACBL1R0PsBu0Aq21SwMK5a9zdBkWSlQtQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.49': - resolution: {integrity: sha512-HLlu3Qn3ePmNCbfehwKWXQMzX/2rzcL6Jmpo+Dl3xnq46TGMyJAgO+IsS8ka7IDLeD3wcoOhjJwxTdIdbrFhGw==} + '@rolldown/pluginutils@1.0.0-beta.50': + resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -4974,8 +5073,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.2: - resolution: {integrity: sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==} + cssstyle@5.3.3: + resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} engines: {node: '>=20'} custom-event@1.0.1: @@ -6579,8 +6678,8 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdom@27.1.0: - resolution: {integrity: sha512-Pcfm3eZ+eO4JdZCXthW9tCDT3nF4K+9dmeZ+5X39n+Kqz0DDIABRP5CAEOHRFZk8RGuC2efksTJxrjp8EXCunQ==} + jsdom@27.2.0: + resolution: {integrity: sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -7120,6 +7219,10 @@ packages: resolution: {integrity: sha512-SYU3HBAdF4psHEL/+jXDKHO95/m5P2RvboHT2Y0WtTttvJLP4H/2WS9WlQPFvF6C8d6SpLw8vjCnQOnVIVOSJQ==} engines: {node: '>=18'} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@3.0.0: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -7965,13 +8068,13 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.49: - resolution: {integrity: sha512-Bfmdn3ZqyCwi1LxG39KBrSlil9a/xnrOrAj+jqqN2YTR/WJIEOOfwNKgDALQvr0xlO9bG/i1C883KGd4nd7SrA==} + rolldown@1.0.0-beta.50: + resolution: {integrity: sha512-JFULvCNl/anKn99eKjOSEubi0lLmNqQDAjyEMME2T4CwezUDL0i6t1O9xZsu2OMehPnV2caNefWpGF+8TnzB6A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup-license-plugin@3.0.2: - resolution: {integrity: sha512-68LWDlUKxqLO4Si3Extca4X7P99tU7s0KLnVUzN6h6SDihGAWYMQ0q73XLnHbUmG0IFgvC0AzuYvbogceQ9Hcw==} + rollup-license-plugin@3.1.0: + resolution: {integrity: sha512-wt0sqnedDjYVUnalyDEajrVAiup2V3O30I5PzXDS3syN9liSRKrZ8H6EECiV3OEZRs2fLauwT9t0QZGLuVTs2Q==} engines: {node: '>=18.0.0'} rollup-plugin-dts@6.2.3: @@ -9344,7 +9447,7 @@ packages: snapshots: - '@acemir/cssom@0.9.19': {} + '@acemir/cssom@0.9.23': {} '@actions/core@1.11.1': dependencies: @@ -11068,9 +11171,19 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/confirm@5.1.20(@types/node@24.10.0)': + '@inquirer/checkbox@4.3.2(@types/node@24.10.0)': dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + + '@inquirer/confirm@5.1.21(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) '@inquirer/type': 3.0.10(@types/node@24.10.0) optionalDependencies: '@types/node': 24.10.0 @@ -11088,6 +11201,19 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/core@10.3.2(@types/node@24.10.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/editor@4.2.22(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11096,6 +11222,14 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/editor@4.2.23(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/expand@4.0.22(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11104,6 +11238,14 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/expand@4.0.23(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/external-editor@1.0.3(@types/node@24.10.0)': dependencies: chardet: 2.1.1 @@ -11120,6 +11262,13 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/input@4.3.1(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/number@3.0.22(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11127,6 +11276,13 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/number@3.0.23(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/password@4.0.22(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11135,10 +11291,18 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/password@4.0.23(@types/node@24.10.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/prompts@7.10.0(@types/node@24.10.0)': dependencies: '@inquirer/checkbox': 4.3.1(@types/node@24.10.0) - '@inquirer/confirm': 5.1.20(@types/node@24.10.0) + '@inquirer/confirm': 5.1.21(@types/node@24.10.0) '@inquirer/editor': 4.2.22(@types/node@24.10.0) '@inquirer/expand': 4.0.22(@types/node@24.10.0) '@inquirer/input': 4.3.0(@types/node@24.10.0) @@ -11150,6 +11314,21 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/prompts@7.10.1(@types/node@24.10.0)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.0) + '@inquirer/confirm': 5.1.21(@types/node@24.10.0) + '@inquirer/editor': 4.2.23(@types/node@24.10.0) + '@inquirer/expand': 4.0.23(@types/node@24.10.0) + '@inquirer/input': 4.3.1(@types/node@24.10.0) + '@inquirer/number': 3.0.23(@types/node@24.10.0) + '@inquirer/password': 4.0.23(@types/node@24.10.0) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.0) + '@inquirer/search': 3.2.2(@types/node@24.10.0) + '@inquirer/select': 4.4.2(@types/node@24.10.0) + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/rawlist@4.1.10(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11158,6 +11337,14 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/rawlist@4.1.11(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/search@3.2.1(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.1(@types/node@24.10.0) @@ -11167,6 +11354,15 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/search@3.2.2(@types/node@24.10.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/select@4.4.1(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11177,6 +11373,16 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 + '@inquirer/select@4.4.2(@types/node@24.10.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.0 + '@inquirer/type@3.0.10(@types/node@24.10.0)': optionalDependencies: '@types/node': 24.10.0 @@ -11275,9 +11481,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.0(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.0(@types/node@24.10.0) + '@inquirer/prompts': 7.10.1(@types/node@24.10.0) '@inquirer/type': 3.0.9(@types/node@24.10.0) listr2: 9.0.5 transitivePeerDependencies: @@ -11645,7 +11851,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.96.0': {} + '@oxc-project/types@0.97.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11769,51 +11975,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.49': + '@rolldown/binding-android-arm64@1.0.0-beta.50': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.49': + '@rolldown/binding-darwin-arm64@1.0.0-beta.50': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.49': + '@rolldown/binding-darwin-x64@1.0.0-beta.50': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.49': + '@rolldown/binding-freebsd-x64@1.0.0-beta.50': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.49': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.49': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.49': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.49': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.49': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.50': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.49': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.50': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.49': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.50': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.49': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.49': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.49': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50': optional: true - '@rolldown/pluginutils@1.0.0-beta.49': {} + '@rolldown/pluginutils@1.0.0-beta.50': {} '@rollup/plugin-alias@6.0.0(rollup@4.53.2)': optionalDependencies: @@ -12703,7 +12909,7 @@ snapshots: dependencies: vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.8 @@ -12716,7 +12922,7 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -13963,7 +14169,7 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.2: + cssstyle@5.3.3: dependencies: '@asamuzakjp/css-color': 4.0.5 '@csstools/css-syntax-patches-for-csstree': 1.0.15 @@ -15826,11 +16032,11 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.19 + '@acemir/cssom': 0.9.23 '@asamuzakjp/dom-selector': 6.7.4 - cssstyle: 5.3.2 + cssstyle: 5.3.3 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -16482,6 +16688,8 @@ snapshots: array-union: 3.0.1 minimatch: 9.0.5 + mute-stream@2.0.0: {} + mute-stream@3.0.0: {} nanocolors@0.2.13: {} @@ -17458,30 +17666,31 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@1.0.0-beta.49: + rolldown@1.0.0-beta.50: dependencies: - '@oxc-project/types': 0.96.0 - '@rolldown/pluginutils': 1.0.0-beta.49 + '@oxc-project/types': 0.97.0 + '@rolldown/pluginutils': 1.0.0-beta.50 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.49 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.49 - '@rolldown/binding-darwin-x64': 1.0.0-beta.49 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.49 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.49 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.49 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.49 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.49 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.49 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.49 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.49 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.49 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.49 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.49 - - rollup-license-plugin@3.0.2: + '@rolldown/binding-android-arm64': 1.0.0-beta.50 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.50 + '@rolldown/binding-darwin-x64': 1.0.0-beta.50 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.50 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.50 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.50 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.50 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.50 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.50 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.50 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.50 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.50 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.50 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.50 + + rollup-license-plugin@3.1.0: dependencies: get-npm-tarball-url: 2.1.0 node-fetch: 3.3.2 + semver: 7.7.3 spdx-expression-validate: 2.0.0 rollup-plugin-dts@6.2.3(rollup@4.53.2)(typescript@5.9.3): @@ -18660,7 +18869,7 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.8 '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) @@ -18684,7 +18893,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 - jsdom: 27.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less From 9b5a452fe2fc22b7e6a9301c43be84d9074576a2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Nov 2025 12:19:58 -0500 Subject: [PATCH 1798/2162] fix(@angular/build): enhance Vitest resolution for optimal package loading Align Vitest's module resolution with the development server to ensure consistent behavior. This change configures Vitest to prioritize ESM-optimized package entry points by setting 'es2020', 'module', and 'main' as main fields and 'es2015', 'es2020', and 'module' as conditions during module resolution. This improves compatibility and performance by utilizing modern JavaScript module formats where available. --- .../build/src/builders/unit-test/runners/vitest/plugins.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 5255ef519fec..fada9089d84f 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -124,6 +124,10 @@ export async function createVitestConfigPlugin( noDiscovery: true, include: options.optimizeDepsInclude, }, + resolve: { + mainFields: ['es2020', 'module', 'main'], + conditions: ['es2015', 'es2020', 'module'], + }, }; const { optimizeDeps, resolve } = config; From 79e52ccf7b785cc8877f878ab20636a30eb2c5c4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:45:24 -0500 Subject: [PATCH 1799/2162] fix(@angular/build): ensure TestBed cleanup hooks are always registered This commit moves the `beforeEach` and `afterEach` hook registrations for TestBed cleanup to be outside the global setup guard. In environments where test isolation is not strictly enforced (when `isolate: false`), the setup file can be executed multiple times in different contexts. The global guard would previously prevent the hooks from being re-registered, leading to inconsistent test behavior and potential state leakage between tests. This change ensures the cleanup hooks are always registered, improving the reliability and predictability of tests across all execution environments. --- .../builders/unit-test/runners/vitest/build-options.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 408e1d6d4999..1c65d6fc4d50 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -36,6 +36,12 @@ function createTestBedInitVirtualFile( import { afterEach, beforeEach } from 'vitest'; ${providersImport} + // The beforeEach and afterEach hooks are registered outside the globalThis guard. + // This ensures that the hooks are always applied, even in non-isolated browser environments. + // Same as https://github.com/angular/angular/blob/05a03d3f975771bb59c7eefd37c01fa127ee2229/packages/core/testing/srcs/test_hooks.ts#L21-L29 + beforeEach(getCleanupHook(false)); + afterEach(getCleanupHook(true)); + const ANGULAR_TESTBED_SETUP = Symbol.for('@angular/cli/testbed-setup'); if (!globalThis[ANGULAR_TESTBED_SETUP]) { globalThis[ANGULAR_TESTBED_SETUP] = true; @@ -44,10 +50,6 @@ function createTestBedInitVirtualFile( // In a non-isolated environment, this setup file can be executed multiple times. // The guard condition above ensures that the setup is only performed once. - // Same as https://github.com/angular/angular/blob/05a03d3f975771bb59c7eefd37c01fa127ee2229/packages/core/testing/srcs/test_hooks.ts#L21-L29 - beforeEach(getCleanupHook(false)); - afterEach(getCleanupHook(true)); - @NgModule({ providers: [${usesZoneJS ? 'provideZoneChangeDetection(), ' : ''}...providers], }) From ca55398592fa5eea374e1a35c749c3fc4ca92c52 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Nov 2025 14:38:22 +0000 Subject: [PATCH 1800/2162] build: update dependency rules_nodejs to v6.6.1 See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 83143619bc9c..82b04d1e32e6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -5,7 +5,7 @@ module( ) bazel_dep(name = "yq.bzl", version = "0.3.1") -bazel_dep(name = "rules_nodejs", version = "6.6.0") +bazel_dep(name = "rules_nodejs", version = "6.6.1") bazel_dep(name = "aspect_rules_js", version = "2.8.1") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 2dc691e66a8f..e763d5c08efc 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -157,7 +157,8 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", "https://bcr.bazel.build/modules/rules_nodejs/6.6.0/MODULE.bazel": "49ef4cccc17a5a13c9beca2d0b3f7dea1d97381df8cb6ba4dea03943f6a81b0a", - "https://bcr.bazel.build/modules/rules_nodejs/6.6.0/source.json": "cbd156fa2db33707275de138110b78eb86a4cf510b979df7c4b6a8e7127484de", + "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/MODULE.bazel": "e499aabe7cb796b784e9421be909c702eb79f664c20d21cbf120332a2a8dc378", + "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/source.json": "c5eb6ed233d9ddadad77342e4aeefb836a4616f875acf2dbb181f98057c8c020", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/MODULE.bazel": "7e9e7b5b26bd7ff012dfe63930db2f0176ddcd25e44a858fc72d63e995b6aab9", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/source.json": "15dd7e13dc303f7fcde2b55300bcb8de5c0dd08a7a7269749cbbaa0fb1dfbe16", @@ -1139,8 +1140,8 @@ }, "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { - "bzlTransitiveDigest": "71PwVsMlLx+RWdt1SI9nSqRHX7DX/NstWwr7/XBxEMs=", - "usagesDigest": "vDvuJNQ53pdrjDK3KsRv93SOvSUPTnB/K25YVdsZiLo=", + "bzlTransitiveDigest": "Oex83HlYG4+sPr0oUbvldjyP3JnYazq0jAVgUXDx7yU=", + "usagesDigest": "3BeF7a1MDbYZesa8EOSh4Ihre1HMpOUWna9iTCBluY0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 7217478809e80c57e8705eaeea38d2fe32a9f9bd Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Fri, 14 Nov 2025 11:31:08 -0800 Subject: [PATCH 1801/2162] ci: bump specs for e2e-package-managers --- .github/workflows/ci.yml | 4 +++- .github/workflows/pr.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc0509ca57cb..7792dd2a967e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,7 +160,9 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + # These tests can generate a significant amount of temp files, especially when + # flaky targets are retried. The larger machine type comes with 2x more SSD space. + os: [ubuntu-latest-4core] node: [22] subset: [yarn, pnpm] shard: [0, 1, 2] diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 15c670e53017..7682e06f19ae 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -178,7 +178,9 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + # These tests can generate a significant amount of temp files, especially when + # flaky targets are retried. The larger machine type comes with 2x more SSD space. + os: [ubuntu-latest-4core] node: [22] subset: [yarn, pnpm] shard: [0, 1, 2] From 1ad9d36f355bd888dc924e9c13d848f1eaf4b8a5 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Fri, 14 Nov 2025 14:10:34 -0800 Subject: [PATCH 1802/2162] docs: release notes for the v21.0.0-rc.4 release --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5fb0dee54d6..41b11c1ba432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ + + +# 21.0.0-rc.4 (2025-11-14) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | +| [f7c4a4c1d](https://github.com/angular/angular-cli/commit/f7c4a4c1dcd575dec82cc06597e3d6620b1be729) | fix | enhance Vitest resolution for optimal package loading | +| [0830f4fb5](https://github.com/angular/angular-cli/commit/0830f4fb549e2c45b1ef752dd42f002a1347d7c8) | fix | ensure TestBed cleanup hooks are always registered | + + + # 21.0.0-rc.3 (2025-11-13) From 327e4895bc6ef50e69fe6a48449746e3483b78d1 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 14 Nov 2025 22:06:00 +0000 Subject: [PATCH 1803/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 ++-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 ++-- MODULE.bazel | 2 +- MODULE.bazel.lock | 1 - package.json | 6 +- pnpm-lock.yaml | 238 ++---------------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +-- 11 files changed, 102 insertions(+), 287 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index df60213dca0b..6bab3ffca674 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@854a5073df0fbdb0ea42232ba84b28d64014c56c + - uses: angular/dev-infra/github-actions/branch-manager@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7792dd2a967e..60e3cd99ac57 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 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@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -169,13 +169,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -194,13 +194,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -214,13 +214,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@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -250,11 +250,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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 03d914b8ea29..4768ebd16a36 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@854a5073df0fbdb0ea42232ba84b28d64014c56c + - uses: angular/dev-infra/github-actions/pull-request-labeling@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@854a5073df0fbdb0ea42232ba84b28d64014c56c + - uses: angular/dev-infra/github-actions/post-approval-changes@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index f784e3fbb9c5..0c61f5b0ded6 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@854a5073df0fbdb0ea42232ba84b28d64014c56c + - uses: angular/dev-infra/github-actions/feature-request@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index d35ba8393f2c..508c7f109e44 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@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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 7682e06f19ae..aab59a7bc029 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -56,7 +56,7 @@ jobs: - name: Run Validation run: pnpm admin validate - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/linting/licenses@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -72,11 +72,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -187,13 +187,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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 }} @@ -210,12 +210,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@854a5073df0fbdb0ea42232ba84b28d64014c56c + uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - 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/MODULE.bazel b/MODULE.bazel index 82b04d1e32e6..a82a4e90c6f0 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "854a5073df0fbdb0ea42232ba84b28d64014c56c", + commit = "c855fffb4b01bc06e743eb3bdfd54c866af09ad8", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index e763d5c08efc..4dc7a24f2c2f 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -156,7 +156,6 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", - "https://bcr.bazel.build/modules/rules_nodejs/6.6.0/MODULE.bazel": "49ef4cccc17a5a13c9beca2d0b3f7dea1d97381df8cb6ba4dea03943f6a81b0a", "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/MODULE.bazel": "e499aabe7cb796b784e9421be909c702eb79f664c20d21cbf120332a2a8dc378", "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/source.json": "c5eb6ed233d9ddadad77342e4aeefb836a4616f875acf2dbb181f98057c8c020", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", diff --git a/package.json b/package.json index 81b2c5553779..19b580831ba2 100644 --- a/package.json +++ b/package.json @@ -45,15 +45,15 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@angular/animations": "21.0.0-rc.2", - "@angular/cdk": "21.0.0-rc.1", + "@angular/cdk": "21.0.0-rc.2", "@angular/common": "21.0.0-rc.2", "@angular/compiler": "21.0.0-rc.2", "@angular/compiler-cli": "21.0.0-rc.2", "@angular/core": "21.0.0-rc.2", "@angular/forms": "21.0.0-rc.2", "@angular/localize": "21.0.0-rc.2", - "@angular/material": "21.0.0-rc.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#6e336a2e2a8919e0a5049c6800da3258d785d365", + "@angular/material": "21.0.0-rc.2", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#49d7316da246484759b94f87e6eda47fde86b992", "@angular/platform-browser": "21.0.0-rc.2", "@angular/platform-server": "21.0.0-rc.2", "@angular/router": "21.0.0-rc.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e52edc056698..c3ca74ef6ef1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) @@ -44,11 +44,11 @@ importers: specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.2) '@angular/material': - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(36cf5dcd6d9a30c992eda0464d5874e2) + specifier: 21.0.0-rc.2 + version: 21.0.0-rc.2(4c9afee98155400dc203886c5442fc76) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#6e336a2e2a8919e0a5049c6800da3258d785d365 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6e336a2e2a8919e0a5049c6800da3258d785d365(@modelcontextprotocol/sdk@1.21.1) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#49d7316da246484759b94f87e6eda47fde86b992 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.21.1) '@angular/platform-browser': specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -990,8 +990,8 @@ packages: peerDependencies: '@angular/core': 21.0.0-rc.2 - '@angular/cdk@21.0.0-rc.1': - resolution: {integrity: sha512-7h4BWSg/Ah6S/YSf8IxSCQNTBSkKJNvJInRIoyQa1eDt3rMLOOu93nbrjyiwDbuuENeqrpiRJbulZDyO67LQEw==} + '@angular/cdk@21.0.0-rc.2': + resolution: {integrity: sha512-QO+0m1OXHwbpB4hoFnx+tkWsvChcNXvyHv3I4bN+wI8iv54yBuVgT5r8w+3VOAg/QB0em0AQEU7fdXfI3mwb3w==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 @@ -1050,19 +1050,19 @@ packages: '@angular/compiler': 21.0.0-rc.2 '@angular/compiler-cli': 21.0.0-rc.2 - '@angular/material@21.0.0-rc.1': - resolution: {integrity: sha512-NJi30CrDu9h2vAMMq7xOG8XpAZ4CdSezO+Ss+ZZ5fsD9LEaR7HiLj1SUtObp12wakGa0vBj/rFkHlbaxyEZF1Q==} + '@angular/material@21.0.0-rc.2': + resolution: {integrity: sha512-ousayydWUWkrWw7lKuiN9b/BeTNEio/75Z51+Hkg0n5xzgGWNV5tVT/IFw8IwssKWlsJslSCzohj/j5l9Hl7rw==} peerDependencies: - '@angular/cdk': 21.0.0-rc.1 + '@angular/cdk': 21.0.0-rc.2 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/6e336a2e2a8919e0a5049c6800da3258d785d365': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/6e336a2e2a8919e0a5049c6800da3258d785d365} - version: 0.0.0-854a5073df0fbdb0ea42232ba84b28d64014c56c + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992} + version: 0.0.0-c855fffb4b01bc06e743eb3bdfd54c866af09ad8 hasBin: true '@angular/platform-browser@21.0.0-rc.2': @@ -2356,15 +2356,6 @@ packages: resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/checkbox@4.3.1': - resolution: {integrity: sha512-rOcLotrptYIy59SGQhKlU0xBg1vvcVl2FdPIEclUvKHh0wo12OfGkId/01PIMJ/V+EimJ77t085YabgnQHBa5A==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/checkbox@4.3.2': resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} @@ -2383,15 +2374,6 @@ packages: '@types/node': optional: true - '@inquirer/core@10.3.1': - resolution: {integrity: sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/core@10.3.2': resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} @@ -2401,15 +2383,6 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.22': - resolution: {integrity: sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/editor@4.2.23': resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} @@ -2419,15 +2392,6 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.22': - resolution: {integrity: sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/expand@4.0.23': resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} @@ -2450,15 +2414,6 @@ packages: resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/input@4.3.0': - resolution: {integrity: sha512-h4fgse5zeGsBSW3cRQqu9a99OXRdRsNCvHoBqVmz40cjYjYFzcfwD0KA96BHIPlT7rZw0IpiefQIqXrjbzjS4Q==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/input@4.3.1': resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} @@ -2468,15 +2423,6 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.22': - resolution: {integrity: sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/number@3.0.23': resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} @@ -2486,15 +2432,6 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.22': - resolution: {integrity: sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/password@4.0.23': resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} @@ -2522,15 +2459,6 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.10': - resolution: {integrity: sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/rawlist@4.1.11': resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} @@ -2540,15 +2468,6 @@ packages: '@types/node': optional: true - '@inquirer/search@3.2.1': - resolution: {integrity: sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/search@3.2.2': resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} @@ -2558,15 +2477,6 @@ packages: '@types/node': optional: true - '@inquirer/select@4.4.1': - resolution: {integrity: sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/select@4.4.2': resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} @@ -7223,10 +7133,6 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} - mute-stream@3.0.0: - resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} - engines: {node: ^20.17.0 || >=22.9.0} - nanocolors@0.2.13: resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} @@ -9559,7 +9465,7 @@ snapshots: '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-rc.1(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) @@ -9621,9 +9527,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-rc.1(36cf5dcd6d9a30c992eda0464d5874e2)': + '@angular/material@21.0.0-rc.2(4c9afee98155400dc203886c5442fc76)': dependencies: - '@angular/cdk': 21.0.0-rc.1(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/cdk': 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) @@ -9631,7 +9537,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/6e336a2e2a8919e0a5049c6800da3258d785d365(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.21.1)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -11161,16 +11067,6 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.1(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/checkbox@4.3.2(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11188,19 +11084,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/core@10.3.1(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) - cli-width: 4.1.0 - mute-stream: 3.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/core@10.3.2(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11214,14 +11097,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/editor@4.2.22(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/editor@4.2.23(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.10.0) @@ -11230,14 +11105,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/expand@4.0.22(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/expand@4.0.23(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.10.0) @@ -11255,13 +11122,6 @@ snapshots: '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.3.0(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/input@4.3.1(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.10.0) @@ -11269,13 +11129,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/number@3.0.22(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/number@3.0.23(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.10.0) @@ -11283,14 +11136,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/password@4.0.22(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/password@4.0.23(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -11301,16 +11146,16 @@ snapshots: '@inquirer/prompts@7.10.0(@types/node@24.10.0)': dependencies: - '@inquirer/checkbox': 4.3.1(@types/node@24.10.0) + '@inquirer/checkbox': 4.3.2(@types/node@24.10.0) '@inquirer/confirm': 5.1.21(@types/node@24.10.0) - '@inquirer/editor': 4.2.22(@types/node@24.10.0) - '@inquirer/expand': 4.0.22(@types/node@24.10.0) - '@inquirer/input': 4.3.0(@types/node@24.10.0) - '@inquirer/number': 3.0.22(@types/node@24.10.0) - '@inquirer/password': 4.0.22(@types/node@24.10.0) - '@inquirer/rawlist': 4.1.10(@types/node@24.10.0) - '@inquirer/search': 3.2.1(@types/node@24.10.0) - '@inquirer/select': 4.4.1(@types/node@24.10.0) + '@inquirer/editor': 4.2.23(@types/node@24.10.0) + '@inquirer/expand': 4.0.23(@types/node@24.10.0) + '@inquirer/input': 4.3.1(@types/node@24.10.0) + '@inquirer/number': 3.0.23(@types/node@24.10.0) + '@inquirer/password': 4.0.23(@types/node@24.10.0) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.0) + '@inquirer/search': 3.2.2(@types/node@24.10.0) + '@inquirer/select': 4.4.2(@types/node@24.10.0) optionalDependencies: '@types/node': 24.10.0 @@ -11329,14 +11174,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/rawlist@4.1.10(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/rawlist@4.1.11(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.10.0) @@ -11345,15 +11182,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/search@3.2.1(@types/node@24.10.0)': - dependencies: - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/search@3.2.2(@types/node@24.10.0)': dependencies: '@inquirer/core': 10.3.2(@types/node@24.10.0) @@ -11363,16 +11191,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.0 - '@inquirer/select@4.4.1(@types/node@24.10.0)': - dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.1(@types/node@24.10.0) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.10.0 - '@inquirer/select@4.4.2(@types/node@24.10.0)': dependencies: '@inquirer/ansi': 1.0.2 @@ -16690,8 +16508,6 @@ snapshots: mute-stream@2.0.0: {} - mute-stream@3.0.0: {} - nanocolors@0.2.13: {} nanoid@3.3.11: {} diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index c90516a91cd0..f2359c3ae218 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#dcc26b56ffd77839ebe87705493aeb7ab51a9fbc", - "@angular/cdk": "github:angular/cdk-builds#9dbde742f93bb01483266ed5d2000771f93c68b2", - "@angular/common": "github:angular/common-builds#2b28bfe46c4769556c790178ea3e839e04e7436a", - "@angular/compiler": "github:angular/compiler-builds#fbe10ce1f2ad3ef4383afba5b845d470c0e4ff86", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e49b4aa583523fc7496ff601f866eefbc2ed9d8c", - "@angular/core": "github:angular/core-builds#af30188ff191a854afaa463d77e5b78c3c511f2f", - "@angular/forms": "github:angular/forms-builds#a735eea055a4689f346ce013695f276c3d248715", - "@angular/language-service": "github:angular/language-service-builds#536b171576a24833374bbf3e925976b0c42074c3", - "@angular/localize": "github:angular/localize-builds#4c34be62125f2f6f9372c2a17f41ddfb35c55750", - "@angular/material": "github:angular/material-builds#09ab0b2adf586c1194dcd392c2d601fec00f0f6a", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8fdfe9458ec414186ce25f9105ac0226f7e8aec7", - "@angular/platform-browser": "github:angular/platform-browser-builds#2dc4cb098cb127a4a7f0233f32c23979ce59c796", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#04cf43df57d9615bb16780e8a4462728173ff0b6", - "@angular/platform-server": "github:angular/platform-server-builds#32d268e608f28e566619915620ff6466303513bc", - "@angular/router": "github:angular/router-builds#17355149048f68e6dec67e5b64b0c5fbadcc818c", - "@angular/service-worker": "github:angular/service-worker-builds#5a5fdaefeb72ed77a0e18ff86e5ab08b40f570b3" + "@angular/animations": "github:angular/animations-builds#11097c79350fe45c91d735ff56e4a65033eff2d0", + "@angular/cdk": "github:angular/cdk-builds#fcb6a60ccdf562ea603fa1e69124fb88ea2d0b87", + "@angular/common": "github:angular/common-builds#68a879555e986eadce2c2e491ec5d5a19e07ea69", + "@angular/compiler": "github:angular/compiler-builds#3b84f54190d722d1b9146ec1f103c738693d68eb", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#5835bcbb2511c85162c1ed48a9231f7127ca03d2", + "@angular/core": "github:angular/core-builds#67db87f334964b99f490a8bdb30b3eb068e78db2", + "@angular/forms": "github:angular/forms-builds#1e1465e423f4815000630b320267245949d8f09b", + "@angular/language-service": "github:angular/language-service-builds#bae19c16444af108601fe2a1f4ffbf6d8d1a57da", + "@angular/localize": "github:angular/localize-builds#e7a995f8f170eea18bbb22a865574c638e45104a", + "@angular/material": "github:angular/material-builds#c8dc810b80c0830111d20539873d14445a5927eb", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8feb74c86d59345c8f7051fd0992e9a709045e4d", + "@angular/platform-browser": "github:angular/platform-browser-builds#32a7e1cb1eafeb19942d36944231a5cb54f7fdec", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#c3ca0dc2c4e17c4926ef6959bb488f7cd5c7ad77", + "@angular/platform-server": "github:angular/platform-server-builds#100517daedde70a9c9086e7d3cbc9ab0f61b752b", + "@angular/router": "github:angular/router-builds#305d28f496501736d694bd26fcb25675ac0b43d3", + "@angular/service-worker": "github:angular/service-worker-builds#87b2fdd7b79302df8af1e8749ac0eef0c6057f55" } } From 4d42a3ee1032f825c28141794bf26da618ac60d6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Nov 2025 19:32:42 -0500 Subject: [PATCH 1804/2162] fix(@angular/build): disable Vitest test isolation by default Disables test isolation in Vitest by setting `isolate: false` in the default Vitest configuration. This change aligns the default test isolation behavior with the existing Karma/Jasmine experience, promoting standardization across testing frameworks within the Angular CLI. This also provides significant performance improvements, especially in browser mode, by reducing the overhead associated with test isolation. All known issues related to disabling isolation have been addressed. --- .../build/src/builders/unit-test/runners/vitest/plugins.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index fada9089d84f..538b891e1473 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -117,7 +117,8 @@ export async function createVitestConfigPlugin( test: { setupFiles, globals: true, - // Allow Vitest to manage test isolation by its default behavior. + // Default to `false` to align with the Karma/Jasmine experience. + isolate: false, sequence: { setupFiles: 'list' }, }, optimizeDeps: { From f4a7cd940e467c693d5b5968fd184c244604a244 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:23:30 -0500 Subject: [PATCH 1805/2162] test(@angular/build): add e2e for tslib resolution in Vitest Adds an end-to-end test to verify that tslib is correctly resolved when using custom decorators within Vitest unit tests. This ensures compatibility with Angular decorators and the Vitest runner's module resolution configuration. --- .../e2e/tests/vitest/tslib-resolution.ts | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts b/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts new file mode 100644 index 000000000000..d3cb95a3ef3c --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts @@ -0,0 +1,72 @@ +import { writeFile } from '../../utils/fs'; +import { installPackage } from '../../utils/packages'; +import { exec, ng } from '../../utils/process'; +import { applyVitestBuilder } from '../../utils/vitest'; +import assert from 'node:assert'; + +export default async function () { + await applyVitestBuilder(); + await installPackage('playwright@1'); + await installPackage('@vitest/browser-playwright@4'); + await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); + + // Add a custom decorator to trigger tslib usage + await writeFile( + 'src/app/custom-decorator.ts', + ` + export function MyDecorator() { + return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { + // do nothing + }; + } + `, + ); + + // Add a service that uses the decorator + await writeFile( + 'src/app/test.service.ts', + ` + import { Injectable } from '@angular/core'; + import { MyDecorator } from './custom-decorator'; + + @Injectable({ + providedIn: 'root' + }) + export class TestService { + @MyDecorator() + myMethod() { + return true; + } + } + `, + ); + + // Add a test for the service + await writeFile( + 'src/app/test.service.spec.ts', + ` + import { TestBed } from '@angular/core/testing'; + import { TestService } from './test.service'; + + describe('TestService', () => { + let service: TestService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TestService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('myMethod should return true', () => { + expect(service.myMethod()).toBe(true); + }); + }); + `, + ); + + const { stdout } = await ng('test', '--no-watch', '--browsers', 'chromiumHeadless'); + assert.match(stdout, /2 passed/, 'Expected 2 tests to pass.'); +} From 960c80c618a8dd49905736d00c67bcedca64ab65 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:31:57 -0500 Subject: [PATCH 1806/2162] test(@angular/build): add e2e for a larger project with Vitest Adds an end-to-end test to verify Vitest runner performance and correctness with a larger number of generated components, services, and pipes. This test executes the suite in both JSDOM and browser environments to ensure stability and proper functionality under scale. --- .../e2e/tests/vitest/larger-project.ts | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vitest/larger-project.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project.ts b/tests/legacy-cli/e2e/tests/vitest/larger-project.ts new file mode 100644 index 000000000000..16d254f98a24 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/larger-project.ts @@ -0,0 +1,60 @@ +import { ng } from '../../utils/process'; +import { applyVitestBuilder } from '../../utils/vitest'; +import assert from 'node:assert'; +import { installPackage } from '../../utils/packages'; +import { exec } from '../../utils/process'; + +export default async function () { + await applyVitestBuilder(); + + const artifactCount = 100; + // A new project starts with 1 test file (app.spec.ts) + // Each generated artifact will add one more test file. + const initialTestCount = 1; + + // Generate a mix of components, services, and pipes + for (let i = 0; i < artifactCount; i++) { + const type = i % 3; + const name = `test-artifact-${i}`; + let generateType; + + switch (type) { + case 0: + generateType = 'component'; + break; + case 1: + generateType = 'service'; + break; + default: + generateType = 'pipe'; + break; + } + + await ng('generate', generateType, name, '--skip-tests=false'); + } + + const totalTests = initialTestCount + artifactCount; + const expectedMessage = new RegExp(`${totalTests} passed`); + + // Run tests in default (JSDOM) mode + const { stdout: jsdomStdout } = await ng('test', '--no-watch'); + assert.match(jsdomStdout, expectedMessage, `Expected ${totalTests} tests to pass in JSDOM mode.`); + + // Setup for browser mode + await installPackage('playwright@1'); + await installPackage('@vitest/browser-playwright@4'); + await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); + + // Run tests in browser mode + const { stdout: browserStdout } = await ng( + 'test', + '--no-watch', + '--browsers', + 'ChromiumHeadless', + ); + assert.match( + browserStdout, + expectedMessage, + `Expected ${totalTests} tests to pass in browser mode.`, + ); +} From 14cd1e15b33311b13b3a63f21a06f3cd85dbbb33 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Sun, 16 Nov 2025 19:05:58 -0500 Subject: [PATCH 1807/2162] fix(@angular/build): correct Vitest coverage include handling for virtual files Addresses an issue where user-defined `coverageInclude` patterns in Vitest could incorrectly exclude bundled virtual files during the pre-sourcemap coverage check, leading to incomplete or empty coverage reports. This change modifies the `generateCoverageOption` function to augment user-provided `coverageInclude` arrays with specific globs (`spec-*.js`, `chunk-*.js`) that match the internal bundled test entry points and code chunks. This ensures that all necessary files are considered during Vitest's initial coverage pass, while still respecting the user's original `include` patterns for the post-sourcemap remapping. --- .../unit-test/runners/vitest/plugins.ts | 5 +- .../options/code-coverage-include_spec.ts | 82 +++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 packages/angular/build/src/builders/unit-test/tests/options/code-coverage-include_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 538b891e1473..96d3337e0149 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -285,7 +285,10 @@ async function generateCoverageOption( return { enabled: coverage.enabled, excludeAfterRemap: true, - include: coverage.include, + // Vitest performs a pre-check and a post-check for sourcemaps. + // The pre-check uses the bundled files, so specific bundled entry points and chunks need to be included. + // The post-check uses the original source files, so the user's include is used. + ...(coverage.include ? { include: ['spec-*.js', 'chunk-*.js', ...coverage.include] } : {}), reportsDirectory: toPosixPath(path.join('coverage', projectName)), thresholds: coverage.thresholds, watermarks: coverage.watermarks, diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-include_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-include_spec.ts new file mode 100644 index 000000000000..6cdbc8bfa23b --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-include_spec.ts @@ -0,0 +1,82 @@ +/** + * @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, + describeBuilder, + UNIT_TEST_BUILDER_INFO, + setupApplicationTarget, +} from '../setup'; + +describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { + describe('Option: "coverageInclude"', () => { + beforeEach(async () => { + setupApplicationTarget(harness); + await harness.writeFiles({ + 'src/app/included.ts': `export const a = 1;`, + 'src/app/included.spec.ts': ` + import { a } from './included'; + describe('included', () => { + it('should work', () => { + expect(a).toBe(1); + }); + }); + `, + 'src/app/excluded.ts': `export const b = 2;`, + }); + }); + + it('should only include and report coverage for files that match the glob pattern', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + coverage: true, + coverageInclude: ['**/included.ts'], + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + + const summary = JSON.parse(harness.readFile('coverage/test/coverage-final.json')); + const summaryKeys = Object.keys(summary); + + const includedKey = summaryKeys.find((key) => key.endsWith('src/app/included.ts')); + const excludedKey = summaryKeys.find((key) => key.endsWith('src/app/excluded.ts')); + + // Check that the included file is in the report and the excluded one is not. + expect(includedKey).toBeDefined(); + expect(excludedKey).toBeUndefined(); + + // Check that the coverage data for the included file is valid. + const includedCoverage = summary[includedKey!]; + // The file has one statement, and it should have been executed once. + expect(includedCoverage.s['0']).toBe(1); + }); + + it('should only include referenced files when no include pattern is provided', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + coverage: true, + // coverageInclude is not provided, so only referenced files should be included. + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + const summary = JSON.parse(harness.readFile('coverage/test/coverage-final.json')); + const summaryKeys = Object.keys(summary); + + const includedKey = summaryKeys.find((key) => key.endsWith('src/app/included.ts')); + const excludedKey = summaryKeys.find((key) => key.endsWith('src/app/excluded.ts')); + + // The included file is referenced by its spec and should be in the report. + expect(includedKey).toBeDefined(); + // The excluded file is not referenced and should NOT be in the report. + expect(excludedKey).toBeUndefined(); + }); + }); +}); From 720a4cec3ffe20fcb19b2d20fd741c79bd1b6b8f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Sun, 16 Nov 2025 17:46:27 -0500 Subject: [PATCH 1808/2162] test(@angular/build): add e2e for larger project with Vitest coverage Adds an end-to-end test to verify Vitest coverage collection and threshold enforcement for a larger number of generated components, services, and pipes. This test ensures that all generated source files are correctly included in the coverage report in both JSDOM and browser environments. --- .../tests/vitest/larger-project-coverage.ts | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts new file mode 100644 index 000000000000..69193ba1d775 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts @@ -0,0 +1,100 @@ +import { ng } from '../../utils/process'; +import { applyVitestBuilder } from '../../utils/vitest'; +import assert from 'node:assert'; +import { installPackage } from '../../utils/packages'; +import { exec } from '../../utils/process'; +import { updateJsonFile } from '../../utils/project'; +import { readFile } from '../../utils/fs'; + +export default async function () { + await applyVitestBuilder(); + await installPackage('@vitest/coverage-v8@4'); + + // Add coverage and threshold configuration to ensure coverage is calculated. + // Use the 'json' reporter to get a machine-readable output for assertions. + await updateJsonFile('angular.json', (json) => { + const project = Object.values(json['projects'])[0] as any; + const test = project['architect']['test']; + test.options = { + coverageReporters: ['json', 'text'], + coverageThresholds: { + // The generated component/service/pipe files are basic + // A threshold of 75 should be safe. + statements: 75, + }, + }; + }); + + const artifactCount = 100; + const initialTestCount = 1; + const generatedFiles: string[] = []; + + // Generate a mix of components, services, and pipes + for (let i = 0; i < artifactCount; i++) { + const type = i % 3; + const name = `test-artifact${i}`; + let generateType; + let fileSuffix; + + switch (type) { + case 0: + generateType = 'component'; + fileSuffix = '.ts'; + break; + case 1: + generateType = 'service'; + fileSuffix = '.ts'; + break; + default: + generateType = 'pipe'; + fileSuffix = '-pipe.ts'; + break; + } + + await ng('generate', generateType, name, '--skip-tests=false'); + generatedFiles.push(`${name}${fileSuffix}`); + } + + const totalTests = initialTestCount + artifactCount; + const expectedMessage = new RegExp(`${totalTests} passed`); + const coverageJsonPath = 'coverage/test-project/coverage-final.json'; + + // Run tests in default (JSDOM) mode with coverage + const { stdout: jsdomStdout } = await ng('test', '--no-watch', '--coverage'); + assert.match(jsdomStdout, expectedMessage, `Expected ${totalTests} tests to pass in JSDOM mode.`); + + // Assert that every generated file is in the coverage report by reading the JSON output. + const jsdomSummary = JSON.parse(await readFile(coverageJsonPath)); + const jsdomSummaryKeys = Object.keys(jsdomSummary); + for (const file of generatedFiles) { + const found = jsdomSummaryKeys.some((key) => key.endsWith(file)); + assert.ok(found, `Expected ${file} to be in the JSDOM coverage report.`); + } + + // Setup for browser mode + await installPackage('playwright@1'); + await installPackage('@vitest/browser-playwright@4'); + await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); + + // Run tests in browser mode with coverage + const { stdout: browserStdout } = await ng( + 'test', + '--no-watch', + '--coverage', + '--browsers', + 'ChromiumHeadless', + ); + assert.match( + browserStdout, + expectedMessage, + `Expected ${totalTests} tests to pass in browser mode.`, + ); + + // Assert that every generated file is in the coverage report for browser mode. + const browserSummary = JSON.parse(await readFile(coverageJsonPath)); + const browserSummaryKeys = Object.keys(browserSummary); + for (const file of generatedFiles) { + const found = browserSummaryKeys.some((key) => key.endsWith(file)); + assert.ok(found, `Expected ${file} to be in the browser coverage report.`); + } +} From c241dd8f1b8885a752335e3fad5f9a5a56d2d1ae Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:22:04 +0000 Subject: [PATCH 1809/2162] fix(@angular/build): configure Vitest cache to use Angular cache Configures Vitest to use the Angular cache directory instead of its default location within `node_modules/.vite`. This change ensures that Vitest's cache is managed consistently with other Angular build artifacts, avoiding unnecessary writes to `node_modules`. --- .../unit-test/runners/vitest/executor.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 8d09550b671a..bac8e389c4c5 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -8,7 +8,7 @@ import type { BuilderOutput } from '@angular-devkit/architect'; import assert from 'node:assert'; -import path from 'node:path'; +import path, { join } from 'node:path'; import type { Vitest } from 'vitest/node'; import { DevServerExternalResultMetadata, @@ -150,6 +150,10 @@ export class VitestExecutor implements TestExecutor { watch, browserViewport, ui, + projectRoot, + runnerConfig, + projectSourceRoot, + cacheOptions, } = this.options; const projectName = this.projectName; @@ -171,7 +175,7 @@ export class VitestExecutor implements TestExecutor { const browserOptions = await setupBrowserConfiguration( browsers, debug, - this.options.projectSourceRoot, + projectSourceRoot, browserViewport, ); if (browserOptions.errors?.length) { @@ -186,7 +190,7 @@ export class VitestExecutor implements TestExecutor { const testSetupFiles = this.prepareSetupFiles(); const projectPlugins = createVitestPlugins({ workspaceRoot, - projectSourceRoot: this.options.projectSourceRoot, + projectSourceRoot, projectName, buildResultFiles: this.buildResultFiles, testFileToEntryPoint: this.testFileToEntryPoint, @@ -200,10 +204,9 @@ export class VitestExecutor implements TestExecutor { } : {}; - const runnerConfig = this.options.runnerConfig; const externalConfigPath = runnerConfig === true - ? await findVitestBaseConfig([this.options.projectRoot, this.options.workspaceRoot]) + ? await findVitestBaseConfig([projectRoot, workspaceRoot]) : runnerConfig; return startVitest( @@ -214,12 +217,15 @@ export class VitestExecutor implements TestExecutor { root: workspaceRoot, project: projectName, outputFile, + cache: cacheOptions.enabled ? undefined : false, testNamePattern: this.options.filter, watch, ui, ...debugOptions, }, { + // Note `.vitest` is auto appended to the path. + cacheDir: cacheOptions.path, server: { // Disable the actual file watcher. The boolean watch option above should still // be enabled as it controls other internal behavior related to rerunning tests. @@ -230,7 +236,7 @@ export class VitestExecutor implements TestExecutor { browser: browserOptions.browser, coverage, projectName, - projectSourceRoot: this.options.projectSourceRoot, + projectSourceRoot, optimizeDepsInclude: this.externalMetadata.implicitBrowser, reporters, setupFiles: testSetupFiles, From f074f1356fba233ca8c33a482ecc26920a0ac1fb Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:18:10 +0000 Subject: [PATCH 1810/2162] test: improve vitest e2e test stability and performance - Use Chrome binary from `rules_browsers` for Playwright in Vitest browser tests for hermetic testing. - Batch `ng generate` commands in e2e tests to improve performance. - Remove now redundant chromium install commands from e2e tests. --- .../runners/vitest/browser-provider.ts | 16 +++++- .../e2e/tests/vitest/larger-project.ts | 52 +++++++++++-------- .../e2e/tests/vitest/tslib-resolution.ts | 3 +- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index 7eed077fc03c..4f7469ebf28b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -76,7 +76,21 @@ export async function setupBrowserConfiguration( // Validate that the imported module has the expected structure const providerFactory = providerModule[providerName]; if (typeof providerFactory === 'function') { - provider = providerFactory(); + if ( + providerName === 'playwright' && + process.env['CHROME_BIN']?.includes('rules_browsers') + ) { + // Use the Chrome binary from the 'rules_browsers' toolchain (via CHROME_BIN) + // for Playwright when available to ensure hermetic testing, preventing reliance + // on locally installed or NPM-managed browser versions. + provider = providerFactory({ + launchOptions: { + executablePath: process.env.CHROME_BIN, + }, + }); + } else { + provider = providerFactory(); + } } else { errors ??= []; errors.push( diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project.ts b/tests/legacy-cli/e2e/tests/vitest/larger-project.ts index 16d254f98a24..61b18b102c4b 100644 --- a/tests/legacy-cli/e2e/tests/vitest/larger-project.ts +++ b/tests/legacy-cli/e2e/tests/vitest/larger-project.ts @@ -12,26 +12,7 @@ export default async function () { // Each generated artifact will add one more test file. const initialTestCount = 1; - // Generate a mix of components, services, and pipes - for (let i = 0; i < artifactCount; i++) { - const type = i % 3; - const name = `test-artifact-${i}`; - let generateType; - - switch (type) { - case 0: - generateType = 'component'; - break; - case 1: - generateType = 'service'; - break; - default: - generateType = 'pipe'; - break; - } - - await ng('generate', generateType, name, '--skip-tests=false'); - } + await generateArtifactsInBatches(artifactCount); const totalTests = initialTestCount + artifactCount; const expectedMessage = new RegExp(`${totalTests} passed`); @@ -43,7 +24,6 @@ export default async function () { // Setup for browser mode await installPackage('playwright@1'); await installPackage('@vitest/browser-playwright@4'); - await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); // Run tests in browser mode const { stdout: browserStdout } = await ng( @@ -58,3 +38,33 @@ export default async function () { `Expected ${totalTests} tests to pass in browser mode.`, ); } + +async function generateArtifactsInBatches(artifactCount: number): Promise { + const BATCH_SIZE = 5; + let commands: Promise[] = []; + + for (let i = 0; i < artifactCount; i++) { + const type = i % 3; + const name = `test-artifact-${i}`; + let generateType: string; + + switch (type) { + case 0: + generateType = 'component'; + break; + case 1: + generateType = 'service'; + break; + default: + generateType = 'pipe'; + break; + } + + commands.push(ng('generate', generateType, name, '--skip-tests=false')); + + if (commands.length === BATCH_SIZE || i === artifactCount - 1) { + await Promise.all(commands); + commands = []; + } + } +} diff --git a/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts b/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts index d3cb95a3ef3c..759d5e2b5728 100644 --- a/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts +++ b/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts @@ -1,6 +1,6 @@ import { writeFile } from '../../utils/fs'; import { installPackage } from '../../utils/packages'; -import { exec, ng } from '../../utils/process'; +import { ng } from '../../utils/process'; import { applyVitestBuilder } from '../../utils/vitest'; import assert from 'node:assert'; @@ -8,7 +8,6 @@ export default async function () { await applyVitestBuilder(); await installPackage('playwright@1'); await installPackage('@vitest/browser-playwright@4'); - await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); // Add a custom decorator to trigger tslib usage await writeFile( From 102ca8b2851d6d89bcad7776b84710c9e7ebd86b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:42:50 -0500 Subject: [PATCH 1811/2162] test(@angular/build): temporarily disable Vitest coverage check on Windows Disables the JSON coverage report assertion in the larger project E2E test when running in JSDOM mode on Windows. This is a temporary workaround to address a platform-specific issue where the `coverage-final.json` file is unexpectedly empty. The browser-mode coverage check and the JSDOM check on other platforms remain active. Further investigation is required to determine the root cause of the Windows JSDOM coverage issue. --- .../e2e/tests/vitest/larger-project-coverage.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts index 69193ba1d775..17e642014d8d 100644 --- a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts +++ b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts @@ -63,12 +63,16 @@ export default async function () { const { stdout: jsdomStdout } = await ng('test', '--no-watch', '--coverage'); assert.match(jsdomStdout, expectedMessage, `Expected ${totalTests} tests to pass in JSDOM mode.`); - // Assert that every generated file is in the coverage report by reading the JSON output. - const jsdomSummary = JSON.parse(await readFile(coverageJsonPath)); - const jsdomSummaryKeys = Object.keys(jsdomSummary); - for (const file of generatedFiles) { - const found = jsdomSummaryKeys.some((key) => key.endsWith(file)); - assert.ok(found, `Expected ${file} to be in the JSDOM coverage report.`); + // TODO: Investigate why coverage-final.json is empty on Windows in JSDOM mode. + // For now, skip the coverage report check on Windows. + if (process.platform !== 'win32') { + // Assert that every generated file is in the coverage report by reading the JSON output. + const jsdomSummary = JSON.parse(await readFile(coverageJsonPath)); + const jsdomSummaryKeys = Object.keys(jsdomSummary); + for (const file of generatedFiles) { + const found = jsdomSummaryKeys.some((key) => key.endsWith(file)); + assert.ok(found, `Expected ${file} to be in the JSDOM coverage report.`); + } } // Setup for browser mode From 69824ae56529c6f77378b63a962bd729fa99a30b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Fra=C5=9B?= Date: Sun, 16 Nov 2025 22:12:04 +0100 Subject: [PATCH 1812/2162] fix(@schematics/angular): issues in apps generated with '--file-name-style-guide=2016' flag - fixes references to non-existing `app.ts` file, causing build and test issues - changes file names from `app-module.ts` and `app-routing-module.ts` to `app.module.ts` and `app-routing.module.ts`, for consistency. Closes: #31830 --- .../src/app/app__suffix__.spec.ts.template | 2 +- .../src/app/app__suffix__.ts.template | 4 +- ...=> app__typeSeparator__module.ts.template} | 4 +- .../src/app/app__suffix__.spec.ts.template | 2 +- .../schematics/angular/application/index.ts | 4 +- .../angular/application/index_spec.ts | 57 +++++++++++++++++++ 6 files changed, 66 insertions(+), 7 deletions(-) rename packages/schematics/angular/application/files/module-files/src/app/{app-module.ts.template => app__typeSeparator__module.ts.template} (76%) diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template index 4d3e1965efea..dfe31b1010c6 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.spec.ts.template @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing';<% if (routing) { %> import { RouterModule } from '@angular/router';<% } %> -import { App } from './app'; +import { App } from './app<%= suffix %>'; describe('App', () => { beforeEach(async () => { diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template index 2bb65ba29ba7..cbc072878c68 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template @@ -9,10 +9,10 @@ import { Component, signal } from '@angular/core'; %><% } %> `,<% } else { %> - templateUrl: './app.html',<% } %> + templateUrl: './app<%= suffix %>.html',<% } %> standalone: false,<% if(inlineStyle) { %> styles: []<% } else { %> - styleUrl: './app.<%= style %>'<% } %> + styleUrl: './app<%= suffix %>.<%= style %>'<% } %> }) export class App { protected readonly title = signal('<%= name %>'); 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__typeSeparator__module.ts.template similarity index 76% 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__typeSeparator__module.ts.template index 8b91651c49d5..06ba3eb2a079 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__typeSeparator__module.ts.template @@ -1,8 +1,8 @@ import { NgModule, provideBrowserGlobalErrorListeners } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; <% if (routing) { %> -import { AppRoutingModule } from './app-routing-module';<% } %> -import { App } from './app'; +import { AppRoutingModule } from './app-routing<%= typeSeparator %>module';<% } %> +import { App } from './app<%= suffix %>'; @NgModule({ declarations: [ diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template index af22780db300..e6944dc73ccd 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.spec.ts.template @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { App } from './app'; +import { App } from './app<%= suffix %>'; describe('App', () => { beforeEach(async () => { diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 95c8380b0817..53ddd53acad0 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -68,6 +68,7 @@ export default function (options: ApplicationOptions): Rule { await getAppOptions(host, options); const suffix = options.fileNameStyleGuide === '2016' ? '.component' : ''; + const typeSeparator = options.fileNameStyleGuide === '2016' ? '.' : '-'; return chain([ addAppToWorkspaceFile(options, appDir), @@ -85,7 +86,7 @@ export default function (options: ApplicationOptions): Rule { routingScope: 'Root', path: sourceDir, project: options.name, - typeSeparator: undefined, + typeSeparator, }), schematic('component', { name: 'app', @@ -111,6 +112,7 @@ export default function (options: ApplicationOptions): Rule { appName: options.name, folderName, suffix, + typeSeparator, }), move(appDir), ]), diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 5c56e2ca7a4d..7263f9f69297 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -879,5 +879,62 @@ describe('Application Schematic', () => { expect(component).toContain(`templateUrl: './app.component.html'`); expect(component).toContain(`styleUrl: './app.component.css'`); }); + + it('should create a test file with import from the path without suffix', async () => { + const options = { ...defaultOptions, fileNameStyleGuide: '2016' as const }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const componentSpec = tree.readContent('/projects/foo/src/app/app.component.spec.ts'); + expect(componentSpec).toContain(`import { App } from './app.component'`); + }); + + describe('standalone: false', () => { + it('should create a component with the correct template and style urls', async () => { + const options = { + ...defaultOptions, + standalone: false, + fileNameStyleGuide: '2016' as const, + }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const component = tree.readContent('/projects/foo/src/app/app.component.ts'); + expect(component).toContain(`templateUrl: './app.component.html'`); + expect(component).toContain(`styleUrl: './app.component.css'`); + }); + + it('should create a test file with import from the path without suffix', async () => { + const options = { + ...defaultOptions, + standalone: false, + fileNameStyleGuide: '2016' as const, + }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const componentSpec = tree.readContent('/projects/foo/src/app/app.component.spec.ts'); + expect(componentSpec).toContain(`import { App } from './app.component'`); + }); + + it('should create a module with the correct suffix', async () => { + const options = { + ...defaultOptions, + standalone: false, + fileNameStyleGuide: '2016' as const, + }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const module = tree.readContent('/projects/foo/src/app/app.module.ts'); + expect(module).toContain(`import { App } from './app.component'`); + }); + + it('should create a routing module with the correct suffix', async () => { + const options = { + ...defaultOptions, + standalone: false, + routing: true, + fileNameStyleGuide: '2016' as const, + }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const module = tree.readContent('/projects/foo/src/app/app.module.ts'); + const routingModule = tree.readContent('/projects/foo/src/app/app-routing.module.ts'); + expect(routingModule).toBeDefined(); + expect(module).toContain(`import { AppRoutingModule } from './app-routing.module'`); + }); + }); }); }); From 70e67feae299ec89cd3a3ca1808ba2af2c2302e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Fra=C5=9B?= Date: Mon, 17 Nov 2025 13:52:29 +0100 Subject: [PATCH 1813/2162] fix(@schematics/angular): add missing typeSeparator to main.ts.template file --- .../angular/application/files/module-files/src/main.ts.template | 2 +- packages/schematics/angular/application/index_spec.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) 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 407a18d4a65d..629780834c82 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<%= typeSeparator %>module'; platformBrowser().bootstrapModule(AppModule, { <% if(!zoneless) { %>ngZoneEventCoalescing: true,<% } %><% if(!!viewEncapsulation) { %> diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 7263f9f69297..737af0578b0d 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -919,7 +919,9 @@ describe('Application Schematic', () => { }; const tree = await schematicRunner.runSchematic('application', options, workspaceTree); const module = tree.readContent('/projects/foo/src/app/app.module.ts'); + const main = tree.readContent('/projects/foo/src/main.ts'); expect(module).toContain(`import { App } from './app.component'`); + expect(main).toContain(`import { AppModule } from './app/app.module'`); }); it('should create a routing module with the correct suffix', async () => { From ed700a14506eb7a35e70572a2d80e4b12d06c181 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:22:22 -0500 Subject: [PATCH 1814/2162] fix(@angular/build): prioritize string type for runnerConfig schema Reorders the `type` union in the `runnerConfig` option's schema to prioritize `string` over `boolean`. This change provides a stronger hint to the CLI's argument parser, ensuring that when a value is provided for the option (e.g., a file path), it is unambiguously treated as a string. This improves the robustness of the parsing logic for this union-type option while preserving the functionality of its boolean flag forms. --- .../build/src/builders/unit-test/options.ts | 6 +++- .../build/src/builders/unit-test/schema.json | 2 +- .../e2e/tests/vitest/runner-config-path.ts | 33 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 tests/legacy-cli/e2e/tests/vitest/runner-config-path.ts diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 3b003e9c3620..ac3d1b4e9652 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -127,7 +127,11 @@ export async function normalizeOptions( dumpVirtualFiles: options.dumpVirtualFiles, listTests: options.listTests, runnerConfig: - typeof runnerConfig === 'string' ? path.resolve(workspaceRoot, runnerConfig) : runnerConfig, + typeof runnerConfig === 'string' + ? runnerConfig.length === 0 + ? true + : path.resolve(workspaceRoot, runnerConfig) + : runnerConfig, }; } diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index ed766c1774a2..3b92d31a4cde 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -20,7 +20,7 @@ "enum": ["karma", "vitest"] }, "runnerConfig": { - "type": ["boolean", "string"], + "type": ["string", "boolean"], "description": "Specifies the configuration file for the selected test runner. If a string is provided, it will be used as the path to the configuration file. If `true`, the builder will search for a default configuration file (e.g., `vitest.config.ts` or `karma.conf.js`). If `false`, no external configuration file will be used.\\nFor Vitest, this enables advanced options and the use of custom plugins. Please note that while the file is loaded, the Angular team does not provide direct support for its specific contents or any third-party plugins used within it.", "default": false }, diff --git a/tests/legacy-cli/e2e/tests/vitest/runner-config-path.ts b/tests/legacy-cli/e2e/tests/vitest/runner-config-path.ts new file mode 100644 index 000000000000..456469b2d6a4 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/runner-config-path.ts @@ -0,0 +1,33 @@ +import assert from 'node:assert/strict'; +import path from 'node:path'; +import { writeMultipleFiles } from '../../utils/fs'; +import { ng } from '../../utils/process'; +import { applyVitestBuilder } from '../../utils/vitest'; + +export default async function (): Promise { + await applyVitestBuilder(); + + // Create a custom Vitest configuration file. + const customConfigPath = 'vitest.custom.mjs'; + await writeMultipleFiles({ + [customConfigPath]: ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + // A unique option to confirm this file is being used. + passWithNoTests: true, + }, + }); + `, + }); + + const absoluteConfigPath = path.resolve(customConfigPath); + const { stdout } = await ng('test', `--runner-config=${absoluteConfigPath}`); + + // Assert that the CLI logs the use of the specified configuration file. + assert.match( + stdout, + /vitest\.custom\.mjs/, + 'Expected a message confirming the use of the custom config file.', + ); +} From 8bd7f28cbed60e936f79802efe3ca2e03409a82a Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Mon, 17 Nov 2025 15:25:27 -0800 Subject: [PATCH 1815/2162] docs: release notes for the v21.0.0-rc.5 release --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41b11c1ba432..68b2de6c6cc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,25 @@ + + +# 21.0.0-rc.5 (2025-11-17) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- | +| [e8feba9ee](https://github.com/angular/angular-cli/commit/e8feba9ee163f688c51d6463336474591e886647) | fix | add missing typeSeparator to main.ts.template file | +| [6615fcf03](https://github.com/angular/angular-cli/commit/6615fcf037686cd96e97b469937b7f0736afaa77) | fix | issues in apps generated with '--file-name-style-guide=2016' flag | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | +| [a11dd31f0](https://github.com/angular/angular-cli/commit/a11dd31f0c80a189e7dcb3172c89a731cfc34702) | fix | configure Vitest cache to use Angular cache | +| [f05ffd104](https://github.com/angular/angular-cli/commit/f05ffd104255e86fe93f3736e1430f940cb83007) | fix | correct Vitest coverage include handling for virtual files | +| [49b65aba8](https://github.com/angular/angular-cli/commit/49b65aba8d7cd2839776e987366b981d7762760c) | fix | disable Vitest test isolation by default | +| [fa5c92346](https://github.com/angular/angular-cli/commit/fa5c92346d14a6ad03aa30ad6392fc649038605e) | fix | prioritize string type for runnerConfig schema | + + + # 21.0.0-rc.4 (2025-11-14) From a8bd8f7b257e23fb6ad40f827e9022bfb7d3938c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Fra=C5=9B?= Date: Tue, 18 Nov 2025 13:01:59 +0100 Subject: [PATCH 1816/2162] fix(@schematics/angular): flag '--file-name-style-guide=2016' - wrong import in main.ts --- .../application/files/standalone-files/src/main.ts.template | 2 +- packages/schematics/angular/application/index_spec.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) 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 5df75f9c838e..104fe6b29ae7 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 { App } from './app/app'; +import { App } from './app/app<%= suffix %>'; 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 737af0578b0d..4d95be8b5ea1 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -876,8 +876,10 @@ describe('Application Schematic', () => { const options = { ...defaultOptions, fileNameStyleGuide: '2016' as const }; const tree = await schematicRunner.runSchematic('application', options, workspaceTree); const component = tree.readContent('/projects/foo/src/app/app.component.ts'); + const main = tree.readContent('/projects/foo/src/main.ts'); expect(component).toContain(`templateUrl: './app.component.html'`); expect(component).toContain(`styleUrl: './app.component.css'`); + expect(main).toContain(`import { App } from './app/app.component'`); }); it('should create a test file with import from the path without suffix', async () => { From 41c67987160106a0711a75ecd51b62f8e5668fc1 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Tue, 18 Nov 2025 12:05:17 -0800 Subject: [PATCH 1817/2162] docs: release notes for the v21.0.0-rc.6 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68b2de6c6cc7..3e80779b8319 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 21.0.0-rc.6 (2025-11-18) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | +| [e33e77d12](https://github.com/angular/angular-cli/commit/e33e77d12984446fe7bc77deb7438806817ba8a7) | fix | flag '--file-name-style-guide=2016' - wrong import in main.ts | + + + # 21.0.0-rc.5 (2025-11-17) From 3aa51b64ceeb2bb1ce6c85a8a222e793de80634c Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 19 Nov 2025 08:31:54 -0800 Subject: [PATCH 1818/2162] docs: release notes for the v20.3.11 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e80779b8319..9304bcdb388d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 20.3.11 (2025-11-19) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | +| [8053f2d92](https://github.com/angular/angular-cli/commit/8053f2d92a68a8bd01854eb81aa472249f5a83b2) | fix | ensure `ɵgetOrCreateAngularServerApp` is always defined after errors | + + + # 21.0.0-rc.6 (2025-11-18) From 8dd05c1a384ea38018c32e17c787ebad0ebc5535 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 19 Nov 2025 11:16:25 -0800 Subject: [PATCH 1819/2162] docs: release notes for the v21.0.0 release --- CHANGELOG.md | 670 +++++++++++---------------------------------------- 1 file changed, 137 insertions(+), 533 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9304bcdb388d..d21a148efc91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,114 +1,165 @@ - - -# 20.3.11 (2025-11-19) - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | -| [8053f2d92](https://github.com/angular/angular-cli/commit/8053f2d92a68a8bd01854eb81aa472249f5a83b2) | fix | ensure `ɵgetOrCreateAngularServerApp` is always defined after errors | - - - - + -# 21.0.0-rc.6 (2025-11-18) +# 21.0.0 (2025-11-19) -### @schematics/angular +## Breaking Changes -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | -| [e33e77d12](https://github.com/angular/angular-cli/commit/e33e77d12984446fe7bc77deb7438806817ba8a7) | fix | flag '--file-name-style-guide=2016' - wrong import in main.ts | +### @angular/cli - +- The `ng` commands will no longer automatically detect and use `cnpm` as the package manager. As an alternative use the `.npmrc` file to ensure npm uses the cnpm registry. - +### @angular/build -# 21.0.0-rc.5 (2025-11-17) +- - TypeScript versions older than 5.9 are no longer supported. +- The `javascriptEnabled` option for Less is no longer supported. Projects relying on inline JavaScript within Less files will need to refactor their stylesheets to remove this dependency. ### @schematics/angular -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- | -| [e8feba9ee](https://github.com/angular/angular-cli/commit/e8feba9ee163f688c51d6463336474591e886647) | fix | add missing typeSeparator to main.ts.template file | -| [6615fcf03](https://github.com/angular/angular-cli/commit/6615fcf037686cd96e97b469937b7f0736afaa77) | fix | issues in apps generated with '--file-name-style-guide=2016' flag | - -### @angular/build +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------ | +| [e417c89f9](https://github.com/angular/angular-cli/commit/e417c89f9e9cfe0ce50ffbc72ef555793605aea1) | feat | Add `addTypeToClassName` option to relevant schematics | +| [ede5e52bc](https://github.com/angular/angular-cli/commit/ede5e52bc701c42948bd98826cd4fa901350015c) | feat | add `include` option to jasmine-to-vitest schematic | +| [c119910f4](https://github.com/angular/angular-cli/commit/c119910f4505e280eea83ea6647b6d279a46f36d) | feat | add AGENTS.md support to ai-config schematic | +| [d0d2a17b8](https://github.com/angular/angular-cli/commit/d0d2a17b8adb2c1ce6eee70494f5d2298622c40e) | feat | add Jasmine spy API transformations to jasmine-to-vitest schematic | +| [e7d955bed](https://github.com/angular/angular-cli/commit/e7d955bedd5ca6957903cb73f8ebe06823a808da) | feat | add matcher transformations to jasmine-to-vitest schematic | +| [629f5cb18](https://github.com/angular/angular-cli/commit/629f5cb181fee562645baf02b44ebb3b39f3fb06) | feat | add misc transformations to jasmine-to-vitest schematic | +| [4912f3990](https://github.com/angular/angular-cli/commit/4912f39906b11a3212f11d5a00d577e2a0bacab4) | feat | add Tailwind CSS option to application schematic and `ng new` | +| [2a518016d](https://github.com/angular/angular-cli/commit/2a518016d9585dd4d16f90102d5409459ebba024) | feat | Applications are zoneless by default | +| [2ffc527b1](https://github.com/angular/angular-cli/commit/2ffc527b1bbe237e9f732d3506ce3a75ca1ca9d0) | feat | configure Vitest for new projects and allow runner choice | +| [58474ec7d](https://github.com/angular/angular-cli/commit/58474ec7dd85fc34639c138d9b8d545affb50e3e) | feat | introduce initial jasmine-to-vitest unit test refactor schematic | +| [9f255f2b3](https://github.com/angular/angular-cli/commit/9f255f2b3cc435f3bea2f0266a137176ca599aef) | feat | set `packageManager` in `package.json` on new projects | +| [4e6c94f21](https://github.com/angular/angular-cli/commit/4e6c94f21e882c593cf11197900c29d693af9297) | feat | support different file name style guides in `ng new` | +| [77741f5ee](https://github.com/angular/angular-cli/commit/77741f5eec735f23b0f2865101471e045e4889b8) | fix | add 'update-typescript-lib' migration | +| [f89750b27](https://github.com/angular/angular-cli/commit/f89750b27866c307da546fe4f33da980693ca5c1) | fix | add `addImports` option to jasmine-vitest schematic | +| [9dab5780a](https://github.com/angular/angular-cli/commit/9dab5780a1befbd76ee9ba4c4e6ac2d3fd714bb9) | fix | add fixture.whenStable in spec files when zoneless apps | +| [8f0f6a5f1](https://github.com/angular/angular-cli/commit/8f0f6a5f113ffc9e81d99eeeba71f8054e2d3686) | fix | add migration to update `moduleResolution` to `bundler` | +| [e8feba9ee](https://github.com/angular/angular-cli/commit/e8feba9ee163f688c51d6463336474591e886647) | fix | add missing typeSeparator to main.ts.template file | +| [515b09c4f](https://github.com/angular/angular-cli/commit/515b09c4f28ef1c2eb911cb73135a6086dcab3c9) | fix | add Vitest config generation and runner checks | +| [0e83fe1a8](https://github.com/angular/angular-cli/commit/0e83fe1a87cc3dcbc9daa4440a050ae6aafc8042) | fix | add warnings and improve Karma config generation | +| [b91fa31f2](https://github.com/angular/angular-cli/commit/b91fa31f20b49ead021c72c271f67da38b340584) | fix | align Karma project generation with unified unit-test builder | +| [c967a447c](https://github.com/angular/angular-cli/commit/c967a447ce755fbf582ec35aa24bb6e0fa0043cf) | fix | correct spacing in application spec tsconfig | +| [00d941c43](https://github.com/angular/angular-cli/commit/00d941c433de718cf3c38033d5d68dd86f790291) | fix | correct style guide paths for standalone components | +| [e33e77d12](https://github.com/angular/angular-cli/commit/e33e77d12984446fe7bc77deb7438806817ba8a7) | fix | flag '--file-name-style-guide=2016' - wrong import in main.ts | +| [f35b9f331](https://github.com/angular/angular-cli/commit/f35b9f3310995b05d501f2abaec58dcd283e3aa0) | fix | improve comment preservation in jasmine-to-vitest | +| [6615fcf03](https://github.com/angular/angular-cli/commit/6615fcf037686cd96e97b469937b7f0736afaa77) | fix | issues in apps generated with '--file-name-style-guide=2016' flag | +| [e304821d5](https://github.com/angular/angular-cli/commit/e304821d5d789fab2725d3152612d3e5b6bd0dc7) | fix | make ai-config schematic non-destructive | +| [512ad282a](https://github.com/angular/angular-cli/commit/512ad282aecbfdf1e5c9e9700cc722addb949b68) | fix | preserve blank lines in jasmine-to-vitest schematic | +| [b524ba426](https://github.com/angular/angular-cli/commit/b524ba42625cd690177a300ca4843ef4edce035f) | fix | remove empty i18n-extract target for new projects | +| [8e6e0a293](https://github.com/angular/angular-cli/commit/8e6e0a2931bfb178e77cf2c9ca7f92a56c673449) | fix | remove explicit flag for host bindings | +| [afb4d3e37](https://github.com/angular/angular-cli/commit/afb4d3e377b11315a03563cb8c143c35d37f113a) | fix | remove extra space before async in spec templates | +| [b983ea8e5](https://github.com/angular/angular-cli/commit/b983ea8e5107420a910dbbc05c6b74f0ff6fbddd) | fix | respect skip-install for tailwind schematic | +| [54c4eae2a](https://github.com/angular/angular-cli/commit/54c4eae2aa49c6b45c41f0718a5915a10d426cb4) | fix | transform Jasmine type annotations in jasmine-to-vitest schematic | +| [14c0a9bac](https://github.com/angular/angular-cli/commit/14c0a9bacbb66b1db714ea7906c7d33f49c710fc) | perf | optimize AST traversal utilities | -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | -| [a11dd31f0](https://github.com/angular/angular-cli/commit/a11dd31f0c80a189e7dcb3172c89a731cfc34702) | fix | configure Vitest cache to use Angular cache | -| [f05ffd104](https://github.com/angular/angular-cli/commit/f05ffd104255e86fe93f3736e1430f940cb83007) | fix | correct Vitest coverage include handling for virtual files | -| [49b65aba8](https://github.com/angular/angular-cli/commit/49b65aba8d7cd2839776e987366b981d7762760c) | fix | disable Vitest test isolation by default | -| [fa5c92346](https://github.com/angular/angular-cli/commit/fa5c92346d14a6ad03aa30ad6392fc649038605e) | fix | prioritize string type for runnerConfig schema | +### @angular/cli - +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | +| [58d101d5e](https://github.com/angular/angular-cli/commit/58d101d5e78cf4c158dbaf52103639d56b84f9ed) | feat | add `--json` output to `ng version` | +| [d014630fa](https://github.com/angular/angular-cli/commit/d014630fad765ae3928b698122038cbe00d37102) | feat | add advanced filtering to MCP example search | +| [6d3a3c579](https://github.com/angular/angular-cli/commit/6d3a3c5799bde1bab5c3878e0783ffa6854e36ad) | feat | add ai-tutor mcp tool | +| [1c06b16a9](https://github.com/angular/angular-cli/commit/1c06b16a962d3c2cc122dc40e01c64bc8a8d754d) | feat | add builder info to `list_projects` MCP tool | +| [301b50da4](https://github.com/angular/angular-cli/commit/301b50da4cf99b3cd87940606121d076b4f241c6) | feat | add fallback support for packages without direct `ng add` functionality | +| [3040b777e](https://github.com/angular/angular-cli/commit/3040b777e40bc90fd1ed961e3d134875b3f9b464) | feat | add style language detection to list_projects tool | +| [45024e836](https://github.com/angular/angular-cli/commit/45024e836b4006cc48b18bb99d025ae1a572db12) | feat | add unit test framework detection to list_projects tool | +| [104c90768](https://github.com/angular/angular-cli/commit/104c90768000b3e0052ee7e7de2c5e04c1bffdaf) | feat | enhance `ng version` output with more details | +| [286b6204c](https://github.com/angular/angular-cli/commit/286b6204c825c990761a0d5e5b91bb439dd13655) | feat | make documentation search tool version-aware | +| [406315d09](https://github.com/angular/angular-cli/commit/406315d0939c62d9f4f39ce64b168e72bbdd588c) | feat | make find_examples tool version-aware | +| [68e711307](https://github.com/angular/angular-cli/commit/68e711307eae88a621698c2a9cc2abc30d44efc8) | feat | make get_best_practices tool version-aware | +| [50453fdee](https://github.com/angular/angular-cli/commit/50453fdeec4a00d88deada49d2dd0867bdb784fb) | feat | overhaul `ng version` command output | +| [1ee9ce3c9](https://github.com/angular/angular-cli/commit/1ee9ce3c93caff419f8095a91cf58601e3df3f74) | feat | promote MCP `find_examples` tool to a stable tool | +| [0d53e82d5](https://github.com/angular/angular-cli/commit/0d53e82d5ed8986603c2005fc06041dd076b08c6) | feat | provide detailed peer dependency conflict errors in ng add | +| [f513089e2](https://github.com/angular/angular-cli/commit/f513089e276acf5a7c4f6879a95e2d6ed78ae67d) | feat | remove direct support for `cnpm` | +| [c17d7a929](https://github.com/angular/angular-cli/commit/c17d7a929adccb77f3c2c33e70005f50032d8cae) | fix | add schema versioning and metadata to example database | +| [dbf1aaf70](https://github.com/angular/angular-cli/commit/dbf1aaf70bc3e3dd0de05d760bafacc43b34dce8) | fix | add snippet support to example search MCP tool | +| [dfb4242b3](https://github.com/angular/angular-cli/commit/dfb4242b347365f3a2c6d006f07a16c982ff4dbe) | fix | add vitest to version command output | +| [11cee1acb](https://github.com/angular/angular-cli/commit/11cee1acb59afbad1ef88d8340b5438f7dbefe57) | fix | correct boolean parsing in MCP example front matter | +| [122a8c0e2](https://github.com/angular/angular-cli/commit/122a8c0e27342db79eb4d38e23032548054709b9) | fix | correct frontmatter parsing in MCP examples tool | +| [431106559](https://github.com/angular/angular-cli/commit/431106559d6e75f5113876a3f92fdf4dc4b2114d) | fix | correct query in find_examples to prevent runtime error | +| [def412a55](https://github.com/angular/angular-cli/commit/def412a558d71cb51fa16d826418bd0ed0a085cf) | fix | enhance find_examples MCP tool with structured output | +| [0922a033f](https://github.com/angular/angular-cli/commit/0922a033f546b38f83d1cae524cf7237dd37a2ac) | fix | improve JSON schema parsing for command options | +| [f099c9157](https://github.com/angular/angular-cli/commit/f099c91570b3cd748d7138bd18a4898a345549db) | fix | improve list_projects MCP tool to find all workspaces in monorepos | +| [1be35b343](https://github.com/angular/angular-cli/commit/1be35b3433179481be85ea1cb892d66170e0aebe) | fix | promote zoneless migration MCP tool to stable | +| [e5aed6d65](https://github.com/angular/angular-cli/commit/e5aed6d655ed92ea6eb3ac03716b8a02a5f731d6) | fix | show planned actions in `ng add` dry run | +| [4deac3ec7](https://github.com/angular/angular-cli/commit/4deac3ec785b1a53156aac90441d0ed129df71ef) | fix | support multi-database search in find_examples MCP tool | +| [aeb49dd52](https://github.com/angular/angular-cli/commit/aeb49dd52bf88785a193fcb6caa0b36aaeef1d37) | perf | cache dependency lookups during `ng add` | +| [5e534090e](https://github.com/angular/angular-cli/commit/5e534090e25e00a9fafbce2867030e7fdb0efbf6) | perf | parallelize peer dependency checks in `ng add` | - +### @angular-devkit/build-angular -# 21.0.0-rc.4 (2025-11-14) +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | +| [6e395fc0c](https://github.com/angular/angular-cli/commit/6e395fc0c4505dd32b3237ea116e8db6bde25758) | fix | ensure vitest code coverage handles virtual files correctly | +| [53899511a](https://github.com/angular/angular-cli/commit/53899511afe5665541984085914a313390af6ce2) | fix | expand `jest` and `jest-environment-jsdom` to allow version 30 | +| [7a8c94615](https://github.com/angular/angular-cli/commit/7a8c94615164e114533fae0f84796a374dc1b47b) | fix | make zone.js optional in server and app-shell builders | ### @angular/build -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | -| [f7c4a4c1d](https://github.com/angular/angular-cli/commit/f7c4a4c1dcd575dec82cc06597e3d6620b1be729) | fix | enhance Vitest resolution for optimal package loading | -| [0830f4fb5](https://github.com/angular/angular-cli/commit/0830f4fb549e2c45b1ef752dd42f002a1347d7c8) | fix | ensure TestBed cleanup hooks are always registered | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | +| [00426e315](https://github.com/angular/angular-cli/commit/00426e3150c846913a5aa31510b5a1126df9e570) | feat | add --list-tests flag to unit-test builder | +| [a908bf3d4](https://github.com/angular/angular-cli/commit/a908bf3d4e8a59f3546f117bcc1f12fd69ad2d0b) | feat | add 'filter' option to unit-test builder | +| [3e0209d0a](https://github.com/angular/angular-cli/commit/3e0209d0a6bc6d7985d6294fc1430cdbe4d2d9a6) | feat | add `browserViewport` option for vitest browser tests | +| [3b7dabbf1](https://github.com/angular/angular-cli/commit/3b7dabbf1df9b2b6ca9ffc6c038abb6e40b6df2b) | feat | add advanced coverage options to unit-test builder | +| [c0b00d78e](https://github.com/angular/angular-cli/commit/c0b00d78ec37426f4474f473ddf9e627a0dd23df) | feat | add reporter output file option for unit-test | +| [66dd6dd83](https://github.com/angular/angular-cli/commit/66dd6dd835d6b489e6b4be2138aa443e11bfa076) | feat | allow options for unit test reporters | +| [a90bea5b5](https://github.com/angular/angular-cli/commit/a90bea5b51c6978441919ed2af85c090fe99fd38) | feat | support `.test.ts` files by default in unit test builder | +| [b2f048773](https://github.com/angular/angular-cli/commit/b2f048773c6014022983e7ccc52cb760619d8a1b) | fix | add --ui option for Vitest runner | +| [530d9270e](https://github.com/angular/angular-cli/commit/530d9270e87786594dd8d1956b0806a28650db25) | fix | add `define` option to dev-server | +| [b554bd73a](https://github.com/angular/angular-cli/commit/b554bd73a9c248d986ed718028edf52ab5da6ccf) | fix | add temporary directory cleanup for Vitest executor | +| [c6176f6df](https://github.com/angular/angular-cli/commit/c6176f6dffdae5c8d8708a1dd20fb51ca72e3c24) | fix | add upfront dependency validation for unit-test runners | +| [63c98741a](https://github.com/angular/angular-cli/commit/63c98741adcd21701b8bc572e9410cc1cf4f91c3) | fix | add webcontainer support for Vitest browser provider | +| [fcdbf6c19](https://github.com/angular/angular-cli/commit/fcdbf6c19b5a8549011aebec9e517feb12a99895) | fix | allow `globals` to be set to false | +| [542d52868](https://github.com/angular/angular-cli/commit/542d528683cc0e51fd5a55ed6dbf43168f7a51a5) | fix | allow custom runner configuration file for unit-test | +| [0505f954d](https://github.com/angular/angular-cli/commit/0505f954dcf3b3339749ff461592d46d8ecc5e23) | fix | allow unit-test progress option passthrough for building | +| [931c62d20](https://github.com/angular/angular-cli/commit/931c62d20915c6c772b61d76ab88657c0858f6bd) | fix | allow unit-test runner config with absolute path | +| [a11dd31f0](https://github.com/angular/angular-cli/commit/a11dd31f0c80a189e7dcb3172c89a731cfc34702) | fix | configure Vitest cache to use Angular cache | +| [abf003268](https://github.com/angular/angular-cli/commit/abf003268c6cb18f0944665b0b3f2794c9469c3e) | fix | correct Vitest builder watch mode execution | +| [f05ffd104](https://github.com/angular/angular-cli/commit/f05ffd104255e86fe93f3736e1430f940cb83007) | fix | correct Vitest coverage include handling for virtual files | +| [cd5c92b99](https://github.com/angular/angular-cli/commit/cd5c92b99a5d8e9cb991a2551f564353c3df0fbe) | fix | correct Vitest coverage reporting for test files | +| [07f712253](https://github.com/angular/angular-cli/commit/07f712253bb6c37d27ae7be9845f497002b0780c) | fix | correctly handle absolute paths and casing in test discovery | +| [bf468e1eb](https://github.com/angular/angular-cli/commit/bf468e1eb1050c60359b6f52692ce0db286982c2) | fix | direct check include file exists in unit-test discovery | +| [50e330d33](https://github.com/angular/angular-cli/commit/50e330d331fc8cfc4c12f7258012305ecb419d2d) | fix | disable glob directory expansion when finding tests | +| [49b65aba8](https://github.com/angular/angular-cli/commit/49b65aba8d7cd2839776e987366b981d7762760c) | fix | disable Vitest test isolation by default | +| [1529595d4](https://github.com/angular/angular-cli/commit/1529595d4a8d8ff9251d1680b1a23bf4ef817db0) | fix | drop support for TypeScript 5.8 | +| [a44f8fa94](https://github.com/angular/angular-cli/commit/a44f8fa94bbf6ce8cdee05552dc56124507c6971) | fix | dynamically select Vitest DOM environment | +| [ae35543af](https://github.com/angular/angular-cli/commit/ae35543af7f5b3a5328c39fd4617d61b48067357) | fix | enhance Vitest config merging and validation | +| [fec106b60](https://github.com/angular/angular-cli/commit/fec106b60553394aab51d713e5437a713085089b) | fix | enhance Vitest dependency externalization and pre-bundling | +| [f7c4a4c1d](https://github.com/angular/angular-cli/commit/f7c4a4c1dcd575dec82cc06597e3d6620b1be729) | fix | enhance Vitest resolution for optimal package loading | +| [ee5e127d5](https://github.com/angular/angular-cli/commit/ee5e127d551269fa9a3e39b9b28e38d7ab35806f) | fix | ensure `ɵgetOrCreateAngularServerApp` is always defined after errors | +| [0830f4fb5](https://github.com/angular/angular-cli/commit/0830f4fb549e2c45b1ef752dd42f002a1347d7c8) | fix | ensure TestBed cleanup hooks are always registered | +| [41b12509a](https://github.com/angular/angular-cli/commit/41b12509a9db8bca637e0c67d21301a75774129c) | fix | ensure TestBed setup is robust in non-isolated Vitest | +| [55145f582](https://github.com/angular/angular-cli/commit/55145f582253b4ecb47add7ff2ef459b7535dfdb) | fix | ensure Vitest setup files are executed in order | +| [3478aa332](https://github.com/angular/angular-cli/commit/3478aa332ef0241c04e7eeef9dd74b017292b2c4) | fix | exclude .angular from coverage instrumentation | +| [7c529c1bc](https://github.com/angular/angular-cli/commit/7c529c1bc606101ab8c506e0b7845d2e9f509db4) | fix | externalize Angular dependencies in Vitest runner | +| [69c3b1226](https://github.com/angular/angular-cli/commit/69c3b1226880835fd8087cea5684ababb92b1c05) | fix | improve error handling in unit-test builder | +| [bab5806c2](https://github.com/angular/angular-cli/commit/bab5806c281fd4cdd63b7969e691d703ed1e7680) | fix | introduce vitest-base.config for test configuration | +| [73621998f](https://github.com/angular/angular-cli/commit/73621998f91db189ad9b1ab006681404e30f7900) | fix | normalize paths for Vitest runner output files | +| [fa5c92346](https://github.com/angular/angular-cli/commit/fa5c92346d14a6ad03aa30ad6392fc649038605e) | fix | prioritize string type for runnerConfig schema | +| [d0787c11d](https://github.com/angular/angular-cli/commit/d0787c11d68841c36ef28bc3f15963406d1209a9) | fix | provide default excludes for vitest coverage | +| [ac10f323e](https://github.com/angular/angular-cli/commit/ac10f323ece9f4a35068e510f10786fbcb15adbb) | fix | relax requirement for files to be in TS compilation | +| [139758586](https://github.com/angular/angular-cli/commit/13975858683421a5712bbfccee57cf141a0b96f6) | fix | remove deprecated `javascriptEnabled` option for Less | +| [6576bb598](https://github.com/angular/angular-cli/commit/6576bb5985c18dca7cecd9509939c2a78bf9758a) | fix | remove explicit test isolation configuration | +| [9132e6af9](https://github.com/angular/angular-cli/commit/9132e6af9fd573d8b39c69a50b4b93e256145fd4) | fix | resolve browser provider packages using project resolver | +| [26127bd3b](https://github.com/angular/angular-cli/commit/26127bd3bb2c4b9aacf2a8f4c2cbdf732512bafb) | fix | resolve PostCSS plugins relative to config file | +| [dae732059](https://github.com/angular/angular-cli/commit/dae732059d17e9e374ac7635fbca9480751f70b3) | fix | serve build assets and styles in vitest | +| [705af2278](https://github.com/angular/angular-cli/commit/705af22788102eeade08404d357582c39de8900b) | fix | set coverage report directory to coverage/project-name | +| [0851d2eae](https://github.com/angular/angular-cli/commit/0851d2eae1e5b854a0a8a7df3a47b00693508a0f) | fix | show full aggregate errors from vitest | +| [cc2668f57](https://github.com/angular/angular-cli/commit/cc2668f5744588f9c3d847d2450dd1361e73c690) | fix | simplify SSL handling for `ng serve` with SSR ([#31723](https://github.com/angular/angular-cli/pull/31723)) | +| [907eabdd3](https://github.com/angular/angular-cli/commit/907eabdd3c7447ed2c211b6d6c2719b04443c545) | fix | support ESM PostCSS plugins | +| [62938e799](https://github.com/angular/angular-cli/commit/62938e79977d14045b7883d459d786dbb8d4d7ee) | fix | update vitest to 4.0.6 and remove coverage workaround | - - -# 21.0.0-rc.3 (2025-11-13) - -### @angular/cli + -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [4deac3ec7](https://github.com/angular/angular-cli/commit/4deac3ec785b1a53156aac90441d0ed129df71ef) | fix | support multi-database search in find_examples MCP tool | +# 20.3.11 (2025-11-19) ### @angular/build | Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | -| [fcdbf6c19](https://github.com/angular/angular-cli/commit/fcdbf6c19b5a8549011aebec9e517feb12a99895) | fix | allow `globals` to be set to false | -| [931c62d20](https://github.com/angular/angular-cli/commit/931c62d20915c6c772b61d76ab88657c0858f6bd) | fix | allow unit-test runner config with absolute path | -| [fec106b60](https://github.com/angular/angular-cli/commit/fec106b60553394aab51d713e5437a713085089b) | fix | enhance Vitest dependency externalization and pre-bundling | -| [ee5e127d5](https://github.com/angular/angular-cli/commit/ee5e127d551269fa9a3e39b9b28e38d7ab35806f) | fix | ensure `ɵgetOrCreateAngularServerApp` is always defined after errors | -| [55145f582](https://github.com/angular/angular-cli/commit/55145f582253b4ecb47add7ff2ef459b7535dfdb) | fix | ensure Vitest setup files are executed in order | -| [6576bb598](https://github.com/angular/angular-cli/commit/6576bb5985c18dca7cecd9509939c2a78bf9758a) | fix | remove explicit test isolation configuration | - - - - - -# 21.0.0-rc.2 (2025-11-12) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [c17d7a929](https://github.com/angular/angular-cli/commit/c17d7a929adccb77f3c2c33e70005f50032d8cae) | fix | add schema versioning and metadata to example database | -| [1be35b343](https://github.com/angular/angular-cli/commit/1be35b3433179481be85ea1cb892d66170e0aebe) | fix | promote zoneless migration MCP tool to stable | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | -| [02f579f6e](https://github.com/angular/angular-cli/commit/02f579f6e7e490744deea5a193b0751ce31262db) | fix | correct `tsconfig.spec.json` include for spec files | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------- | -| [63c98741a](https://github.com/angular/angular-cli/commit/63c98741adcd21701b8bc572e9410cc1cf4f91c3) | fix | add webcontainer support for Vitest browser provider | -| [07f712253](https://github.com/angular/angular-cli/commit/07f712253bb6c37d27ae7be9845f497002b0780c) | fix | correctly handle absolute paths and casing in test discovery | -| [f82b77e47](https://github.com/angular/angular-cli/commit/f82b77e475e270dd0d23ce5d6b445c0a8aa8599a) | fix | do not remove `@angular/localize` when having external packages ([#31721](https://github.com/angular/angular-cli/pull/31721)) | -| [a44f8fa94](https://github.com/angular/angular-cli/commit/a44f8fa94bbf6ce8cdee05552dc56124507c6971) | fix | dynamically select Vitest DOM environment | -| [ae35543af](https://github.com/angular/angular-cli/commit/ae35543af7f5b3a5328c39fd4617d61b48067357) | fix | enhance Vitest config merging and validation | -| [41b12509a](https://github.com/angular/angular-cli/commit/41b12509a9db8bca637e0c67d21301a75774129c) | fix | ensure TestBed setup is robust in non-isolated Vitest | -| [0851d2eae](https://github.com/angular/angular-cli/commit/0851d2eae1e5b854a0a8a7df3a47b00693508a0f) | fix | show full aggregate errors from vitest | -| [cc2668f57](https://github.com/angular/angular-cli/commit/cc2668f5744588f9c3d847d2450dd1361e73c690) | fix | simplify SSL handling for `ng serve` with SSR ([#31723](https://github.com/angular/angular-cli/pull/31723)) | +| [8053f2d92](https://github.com/angular/angular-cli/commit/8053f2d92a68a8bd01854eb81aa472249f5a83b2) | fix | ensure `ɵgetOrCreateAngularServerApp` is always defined after errors | @@ -130,40 +181,6 @@ - - -# 21.0.0-rc.1 (2025-11-05) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------ | -| [dfb4242b3](https://github.com/angular/angular-cli/commit/dfb4242b347365f3a2c6d006f07a16c982ff4dbe) | fix | add vitest to version command output | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | -| [f89750b27](https://github.com/angular/angular-cli/commit/f89750b27866c307da546fe4f33da980693ca5c1) | fix | add `addImports` option to jasmine-vitest schematic | -| [515b09c4f](https://github.com/angular/angular-cli/commit/515b09c4f28ef1c2eb911cb73135a6086dcab3c9) | fix | add Vitest config generation and runner checks | -| [0e83fe1a8](https://github.com/angular/angular-cli/commit/0e83fe1a87cc3dcbc9daa4440a050ae6aafc8042) | fix | add warnings and improve Karma config generation | -| [b91fa31f2](https://github.com/angular/angular-cli/commit/b91fa31f20b49ead021c72c271f67da38b340584) | fix | align Karma project generation with unified unit-test builder | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------- | -| [62938e799](https://github.com/angular/angular-cli/commit/62938e79977d14045b7883d459d786dbb8d4d7ee) | fix | update vitest to 4.0.6 and remove coverage workaround | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | -| [5d76d84e6](https://github.com/angular/angular-cli/commit/5d76d84e64db717e177b77f7a07ee8819b258877) | fix | improve locale handling in app-engine | -| [4a3cfdfce](https://github.com/angular/angular-cli/commit/4a3cfdfce75b7cedf64e26d85b0a92ec92ddd12d) | fix | improve route matching for wildcard routes | - - - # 20.3.9 (2025-11-05) @@ -177,45 +194,6 @@ - - -# 21.0.0-rc.0 (2025-10-30) - - - - - -# 21.0.0-next.10 (2025-10-29) - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | -| [c967a447c](https://github.com/angular/angular-cli/commit/c967a447ce755fbf582ec35aa24bb6e0fa0043cf) | fix | correct spacing in application spec tsconfig | -| [00d941c43](https://github.com/angular/angular-cli/commit/00d941c433de718cf3c38033d5d68dd86f790291) | fix | correct style guide paths for standalone components | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | -| [6e395fc0c](https://github.com/angular/angular-cli/commit/6e395fc0c4505dd32b3237ea116e8db6bde25758) | fix | ensure vitest code coverage handles virtual files correctly | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | -| [b2f048773](https://github.com/angular/angular-cli/commit/b2f048773c6014022983e7ccc52cb760619d8a1b) | fix | add --ui option for Vitest runner | -| [530d9270e](https://github.com/angular/angular-cli/commit/530d9270e87786594dd8d1956b0806a28650db25) | fix | add `define` option to dev-server | -| [091d1c03e](https://github.com/angular/angular-cli/commit/091d1c03e9665371f52c4cb8ec6cd9f1f862a407) | fix | add adapters to new reporter | -| [542d52868](https://github.com/angular/angular-cli/commit/542d528683cc0e51fd5a55ed6dbf43168f7a51a5) | fix | allow custom runner configuration file for unit-test | -| [9975c7249](https://github.com/angular/angular-cli/commit/9975c72494bc2a71359dc4c5a31e43eed040716e) | fix | ensure locale data plugin runs before other plugins | -| [7c529c1bc](https://github.com/angular/angular-cli/commit/7c529c1bc606101ab8c506e0b7845d2e9f509db4) | fix | externalize Angular dependencies in Vitest runner | -| [a41f4e860](https://github.com/angular/angular-cli/commit/a41f4e860dd28bee28af47c1513f55450ca74b5f) | fix | handle redirects from guards during prerendering | -| [bab5806c2](https://github.com/angular/angular-cli/commit/bab5806c281fd4cdd63b7969e691d703ed1e7680) | fix | introduce vitest-base.config for test configuration | -| [9132e6af9](https://github.com/angular/angular-cli/commit/9132e6af9fd573d8b39c69a50b4b93e256145fd4) | fix | resolve browser provider packages using project resolver | - - - # 20.3.8 (2025-10-29) @@ -248,53 +226,6 @@ - - -# 21.0.0-next.9 (2025-10-23) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [3040b777e](https://github.com/angular/angular-cli/commit/3040b777e40bc90fd1ed961e3d134875b3f9b464) | feat | add style language detection to list_projects tool | -| [45024e836](https://github.com/angular/angular-cli/commit/45024e836b4006cc48b18bb99d025ae1a572db12) | feat | add unit test framework detection to list_projects tool | -| [286b6204c](https://github.com/angular/angular-cli/commit/286b6204c825c990761a0d5e5b91bb439dd13655) | feat | make documentation search tool version-aware | -| [406315d09](https://github.com/angular/angular-cli/commit/406315d0939c62d9f4f39ce64b168e72bbdd588c) | feat | make find_examples tool version-aware | -| [68e711307](https://github.com/angular/angular-cli/commit/68e711307eae88a621698c2a9cc2abc30d44efc8) | feat | make get_best_practices tool version-aware | -| [122a8c0e2](https://github.com/angular/angular-cli/commit/122a8c0e27342db79eb4d38e23032548054709b9) | fix | correct frontmatter parsing in MCP examples tool | -| [431106559](https://github.com/angular/angular-cli/commit/431106559d6e75f5113876a3f92fdf4dc4b2114d) | fix | correct query in find_examples to prevent runtime error | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- | -| [2ffc527b1](https://github.com/angular/angular-cli/commit/2ffc527b1bbe237e9f732d3506ce3a75ca1ca9d0) | feat | configure Vitest for new projects and allow runner choice | -| [512ad282a](https://github.com/angular/angular-cli/commit/512ad282aecbfdf1e5c9e9700cc722addb949b68) | fix | preserve blank lines in jasmine-to-vitest schematic | -| [b524ba426](https://github.com/angular/angular-cli/commit/b524ba42625cd690177a300ca4843ef4edce035f) | fix | remove empty i18n-extract target for new projects | -| [54c4eae2a](https://github.com/angular/angular-cli/commit/54c4eae2aa49c6b45c41f0718a5915a10d426cb4) | fix | transform Jasmine type annotations in jasmine-to-vitest schematic | - -### @angular-devkit/schematics - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | -| [18bf8e7b3](https://github.com/angular/angular-cli/commit/18bf8e7b3b36b968d064299e5c557942c0ed7ec0) | fix | respect `--force` option when schematic contains `host.create` | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [bf468e1eb](https://github.com/angular/angular-cli/commit/bf468e1eb1050c60359b6f52692ce0db286982c2) | fix | direct check include file exists in unit-test discovery | -| [b1d6d2f17](https://github.com/angular/angular-cli/commit/b1d6d2f174027a1f7800bd70ebd35143f92dc38c) | fix | resolve Angular locale data namespace in esbuild | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | -| [85c18b4ea](https://github.com/angular/angular-cli/commit/85c18b4ead77c6c090b9f5c63e9e034e58369152) | fix | correctly handle routes with matrix parameters | -| [58dcfd109](https://github.com/angular/angular-cli/commit/58dcfd1094fec52102f339e8fd3b5dd2925229b9) | fix | ensure server-side navigation triggers a redirect | - - - # 20.3.7 (2025-10-22) @@ -321,42 +252,6 @@ - - -# 21.0.0-next.8 (2025-10-15) - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------ | -| [ede5e52bc](https://github.com/angular/angular-cli/commit/ede5e52bc701c42948bd98826cd4fa901350015c) | feat | add `include` option to jasmine-to-vitest schematic | -| [d0d2a17b8](https://github.com/angular/angular-cli/commit/d0d2a17b8adb2c1ce6eee70494f5d2298622c40e) | feat | add Jasmine spy API transformations to jasmine-to-vitest schematic | -| [e7d955bed](https://github.com/angular/angular-cli/commit/e7d955bedd5ca6957903cb73f8ebe06823a808da) | feat | add matcher transformations to jasmine-to-vitest schematic | -| [629f5cb18](https://github.com/angular/angular-cli/commit/629f5cb181fee562645baf02b44ebb3b39f3fb06) | feat | add misc transformations to jasmine-to-vitest schematic | -| [58474ec7d](https://github.com/angular/angular-cli/commit/58474ec7dd85fc34639c138d9b8d545affb50e3e) | feat | introduce initial jasmine-to-vitest unit test refactor schematic | -| [8f0f6a5f1](https://github.com/angular/angular-cli/commit/8f0f6a5f113ffc9e81d99eeeba71f8054e2d3686) | fix | add migration to update `moduleResolution` to `bundler` | -| [f35b9f331](https://github.com/angular/angular-cli/commit/f35b9f3310995b05d501f2abaec58dcd283e3aa0) | fix | improve comment preservation in jasmine-to-vitest | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | -| [53899511a](https://github.com/angular/angular-cli/commit/53899511afe5665541984085914a313390af6ce2) | fix | expand `jest` and `jest-environment-jsdom` to allow version 30 | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | -| [a90bea5b5](https://github.com/angular/angular-cli/commit/a90bea5b51c6978441919ed2af85c090fe99fd38) | feat | support `.test.ts` files by default in unit test builder | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------ | -| [7be6c8f0e](https://github.com/angular/angular-cli/commit/7be6c8f0e2883c85546eb1691c91fa7d4aefc0d3) | fix | prevent malicious URL from overriding host | - - - # 20.3.6 (2025-10-15) @@ -381,33 +276,6 @@ - - -# 21.0.0-next.7 (2025-10-08) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | -| [1c06b16a9](https://github.com/angular/angular-cli/commit/1c06b16a962d3c2cc122dc40e01c64bc8a8d754d) | feat | add builder info to `list_projects` MCP tool | -| [104c90768](https://github.com/angular/angular-cli/commit/104c90768000b3e0052ee7e7de2c5e04c1bffdaf) | feat | enhance `ng version` output with more details | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | -| [afb4d3e37](https://github.com/angular/angular-cli/commit/afb4d3e377b11315a03563cb8c143c35d37f113a) | fix | remove extra space before async in spec templates | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | -| [1c2d49ec7](https://github.com/angular/angular-cli/commit/1c2d49ec736818d22773916d7eaafd3446275ea0) | fix | cleanup karma temporary directory after process exit | -| [50e330d33](https://github.com/angular/angular-cli/commit/50e330d331fc8cfc4c12f7258012305ecb419d2d) | fix | disable glob directory expansion when finding tests | -| [73621998f](https://github.com/angular/angular-cli/commit/73621998f91db189ad9b1ab006681404e30f7900) | fix | normalize paths for Vitest runner output files | - - - # 20.3.5 (2025-10-08) @@ -420,46 +288,6 @@ - - -# 21.0.0-next.6 (2025-10-03) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- | -| [58d101d5e](https://github.com/angular/angular-cli/commit/58d101d5e78cf4c158dbaf52103639d56b84f9ed) | feat | add `--json` output to `ng version` | -| [50453fdee](https://github.com/angular/angular-cli/commit/50453fdeec4a00d88deada49d2dd0867bdb784fb) | feat | overhaul `ng version` command output | -| [0922a033f](https://github.com/angular/angular-cli/commit/0922a033f546b38f83d1cae524cf7237dd37a2ac) | fix | improve JSON schema parsing for command options | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [c119910f4](https://github.com/angular/angular-cli/commit/c119910f4505e280eea83ea6647b6d279a46f36d) | feat | add AGENTS.md support to ai-config schematic | -| [9dab5780a](https://github.com/angular/angular-cli/commit/9dab5780a1befbd76ee9ba4c4e6ac2d3fd714bb9) | fix | add fixture.whenStable in spec files when zoneless apps | -| [e304821d5](https://github.com/angular/angular-cli/commit/e304821d5d789fab2725d3152612d3e5b6bd0dc7) | fix | make ai-config schematic non-destructive | -| [8ac515699](https://github.com/angular/angular-cli/commit/8ac515699cfd5a4e7eda9bcc054dfd7c68faba39) | fix | Out of the box support for PM2 | -| [57075a31a](https://github.com/angular/angular-cli/commit/57075a31ad8f95a82304fe8533b3bca828d8da42) | fix | use bracket notation for `process.env['pm_id']` | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [acd785afc](https://github.com/angular/angular-cli/commit/acd785afc956efad56b03402085ff94855b9fcc6) | fix | mark `InjectionToken` as pure for improved tree-shaking | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [3e0209d0a](https://github.com/angular/angular-cli/commit/3e0209d0a6bc6d7985d6294fc1430cdbe4d2d9a6) | feat | add `browserViewport` option for vitest browser tests | -| [3b7dabbf1](https://github.com/angular/angular-cli/commit/3b7dabbf1df9b2b6ca9ffc6c038abb6e40b6df2b) | feat | add advanced coverage options to unit-test builder | -| [65562114c](https://github.com/angular/angular-cli/commit/65562114cdf725fa52f6d805f26a1aa265b9badb) | fix | mark `InjectionToken` as pure for improved tree-shaking | -| [d0787c11d](https://github.com/angular/angular-cli/commit/d0787c11d68841c36ef28bc3f15963406d1209a9) | fix | provide default excludes for vitest coverage | -| [ac10f323e](https://github.com/angular/angular-cli/commit/ac10f323ece9f4a35068e510f10786fbcb15adbb) | fix | relax requirement for files to be in TS compilation | - - - # 20.3.4 (2025-10-02) @@ -485,55 +313,6 @@ - - -# 21.0.0-next.5 (2025-09-24) - -## Breaking Changes - -### @angular/build - -- The `javascriptEnabled` option for Less is no longer supported. Projects relying on inline JavaScript within Less files will need to refactor their stylesheets to remove this dependency. - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [2a518016d](https://github.com/angular/angular-cli/commit/2a518016d9585dd4d16f90102d5409459ebba024) | feat | Applications are zoneless by default | -| [9f255f2b3](https://github.com/angular/angular-cli/commit/9f255f2b3cc435f3bea2f0266a137176ca599aef) | feat | set `packageManager` in `package.json` on new projects | -| [77741f5ee](https://github.com/angular/angular-cli/commit/77741f5eec735f23b0f2865101471e045e4889b8) | fix | add 'update-typescript-lib' migration | -| [3af4dcbbf](https://github.com/angular/angular-cli/commit/3af4dcbbf4019e13a9547a404516502cf4eda736) | fix | add `__screenshots__/` to `.gitignore` | - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------- | -| [6d3a3c579](https://github.com/angular/angular-cli/commit/6d3a3c5799bde1bab5c3878e0783ffa6854e36ad) | feat | add ai-tutor mcp tool | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [7a8c94615](https://github.com/angular/angular-cli/commit/7a8c94615164e114533fae0f84796a374dc1b47b) | fix | make zone.js optional in server and app-shell builders | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [00426e315](https://github.com/angular/angular-cli/commit/00426e3150c846913a5aa31510b5a1126df9e570) | feat | add --list-tests flag to unit-test builder | -| [3478aa332](https://github.com/angular/angular-cli/commit/3478aa332ef0241c04e7eeef9dd74b017292b2c4) | fix | exclude .angular from coverage instrumentation | -| [139758586](https://github.com/angular/angular-cli/commit/13975858683421a5712bbfccee57cf141a0b96f6) | fix | remove deprecated `javascriptEnabled` option for Less | -| [705af2278](https://github.com/angular/angular-cli/commit/705af22788102eeade08404d357582c39de8900b) | fix | set coverage report directory to coverage/project-name | -| [907eabdd3](https://github.com/angular/angular-cli/commit/907eabdd3c7447ed2c211b6d6c2719b04443c545) | fix | support ESM PostCSS plugins | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------- | -| [afa273849](https://github.com/angular/angular-cli/commit/afa273849d0e0e62a7df2236d818bf7800c3ad13) | fix | avoid retaining rendered HTML in memory post-request | - - - # 20.3.3 (2025-09-24) @@ -552,24 +331,6 @@ - - -# 21.0.0-next.4 (2025-09-17) - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [a908bf3d4](https://github.com/angular/angular-cli/commit/a908bf3d4e8a59f3546f117bcc1f12fd69ad2d0b) | feat | add 'filter' option to unit-test builder | -| [c0b00d78e](https://github.com/angular/angular-cli/commit/c0b00d78ec37426f4474f473ddf9e627a0dd23df) | feat | add reporter output file option for unit-test | -| [66dd6dd83](https://github.com/angular/angular-cli/commit/66dd6dd835d6b489e6b4be2138aa443e11bfa076) | feat | allow options for unit test reporters | -| [43fc5536f](https://github.com/angular/angular-cli/commit/43fc5536fd42694a09a7b7c25fe8c5665e3e28d3) | fix | add timestamp to bundle generation log | -| [c6176f6df](https://github.com/angular/angular-cli/commit/c6176f6dffdae5c8d8708a1dd20fb51ca72e3c24) | fix | add upfront dependency validation for unit-test runners | -| [69c3b1226](https://github.com/angular/angular-cli/commit/69c3b1226880835fd8087cea5684ababb92b1c05) | fix | improve error handling in unit-test builder | -| [dae732059](https://github.com/angular/angular-cli/commit/dae732059d17e9e374ac7635fbca9480751f70b3) | fix | serve build assets and styles in vitest | - - - # 20.3.2 (2025-09-17) @@ -687,75 +448,6 @@ - - -# 21.0.0-next.3 (2025-09-10) - -## Breaking Changes - -### @angular/build - -- - TypeScript versions older than 5.9 are no longer supported. - -### @angular/ssr - -- The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector. - - Before: - - ```ts - const bootstrap = () => bootstrapApplication(AppComponent, config); - ``` - - After: - - ```ts - const bootstrap = (context: BootstrapContext) => - bootstrapApplication(AppComponent, config, context); - ``` - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------- | -| [ddebe3d4f](https://github.com/angular/angular-cli/commit/ddebe3d4fc35486a57f4051fdd4493caba4e6c07) | fix | align labels in ai-config schema | -| [8e6e0a293](https://github.com/angular/angular-cli/commit/8e6e0a2931bfb178e77cf2c9ca7f92a56c673449) | fix | remove explicit flag for host bindings | -| [b983ea8e5](https://github.com/angular/angular-cli/commit/b983ea8e5107420a910dbbc05c6b74f0ff6fbddd) | fix | respect skip-install for tailwind schematic | - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------- | -| [d014630fa](https://github.com/angular/angular-cli/commit/d014630fad765ae3928b698122038cbe00d37102) | feat | add advanced filtering to MCP example search | -| [1ee9ce3c9](https://github.com/angular/angular-cli/commit/1ee9ce3c93caff419f8095a91cf58601e3df3f74) | feat | promote MCP `find_examples` tool to a stable tool | -| [dbf1aaf70](https://github.com/angular/angular-cli/commit/dbf1aaf70bc3e3dd0de05d760bafacc43b34dce8) | fix | add snippet support to example search MCP tool | -| [11cee1acb](https://github.com/angular/angular-cli/commit/11cee1acb59afbad1ef88d8340b5438f7dbefe57) | fix | correct boolean parsing in MCP example front matter | -| [def412a55](https://github.com/angular/angular-cli/commit/def412a558d71cb51fa16d826418bd0ed0a085cf) | fix | enhance find_examples MCP tool with structured output | -| [2037b912b](https://github.com/angular/angular-cli/commit/2037b912b2f78eb4469d8671fbca8c43f06cd2ff) | fix | improve bun lockfile detection and optimize lockfile checks | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------ | -| [9749ec687](https://github.com/angular/angular-cli/commit/9749ec687800c1bbeae4b75550dee3608bbe6823) | fix | avoid extra tick in SSR builds | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | -| [cd5c92b99](https://github.com/angular/angular-cli/commit/cd5c92b99a5d8e9cb991a2551f564353c3df0fbe) | fix | correct Vitest coverage reporting for test files | -| [1529595d4](https://github.com/angular/angular-cli/commit/1529595d4a8d8ff9251d1680b1a23bf4ef817db0) | fix | drop support for TypeScript 5.8 | -| [58da860fc](https://github.com/angular/angular-cli/commit/58da860fc4e040d1dbce0b1955c361a2efdb3559) | fix | preserve names in esbuild for improved debugging in dev mode | -| [26127bd3b](https://github.com/angular/angular-cli/commit/26127bd3bb2c4b9aacf2a8f4c2cbdf732512bafb) | fix | resolve PostCSS plugins relative to config file | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | -| [f0b0980fb](https://github.com/angular/angular-cli/commit/f0b0980fbd55473f152ec3b87fa5e1923c876854) | feat | introduce BootstrapContext for isolated server-side rendering | - - - # 20.3.0 (2025-09-10) @@ -811,36 +503,6 @@ - - -# 21.0.0-next.2 (2025-09-03) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------- | -| [301b50da4](https://github.com/angular/angular-cli/commit/301b50da4cf99b3cd87940606121d076b4f241c6) | feat | add fallback support for packages without direct `ng add` functionality | -| [2c498d2b8](https://github.com/angular/angular-cli/commit/2c498d2b87c13a63bef2a9be2ca4f087c72c6b8a) | fix | don't set a default for array options when length is 0 | -| [f099c9157](https://github.com/angular/angular-cli/commit/f099c91570b3cd748d7138bd18a4898a345549db) | fix | improve list_projects MCP tool to find all workspaces in monorepos | -| [e192e8c7e](https://github.com/angular/angular-cli/commit/e192e8c7ecf506e4b03668f527de83f2a57f552d) | fix | set process title when running architect commands | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [e417c89f9](https://github.com/angular/angular-cli/commit/e417c89f9e9cfe0ce50ffbc72ef555793605aea1) | feat | Add `addTypeToClassName` option to relevant schematics | -| [4e6c94f21](https://github.com/angular/angular-cli/commit/4e6c94f21e882c593cf11197900c29d693af9297) | feat | support different file name style guides in `ng new` | -| [14c0a9bac](https://github.com/angular/angular-cli/commit/14c0a9bacbb66b1db714ea7906c7d33f49c710fc) | perf | optimize AST traversal utilities | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [7b0f69798](https://github.com/angular/angular-cli/commit/7b0f69798f061d5500620828cf304e05d667199f) | fix | avoid extra tick in SSR dev-server builds | -| [f806f6477](https://github.com/angular/angular-cli/commit/f806f6477af222907f1879181fb0f9839e889ea8) | fix | maintain media output hashing with vitest unit-testing | - - - # 20.2.2 (2025-09-03) @@ -861,52 +523,6 @@ - - -# 21.0.0-next.1 (2025-08-27) - -## Breaking Changes - -### @angular/cli - -- The `ng` commands will no longer automatically detect and use `cnpm` as the package manager. As an alternative use the `.npmrc` file to ensure npm uses the cnpm registry. - -### @angular-devkit/schematics-cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------- | -| [aed26c388](https://github.com/angular/angular-cli/commit/aed26c38803a465842ff128c3f81bd6984e1fe3d) | fix | correctly set default array values | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------ | -| [4912f3990](https://github.com/angular/angular-cli/commit/4912f39906b11a3212f11d5a00d577e2a0bacab4) | feat | add Tailwind CSS option to application schematic and `ng new` | -| [6c7b79833](https://github.com/angular/angular-cli/commit/6c7b798332786d29070460669e093e37902c4438) | fix | directly resolve karma config template in migration | -| [0f86cf878](https://github.com/angular/angular-cli/commit/0f86cf8782d1c08d11bb9ee54a30fe1954dd8bcc) | fix | prevent AI config schematic from failing when 'none' and other AI tools are selected | - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | -| [0d53e82d5](https://github.com/angular/angular-cli/commit/0d53e82d5ed8986603c2005fc06041dd076b08c6) | feat | provide detailed peer dependency conflict errors in ng add | -| [f513089e2](https://github.com/angular/angular-cli/commit/f513089e276acf5a7c4f6879a95e2d6ed78ae67d) | feat | remove direct support for `cnpm` | -| [47d77a3ed](https://github.com/angular/angular-cli/commit/47d77a3edea4dabb463d50c2bdba32475257d775) | fix | correctly set default array values | -| [e5aed6d65](https://github.com/angular/angular-cli/commit/e5aed6d655ed92ea6eb3ac03716b8a02a5f731d6) | fix | show planned actions in `ng add` dry run | -| [aeb49dd52](https://github.com/angular/angular-cli/commit/aeb49dd52bf88785a193fcb6caa0b36aaeef1d37) | perf | cache dependency lookups during `ng add` | -| [5e534090e](https://github.com/angular/angular-cli/commit/5e534090e25e00a9fafbce2867030e7fdb0efbf6) | perf | parallelize peer dependency checks in `ng add` | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- | -| [b554bd73a](https://github.com/angular/angular-cli/commit/b554bd73a9c248d986ed718028edf52ab5da6ccf) | fix | add temporary directory cleanup for Vitest executor | -| [261dbb37c](https://github.com/angular/angular-cli/commit/261dbb37cbe01492240c4cedc644663b15a4296a) | fix | correct JS/TS file paths when running under Bazel | -| [abf003268](https://github.com/angular/angular-cli/commit/abf003268c6cb18f0944665b0b3f2794c9469c3e) | fix | correct Vitest builder watch mode execution | -| [4b49a207a](https://github.com/angular/angular-cli/commit/4b49a207a1de27b82416c6225a59bc10f48bdcbc) | fix | ensure karma polyfills reporter factory returns a value | - - - # 20.2.1 (2025-08-27) @@ -939,18 +555,6 @@ - - -# 21.0.0-next.0 (2025-08-20) - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | -| [0505f954d](https://github.com/angular/angular-cli/commit/0505f954dcf3b3339749ff461592d46d8ecc5e23) | fix | allow unit-test progress option passthrough for building | - - - # 20.2.0 (2025-08-20) From 89f9c8ac410aa454b938c36e5d7fe82dc93172ac Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Nov 2025 14:38:52 +0000 Subject: [PATCH 1820/2162] ci: relocate license check to prevent blocking other CI jobs Relocates the "Check Package Licenses" step in `pr.yml` to ensure that failures in this specific check do not prevent other critical CI jobs from completing or providing feedback on pull requests. --- .github/workflows/pr.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index aab59a7bc029..dfe491692621 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -55,8 +55,6 @@ jobs: run: pnpm ts-circular-deps check - name: Run Validation run: pnpm admin validate - - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 - name: Check tooling setup run: pnpm check-tooling-setup - name: Check commit message @@ -67,6 +65,8 @@ jobs: # Code formatting checks are only done on pull requests as its too late to validate once # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} + - name: Check Package Licenses + uses: angular/dev-infra/github-actions/linting/licenses@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 build: runs-on: ubuntu-latest From 240d96cc5be895abe7db537fdbc228135fe6df77 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 18 Nov 2025 09:18:13 +0000 Subject: [PATCH 1821/2162] refactor: source best practices from `@angular/core` The best practices markdown file is now sourced directly from `@angular/core/resources/best-practices.md`. This change eliminates duplication and ensures consistency across packages. - `packages/angular/cli/src/commands/mcp/resources/best-practices.md` is now generated from the `@angular/core` resource. - `packages/schematics/angular/ai-config/files/__rulesName__.template` is also generated from the `@angular/core` resource, with additional frontmatter. --- packages/angular/cli/BUILD.bazel | 12 +++++ .../commands/mcp/resources/best-practices.md | 47 ------------------ packages/schematics/angular/BUILD.bazel | 16 +++++- .../ai-config/files/__rulesName__.template | 49 ------------------- 4 files changed, 26 insertions(+), 98 deletions(-) delete mode 100644 packages/angular/cli/src/commands/mcp/resources/best-practices.md delete mode 100644 packages/schematics/angular/ai-config/files/__rulesName__.template diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index e173d31e5413..aeb1878b9d52 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -15,6 +15,17 @@ package(default_visibility = ["//visibility:public"]) npm_link_all_packages() +genrule( + name = "angular_best_practices", + srcs = [ + "//:node_modules/@angular/core/dir", + ], + outs = ["src/commands/mcp/resources/best-practices.md"], + cmd = """ + cp "$(location //:node_modules/@angular/core/dir)/resources/best-practices.md" $@ + """, +) + RUNTIME_ASSETS = glob( include = [ "bin/**/*", @@ -27,6 +38,7 @@ RUNTIME_ASSETS = glob( ) + [ "//packages/angular/cli:lib/config/schema.json", "//packages/angular/cli:lib/code-examples.db", + ":angular_best_practices", ] ts_project( diff --git a/packages/angular/cli/src/commands/mcp/resources/best-practices.md b/packages/angular/cli/src/commands/mcp/resources/best-practices.md deleted file mode 100644 index e3b246935258..000000000000 --- a/packages/angular/cli/src/commands/mcp/resources/best-practices.md +++ /dev/null @@ -1,47 +0,0 @@ -You are an expert in TypeScript, Angular, and scalable web application development. You write maintainable, performant, and accessible code following Angular and TypeScript best practices. - -## TypeScript Best Practices - -- Use strict type checking -- Prefer type inference when the type is obvious -- Avoid the `any` type; use `unknown` when type is uncertain - -## Angular Best Practices - -- Always use standalone components over NgModules -- Must NOT set `standalone: true` inside Angular decorators. It's the default. -- Use signals for state management -- Implement lazy loading for feature routes -- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead -- Use `NgOptimizedImage` for all static images. - - `NgOptimizedImage` does not work for inline base64 images. - -## Components - -- Keep components small and focused on a single responsibility -- Use `input()` and `output()` functions instead of decorators -- Use `computed()` for derived state -- Set `changeDetection: ChangeDetectionStrategy.OnPush` in `@Component` decorator -- Prefer inline templates for small components -- Prefer Reactive forms instead of Template-driven ones -- Do NOT use `ngClass`, use `class` bindings instead -- DO NOT use `ngStyle`, use `style` bindings instead - -## State Management - -- Use signals for local component state -- Use `computed()` for derived state -- Keep state transformations pure and predictable -- Do NOT use `mutate` on signals, use `update` or `set` instead - -## Templates - -- Keep templates simple and avoid complex logic -- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch` -- Use the async pipe to handle observables - -## Services - -- Design services around a single responsibility -- Use the `providedIn: 'root'` option for singleton services -- Use the `inject()` function instead of constructor injection diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index b3fa1e537720..27e1179fa107 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -45,11 +45,24 @@ copy_to_bin( srcs = glob(["**/schema.json"]), ) +genrule( + name = "angular_best_practices", + srcs = [ + "//:node_modules/@angular/core/dir", + ], + outs = ["ai-config/files/__rulesName__.template"], + cmd = """ + echo -e "<% if (frontmatter) { %><%= frontmatter %>\\n<% } %>" > $@ + cat "$(location //:node_modules/@angular/core/dir)/resources/best-practices.md" >> $@ + """, +) + RUNTIME_ASSETS = [ "collection.json", "migrations/migration-collection.json", "package.json", "utility/latest-versions/package.json", + ":angular_best_practices", ] + glob( include = [ "*/schema.json", @@ -115,13 +128,12 @@ ts_project( include = [ "**/*_spec.ts", "utility/test/**/*.ts", - "refactor/jasmine-vitest/test-helpers.ts", ], exclude = [ # NB: we need to exclude the nested node_modules that is laid out by yarn workspaces "node_modules/**", ], - ), + ) + ["refactor/jasmine-vitest/test-helpers.ts"], deps = [ ":angular", ":node_modules/@angular-devkit/core", diff --git a/packages/schematics/angular/ai-config/files/__rulesName__.template b/packages/schematics/angular/ai-config/files/__rulesName__.template deleted file mode 100644 index 0d4f1bbf8d41..000000000000 --- a/packages/schematics/angular/ai-config/files/__rulesName__.template +++ /dev/null @@ -1,49 +0,0 @@ -<% if (frontmatter) { %><%= frontmatter %> - -<% } %>You are an expert in TypeScript, Angular, and scalable web application development. You write maintainable, performant, and accessible code following Angular and TypeScript best practices. - -## TypeScript Best Practices - -- Use strict type checking -- Prefer type inference when the type is obvious -- Avoid the `any` type; use `unknown` when type is uncertain - -## Angular Best Practices - -- Always use standalone components over NgModules -- Must NOT set `standalone: true` inside Angular decorators. It's the default. -- Use signals for state management -- Implement lazy loading for feature routes -- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead -- Use `NgOptimizedImage` for all static images. - - `NgOptimizedImage` does not work for inline base64 images. - -## Components - -- Keep components small and focused on a single responsibility -- Use `input()` and `output()` functions instead of decorators -- Use `computed()` for derived state -- Set `changeDetection: ChangeDetectionStrategy.OnPush` in `@Component` decorator -- Prefer inline templates for small components -- Prefer Reactive forms instead of Template-driven ones -- Do NOT use `ngClass`, use `class` bindings instead -- Do NOT use `ngStyle`, use `style` bindings instead - -## State Management - -- Use signals for local component state -- Use `computed()` for derived state -- Keep state transformations pure and predictable -- Do NOT use `mutate` on signals, use `update` or `set` instead - -## Templates - -- Keep templates simple and avoid complex logic -- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch` -- Use the async pipe to handle observables - -## Services - -- Design services around a single responsibility -- Use the `providedIn: 'root'` option for singleton services -- Use the `inject()` function instead of constructor injection From 1ac5b1d37484f334935909af518c9470e06f77f5 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:23:50 +0000 Subject: [PATCH 1822/2162] test: delete e2e directories after tests finish Deletes the e2e directories after tests complete to ensure a clean state for subsequent test runs and to free up disk space. --- tests/legacy-cli/e2e/utils/assets.ts | 12 +++++++----- tests/legacy-cli/e2e/utils/project.ts | 5 +++++ tests/legacy-cli/e2e_runner.ts | 15 ++++++++++++--- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/tests/legacy-cli/e2e/utils/assets.ts b/tests/legacy-cli/e2e/utils/assets.ts index d421086c1b9e..153fdaccc6de 100644 --- a/tests/legacy-cli/e2e/utils/assets.ts +++ b/tests/legacy-cli/e2e/utils/assets.ts @@ -5,7 +5,7 @@ import { getGlobalVariable } from './env'; import { resolve } from 'node:path'; import { copyFile } from './fs'; import { installWorkspacePackages, setRegistry } from './packages'; -import { useBuiltPackagesVersions } from './project'; +import { getTestProjectDir, useBuiltPackagesVersions } from './project'; export function assetDir(assetName: string) { return join(__dirname, '../e2e/assets', assetName); @@ -21,7 +21,7 @@ export function copyProjectAsset(assetName: string, to?: string) { export function copyAssets(assetName: string, to?: string) { const seed = +Date.now(); - const tempRoot = join(getGlobalVariable('projects-root'), 'assets', assetName + '-' + seed); + const tempRoot = join(getTestAssetsDir(), assetName + '-' + seed); const root = assetDir(assetName); return Promise.resolve() @@ -30,9 +30,7 @@ export function copyAssets(assetName: string, to?: string) { return allFiles.reduce((promise, filePath) => { const toPath = - to !== undefined - ? resolve(getGlobalVariable('projects-root'), 'test-project', to, filePath) - : join(tempRoot, filePath); + to !== undefined ? resolve(getTestProjectDir(), to, filePath) : join(tempRoot, filePath); return promise .then(() => copyFile(join(root, filePath), toPath)) @@ -65,3 +63,7 @@ export async function createProjectFromAsset( return () => setRegistry(true /** useTestRegistry */); } + +export function getTestAssetsDir(): string { + return join(getGlobalVariable('projects-root'), 'assets'); +} diff --git a/tests/legacy-cli/e2e/utils/project.ts b/tests/legacy-cli/e2e/utils/project.ts index c84b7fce8e1d..fe9cfd8a0e04 100644 --- a/tests/legacy-cli/e2e/utils/project.ts +++ b/tests/legacy-cli/e2e/utils/project.ts @@ -7,6 +7,7 @@ import { gitCommit } from './git'; import { findFreePort } from './network'; import { installWorkspacePackages, PkgInfo } from './packages'; import { execAndWaitForOutputToMatch, git, ng } from './process'; +import { join } from 'node:path'; export function updateJsonFile(filePath: string, fn: (json: any) => any | void) { return readFile(filePath).then((tsConfigJson) => { @@ -270,3 +271,7 @@ export function updateServerFileForEsbuild(filepath: string): Promise { `, ); } + +export function getTestProjectDir(): string { + return join(getGlobalVariable('projects-root'), 'test-project'); +} diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index 5d7031f20489..86a036c5518a 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -4,6 +4,7 @@ import colors from 'ansi-colors'; import glob from 'fast-glob'; import * as path from 'node:path'; import * as fs from 'node:fs'; +import { rm } from 'node:fs/promises'; import { getGlobalVariable, setGlobalVariable } from './e2e/utils/env'; import { gitClean } from './e2e/utils/git'; import { createNpmRegistry } from './e2e/utils/registry'; @@ -13,7 +14,7 @@ import { findFreePort } from './e2e/utils/network'; import { extractFile } from './e2e/utils/tar'; import { realpathSync } from 'node:fs'; import { PkgInfo } from './e2e/utils/packages'; -import { rm } from 'node:fs/promises'; +import { getTestProjectDir } from './e2e/utils/project'; Error.stackTraceLimit = Infinity; @@ -271,6 +272,14 @@ Promise.all([findFreePort(), findFreePort(), findPackageTars()]) } finally { registryProcess.kill(); secureRegistryProcess.kill(); + + await rm(getGlobalVariable('projects-root'), { + recursive: true, + force: true, + maxRetries: 3, + }).catch(() => { + // If this fails it is not fatal. + }); } }) .catch((err) => { @@ -334,7 +343,7 @@ function runInitializer(absoluteName: string): Promise { * Run a file from the main 'test-project' directory in a subprocess via launchTestProcess(). */ async function runTest(absoluteName: string): Promise { - process.chdir(join(getGlobalVariable('projects-root'), 'test-project')); + process.chdir(getTestProjectDir()); await launchTestProcess(absoluteName); await cleanTestProject(); @@ -343,7 +352,7 @@ async function runTest(absoluteName: string): Promise { async function cleanTestProject() { await gitClean(); - const testProject = join(getGlobalVariable('projects-root'), 'test-project'); + const testProject = getTestProjectDir(); // Note: Dist directory is not cleared between tests, as `git clean` // doesn't delete it. From 93da64e222c18cef74254edfa15fac32ba5ab3bb Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:25:27 +0000 Subject: [PATCH 1823/2162] Revert "ci: bump specs for e2e-package-managers" This reverts commit 7217478809e80c57e8705eaeea38d2fe32a9f9bd. --- .github/workflows/ci.yml | 4 +--- .github/workflows/pr.yml | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 60e3cd99ac57..e257c8735b65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,9 +160,7 @@ jobs: strategy: fail-fast: false matrix: - # These tests can generate a significant amount of temp files, especially when - # flaky targets are retried. The larger machine type comes with 2x more SSD space. - os: [ubuntu-latest-4core] + os: [ubuntu-latest] node: [22] subset: [yarn, pnpm] shard: [0, 1, 2] diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index dfe491692621..892b7685d71b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -178,9 +178,7 @@ jobs: strategy: fail-fast: false matrix: - # These tests can generate a significant amount of temp files, especially when - # flaky targets are retried. The larger machine type comes with 2x more SSD space. - os: [ubuntu-latest-4core] + os: [ubuntu-latest] node: [22] subset: [yarn, pnpm] shard: [0, 1, 2] From 8335187e7ec5a6610086ec32d8e7b5a3c377eda0 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:56:27 +0000 Subject: [PATCH 1824/2162] build: clean up verdaccio storage and share storage Ensures that the Verdaccio registry storage is properly cleaned up at the end of E2E tests by placing it within the main temporary directory which is now explicitly deleted on process exit or SIGINT. This change also centralizes the Verdaccio storage location, allowing both HTTP and HTTPS Verdaccio instances to share the same storage, simplifying test setup and cleanup. Removes redundant temporary directory creation logic for npm sandbox and temporary project roots, as these are now managed by a single `tmp-root`. --- .../e2e/setup/001-create-tmp-dir.ts | 19 --- ...{002-npm-sandbox.ts => 001-npm-sandbox.ts} | 0 tests/legacy-cli/e2e/utils/registry.ts | 21 +-- tests/legacy-cli/e2e_runner.ts | 126 ++++++++++-------- 4 files changed, 80 insertions(+), 86 deletions(-) delete mode 100644 tests/legacy-cli/e2e/setup/001-create-tmp-dir.ts rename tests/legacy-cli/e2e/setup/{002-npm-sandbox.ts => 001-npm-sandbox.ts} (100%) diff --git a/tests/legacy-cli/e2e/setup/001-create-tmp-dir.ts b/tests/legacy-cli/e2e/setup/001-create-tmp-dir.ts deleted file mode 100644 index 4914921eca18..000000000000 --- a/tests/legacy-cli/e2e/setup/001-create-tmp-dir.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { dirname } from 'node:path'; -import { getGlobalVariable, setGlobalVariable } from '../utils/env'; -import { mktempd } from '../utils/utils'; - -export default async function () { - const argv = getGlobalVariable('argv'); - - // Get to a temporary directory. - let tempRoot: string; - if (argv.reuse) { - tempRoot = dirname(argv.reuse); - } else if (argv.tmpdir) { - tempRoot = argv.tmpdir; - } else { - tempRoot = await mktempd('angular-cli-e2e-', process.env.E2E_TEMP); - } - console.log(` Using "${tempRoot}" as temporary directory for a new project.`); - setGlobalVariable('tmp-root', tempRoot); -} diff --git a/tests/legacy-cli/e2e/setup/002-npm-sandbox.ts b/tests/legacy-cli/e2e/setup/001-npm-sandbox.ts similarity index 100% rename from tests/legacy-cli/e2e/setup/002-npm-sandbox.ts rename to tests/legacy-cli/e2e/setup/001-npm-sandbox.ts diff --git a/tests/legacy-cli/e2e/utils/registry.ts b/tests/legacy-cli/e2e/utils/registry.ts index 1bd3084d4f48..b4c1b08afcbc 100644 --- a/tests/legacy-cli/e2e/utils/registry.ts +++ b/tests/legacy-cli/e2e/utils/registry.ts @@ -1,9 +1,10 @@ import { ChildProcess, fork } from 'node:child_process'; import { on } from 'node:events'; +import { mkdir } from 'node:fs/promises'; import { join } from 'node:path'; import { getGlobalVariable } from './env'; import { writeFile, readFile } from './fs'; -import { mktempd } from './utils'; +import { existsSync } from 'node:fs'; export async function createNpmRegistry( port: number, @@ -11,14 +12,18 @@ export async function createNpmRegistry( withAuthentication = false, ): Promise { // Setup local package registry - const registryPath = await mktempd('angular-cli-e2e-registry-'); + const registryPath = join(getGlobalVariable('tmp-root'), 'registry'); + if (!existsSync(registryPath)) { + await mkdir(registryPath); + } + + const configFileName = withAuthentication ? 'verdaccio_auth.yaml' : 'verdaccio.yaml'; + let configContent = await readFile(join(__dirname, '../', configFileName)); + configContent = configContent + .replace(/\$\{HTTP_PORT\}/g, String(port)) + .replace(/\$\{HTTPS_PORT\}/g, String(httpsPort)); + const configPath = join(registryPath, configFileName); - let configContent = await readFile( - join(__dirname, '../', withAuthentication ? 'verdaccio_auth.yaml' : 'verdaccio.yaml'), - ); - configContent = configContent.replace(/\$\{HTTP_PORT\}/g, String(port)); - configContent = configContent.replace(/\$\{HTTPS_PORT\}/g, String(httpsPort)); - const configPath = join(registryPath, 'verdaccio.yaml'); await writeFile(configPath, configContent); const verdaccioServer = fork(require.resolve('verdaccio/bin/verdaccio'), ['-c', configPath]); diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index 86a036c5518a..0db1dfb01025 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -15,6 +15,7 @@ import { extractFile } from './e2e/utils/tar'; import { realpathSync } from 'node:fs'; import { PkgInfo } from './e2e/utils/packages'; import { getTestProjectDir } from './e2e/utils/project'; +import { mktempd } from './e2e/utils/utils'; Error.stackTraceLimit = Infinity; @@ -31,13 +32,9 @@ Error.stackTraceLimit = Infinity; * --ng-snapshots Install angular snapshot builds in the test project. * --glob Run tests matching this glob pattern (relative to tests/e2e/). * --ignore Ignore tests matching this glob pattern. - * --reuse=/path Use a path instead of create a new project. That project should have been - * created, and npm installed. Ideally you want a project created by a previous - * run of e2e. * --nb-shards Total number of shards that this is part of. Default is 2 if --shard is * passed in. * --shard Index of this processes' shard. - * --tmpdir=path Override temporary directory to use for new projects. * --package-manager Package manager to use. * --package=path An npm package to be published before running tests * @@ -58,8 +55,6 @@ const parsed = parseArgs({ 'nosilent': { type: 'boolean' }, 'package': { type: 'string', multiple: true, default: ['./dist/_*.tgz'] }, 'package-manager': { type: 'string', default: 'npm' }, - 'reuse': { type: 'string' }, - 'tmpdir': { type: 'string' }, 'verbose': { type: 'boolean' }, 'nb-shards': { type: 'string' }, @@ -227,65 +222,68 @@ process.env.CHROME_BIN = path.resolve(process.env.CHROME_BIN!); process.env.CHROME_PATH = path.resolve(process.env.CHROME_PATH!); process.env.CHROMEDRIVER_BIN = path.resolve(process.env.CHROMEDRIVER_BIN!); -Promise.all([findFreePort(), findFreePort(), findPackageTars()]) - .then(async ([httpPort, httpsPort, packageTars]) => { - setGlobalVariable('package-registry', 'http://localhost:' + httpPort); - setGlobalVariable('package-secure-registry', 'http://localhost:' + httpsPort); - setGlobalVariable('package-tars', packageTars); - - // NPM registries for the lifetime of the test execution - const registryProcess = await createNpmRegistry(httpPort, httpPort); - const secureRegistryProcess = await createNpmRegistry(httpPort, httpsPort, true); - - try { - await runSteps(runSetup, allSetups, 'setup'); - await runSteps(runInitializer, allInitializers, 'initializer'); - await runSteps(runTest, testsToRun, 'test'); - - if (shardId !== null) { - console.log(colors.green(`Done shard ${shardId} of ${nbShards}.`)); - } else { - console.log(colors.green('Done.')); - } +(async () => { + const tempRoot = await mktempd('angular-cli-e2e-', process.env.E2E_TEMP); + setGlobalVariable('tmp-root', tempRoot); + + process.on('SIGINT', deleteTemporaryRoot); + process.on('exit', deleteTemporaryRoot); + + const [httpPort, httpsPort, packageTars] = await Promise.all([ + findFreePort(), + findFreePort(), + findPackageTars(), + ]); + setGlobalVariable('package-registry', 'http://localhost:' + httpPort); + setGlobalVariable('package-secure-registry', 'http://localhost:' + httpsPort); + setGlobalVariable('package-tars', packageTars); + + // NPM registries for the lifetime of the test execution + const registryProcess = await createNpmRegistry(httpPort, httpPort); + const secureRegistryProcess = await createNpmRegistry(httpPort, httpsPort, true); + + try { + console.log(` Using "${tempRoot}" as temporary directory for a new project.`); + + await runSteps(runSetup, allSetups, 'setup'); + await runSteps(runInitializer, allInitializers, 'initializer'); + await runSteps(runTest, testsToRun, 'test'); + + if (shardId !== null) { + console.log(colors.green(`Done shard ${shardId} of ${nbShards}.`)); + } else { + console.log(colors.green('Done.')); + } - process.exitCode = 0; - } catch (err) { - if (err instanceof Error) { - console.log('\n'); - console.error(colors.red(err.message)); - if (err.stack) { - console.error(colors.red(err.stack)); - } - } else { - console.error(colors.red(String(err))); + process.exitCode = 0; + } catch (err) { + if (err instanceof Error) { + console.log('\n'); + console.error(colors.red(err.message)); + if (err.stack) { + console.error(colors.red(err.stack)); } + } else { + console.error(colors.red(String(err))); + } - if (argv.debug) { - console.log(`Current Directory: ${process.cwd()}`); - console.log('Will loop forever while you debug... CTRL-C to quit.'); - - // Wait forever until user explicitly cancels. - await new Promise(() => {}); - } + if (argv.debug) { + console.log(`Current Directory: ${process.cwd()}`); + console.log('Will loop forever while you debug... CTRL-C to quit.'); - process.exitCode = 1; - } finally { - registryProcess.kill(); - secureRegistryProcess.kill(); - - await rm(getGlobalVariable('projects-root'), { - recursive: true, - force: true, - maxRetries: 3, - }).catch(() => { - // If this fails it is not fatal. - }); + // Wait forever until user explicitly cancels. + await new Promise(() => {}); } - }) - .catch((err) => { - console.error(colors.red(`Unkown Error: ${err}`)); + process.exitCode = 1; - }); + } finally { + registryProcess.kill(); + secureRegistryProcess.kill(); + } +})().catch((err) => { + console.error(colors.red(`Unkown Error: ${err}`)); + process.exitCode = 1; +}); async function runSteps( run: (name: string) => Promise | void, @@ -415,3 +413,13 @@ async function findPackageTars(): Promise<{ [pkg: string]: PkgInfo }> { {} as { [pkg: string]: PkgInfo }, ); } + +function deleteTemporaryRoot(): void { + try { + fs.rmSync(getGlobalVariable('tmp-root'), { + recursive: true, + force: true, + maxRetries: 3, + }); + } catch {} +} From 08f88eb0a9a2ae087862856e56dd242c86230227 Mon Sep 17 00:00:00 2001 From: Aristeidis Bampakos Date: Mon, 17 Nov 2025 14:03:34 +0200 Subject: [PATCH 1825/2162] refactor(@schematics/angular): use the new X link --- .../files/common-files/src/app/app__suffix__.html.template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/schematics/angular/application/files/common-files/src/app/app__suffix__.html.template b/packages/schematics/angular/application/files/common-files/src/app/app__suffix__.html.template index b706f5bff17e..7d9cf8841c9d 100644 --- a/packages/schematics/angular/application/files/common-files/src/app/app__suffix__.html.template +++ b/packages/schematics/angular/application/files/common-files/src/app/app__suffix__.html.template @@ -286,8 +286,8 @@ @@ -297,7 +297,7 @@ viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" - alt="Twitter" + alt="X" > Date: Tue, 18 Nov 2025 09:34:39 +0000 Subject: [PATCH 1826/2162] test: improve vitest e2e test stability and performance - Use Chrome binary from `rules_browsers` for Playwright in Vitest browser tests for hermetic testing and avoids re-downloads of chrome. - Batch `ng generate` commands in e2e tests to improve performance. - Remove now redundant chromium install commands from e2e tests. --- .../e2e/tests/vitest/browser-no-globals.ts | 4 +- .../e2e/tests/vitest/browser-playwright.ts | 4 +- .../tests/vitest/larger-project-coverage.ts | 69 +++++++++++-------- 3 files changed, 42 insertions(+), 35 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts b/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts index 21135ff42f83..b25f8168c5f7 100644 --- a/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts +++ b/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { writeFile } from '../../utils/fs'; import { installPackage } from '../../utils/packages'; -import { exec, ng } from '../../utils/process'; +import { ng } from '../../utils/process'; import { applyVitestBuilder } from '../../utils/vitest'; /** @@ -14,8 +14,6 @@ export default async function (): Promise { await installPackage('playwright@1'); await installPackage('@vitest/browser-playwright@4'); - await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); - await writeFile( 'src/app/app.spec.ts', ` diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts b/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts index 9b22b81736e4..fa9ec43aabf3 100644 --- a/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts +++ b/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; import { applyVitestBuilder } from '../../utils/vitest'; -import { exec, ng } from '../../utils/process'; +import { ng } from '../../utils/process'; import { installPackage } from '../../utils/packages'; import { writeFile } from '../../utils/fs'; @@ -8,8 +8,6 @@ export default async function (): Promise { await applyVitestBuilder(); await installPackage('playwright@1'); await installPackage('@vitest/browser-playwright@4'); - await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); - await ng('generate', 'component', 'my-comp'); await writeFile( diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts index 17e642014d8d..4b5d5cc72bfa 100644 --- a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts +++ b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts @@ -2,7 +2,6 @@ import { ng } from '../../utils/process'; import { applyVitestBuilder } from '../../utils/vitest'; import assert from 'node:assert'; import { installPackage } from '../../utils/packages'; -import { exec } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; import { readFile } from '../../utils/fs'; @@ -27,33 +26,7 @@ export default async function () { const artifactCount = 100; const initialTestCount = 1; - const generatedFiles: string[] = []; - - // Generate a mix of components, services, and pipes - for (let i = 0; i < artifactCount; i++) { - const type = i % 3; - const name = `test-artifact${i}`; - let generateType; - let fileSuffix; - - switch (type) { - case 0: - generateType = 'component'; - fileSuffix = '.ts'; - break; - case 1: - generateType = 'service'; - fileSuffix = '.ts'; - break; - default: - generateType = 'pipe'; - fileSuffix = '-pipe.ts'; - break; - } - - await ng('generate', generateType, name, '--skip-tests=false'); - generatedFiles.push(`${name}${fileSuffix}`); - } + const generatedFiles = await generateArtifactsInBatches(artifactCount); const totalTests = initialTestCount + artifactCount; const expectedMessage = new RegExp(`${totalTests} passed`); @@ -78,7 +51,6 @@ export default async function () { // Setup for browser mode await installPackage('playwright@1'); await installPackage('@vitest/browser-playwright@4'); - await exec('npx', 'playwright', 'install', 'chromium', '--only-shell'); // Run tests in browser mode with coverage const { stdout: browserStdout } = await ng( @@ -102,3 +74,42 @@ export default async function () { assert.ok(found, `Expected ${file} to be in the browser coverage report.`); } } + +async function generateArtifactsInBatches(artifactCount: number): Promise { + const BATCH_SIZE = 5; + const generatedFiles: string[] = []; + let commands: Promise[] = []; + + for (let i = 0; i < artifactCount; i++) { + const type = i % 3; + const name = `test-artifact-${i}`; + + let generateType: string; + let fileSuffix: string; + + switch (type) { + case 0: + generateType = 'component'; + fileSuffix = '.ts'; + break; + case 1: + generateType = 'service'; + fileSuffix = '.ts'; + break; + default: + generateType = 'pipe'; + fileSuffix = '-pipe.ts'; + break; + } + + commands.push(ng('generate', generateType, name, '--skip-tests=false')); + generatedFiles.push(`${name}${fileSuffix}`); + + if (commands.length === BATCH_SIZE || i === artifactCount - 1) { + await Promise.all(commands); + commands = []; + } + } + + return generatedFiles; +} From cb8dea84b6071fa6a6e6a78815e38c59c18e3389 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 18 Nov 2025 11:07:53 +0000 Subject: [PATCH 1827/2162] test: refactor vitest include e2e test Refactored the vitest e2e include test to also include testing relative paths. --- .../e2e/tests/vitest/absolute-include.ts | 12 ------------ tests/legacy-cli/e2e/tests/vitest/include.ts | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 12 deletions(-) delete mode 100644 tests/legacy-cli/e2e/tests/vitest/absolute-include.ts create mode 100644 tests/legacy-cli/e2e/tests/vitest/include.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/absolute-include.ts b/tests/legacy-cli/e2e/tests/vitest/absolute-include.ts deleted file mode 100644 index 787fe942edbd..000000000000 --- a/tests/legacy-cli/e2e/tests/vitest/absolute-include.ts +++ /dev/null @@ -1,12 +0,0 @@ -import assert from 'node:assert/strict'; -import { applyVitestBuilder } from '../../utils/vitest'; -import { ng } from '../../utils/process'; -import path from 'node:path'; - -export default async function (): Promise { - await applyVitestBuilder(); - - const { stdout } = await ng('test', '--include', path.resolve('src/app/app.spec.ts')); - - assert.match(stdout, /1 passed/, 'Expected 1 test to pass.'); -} diff --git a/tests/legacy-cli/e2e/tests/vitest/include.ts b/tests/legacy-cli/e2e/tests/vitest/include.ts new file mode 100644 index 000000000000..4585194ef3c2 --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vitest/include.ts @@ -0,0 +1,14 @@ +import assert from 'node:assert/strict'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { ng } from '../../utils/process'; +import path from 'node:path'; + +export default async function (): Promise { + await applyVitestBuilder(); + + const { stdout: stdout1 } = await ng('test', '--include', path.resolve('src/app/app.spec.ts')); + assert.match(stdout1, /1 passed/, 'Expected 1 test to pass with absolute include.'); + + const { stdout: stdout2 } = await ng('test', '--include', path.normalize('src/app/app.spec.ts')); + assert.match(stdout2, /1 passed/, 'Expected 1 test to pass with relative include.'); +} From d5b4d0303adf36e2a9c0e6e43e4361d276404272 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 18 Nov 2025 13:22:18 +0000 Subject: [PATCH 1828/2162] fix(@angular/build): normalize `--include` paths to posix This fixes an issue where relative includes didn't work when using backslashes in windows. Closes #31829 --- .../build/src/builders/unit-test/test-discovery.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index 89d38dbbe787..47bfed884ad3 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -65,7 +65,7 @@ export async function findTests( }); for (const match of globMatches) { - resolvedTestFiles.add(match); + resolvedTestFiles.add(toPosixPath(match)); } } @@ -261,15 +261,15 @@ async function resolveStaticPattern( for (const infix of TEST_FILE_INFIXES) { const potentialSpec = join(dirname(fullPath), `${baseName}${infix}${fileExt}`); if (await exists(potentialSpec)) { - return { resolved: [potentialSpec], unresolved: [] }; + return { resolved: [toPosixPath(potentialSpec)], unresolved: [] }; } } if (await exists(fullPath)) { - return { resolved: [fullPath], unresolved: [] }; + return { resolved: [toPosixPath(fullPath)], unresolved: [] }; } - return { resolved: [], unresolved: [pattern] }; + return { resolved: [], unresolved: [toPosixPath(pattern)] }; } /** Checks if a path exists and is a directory. */ From 76ed17868910d6675dce9b7f68bab6bd3aae7b4f Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 19 Nov 2025 23:14:41 +0100 Subject: [PATCH 1829/2162] ci: add bun package manager to e2e tests This commit introduces support for the `bun` package manager in our end-to-end tests. --- .github/workflows/ci.yml | 2 +- .github/workflows/pr.yml | 2 +- packages/angular/cli/src/commands/add/cli.ts | 4 +- .../cli/src/utilities/package-manager.ts | 8 ++- tests/legacy-cli/e2e/assets/BUILD.bazel | 5 +- .../collection.json | 0 .../index.js | 0 .../package.json | 0 tests/legacy-cli/e2e/setup/100-global-cli.ts | 2 +- .../legacy-cli/e2e/tests/commands/add/base.ts | 2 +- .../legacy-cli/e2e/tests/commands/add/dir.ts | 13 +++- .../legacy-cli/e2e/tests/commands/add/peer.ts | 48 ++++++++++----- .../e2e/tests/commands/add/secure-registry.ts | 59 +++++++++++-------- 13 files changed, 95 insertions(+), 50 deletions(-) rename tests/legacy-cli/e2e/assets/{add-collection => add-collection-dir}/collection.json (100%) rename tests/legacy-cli/e2e/assets/{add-collection => add-collection-dir}/index.js (100%) rename tests/legacy-cli/e2e/assets/{add-collection => add-collection-dir}/package.json (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e257c8735b65..dd82fe874da9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -162,7 +162,7 @@ jobs: matrix: os: [ubuntu-latest] node: [22] - subset: [yarn, pnpm] + subset: [yarn, pnpm, bun] shard: [0, 1, 2] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 892b7685d71b..d550c8e142de 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -180,7 +180,7 @@ jobs: matrix: os: [ubuntu-latest] node: [22] - subset: [yarn, pnpm] + subset: [yarn, pnpm, bun] shard: [0, 1, 2] runs-on: ${{ matrix.os }} steps: diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index 1ea2fff699c6..aec0014b9114 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -493,7 +493,9 @@ export default class AddCommandModule // Only show if installation will actually occur task.title = 'Installing package'; - if (context.savePackage === false) { + if (context.savePackage === false && packageManager.name !== PackageManager.Bun) { + // Bun has a `--no-save` option which we are using to + // install the package and not update the package.json and the lock file. task.title += ' in temporary location'; // Temporary packages are located in a different directory diff --git a/packages/angular/cli/src/utilities/package-manager.ts b/packages/angular/cli/src/utilities/package-manager.ts index 54b5a21df4de..b913a3bfd72d 100644 --- a/packages/angular/cli/src/utilities/package-manager.ts +++ b/packages/angular/cli/src/utilities/package-manager.ts @@ -61,7 +61,7 @@ export class PackageManagerUtils { /** Install a single package. */ async install( packageName: string, - save: 'dependencies' | 'devDependencies' | true = true, + save: 'dependencies' | 'devDependencies' | boolean = true, extraArgs: string[] = [], cwd?: string, ): Promise { @@ -70,6 +70,8 @@ export class PackageManagerUtils { if (save === 'devDependencies') { installArgs.push(packageManagerArgs.saveDev); + } else if (save === false) { + installArgs.push(packageManagerArgs.noLockfile); } return this.run([...installArgs, ...extraArgs], { cwd, silent: true }); @@ -158,11 +160,11 @@ export class PackageManagerUtils { }; case PackageManager.Bun: return { - saveDev: '--development', + saveDev: '--dev', install: 'add', installAll: 'install', prefix: '--cwd', - noLockfile: '', + noLockfile: '--no-save', }; default: return { diff --git a/tests/legacy-cli/e2e/assets/BUILD.bazel b/tests/legacy-cli/e2e/assets/BUILD.bazel index 946db62d0d5a..11bc738d4a29 100644 --- a/tests/legacy-cli/e2e/assets/BUILD.bazel +++ b/tests/legacy-cli/e2e/assets/BUILD.bazel @@ -2,6 +2,9 @@ load("//tools:defaults.bzl", "copy_to_bin") copy_to_bin( name = "assets", - srcs = glob(["**"]), + srcs = glob( + include = ["**"], + exclude = ["BUILD.bazel"], + ), visibility = ["//visibility:public"], ) diff --git a/tests/legacy-cli/e2e/assets/add-collection/collection.json b/tests/legacy-cli/e2e/assets/add-collection-dir/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection/collection.json rename to tests/legacy-cli/e2e/assets/add-collection-dir/collection.json diff --git a/tests/legacy-cli/e2e/assets/add-collection/index.js b/tests/legacy-cli/e2e/assets/add-collection-dir/index.js similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection/index.js rename to tests/legacy-cli/e2e/assets/add-collection-dir/index.js diff --git a/tests/legacy-cli/e2e/assets/add-collection/package.json b/tests/legacy-cli/e2e/assets/add-collection-dir/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection/package.json rename to tests/legacy-cli/e2e/assets/add-collection-dir/package.json diff --git a/tests/legacy-cli/e2e/setup/100-global-cli.ts b/tests/legacy-cli/e2e/setup/100-global-cli.ts index 780c0bbfaf39..9f587fa5c38d 100644 --- a/tests/legacy-cli/e2e/setup/100-global-cli.ts +++ b/tests/legacy-cli/e2e/setup/100-global-cli.ts @@ -6,7 +6,7 @@ const PACKAGE_MANAGER_VERSION = { 'npm': '10.8.1', 'yarn': '1.22.22', 'pnpm': '10.17.1', - 'bun': '1.2.21', + 'bun': '1.3.2', }; export default async function () { diff --git a/tests/legacy-cli/e2e/tests/commands/add/base.ts b/tests/legacy-cli/e2e/tests/commands/add/base.ts index f4e7048df6ac..d31210c6c242 100644 --- a/tests/legacy-cli/e2e/tests/commands/add/base.ts +++ b/tests/legacy-cli/e2e/tests/commands/add/base.ts @@ -4,7 +4,7 @@ import { ng } from '../../../utils/process'; import { expectToFail } from '../../../utils/utils'; export default async function () { - await symlinkFile(assetDir('add-collection'), `./node_modules/add-collection`, 'dir'); + await symlinkFile(assetDir('add-collection-dir'), `./node_modules/add-collection`, 'dir'); await ng('add', 'add-collection'); await expectFileToExist('empty-file'); diff --git a/tests/legacy-cli/e2e/tests/commands/add/dir.ts b/tests/legacy-cli/e2e/tests/commands/add/dir.ts index f5fadc486b3d..7cb00704cc8e 100644 --- a/tests/legacy-cli/e2e/tests/commands/add/dir.ts +++ b/tests/legacy-cli/e2e/tests/commands/add/dir.ts @@ -1,8 +1,19 @@ +import { cp } from 'node:fs/promises'; +import { resolve } from 'node:path'; import { assetDir } from '../../../utils/assets'; import { expectFileToExist } from '../../../utils/fs'; import { ng } from '../../../utils/process'; export default async function () { - await ng('add', assetDir('add-collection'), '--name=blah', '--skip-confirmation'); + const collectionName = 'add-collection-dir'; + const dirCollectionPath = resolve(collectionName); + + // Copy locally as bun doesn't install the dependency correctly if it has symlinks. + await cp(assetDir(collectionName), dirCollectionPath, { + recursive: true, + dereference: true, + }); + + await ng('add', dirCollectionPath, '--name=blah', '--skip-confirmation'); await expectFileToExist('blah'); } diff --git a/tests/legacy-cli/e2e/tests/commands/add/peer.ts b/tests/legacy-cli/e2e/tests/commands/add/peer.ts index d085efadf080..143542e4533c 100644 --- a/tests/legacy-cli/e2e/tests/commands/add/peer.ts +++ b/tests/legacy-cli/e2e/tests/commands/add/peer.ts @@ -1,24 +1,44 @@ import assert from 'node:assert/strict'; +import { resolve } from 'node:path'; +import { cp } from 'node:fs/promises'; import { assetDir } from '../../../utils/assets'; import { ng } from '../../../utils/process'; -const warning = 'Adding the package may not succeed.'; +export default async function (): Promise { + const warning = /Adding the package may not succeed/; -export default async function () { - const { stdout: bad } = await ng( - 'add', - assetDir('add-collection-peer-bad'), - '--skip-confirmation', + const stdout1 = await runNgAdd('add-collection-peer-bad'); + assert.match( + stdout1, + warning, + `Peer warning should be shown for add-collection-peer-bad but was not.`, ); - assert.match(bad, new RegExp(warning), 'peer warning not shown on bad package'); - const { stdout: base } = await ng('add', assetDir('add-collection'), '--skip-confirmation'); - assert.doesNotMatch(base, new RegExp(warning), 'peer warning shown on base package'); + const stdout2 = await runNgAdd('add-collection-dir'); + assert.doesNotMatch( + stdout2, + warning, + `Peer warning should NOT be shown for add-collection-dir but was.`, + ); - const { stdout: good } = await ng( - 'add', - assetDir('add-collection-peer-good'), - '--skip-confirmation', + const stdout3 = await runNgAdd('add-collection-peer-good'); + assert.doesNotMatch( + stdout3, + warning, + `Peer warning should NOT be shown for add-collection-peer-good but was.`, ); - assert.doesNotMatch(good, new RegExp(warning), 'peer warning shown on good package'); +} + +async function runNgAdd(collectionName: string): Promise { + const collectionPath = resolve(collectionName); + + // Copy locally as bun doesn't install the dependency correctly if it has symlinks. + await cp(assetDir(collectionName), collectionPath, { + recursive: true, + dereference: true, + }); + + const { stdout } = await ng('add', collectionPath, '--skip-confirmation'); + + return stdout; } diff --git a/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts b/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts index a27ba708637d..95218fd653d9 100644 --- a/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts +++ b/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts @@ -1,42 +1,49 @@ -import { expectFileNotToExist, expectFileToExist } from '../../../utils/fs'; +import { expectFileNotToExist, expectFileToExist, rimraf } from '../../../utils/fs'; import { getActivePackageManager, installWorkspacePackages } from '../../../utils/packages'; import { git, ng } from '../../../utils/process'; import { createNpmConfigForAuthentication } from '../../../utils/registry'; import { expectToFail } from '../../../utils/utils'; export default async function () { - // The environment variable has priority over the .npmrc - delete process.env['NPM_CONFIG_REGISTRY']; - const isNpm = getActivePackageManager() === 'npm'; + const originalNpmConfigRegistry = process.env['NPM_CONFIG_REGISTRY']; + try { + // The environment variable has priority over the .npmrc + delete process.env['NPM_CONFIG_REGISTRY']; + const packageManager = getActivePackageManager(); + const supportsUnscopedAuth = packageManager !== 'bun' && packageManager !== 'npm'; + const command = ['add', '@angular/pwa', '--skip-confirmation']; - const command = ['add', '@angular/pwa', '--skip-confirmation']; - await expectFileNotToExist('public/manifest.webmanifest'); + await expectFileNotToExist('public/manifest.webmanifest'); - // Works with unscoped registry authentication details - if (!isNpm) { - // NPM no longer support unscoped. - await createNpmConfigForAuthentication(false); + // Works with unscoped registry authentication details + if (supportsUnscopedAuth) { + // Some package managers such as Bun and NPM do not support unscoped auth. + await createNpmConfigForAuthentication(false); + await ng(...command); + await expectFileToExist('public/manifest.webmanifest'); + await git('clean', '-dxf'); + } + + // Works with scoped registry authentication details + await expectFileNotToExist('public/manifest.webmanifest'); + + await createNpmConfigForAuthentication(true); await ng(...command); await expectFileToExist('public/manifest.webmanifest'); await git('clean', '-dxf'); - } - // Works with scoped registry authentication details - await expectFileNotToExist('public/manifest.webmanifest'); - await createNpmConfigForAuthentication(true); - await ng(...command); - await expectFileToExist('public/manifest.webmanifest'); + // Invalid authentication token + if (!supportsUnscopedAuth) { + // Some package managers such as Bun and NPM do not support unscoped auth. + await createNpmConfigForAuthentication(false, true); + await expectToFail(() => ng(...command)); + } - // Invalid authentication token - if (isNpm) { - // NPM no longer support unscoped. - await createNpmConfigForAuthentication(false, true); + await createNpmConfigForAuthentication(true, true); await expectToFail(() => ng(...command)); + } finally { + process.env['NPM_CONFIG_REGISTRY'] = originalNpmConfigRegistry; + await git('clean', '-dxf'); + await installWorkspacePackages(); } - - await createNpmConfigForAuthentication(true, true); - await expectToFail(() => ng(...command)); - - await git('clean', '-dxf'); - await installWorkspacePackages(); } From dd99abc24c8e7ddb0ace0f96ebb2c48398cd0f5e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 18 Nov 2025 10:20:15 -0500 Subject: [PATCH 1830/2162] refactor(@angular/build): optimize Vitest in-memory plugin resolveId Refactors the `resolveId` hook in the `angular:test-in-memory-provider` Vite plugin to improve clarity, efficiency, and cross-platform consistency. Key improvements include: - Consolidating path resolution logic into a single flow. - Ensuring all resolved paths are absolute and consistently POSIX-formatted. - Prioritizing direct test entry point lookups. - Removing redundant checks and assertions. --- .../unit-test/runners/vitest/plugins.ts | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 96d3337e0149..05a9f8470253 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -171,29 +171,33 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins name: 'angular:test-in-memory-provider', enforce: 'pre', resolveId: (id, importer) => { - if (importer && (id[0] === '.' || id[0] === '/')) { - let fullPath; - if (testFileToEntryPoint.has(importer)) { - fullPath = toPosixPath(path.join(workspaceRoot, id)); - } else { - fullPath = toPosixPath(path.join(path.dirname(importer), id)); - } - - const relativePath = path.relative(workspaceRoot, fullPath); - if (buildResultFiles.has(toPosixPath(relativePath))) { - return fullPath; - } - } - + // Fast path for test entry points. if (testFileToEntryPoint.has(id)) { return id; } - assert(buildResultFiles.size > 0, 'buildResult must be available for resolving.'); - const relativePath = path.relative(workspaceRoot, id); + // Determine the base directory for resolution. + let baseDir: string; + if (importer) { + // If the importer is a test entry point, resolve relative to the workspace root. + // Otherwise, resolve relative to the importer's directory. + baseDir = testFileToEntryPoint.has(importer) ? workspaceRoot : path.dirname(importer); + } else { + // If there's no importer, assume the id is relative to the workspace root. + baseDir = workspaceRoot; + } + + // Construct the full, absolute path and normalize it to POSIX format. + const fullPath = toPosixPath(path.join(baseDir, id)); + + // Check if the resolved path corresponds to a known build artifact. + const relativePath = path.relative(workspaceRoot, fullPath); if (buildResultFiles.has(toPosixPath(relativePath))) { - return id; + return fullPath; } + + // If the module cannot be resolved from the build artifacts, let other plugins handle it. + return undefined; }, load: async (id) => { assert(buildResultFiles.size > 0, 'buildResult must be available for in-memory loading.'); From 09e5e32aab832fd29a738051a804f352ab64ce00 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 18 Nov 2025 11:35:34 -0500 Subject: [PATCH 1831/2162] refactor(@angular/build): optimize vitest in-memory file loading This commit optimizes the 'angular:test-in-memory-provider' Vitest plugin by introducing a 'loadResultFile' helper. This helper utilizes 'TextDecoder' to decode memory files, avoiding unnecessary buffer copies associated with 'Buffer.from().toString()'. It also removes duplicate file reading logic for source maps. --- .../unit-test/runners/vitest/plugins.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 05a9f8470253..d614d16f97b8 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -163,6 +163,14 @@ export async function createVitestConfigPlugin( }; } +async function loadResultFile(file: ResultFile): Promise { + if (file.origin === 'memory') { + return new TextDecoder('utf-8').decode(file.contents); + } + + return readFile(file.inputPath, 'utf-8'); +} + export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins { const { workspaceRoot, buildResultFiles, testFileToEntryPoint } = pluginOptions; @@ -221,17 +229,10 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins const outputFile = buildResultFiles.get(outputPath); if (outputFile) { + const code = await loadResultFile(outputFile); const sourceMapPath = outputPath + '.map'; const sourceMapFile = buildResultFiles.get(sourceMapPath); - const code = - outputFile.origin === 'memory' - ? Buffer.from(outputFile.contents).toString('utf-8') - : await readFile(outputFile.inputPath, 'utf-8'); - const sourceMapText = sourceMapFile - ? sourceMapFile.origin === 'memory' - ? Buffer.from(sourceMapFile.contents).toString('utf-8') - : await readFile(sourceMapFile.inputPath, 'utf-8') - : undefined; + const sourceMapText = sourceMapFile ? await loadResultFile(sourceMapFile) : undefined; // Vitest will include files in the coverage report if the sourcemap contains no sources. // For builder-internal generated code chunks, which are typically helper functions, From 6009030b855e9061be81efc695f73697030c57b8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:11:25 -0500 Subject: [PATCH 1832/2162] fix(@angular/cli): ensure dependencies are resolved correctly for node modules directory check This commit updates the check for installed node packages in the Architect base command module. Instead of relying on the presence of a 'node_modules' directory or checking for Yarn PnP specifically, it now attempts to resolve '@angular/core' using 'createRequire'. This provides a more robust and agnostic way to verify if dependencies are installed, supporting various package managers and installation strategies. --- .../architect-base-command-module.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) 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 566e0e62b209..fb3508777d74 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 @@ -12,8 +12,7 @@ import { WorkspaceNodeModulesArchitectHost, } from '@angular-devkit/architect/node'; import { json } from '@angular-devkit/core'; -import { existsSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { createRequire } from 'node:module'; import { isPackageNameSafeForAnalytics } from '../analytics/analytics'; import { EventCustomDimension, EventCustomMetric } from '../analytics/analytics-parameters'; import { assertIsError } from '../utilities/error'; @@ -210,15 +209,13 @@ export abstract class ArchitectBaseCommandModule return; } - // Check if yarn PnP is used. https://yarnpkg.com/advanced/pnpapi#processversionspnp - if (process.versions.pnp) { - return; - } + const workspaceResolve = createRequire(basePath + '/').resolve; + + try { + workspaceResolve('@angular/core'); - // Check for a `node_modules` directory (npm, yarn non-PnP, etc.) - if (existsSync(resolve(basePath, 'node_modules'))) { return; - } + } catch {} this.context.logger.warn( `Node packages may not be installed. Try installing with '${this.context.packageManager.name} install'.`, From 38743d922a0ef317bb2bb6465fdf5d259c99c563 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Nov 2025 07:39:07 +0000 Subject: [PATCH 1833/2162] fix(@angular/build): correctly invoke `isTTY` as a function Addresses an issue where 'isTTY' was incorrectly treated as a property instead of being called as a function, ensuring proper terminal detection. --- packages/angular/build/src/utils/check-port.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/utils/check-port.ts b/packages/angular/build/src/utils/check-port.ts index 58e5a0a0f854..d7c04f0b9f72 100644 --- a/packages/angular/build/src/utils/check-port.ts +++ b/packages/angular/build/src/utils/check-port.ts @@ -32,7 +32,7 @@ export async function checkPort(port: number, host: string): Promise { return; } - if (!isTTY) { + if (!isTTY()) { reject(createInUseError(port)); return; From dfe021ba6b9a951fe649c1eb2d2a1957c3f82ee9 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 19 Nov 2025 13:51:00 +0000 Subject: [PATCH 1834/2162] build: remove `build-schema` script This commit migrates the schema generation process to utilize Bazel's tagging system instead of a custom build script. - The `scripts/build-schema.mts` script has been removed. - A new `build-schema` script has been added to `package.json` that executes `bazel build` for targets tagged with "schema". - The CI/PR workflows (`.github/workflows/ci.yml` and `pr.yml`) have been updated to use this new `pnpm run build-schema` command. - The `ng_cli_schema_generator.bzl` and `ts_json_schema.bzl` rules have been updated to include the "schema" tag, allowing them to be picked up by the new build process. --- .github/workflows/ci.yml | 2 +- .github/workflows/pr.yml | 2 +- package.json | 1 + scripts/build-schema.mts | 72 ------------------------------- tools/ng_cli_schema_generator.bzl | 1 + tools/ts_json_schema.bzl | 1 + 6 files changed, 5 insertions(+), 74 deletions(-) delete mode 100644 scripts/build-schema.mts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd82fe874da9..d19b6dc53fde 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Generate JSON schema types # Schema types are required to correctly lint the TypeScript code - run: pnpm admin build-schema + run: pnpm run build-schema - name: Run ESLint run: pnpm lint --cache-strategy content - name: Validate NgBot Configuration diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index d550c8e142de..ab14714b6e0e 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -46,7 +46,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Generate JSON schema types # Schema types are required to correctly lint the TypeScript code - run: pnpm admin build-schema + run: pnpm run build-schema - name: Run ESLint run: pnpm lint --cache-strategy content - name: Validate NgBot Configuration diff --git a/package.json b/package.json index 19b580831ba2..1559dd9b8324 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "bazel": "bazelisk", "test": "bazel test //packages/...", "build": "pnpm -s admin build", + "build-schema": "bazel build //... --build_tag_filters schema --symlink_prefix dist-schema/", "lint": "eslint --cache --max-warnings=0 \"**/*.@(ts|mts|cts)\"", "templates": "pnpm -s admin templates", "validate": "pnpm -s admin validate", diff --git a/scripts/build-schema.mts b/scripts/build-schema.mts deleted file mode 100644 index ffc042af9630..000000000000 --- a/scripts/build-schema.mts +++ /dev/null @@ -1,72 +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 { spawn } from 'node:child_process'; -import { rm } from 'node:fs/promises'; -import { join, resolve } from 'node:path'; - -const __dirname = import.meta.dirname; -const baseDir = resolve(`${__dirname}/..`); -const bazelCmd = process.env.BAZEL ?? `pnpm -s bazel`; -const distRoot = join(baseDir, '/dist-schema/'); - -function _clean() { - console.info('Cleaning...'); - console.info(' Removing dist-schema/...'); - - return rm(join(__dirname, '../dist-schema'), { force: true, recursive: true, maxRetries: 3 }); -} - -function _exec(cmd: string, captureStdout: boolean): Promise { - return new Promise((resolve, reject) => { - const proc = spawn(cmd, { - stdio: 'pipe', - shell: true, - env: { - HOME: process.env.HOME, - PATH: process.env.PATH, - }, - }); - - let output = ''; - proc.stdout.on('data', (data) => { - console.info(data.toString().trim()); - if (captureStdout) { - output += data.toString(); - } - }); - proc.stderr.on('data', (data) => console.info(data.toString().trim())); - - proc.on('error', (error) => { - console.error(error.message); - }); - - proc.on('exit', (status) => { - if (status !== 0) { - reject(`Command failed: ${cmd}`); - } else { - resolve(output); - } - }); - }); -} - -async function _buildSchemas(): Promise { - console.info(`Building schemas...`); - - const queryTargetsCmd = `${bazelCmd} query --output=label "attr(name, .*_schema, //packages/...)"`; - const targets = (await _exec(queryTargetsCmd, true)).split(/\r?\n/); - - await _exec(`${bazelCmd} build ${targets.join(' ')} --symlink_prefix=${distRoot}`, false); -} - -export default async function (argv: {}): Promise { - await _clean(); - - await _buildSchemas(); -} diff --git a/tools/ng_cli_schema_generator.bzl b/tools/ng_cli_schema_generator.bzl index 9bcc4d287a6a..86d9552dd70c 100644 --- a/tools/ng_cli_schema_generator.bzl +++ b/tools/ng_cli_schema_generator.bzl @@ -4,6 +4,7 @@ def cli_json_schema(name, src, out, data = []): js_run_binary( name = name, outs = [out], + tags = ["schema"], srcs = [src] + data, tool = "//tools:ng_cli_schema", progress_message = "Generating CLI interface from %s" % src, diff --git a/tools/ts_json_schema.bzl b/tools/ts_json_schema.bzl index deb34c0af597..dab651d0d7e0 100644 --- a/tools/ts_json_schema.bzl +++ b/tools/ts_json_schema.bzl @@ -12,6 +12,7 @@ def ts_json_schema(name, src, data = []): name = name + ".interface", outs = [out], srcs = [src] + data, + tags = ["schema"], tool = "//tools:quicktype_runner", progress_message = "Generating TS interface for %s" % src, mnemonic = "TsJsonSchema", From 60e04abda999c218e7bf79de08fcadae3f1c59d8 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Wed, 19 Nov 2025 14:58:34 +0100 Subject: [PATCH 1835/2162] refactor(@angular/cli): consistent casing for onpush zoneless migration MCP tool name All other tools use `_` in their names. --- .../mcp/tools/onpush-zoneless-migration/zoneless-migration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts index bb2b1574d294..080480742d3b 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts @@ -21,7 +21,7 @@ import { sendDebugMessage } from './send-debug-message'; import { createSourceFile, getImportSpecifier } from './ts-utils'; export const ZONELESS_MIGRATION_TOOL = declareTool({ - name: 'onpush-zoneless-migration', + name: 'onpush_zoneless_migration', title: 'Plan migration to OnPush and/or zoneless', description: ` From 99820914f4efbefd26b9bec6233289e5afcc7a94 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 19 Nov 2025 10:49:53 -0800 Subject: [PATCH 1836/2162] docs: update release docs to cover bumping dev dependencies, which is required to get CI to pass --- docs/process/release.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/process/release.md b/docs/process/release.md index 1e060ac2169b..5490e48e8279 100644 --- a/docs/process/release.md +++ b/docs/process/release.md @@ -69,10 +69,15 @@ Releasing is performed using Angular's unified release tooling. Each week, two r Once FW releases the actual minor/major release (for example: `13.0.0` or `13.1.0`), update dependencies with the following: -1. Update [`constants.bzl`](../../constants.bzl) so `@angular/core` and `ng-packagr` are using the release version (drop `-next.0`). - -Merge the above change in a separate PR which lands _after_ FW releases (or else CI will fail) but _before_ the CLI -release PR. Releases are built before the PR is sent for review, so any changes after that point won't be included in the release. +1. Update [`constants.bzl`](../../constants.bzl) so `@angular/core` and `ng-packagr` are using the release version (drop `-rc.*`). +2. Update all `package.json` dependencies on framework packages to to the release version (drop `-rc.*`). + - Components packages release _after_ CLI, so those should be left as `-rc.*`. +3. `pnpm install` to update the `pnpm-lock.yaml` file. + +Create a PR with the above changes ([example](https://github.com/angular/angular-cli/pull/31872)) and merge it directly to the RC +branch. This PR must land _after_ FW releases (or else CI will fail) but _before_ the CLI release PR. Releases are built before +the PR is sent for review, so any changes after that point won't be included in the release and this cannot be combined with the +release PR. **AFTER a minor OR major CLI release:** From 4e6ba7c81dc6eaeb2d3a3d14f3dd8fb0a9138269 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 19 Nov 2025 08:41:20 +0000 Subject: [PATCH 1837/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 6 ++--- MODULE.bazel.lock | 62 ++++++++++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index a82a4e90c6f0..1b488d92160b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -4,8 +4,8 @@ module( name = "angular_cli", ) -bazel_dep(name = "yq.bzl", version = "0.3.1") -bazel_dep(name = "rules_nodejs", version = "6.6.1") +bazel_dep(name = "yq.bzl", version = "0.3.2") +bazel_dep(name = "rules_nodejs", version = "6.6.2") bazel_dep(name = "aspect_rules_js", version = "2.8.1") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") @@ -47,7 +47,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "6a699bf3e896690e2923cf3ade29fbd4e492e366", + commit = "f066f614451374721fac787fb1f0dbbd818d50d4", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 4dc7a24f2c2f..7626ecc5e633 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -157,7 +157,8 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/MODULE.bazel": "e499aabe7cb796b784e9421be909c702eb79f664c20d21cbf120332a2a8dc378", - "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/source.json": "c5eb6ed233d9ddadad77342e4aeefb836a4616f875acf2dbb181f98057c8c020", + "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/MODULE.bazel": "9fdb5e1d50246a25761f150fcc820dc47e4052330a8408451e628804f9ca64a6", + "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/source.json": "6e8c1ecc64ff8da147c1620f862ad77d7b19c5d1b52b3aa5e847d5b3d0de4cc3", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/MODULE.bazel": "7e9e7b5b26bd7ff012dfe63930db2f0176ddcd25e44a858fc72d63e995b6aab9", "https://bcr.bazel.build/modules/rules_pkg/0.8.1/source.json": "15dd7e13dc303f7fcde2b55300bcb8de5c0dd08a7a7269749cbbaa0fb1dfbe16", @@ -199,7 +200,8 @@ "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", "https://bcr.bazel.build/modules/yq.bzl/0.2.0/MODULE.bazel": "6f3a675677db8885be4d607fde14cc51829715e3a879fb016eb9bf336786ce6d", "https://bcr.bazel.build/modules/yq.bzl/0.3.1/MODULE.bazel": "9bcb7151b3cd4681b89d350530eaf7b45e32a44dda94843b8932b0cb1cd4594a", - "https://bcr.bazel.build/modules/yq.bzl/0.3.1/source.json": "f0b0f204a2a6b0e34b4c9541efe8c04f2ef1af65948daa784eccea738b21dbd2", + "https://bcr.bazel.build/modules/yq.bzl/0.3.2/MODULE.bazel": "0384efa70e8033d842ea73aa4b7199fa099709e236a7264345c03937166670b6", + "https://bcr.bazel.build/modules/yq.bzl/0.3.2/source.json": "c4ec3e192477e154f08769e29d69e8fd36e8a4f0f623997f3e1f6f7d328f7d7d", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", @@ -732,7 +734,7 @@ }, "@@rules_browsers~//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "6QMCx97Hwh2hyQPqZEA9AKAxbpygF41+K8xJfeqJYm8=", + "bzlTransitiveDigest": "ljZlVgWkQJnI6EvlHVfYit2EttUE52gDTbvmota5YO8=", "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -742,9 +744,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "4bc6d611d55dc96b213c8605cb8ac27d3c21973bf8b663df4cbf756c989e6745", + "sha256": "1419fa328bd7ea2697f26412ec693867516e4ef23c32eb13143a0b0b179b604b", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -761,9 +763,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "830cc2aafedbe7c9fe671c9898046f8900c06da89d12653ddc3ef26084d2f516", + "sha256": "792cbf9b77219b4476e41c49647bcd15e55f0988002fa1e4e6a720eb430c7eda", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -780,9 +782,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "5b5792f5c2d05c3f1f782346910869b61a37b9003f212315b19f4e46710cf8b9", + "sha256": "f0c1917769775e826dfa69936381d0d95b06fe67cf631ecd842380d5de0e4c7f", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -799,9 +801,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "19bdbf6e1579b6c056b74709520ac9df573f4e80e4f026cc2360a29443cf6c0c", + "sha256": "6ce0f20dd743a804890f45f5349370e1aa7cd3ac3482c04686fcff5fafd01bb3", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -818,9 +820,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "ea41e7a217d878c00e9d66a0724ff54be7d02d08adb7f6458b7d8487b6fbcd84", + "sha256": "baf4bf9d22881265487732f17d35a49e9aadd0837aa5c1c1eea520c8aa24a97f", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -835,9 +837,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "aede9b67301b930ff9c673df28429aa82ce05c105a4ccbef7e0cd30a97ae429d", + "sha256": "87560768d5aa203b37c0a1b8459a35b05e4ece54afee2df530f3bc33de4f63c5", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -852,9 +854,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "5adf89a3e8edc6755920f4cfe2fe0515d40684878ef5201da5e02a9d491c4003", + "sha256": "99821795fa7c87eb92fb15248e23b237c83f397486d22ad9a10771622c36a5a0", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -869,9 +871,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "a3dfe62b3e9e7a42bd324c07dcbbcc3a733a736b2a59f0e93b9250b88103ab73", + "sha256": "6e180e234a710c3cbf69566f64a662ed85473db6ae82275fd359f80ab288df99", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/143.0.7482.0/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" @@ -886,9 +888,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "c66a48222ff67d51560240d321895c6926c9b3af345cbf688ced8517781d88d1", + "sha256": "00fb922cda6bab971e02bcbfb77923b0a234388ed7d77c23506ca0a1a61d4a86", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/144.0/linux-x86_64/en-US/firefox-144.0.tar.xz" + "https://archive.mozilla.org/pub/firefox/releases/145.0/linux-x86_64/en-US/firefox-145.0.tar.xz" ], "named_files": { "FIREFOX": "firefox/firefox" @@ -903,9 +905,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "1e444b80921bc999d56c05a7decc1eaf88c0297cac5b90416299af2c77f5ecc9", + "sha256": "1c4556480deac8424049f3081a6de1e2c6de619bab3e8ce53e5a497b8d6d919e", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/144.0/mac/en-US/Firefox%20144.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/145.0/mac/en-US/Firefox%20145.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -920,9 +922,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "1e444b80921bc999d56c05a7decc1eaf88c0297cac5b90416299af2c77f5ecc9", + "sha256": "1c4556480deac8424049f3081a6de1e2c6de619bab3e8ce53e5a497b8d6d919e", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/144.0/mac/en-US/Firefox%20144.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/145.0/mac/en-US/Firefox%20145.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -937,9 +939,9 @@ "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", "ruleClassName": "browser_repo", "attributes": { - "sha256": "d1e8a7c061e25a41c8dfa85e3aee8e86e9263c69104d80906c978c8d0556563a", + "sha256": "4b0345c113242653d923b369fcbd48e3089c57658f8c1542f887c8a375d50306", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/144.0/win64/en-US/Firefox%20Setup%20144.0.exe" + "https://archive.mozilla.org/pub/firefox/releases/145.0/win64/en-US/Firefox%20Setup%20145.0.exe" ], "named_files": { "FIREFOX": "core/firefox.exe" @@ -1139,8 +1141,8 @@ }, "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { - "bzlTransitiveDigest": "Oex83HlYG4+sPr0oUbvldjyP3JnYazq0jAVgUXDx7yU=", - "usagesDigest": "3BeF7a1MDbYZesa8EOSh4Ihre1HMpOUWna9iTCBluY0=", + "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", + "usagesDigest": "6u/wPA8vJI6qkxtlJXv2v5SKQPZ1GrCSLH9fuOW/ay8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -4602,7 +4604,7 @@ "@@yq.bzl~//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", - "usagesDigest": "X+3wxc/+KjF0tyJJ5qca2U/BgoeAEmAD0kuz8iBcX+0=", + "usagesDigest": "d69aUcr/oJv29ydTdFN0JWU618+QzKkxecQFV9S2xjU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From c73363c8c6709a1071b7ca60a17b84a355e05d9b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 19 Nov 2025 11:35:04 +0000 Subject: [PATCH 1838/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 4 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 8 +- .../angular_devkit/build_angular/package.json | 4 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 694 +++++++++--------- 8 files changed, 362 insertions(+), 360 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index fa7810f68892..6239b8ee6313 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.8", + "@vitest/coverage-v8": "4.0.10", "jsdom": "27.2.0", "rxjs": "7.8.2", - "vitest": "4.0.8" + "vitest": "4.0.10" } } diff --git a/package.json b/package.json index 1559dd9b8324..3d4f3f799b1f 100644 --- a/package.json +++ b/package.json @@ -93,8 +93,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.46.4", - "@typescript-eslint/parser": "8.46.4", + "@typescript-eslint/eslint-plugin": "8.47.0", + "@typescript-eslint/parser": "8.47.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 4b24b0cabe3b..847ae092d6df 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,7 +38,7 @@ "picomatch": "4.0.3", "piscina": "5.1.4", "rolldown": "1.0.0-beta.50", - "sass": "1.94.0", + "sass": "1.94.1", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", @@ -57,7 +57,7 @@ "ng-packagr": "21.0.0-rc.1", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.8" + "vitest": "4.0.10" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index db18df264765..4dec4d9f0102 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,15 +27,15 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.21.1", + "@modelcontextprotocol/sdk": "1.22.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.43.0", + "algoliasearch": "5.44.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", - "npm-package-arg": "13.0.1", - "pacote": "21.0.3", + "npm-package-arg": "13.0.2", + "pacote": "21.0.4", "parse5-html-rewriting-stream": "8.0.0", "resolve": "1.22.11", "semver": "7.7.3", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 9cbd58bdddf6..50e2cf4b6a57 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.94.0", + "sass": "1.94.1", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -55,7 +55,7 @@ "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.102.1", + "webpack": "5.103.0", "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 80780f3f1638..be237f6b4023 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.102.1", + "webpack": "5.103.0", "webpack-dev-server": "5.2.2" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 618d45ce52d9..ebdf63c5b59c 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "21.0.0-rc.2", "@angular/compiler-cli": "21.0.0-rc.2", "typescript": "5.9.3", - "webpack": "5.102.1" + "webpack": "5.103.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3ca74ef6ef1..8eec79ac99d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0-rc.2(4c9afee98155400dc203886c5442fc76) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#49d7316da246484759b94f87e6eda47fde86b992 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.21.1) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.22.0) '@angular/platform-browser': specifier: 21.0.0-rc.2 version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.46.4 - version: 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.47.0 + version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.4 - version: 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.47.0 + version: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.8 - version: 4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.10 + version: 4.0.10(vitest@4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -344,8 +344,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.10 + version: 4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -369,7 +369,7 @@ importers: version: 5.1.21(@types/node@24.10.0) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -410,8 +410,8 @@ importers: specifier: 1.0.0-beta.50 version: 1.0.0-beta.50 sass: - specifier: 1.94.0 - version: 1.94.0 + specifier: 1.94.1 + version: 1.94.1 semver: specifier: 7.7.3 version: 7.7.3 @@ -426,7 +426,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.2 - version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -453,8 +453,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.8 - version: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.10 + version: 4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -478,8 +478,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.21.1 - version: 1.21.1 + specifier: 1.22.0 + version: 1.22.0 '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -487,8 +487,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.43.0 - version: 5.43.0 + specifier: 5.44.0 + version: 5.44.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -499,11 +499,11 @@ importers: specifier: 9.0.5 version: 9.0.5 npm-package-arg: - specifier: 13.0.1 - version: 13.0.1 + specifier: 13.0.2 + version: 13.0.2 pacote: - specifier: 21.0.3 - version: 21.0.3 + specifier: 21.0.4 + version: 21.0.4 parse5-html-rewriting-stream: specifier: 8.0.0 version: 8.0.0 @@ -655,16 +655,16 @@ importers: version: 10.4.22(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.27.0)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.0)) browserslist: specifier: ^4.26.0 version: 4.27.0 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.102.1(esbuild@0.27.0)) + version: 13.0.1(webpack@5.103.0(esbuild@0.27.0)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.102.1(esbuild@0.27.0)) + version: 7.1.2(webpack@5.103.0(esbuild@0.27.0)) esbuild-wasm: specifier: 0.27.0 version: 0.27.0 @@ -685,16 +685,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.27.0)) + version: 12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.0)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.102.1(esbuild@0.27.0)) + version: 4.0.2(webpack@5.103.0(esbuild@0.27.0)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.102.1(esbuild@0.27.0)) + version: 2.9.4(webpack@5.103.0(esbuild@0.27.0)) open: specifier: 10.2.0 version: 10.2.0 @@ -712,7 +712,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.27.0)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.0)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -720,17 +720,17 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.94.0 - version: 1.94.0 + specifier: 1.94.1 + version: 1.94.1 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.94.0)(webpack@5.102.1(esbuild@0.27.0)) + version: 16.0.6(sass@1.94.1)(webpack@5.103.0(esbuild@0.27.0)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.102.1(esbuild@0.27.0)) + version: 5.0.0(webpack@5.103.0(esbuild@0.27.0)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -747,20 +747,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.27.0) + specifier: 5.103.0 + version: 5.103.0(esbuild@0.27.0) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.102.1(esbuild@0.27.0)) + version: 7.4.5(webpack@5.103.0(esbuild@0.27.0)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.0)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.102.1(esbuild@0.27.0)) + version: 5.1.0(webpack@5.103.0(esbuild@0.27.0)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -798,11 +798,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.27.0) + specifier: 5.103.0 + version: 5.103.0(esbuild@0.27.0) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.0)) packages/angular_devkit/core: dependencies: @@ -880,8 +880,8 @@ importers: specifier: 5.9.3 version: 5.9.3 webpack: - specifier: 5.102.1 - version: 5.102.1(esbuild@0.27.0) + specifier: 5.103.0 + version: 5.103.0(esbuild@0.27.0) packages/schematics/angular: dependencies: @@ -924,60 +924,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.9.0': - resolution: {integrity: sha512-4q9QCxFPiDIx1n5w41A1JMkrXI8p0ugCQnCGFtCKZPmWtwgWCqwVRncIbp++81xSELFZVQUfiB7Kbsla1tIBSw==} + '@algolia/abtesting@1.10.0': + resolution: {integrity: sha512-mQT3jwuTgX8QMoqbIR7mPlWkqQqBPQaPabQzm37xg2txMlaMogK/4hCiiESGdg39MlHZOVHeV+0VJuE7f5UK8A==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.43.0': - resolution: {integrity: sha512-YsKYkohIMxiYEAu8nppZi5EioYDUIo9Heoor8K8vMUnkUtGCOEU/Q4p5OWaYSSBx3evo09Ga9rG4jsKViIcDzQ==} + '@algolia/client-abtesting@5.44.0': + resolution: {integrity: sha512-KY5CcrWhRTUo/lV7KcyjrZkPOOF9bjgWpMj9z98VA+sXzVpZtkuskBLCKsWYFp2sbwchZFTd3wJM48H0IGgF7g==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.43.0': - resolution: {integrity: sha512-kDGJWt3nzf0nu5RPFXQhNGl6Q0cn35fazxVWXhd0Fw3Vo6gcVfrcezcBenHb66laxnVJ7uwr1uKhmsu3Wy25sQ==} + '@algolia/client-analytics@5.44.0': + resolution: {integrity: sha512-LKOCE8S4ewI9bN3ot9RZoYASPi8b78E918/DVPW3HHjCMUe6i+NjbNG6KotU4RpP6AhRWZjjswbOkWelUO+OoA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.43.0': - resolution: {integrity: sha512-RAFipkAnI8xhL/Sgi/gpXgNWN5HDM6F7z4NNNOcI8ZMYysZEBsqVXojg/WdKEKkQCOHVTZ3mooIjc5BaQdyVtA==} + '@algolia/client-common@5.44.0': + resolution: {integrity: sha512-1yyJm4OYC2cztbS28XYVWwLXdwpLsMG4LoZLOltVglQ2+hc/i9q9fUDZyjRa2Bqt4DmkIfezagfMrokhyH4uxQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.43.0': - resolution: {integrity: sha512-PmVs83THco8Qig3cAjU9a5eAGaSxsfgh7PdmWMQFE/MCmIcLPv0MVpgfcGGyPjZGYvPC4cg+3q7JJxcNSsEaTg==} + '@algolia/client-insights@5.44.0': + resolution: {integrity: sha512-wVQWK6jYYsbEOjIMI+e5voLGPUIbXrvDj392IckXaCPvQ6vCMTXakQqOYCd+znQdL76S+3wHDo77HZWiAYKrtA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.43.0': - resolution: {integrity: sha512-Bs4zMLXvkAr19FSOZWNizlNUpRFxZVxtvyEJ+q3n3+hPZUcKjo0LIh15qghhRcQPEihjBN6Gr/U+AqRfOCsvnA==} + '@algolia/client-personalization@5.44.0': + resolution: {integrity: sha512-lkgRjOjOkqmIkebHjHpU9rLJcJNUDMm+eVSW/KJQYLjGqykEZxal+nYJJTBbLceEU2roByP/+27ZmgIwCdf0iA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.43.0': - resolution: {integrity: sha512-pwHv+z8TZAKbwAWt9+v2gIqlqcCFiMdteTdgdPn2yOBRx4WUQdsIWAaG9GiV3by8jO51FuFQnTohhauuI63y3A==} + '@algolia/client-query-suggestions@5.44.0': + resolution: {integrity: sha512-sYfhgwKu6NDVmZHL1WEKVLsOx/jUXCY4BHKLUOcYa8k4COCs6USGgz6IjFkUf+niwq8NCECMmTC4o/fVQOalsA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.43.0': - resolution: {integrity: sha512-wKy6x6fKcnB1CsfeNNdGp4dzLzz04k8II3JLt6Sp81F8s57Ks3/K9qsysmL9SJa8P486s719bBttVLE8JJYurQ==} + '@algolia/client-search@5.44.0': + resolution: {integrity: sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.43.0': - resolution: {integrity: sha512-TA21h2KwqCUyPXhSAWF3R2UES/FAnzjaVPDI6cRPXeadX+pdrGN0GWat5gSUATJVcMHECn+lGvuMMRxO86o2Pg==} + '@algolia/ingestion@1.44.0': + resolution: {integrity: sha512-5+S5ynwMmpTpCLXGjTDpeIa81J+R4BLH0lAojOhmeGSeGEHQTqacl/4sbPyDTcidvnWhaqtyf8m42ue6lvISAw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.43.0': - resolution: {integrity: sha512-rvWVEiA1iLcFmHS3oIXGIBreHIxNZqEFDjiNyRtLEffgd62kul2DjXM7H5bOouDMTo1ywMWT9OeQnzrhlTGAwA==} + '@algolia/monitoring@1.44.0': + resolution: {integrity: sha512-xhaTN8pXJjR6zkrecg4Cc9YZaQK2LKm2R+LkbAq+AYGBCWJxtSGlNwftozZzkUyq4AXWoyoc0x2SyBtq5LRtqQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.43.0': - resolution: {integrity: sha512-scCijGd38npvH2uHbYhO4f1SR8It5R2FZqOjNcMfw/7Ph7Hxvl+cd7Mo6RzIxsNRcLW5RrwjtpTK3gpDe8r/WQ==} + '@algolia/recommend@5.44.0': + resolution: {integrity: sha512-GNcite/uOIS7wgRU1MT7SdNIupGSW+vbK9igIzMePvD2Dl8dy0O3urKPKIbTuZQqiVH1Cb84y5cgLvwNrdCj/Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.43.0': - resolution: {integrity: sha512-jMkRLWJYr4Hcmpl89e4vIWs69Mkf8Uwx7MG5ZKk2UxW3G3TmouGjI0Ph5mVPmg3Jf1UG3AdmVDc4XupzycT1Jw==} + '@algolia/requester-browser-xhr@5.44.0': + resolution: {integrity: sha512-YZHBk72Cd7pcuNHzbhNzF/FbbYszlc7JhZlDyQAchnX5S7tcemSS96F39Sy8t4O4WQLpFvUf1MTNedlitWdOsQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.43.0': - resolution: {integrity: sha512-KyQiVz+HdYtissC0J9KIGhHhKytQyJX+82GVsbv5rSCXbETnAoojvUyCn+3KRtWUvMDYCsZ+Y7hM71STTUJUJg==} + '@algolia/requester-fetch@5.44.0': + resolution: {integrity: sha512-B9WHl+wQ7uf46t9cq+vVM/ypVbOeuldVDq9OtKsX2ApL2g/htx6ImB9ugDOOJmB5+fE31/XPTuCcYz/j03+idA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.43.0': - resolution: {integrity: sha512-UnUBNY0U+oT0bkYDsEqVsCkErC2w7idk4CRiLSzicqY8tGylD9oP0j13X/fse1CuiAFCCr3jfl+cBlN6dC0OFw==} + '@algolia/requester-node-http@5.44.0': + resolution: {integrity: sha512-MULm0qeAIk4cdzZ/ehJnl1o7uB5NMokg83/3MKhPq0Pk7+I0uELGNbzIfAkvkKKEYcHALemKdArtySF9eKzh/A==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -2630,8 +2630,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.21.1': - resolution: {integrity: sha512-UyLFcJLDvUuZbGnaQqXFT32CpPpGj7VS19roLut6gkQVhb439xUzYWbsUvdI3ZPL+2hnFosuugtYWE0Mcs1rmQ==} + '@modelcontextprotocol/sdk@1.22.0': + resolution: {integrity: sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -2817,9 +2817,9 @@ packages: resolution: {integrity: sha512-vnz7BVGtOctJAIHouCJdvWBhsTVSICMeUgZo2c7XAi5d5Rrl80S1H7oPym7K03cRuinK5Q6s2dw36+PgXQTcMA==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/installed-package-contents@3.0.0': - resolution: {integrity: sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/installed-package-contents@4.0.0': + resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true '@npmcli/node-gyp@5.0.0': @@ -3860,39 +3860,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.46.4': - resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==} + '@typescript-eslint/eslint-plugin@8.47.0': + resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.4 + '@typescript-eslint/parser': ^8.47.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.4': - resolution: {integrity: sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==} + '@typescript-eslint/parser@8.47.0': + resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.4': - resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==} + '@typescript-eslint/project-service@8.47.0': + resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.4': - resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} + '@typescript-eslint/scope-manager@8.47.0': + resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.4': - resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} + '@typescript-eslint/tsconfig-utils@8.47.0': + resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.4': - resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==} + '@typescript-eslint/type-utils@8.47.0': + resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3902,25 +3902,25 @@ packages: resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.46.4': - resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} + '@typescript-eslint/types@8.47.0': + resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.4': - resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} + '@typescript-eslint/typescript-estree@8.47.0': + resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.4': - resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} + '@typescript-eslint/utils@8.47.0': + resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.4': - resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} + '@typescript-eslint/visitor-keys@8.47.0': + resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.24': @@ -4008,20 +4008,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.8': - resolution: {integrity: sha512-wQgmtW6FtPNn4lWUXi8ZSYLpOIb92j3QCujxX3sQ81NTfQ/ORnE0HtK7Kqf2+7J9jeveMGyGyc4NWc5qy3rC4A==} + '@vitest/coverage-v8@4.0.10': + resolution: {integrity: sha512-g+brmtoKa/sAeIohNJnnWhnHtU6GuqqVOSQ4SxDIPcgZWZyhJs5RmF5LpqXs8Kq64lANP+vnbn5JLzhLj/G56g==} peerDependencies: - '@vitest/browser': 4.0.8 - vitest: 4.0.8 + '@vitest/browser': 4.0.10 + vitest: 4.0.10 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.8': - resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} + '@vitest/expect@4.0.10': + resolution: {integrity: sha512-3QkTX/lK39FBNwARCQRSQr0TP9+ywSdxSX+LgbJ2M1WmveXP72anTbnp2yl5fH+dU6SUmBzNMrDHs80G8G2DZg==} - '@vitest/mocker@4.0.8': - resolution: {integrity: sha512-9FRM3MZCedXH3+pIh+ME5Up2NBBHDq0wqwhOKkN4VnvCiKbVxddqH9mSGPZeawjd12pCOGnl+lo/ZGHt0/dQSg==} + '@vitest/mocker@4.0.10': + resolution: {integrity: sha512-e2OfdexYkjkg8Hh3L9NVEfbwGXq5IZbDovkf30qW2tOh7Rh9sVtmSr2ztEXOFbymNxS4qjzLXUQIvATvN4B+lg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4031,20 +4031,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.8': - resolution: {integrity: sha512-qRrjdRkINi9DaZHAimV+8ia9Gq6LeGz2CgIEmMLz3sBDYV53EsnLZbJMR1q84z1HZCMsf7s0orDgZn7ScXsZKg==} + '@vitest/pretty-format@4.0.10': + resolution: {integrity: sha512-99EQbpa/zuDnvVjthwz5bH9o8iPefoQZ63WV8+bsRJZNw3qQSvSltfut8yu1Jc9mqOYi7pEbsKxYTi/rjaq6PA==} - '@vitest/runner@4.0.8': - resolution: {integrity: sha512-mdY8Sf1gsM8hKJUQfiPT3pn1n8RF4QBcJYFslgWh41JTfrK1cbqY8whpGCFzBl45LN028g0njLCYm0d7XxSaQQ==} + '@vitest/runner@4.0.10': + resolution: {integrity: sha512-EXU2iSkKvNwtlL8L8doCpkyclw0mc/t4t9SeOnfOFPyqLmQwuceMPA4zJBa6jw0MKsZYbw7kAn+gl7HxrlB8UQ==} - '@vitest/snapshot@4.0.8': - resolution: {integrity: sha512-Nar9OTU03KGiubrIOFhcfHg8FYaRaNT+bh5VUlNz8stFhCZPNrJvmZkhsr1jtaYvuefYFwK2Hwrq026u4uPWCw==} + '@vitest/snapshot@4.0.10': + resolution: {integrity: sha512-2N4X2ZZl7kZw0qeGdQ41H0KND96L3qX1RgwuCfy6oUsF2ISGD/HpSbmms+CkIOsQmg2kulwfhJ4CI0asnZlvkg==} - '@vitest/spy@4.0.8': - resolution: {integrity: sha512-nvGVqUunyCgZH7kmo+Ord4WgZ7lN0sOULYXUOYuHr55dvg9YvMz3izfB189Pgp28w0vWFbEEfNc/c3VTrqrXeA==} + '@vitest/spy@4.0.10': + resolution: {integrity: sha512-AsY6sVS8OLb96GV5RoG8B6I35GAbNrC49AO+jNRF9YVGb/g9t+hzNm1H6kD0NDp8tt7VJLs6hb7YMkDXqu03iw==} - '@vitest/utils@4.0.8': - resolution: {integrity: sha512-pdk2phO5NDvEFfUTxcTP8RFYjVj/kfLSPIN5ebP2Mu9kcIMeAQTbknqcFEyBcC4z2pJlJI9aS5UQjcYfhmKAow==} + '@vitest/utils@4.0.10': + resolution: {integrity: sha512-kOuqWnEwZNtQxMKg3WmPK1vmhZu9WcoX69iwWjVz+jvKTsF1emzsv3eoPcDr6ykA3qP2bsCQE7CwqfNtAVzsmg==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -4236,8 +4236,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.43.0: - resolution: {integrity: sha512-hbkK41JsuGYhk+atBDxlcKxskjDCh3OOEDpdKZPtw+3zucBqhlojRG5e5KtCmByGyYvwZswVeaSWglgLn2fibg==} + algoliasearch@5.44.0: + resolution: {integrity: sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -4677,8 +4677,8 @@ packages: caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - chai@6.2.0: - resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} + chai@6.2.1: + resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} engines: {node: '>=18'} chalk-template@0.4.0: @@ -7258,24 +7258,20 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - npm-bundled@4.0.0: - resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} - engines: {node: ^18.17.0 || >=20.5.0} + npm-bundled@5.0.0: + resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} + engines: {node: ^20.17.0 || >=22.9.0} npm-install-checks@8.0.0: resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} engines: {node: ^20.17.0 || >=22.9.0} - npm-normalize-package-bin@4.0.0: - resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} - engines: {node: ^18.17.0 || >=20.5.0} - npm-normalize-package-bin@5.0.0: resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} engines: {node: ^20.17.0 || >=22.9.0} - npm-package-arg@13.0.1: - resolution: {integrity: sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==} + npm-package-arg@13.0.2: + resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} engines: {node: ^20.17.0 || >=22.9.0} npm-packlist@10.0.3: @@ -7458,8 +7454,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pacote@21.0.3: - resolution: {integrity: sha512-itdFlanxO0nmQv4ORsvA9K1wv40IPfB9OmWqfaJWvoJ30VKyHsqNgDVeG+TVhI7Gk7XW8slUy7cA9r6dF5qohw==} + pacote@21.0.4: + resolution: {integrity: sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true @@ -8073,8 +8069,8 @@ packages: webpack: optional: true - sass@1.94.0: - resolution: {integrity: sha512-Dqh7SiYcaFtdv5Wvku6QgS5IGPm281L+ZtVD1U2FJa7Q0EFRlq8Z3sjYtz6gYObsYThUOz9ArwFqPZx+1azILQ==} + sass@1.94.1: + resolution: {integrity: sha512-/YVm5FRQaRlr3oNh2LLFYne1PdPlRZGyKnHh1sLleOqLcohTR4eUUvBjBIqkl1fEXd1MGOHgzJGJh+LgTtV4KQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -8345,6 +8341,10 @@ packages: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} + ssri@13.0.0: + resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} + engines: {node: ^20.17.0 || >=22.9.0} + stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -8873,9 +8873,9 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@6.0.2: - resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} - engines: {node: ^18.17.0 || >=20.5.0} + validate-npm-package-name@7.0.0: + resolution: {integrity: sha512-bwVk/OK+Qu108aJcMAEiU4yavHUI7aN20TgZNBj9MR2iU1zPUl1Z1Otr7771ExfYTPTvfN8ZJ1pbr5Iklgt4xg==} + engines: {node: ^20.17.0 || >=22.9.0} validator@13.15.15: resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} @@ -8946,18 +8946,18 @@ packages: yaml: optional: true - vitest@4.0.8: - resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} + vitest@4.0.10: + resolution: {integrity: sha512-2Fqty3MM9CDwOVet/jaQalYlbcjATZwPYGcqpiYQqgQ/dLC7GuHdISKgTYIVF/kaishKxLzleKWWfbSDklyIKg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.8 - '@vitest/browser-preview': 4.0.8 - '@vitest/browser-webdriverio': 4.0.8 - '@vitest/ui': 4.0.8 + '@vitest/browser-playwright': 4.0.10 + '@vitest/browser-preview': 4.0.10 + '@vitest/browser-webdriverio': 4.0.10 + '@vitest/ui': 4.0.10 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9068,8 +9068,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.102.1: - resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} + webpack@5.103.0: + resolution: {integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -9371,89 +9371,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.9.0': + '@algolia/abtesting@1.10.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-abtesting@5.43.0': + '@algolia/client-abtesting@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-analytics@5.43.0': + '@algolia/client-analytics@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-common@5.43.0': {} + '@algolia/client-common@5.44.0': {} - '@algolia/client-insights@5.43.0': + '@algolia/client-insights@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-personalization@5.43.0': + '@algolia/client-personalization@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-query-suggestions@5.43.0': + '@algolia/client-query-suggestions@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/client-search@5.43.0': + '@algolia/client-search@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/ingestion@1.43.0': + '@algolia/ingestion@1.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/monitoring@1.43.0': + '@algolia/monitoring@1.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/recommend@5.43.0': + '@algolia/recommend@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 - '@algolia/requester-browser-xhr@5.43.0': + '@algolia/requester-browser-xhr@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 + '@algolia/client-common': 5.44.0 - '@algolia/requester-fetch@5.43.0': + '@algolia/requester-fetch@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 + '@algolia/client-common': 5.44.0 - '@algolia/requester-node-http@5.43.0': + '@algolia/requester-node-http@5.44.0': dependencies: - '@algolia/client-common': 5.43.0 + '@algolia/client-common': 5.44.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9537,11 +9537,11 @@ 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/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.21.1)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.22.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.29.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.29.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 7.10.0(@types/node@24.10.0) '@inquirer/type': 3.0.10(@types/node@24.10.0) '@octokit/auth-app': 8.1.2 @@ -11017,12 +11017,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.29.0(@modelcontextprotocol/sdk@1.21.1)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.29.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.21.1 + '@modelcontextprotocol/sdk': 1.22.0 transitivePeerDependencies: - bufferutil - supports-color @@ -11328,7 +11328,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.21.1': + '@modelcontextprotocol/sdk@1.22.0': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11499,10 +11499,10 @@ snapshots: semver: 7.7.3 which: 5.0.0 - '@npmcli/installed-package-contents@3.0.0': + '@npmcli/installed-package-contents@4.0.0': dependencies: - npm-bundled: 4.0.0 - npm-normalize-package-bin: 4.0.0 + npm-bundled: 5.0.0 + npm-normalize-package-bin: 5.0.0 '@npmcli/node-gyp@5.0.0': {} @@ -12318,7 +12318,7 @@ snapshots: '@types/loader-utils@3.0.0(esbuild@0.27.0)': dependencies: '@types/node': 22.19.0 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12468,14 +12468,14 @@ snapshots: '@types/node': 22.19.0 optional: true - '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.47.0 eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12485,41 +12485,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.47.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': + '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) + '@typescript-eslint/types': 8.47.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.4': + '@typescript-eslint/scope-manager@8.47.0': dependencies: - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/visitor-keys': 8.47.0 - '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12529,14 +12529,14 @@ snapshots: '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/types@8.46.4': {} + '@typescript-eslint/types@8.47.0': {} - '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 + '@typescript-eslint/project-service': 8.47.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/visitor-keys': 8.47.0 debug: 4.4.3(supports-color@10.2.2) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -12547,20 +12547,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.4': + '@typescript-eslint/visitor-keys@8.47.0': dependencies: - '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/types': 8.47.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.24': @@ -12723,14 +12723,14 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.8(vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.10(vitest@4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.10 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -12740,47 +12740,47 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.8': + '@vitest/expect@4.0.10': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.8 - '@vitest/utils': 4.0.8 - chai: 6.2.0 + '@vitest/spy': 4.0.10 + '@vitest/utils': 4.0.10 + chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.10(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.8 + '@vitest/spy': 4.0.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.8': + '@vitest/pretty-format@4.0.10': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.8': + '@vitest/runner@4.0.10': dependencies: - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.10 pathe: 2.0.3 - '@vitest/snapshot@4.0.8': + '@vitest/snapshot@4.0.10': dependencies: - '@vitest/pretty-format': 4.0.8 + '@vitest/pretty-format': 4.0.10 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.8': {} + '@vitest/spy@4.0.10': {} - '@vitest/utils@4.0.8': + '@vitest/utils@4.0.10': dependencies: - '@vitest/pretty-format': 4.0.8 + '@vitest/pretty-format': 4.0.10 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -13120,22 +13120,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.43.0: - dependencies: - '@algolia/abtesting': 1.9.0 - '@algolia/client-abtesting': 5.43.0 - '@algolia/client-analytics': 5.43.0 - '@algolia/client-common': 5.43.0 - '@algolia/client-insights': 5.43.0 - '@algolia/client-personalization': 5.43.0 - '@algolia/client-query-suggestions': 5.43.0 - '@algolia/client-search': 5.43.0 - '@algolia/ingestion': 1.43.0 - '@algolia/monitoring': 1.43.0 - '@algolia/recommend': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + algoliasearch@5.44.0: + dependencies: + '@algolia/abtesting': 1.10.0 + '@algolia/client-abtesting': 5.44.0 + '@algolia/client-analytics': 5.44.0 + '@algolia/client-common': 5.44.0 + '@algolia/client-insights': 5.44.0 + '@algolia/client-personalization': 5.44.0 + '@algolia/client-query-suggestions': 5.44.0 + '@algolia/client-search': 5.44.0 + '@algolia/ingestion': 1.44.0 + '@algolia/monitoring': 1.44.0 + '@algolia/recommend': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 ansi-colors@4.1.3: {} @@ -13300,11 +13300,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.102.1(esbuild@0.27.0)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.0)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13650,7 +13650,7 @@ snapshots: caseless@0.12.0: {} - chai@6.2.0: {} + chai@6.2.1: {} chalk-template@0.4.0: dependencies: @@ -13906,14 +13906,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.102.1(esbuild@0.27.0)): + copy-webpack-plugin@13.0.1(webpack@5.103.0(esbuild@0.27.0)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) core-js-compat@3.46.0: dependencies: @@ -13957,7 +13957,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.102.1(esbuild@0.27.0)): + css-loader@7.1.2(webpack@5.103.0(esbuild@0.27.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13968,7 +13968,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) css-select@6.0.0: dependencies: @@ -14506,11 +14506,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14520,7 +14520,7 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14531,7 +14531,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14543,7 +14543,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16104,11 +16104,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.102.1(esbuild@0.27.0)): + less-loader@12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.0)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) less@4.4.2: dependencies: @@ -16129,11 +16129,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.102.1(esbuild@0.27.0)): + license-webpack-plugin@4.0.2(webpack@5.103.0(esbuild@0.27.0)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) lie@3.3.0: dependencies: @@ -16394,11 +16394,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1(esbuild@0.27.0)): + mini-css-extract-plugin@2.9.4(webpack@5.103.0(esbuild@0.27.0)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) minimalistic-assert@1.0.1: {} @@ -16552,7 +16552,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.53.2)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.94.0 + sass: 1.94.1 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -16629,24 +16629,22 @@ snapshots: normalize-url@6.1.0: {} - npm-bundled@4.0.0: + npm-bundled@5.0.0: dependencies: - npm-normalize-package-bin: 4.0.0 + npm-normalize-package-bin: 5.0.0 npm-install-checks@8.0.0: dependencies: semver: 7.7.3 - npm-normalize-package-bin@4.0.0: {} - npm-normalize-package-bin@5.0.0: {} - npm-package-arg@13.0.1: + npm-package-arg@13.0.2: dependencies: hosted-git-info: 9.0.2 - proc-log: 5.0.0 + proc-log: 6.0.0 semver: 7.7.3 - validate-npm-package-name: 6.0.2 + validate-npm-package-name: 7.0.0 npm-packlist@10.0.3: dependencies: @@ -16657,7 +16655,7 @@ snapshots: dependencies: npm-install-checks: 8.0.0 npm-normalize-package-bin: 5.0.0 - npm-package-arg: 13.0.1 + npm-package-arg: 13.0.2 semver: 7.7.3 npm-registry-fetch@19.1.0: @@ -16668,7 +16666,7 @@ snapshots: minipass: 7.1.2 minipass-fetch: 4.0.1 minizlib: 3.1.0 - npm-package-arg: 13.0.1 + npm-package-arg: 13.0.2 proc-log: 5.0.0 transitivePeerDependencies: - supports-color @@ -16862,24 +16860,24 @@ snapshots: package-json-from-dist@1.0.1: {} - pacote@21.0.3: + pacote@21.0.4: dependencies: '@npmcli/git': 7.0.0 - '@npmcli/installed-package-contents': 3.0.0 + '@npmcli/installed-package-contents': 4.0.0 '@npmcli/package-json': 7.0.1 - '@npmcli/promise-spawn': 8.0.3 + '@npmcli/promise-spawn': 9.0.0 '@npmcli/run-script': 10.0.2 cacache: 20.0.1 fs-minipass: 3.0.3 minipass: 7.1.2 - npm-package-arg: 13.0.1 + npm-package-arg: 13.0.2 npm-packlist: 10.0.3 npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.1.0 - proc-log: 5.0.0 + proc-log: 6.0.0 promise-retry: 2.0.1 sigstore: 4.0.0 - ssri: 12.0.0 + ssri: 13.0.0 tar: 7.5.2 transitivePeerDependencies: - supports-color @@ -17029,14 +17027,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.27.0)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.0)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) transitivePeerDependencies: - typescript @@ -17629,14 +17627,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.94.0)(webpack@5.102.1(esbuild@0.27.0)): + sass-loader@16.0.6(sass@1.94.1)(webpack@5.103.0(esbuild@0.27.0)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.94.0 - webpack: 5.102.1(esbuild@0.27.0) + sass: 1.94.1 + webpack: 5.103.0(esbuild@0.27.0) - sass@1.94.0: + sass@1.94.1: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -17947,11 +17945,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.102.1(esbuild@0.27.0)): + source-map-loader@5.0.0(webpack@5.103.0(esbuild@0.27.0)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) source-map-support@0.4.18: dependencies: @@ -18038,6 +18036,10 @@ snapshots: dependencies: minipass: 7.1.2 + ssri@13.0.0: + dependencies: + minipass: 7.1.2 + stack-trace@0.0.10: {} stackback@0.0.2: {} @@ -18243,14 +18245,14 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.27.0)(webpack@5.102.1(esbuild@0.27.0)): + terser-webpack-plugin@5.3.14(esbuild@0.27.0)(webpack@5.103.0(esbuild@0.27.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) optionalDependencies: esbuild: 0.27.0 @@ -18587,7 +18589,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@6.0.2: {} + validate-npm-package-name@7.0.0: {} validator@13.15.15: {} @@ -18667,7 +18669,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18680,20 +18682,20 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.94.0 + sass: 1.94.1 terser: 5.44.1 tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.8(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.8 - '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.8 - '@vitest/runner': 4.0.8 - '@vitest/snapshot': 4.0.8 - '@vitest/spy': 4.0.8 - '@vitest/utils': 4.0.8 + '@vitest/expect': 4.0.10 + '@vitest/mocker': 4.0.10(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.10 + '@vitest/runner': 4.0.10 + '@vitest/snapshot': 4.0.10 + '@vitest/spy': 4.0.10 + '@vitest/utils': 4.0.10 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 @@ -18705,7 +18707,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.0)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.0 @@ -18773,7 +18775,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.102.1(esbuild@0.27.0)): + webpack-dev-middleware@7.4.5(webpack@5.103.0(esbuild@0.27.0)): dependencies: colorette: 2.0.20 memfs: 4.50.0 @@ -18782,9 +18784,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.102.1(esbuild@0.27.0)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18812,10 +18814,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1(esbuild@0.27.0)) + webpack-dev-middleware: 7.4.5(webpack@5.103.0(esbuild@0.27.0)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) transitivePeerDependencies: - bufferutil - debug @@ -18830,12 +18832,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.102.1(esbuild@0.27.0)): + webpack-subresource-integrity@5.1.0(webpack@5.103.0(esbuild@0.27.0)): dependencies: typed-assert: 1.0.9 - webpack: 5.102.1(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.0) - webpack@5.102.1(esbuild@0.27.0): + webpack@5.103.0(esbuild@0.27.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18859,7 +18861,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.27.0)(webpack@5.102.1(esbuild@0.27.0)) + terser-webpack-plugin: 5.3.14(esbuild@0.27.0)(webpack@5.103.0(esbuild@0.27.0)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From c9597b96dd3a0115c2fde2c053eb1ed49aa2b655 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 17 Nov 2025 05:06:21 +0000 Subject: [PATCH 1839/2162] build: update dependency @eslint/compat to v2 See associated pull request for more information. --- package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 3d4f3f799b1f..dca37475ef3d 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", - "@eslint/compat": "1.4.1", + "@eslint/compat": "2.0.0", "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.39.1", "@rollup/plugin-alias": "^6.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8eec79ac99d6..96f278a7e86d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: 8.2.1 version: 8.2.1 '@eslint/compat': - specifier: 1.4.1 - version: 1.4.1(eslint@9.39.1(jiti@2.6.1)) + specifier: 2.0.0 + version: 2.0.0(eslint@9.39.1(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.1 version: 3.3.1 @@ -2024,9 +2024,9 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.4.1': - resolution: {integrity: sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/compat@2.0.0': + resolution: {integrity: sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^8.40 || 9 peerDependenciesMeta: @@ -2045,6 +2045,10 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.0.0': + resolution: {integrity: sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -10591,9 +10595,9 @@ snapshots: '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.1(eslint@9.39.1(jiti@2.6.1))': + '@eslint/compat@2.0.0(eslint@9.39.1(jiti@2.6.1))': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.0.0 optionalDependencies: eslint: 9.39.1(jiti@2.6.1) @@ -10613,6 +10617,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@1.0.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 From 3ceff5bf7187b23bd04388a4029c790fc683476f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 17 Nov 2025 05:06:35 +0000 Subject: [PATCH 1840/2162] build: update dependency open to v11 See associated pull request for more information. --- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 47 ++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 50e2cf4b6a57..8839e0300f34 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -38,7 +38,7 @@ "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", "mini-css-extract-plugin": "2.9.4", - "open": "10.2.0", + "open": "11.0.0", "ora": "9.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96f278a7e86d..f304cbcf97b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -696,8 +696,8 @@ importers: specifier: 2.9.4 version: 2.9.4(webpack@5.103.0(esbuild@0.27.0)) open: - specifier: 10.2.0 - version: 10.2.0 + specifier: 11.0.0 + version: 11.0.0 ora: specifier: 9.0.0 version: 9.0.0 @@ -5122,6 +5122,10 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} + engines: {node: '>=18'} + default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -6323,6 +6327,10 @@ packages: resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} engines: {node: '>=0.10.0'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -7369,6 +7377,10 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -7671,6 +7683,10 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -9237,6 +9253,10 @@ packages: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} + wsl-utils@0.3.0: + resolution: {integrity: sha512-3sFIGLiaDP7rTO4xh3g+b3AzhYDIUGGywE/WsmqzJWDxus5aJXVnPTNC/6L+r2WzrwXqVOdD262OaO+cEyPMSQ==} + engines: {node: '>=20'} + xhr2@0.2.1: resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} engines: {node: '>= 6'} @@ -14093,6 +14113,11 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 + default-browser@5.4.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + default-gateway@6.0.3: dependencies: execa: 5.1.1 @@ -15607,6 +15632,8 @@ snapshots: is-gzip@1.0.0: {} + is-in-ssh@1.0.0: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -16761,6 +16788,15 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 + open@11.0.0: + dependencies: + default-browser: 5.4.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -17082,6 +17118,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + powershell-utils@0.1.0: {} + prelude-ls@1.2.1: {} prettier@3.6.2: {} @@ -19026,6 +19064,11 @@ snapshots: dependencies: is-wsl: 3.1.0 + wsl-utils@0.3.0: + dependencies: + is-wsl: 3.1.0 + powershell-utils: 0.1.0 + xhr2@0.2.1: {} xml-name-validator@5.0.0: {} From 3020b5066a8a41d051f2254205929648529a8daa Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 18 Nov 2025 23:03:09 -0500 Subject: [PATCH 1841/2162] fix(@angular/build): correct Vitest coverage path resolution for JSDOM on Windows This commit addresses an issue where Vitest coverage reports were incomplete on Windows when using the JSDOM test environment. The root cause is an improperly formatted absolute path that can result from manually converting a file URL back to a path on Windows, leading to a superfluous leading slash (e.g., '/D:/path' instead of 'D:/path'). The 'angular:test-in-memory-provider' plugin now explicitly detects and removes this leading slash from absolute Windows paths, thereby correcting the path format and enabling proper source file mapping for coverage collection. --- .../unit-test/runners/vitest/plugins.ts | 27 +++++++++++++++++++ .../tests/vitest/larger-project-coverage.ts | 16 +++++------ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index d614d16f97b8..93ef7cfb9f85 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -9,6 +9,7 @@ import assert from 'node:assert'; import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; +import { platform } from 'node:os'; import path from 'node:path'; import type { BrowserConfigOptions, @@ -173,6 +174,7 @@ async function loadResultFile(file: ResultFile): Promise { export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins { const { workspaceRoot, buildResultFiles, testFileToEntryPoint } = pluginOptions; + const isWindows = platform() === 'win32'; return [ { @@ -184,6 +186,31 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins return id; } + // Workaround for Vitest in Windows when a fully qualified absolute path is provided with + // a superfluous leading slash. This can currently occur with the `@vitest/coverage-v8` provider + // when it uses `removeStartsWith(url, FILE_PROTOCOL)` to convert a file URL resulting in + // `/D:/tmp_dir/...` instead of `D:/tmp_dir/...`. + if (id[0] === '/' && isWindows) { + const slicedId = id.slice(1); + if (path.isAbsolute(slicedId)) { + return slicedId; + } + } + + if (importer && (id[0] === '.' || id[0] === '/')) { + let fullPath; + if (testFileToEntryPoint.has(importer)) { + fullPath = toPosixPath(path.join(workspaceRoot, id)); + } else { + fullPath = toPosixPath(path.join(path.dirname(importer), id)); + } + + const relativePath = path.relative(workspaceRoot, fullPath); + if (buildResultFiles.has(toPosixPath(relativePath))) { + return fullPath; + } + } + // Determine the base directory for resolution. let baseDir: string; if (importer) { diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts index 4b5d5cc72bfa..3594bdc7dfee 100644 --- a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts +++ b/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts @@ -36,16 +36,12 @@ export default async function () { const { stdout: jsdomStdout } = await ng('test', '--no-watch', '--coverage'); assert.match(jsdomStdout, expectedMessage, `Expected ${totalTests} tests to pass in JSDOM mode.`); - // TODO: Investigate why coverage-final.json is empty on Windows in JSDOM mode. - // For now, skip the coverage report check on Windows. - if (process.platform !== 'win32') { - // Assert that every generated file is in the coverage report by reading the JSON output. - const jsdomSummary = JSON.parse(await readFile(coverageJsonPath)); - const jsdomSummaryKeys = Object.keys(jsdomSummary); - for (const file of generatedFiles) { - const found = jsdomSummaryKeys.some((key) => key.endsWith(file)); - assert.ok(found, `Expected ${file} to be in the JSDOM coverage report.`); - } + // Assert that every generated file is in the coverage report by reading the JSON output. + const jsdomSummary = JSON.parse(await readFile(coverageJsonPath)); + const jsdomSummaryKeys = Object.keys(jsdomSummary); + for (const file of generatedFiles) { + const found = jsdomSummaryKeys.some((key) => key.endsWith(file)); + assert.ok(found, `Expected ${file} to be in the JSDOM coverage report.`); } // Setup for browser mode From b10ee0fa6fa29d8fcc6d5e6cac89fbfcc4ab8d0b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 20 Nov 2025 00:49:48 +0000 Subject: [PATCH 1842/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 28 +- package.json | 28 +- packages/angular/build/package.json | 2 +- packages/angular/ssr/package.json | 12 +- .../angular_devkit/build_angular/package.json | 2 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 992 +++++++++++------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 15 files changed, 733 insertions(+), 479 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 6bab3ffca674..6df4ef55c1e0 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + - uses: angular/dev-infra/github-actions/branch-manager@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d19b6dc53fde..faeefa80cbd7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee 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@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - 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 4768ebd16a36..5a8731c9002e 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + - uses: angular/dev-infra/github-actions/pull-request-labeling@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + - uses: angular/dev-infra/github-actions/post-approval-changes@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 0c61f5b0ded6..5d29b9ef151f 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@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + - uses: angular/dev-infra/github-actions/feature-request@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 508c7f109e44..a1e0f8dad657 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@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - 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@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - 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 ab14714b6e0e..91d2a7c5a24d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/linting/licenses@f47684669736e28fd77eab64e65b2952c8a948ee build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee - 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@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee - 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/MODULE.bazel b/MODULE.bazel index 1b488d92160b..57200a6c1ae3 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "c855fffb4b01bc06e743eb3bdfd54c866af09ad8", + commit = "f47684669736e28fd77eab64e65b2952c8a948ee", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 7626ecc5e633..d616eea2d7cd 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -156,7 +156,6 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", - "https://bcr.bazel.build/modules/rules_nodejs/6.6.1/MODULE.bazel": "e499aabe7cb796b784e9421be909c702eb79f664c20d21cbf120332a2a8dc378", "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/MODULE.bazel": "9fdb5e1d50246a25761f150fcc820dc47e4052330a8408451e628804f9ca64a6", "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/source.json": "6e8c1ecc64ff8da147c1620f862ad77d7b19c5d1b52b3aa5e847d5b3d0de4cc3", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", @@ -194,12 +193,11 @@ "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", - "https://bcr.bazel.build/modules/tar.bzl/0.6.0/MODULE.bazel": "a3584b4edcfafcabd9b0ef9819808f05b372957bbdff41601429d5fd0aac2e7c", - "https://bcr.bazel.build/modules/tar.bzl/0.6.0/source.json": "4a620381df075a16cb3a7ed57bd1d05f7480222394c64a20fa51bdb636fda658", + "https://bcr.bazel.build/modules/tar.bzl/0.7.0/MODULE.bazel": "cc1acd85da33c80e430b65219a620d54d114628df24a618c3a5fa0b65e988da9", + "https://bcr.bazel.build/modules/tar.bzl/0.7.0/source.json": "9becb80306f42d4810bfa16379fb48aad0b01ce5342bc12fe47dcd6af3ac4d7a", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", "https://bcr.bazel.build/modules/yq.bzl/0.2.0/MODULE.bazel": "6f3a675677db8885be4d607fde14cc51829715e3a879fb016eb9bf336786ce6d", - "https://bcr.bazel.build/modules/yq.bzl/0.3.1/MODULE.bazel": "9bcb7151b3cd4681b89d350530eaf7b45e32a44dda94843b8932b0cb1cd4594a", "https://bcr.bazel.build/modules/yq.bzl/0.3.2/MODULE.bazel": "0384efa70e8033d842ea73aa4b7199fa099709e236a7264345c03937166670b6", "https://bcr.bazel.build/modules/yq.bzl/0.3.2/source.json": "c4ec3e192477e154f08769e29d69e8fd36e8a4f0f623997f3e1f6f7d328f7d7d", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", @@ -212,7 +210,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "PXvA3NOvgV+GXd72C+Zd7J5oEOKpEXHsGxKvRiqCb9U=", + "bzlTransitiveDigest": "GraoR12PYCcA5bpasvNm9vmnBGp+8JXnCK4y7D5+qkg=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -386,6 +384,11 @@ "bazel_tools", "bazel_tools" ], + [ + "bazel_lib~", + "bazel_skylib", + "bazel_skylib~" + ], [ "bazel_lib~", "bazel_tools", @@ -393,8 +396,8 @@ ], [ "tar.bzl~", - "aspect_bazel_lib", - "aspect_bazel_lib~" + "bazel_lib", + "bazel_lib~" ], [ "tar.bzl~", @@ -411,7 +414,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "MDL1U5KxASXhKcoXRgOqr7qxCgpKkNaQ2HSyFvw6u1U=", + "bzlTransitiveDigest": "AhiDaIgaI2cWTIbzA5ZbR/OmQSUpMCFEhsCzil+lwW4=", "usagesDigest": "J526kdgX5AQ2bYrNGwe6lTrakPUSZPfyHG24PGMUG0s=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -532,6 +535,11 @@ "bazel_features_version", "bazel_features~~version_extension~bazel_features_version" ], + [ + "bazel_lib~", + "bazel_skylib", + "bazel_skylib~" + ], [ "bazel_lib~", "bazel_tools", @@ -539,8 +547,8 @@ ], [ "tar.bzl~", - "aspect_bazel_lib", - "aspect_bazel_lib~" + "bazel_lib", + "bazel_lib~" ], [ "tar.bzl~", diff --git a/package.json b/package.json index dca37475ef3d..b182f2cea838 100644 --- a/package.json +++ b/package.json @@ -45,20 +45,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0-rc.2", - "@angular/cdk": "21.0.0-rc.2", - "@angular/common": "21.0.0-rc.2", - "@angular/compiler": "21.0.0-rc.2", - "@angular/compiler-cli": "21.0.0-rc.2", - "@angular/core": "21.0.0-rc.2", - "@angular/forms": "21.0.0-rc.2", - "@angular/localize": "21.0.0-rc.2", - "@angular/material": "21.0.0-rc.2", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#49d7316da246484759b94f87e6eda47fde86b992", - "@angular/platform-browser": "21.0.0-rc.2", - "@angular/platform-server": "21.0.0-rc.2", - "@angular/router": "21.0.0-rc.2", - "@angular/service-worker": "21.0.0-rc.2", + "@angular/animations": "21.0.0", + "@angular/cdk": "21.0.0", + "@angular/common": "21.0.0", + "@angular/compiler": "21.0.0", + "@angular/compiler-cli": "21.0.0", + "@angular/core": "21.0.0", + "@angular/forms": "21.0.0", + "@angular/localize": "21.0.0", + "@angular/material": "21.0.0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf", + "@angular/platform-browser": "21.0.0", + "@angular/platform-server": "21.0.0", + "@angular/router": "21.0.0", + "@angular/service-worker": "21.0.0", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 847ae092d6df..503b50f0f6e7 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -54,7 +54,7 @@ "@angular/ssr": "workspace:*", "jsdom": "27.2.0", "less": "4.4.2", - "ng-packagr": "21.0.0-rc.1", + "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "4.0.10" diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 8037c8a075e6..b97f9c2da6c8 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0-rc.2", - "@angular/compiler": "21.0.0-rc.2", - "@angular/core": "21.0.0-rc.2", - "@angular/platform-browser": "21.0.0-rc.2", - "@angular/platform-server": "21.0.0-rc.2", - "@angular/router": "21.0.0-rc.2", + "@angular/common": "21.0.0", + "@angular/compiler": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", + "@angular/platform-server": "21.0.0", + "@angular/router": "21.0.0", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 8839e0300f34..b5c52b7df345 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.0.0-rc.1", + "ng-packagr": "21.1.0-next.0", "undici": "7.16.0" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index ebdf63c5b59c..2ae769fb9edf 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": "21.0.0-rc.2", - "@angular/compiler-cli": "21.0.0-rc.2", + "@angular/compiler": "21.0.0", + "@angular/compiler-cli": "21.0.0", "typescript": "5.9.3", "webpack": "5.103.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f304cbcf97b7..3f61e23b9851 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0 + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2 + specifier: 21.0.0 + version: 21.0.0 '@angular/compiler-cli': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) + specifier: 21.0.0 + version: 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0 + version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.2) + specifier: 21.0.0 + version: 21.0.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(@angular/compiler@21.0.0) '@angular/material': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(4c9afee98155400dc203886c5442fc76) + specifier: 21.0.0 + version: 21.0.0(280d15a59d7c55264f5164ad0fb0f648) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#49d7316da246484759b94f87e6eda47fde86b992 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.22.0) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf(@modelcontextprotocol/sdk@1.22.0) '@angular/platform-browser': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0 + version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.2)(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -333,7 +333,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.10 - version: 4.0.10(vitest@4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.10(vitest@4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -345,7 +345,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.10 - version: 4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -366,10 +366,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.21 - version: 5.1.21(@types/node@24.10.0) + version: 5.1.21(@types/node@24.10.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.2 - version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -444,8 +444,8 @@ importers: specifier: 4.4.2 version: 4.4.2 ng-packagr: - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.10 - version: 4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -473,10 +473,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.0) + version: 7.10.1(@types/node@24.10.1) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.22.0 version: 1.22.0 @@ -542,23 +542,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2 + specifier: 21.0.0 + version: 21.0.0 '@angular/core': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: 21.0.0 + version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: 21.0.0 + version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.2)(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: 21.0.0 + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -772,8 +772,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) ng-packagr: - specifier: 21.0.0-rc.1 - version: 21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -857,7 +857,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.0) + version: 7.10.1(@types/node@24.10.1) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -871,11 +871,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2 + specifier: 21.0.0 + version: 21.0.0 '@angular/compiler-cli': - specifier: 21.0.0-rc.2 - version: 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) + specifier: 21.0.0 + version: 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -984,46 +984,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0-rc.2': - resolution: {integrity: sha512-NibaaIiPHwp7MlLt3ncNmwiX5GdXtBFzsYnsKt19W9KRR51XGBj+Cr85fyhLF+UyntPZKWMbllia22IvxOL84g==} + '@angular/animations@21.0.0': + resolution: {integrity: sha512-9AX4HFJmSP8SFNiweKNxasBzn3zbL3xRtwaUxw1I+x/WAzubm4ZziLnXqb+tai7C4UmwV+9XDlRVPfw5WxJ9zg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-rc.2 + '@angular/core': 21.0.0 - '@angular/cdk@21.0.0-rc.2': - resolution: {integrity: sha512-QO+0m1OXHwbpB4hoFnx+tkWsvChcNXvyHv3I4bN+wI8iv54yBuVgT5r8w+3VOAg/QB0em0AQEU7fdXfI3mwb3w==} + '@angular/cdk@21.0.0': + resolution: {integrity: sha512-wCr5D3mEC+p69IMDC7vf8bWx18mfUNNRdsiK3XD0m1PqfeNfnCJb+Bnkks37MC/SU01uCNrAokRaTbWL6pk1Wg==} peerDependencies: - '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 - '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/common': ^21.0.0 || ^22.0.0 + '@angular/core': ^21.0.0 || ^22.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0-rc.2': - resolution: {integrity: sha512-NAu9v3CPxkGHoZvvauywNlr0mPa7WBtyvS03WJlBD6vijruBdbmB5ey9CKTAmAtPWadN0Wld+/SKuy+aVs6VKQ==} + '@angular/common@21.0.0': + resolution: {integrity: sha512-uFvQDYU5X5nEnI9C4Bkdxcu4aIzNesGLJzmFlnwChVxB4BxIRF0uHL0oRhdkInGTIzPDJPH4nF6B/22c5gDVqA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0-rc.2 + '@angular/core': 21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0-rc.2': - resolution: {integrity: sha512-mAdWUJ2ZWqgs9fQa1NxqcYeXAgoE6jl2l4kcWNKKGP7WLjNSoE0A1MrIx9fsp+bbKXzY8Ly1WpwS9iTABFA9Xg==} + '@angular/compiler-cli@21.0.0': + resolution: {integrity: sha512-KTXp+e2UPGyfFew6Wq95ULpHWQ20dhqkAMZ6x6MCYfOe2ccdnGYsAbLLmnWGmSg5BaOI4B0x/1XCFZf/n6WDgA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-rc.2 + '@angular/compiler': 21.0.0 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0-rc.2': - resolution: {integrity: sha512-wJOwO9GoWhMm0c3ITgLhGN/tglN1Ntx6Mj588pQpHb5SKEdriqdUwEwu66MNrMy3o0FXdfiuahzWuqL37DDR3w==} + '@angular/compiler@21.0.0': + resolution: {integrity: sha512-6jCH3UYga5iokj5F40SR4dlwo9ZRMkT8YzHCTijwZuDX9zvugp9jPof092RvIeNsTvCMVfGWuM9yZ1DRUsU/yg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0-rc.2': - resolution: {integrity: sha512-ycxrRfvIcerGomRBdre28lh9N/h7rbxqoeRN0SjycsigJZ5FUBmvN9CyXdQdEXCjNi4ctzSOX3NEvytvJX7M/Q==} + '@angular/core@21.0.0': + resolution: {integrity: sha512-bqi8fT4csyITeX8vdN5FJDBWx5wuWzdCg4mKSjHd+onVzZLyZ8bcnuAKz4mklgvjvwuXoRYukmclUurLwfq3Rg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0-rc.2 + '@angular/compiler': 21.0.0 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -1032,75 +1032,75 @@ packages: zone.js: optional: true - '@angular/forms@21.0.0-rc.2': - resolution: {integrity: sha512-OrCwXBnC2KeY2tUoBzIeQqARlXTspkBhRG6qmTZmqStKvrLRx6yDjXCPtYpl8+LwyzU6IMl/UmqGVXfr0aXVoA==} + '@angular/forms@21.0.0': + resolution: {integrity: sha512-kcudwbZs/ddKqaELz4eEW9kOGCsX61qsf9jkQsGTARBEOUcU2K+rM6mX5sTf9azHvQ9wlX4N36h0eYzBA4Y4Qg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.2 - '@angular/core': 21.0.0-rc.2 - '@angular/platform-browser': 21.0.0-rc.2 + '@angular/common': 21.0.0 + '@angular/core': 21.0.0 + '@angular/platform-browser': 21.0.0 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0-rc.2': - resolution: {integrity: sha512-tSmCEYjDJAygBoQDNHT1hkZ1UK3I9QwbsC8L7hgsynJioDNqV2X4zAE748G/zvMT4PLb9LMadx4e0yvSE8TDog==} + '@angular/localize@21.0.0': + resolution: {integrity: sha512-SHK/D6nYkbn3VrM7sZtipiayICc8S6IZyjd4/5ARLeZJ/giYAxqv++bV0EV1MEayAZi4g6t0qsUY4KolDClphQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0-rc.2 - '@angular/compiler-cli': 21.0.0-rc.2 + '@angular/compiler': 21.0.0 + '@angular/compiler-cli': 21.0.0 - '@angular/material@21.0.0-rc.2': - resolution: {integrity: sha512-ousayydWUWkrWw7lKuiN9b/BeTNEio/75Z51+Hkg0n5xzgGWNV5tVT/IFw8IwssKWlsJslSCzohj/j5l9Hl7rw==} + '@angular/material@21.0.0': + resolution: {integrity: sha512-s3+fhN7F5T1TAltZXYXOgY1wuVbICCrBJpV2TN8nJXDT0wroTYAljgBmsr6ZjDwYJewwP0OPvcj2NlOGDpa6oA==} peerDependencies: - '@angular/cdk': 21.0.0-rc.2 - '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 - '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 - '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 - '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/cdk': 21.0.0 + '@angular/common': ^21.0.0 || ^22.0.0 + '@angular/core': ^21.0.0 || ^22.0.0 + '@angular/forms': ^21.0.0 || ^22.0.0 + '@angular/platform-browser': ^21.0.0 || ^22.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/49d7316da246484759b94f87e6eda47fde86b992': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992} - version: 0.0.0-c855fffb4b01bc06e743eb3bdfd54c866af09ad8 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf} + version: 0.0.0-f47684669736e28fd77eab64e65b2952c8a948ee hasBin: true - '@angular/platform-browser@21.0.0-rc.2': - resolution: {integrity: sha512-j1owMY2oI+AUxQUdo7Y/R+r6sEqg+u4tr4CNcLvunV8DVqvSjwr3AqHI87fcQ6o+9b1GiiM6lvJil8OCPcUOjw==} + '@angular/platform-browser@21.0.0': + resolution: {integrity: sha512-KQrANla4RBLhcGkwlndqsKzBwVFOWQr1640CfBVjj2oz4M3dW5hyMtXivBACvuwyUhYU/qJbqlDMBXl/OUSudQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0-rc.2 - '@angular/common': 21.0.0-rc.2 - '@angular/core': 21.0.0-rc.2 + '@angular/animations': 21.0.0 + '@angular/common': 21.0.0 + '@angular/core': 21.0.0 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0-rc.2': - resolution: {integrity: sha512-YrdFBZXdOVyS6wkZT3vqQ/3I/a915lS98UnF6BGtXCpmjxVfR737kmJHNG2FHMz7vo3HefQMxoz7Xb/my3HPIg==} + '@angular/platform-server@21.0.0': + resolution: {integrity: sha512-5IcmoftT2hLAbLfSoqGoCg0B1FLSk08xDoUdIyEUo1SmxNJMEEgU6WxhkPf6R7aoOlLAwYBoqGGP1Us1Z7rO7g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.2 - '@angular/compiler': 21.0.0-rc.2 - '@angular/core': 21.0.0-rc.2 - '@angular/platform-browser': 21.0.0-rc.2 + '@angular/common': 21.0.0 + '@angular/compiler': 21.0.0 + '@angular/core': 21.0.0 + '@angular/platform-browser': 21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0-rc.2': - resolution: {integrity: sha512-C/tWcfqU/Zx0uLEAfho3nWA9f1mfcDUZxRCLnf9zDksoJl5yJbgIFeNytU5aheHAWKqA3Laj5tnbfUNeU/Vtfg==} + '@angular/router@21.0.0': + resolution: {integrity: sha512-ARx1R2CmTgAezlMkUpV40V4T/IbXhL7dm4SuMVKbuEOsCKZC0TLOSSTsGYY7HKem45JHlJaByv819cJnabFgBg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0-rc.2 - '@angular/core': 21.0.0-rc.2 - '@angular/platform-browser': 21.0.0-rc.2 + '@angular/common': 21.0.0 + '@angular/core': 21.0.0 + '@angular/platform-browser': 21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0-rc.2': - resolution: {integrity: sha512-X+FjX76ceQzE4gC5pZzCkPoQlDkcO8pDMbP1gYz745GMwO0TROUVVDrQb9h8Fu1ptknQB+tT1YprStxpVmDQXw==} + '@angular/service-worker@21.0.0': + resolution: {integrity: sha512-ZsJyVBvMQ6c9Xbci3cbPPQUPf+ZptvPshvf4eM5I4r3tJc7xDudpKKUqFBgAzZIN/GY5EvzMwGplgIy7HpKh1w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0-rc.2 + '@angular/core': 21.0.0 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -2069,8 +2069,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.5.0': - resolution: {integrity: sha512-OXv/jZLRjV9jTejWA4KOvW8gM1hNsLvQSCPwKhi2CEfe0Nap3rM6z+Ial0PGqXga0WgzhpypEvJOFvaAUFX3kg==} + '@firebase/ai@2.6.0': + resolution: {integrity: sha512-NGyE7NQDFznOv683Xk4+WoUv39iipa9lEfrwvvPz33ChzVbCCiB69FJQTK2BI/11pRtzYGbHo1/xMz7gxWWhJw==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -2107,15 +2107,15 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/app-compat@0.5.5': - resolution: {integrity: sha512-lVG/nRnXaot0rQSZazmTNqy83ti9O3+kdwoaE0d5wahRIWNoDirbIMcGVjDDgdmf4IE6FYreWOMh0L3DV1475w==} + '@firebase/app-compat@0.5.6': + resolution: {integrity: sha512-YYGARbutghQY4zZUWMYia0ib0Y/rb52y72/N0z3vglRHL7ii/AaK9SA7S/dzScVOlCdnbHXz+sc5Dq+r8fwFAg==} engines: {node: '>=20.0.0'} '@firebase/app-types@0.9.3': resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - '@firebase/app@0.14.5': - resolution: {integrity: sha512-zyNY77xJOGwcuB+xCxF8z8lSiHvD4ox7BCsqLEHEvgqQoRjxFZ0fkROR6NV5QyXmCqRLodMM8J5d2EStOocWIw==} + '@firebase/app@0.14.6': + resolution: {integrity: sha512-4uyt8BOrBsSq6i4yiOV/gG6BnnrvTeyymlNcaN/dKvyU1GoolxAafvIvaNP1RCGPlNab3OuE4MKUQuv2lH+PLQ==} engines: {node: '>=20.0.0'} '@firebase/auth-compat@0.6.1': @@ -2147,8 +2147,8 @@ packages: resolution: {integrity: sha512-wR9En2A+WESUHexjmRHkqtaVH94WLNKt6rmeqZhSLBybg4Wyf0Umk04SZsS6sBq4102ZsDBFwoqMqJYj2IoDSg==} engines: {node: '>=20.0.0'} - '@firebase/data-connect@0.3.11': - resolution: {integrity: sha512-G258eLzAD6im9Bsw+Qm1Z+P4x0PGNQ45yeUuuqe5M9B1rn0RJvvsQCRHXgE52Z+n9+WX1OJd/crcuunvOGc7Vw==} + '@firebase/data-connect@0.3.12': + resolution: {integrity: sha512-baPddcoNLj/+vYo+HSJidJUdr5W4OkhT109c5qhR8T1dJoZcyJpkv/dFpYlw/VJ3dV66vI8GHQFrmAZw/xUS4g==} peerDependencies: '@firebase/app': 0.x @@ -2310,8 +2310,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.29.0': - resolution: {integrity: sha512-cQP7Ssa06W+MSAyVtL/812FBtZDoDehnFObIpK1xo5Uv4XvqBcVZ8OhXgihOIXWn7xvPQGvLclR8+yt3Ysnd9g==} + '@google/genai@1.30.0': + resolution: {integrity: sha512-3MRcgczBFbUat1wIlZoLJ0vCCfXgm7Qxjh59cZi2X08RgWLtm9hKOspzp7TOg1TV2e26/MLxR2GR5yD5GmBV2w==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.20.1 @@ -2360,6 +2360,10 @@ packages: resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} + '@inquirer/ansi@2.0.1': + resolution: {integrity: sha512-QAZUk6BBncv/XmSEZTscd8qazzjV3E0leUMrEPjxCd51QBgCKmprUGLex5DTsNtURm7LMzv+CLcd6S86xvBfYg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/checkbox@4.3.2': resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} @@ -2369,6 +2373,15 @@ packages: '@types/node': optional: true + '@inquirer/checkbox@5.0.1': + resolution: {integrity: sha512-5VPFBK8jKdsjMK3DTFOlbR0+Kkd4q0AWB7VhWQn6ppv44dr3b7PU8wSJQTC5oA0f/aGW7v/ZozQJAY9zx6PKig==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/confirm@5.1.21': resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} @@ -2378,6 +2391,15 @@ packages: '@types/node': optional: true + '@inquirer/confirm@6.0.1': + resolution: {integrity: sha512-wD+pM7IxLn1TdcQN12Q6wcFe5VpyCuh/I2sSmqO5KjWH2R4v+GkUToHb+PsDGobOe1MtAlXMwGNkZUPc2+L6NA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/core@10.3.2': resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} @@ -2387,6 +2409,15 @@ packages: '@types/node': optional: true + '@inquirer/core@11.0.1': + resolution: {integrity: sha512-Tpf49h50e4KYffVUCXzkx4gWMafUi3aDQDwfVAAGBNnVcXiwJIj4m2bKlZ7Kgyf6wjt1eyXH1wDGXcAokm4Ssw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/editor@4.2.23': resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} @@ -2396,6 +2427,15 @@ packages: '@types/node': optional: true + '@inquirer/editor@5.0.1': + resolution: {integrity: sha512-zDKobHI7Ry++4noiV9Z5VfYgSVpPZoMApviIuGwLOMciQaP+dGzCO+1fcwI441riklRiZg4yURWyEoX0Zy2zZw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/expand@4.0.23': resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} @@ -2405,6 +2445,15 @@ packages: '@types/node': optional: true + '@inquirer/expand@5.0.1': + resolution: {integrity: sha512-TBrTpAB6uZNnGQHtSEkbvJZIQ3dXZOrwqQSO9uUbwct3G2LitwBCE5YZj98MbQ5nzihzs5pRjY1K9RRLH4WgoA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/external-editor@1.0.3': resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} @@ -2414,10 +2463,23 @@ packages: '@types/node': optional: true + '@inquirer/external-editor@2.0.1': + resolution: {integrity: sha512-BPYWJXCAK9w6R+pb2s3WyxUz9ts9SP/LDOUwA9fu7LeuyYgojz83i0DSRwezu736BgMwz14G63Xwj70hSzHohQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/figures@1.0.15': resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} + '@inquirer/figures@2.0.1': + resolution: {integrity: sha512-KtMxyjLCuDFqAWHmCY9qMtsZ09HnjMsm8H3OvpSIpfhHdfw3/AiGWHNrfRwbyvHPtOJpumm8wGn5fkhtvkWRsg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/input@4.3.1': resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} @@ -2427,6 +2489,15 @@ packages: '@types/node': optional: true + '@inquirer/input@5.0.1': + resolution: {integrity: sha512-cEhEUohCpE2BCuLKtFFZGp4Ief05SEcqeAOq9NxzN5ThOQP8Rl5N/Nt9VEDORK1bRb2Sk/zoOyQYfysPQwyQtA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/number@3.0.23': resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} @@ -2436,6 +2507,15 @@ packages: '@types/node': optional: true + '@inquirer/number@4.0.1': + resolution: {integrity: sha512-4//zgBGHe8Q/FfCoUXZUrUHyK/q5dyqiwsePz3oSSPSmw1Ijo35ZkjaftnxroygcUlLYfXqm+0q08lnB5hd49A==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/password@4.0.23': resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} @@ -2445,9 +2525,9 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.10.0': - resolution: {integrity: sha512-X2HAjY9BClfFkJ2RP3iIiFxlct5JJVdaYYXhA7RKxsbc9KL+VbId79PSoUGH/OLS011NFbHHDMDcBKUj3T89+Q==} - engines: {node: '>=18'} + '@inquirer/password@5.0.1': + resolution: {integrity: sha512-UJudHpd7Ia30Q+x+ctYqI9Nh6SyEkaBscpa7J6Ts38oc1CNSws0I1hJEdxbQBlxQd65z5GEJPM4EtNf6tzfWaQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -2463,6 +2543,15 @@ packages: '@types/node': optional: true + '@inquirer/prompts@8.0.1': + resolution: {integrity: sha512-MURRu/cyvLm9vchDDaVZ9u4p+ADnY0Mz3LQr0KTgihrrvuKZlqcWwlBC4lkOMvd0KKX4Wz7Ww9+uA7qEpQaqjg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/rawlist@4.1.11': resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} @@ -2472,6 +2561,15 @@ packages: '@types/node': optional: true + '@inquirer/rawlist@5.0.1': + resolution: {integrity: sha512-vVfVHKUgH6rZmMlyd0jOuGZo0Fw1jfcOqZF96lMwlgavx7g0x7MICe316bV01EEoI+c68vMdbkTTawuw3O+Fgw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/search@3.2.2': resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} @@ -2481,6 +2579,15 @@ packages: '@types/node': optional: true + '@inquirer/search@4.0.1': + resolution: {integrity: sha512-XwiaK5xBvr31STX6Ji8iS3HCRysBXfL/jUbTzufdWTS6LTGtvDQA50oVETt1BJgjKyQBp9vt0VU6AmU/AnOaGA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/select@4.4.2': resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} @@ -2490,6 +2597,15 @@ packages: '@types/node': optional: true + '@inquirer/select@5.0.1': + resolution: {integrity: sha512-gPByrgYoezGyKMq5KjV7Tuy1JU2ArIy6/sI8sprw0OpXope3VGQwP5FK1KD4eFFqEhKu470Dwe6/AyDPmGRA0Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.10': resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} @@ -2508,6 +2624,15 @@ packages: '@types/node': optional: true + '@inquirer/type@4.0.1': + resolution: {integrity: sha512-odO8YwoQAw/eVu/PSPsDDVPmqO77r/Mq7zcoF5VduVqIu2wSRWUgmYb5K9WH1no0SjLnOe8MDKtDL++z6mfo2g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -2914,8 +3039,8 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/request-error@7.0.2': - resolution: {integrity: sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==} + '@octokit/request-error@7.1.0': + resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} engines: {node: '>= 20'} '@octokit/request@10.0.6': @@ -3717,6 +3842,9 @@ packages: '@types/jasmine@5.1.12': resolution: {integrity: sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==} + '@types/jasmine@5.1.13': + resolution: {integrity: sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3759,8 +3887,8 @@ packages: '@types/node@22.19.0': resolution: {integrity: sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==} - '@types/node@24.10.0': - resolution: {integrity: sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -3858,6 +3986,9 @@ packages: '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@types/yarnpkg__lockfile@1.1.9': resolution: {integrity: sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q==} @@ -5714,8 +5845,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase@12.5.0: - resolution: {integrity: sha512-Ak8JcpH7FL6kiv0STwkv5+3CYEROO9iFWSx7OCZVvc4kIIABAIyAGs1mPGaHRxGUIApFZdMCXA7baq17uS6Mow==} + firebase@12.6.0: + resolution: {integrity: sha512-8ZD1Gcv916Qp8/nsFH2+QMIrfX/76ti6cJwxQUENLXXnKlOX/IJZaU2Y3bdYf5r1mbownrQKfnWtrt+MVgdwLA==} flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} @@ -7145,6 +7276,10 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} + nanocolors@0.2.13: resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} @@ -7180,12 +7315,12 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.0.0-rc.1: - resolution: {integrity: sha512-e3R45a5fuQ/bxdegHO+P+10+YjamgZvInx+cKD0exHPTLwqTN9JNWkyfL/pZf4wyyDzTvmcmADNvqPOml9GJ0w==} + ng-packagr@21.1.0-next.0: + resolution: {integrity: sha512-DuNSGSiZVEOiMOWFjNENx04AEXuK6A6d1iOxYFYuAotYXLSnG1ghUSDN83c5lmdE1ISRXLvbnJEGRKu0vqBK7g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': ^21.0.0-next + '@angular/compiler-cli': ^21.1.0-next || ^21.0.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 typescript: '>=5.9 <6.0' @@ -9484,28 +9619,28 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/cdk@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3)': + '@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0-rc.2 + '@angular/compiler': 21.0.0 '@babel/core': 7.28.4 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -9519,31 +9654,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0-rc.2': + '@angular/compiler@21.0.0': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0-rc.2 + '@angular/compiler': 21.0.0 zone.js: 0.15.1 - '@angular/forms@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0-rc.2(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(@angular/compiler@21.0.0-rc.2)': + '@angular/localize@21.0.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(@angular/compiler@21.0.0)': dependencies: - '@angular/compiler': 21.0.0-rc.2 - '@angular/compiler-cli': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) + '@angular/compiler': 21.0.0 + '@angular/compiler-cli': 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) '@babel/core': 7.28.4 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9551,23 +9686,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0-rc.2(4c9afee98155400dc203886c5442fc76)': + '@angular/material@21.0.0(280d15a59d7c55264f5164ad0fb0f648)': dependencies: - '@angular/cdk': 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/49d7316da246484759b94f87e6eda47fde86b992(@modelcontextprotocol/sdk@1.22.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf(@modelcontextprotocol/sdk@1.22.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.29.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 7.10.0(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 8.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -9575,7 +9710,7 @@ snapshots: '@octokit/openapi-types': 27.0.0 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) - '@octokit/request-error': 7.0.2 + '@octokit/request-error': 7.1.0 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 '@pnpm/dependency-path': 1001.1.4 @@ -9584,22 +9719,21 @@ snapshots: '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 - '@types/jasmine': 5.1.12 - '@types/node': 24.10.0 + '@types/jasmine': 5.1.13 + '@types/node': 24.10.1 '@types/semver': 7.7.1 '@types/which': 3.0.4 - '@types/yargs': 17.0.34 + '@types/yargs': 17.0.35 '@types/yarnpkg__lockfile': 1.1.9 '@yarnpkg/lockfile': 1.1.0 bufferutil: 4.0.9 - chalk: 5.6.2 cli-progress: 3.12.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.5.0 + firebase: 12.6.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) jasmine: 5.12.0 @@ -9622,35 +9756,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0-rc.2)(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 21.0.0-rc.2 - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 21.0.0 + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0-rc.2(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0-rc.2(@angular/animations@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0-rc.2(@angular/core@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -10666,9 +10800,9 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.5.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': + '@firebase/ai@2.6.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/app-check-interop-types': 0.3.3 '@firebase/app-types': 0.9.3 '@firebase/component': 0.7.0 @@ -10676,11 +10810,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': + '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': dependencies: - '@firebase/analytics': 0.10.19(@firebase/app@0.14.5) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10689,20 +10823,20 @@ snapshots: '@firebase/analytics-types@0.8.3': {} - '@firebase/analytics@0.10.19(@firebase/app@0.14.5)': + '@firebase/analytics@0.10.19(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.5) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-check': 0.11.0(@firebase/app@0.14.5) + '@firebase/app-check': 0.11.0(@firebase/app@0.14.6) '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10714,17 +10848,17 @@ snapshots: '@firebase/app-check-types@0.5.3': {} - '@firebase/app-check@0.11.0(@firebase/app@0.14.5)': + '@firebase/app-check@0.11.0(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-compat@0.5.5': + '@firebase/app-compat@0.5.6': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10732,7 +10866,7 @@ snapshots: '@firebase/app-types@0.9.3': {} - '@firebase/app@0.14.5': + '@firebase/app@0.14.6': dependencies: '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10740,10 +10874,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.1(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': + '@firebase/auth-compat@0.6.1(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 - '@firebase/auth': 1.11.1(@firebase/app@0.14.5) + '@firebase/app-compat': 0.5.6 + '@firebase/auth': 1.11.1(@firebase/app@0.14.6) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -10760,9 +10894,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.11.1(@firebase/app@0.14.5)': + '@firebase/auth@1.11.1(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10773,9 +10907,9 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/data-connect@0.3.11(@firebase/app@0.14.5)': + '@firebase/data-connect@0.3.12(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10806,11 +10940,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': + '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.5) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.6) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10823,9 +10957,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.2(@firebase/app@0.14.5)': + '@firebase/firestore@4.9.2(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10834,11 +10968,11 @@ snapshots: '@grpc/proto-loader': 0.7.15 tslib: 2.8.1 - '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 - '@firebase/functions': 0.13.1(@firebase/app@0.14.5) + '@firebase/functions': 0.13.1(@firebase/app@0.14.6) '@firebase/functions-types': 0.6.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10847,9 +10981,9 @@ snapshots: '@firebase/functions-types@0.6.3': {} - '@firebase/functions@0.13.1(@firebase/app@0.14.5)': + '@firebase/functions@0.13.1(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/app-check-interop-types': 0.3.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 @@ -10857,11 +10991,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.5) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10873,9 +11007,9 @@ snapshots: dependencies: '@firebase/app-types': 0.9.3 - '@firebase/installations@0.6.19(@firebase/app@0.14.5)': + '@firebase/installations@0.6.19(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 idb: 7.1.1 @@ -10885,11 +11019,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 - '@firebase/messaging': 0.12.23(@firebase/app@0.14.5) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.6) '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: @@ -10897,22 +11031,22 @@ snapshots: '@firebase/messaging-interop-types@0.2.3': {} - '@firebase/messaging@0.12.23(@firebase/app@0.14.5)': + '@firebase/messaging@0.12.23(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.5) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) '@firebase/messaging-interop-types': 0.2.3 '@firebase/util': 1.13.0 idb: 7.1.1 tslib: 2.8.1 - '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/performance': 0.7.9(@firebase/app@0.14.5) + '@firebase/performance': 0.7.9(@firebase/app@0.14.6) '@firebase/performance-types': 0.2.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10921,22 +11055,22 @@ snapshots: '@firebase/performance-types@0.2.3': {} - '@firebase/performance@0.7.9(@firebase/app@0.14.5)': + '@firebase/performance@0.7.9(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.5) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 web-vitals: 4.2.4 - '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)': + '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.5) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.6) '@firebase/remote-config-types': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10945,20 +11079,20 @@ snapshots: '@firebase/remote-config-types@0.5.0': {} - '@firebase/remote-config@0.7.0(@firebase/app@0.14.5)': + '@firebase/remote-config@0.7.0(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.5) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)': + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: - '@firebase/app-compat': 0.5.5 + '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 - '@firebase/storage': 0.14.0(@firebase/app@0.14.5) + '@firebase/storage': 0.14.0(@firebase/app@0.14.6) '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10971,9 +11105,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/storage@0.14.0(@firebase/app@0.14.5)': + '@firebase/storage@0.14.0(@firebase/app@0.14.6)': dependencies: - '@firebase/app': 0.14.5 + '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -11045,7 +11179,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.29.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -11095,147 +11229,251 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.2(@types/node@24.10.0)': + '@inquirer/ansi@2.0.1': {} + + '@inquirer/checkbox@4.3.2(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 + + '@inquirer/checkbox@5.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/ansi': 2.0.1 + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/figures': 2.0.1 + '@inquirer/type': 4.0.1(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/confirm@5.1.21(@types/node@24.10.0)': + '@inquirer/confirm@5.1.21(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/core@10.3.2(@types/node@24.10.0)': + '@inquirer/confirm@6.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/core@10.3.2(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.1) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 + + '@inquirer/core@11.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/ansi': 2.0.1 + '@inquirer/figures': 2.0.1 + '@inquirer/type': 4.0.1(@types/node@24.10.1) + cli-width: 4.1.0 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + wrap-ansi: 9.0.2 + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/editor@4.2.23(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/editor@4.2.23(@types/node@24.10.0)': + '@inquirer/editor@5.0.1(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/external-editor': 2.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/expand@4.0.23(@types/node@24.10.0)': + '@inquirer/expand@4.0.23(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/external-editor@1.0.3(@types/node@24.10.0)': + '@inquirer/expand@5.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/external-editor@1.0.3(@types/node@24.10.1)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 + + '@inquirer/external-editor@2.0.1(@types/node@24.10.1)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 24.10.1 '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.3.1(@types/node@24.10.0)': + '@inquirer/figures@2.0.1': {} + + '@inquirer/input@4.3.1(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/number@3.0.23(@types/node@24.10.0)': + '@inquirer/input@5.0.1(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/password@4.0.23(@types/node@24.10.0)': + '@inquirer/number@3.0.23(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/number@4.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/password@4.0.23(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/password@5.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/ansi': 2.0.1 + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 - - '@inquirer/prompts@7.10.0(@types/node@24.10.0)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.0) - '@inquirer/confirm': 5.1.21(@types/node@24.10.0) - '@inquirer/editor': 4.2.23(@types/node@24.10.0) - '@inquirer/expand': 4.0.23(@types/node@24.10.0) - '@inquirer/input': 4.3.1(@types/node@24.10.0) - '@inquirer/number': 3.0.23(@types/node@24.10.0) - '@inquirer/password': 4.0.23(@types/node@24.10.0) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.0) - '@inquirer/search': 3.2.2(@types/node@24.10.0) - '@inquirer/select': 4.4.2(@types/node@24.10.0) + '@types/node': 24.10.1 + + '@inquirer/prompts@7.10.1(@types/node@24.10.1)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.1) + '@inquirer/confirm': 5.1.21(@types/node@24.10.1) + '@inquirer/editor': 4.2.23(@types/node@24.10.1) + '@inquirer/expand': 4.0.23(@types/node@24.10.1) + '@inquirer/input': 4.3.1(@types/node@24.10.1) + '@inquirer/number': 3.0.23(@types/node@24.10.1) + '@inquirer/password': 4.0.23(@types/node@24.10.1) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.1) + '@inquirer/search': 3.2.2(@types/node@24.10.1) + '@inquirer/select': 4.4.2(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 - - '@inquirer/prompts@7.10.1(@types/node@24.10.0)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.0) - '@inquirer/confirm': 5.1.21(@types/node@24.10.0) - '@inquirer/editor': 4.2.23(@types/node@24.10.0) - '@inquirer/expand': 4.0.23(@types/node@24.10.0) - '@inquirer/input': 4.3.1(@types/node@24.10.0) - '@inquirer/number': 3.0.23(@types/node@24.10.0) - '@inquirer/password': 4.0.23(@types/node@24.10.0) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.0) - '@inquirer/search': 3.2.2(@types/node@24.10.0) - '@inquirer/select': 4.4.2(@types/node@24.10.0) + '@types/node': 24.10.1 + + '@inquirer/prompts@8.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/checkbox': 5.0.1(@types/node@24.10.1) + '@inquirer/confirm': 6.0.1(@types/node@24.10.1) + '@inquirer/editor': 5.0.1(@types/node@24.10.1) + '@inquirer/expand': 5.0.1(@types/node@24.10.1) + '@inquirer/input': 5.0.1(@types/node@24.10.1) + '@inquirer/number': 4.0.1(@types/node@24.10.1) + '@inquirer/password': 5.0.1(@types/node@24.10.1) + '@inquirer/rawlist': 5.0.1(@types/node@24.10.1) + '@inquirer/search': 4.0.1(@types/node@24.10.1) + '@inquirer/select': 5.0.1(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/rawlist@4.1.11(@types/node@24.10.0)': + '@inquirer/rawlist@4.1.11(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/search@3.2.2(@types/node@24.10.0)': + '@inquirer/rawlist@5.0.1(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/type': 4.0.1(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/search@3.2.2(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@24.10.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/select@4.4.2(@types/node@24.10.0)': + '@inquirer/search@4.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/figures': 2.0.1 + '@inquirer/type': 4.0.1(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/select@4.4.2(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.0) + '@inquirer/core': 10.3.2(@types/node@24.10.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.0) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/type@3.0.10(@types/node@24.10.0)': + '@inquirer/select@5.0.1(@types/node@24.10.1)': + dependencies: + '@inquirer/ansi': 2.0.1 + '@inquirer/core': 11.0.1(@types/node@24.10.1) + '@inquirer/figures': 2.0.1 + '@inquirer/type': 4.0.1(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 - '@inquirer/type@3.0.9(@types/node@24.10.0)': + '@inquirer/type@3.0.10(@types/node@24.10.1)': optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 + + '@inquirer/type@3.0.9(@types/node@24.10.1)': + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/type@4.0.1(@types/node@24.10.1)': + optionalDependencies: + '@types/node': 24.10.1 '@isaacs/balanced-match@4.0.1': {} @@ -11327,10 +11565,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.0))(@types/node@24.10.0)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@24.10.0) - '@inquirer/type': 3.0.9(@types/node@24.10.0) + '@inquirer/prompts': 7.10.1(@types/node@24.10.1) + '@inquirer/type': 3.0.9(@types/node@24.10.1) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11570,7 +11808,7 @@ snapshots: '@octokit/auth-oauth-app': 9.0.3 '@octokit/auth-oauth-user': 6.0.2 '@octokit/request': 10.0.6 - '@octokit/request-error': 7.0.2 + '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.2 @@ -11606,7 +11844,7 @@ snapshots: '@octokit/auth-token': 6.0.0 '@octokit/graphql': 9.0.3 '@octokit/request': 10.0.6 - '@octokit/request-error': 7.0.2 + '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 @@ -11633,7 +11871,7 @@ snapshots: dependencies: '@octokit/oauth-authorization-url': 8.0.0 '@octokit/request': 10.0.6 - '@octokit/request-error': 7.0.2 + '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 '@octokit/openapi-types@27.0.0': {} @@ -11652,14 +11890,14 @@ snapshots: '@octokit/core': 7.0.6 '@octokit/types': 16.0.0 - '@octokit/request-error@7.0.2': + '@octokit/request-error@7.1.0': dependencies: '@octokit/types': 16.0.0 '@octokit/request@10.0.6': dependencies: '@octokit/endpoint': 11.0.2 - '@octokit/request-error': 7.0.2 + '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 universal-user-agent: 7.0.3 @@ -12313,6 +12551,8 @@ snapshots: '@types/jasmine@5.1.12': {} + '@types/jasmine@5.1.13': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -12374,7 +12614,7 @@ snapshots: dependencies: undici-types: 7.16.0 - '@types/node@24.10.0': + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 @@ -12489,6 +12729,10 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + '@types/yarnpkg__lockfile@1.1.9': {} '@types/yauzl@2.10.3': @@ -12751,11 +12995,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.10(vitest@4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.10(vitest@4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.10 @@ -12768,7 +13012,7 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12781,13 +13025,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.10(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.10(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@4.0.10': dependencies: @@ -14916,35 +15160,35 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase@12.5.0: + firebase@12.6.0: dependencies: - '@firebase/ai': 2.5.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) - '@firebase/analytics': 0.10.19(@firebase/app@0.14.5) - '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) - '@firebase/app': 0.14.5 - '@firebase/app-check': 0.11.0(@firebase/app@0.14.5) - '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) - '@firebase/app-compat': 0.5.5 + '@firebase/ai': 2.6.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) + '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/app': 0.14.6 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.6) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/app-compat': 0.5.6 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.11.1(@firebase/app@0.14.5) - '@firebase/auth-compat': 0.6.1(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) - '@firebase/data-connect': 0.3.11(@firebase/app@0.14.5) + '@firebase/auth': 1.11.1(@firebase/app@0.14.6) + '@firebase/auth-compat': 0.6.1(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/data-connect': 0.3.12(@firebase/app@0.14.6) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.5) - '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) - '@firebase/functions': 0.13.1(@firebase/app@0.14.5) - '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) - '@firebase/installations': 0.6.19(@firebase/app@0.14.5) - '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) - '@firebase/messaging': 0.12.23(@firebase/app@0.14.5) - '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) - '@firebase/performance': 0.7.9(@firebase/app@0.14.5) - '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.5) - '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5) - '@firebase/storage': 0.14.0(@firebase/app@0.14.5) - '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5) + '@firebase/firestore': 4.9.2(@firebase/app@0.14.6) + '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/functions': 0.13.1(@firebase/app@0.14.6) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.6) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/performance': 0.7.9(@firebase/app@0.14.6) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.6) + '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/storage': 0.14.0(@firebase/app@0.14.6) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) '@firebase/util': 1.13.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -16543,6 +16787,8 @@ snapshots: mute-stream@2.0.0: {} + mute-stream@3.0.0: {} + nanocolors@0.2.13: {} nanoid@3.3.11: {} @@ -16565,10 +16811,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.0.0-rc.1(@angular/compiler-cli@21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0-rc.2(@angular/compiler@21.0.0-rc.2)(typescript@5.9.3) + '@angular/compiler-cli': 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.53.2) '@rollup/wasm-node': 4.52.5 ajv: 8.17.1 @@ -18715,7 +18961,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18724,7 +18970,7 @@ snapshots: rollup: 4.53.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18733,10 +18979,10 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.10(@types/node@24.10.0)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.10 - '@vitest/mocker': 4.0.10(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.10(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.10 '@vitest/runner': 4.0.10 '@vitest/snapshot': 4.0.10 @@ -18753,10 +18999,10 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.0 + '@types/node': 24.10.1 jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index f2359c3ae218..8c0189441a87 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#11097c79350fe45c91d735ff56e4a65033eff2d0", - "@angular/cdk": "github:angular/cdk-builds#fcb6a60ccdf562ea603fa1e69124fb88ea2d0b87", - "@angular/common": "github:angular/common-builds#68a879555e986eadce2c2e491ec5d5a19e07ea69", - "@angular/compiler": "github:angular/compiler-builds#3b84f54190d722d1b9146ec1f103c738693d68eb", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#5835bcbb2511c85162c1ed48a9231f7127ca03d2", - "@angular/core": "github:angular/core-builds#67db87f334964b99f490a8bdb30b3eb068e78db2", - "@angular/forms": "github:angular/forms-builds#1e1465e423f4815000630b320267245949d8f09b", - "@angular/language-service": "github:angular/language-service-builds#bae19c16444af108601fe2a1f4ffbf6d8d1a57da", - "@angular/localize": "github:angular/localize-builds#e7a995f8f170eea18bbb22a865574c638e45104a", - "@angular/material": "github:angular/material-builds#c8dc810b80c0830111d20539873d14445a5927eb", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#8feb74c86d59345c8f7051fd0992e9a709045e4d", - "@angular/platform-browser": "github:angular/platform-browser-builds#32a7e1cb1eafeb19942d36944231a5cb54f7fdec", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#c3ca0dc2c4e17c4926ef6959bb488f7cd5c7ad77", - "@angular/platform-server": "github:angular/platform-server-builds#100517daedde70a9c9086e7d3cbc9ab0f61b752b", - "@angular/router": "github:angular/router-builds#305d28f496501736d694bd26fcb25675ac0b43d3", - "@angular/service-worker": "github:angular/service-worker-builds#87b2fdd7b79302df8af1e8749ac0eef0c6057f55" + "@angular/animations": "github:angular/animations-builds#b660345329ee6d90ca58b1e753e0420dd1fcc5e9", + "@angular/cdk": "github:angular/cdk-builds#e52a9e8d8ef00d89ea7c46e90d118e45f97a0456", + "@angular/common": "github:angular/common-builds#cfa9aefef5a9aa74b902791c11771c904f03e532", + "@angular/compiler": "github:angular/compiler-builds#f1ebbc89ac5d3538f0b534ce24929cab923db6ad", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#b5ade9aa64ee283f5b28c26eab23f5df268d3b98", + "@angular/core": "github:angular/core-builds#f95298cfbccf8878f777ba9b08578649517bfae3", + "@angular/forms": "github:angular/forms-builds#0616d2bad762c33dd19381967f4cfeb87e053cac", + "@angular/language-service": "github:angular/language-service-builds#d247d9050bf9f269ed80c4de6e184c03ffffb0cb", + "@angular/localize": "github:angular/localize-builds#d413efb46808f736315dbeaa4fed717743a5183c", + "@angular/material": "github:angular/material-builds#71272ef5c8accbd4e5c15225e918585ac0a2d533", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3d614573a6866edd01113df3c139db0d19e86d10", + "@angular/platform-browser": "github:angular/platform-browser-builds#c3f38466c5fca8ca295d5905791d87e64cf7c4b2", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7613f3eb64700c54db7e39ec92e772f141f999ce", + "@angular/platform-server": "github:angular/platform-server-builds#29833327b5a7ace82c2d5af23164decfcb25c099", + "@angular/router": "github:angular/router-builds#6f89fdeb84487e290f13ac3848fc38fc3d240b75", + "@angular/service-worker": "github:angular/service-worker-builds#df27df22057e72f35d66b8d3b9e8dc9887d9e135" } } From f9de11d67d3e0e0524372819583bc77756596d4f Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Wed, 19 Nov 2025 22:11:45 +0000 Subject: [PATCH 1843/2162] build: update to latest ng-dev tooling for caretaker handoff update Update to the latest tooling to upate how caretaker handoff is handled, using new standardized groupings --- .ng-dev/caretaker.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.ng-dev/caretaker.mjs b/.ng-dev/caretaker.mjs index a16e023b1cd0..d21e783f4af5 100644 --- a/.ng-dev/caretaker.mjs +++ b/.ng-dev/caretaker.mjs @@ -1,6 +1,6 @@ /** * The configuration for `ng-dev caretaker` commands. - * + * * @type { import("@angular/ng-dev").CaretakerConfig } */ export const caretaker = { @@ -14,5 +14,4 @@ export const caretaker = { query: `is:pr is:open label:"action: merge-assistance"`, }, ], - caretakerGroup: 'angular-cli-caretaker', }; From 439c463213b74c5019527875066b07a2972a7e85 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Nov 2025 10:06:24 +0000 Subject: [PATCH 1844/2162] build: add README.md to the SSR `ng_package` Adds a readme to the npm package --- packages/angular/ssr/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index 64b6f29ee270..dc70ac3fdf5b 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -61,6 +61,7 @@ ng_package( "//packages/angular/ssr/third_party/beasties:beasties_dts", ], package = "@angular/ssr", + readme_md = ":README.md", rollup_runtime_deps = [ "//:node_modules/@babel/core", "//:node_modules/@rollup/plugin-commonjs", From 0fe572ed7121953300bec373ac2261c8da6f89a4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Nov 2025 11:14:39 +0000 Subject: [PATCH 1845/2162] fix(@angular/build): ensure correct URL joining for prerender routes This commit addresses an issue where prerendering with i18n and a `routesFile` could lead to infinite redirect loops or failure to prerender `index.html`. The previous `urlJoin` utility was replaced with more robust URL manipulation functions (`joinUrlParts`, `addTrailingSlash`, `stripLeadingSlash`) to ensure that paths are correctly constructed, especially when dealing with base hrefs and locale subpaths. This ensures that routes from the `routesFile` are correctly joined with the base href, preventing malformed URLs that cause the redirection issues. Closes #31877 --- .../build/src/builders/application/options.ts | 6 +- .../src/utils/server-rendering/prerender.ts | 20 +-- packages/angular/build/src/utils/url.ts | 118 +++++++++++++++++- 3 files changed, 120 insertions(+), 24 deletions(-) diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 1b3a15b8cd56..25bd87253357 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -25,7 +25,7 @@ import { loadPostcssConfiguration, } from '../../utils/postcss-configuration'; import { getProjectRootPaths, normalizeDirectoryPath } from '../../utils/project-metadata'; -import { urlJoin } from '../../utils/url'; +import { addTrailingSlash, joinUrlParts } from '../../utils/url'; import { Schema as ApplicationBuilderOptions, ExperimentalPlatform, @@ -681,7 +681,9 @@ export function getLocaleBaseHref( const baseHrefSuffix = localeData.baseHref ?? localeData.subPath + '/'; - return baseHrefSuffix !== '' ? urlJoin(baseHref, baseHrefSuffix) : undefined; + return baseHrefSuffix !== '' + ? addTrailingSlash(joinUrlParts(baseHref, baseHrefSuffix)) + : undefined; } /** diff --git a/packages/angular/build/src/utils/server-rendering/prerender.ts b/packages/angular/build/src/utils/server-rendering/prerender.ts index 5ece379ec9c0..f33f851f10c4 100644 --- a/packages/angular/build/src/utils/server-rendering/prerender.ts +++ b/packages/angular/build/src/utils/server-rendering/prerender.ts @@ -14,7 +14,7 @@ import { BuildOutputFile, BuildOutputFileType } from '../../tools/esbuild/bundle import { BuildOutputAsset } from '../../tools/esbuild/bundler-execution-result'; import { assertIsError } from '../error'; import { toPosixPath } from '../path'; -import { urlJoin } from '../url'; +import { addLeadingSlash, addTrailingSlash, joinUrlParts, stripLeadingSlash } from '../url'; import { WorkerPool } from '../worker-pool'; import { IMPORT_EXEC_ARGV } from './esm-in-memory-loader/utils'; import { SERVER_APP_MANIFEST_FILENAME } from './manifest'; @@ -240,7 +240,7 @@ async function renderPages( ? addLeadingSlash(route.slice(baseHrefPathnameWithLeadingSlash.length)) : route; - const outPath = posix.join(removeLeadingSlash(routeWithoutBaseHref), 'index.html'); + const outPath = stripLeadingSlash(posix.join(routeWithoutBaseHref, 'index.html')); if (typeof redirectTo === 'string') { output[outPath] = { content: generateRedirectStaticPage(redirectTo), appShellRoute: false }; @@ -298,7 +298,7 @@ async function getAllRoutes( let appShellRoute: string | undefined; if (appShellOptions) { - appShellRoute = urlJoin(baseHref, appShellOptions.route); + appShellRoute = joinUrlParts(baseHref, appShellOptions.route); routes.push({ renderMode: RouteRenderMode.Prerender, @@ -311,7 +311,7 @@ async function getAllRoutes( for (const route of routesFromFile) { routes.push({ renderMode: RouteRenderMode.Prerender, - route: urlJoin(baseHref, route.trim()), + route: joinUrlParts(baseHref, route.trim()), }); } } @@ -369,15 +369,3 @@ async function getAllRoutes( void renderWorker.destroy(); } } - -function addLeadingSlash(value: string): string { - return value[0] === '/' ? value : '/' + value; -} - -function addTrailingSlash(url: string): string { - return url[url.length - 1] === '/' ? url : `${url}/`; -} - -function removeLeadingSlash(value: string): string { - return value[0] === '/' ? value.slice(1) : value; -} diff --git a/packages/angular/build/src/utils/url.ts b/packages/angular/build/src/utils/url.ts index d3f1e5791276..9edbfb3a3de5 100644 --- a/packages/angular/build/src/utils/url.ts +++ b/packages/angular/build/src/utils/url.ts @@ -6,11 +6,117 @@ * found in the LICENSE file at https://angular.dev/license */ -export function urlJoin(...parts: string[]): string { - const [p, ...rest] = parts; +/** + * Removes the trailing slash from a URL if it exists. + * + * @param url - The URL string from which to remove the trailing slash. + * @returns The URL string without a trailing slash. + * + * @example + * ```js + * stripTrailingSlash('path/'); // 'path' + * stripTrailingSlash('/path'); // '/path' + * stripTrailingSlash('/'); // '/' + * stripTrailingSlash(''); // '' + * ``` + */ +export function stripTrailingSlash(url: string): string { + // Check if the last character of the URL is a slash + return url.length > 1 && url[url.length - 1] === '/' ? url.slice(0, -1) : url; +} + +/** + * Removes the leading slash from a URL if it exists. + * + * @param url - The URL string from which to remove the leading slash. + * @returns The URL string without a leading slash. + * + * @example + * ```js + * stripLeadingSlash('/path'); // 'path' + * stripLeadingSlash('/path/'); // 'path/' + * stripLeadingSlash('/'); // '/' + * stripLeadingSlash(''); // '' + * ``` + */ +export function stripLeadingSlash(url: string): string { + // Check if the first character of the URL is a slash + return url.length > 1 && url[0] === '/' ? url.slice(1) : url; +} + +/** + * Adds a leading slash to a URL if it does not already have one. + * + * @param url - The URL string to which the leading slash will be added. + * @returns The URL string with a leading slash. + * + * @example + * ```js + * addLeadingSlash('path'); // '/path' + * addLeadingSlash('/path'); // '/path' + * ``` + */ +export function addLeadingSlash(url: string): string { + // Check if the URL already starts with a slash + return url[0] === '/' ? url : `/${url}`; +} + +/** + * Adds a trailing slash to a URL if it does not already have one. + * + * @param url - The URL string to which the trailing slash will be added. + * @returns The URL string with a trailing slash. + * + * @example + * ```js + * addTrailingSlash('path'); // 'path/' + * addTrailingSlash('path/'); // 'path/' + * ``` + */ +export function addTrailingSlash(url: string): string { + // Check if the URL already end with a slash + return url[url.length - 1] === '/' ? url : `${url}/`; +} + +/** + * Joins URL parts into a single URL string. + * + * This function takes multiple URL segments, normalizes them by removing leading + * and trailing slashes where appropriate, and then joins them into a single URL. + * + * @param parts - The parts of the URL to join. Each part can be a string with or without slashes. + * @returns The joined URL string, with normalized slashes. + * + * @example + * ```js + * joinUrlParts('path/', '/to/resource'); // '/path/to/resource' + * joinUrlParts('/path/', 'to/resource'); // '/path/to/resource' + * joinUrlParts('http://localhost/path/', 'to/resource'); // 'http://localhost/path/to/resource' + * joinUrlParts('', ''); // '/' + * ``` + */ +export function joinUrlParts(...parts: string[]): string { + const normalizeParts: string[] = []; + for (const part of parts) { + if (part === '') { + // Skip any empty parts + continue; + } + + let normalizedPart = part; + if (part[0] === '/') { + normalizedPart = normalizedPart.slice(1); + } + if (part[part.length - 1] === '/') { + normalizedPart = normalizedPart.slice(0, -1); + } + if (normalizedPart !== '') { + normalizeParts.push(normalizedPart); + } + } + + const protocolMatch = normalizeParts.length && /^https?:\/\//.test(normalizeParts[0]); + const joinedParts = normalizeParts.join('/'); - // Remove trailing slash from first part - // Join all parts with `/` - // Dedupe double slashes from path names - return p.replace(/\/$/, '') + ('/' + rest.join('/')).replace(/\/\/+/g, '/'); + return protocolMatch ? joinedParts : addLeadingSlash(joinedParts); } From f38fadeccdc3cc7b25facb8bd5224bfa99fe9626 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Nov 2025 15:58:51 -0500 Subject: [PATCH 1846/2162] fix(@schematics/angular): add mock names to createSpyObj transformation This commit enhances the jasmine-vitest schematic by adding mock names to `vi.fn()` instances created from `jasmine.createSpyObj`. This improves debugging in Vitest by providing meaningful names for mock functions, making test failures easier to understand and trace. --- .../test-file-transformer.integration_spec.ts | 6 ++- .../test-file-transformer_spec.ts | 6 +-- .../transformers/jasmine-spy.ts | 51 +++++++++++++++---- .../transformers/jasmine-spy_spec.ts | 20 ++++---- 4 files changed, 57 insertions(+), 26 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index ebc7e1631907..0fe0d7c5b3e2 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -255,14 +255,15 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { }); `; + /* eslint-disable max-len */ const vitestCode = ` describe('Complex Scenarios', () => { let serviceMock; beforeEach(() => { serviceMock = { - getData: vi.fn().mockReturnValue(expect.any(String)), - process: vi.fn().mockReturnValue(undefined), + getData: vi.fn().mockName("MyService.getData").mockReturnValue(expect.any(String)), + process: vi.fn().mockName("MyService.process").mockReturnValue(undefined), }; }); @@ -299,6 +300,7 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { }); }); `; + /* eslint-enable max-len */ await expectTransformation(jasmineCode, vitestCode); }); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts index bc55811306b3..45580be66476 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts @@ -78,7 +78,7 @@ describe('Jasmine to Vitest Transformer', () => { input: `const spy = jasmine.createSpyObj('MyService', { getPromise: Promise.resolve(jasmine.any(String)) });`, expected: ` const spy = { - getPromise: vi.fn().mockReturnValue(Promise.resolve(expect.any(String))), + getPromise: vi.fn().mockName("MyService.getPromise").mockReturnValue(Promise.resolve(expect.any(String))), }; `, }, @@ -105,8 +105,8 @@ describe('Jasmine to Vitest Transformer', () => { `, expected: ` const myService = { - methodA: vi.fn(), - propA: 'valueA' + methodA: vi.fn().mockName("MyService.methodA"), + propA: 'valueA', }; vi.spyOn(myService, 'methodA').mockReturnValue('mocked value'); myService.methodA('test'); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index d2d9af5f01a6..c10fc739f9af 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -227,6 +227,12 @@ export function transformCreateSpyObj( 'Transformed `jasmine.createSpyObj()` to an object literal with `vi.fn()`.', ); + const baseNameArg = node.arguments[0]; + const baseName = ts.isStringLiteral(baseNameArg) ? baseNameArg.text : undefined; + const methods = node.arguments[1]; + const propertiesArg = node.arguments[2]; + let properties: ts.PropertyAssignment[] = []; + if (node.arguments.length < 2) { const category = 'createSpyObj-single-argument'; reporter.recordTodo(category); @@ -235,14 +241,10 @@ export function transformCreateSpyObj( return node; } - const methods = node.arguments[1]; - const propertiesArg = node.arguments[2]; - let properties: ts.PropertyAssignment[] = []; - if (ts.isArrayLiteralExpression(methods)) { - properties = createSpyObjWithArray(methods); + properties = createSpyObjWithArray(methods, baseName); } else if (ts.isObjectLiteralExpression(methods)) { - properties = createSpyObjWithObject(methods); + properties = createSpyObjWithObject(methods, baseName); } else { const category = 'createSpyObj-dynamic-variable'; reporter.recordTodo(category); @@ -264,13 +266,28 @@ export function transformCreateSpyObj( return ts.factory.createObjectLiteralExpression(properties, true); } -function createSpyObjWithArray(methods: ts.ArrayLiteralExpression): ts.PropertyAssignment[] { +function createSpyObjWithArray( + methods: ts.ArrayLiteralExpression, + baseName: string | undefined, +): ts.PropertyAssignment[] { return methods.elements .map((element) => { if (ts.isStringLiteral(element)) { + const mockFn = createViCallExpression('fn'); + const methodName = element.text; + let finalExpression: ts.Expression = mockFn; + + if (baseName) { + finalExpression = ts.factory.createCallExpression( + createPropertyAccess(finalExpression, 'mockName'), + undefined, + [ts.factory.createStringLiteral(`${baseName}.${methodName}`)], + ); + } + return ts.factory.createPropertyAssignment( - ts.factory.createIdentifier(element.text), - createViCallExpression('fn'), + ts.factory.createIdentifier(methodName), + finalExpression, ); } @@ -279,13 +296,25 @@ function createSpyObjWithArray(methods: ts.ArrayLiteralExpression): ts.PropertyA .filter((p): p is ts.PropertyAssignment => !!p); } -function createSpyObjWithObject(methods: ts.ObjectLiteralExpression): ts.PropertyAssignment[] { +function createSpyObjWithObject( + methods: ts.ObjectLiteralExpression, + baseName: string | undefined, +): ts.PropertyAssignment[] { return methods.properties .map((prop) => { if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) { const methodName = prop.name.text; const returnValue = prop.initializer; - const mockFn = createViCallExpression('fn'); + let mockFn = createViCallExpression('fn'); + + if (baseName) { + mockFn = ts.factory.createCallExpression( + createPropertyAccess(mockFn, 'mockName'), + undefined, + [ts.factory.createStringLiteral(`${baseName}.${methodName}`)], + ); + } + const mockReturnValue = createPropertyAccess(mockFn, 'mockReturnValue'); return ts.factory.createPropertyAssignment( diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts index c84b35c422ac..3fc98aa02601 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts @@ -118,8 +118,8 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, description: 'should transform jasmine.createSpyObj with an array of methods', input: `const myService = jasmine.createSpyObj('MyService', ['methodA', 'methodB']);`, expected: `const myService = { - methodA: vi.fn(), - methodB: vi.fn() + methodA: vi.fn().mockName("MyService.methodA"), + methodB: vi.fn().mockName("MyService.methodB"), };`, }, { @@ -134,8 +134,8 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, description: 'should transform jasmine.createSpyObj with an object of return values', input: `const myService = jasmine.createSpyObj('MyService', { methodA: 'foo', methodB: 42 });`, expected: `const myService = { - methodA: vi.fn().mockReturnValue('foo'), - methodB: vi.fn().mockReturnValue(42) + methodA: vi.fn().mockName("MyService.methodA").mockReturnValue('foo'), + methodB: vi.fn().mockName("MyService.methodB").mockReturnValue(42), };`, }, { @@ -143,7 +143,7 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, 'should transform jasmine.createSpyObj with an object of return values containing an asymmetric matcher', input: `const myService = jasmine.createSpyObj('MyService', { methodA: jasmine.any(String) });`, expected: `const myService = { - methodA: vi.fn().mockReturnValue(expect.any(String)) + methodA: vi.fn().mockName("MyService.methodA").mockReturnValue(expect.any(String)), };`, }, { @@ -158,23 +158,23 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, description: 'should transform jasmine.createSpyObj with a property map', input: `const myService = jasmine.createSpyObj('MyService', ['methodA'], { propA: 'valueA' });`, expected: `const myService = { - methodA: vi.fn(), - propA: 'valueA' + methodA: vi.fn().mockName("MyService.methodA"), + propA: 'valueA', };`, }, { description: 'should transform jasmine.createSpyObj with a method map and a property map', input: `const myService = jasmine.createSpyObj('MyService', { methodA: 'foo' }, { propA: 'valueA' });`, expected: `const myService = { - methodA: vi.fn().mockReturnValue('foo'), - propA: 'valueA' + methodA: vi.fn().mockName("MyService.methodA").mockReturnValue('foo'), + propA: 'valueA', };`, }, { description: 'should ignore non-string literals in the method array', input: `const myService = jasmine.createSpyObj('MyService', ['methodA', 123, someVar]);`, expected: `const myService = { - methodA: vi.fn() + methodA: vi.fn().mockName("MyService.methodA"), };`, }, ]; From 2b99ce515dc8bf8a06bbc0f88d07f02d7c5ef828 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Nov 2025 16:04:42 -0500 Subject: [PATCH 1847/2162] fix(@schematics/angular): improve safety of done callback transformation This commit adds a safety check to the `done` callback transformation in the `jasmine-vitest` schematic. Previously, if a `done` callback was used in an unhandled way (e.g., passed as an argument to a helper function), the schematic would remove the `done` parameter but leave the usage, causing runtime errors. Now, the transformer counts the total usages of the `done` callback and compares it to the number of usages it successfully transformed. If there are unhandled usages, it aborts the transformation for that specific test and adds a TODO comment, ensuring that no broken code is generated. --- .../transformers/jasmine-lifecycle.ts | 35 +++++++++++++++++++ .../transformers/jasmine-lifecycle_spec.ts | 15 ++++++++ .../jasmine-vitest/utils/todo-notes.ts | 3 ++ 3 files changed, 53 insertions(+) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts index 235eef129d11..f2b60c35f327 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts @@ -282,6 +282,19 @@ function transformPromiseBasedDone( return undefined; } +function countDoneUsages(node: ts.Node, doneIdentifier: ts.Identifier): number { + let count = 0; + const visitor = (n: ts.Node) => { + if (ts.isIdentifier(n) && n.text === doneIdentifier.text) { + count++; + } + ts.forEachChild(n, visitor); + }; + ts.forEachChild(node, visitor); + + return count; +} + export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContext): ts.Node { const { sourceFile, reporter, tsContext } = refactorCtx; if ( @@ -309,12 +322,17 @@ export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContex return node; } const doneIdentifier = doneParam.name; + + // Count total usages of 'done' in the body + const totalUsages = countDoneUsages(functionArg.body, doneIdentifier); + let handledUsages = 0; let doneWasUsed = false; const bodyVisitor = (bodyNode: ts.Node): ts.Node | ts.Node[] | undefined => { const complexTransformed = transformComplexDoneCallback(bodyNode, doneIdentifier, refactorCtx); if (complexTransformed !== bodyNode) { doneWasUsed = true; + handledUsages++; // complex transform handles one usage return complexTransformed; } @@ -330,6 +348,7 @@ export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContex callExpr.expression.name.text === 'fail' ) { doneWasUsed = true; + handledUsages++; reporter.reportTransformation( sourceFile, bodyNode, @@ -350,6 +369,7 @@ export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContex const promiseTransformed = transformPromiseBasedDone(callExpr, doneIdentifier, refactorCtx); if (promiseTransformed) { doneWasUsed = true; + handledUsages++; return promiseTransformed; } @@ -360,6 +380,7 @@ export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContex callExpr.expression.text === doneIdentifier.text ) { doneWasUsed = true; + handledUsages++; return ts.setTextRange(ts.factory.createEmptyStatement(), callExpr.expression); } @@ -383,6 +404,20 @@ export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContex return bodyVisitor(node); }); + // Safety check: if we found usages but didn't handle all of them, abort. + if (handledUsages < totalUsages) { + reporter.reportTransformation( + sourceFile, + node, + `Found unhandled usage of \`${doneIdentifier.text}\` callback. Skipping transformation.`, + ); + const category = 'unhandled-done-usage'; + reporter.recordTodo(category); + addTodoComment(node, category); + + return node; + } + if (!doneWasUsed) { return node; } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts index d5f9e3231180..f41f5fa7ae32 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts @@ -132,6 +132,7 @@ describe('Jasmine to Vitest Transformer', () => { }); `, expected: ` + // TODO: vitest-migration: The 'done' callback was used in an unhandled way. Please migrate manually. it('should not transform a function with a parameter that is not a done callback', (value) => { expect(value).toBe(true); }); @@ -157,6 +158,20 @@ describe('Jasmine to Vitest Transformer', () => { }); `, }, + { + description: 'should add a TODO for unhandled done usage', + input: ` + it('should do something with helper', (done) => { + someHelper(done); + }); + `, + expected: ` + // TODO: vitest-migration: The 'done' callback was used in an unhandled way. Please migrate manually. + it('should do something with helper', (done) => { + someHelper(done); + }); + `, + }, ]; testCases.forEach(({ description, input, expected }) => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts index c0a5eb406e6a..3f43a6e4f838 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts @@ -120,6 +120,9 @@ export const TODO_NOTES = { ' Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall.', url: 'https://vitest.dev/api/mocked.html#mock-lastcall', }, + 'unhandled-done-usage': { + message: "The 'done' callback was used in an unhandled way. Please migrate manually.", + }, } as const; /** From 7c6a643f94a9b6abaf6578e9e98eb45da3bc17b2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Nov 2025 16:13:07 -0500 Subject: [PATCH 1848/2162] fix(@schematics/angular): warn about loose matching in arrayWithExactContents This commit improves the transformation of `jasmine.arrayWithExactContents` in the `jasmine-vitest` schematic. While Vitest does not have a direct equivalent for multiset equality, the schematic previously transformed this into a check for length and subset containment, which could lead to false positives (e.g., `[1, 1]` matches `[1, 2]`). Now, the schematic attaches a TODO comment to the generated code, explicitly warning the user that the transformation relies on `expect.arrayContaining` (a subset check) and advising them to verify strict content matching manually. --- .../test-file-transformer.integration_spec.ts | 1 + .../jasmine-vitest/test-file-transformer_spec.ts | 3 +++ .../jasmine-vitest/transformers/jasmine-matcher.ts | 12 ++++++++---- .../transformers/jasmine-matcher_spec.ts | 6 ++++++ .../refactor/jasmine-vitest/utils/todo-notes.ts | 4 ++++ 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index 0fe0d7c5b3e2..8944e34dfa14 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -275,6 +275,7 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { it('should handle array contents checking', () => { const arr = [1, 2, 3]; + // TODO: vitest-migration: Verify this matches strict array content (multiset equality). Vitest's arrayContaining is a subset check. expect(arr).toHaveLength(3); expect(arr).toEqual(expect.arrayContaining([3, 2, 1])); }); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts index 45580be66476..abe1f3655cdd 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts @@ -85,10 +85,13 @@ describe('Jasmine to Vitest Transformer', () => { { description: 'should handle arrayWithExactContents containing nested asymmetric matchers', input: `expect(myArray).toEqual(jasmine.arrayWithExactContents([jasmine.objectContaining({ id: 1 })]));`, + /* eslint-disable max-len */ expected: ` + // TODO: vitest-migration: Verify this matches strict array content (multiset equality). Vitest's arrayContaining is a subset check. expect(myArray).toHaveLength(1); expect(myArray).toEqual(expect.arrayContaining([expect.objectContaining({ id: 1 })])); `, + /* eslint-enable max-len */ }, { description: 'should handle a spy rejecting with an asymmetric matcher', diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts index b1b746aad504..5de173bcd52b 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts @@ -451,10 +451,14 @@ export function transformArrayWithExactContents( ], ); - return [ - ts.factory.createExpressionStatement(lengthCall), - ts.factory.createExpressionStatement(containingCall), - ]; + const lengthStmt = ts.factory.createExpressionStatement(lengthCall); + const containingStmt = ts.factory.createExpressionStatement(containingCall); + + const category = 'arrayWithExactContents-check'; + reporter.recordTodo(category); + addTodoComment(lengthStmt, category); + + return [lengthStmt, containingStmt]; } export function transformCalledOnceWith( diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts index 69b0637254aa..a46fc63d2a01 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts @@ -225,19 +225,25 @@ expect(mySpyObj).toHaveSpyInteractions();`, { description: 'should transform toEqual(jasmine.arrayWithExactContents()) into two calls', input: `expect(myArray).toEqual(jasmine.arrayWithExactContents(['a', 'b']));`, + /* eslint-disable max-len */ expected: ` + // TODO: vitest-migration: Verify this matches strict array content (multiset equality). Vitest's arrayContaining is a subset check. expect(myArray).toHaveLength(2); expect(myArray).toEqual(expect.arrayContaining(['a', 'b'])); `, + /* eslint-enable max-len */ }, { description: 'should transform toEqual(jasmine.arrayWithExactContents()) with asymmetric matchers', input: `expect(myArray).toEqual(jasmine.arrayWithExactContents([jasmine.any(Number), 'a']));`, + /* eslint-disable max-len */ expected: ` + // TODO: vitest-migration: Verify this matches strict array content (multiset equality). Vitest's arrayContaining is a subset check. expect(myArray).toHaveLength(2); expect(myArray).toEqual(expect.arrayContaining([expect.any(Number), 'a'])); `, + /* eslint-enable max-len */ }, { description: diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts index 3f43a6e4f838..a4964b1e456b 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts @@ -56,6 +56,10 @@ export const TODO_NOTES = { message: 'Cannot transform jasmine.arrayWithExactContents with a dynamic variable. Please migrate this manually.', }, + 'arrayWithExactContents-check': { + message: + "Verify this matches strict array content (multiset equality). Vitest's arrayContaining is a subset check.", + }, 'expect-nothing': { message: 'expect().nothing() has been removed because it is redundant in Vitest. Tests without assertions pass by default.', From a71411fb298c4f0b1537347dd0cf67b93a70eb12 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Nov 2025 13:56:20 -0500 Subject: [PATCH 1849/2162] fix(@angular/build): correctly configure per-browser headless mode in Vitest runner This commit fixes an issue in the Vitest browser setup where headless mode was not correctly configured on a per-browser-instance basis. Previously, the headless mode was applied globally, leading to incorrect behavior when mixing headed and headless browser names, or in specific environments. Now, the configuration correctly: - Determines headless status from individual browser names (e.g., `ChromeHeadless` vs `Chrome`). - Forces all instances to be headless in CI environments. - Ensures the Preview provider forces instances to be headed. - Enables the UI only when running locally with at least one headed browser. --- .../runners/vitest/browser-provider.ts | 26 +-- .../runners/vitest/browser-provider_spec.ts | 163 ++++++++++++++++++ 2 files changed, 179 insertions(+), 10 deletions(-) create mode 100644 packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index 4f7469ebf28b..3aeeb7afe474 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -36,13 +36,17 @@ function findBrowserProvider( return undefined; } -function normalizeBrowserName(browserName: string): string { +function normalizeBrowserName(browserName: string): { browser: string; headless: boolean } { // Normalize browser names to match Vitest's expectations for headless but also supports karma's names // e.g., 'ChromeHeadless' -> 'chrome', 'FirefoxHeadless' -> 'firefox' // and 'Chrome' -> 'chrome', 'Firefox' -> 'firefox'. const normalized = browserName.toLowerCase(); + const headless = normalized.endsWith('headless'); - return normalized.replace(/headless$/, ''); + return { + browser: headless ? normalized.slice(0, -8) : normalized, + headless: headless, + }; } export async function setupBrowserConfiguration( @@ -120,21 +124,23 @@ export async function setupBrowserConfiguration( } const isCI = !!process.env['CI']; - let headless = isCI || browsers.some((name) => name.toLowerCase().includes('headless')); + const instances = browsers.map(normalizeBrowserName); if (providerName === 'preview') { - // `preview` provider does not support headless mode - headless = false; + instances.forEach((instance) => { + instance.headless = false; + }); + } else if (isCI) { + instances.forEach((instance) => { + instance.headless = true; + }); } const browser = { enabled: true, provider, - headless, - ui: !headless, + ui: !isCI && instances.some((instance) => !instance.headless), viewport, - instances: browsers.map((browserName) => ({ - browser: normalizeBrowserName(browserName), - })), + instances, } satisfies BrowserConfigOptions; return { browser }; diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts new file mode 100644 index 000000000000..2162ffa6ed5e --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts @@ -0,0 +1,163 @@ +/** + * @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 { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { setupBrowserConfiguration } from './browser-provider'; + +describe('setupBrowserConfiguration', () => { + let workspaceRoot: string; + + beforeEach(async () => { + // Create a temporary workspace root + workspaceRoot = await mkdtemp(join(tmpdir(), 'angular-cli-test-')); + await writeFile(join(workspaceRoot, 'package.json'), '{}'); + + // Create a mock @vitest/browser-playwright package + const playwrightPkgPath = join(workspaceRoot, 'node_modules/@vitest/browser-playwright'); + await mkdir(playwrightPkgPath, { recursive: true }); + await writeFile( + join(playwrightPkgPath, 'package.json'), + JSON.stringify({ name: '@vitest/browser-playwright', main: 'index.js' }), + ); + await writeFile( + join(playwrightPkgPath, 'index.js'), + 'module.exports = { playwright: () => ({ name: "playwright" }) };', + ); + }); + + afterEach(async () => { + await rm(workspaceRoot, { recursive: true, force: true }); + }); + + it('should configure headless mode for specific browsers based on name', async () => { + const { browser } = await setupBrowserConfiguration( + ['ChromeHeadless', 'Firefox'], + false, + workspaceRoot, + undefined, + ); + + expect(browser?.enabled).toBeTrue(); + expect(browser?.instances).toEqual([ + { browser: 'chrome', headless: true }, + { browser: 'firefox', headless: false }, + ]); + }); + + it('should force headless mode in CI environment', async () => { + const originalCI = process.env['CI']; + process.env['CI'] = 'true'; + + try { + const { browser } = await setupBrowserConfiguration( + ['Chrome', 'FirefoxHeadless'], + false, + workspaceRoot, + undefined, + ); + + expect(browser?.instances).toEqual([ + { browser: 'chrome', headless: true }, + { browser: 'firefox', headless: true }, + ]); + } finally { + if (originalCI === undefined) { + delete process.env['CI']; + } else { + process.env['CI'] = originalCI; + } + } + }); + + it('should set ui property based on headless instances (local)', async () => { + // Local run (not CI) + const originalCI = process.env['CI']; + delete process.env['CI']; + + try { + // Case 1: All headless -> UI false + let result = await setupBrowserConfiguration( + ['ChromeHeadless'], + false, + workspaceRoot, + undefined, + ); + expect(result.browser?.ui).toBeFalse(); + + // Case 2: Mixed -> UI true + result = await setupBrowserConfiguration( + ['ChromeHeadless', 'Firefox'], + false, + workspaceRoot, + undefined, + ); + expect(result.browser?.ui).toBeTrue(); + } finally { + if (originalCI !== undefined) { + process.env['CI'] = originalCI; + } + } + }); + + it('should disable UI in CI even if headed browsers are requested', async () => { + const originalCI = process.env['CI']; + process.env['CI'] = 'true'; + + try { + const { browser } = await setupBrowserConfiguration( + ['Chrome'], + false, + workspaceRoot, + undefined, + ); + + expect(browser?.ui).toBeFalse(); + // And verify instances are forced to headless + expect(browser?.instances?.[0].headless).toBeTrue(); + } finally { + if (originalCI === undefined) { + delete process.env['CI']; + } else { + process.env['CI'] = originalCI; + } + } + }); + + it('should support Preview provider forcing headless false', async () => { + // Create mock preview package + const previewPkgPath = join(workspaceRoot, 'node_modules/@vitest/browser-preview'); + await mkdir(previewPkgPath, { recursive: true }); + await writeFile( + join(previewPkgPath, 'package.json'), + JSON.stringify({ name: '@vitest/browser-preview', main: 'index.js' }), + ); + await writeFile( + join(previewPkgPath, 'index.js'), + 'module.exports = { preview: () => ({ name: "preview" }) };', + ); + + // Remove playwright mock for this test to force usage of preview + await rm(join(workspaceRoot, 'node_modules/@vitest/browser-playwright'), { + recursive: true, + force: true, + }); + + const { browser } = await setupBrowserConfiguration( + ['ChromeHeadless'], + false, + workspaceRoot, + undefined, + ); + + expect(browser?.provider).toBeDefined(); + // Preview forces headless false + expect(browser?.instances?.[0].headless).toBeFalse(); + }); +}); From 26719451c35288c0b5342eceda3460ed24bd3171 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 20 Nov 2025 16:00:59 +0100 Subject: [PATCH 1850/2162] refactor: modernize array and string last element access using `.at(-1)` Replace usages of old patterns. --- .../tests/behavior/serve-live-reload-proxies_spec.ts | 3 +-- .../build/src/builders/dev-server/tests/execute-fetch.ts | 4 ++-- .../angular/build/src/builders/dev-server/vite/index.ts | 4 +--- .../build/src/tools/vite/middlewares/assets-middleware.ts | 2 +- packages/angular/build/src/utils/project-metadata.ts | 2 +- .../angular/build/src/utils/server-rendering/manifest.ts | 2 +- packages/angular/build/src/utils/url.ts | 6 +++--- .../cli/src/command-builder/utilities/json-schema.ts | 2 +- packages/angular/ssr/BUILD.bazel | 2 +- packages/angular/ssr/src/utils/url.ts | 6 +++--- .../architect/src/jobs/simple-scheduler_spec.ts | 2 +- .../tests/behavior/serve-live-reload-proxies_spec.ts | 3 +-- .../src/builders/dev-server/tests/execute-fetch.ts | 2 +- packages/angular_devkit/core/src/utils/template.ts | 4 +--- packages/angular_devkit/core/src/virtual-fs/path.ts | 2 +- packages/angular_devkit/schematics/src/tree/action.ts | 2 +- packages/angular_devkit/schematics/src/workflow/base.ts | 4 ++-- tests/legacy-cli/e2e_runner.ts | 2 +- tsconfig-build-esm.json | 2 +- 19 files changed, 25 insertions(+), 31 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts b/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts index 65f34bddf94d..efdd749de258 100644 --- a/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts +++ b/packages/angular/build/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts @@ -105,8 +105,7 @@ DDIy4xXPW1STWfsmSYJfYW3wa0wk+pJQ3j2cTzkPQQ8gwpvM3U9DJl43uwb37v6I async function goToPageAndWaitForWS(page: Page, url: string): Promise { const baseUrl = url.replace(/^http/, 'ws'); - const socksRequest = - baseUrl[baseUrl.length - 1] === '/' ? `${baseUrl}ng-cli-ws` : `${baseUrl}/ng-cli-ws`; + const socksRequest = baseUrl.at(-1) === '/' ? `${baseUrl}ng-cli-ws` : `${baseUrl}/ng-cli-ws`; // Create a Chrome dev tools session so that we can capturing websocket request. // https://github.com/puppeteer/puppeteer/issues/2974 diff --git a/packages/angular/build/src/builders/dev-server/tests/execute-fetch.ts b/packages/angular/build/src/builders/dev-server/tests/execute-fetch.ts index ebbdcf3f1133..75a4e7935ebe 100644 --- a/packages/angular/build/src/builders/dev-server/tests/execute-fetch.ts +++ b/packages/angular/build/src/builders/dev-server/tests/execute-fetch.ts @@ -28,7 +28,7 @@ export async function executeOnceAndFetch( let content = undefined; if (executionResult.result?.success) { let baseUrl = `${executionResult.result.baseUrl}`; - baseUrl = baseUrl[baseUrl.length - 1] === '/' ? baseUrl : `${baseUrl}/`; + baseUrl = baseUrl.at(-1) === '/' ? baseUrl : `${baseUrl}/`; const resolvedUrl = new URL(url, baseUrl); const originalResponse = await fetch(resolvedUrl, options?.request); response = originalResponse.clone(); @@ -68,7 +68,7 @@ export async function executeOnceAndGet( let content = undefined; if (executionResult.result?.success) { let baseUrl = `${executionResult.result.baseUrl}`; - baseUrl = baseUrl[baseUrl.length - 1] === '/' ? baseUrl : `${baseUrl}/`; + baseUrl = baseUrl.at(-1) === '/' ? baseUrl : `${baseUrl}/`; const resolvedUrl = new URL(url, baseUrl); response = await new Promise((resolve) => diff --git a/packages/angular/build/src/builders/dev-server/vite/index.ts b/packages/angular/build/src/builders/dev-server/vite/index.ts index 75987b2c2cc2..8129daac1ba1 100644 --- a/packages/angular/build/src/builders/dev-server/vite/index.ts +++ b/packages/angular/build/src/builders/dev-server/vite/index.ts @@ -243,9 +243,7 @@ export async function* serveWithVite( const baseHref = result.detail['htmlBaseHref'] as string; // Remove trailing slash serverOptions.servePath = - baseHref !== './' && baseHref[baseHref.length - 1] === '/' - ? baseHref.slice(0, -1) - : baseHref; + baseHref !== './' && baseHref.at(-1) === '/' ? baseHref.slice(0, -1) : baseHref; } assetFiles.clear(); diff --git a/packages/angular/build/src/tools/vite/middlewares/assets-middleware.ts b/packages/angular/build/src/tools/vite/middlewares/assets-middleware.ts index 414ec5ca13d1..f0a137f578f8 100644 --- a/packages/angular/build/src/tools/vite/middlewares/assets-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/assets-middleware.ts @@ -40,7 +40,7 @@ export function createAngularAssetsMiddleware( // The base of the URL is unused but required to parse the URL. const pathname = pathnameWithoutBasePath(req.url, server.config.base); const extension = extname(pathname); - const pathnameHasTrailingSlash = pathname[pathname.length - 1] === '/'; + const pathnameHasTrailingSlash = pathname.at(-1) === '/'; // Rewrite all build assets to a vite raw fs URL const asset = assets.get(pathname); diff --git a/packages/angular/build/src/utils/project-metadata.ts b/packages/angular/build/src/utils/project-metadata.ts index bc997652fef1..31912d5e9905 100644 --- a/packages/angular/build/src/utils/project-metadata.ts +++ b/packages/angular/build/src/utils/project-metadata.ts @@ -15,7 +15,7 @@ import { join } from 'node:path'; * @returns A normalized path string. */ export function normalizeDirectoryPath(path: string): string { - const last = path[path.length - 1]; + const last = path.at(-1); if (last === '/' || last === '\\') { return path.slice(0, -1); } diff --git a/packages/angular/build/src/utils/server-rendering/manifest.ts b/packages/angular/build/src/utils/server-rendering/manifest.ts index 2dfad0ff2dfb..b01bff38b58f 100644 --- a/packages/angular/build/src/utils/server-rendering/manifest.ts +++ b/packages/angular/build/src/utils/server-rendering/manifest.ts @@ -77,7 +77,7 @@ export function generateAngularServerAppEngineManifest( // Remove trailing slash but retain leading slash. let basePath = baseHref || '/'; - if (basePath.length > 1 && basePath[basePath.length - 1] === '/') { + if (basePath.length > 1 && basePath.at(-1) === '/') { basePath = basePath.slice(0, -1); } diff --git a/packages/angular/build/src/utils/url.ts b/packages/angular/build/src/utils/url.ts index 9edbfb3a3de5..689eac37eab5 100644 --- a/packages/angular/build/src/utils/url.ts +++ b/packages/angular/build/src/utils/url.ts @@ -22,7 +22,7 @@ */ export function stripTrailingSlash(url: string): string { // Check if the last character of the URL is a slash - return url.length > 1 && url[url.length - 1] === '/' ? url.slice(0, -1) : url; + return url.length > 1 && url.at(-1) === '/' ? url.slice(0, -1) : url; } /** @@ -75,7 +75,7 @@ export function addLeadingSlash(url: string): string { */ export function addTrailingSlash(url: string): string { // Check if the URL already end with a slash - return url[url.length - 1] === '/' ? url : `${url}/`; + return url.at(-1) === '/' ? url : `${url}/`; } /** @@ -107,7 +107,7 @@ export function joinUrlParts(...parts: string[]): string { if (part[0] === '/') { normalizedPart = normalizedPart.slice(1); } - if (part[part.length - 1] === '/') { + if (part.at(-1) === '/') { normalizedPart = normalizedPart.slice(0, -1); } if (normalizedPart !== '') { diff --git a/packages/angular/cli/src/command-builder/utilities/json-schema.ts b/packages/angular/cli/src/command-builder/utilities/json-schema.ts index e9fbd7e0e27a..0a4215be8eed 100644 --- a/packages/angular/cli/src/command-builder/utilities/json-schema.ts +++ b/packages/angular/cli/src/command-builder/utilities/json-schema.ts @@ -334,7 +334,7 @@ export async function parseJsonSchemaToOptions( // Skip any non-property items. return; } - const name = ptr[ptr.length - 1]; + const name = ptr.at(-1) as string; const types = getSupportedTypes(current); diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index dc70ac3fdf5b..2fd35cf8adc3 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -20,7 +20,7 @@ ts_project( ), args = [ "--lib", - "dom,es2020", + "dom,es2022", ], data = [ "//packages/angular/ssr/third_party/beasties:beasties_bundled", diff --git a/packages/angular/ssr/src/utils/url.ts b/packages/angular/ssr/src/utils/url.ts index 9b5edede7f8e..55d37ad9a05f 100644 --- a/packages/angular/ssr/src/utils/url.ts +++ b/packages/angular/ssr/src/utils/url.ts @@ -22,7 +22,7 @@ */ export function stripTrailingSlash(url: string): string { // Check if the last character of the URL is a slash - return url.length > 1 && url[url.length - 1] === '/' ? url.slice(0, -1) : url; + return url.length > 1 && url.at(-1) === '/' ? url.slice(0, -1) : url; } /** @@ -75,7 +75,7 @@ export function addLeadingSlash(url: string): string { */ export function addTrailingSlash(url: string): string { // Check if the URL already end with a slash - return url[url.length - 1] === '/' ? url : `${url}/`; + return url.at(-1) === '/' ? url : `${url}/`; } /** @@ -106,7 +106,7 @@ export function joinUrlParts(...parts: string[]): string { if (part[0] === '/') { normalizedPart = normalizedPart.slice(1); } - if (part[part.length - 1] === '/') { + if (part.at(-1) === '/') { normalizedPart = normalizedPart.slice(0, -1); } if (normalizedPart !== '') { diff --git a/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts b/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts index a4b1ee75a922..560927179294 100644 --- a/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts +++ b/packages/angular_devkit/architect/src/jobs/simple-scheduler_spec.ts @@ -168,7 +168,7 @@ describe('SimpleScheduler', () => { // Might be out of order. expect(done).toEqual(jasmine.arrayContaining([1, 2, 3, 4, 5, 6, 7])); // Verify at least partial order. - expect(done[done.length - 1]).toBe(7); + expect(done.at(-1)).toBe(7); expect(done.indexOf(4)).toBeGreaterThan(done.indexOf(1)); expect(done.indexOf(5)).toBeGreaterThan(done.indexOf(2)); expect(done.indexOf(6)).toBeGreaterThan(done.indexOf(3)); diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts index c2a1758f2b5e..09d50dbb4528 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/behavior/serve-live-reload-proxies_spec.ts @@ -108,8 +108,7 @@ async function createProxy(target: string, secure: boolean, ws = true): Promise< async function goToPageAndWaitForWS(page: Page, url: string): Promise { const baseUrl = url.replace(/^http/, 'ws'); - const socksRequest = - baseUrl[baseUrl.length - 1] === '/' ? `${baseUrl}ng-cli-ws` : `${baseUrl}/ng-cli-ws`; + const socksRequest = baseUrl.at(-1) === '/' ? `${baseUrl}ng-cli-ws` : `${baseUrl}/ng-cli-ws`; // Create a Chrome dev tools session so that we can capturing websocket request. // https://github.com/puppeteer/puppeteer/issues/2974 diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/execute-fetch.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/execute-fetch.ts index eada7975ba88..489ae5501cda 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/execute-fetch.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/execute-fetch.ts @@ -27,7 +27,7 @@ export async function executeOnceAndFetch( let content = undefined; if (executionResult.result?.success) { let baseUrl = `${executionResult.result.baseUrl}`; - baseUrl = baseUrl[baseUrl.length - 1] === '/' ? baseUrl : `${baseUrl}/`; + baseUrl = baseUrl.at(-1) === '/' ? baseUrl : `${baseUrl}/`; const resolvedUrl = new URL(url, baseUrl); const originalResponse = await fetch(resolvedUrl, options?.request); response = originalResponse.clone(); diff --git a/packages/angular_devkit/core/src/utils/template.ts b/packages/angular_devkit/core/src/utils/template.ts index ebd3778fd4e9..f28bbf7ad417 100644 --- a/packages/angular_devkit/core/src/utils/template.ts +++ b/packages/angular_devkit/core/src/utils/template.ts @@ -253,9 +253,7 @@ function templateWithSourceMap(ast: TemplateAst, options?: TemplateOptions): str ]), ); - const end = ast.children.length - ? ast.children[ast.children.length - 1].end - : { line: 0, column: 0 }; + const end = ast.children.at(-1)?.end ?? { line: 0, column: 0 }; const nodes = ast.children .reduce((chunk, node) => { let code: string | SourceNode | (SourceNode | string)[] = ''; diff --git a/packages/angular_devkit/core/src/virtual-fs/path.ts b/packages/angular_devkit/core/src/virtual-fs/path.ts index 198b07aa7975..783bfe9d4402 100644 --- a/packages/angular_devkit/core/src/virtual-fs/path.ts +++ b/packages/angular_devkit/core/src/virtual-fs/path.ts @@ -57,7 +57,7 @@ export const NormalizedRoot: Path = NormalizedSep; */ export function split(path: Path): PathFragment[] { const fragments = path.split(NormalizedSep).map((x) => fragment(x)); - if (fragments[fragments.length - 1].length === 0) { + if (fragments.at(-1)?.length === 0) { fragments.pop(); } diff --git a/packages/angular_devkit/schematics/src/tree/action.ts b/packages/angular_devkit/schematics/src/tree/action.ts index 2f5f5e38e900..2d76bcc3662e 100644 --- a/packages/angular_devkit/schematics/src/tree/action.ts +++ b/packages/angular_devkit/schematics/src/tree/action.ts @@ -31,7 +31,7 @@ export class ActionList implements Iterable { this._actions.push({ ...(action as Action), id: _id++, - parent: this._actions[this._actions.length - 1]?.id ?? 0, + parent: this._actions.at(-1)?.id ?? 0, }); } diff --git a/packages/angular_devkit/schematics/src/workflow/base.ts b/packages/angular_devkit/schematics/src/workflow/base.ts index 66f1f20ec379..dcf23ff3f755 100644 --- a/packages/angular_devkit/schematics/src/workflow/base.ts +++ b/packages/angular_devkit/schematics/src/workflow/base.ts @@ -91,7 +91,7 @@ export abstract class BaseWorkflow implements Workflow { } get context(): Readonly { - const maybeContext = this._context[this._context.length - 1]; + const maybeContext = this._context.at(-1); if (!maybeContext) { throw new Error('Cannot get context when workflow is not executing...'); } @@ -146,7 +146,7 @@ export abstract class BaseWorkflow implements Workflow { execute( options: Partial & RequiredWorkflowExecutionContext, ): Observable { - const parentContext = this._context[this._context.length - 1]; + const parentContext = this._context.at(-1); if (!parentContext) { this._lifeCycle.next({ kind: 'start' }); diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index 0db1dfb01025..6c9e3179411c 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -121,7 +121,7 @@ const logger = createConsoleLogger(argv.verbose, process.stdout, process.stderr, const logStack = [logger]; function lastLogger() { - return logStack[logStack.length - 1]; + return logStack.at(-1)!; } // Under bazel the compiled file (.js) and types (.d.ts) are available. diff --git a/tsconfig-build-esm.json b/tsconfig-build-esm.json index 5a548be0a88f..8682ad1fbdc5 100644 --- a/tsconfig-build-esm.json +++ b/tsconfig-build-esm.json @@ -8,7 +8,7 @@ "compilerOptions": { "module": "esnext", "target": "es2022", - "lib": ["es2020"], + "lib": ["es2022"], // don't auto-discover @types/node, it results in a /// Date: Thu, 20 Nov 2025 15:18:29 +0000 Subject: [PATCH 1851/2162] fix(@schematics/angular): support testRunner option in library schematic This commit introduces the `testRunner` option to the library schematic, allowing users to explicitly select between `vitest` and `karma` as their test runner. Additionally, the `ng-new` schematic has been updated to configure the default `testRunner` for libraries in `angular.json` based on the workspace creation options. Closes #31887 --- .../schematics/angular/application/index.ts | 78 +++---------------- packages/schematics/angular/library/index.ts | 39 +++++----- .../schematics/angular/library/index_spec.ts | 4 +- .../schematics/angular/library/schema.json | 6 ++ packages/schematics/angular/ng-new/index.ts | 15 ++-- .../schematics/angular/ng-new/index_spec.ts | 1 + .../angular/utility/dependencies.ts | 63 ++++++++++++++- 7 files changed, 112 insertions(+), 94 deletions(-) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index 53ddd53acad0..d228c5f12cad 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -23,6 +23,7 @@ import { url, } from '@angular-devkit/schematics'; import { Schema as ComponentOptions, Style as ComponentStyle } from '../component/schema'; +import { getTestRunnerDependencies } from '../utility/dependencies'; import { DependencyType, ExistingBehavior, @@ -187,62 +188,7 @@ function addDependenciesToPackageJson(options: ApplicationOptions): Rule { } if (!options.skipTests) { - if (options.testRunner === 'vitest') { - rules.push( - addDependency('vitest', latestVersions['vitest'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('jsdom', latestVersions['jsdom'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - ); - } else { - rules.push( - addDependency('karma', latestVersions['karma'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-chrome-launcher', latestVersions['karma-chrome-launcher'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-coverage', latestVersions['karma-coverage'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-jasmine', latestVersions['karma-jasmine'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency( - 'karma-jasmine-html-reporter', - latestVersions['karma-jasmine-html-reporter'], - { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }, - ), - addDependency('jasmine-core', latestVersions['jasmine-core'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('@types/jasmine', latestVersions['@types/jasmine'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - ); - } + rules.push(...getTestRunnerDependencies(options.testRunner, !!options.skipInstall)); } return chain(rules); @@ -392,17 +338,15 @@ function addAppToWorkspaceFile(options: ApplicationOptions, appDir: string): Rul test: options.skipTests || options.minimal ? undefined - : options.testRunner === 'vitest' - ? { - builder: Builders.BuildUnitTest, - options: {}, - } - : { - builder: Builders.BuildUnitTest, - options: { - runner: 'karma', - }, - }, + : { + builder: Builders.BuildUnitTest, + options: + options.testRunner === 'vitest' + ? {} + : { + runner: 'karma', + }, + }, }, }; diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index b02e35b27758..aa01d36f798e 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -20,6 +20,7 @@ import { url, } from '@angular-devkit/schematics'; import { join } from 'node:path/posix'; +import { getTestRunnerDependencies } from '../utility/dependencies'; import { DependencyType, ExistingBehavior, @@ -69,7 +70,7 @@ function addTsProjectReference(...paths: string[]) { }; } -function addDependenciesToPackageJson(skipInstall: boolean): Rule { +function addDependenciesToPackageJson({ skipInstall, testRunner }: LibraryOptions): Rule { return chain([ ...LIBRARY_DEV_DEPENDENCIES.map((dependency) => addDependency(dependency.name, dependency.version, { @@ -78,6 +79,7 @@ function addDependenciesToPackageJson(skipInstall: boolean): Rule { install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, }), ), + ...getTestRunnerDependencies(testRunner, !!skipInstall), addDependency('tslib', latestVersions['tslib'], { type: DependencyType.Default, existing: ExistingBehavior.Skip, @@ -91,7 +93,6 @@ function addLibToWorkspaceFile( projectRoot: string, projectName: string, hasZoneDependency: boolean, - hasVitest: boolean, ): Rule { return updateWorkspace((workspace) => { workspace.projects.add({ @@ -113,20 +114,21 @@ function addLibToWorkspaceFile( }, }, }, - test: hasVitest - ? { - builder: Builders.BuildUnitTest, - options: { - tsConfig: `${projectRoot}/tsconfig.spec.json`, + test: + options.testRunner === 'vitest' + ? { + builder: Builders.BuildUnitTest, + options: { + tsConfig: `${projectRoot}/tsconfig.spec.json`, + }, + } + : { + builder: Builders.BuildKarma, + options: { + tsConfig: `${projectRoot}/tsconfig.spec.json`, + polyfills: hasZoneDependency ? ['zone.js', 'zone.js/testing'] : undefined, + }, }, - } - : { - builder: Builders.BuildKarma, - options: { - tsConfig: `${projectRoot}/tsconfig.spec.json`, - polyfills: hasZoneDependency ? ['zone.js', 'zone.js/testing'] : undefined, - }, - }, }, }); }); @@ -158,7 +160,6 @@ export default function (options: LibraryOptions): Rule { const distRoot = `dist/${folderName}`; const sourceDir = `${libDir}/src/lib`; - const hasVitest = getDependency(host, 'vitest') !== null; const templateSource = apply(url('./files'), [ applyTemplates({ @@ -172,7 +173,7 @@ export default function (options: LibraryOptions): Rule { angularLatestVersion: latestVersions.Angular.replace(/~|\^/, ''), tsLibLatestVersion: latestVersions['tslib'].replace(/~|\^/, ''), folderName, - testTypesPackage: hasVitest ? 'vitest/globals' : 'jasmine', + testTypesPackage: options.testRunner === 'vitest' ? 'vitest/globals' : 'jasmine', }), move(libDir), ]); @@ -181,8 +182,8 @@ export default function (options: LibraryOptions): Rule { return chain([ mergeWith(templateSource), - addLibToWorkspaceFile(options, libDir, packageName, hasZoneDependency, hasVitest), - options.skipPackageJson ? noop() : addDependenciesToPackageJson(!!options.skipInstall), + addLibToWorkspaceFile(options, libDir, packageName, hasZoneDependency), + options.skipPackageJson ? noop() : addDependenciesToPackageJson(options), options.skipTsConfig ? noop() : updateTsConfig(packageName, './' + distRoot), options.skipTsConfig ? noop() diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index 319abbaa5162..bf4f8714294e 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -407,11 +407,11 @@ describe('Library Schematic', () => { expect(workspace.projects.foo.architect.build.builder).toBe('@angular/build:ng-packagr'); }); - it(`should add 'karma' test builder`, async () => { + it(`should add 'unit-test' test builder`, async () => { const tree = await schematicRunner.runSchematic('library', defaultOptions, workspaceTree); const workspace = JSON.parse(tree.readContent('/angular.json')); - expect(workspace.projects.foo.architect.test.builder).toBe('@angular/build:karma'); + expect(workspace.projects.foo.architect.test.builder).toBe('@angular/build:unit-test'); }); it(`should add 'unit-test' test builder`, async () => { diff --git a/packages/schematics/angular/library/schema.json b/packages/schematics/angular/library/schema.json index 62ffdbb422a0..bb3d227e5245 100644 --- a/packages/schematics/angular/library/schema.json +++ b/packages/schematics/angular/library/schema.json @@ -53,6 +53,12 @@ "type": "boolean", "default": true, "x-user-analytics": "ep.ng_standalone" + }, + "testRunner": { + "description": "The unit testing runner to use.", + "type": "string", + "enum": ["vitest", "karma"], + "default": "vitest" } }, "required": ["name"] diff --git a/packages/schematics/angular/ng-new/index.ts b/packages/schematics/angular/ng-new/index.ts index 7fca64d69ce3..7e4e7d98d36b 100644 --- a/packages/schematics/angular/ng-new/index.ts +++ b/packages/schematics/angular/ng-new/index.ts @@ -67,16 +67,21 @@ export default function (options: NgNewOptions): Rule { mergeWith( apply(empty(), [ schematic('workspace', workspaceOptions), - options.createApplication ? schematic('application', applicationOptions) : noop, - schematic('ai-config', { - tool: options.aiConfig?.length ? options.aiConfig : undefined, - }), (tree: Tree) => { if (options.testRunner === 'karma') { const file = new JSONFile(tree, 'angular.json'); - file.modify(['schematics', '@schematics/angular:application', 'testRunner'], 'karma'); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const schematics = file.get(['schematics']) ?? ({} as any); + (schematics['@schematics/angular:application'] ??= {}).testRunner = 'karma'; + (schematics['@schematics/angular:library'] ??= {}).testRunner = 'karma'; + + file.modify(['schematics'], schematics); } }, + options.createApplication ? schematic('application', applicationOptions) : noop, + schematic('ai-config', { + tool: options.aiConfig?.length ? options.aiConfig : undefined, + }), move(options.directory), ]), ), diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index 7f136908c747..fa68cf746be2 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -183,6 +183,7 @@ describe('Ng New Schematic', () => { const { schematics } = JSON.parse(tree.readContent('/bar/angular.json')); expect(schematics['@schematics/angular:application'].testRunner).toBe('karma'); + expect(schematics['@schematics/angular:library'].testRunner).toBe('karma'); }); it(`should not add type to class name when file name style guide is '2016'`, async () => { diff --git a/packages/schematics/angular/utility/dependencies.ts b/packages/schematics/angular/utility/dependencies.ts index 06c4f38653bd..3cbffa49a6a0 100644 --- a/packages/schematics/angular/utility/dependencies.ts +++ b/packages/schematics/angular/utility/dependencies.ts @@ -6,8 +6,11 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Tree } from '@angular-devkit/schematics'; +import { Rule, Tree } from '@angular-devkit/schematics'; +import { TestRunner } from '../ng-new/schema'; +import { DependencyType, ExistingBehavior, InstallBehavior, addDependency } from './dependency'; import { JSONFile } from './json-file'; +import { latestVersions } from './latest-versions'; const PKG_JSON_PATH = '/package.json'; export enum NodeDependencyType { @@ -78,3 +81,61 @@ export function getPackageJsonDependency( return null; } + +export function getTestRunnerDependencies( + testRunner: TestRunner | undefined, + skipInstall: boolean, +): Rule[] { + if (testRunner === TestRunner.Vitest) { + return [ + addDependency('vitest', latestVersions['vitest'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('jsdom', latestVersions['jsdom'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + ]; + } + + return [ + addDependency('karma', latestVersions['karma'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-chrome-launcher', latestVersions['karma-chrome-launcher'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-coverage', latestVersions['karma-coverage'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-jasmine', latestVersions['karma-jasmine'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('karma-jasmine-html-reporter', latestVersions['karma-jasmine-html-reporter'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('jasmine-core', latestVersions['jasmine-core'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + addDependency('@types/jasmine', latestVersions['@types/jasmine'], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + ]; +} From cc66824fefac0d2fa113e785b2df59d0bd99e81f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:32:00 +0000 Subject: [PATCH 1852/2162] refactor: replace string literals with TestRunner enum for test runner options. Replace string with enum --- packages/angular/build/src/builders/unit-test/options.ts | 6 +++--- .../angular/build/src/builders/unit-test/tests/setup.ts | 4 ++-- packages/schematics/angular/application/index.ts | 4 ++-- packages/schematics/angular/application/index_spec.ts | 4 ++-- packages/schematics/angular/library/index.ts | 6 +++--- packages/schematics/angular/ng-new/index.ts | 8 ++++---- packages/schematics/angular/ng-new/index_spec.ts | 6 +++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index ac3d1b4e9652..8fa5b14eda59 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -12,7 +12,7 @@ import path from 'node:path'; import { normalizeCacheOptions } from '../../utils/normalize-cache'; import { getProjectRootPaths } from '../../utils/project-metadata'; import { isTTY } from '../../utils/tty'; -import type { Schema as UnitTestBuilderOptions } from './schema'; +import { Runner, type Schema as UnitTestBuilderOptions } from './schema'; export type NormalizedUnitTestBuilderOptions = Awaited>; @@ -56,7 +56,7 @@ export async function normalizeOptions( const { runner, browsers, progress, filter, browserViewport, ui, runnerConfig } = options; - if (ui && runner !== 'vitest') { + if (ui && runner !== Runner.Vitest) { throw new Error('The "ui" option is only available for the "vitest" runner.'); } @@ -95,7 +95,7 @@ export async function normalizeOptions( include: options.include ?? ['**/*.spec.ts'], exclude: options.exclude, filter, - runnerName: runner ?? 'vitest', + runnerName: runner ?? Runner.Vitest, coverage: { enabled: options.coverage, exclude: options.coverageExclude, diff --git a/packages/angular/build/src/builders/unit-test/tests/setup.ts b/packages/angular/build/src/builders/unit-test/tests/setup.ts index db03c2b0b348..e6770e115789 100644 --- a/packages/angular/build/src/builders/unit-test/tests/setup.ts +++ b/packages/angular/build/src/builders/unit-test/tests/setup.ts @@ -14,7 +14,7 @@ import { ApplicationBuilderOptions as ApplicationSchema, buildApplication, } from '../../../builders/application'; -import { Schema } from '../schema'; +import { Runner, Schema } from '../schema'; // TODO: Consider using package.json imports field instead of relative path // after the switch to rules_js. @@ -61,7 +61,7 @@ export const UNIT_TEST_BUILDER_INFO = Object.freeze({ export const BASE_OPTIONS = Object.freeze({ buildTarget: 'test:build', tsConfig: 'src/tsconfig.spec.json', - runner: 'vitest' as any, + runner: Runner.Vitest, }); /** diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index d228c5f12cad..dc2cd9217fce 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -35,7 +35,7 @@ import { latestVersions } from '../utility/latest-versions'; import { relativePathToWorkspaceRoot } from '../utility/paths'; import { getWorkspace, updateWorkspace } from '../utility/workspace'; import { Builders, ProjectType } from '../utility/workspace-models'; -import { Schema as ApplicationOptions, Style } from './schema'; +import { Schema as ApplicationOptions, Style, TestRunner } from './schema'; const APPLICATION_DEV_DEPENDENCIES = [ { name: '@angular/compiler-cli', version: latestVersions.Angular }, @@ -341,7 +341,7 @@ function addAppToWorkspaceFile(options: ApplicationOptions, appDir: string): Rul : { builder: Builders.BuildUnitTest, options: - options.testRunner === 'vitest' + options.testRunner === TestRunner.Vitest ? {} : { runner: 'karma', diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 4d95be8b5ea1..c2f91d110f27 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -10,7 +10,7 @@ import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/te import { parse as parseJson } from 'jsonc-parser'; import { latestVersions } from '../utility/latest-versions'; import { Schema as WorkspaceOptions } from '../workspace/schema'; -import { Schema as ApplicationOptions, Style, ViewEncapsulation } from './schema'; +import { Schema as ApplicationOptions, Style, TestRunner, ViewEncapsulation } from './schema'; // eslint-disable-next-line @typescript-eslint/no-explicit-any function readJsonFile(tree: UnitTestTree, path: string): any { @@ -442,7 +442,7 @@ describe('Application Schematic', () => { }); it('should set values in angular.json correctly when testRunner is karma', async () => { - const options = { ...defaultOptions, projectRoot: '', testRunner: 'karma' as const }; + const options = { ...defaultOptions, projectRoot: '', testRunner: TestRunner.Karma }; const tree = await schematicRunner.runSchematic('application', options, workspaceTree); const config = JSON.parse(tree.readContent('/angular.json')); diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index aa01d36f798e..0dd51ca448df 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -33,7 +33,7 @@ import { latestVersions } from '../utility/latest-versions'; import { relativePathToWorkspaceRoot } from '../utility/paths'; import { getWorkspace, updateWorkspace } from '../utility/workspace'; import { Builders, ProjectType } from '../utility/workspace-models'; -import { Schema as LibraryOptions } from './schema'; +import { Schema as LibraryOptions, TestRunner } from './schema'; const LIBRARY_DEV_DEPENDENCIES = [ { name: '@angular/compiler-cli', version: latestVersions.Angular }, @@ -115,7 +115,7 @@ function addLibToWorkspaceFile( }, }, test: - options.testRunner === 'vitest' + options.testRunner === TestRunner.Vitest ? { builder: Builders.BuildUnitTest, options: { @@ -173,7 +173,7 @@ export default function (options: LibraryOptions): Rule { angularLatestVersion: latestVersions.Angular.replace(/~|\^/, ''), tsLibLatestVersion: latestVersions['tslib'].replace(/~|\^/, ''), folderName, - testTypesPackage: options.testRunner === 'vitest' ? 'vitest/globals' : 'jasmine', + testTypesPackage: options.testRunner === TestRunner.Vitest ? 'vitest/globals' : 'jasmine', }), move(libDir), ]); diff --git a/packages/schematics/angular/ng-new/index.ts b/packages/schematics/angular/ng-new/index.ts index 7e4e7d98d36b..856343e82b8f 100644 --- a/packages/schematics/angular/ng-new/index.ts +++ b/packages/schematics/angular/ng-new/index.ts @@ -25,7 +25,7 @@ import { import { Schema as ApplicationOptions } from '../application/schema'; import { JSONFile } from '../utility/json-file'; import { Schema as WorkspaceOptions } from '../workspace/schema'; -import { Schema as NgNewOptions } from './schema'; +import { Schema as NgNewOptions, TestRunner } from './schema'; export default function (options: NgNewOptions): Rule { if (!options.directory) { @@ -68,12 +68,12 @@ export default function (options: NgNewOptions): Rule { apply(empty(), [ schematic('workspace', workspaceOptions), (tree: Tree) => { - if (options.testRunner === 'karma') { + if (options.testRunner === TestRunner.Karma) { const file = new JSONFile(tree, 'angular.json'); // eslint-disable-next-line @typescript-eslint/no-explicit-any const schematics = file.get(['schematics']) ?? ({} as any); - (schematics['@schematics/angular:application'] ??= {}).testRunner = 'karma'; - (schematics['@schematics/angular:library'] ??= {}).testRunner = 'karma'; + (schematics['@schematics/angular:application'] ??= {}).testRunner = TestRunner.Karma; + (schematics['@schematics/angular:library'] ??= {}).testRunner = TestRunner.Karma; file.modify(['schematics'], schematics); } diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index fa68cf746be2..28e1c13f315b 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -7,7 +7,7 @@ */ import { SchematicTestRunner } from '@angular-devkit/schematics/testing'; -import { Schema as NgNewOptions } from './schema'; +import { Schema as NgNewOptions, TestRunner } from './schema'; describe('Ng New Schematic', () => { const schematicRunner = new SchematicTestRunner( @@ -159,7 +159,7 @@ describe('Ng New Schematic', () => { }); it(`should set 'testRunner' to 'karma'`, async () => { - const options = { ...defaultOptions, testRunner: 'karma' as const }; + const options = { ...defaultOptions, testRunner: TestRunner.Karma }; const tree = await schematicRunner.runSchematic('ng-new', options); const { @@ -178,7 +178,7 @@ describe('Ng New Schematic', () => { }); it(`should set 'testRunner' to 'karma' in workspace schematic options`, async () => { - const options = { ...defaultOptions, testRunner: 'karma' as const }; + const options = { ...defaultOptions, testRunner: TestRunner.Karma }; const tree = await schematicRunner.runSchematic('ng-new', options); const { schematics } = JSON.parse(tree.readContent('/bar/angular.json')); From e28807645af0677f4551dd32681a9e8b08d75255 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:38:25 +0000 Subject: [PATCH 1853/2162] refactor: streamline test runner dependency management using array mapping This commit simplifies the `getTestRunnerDependencies` implementation and renames it to `addTestRunnerDependencies`. --- .../schematics/angular/application/index.ts | 4 +- packages/schematics/angular/library/index.ts | 4 +- .../angular/utility/dependencies.ts | 64 +++++-------------- 3 files changed, 20 insertions(+), 52 deletions(-) diff --git a/packages/schematics/angular/application/index.ts b/packages/schematics/angular/application/index.ts index dc2cd9217fce..e84a40530032 100644 --- a/packages/schematics/angular/application/index.ts +++ b/packages/schematics/angular/application/index.ts @@ -23,7 +23,7 @@ import { url, } from '@angular-devkit/schematics'; import { Schema as ComponentOptions, Style as ComponentStyle } from '../component/schema'; -import { getTestRunnerDependencies } from '../utility/dependencies'; +import { addTestRunnerDependencies } from '../utility/dependencies'; import { DependencyType, ExistingBehavior, @@ -188,7 +188,7 @@ function addDependenciesToPackageJson(options: ApplicationOptions): Rule { } if (!options.skipTests) { - rules.push(...getTestRunnerDependencies(options.testRunner, !!options.skipInstall)); + rules.push(...addTestRunnerDependencies(options.testRunner, !!options.skipInstall)); } return chain(rules); diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index 0dd51ca448df..3069664c02d7 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -20,7 +20,7 @@ import { url, } from '@angular-devkit/schematics'; import { join } from 'node:path/posix'; -import { getTestRunnerDependencies } from '../utility/dependencies'; +import { addTestRunnerDependencies } from '../utility/dependencies'; import { DependencyType, ExistingBehavior, @@ -79,7 +79,7 @@ function addDependenciesToPackageJson({ skipInstall, testRunner }: LibraryOption install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, }), ), - ...getTestRunnerDependencies(testRunner, !!skipInstall), + ...addTestRunnerDependencies(testRunner, !!skipInstall), addDependency('tslib', latestVersions['tslib'], { type: DependencyType.Default, existing: ExistingBehavior.Skip, diff --git a/packages/schematics/angular/utility/dependencies.ts b/packages/schematics/angular/utility/dependencies.ts index 3cbffa49a6a0..deb78ca9c0e2 100644 --- a/packages/schematics/angular/utility/dependencies.ts +++ b/packages/schematics/angular/utility/dependencies.ts @@ -82,60 +82,28 @@ export function getPackageJsonDependency( return null; } -export function getTestRunnerDependencies( +export function addTestRunnerDependencies( testRunner: TestRunner | undefined, skipInstall: boolean, ): Rule[] { - if (testRunner === TestRunner.Vitest) { - return [ - addDependency('vitest', latestVersions['vitest'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('jsdom', latestVersions['jsdom'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - ]; - } + const dependencies = + testRunner === TestRunner.Vitest + ? ['vitest', 'jsdom'] + : [ + 'karma', + 'karma-chrome-launcher', + 'karma-coverage', + 'karma-jasmine', + 'karma-jasmine-html-reporter', + 'jasmine-core', + '@types/jasmine', + ]; - return [ - addDependency('karma', latestVersions['karma'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-chrome-launcher', latestVersions['karma-chrome-launcher'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-coverage', latestVersions['karma-coverage'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-jasmine', latestVersions['karma-jasmine'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('karma-jasmine-html-reporter', latestVersions['karma-jasmine-html-reporter'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('jasmine-core', latestVersions['jasmine-core'], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - addDependency('@types/jasmine', latestVersions['@types/jasmine'], { + return dependencies.map((name) => + addDependency(name, latestVersions[name], { type: DependencyType.Dev, existing: ExistingBehavior.Skip, install: skipInstall ? InstallBehavior.None : InstallBehavior.Auto, }), - ]; + ); } From d134fa12fe1d464fac8d88f1e14414c2c2f0f691 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 20 Nov 2025 20:05:30 +0000 Subject: [PATCH 1854/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- 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 8c0189441a87..165dec118832 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#b660345329ee6d90ca58b1e753e0420dd1fcc5e9", - "@angular/cdk": "github:angular/cdk-builds#e52a9e8d8ef00d89ea7c46e90d118e45f97a0456", - "@angular/common": "github:angular/common-builds#cfa9aefef5a9aa74b902791c11771c904f03e532", - "@angular/compiler": "github:angular/compiler-builds#f1ebbc89ac5d3538f0b534ce24929cab923db6ad", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#b5ade9aa64ee283f5b28c26eab23f5df268d3b98", - "@angular/core": "github:angular/core-builds#f95298cfbccf8878f777ba9b08578649517bfae3", - "@angular/forms": "github:angular/forms-builds#0616d2bad762c33dd19381967f4cfeb87e053cac", - "@angular/language-service": "github:angular/language-service-builds#d247d9050bf9f269ed80c4de6e184c03ffffb0cb", - "@angular/localize": "github:angular/localize-builds#d413efb46808f736315dbeaa4fed717743a5183c", - "@angular/material": "github:angular/material-builds#71272ef5c8accbd4e5c15225e918585ac0a2d533", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#3d614573a6866edd01113df3c139db0d19e86d10", - "@angular/platform-browser": "github:angular/platform-browser-builds#c3f38466c5fca8ca295d5905791d87e64cf7c4b2", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#7613f3eb64700c54db7e39ec92e772f141f999ce", - "@angular/platform-server": "github:angular/platform-server-builds#29833327b5a7ace82c2d5af23164decfcb25c099", - "@angular/router": "github:angular/router-builds#6f89fdeb84487e290f13ac3848fc38fc3d240b75", - "@angular/service-worker": "github:angular/service-worker-builds#df27df22057e72f35d66b8d3b9e8dc9887d9e135" + "@angular/animations": "github:angular/animations-builds#31a94219af5ae0691e4c8a8fa5fa44c7b023d678", + "@angular/cdk": "github:angular/cdk-builds#8f1055df5c04c7adde3fff80dcbd4284b719560a", + "@angular/common": "github:angular/common-builds#fc0451a9a032b816c6c0f55059cb2c1322ef2253", + "@angular/compiler": "github:angular/compiler-builds#6903697143a1ca6bac94600ad504770bff7f0557", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#8bc7f0a6b194333b8a0ff469566cf7ee7b994b1c", + "@angular/core": "github:angular/core-builds#e4bb5ba2c6499bd417882ee0b4a5e67cfcfd44d9", + "@angular/forms": "github:angular/forms-builds#58637ae231af26f2004bf1aeb4fe0b8aaa7d58b4", + "@angular/language-service": "github:angular/language-service-builds#a4e66a7d5df7f6f89b2adafff68ca2c71542e56d", + "@angular/localize": "github:angular/localize-builds#b5d5acaf43711f656e9210f50c61188de98e983b", + "@angular/material": "github:angular/material-builds#dee233fcdf173ec9d39a646c26f9fe1f4b2a1ee1", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#1ab16a347690e69b3951cfa8e7ce1a4d1aa99768", + "@angular/platform-browser": "github:angular/platform-browser-builds#1e795abda52faf93db897a24fbb8b7692c14939d", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#ad156075eb6a11dfe37d2947a64a1b7d304edbf1", + "@angular/platform-server": "github:angular/platform-server-builds#64a2ac3e90e9adb917c29ed698fa9aedf5d2d9da", + "@angular/router": "github:angular/router-builds#b9765fd4d1c2ba8f95c56882d1bde26b36a16ad7", + "@angular/service-worker": "github:angular/service-worker-builds#56ad263ec6b7f7285ce70074db569ccc62823a0f" } } From 61a027dba7f3a569c1ac936c34956b8f96fd102a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 20 Nov 2025 16:55:05 +0000 Subject: [PATCH 1855/2162] fix(@angular/ssr): prevent redirect loop with encoded query parameters Previously, encoded query parameters caused a mismatch between the requested URL and the reconstructed URL, leading to a redirect loop. This change ensures both URLs are decoded before comparison. Closes #31881 --- packages/angular/ssr/src/utils/ng.ts | 30 +++++++++++++++++--- packages/angular/ssr/src/utils/url.ts | 15 ++++++++++ packages/angular/ssr/test/app-engine_spec.ts | 14 +++++++++ 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index 120fdf940dd6..5d10560db39d 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -107,13 +107,15 @@ export async function renderAngular( if (!routerIsProvided) { hasNavigationError = false; - } else if (lastSuccessfulNavigation) { + } else if (lastSuccessfulNavigation?.finalUrl) { hasNavigationError = false; + const { pathname, search, hash } = envInjector.get(PlatformLocation); - const finalUrl = [stripTrailingSlash(pathname), search, hash].join(''); + const finalUrl = constructDecodedUrl({ pathname, search, hash }); + const urlToRenderString = constructDecodedUrl(urlToRender); - if (urlToRender.href !== new URL(finalUrl, urlToRender.origin).href) { - redirectTo = finalUrl; + if (urlToRenderString !== finalUrl) { + redirectTo = [pathname, search, hash].join(''); } } @@ -171,3 +173,23 @@ function asyncDestroyPlatform(platformRef: PlatformRef): Promise { }, 0); }); } + +/** + * Constructs a decoded URL string from its components, ensuring consistency for comparison. + * + * This function takes a URL-like object (containing `pathname`, `search`, and `hash`), + * strips the trailing slash from the pathname, joins the components, and then decodes + * the entire string. This normalization is crucial for accurately comparing URLs + * that might differ only in encoding or trailing slashes. + * + * @param url - An object containing the URL components: + * - `pathname`: The path of the URL. + * - `search`: The query string of the URL (including '?'). + * - `hash`: The hash fragment of the URL (including '#'). + * @returns The constructed and decoded URL string. + */ +function constructDecodedUrl(url: { pathname: string; search: string; hash: string }): string { + const joinedUrl = [stripTrailingSlash(url.pathname), url.search, url.hash].join(''); + + return decodeURIComponent(joinedUrl); +} diff --git a/packages/angular/ssr/src/utils/url.ts b/packages/angular/ssr/src/utils/url.ts index 55d37ad9a05f..1fa756e19c19 100644 --- a/packages/angular/ssr/src/utils/url.ts +++ b/packages/angular/ssr/src/utils/url.ts @@ -220,3 +220,18 @@ export function stripMatrixParams(pathname: string): string { // This regex finds all occurrences of a semicolon followed by any characters return pathname.includes(';') ? pathname.replace(MATRIX_PARAMS_REGEX, '') : pathname; } + +/** + * Constructs a decoded URL string from its components. + * + * This function joins the pathname (with trailing slash removed), search, and hash, + * and then decodes the result. + * + * @param pathname - The path of the URL. + * @param search - The query string of the URL (including '?'). + * @param hash - The hash fragment of the URL (including '#'). + * @returns The constructed and decoded URL string. + */ +export function constructUrl(pathname: string, search: string, hash: string): string { + return decodeURIComponent([stripTrailingSlash(pathname), search, hash].join('')); +} diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index b08931b9400b..bfc824b6d260 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -269,5 +269,19 @@ describe('AngularAppEngine', () => { const response = await appEngine.handle(request); expect(await response?.text()).toContain('Home works'); }); + + it('should work with encoded characters', async () => { + const request = new Request('https://example.com/home?email=xyz%40xyz.com'); + const response = await appEngine.handle(request); + expect(response?.status).toBe(200); + expect(await response?.text()).toContain('Home works'); + }); + + it('should work with decoded characters', async () => { + const request = new Request('https://example.com/home?email=xyz@xyz.com'); + const response = await appEngine.handle(request); + expect(response?.status).toBe(200); + expect(await response?.text()).toContain('Home works'); + }); }); }); From 53012c89f324ef4537e86d2a5de29d66e333fe77 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 21 Nov 2025 13:36:19 +0000 Subject: [PATCH 1856/2162] fix(@angular/build): force dev-server to use HTTP/1.1 when using SSR with SSL When using SSR with SSL, Vite attempts to use HTTP/2 by default. However, the Express server used for SSR does not support HTTP/2, causing requests to fail. This commit forces Vite to use HTTP/1.1 in this scenario by setting the ALPNProtocols to `['http/1.1']`. This is required as now Vite uses HTTP 2 for SSL: https://github.com/vitejs/vite/commit/fc21af7a42dd559a95f54b6165d34f36883eaa7f Closes #31894 --- .../src/builders/dev-server/vite/server.ts | 8 +------- .../src/tools/vite/plugins/ssr-ssl-plugin.ts | 12 ++++++++++++ tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 11 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 9cabeabccfec..73f58ad5c348 100644 --- a/packages/angular/build/src/builders/dev-server/vite/server.ts +++ b/packages/angular/build/src/builders/dev-server/vite/server.ts @@ -60,13 +60,7 @@ async function createServerConfig( headers: serverOptions.headers, // Disable the websocket if live reload is disabled (false/undefined are the only valid values) ws: serverOptions.liveReload === false && serverOptions.hmr === false ? false : undefined, - // When server-side rendering (SSR) is enabled togather with SSL and Express is being used, - // we must configure Vite to use HTTP/1.1. - // This is necessary because Express does not support HTTP/2. - // We achieve this by defining an empty proxy. - // See: https://github.com/vitejs/vite/blob/c4b532cc900bf988073583511f57bd581755d5e3/packages/vite/src/node/http.ts#L106 - proxy: - serverOptions.ssl && ssrMode === ServerSsrMode.ExternalSsrMiddleware ? (proxy ?? {}) : proxy, + proxy, cors: { // This will add the header `Access-Control-Allow-Origin: http://example.com`, // where `http://example.com` is the requesting origin. diff --git a/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts b/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts index c87e0bd112a0..0cde7f89ef0a 100644 --- a/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts @@ -23,6 +23,18 @@ export function createAngularServerSideSSLPlugin(): Plugin { return; } + if (httpServer && 'ALPNProtocols' in httpServer) { + // Force Vite to use HTTP/1.1 when SSR and SSL are enabled. + // This is required because the Express server used for SSR does not support HTTP/2. + // See: https://github.com/vitejs/vite/blob/46d3077f2b63771cc50230bc907c48f5773c00fb/packages/vite/src/node/http.ts#L126 + + // We directly set the `ALPNProtocols` on the HTTP server to override the default behavior. + // Passing `ALPNProtocols` in the TLS options would cause Node.js to automatically include `h2`. + // Additionally, using `ALPNCallback` is not an option as it is mutually exclusive with `ALPNProtocols`. + // See: https://github.com/nodejs/node/blob/b8b4350ed3b73d225eb9e628d69151df56eaf298/lib/internal/http2/core.js#L3351 + httpServer.ALPNProtocols = ['http/1.1']; + } + // TODO(alanagius): Replace `undici` with `tls.setDefaultCACertificates` once we only support Node.js 22.18.0+ and 24.5.0+. // See: https://nodejs.org/api/tls.html#tlssetdefaultcacertificatescerts const { getGlobalDispatcher, setGlobalDispatcher, Agent } = await import('undici'); 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 5bb8d9105cf8..90518080f8f3 100644 --- a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts +++ b/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts @@ -42,14 +42,23 @@ export default async function () { const port = await ngServe('--ssl'); - // Verify the server is running and the API response is correct. - await validateResponse('/main.js', /bootstrapApplication/); - await validateResponse('/home', /home works/); + // http 2 + await validateResponse('/main.js', /bootstrapApplication/, true); + await validateResponse('/home', /home works/, true); - async function validateResponse(pathname: string, match: RegExp): Promise { + // http 1.1 + await validateResponse('/main.js', /bootstrapApplication/, false); + await validateResponse('/home', /home works/, false); + + async function validateResponse( + pathname: string, + match: RegExp, + allowH2: boolean, + ): Promise { const response = await fetch(new URL(pathname, `https://localhost:${port}`), { dispatcher: new Agent({ connect: { + allowH2, rejectUnauthorized: false, }, }), From 18cf6c51b72ce5c7f23012585ed992cf91cef5ed Mon Sep 17 00:00:00 2001 From: Alessio Pelliccione Date: Thu, 20 Nov 2025 15:52:51 +0100 Subject: [PATCH 1857/2162] fix(@schematics/angular): add MCP configuration file to new workspaces Changes: - Add .vscode/mcp.json template with angular-cli MCP server configuration - Update .gitignore template to whitelist .vscode/mcp.json - Update workspace schematic tests to expect mcp.json file Closes #31888 --- .../angular/workspace/files/__dot__gitignore.template | 1 + .../workspace/files/__dot__vscode/mcp.json.template | 9 +++++++++ packages/schematics/angular/workspace/index_spec.ts | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template diff --git a/packages/schematics/angular/workspace/files/__dot__gitignore.template b/packages/schematics/angular/workspace/files/__dot__gitignore.template index b1d225e26e57..854acd5fc039 100644 --- a/packages/schematics/angular/workspace/files/__dot__gitignore.template +++ b/packages/schematics/angular/workspace/files/__dot__gitignore.template @@ -26,6 +26,7 @@ yarn-error.log !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json +!.vscode/mcp.json .history/* # Miscellaneous diff --git a/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template b/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template new file mode 100644 index 000000000000..bf4004da9477 --- /dev/null +++ b/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template @@ -0,0 +1,9 @@ +{ + // For more information, visit: https://angular.dev/ai/mcp + "mcpServers": { + "angular-cli": { + "command": "npx", + "args": ["-y", "@angular/cli", "mcp"] + } + } +} diff --git a/packages/schematics/angular/workspace/index_spec.ts b/packages/schematics/angular/workspace/index_spec.ts index 22be6e797e14..65dd7987aa41 100644 --- a/packages/schematics/angular/workspace/index_spec.ts +++ b/packages/schematics/angular/workspace/index_spec.ts @@ -29,6 +29,7 @@ describe('Workspace Schematic', () => { jasmine.arrayContaining([ '/.vscode/extensions.json', '/.vscode/launch.json', + '/.vscode/mcp.json', '/.vscode/tasks.json', '/.editorconfig', '/angular.json', @@ -70,6 +71,7 @@ describe('Workspace Schematic', () => { jasmine.arrayContaining([ '/.vscode/extensions.json', '/.vscode/launch.json', + '/.vscode/mcp.json', '/.vscode/tasks.json', '/angular.json', '/.gitignore', From 50d9c0e3dfdeb20d5677606cf16ab6062e75fd4b Mon Sep 17 00:00:00 2001 From: deku-nattsu Date: Fri, 21 Nov 2025 14:53:05 +0100 Subject: [PATCH 1858/2162] fix(@schematics/angular): do not set `esModuleInterop` and `moduleResolution` when module is `preserve` --- .../migrations/use-application-builder/migration.ts | 10 ++++++++-- .../use-application-builder/migration_spec.ts | 13 +++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/migrations/use-application-builder/migration.ts b/packages/schematics/angular/migrations/use-application-builder/migration.ts index cc858b59de54..9e8c9204d67f 100644 --- a/packages/schematics/angular/migrations/use-application-builder/migration.ts +++ b/packages/schematics/angular/migrations/use-application-builder/migration.ts @@ -362,10 +362,16 @@ export default function (): Rule { ), // Update main tsconfig updateJsonFile('tsconfig.json', (rootJson) => { - rootJson.modify(['compilerOptions', 'esModuleInterop'], true); + const module = rootJson.get(['compilerOptions', 'module']); + const hasPreserveModule = typeof module === 'string' && module.toLowerCase() === 'preserve'; + + if (!hasPreserveModule) { + rootJson.modify(['compilerOptions', 'esModuleInterop'], true); + rootJson.modify(['compilerOptions', 'moduleResolution'], 'bundler'); + } + rootJson.modify(['compilerOptions', 'downlevelIteration'], undefined); rootJson.modify(['compilerOptions', 'allowSyntheticDefaultImports'], undefined); - rootJson.modify(['compilerOptions', 'moduleResolution'], 'bundler'); }), ]); } diff --git a/packages/schematics/angular/migrations/use-application-builder/migration_spec.ts b/packages/schematics/angular/migrations/use-application-builder/migration_spec.ts index a8d50193958e..fd10352c6eac 100644 --- a/packages/schematics/angular/migrations/use-application-builder/migration_spec.ts +++ b/packages/schematics/angular/migrations/use-application-builder/migration_spec.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import { JsonObject } 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'; @@ -448,4 +449,16 @@ describe(`Migration to use the application builder`, () => { expect(devDependencies['postcss']).toBeUndefined(); }); + + it('it should not add esModuleInterop and moduleResolution when module is preserve', async () => { + tree.overwrite( + 'tsconfig.json', + JSON.stringify({ + compilerOptions: { module: 'preserve' }, + }), + ); + const newTree = await schematicRunner.runSchematic(schematicName, {}, tree); + const { compilerOptions } = newTree.readJson('tsconfig.json') as JsonObject; + expect(compilerOptions).toEqual({ module: 'preserve' }); + }); }); From 907d58cff73a18b8d0fb901c72d93a83fd355b49 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 21 Nov 2025 17:04:38 +0000 Subject: [PATCH 1859/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- 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 165dec118832..33a3f69425fc 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#31a94219af5ae0691e4c8a8fa5fa44c7b023d678", - "@angular/cdk": "github:angular/cdk-builds#8f1055df5c04c7adde3fff80dcbd4284b719560a", - "@angular/common": "github:angular/common-builds#fc0451a9a032b816c6c0f55059cb2c1322ef2253", - "@angular/compiler": "github:angular/compiler-builds#6903697143a1ca6bac94600ad504770bff7f0557", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#8bc7f0a6b194333b8a0ff469566cf7ee7b994b1c", - "@angular/core": "github:angular/core-builds#e4bb5ba2c6499bd417882ee0b4a5e67cfcfd44d9", - "@angular/forms": "github:angular/forms-builds#58637ae231af26f2004bf1aeb4fe0b8aaa7d58b4", - "@angular/language-service": "github:angular/language-service-builds#a4e66a7d5df7f6f89b2adafff68ca2c71542e56d", - "@angular/localize": "github:angular/localize-builds#b5d5acaf43711f656e9210f50c61188de98e983b", - "@angular/material": "github:angular/material-builds#dee233fcdf173ec9d39a646c26f9fe1f4b2a1ee1", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#1ab16a347690e69b3951cfa8e7ce1a4d1aa99768", - "@angular/platform-browser": "github:angular/platform-browser-builds#1e795abda52faf93db897a24fbb8b7692c14939d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#ad156075eb6a11dfe37d2947a64a1b7d304edbf1", - "@angular/platform-server": "github:angular/platform-server-builds#64a2ac3e90e9adb917c29ed698fa9aedf5d2d9da", - "@angular/router": "github:angular/router-builds#b9765fd4d1c2ba8f95c56882d1bde26b36a16ad7", - "@angular/service-worker": "github:angular/service-worker-builds#56ad263ec6b7f7285ce70074db569ccc62823a0f" + "@angular/animations": "github:angular/animations-builds#2668ef8ed2ced6b84f333661c337a1c961ff0910", + "@angular/cdk": "github:angular/cdk-builds#bce825c294a076a7706ded9ddfaac114929d67d5", + "@angular/common": "github:angular/common-builds#fa71208e517fb6bfa7a5e4e068df164bc651b56d", + "@angular/compiler": "github:angular/compiler-builds#e049255c3aa0db2505e5ef17d841d7fb2452a816", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#1961c8b8f3adbda176eac940264c839dac59419d", + "@angular/core": "github:angular/core-builds#9be43ced9f4bc45b93928ce6aa012c8cb9ab64d1", + "@angular/forms": "github:angular/forms-builds#8686ae25f8390f800d2e046cbcf6f160fbe0ca62", + "@angular/language-service": "github:angular/language-service-builds#0d4f1eb9e846e9d6102d67237ce5b81eced19cc0", + "@angular/localize": "github:angular/localize-builds#9c71f61799b3fece5c4dafdc5f92acd60f00fa83", + "@angular/material": "github:angular/material-builds#5ceb63b117f5cdc649add10f90bb80f83ea813f5", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e44a76679fae476bbde35538fbf5d0e3dc452c91", + "@angular/platform-browser": "github:angular/platform-browser-builds#77ac8bdc6a33597b67f4386c1d5e6536392de2ac", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#8bd85b81f867c37f21743f4a8a2e0ec4e36a48e0", + "@angular/platform-server": "github:angular/platform-server-builds#83cd360554ba842222c3eb5e609a3336f4a40da1", + "@angular/router": "github:angular/router-builds#13a9f8a4c518926e9308fa9ca930c6ced08b3c24", + "@angular/service-worker": "github:angular/service-worker-builds#7a36ce8587a04493dda066d299b7f72afddfd7bb" } } From 393ee41f3dc38a4be9b97916d7bf1f8f2bc5043b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 21 Nov 2025 05:05:09 +0000 Subject: [PATCH 1860/2162] build: update all github actions See associated pull request for more information. --- .github/workflows/assistant-to-the-branch-manager.yml | 2 +- .github/workflows/codeql.yml | 6 +++--- .github/workflows/dev-infra.yml | 4 ++-- .github/workflows/pr.yml | 2 +- .github/workflows/scorecard.yml | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 6df4ef55c1e0..e3eb60bd1368 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -13,7 +13,7 @@ jobs: assistant_to_the_branch_manager: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false - uses: angular/dev-infra/github-actions/branch-manager@f47684669736e28fd77eab64e65b2952c8a948ee diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fb4789033a1a..b7e2721856bb 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,16 +19,16 @@ jobs: fail-fast: false steps: - name: Checkout repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/init@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/analyze@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 5a8731c9002e..0b0997b0d9f0 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,14 +12,14 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: angular/dev-infra/github-actions/pull-request-labeling@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: angular/dev-infra/github-actions/post-approval-changes@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 91d2a7c5a24d..34f89073a2d8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -20,7 +20,7 @@ jobs: outputs: snapshots: ${{ steps.filter.outputs.snapshots }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5b82ca3bd6e6..1de63102d522 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -25,7 +25,7 @@ jobs: steps: - name: 'Checkout code' - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: persist-credentials: false @@ -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@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/upload-sarif@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 with: sarif_file: results.sarif From 848d98bf804d73413c7a613e31fac329fa95fefb Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 21 Nov 2025 12:07:21 +0000 Subject: [PATCH 1861/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 4 +- packages/angular/build/package.json | 8 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 730 +++++++++--------- 5 files changed, 387 insertions(+), 361 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 6239b8ee6313..538c23336751 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.10", + "@vitest/coverage-v8": "4.0.12", "jsdom": "27.2.0", "rxjs": "7.8.2", - "vitest": "4.0.10" + "vitest": "4.0.12" } } diff --git a/package.json b/package.json index b182f2cea838..413a36ab8c6b 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.53.2", + "rollup": "4.53.3", "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.2.3", "rollup-plugin-sourcemaps2": "0.5.4", @@ -143,7 +143,7 @@ "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", "zod": "4.1.12", - "zone.js": "^0.15.0" + "zone.js": "^0.16.0" }, "dependenciesMeta": { "esbuild": { diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 503b50f0f6e7..e1f318faa59a 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,13 +37,13 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.50", - "sass": "1.94.1", + "rolldown": "1.0.0-beta.51", + "sass": "1.94.2", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", "undici": "7.16.0", - "vite": "7.2.2", + "vite": "7.2.4", "watchpack": "2.4.4" }, "optionalDependencies": { @@ -57,7 +57,7 @@ "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.10" + "vitest": "4.0.12" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index b5c52b7df345..b8fe65aff344 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.94.1", + "sass": "1.94.2", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f61e23b9851..944c56c1d1fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,13 +21,13 @@ importers: devDependencies: '@angular/animations': specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/common': specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': specifier: 21.0.0 version: 21.0.0 @@ -36,31 +36,31 @@ importers: version: 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) '@angular/core': specifier: 21.0.0 - version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': specifier: 21.0.0 version: 21.0.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(@angular/compiler@21.0.0) '@angular/material': specifier: 21.0.0 - version: 21.0.0(280d15a59d7c55264f5164ad0fb0f648) + version: 21.0.0(239e29b74d9c69c8f989dfa3a5e69993) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf(@modelcontextprotocol/sdk@1.22.0) '@angular/platform-browser': specifier: 21.0.0 - version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -81,16 +81,16 @@ importers: version: 9.39.1 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.53.2) + version: 6.0.0(rollup@4.53.3) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.53.2) + version: 29.0.0(rollup@4.53.3) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.53.2) + version: 6.1.0(rollup@4.53.3) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.53.2) + version: 16.0.3(rollup@4.53.3) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.5.0(eslint@9.39.1(jiti@2.6.1)) @@ -266,17 +266,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.53.2 - version: 4.53.2 + specifier: 4.53.3 + version: 4.53.3 rollup-license-plugin: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: specifier: 6.2.3 - version: 6.2.3(rollup@4.53.2)(typescript@5.9.3) + version: 6.2.3(rollup@4.53.3)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.0)(rollup@4.53.2) + version: 0.5.4(@types/node@22.19.0)(rollup@4.53.3) semver: specifier: 7.7.3 version: 7.7.3 @@ -314,8 +314,8 @@ importers: specifier: 4.1.12 version: 4.1.12 zone.js: - specifier: ^0.15.0 - version: 0.15.1 + specifier: ^0.16.0 + version: 0.16.0 modules/testing/builder: devDependencies: @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.10 - version: 4.0.10(vitest@4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.12 + version: 4.0.12(vitest@4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -344,8 +344,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.10 - version: 4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.12 + version: 4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -369,7 +369,7 @@ importers: version: 5.1.21(@types/node@24.10.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -407,11 +407,11 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.50 - version: 1.0.0-beta.50 + specifier: 1.0.0-beta.51 + version: 1.0.0-beta.51 sass: - specifier: 1.94.1 - version: 1.94.1 + specifier: 1.94.2 + version: 1.94.2 semver: specifier: 7.7.3 version: 7.7.3 @@ -425,8 +425,8 @@ importers: specifier: 7.16.0 version: 7.16.0 vite: - specifier: 7.2.2 - version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 7.2.4 + version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -453,8 +453,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.10 - version: 4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.12 + version: 4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -543,22 +543,22 @@ importers: version: link:../../angular_devkit/schematics '@angular/common': specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': specifier: 21.0.0 version: 21.0.0 '@angular/core': specifier: 21.0.0 - version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': specifier: 21.0.0 - version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -720,11 +720,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.94.1 - version: 1.94.1 + specifier: 1.94.2 + version: 1.94.2 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.94.1)(webpack@5.103.0(esbuild@0.27.0)) + version: 16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.0)) semver: specifier: 7.7.3 version: 7.7.3 @@ -3083,8 +3083,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.97.0': - resolution: {integrity: sha512-lxmZK4xFrdvU0yZiDwgVQTCvh2gHWBJCBk5ALsrtsBWhs0uDIi+FTOnXRQeQfs304imdvTdaakT/lqwQ8hkOXQ==} + '@oxc-project/types@0.98.0': + resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3233,95 +3233,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.50': - resolution: {integrity: sha512-XlEkrOIHLyGT3avOgzfTFSjG+f+dZMw+/qd+Y3HLN86wlndrB/gSimrJCk4gOhr1XtRtEKfszpadI3Md4Z4/Ag==} + '@rolldown/binding-android-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.50': - resolution: {integrity: sha512-+JRqKJhoFlt5r9q+DecAGPLZ5PxeLva+wCMtAuoFMWPoZzgcYrr599KQ+Ix0jwll4B4HGP43avu9My8KtSOR+w==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.50': - resolution: {integrity: sha512-fFXDjXnuX7/gQZQm/1FoivVtRcyAzdjSik7Eo+9iwPQ9EgtA5/nB2+jmbzaKtMGG3q+BnZbdKHCtOacmNrkIDA==} + '@rolldown/binding-darwin-x64@1.0.0-beta.51': + resolution: {integrity: sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.50': - resolution: {integrity: sha512-F1b6vARy49tjmT/hbloplzgJS7GIvwWZqt+tAHEstCh0JIh9sa8FAMVqEmYxDviqKBaAI8iVvUREm/Kh/PD26Q==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': + resolution: {integrity: sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50': - resolution: {integrity: sha512-U6cR76N8T8M6lHj7EZrQ3xunLPxSvYYxA8vJsBKZiFZkT8YV4kjgCO3KwMJL0NOjQCPGKyiXO07U+KmJzdPGRw==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': + resolution: {integrity: sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50': - resolution: {integrity: sha512-ONgyjofCrrE3bnh5GZb8EINSFyR/hmwTzZ7oVuyUB170lboza1VMCnb8jgE6MsyyRgHYmN8Lb59i3NKGrxrYjw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50': - resolution: {integrity: sha512-L0zRdH2oDPkmB+wvuTl+dJbXCsx62SkqcEqdM+79LOcB+PxbAxxjzHU14BuZIQdXcAVDzfpMfaHWzZuwhhBTcw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50': - resolution: {integrity: sha512-gyoI8o/TGpQd3OzkJnh1M2kxy1Bisg8qJ5Gci0sXm9yLFzEXIFdtc4EAzepxGvrT2ri99ar5rdsmNG0zP0SbIg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': + resolution: {integrity: sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.50': - resolution: {integrity: sha512-zti8A7M+xFDpKlghpcCAzyOi+e5nfUl3QhU023ce5NCgUxRG5zGP2GR9LTydQ1rnIPwZUVBWd4o7NjZDaQxaXA==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': + resolution: {integrity: sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.50': - resolution: {integrity: sha512-eZUssog7qljrrRU9Mi0eqYEPm3Ch0UwB+qlWPMKSUXHNqhm3TvDZarJQdTevGEfu3EHAXJvBIe0YFYr0TPVaMA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': + resolution: {integrity: sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.50': - resolution: {integrity: sha512-nmCN0nIdeUnmgeDXiQ+2HU6FT162o+rxnF7WMkBm4M5Ds8qTU7Dzv2Wrf22bo4ftnlrb2hKK6FSwAJSAe2FWLg==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': + resolution: {integrity: sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50': - resolution: {integrity: sha512-7kcNLi7Ua59JTTLvbe1dYb028QEPaJPJQHqkmSZ5q3tJueUeb6yjRtx8mw4uIqgWZcnQHAR3PrLN4XRJxvgIkA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50': - resolution: {integrity: sha512-lL70VTNvSCdSZkDPPVMwWn/M2yQiYvSoXw9hTLgdIWdUfC3g72UaruezusR6ceRuwHCY1Ayu2LtKqXkBO5LIwg==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50': - resolution: {integrity: sha512-4qU4x5DXWB4JPjyTne/wBNPqkbQU8J45bl21geERBKtEittleonioACBL1R0PsBu0Aq21SwMK5a9zdBkWSlQtQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': + resolution: {integrity: sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.50': - resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} + '@rolldown/pluginutils@1.0.0-beta.51': + resolution: {integrity: sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3386,19 +3386,14 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.1': - resolution: {integrity: sha512-bxZtughE4VNVJlL1RdoSE545kc4JxL7op57KKoi59/gwuU5rV6jLWFXXc8jwgFoT6vtj+ZjO+Z2C5nrY0Cl6wA==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.53.2': resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.1': - resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==} - cpu: [arm64] + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.53.2': @@ -3406,19 +3401,19 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.1': - resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] - os: [darwin] + os: [android] '@rollup/rollup-darwin-arm64@4.53.2': resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.1': - resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==} - cpu: [x64] + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.53.2': @@ -3426,19 +3421,19 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.1': - resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==} - cpu: [arm64] - os: [freebsd] + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + cpu: [x64] + os: [darwin] '@rollup/rollup-freebsd-arm64@4.53.2': resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.1': - resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==} - cpu: [x64] + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.53.2': @@ -3446,11 +3441,10 @@ packages: cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.1': - resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==} - cpu: [arm] - os: [linux] - libc: [glibc] + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + cpu: [x64] + os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.53.2': resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} @@ -3458,11 +3452,11 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.1': - resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - libc: [musl] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.53.2': resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} @@ -3470,11 +3464,11 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.1': - resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==} - cpu: [arm64] + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + cpu: [arm] os: [linux] - libc: [glibc] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.53.2': resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} @@ -3482,11 +3476,11 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.1': - resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - libc: [musl] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.53.2': resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} @@ -3494,11 +3488,11 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.53.1': - resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==} - cpu: [loong64] + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + cpu: [arm64] os: [linux] - libc: [glibc] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.53.2': resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} @@ -3506,9 +3500,9 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.1': - resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==} - cpu: [ppc64] + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + cpu: [loong64] os: [linux] libc: [glibc] @@ -3518,9 +3512,9 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.1': - resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==} - cpu: [riscv64] + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + cpu: [ppc64] os: [linux] libc: [glibc] @@ -3530,11 +3524,11 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.1': - resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - libc: [musl] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.53.2': resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} @@ -3542,11 +3536,11 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.1': - resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==} - cpu: [s390x] + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + cpu: [riscv64] os: [linux] - libc: [glibc] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.53.2': resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} @@ -3554,9 +3548,9 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.1': - resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==} - cpu: [x64] + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + cpu: [s390x] os: [linux] libc: [glibc] @@ -3566,11 +3560,11 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.1': - resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - libc: [musl] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.53.2': resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} @@ -3578,29 +3572,30 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.53.1': - resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==} - cpu: [arm64] - os: [openharmony] + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + cpu: [x64] + os: [linux] + libc: [musl] '@rollup/rollup-openharmony-arm64@4.53.2': resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.1': - resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] - os: [win32] + os: [openharmony] '@rollup/rollup-win32-arm64-msvc@4.53.2': resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.1': - resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==} - cpu: [ia32] + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.53.2': @@ -3608,9 +3603,9 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.1': - resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==} - cpu: [x64] + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-gnu@4.53.2': @@ -3618,8 +3613,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.1': - resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] @@ -3628,6 +3623,11 @@ packages: cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.52.5': resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4143,20 +4143,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.10': - resolution: {integrity: sha512-g+brmtoKa/sAeIohNJnnWhnHtU6GuqqVOSQ4SxDIPcgZWZyhJs5RmF5LpqXs8Kq64lANP+vnbn5JLzhLj/G56g==} + '@vitest/coverage-v8@4.0.12': + resolution: {integrity: sha512-d+w9xAFJJz6jyJRU4BUU7MH409Ush7FWKNkxJU+jASKg6WX33YT0zc+YawMR1JesMWt9QRFQY/uAD3BTn23FaA==} peerDependencies: - '@vitest/browser': 4.0.10 - vitest: 4.0.10 + '@vitest/browser': 4.0.12 + vitest: 4.0.12 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.10': - resolution: {integrity: sha512-3QkTX/lK39FBNwARCQRSQr0TP9+ywSdxSX+LgbJ2M1WmveXP72anTbnp2yl5fH+dU6SUmBzNMrDHs80G8G2DZg==} + '@vitest/expect@4.0.12': + resolution: {integrity: sha512-is+g0w8V3/ZhRNrRizrJNr8PFQKwYmctWlU4qg8zy5r9aIV5w8IxXLlfbbxJCwSpsVl2PXPTm2/zruqTqz3QSg==} - '@vitest/mocker@4.0.10': - resolution: {integrity: sha512-e2OfdexYkjkg8Hh3L9NVEfbwGXq5IZbDovkf30qW2tOh7Rh9sVtmSr2ztEXOFbymNxS4qjzLXUQIvATvN4B+lg==} + '@vitest/mocker@4.0.12': + resolution: {integrity: sha512-GsmA/tD5Ht3RUFoz41mZsMU1AXch3lhmgbTnoSPTdH231g7S3ytNN1aU0bZDSyxWs8WA7KDyMPD5L4q6V6vj9w==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4166,20 +4166,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.10': - resolution: {integrity: sha512-99EQbpa/zuDnvVjthwz5bH9o8iPefoQZ63WV8+bsRJZNw3qQSvSltfut8yu1Jc9mqOYi7pEbsKxYTi/rjaq6PA==} + '@vitest/pretty-format@4.0.12': + resolution: {integrity: sha512-R7nMAcnienG17MvRN8TPMJiCG8rrZJblV9mhT7oMFdBXvS0x+QD6S1G4DxFusR2E0QIS73f7DqSR1n87rrmE+g==} - '@vitest/runner@4.0.10': - resolution: {integrity: sha512-EXU2iSkKvNwtlL8L8doCpkyclw0mc/t4t9SeOnfOFPyqLmQwuceMPA4zJBa6jw0MKsZYbw7kAn+gl7HxrlB8UQ==} + '@vitest/runner@4.0.12': + resolution: {integrity: sha512-hDlCIJWuwlcLumfukPsNfPDOJokTv79hnOlf11V+n7E14rHNPz0Sp/BO6h8sh9qw4/UjZiKyYpVxK2ZNi+3ceQ==} - '@vitest/snapshot@4.0.10': - resolution: {integrity: sha512-2N4X2ZZl7kZw0qeGdQ41H0KND96L3qX1RgwuCfy6oUsF2ISGD/HpSbmms+CkIOsQmg2kulwfhJ4CI0asnZlvkg==} + '@vitest/snapshot@4.0.12': + resolution: {integrity: sha512-2jz9zAuBDUSbnfyixnyOd1S2YDBrZO23rt1bicAb6MA/ya5rHdKFRikPIDpBj/Dwvh6cbImDmudegnDAkHvmRQ==} - '@vitest/spy@4.0.10': - resolution: {integrity: sha512-AsY6sVS8OLb96GV5RoG8B6I35GAbNrC49AO+jNRF9YVGb/g9t+hzNm1H6kD0NDp8tt7VJLs6hb7YMkDXqu03iw==} + '@vitest/spy@4.0.12': + resolution: {integrity: sha512-GZjI9PPhiOYNX8Nsyqdw7JQB+u0BptL5fSnXiottAUBHlcMzgADV58A7SLTXXQwcN1yZ6gfd1DH+2bqjuUlCzw==} - '@vitest/utils@4.0.10': - resolution: {integrity: sha512-kOuqWnEwZNtQxMKg3WmPK1vmhZu9WcoX69iwWjVz+jvKTsF1emzsv3eoPcDr6ykA3qP2bsCQE7CwqfNtAVzsmg==} + '@vitest/utils@4.0.12': + resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -8125,8 +8125,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.50: - resolution: {integrity: sha512-JFULvCNl/anKn99eKjOSEubi0lLmNqQDAjyEMME2T4CwezUDL0i6t1O9xZsu2OMehPnV2caNefWpGF+8TnzB6A==} + rolldown@1.0.0-beta.51: + resolution: {integrity: sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8151,13 +8151,13 @@ packages: '@types/node': optional: true - rollup@4.53.1: - resolution: {integrity: sha512-n2I0V0lN3E9cxxMqBCT3opWOiQBzRN7UG60z/WDKqdX2zHUS/39lezBcsckZFsV6fUTSnfqI7kHf60jDAPGKug==} + rollup@4.53.2: + resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -8224,8 +8224,8 @@ packages: webpack: optional: true - sass@1.94.1: - resolution: {integrity: sha512-/YVm5FRQaRlr3oNh2LLFYne1PdPlRZGyKnHh1sLleOqLcohTR4eUUvBjBIqkl1fEXd1MGOHgzJGJh+LgTtV4KQ==} + sass@1.94.2: + resolution: {integrity: sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==} engines: {node: '>=14.0.0'} hasBin: true @@ -9061,8 +9061,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.2.2: - resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} + vite@7.2.4: + resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -9101,23 +9101,26 @@ packages: yaml: optional: true - vitest@4.0.10: - resolution: {integrity: sha512-2Fqty3MM9CDwOVet/jaQalYlbcjATZwPYGcqpiYQqgQ/dLC7GuHdISKgTYIVF/kaishKxLzleKWWfbSDklyIKg==} + vitest@4.0.12: + resolution: {integrity: sha512-pmW4GCKQ8t5Ko1jYjC3SqOr7TUKN7uHOHB/XGsAIb69eYu6d1ionGSsb5H9chmPf+WeXt0VE7jTXsB1IvWoNbw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.10 - '@vitest/browser-preview': 4.0.10 - '@vitest/browser-webdriverio': 4.0.10 - '@vitest/ui': 4.0.10 + '@vitest/browser-playwright': 4.0.12 + '@vitest/browser-preview': 4.0.12 + '@vitest/browser-webdriverio': 4.0.12 + '@vitest/ui': 4.0.12 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@opentelemetry/api': + optional: true '@types/debug': optional: true '@types/node': @@ -9507,8 +9510,8 @@ packages: zod@4.1.12: resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} - zone.js@0.15.1: - resolution: {integrity: sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==} + zone.js@0.16.0: + resolution: {integrity: sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==} snapshots: @@ -9619,22 +9622,22 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -9658,19 +9661,19 @@ snapshots: dependencies: tslib: 2.8.1 - '@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: '@angular/compiler': 21.0.0 - zone.js: 0.15.1 + zone.js: 0.16.0 - '@angular/forms@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 @@ -9686,13 +9689,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0(280d15a59d7c55264f5164ad0fb0f648)': + '@angular/material@21.0.0(239e29b74d9c69c8f989dfa3a5e69993)': dependencies: - '@angular/cdk': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 @@ -9756,35 +9759,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/platform-server@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': 21.0.0 - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -11935,7 +11938,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.97.0': {} + '@oxc-project/types@0.98.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -12059,59 +12062,59 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.50': + '@rolldown/binding-android-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.50': + '@rolldown/binding-darwin-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.50': + '@rolldown/binding-darwin-x64@1.0.0-beta.51': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.50': + '@rolldown/binding-freebsd-x64@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.50': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.50': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.50': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': optional: true - '@rolldown/pluginutils@1.0.0-beta.50': {} + '@rolldown/pluginutils@1.0.0-beta.51': {} - '@rollup/plugin-alias@6.0.0(rollup@4.53.2)': + '@rollup/plugin-alias@6.0.0(rollup@4.53.3)': optionalDependencies: - rollup: 4.53.2 + rollup: 4.53.3 - '@rollup/plugin-commonjs@29.0.0(rollup@4.53.2)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.53.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -12119,7 +12122,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.2 + rollup: 4.53.3 '@rollup/plugin-json@6.1.0(rollup@4.53.2)': dependencies: @@ -12127,33 +12130,39 @@ snapshots: optionalDependencies: rollup: 4.53.2 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.2)': + '@rollup/plugin-json@6.1.0(rollup@4.53.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + optionalDependencies: + rollup: 4.53.3 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.2 + rollup: 4.53.3 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.2)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.2 + rollup: 4.53.3 - '@rollup/pluginutils@5.2.0(rollup@4.53.2)': + '@rollup/pluginutils@5.2.0(rollup@4.53.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.2 + rollup: 4.53.3 '@rollup/pluginutils@5.3.0(rollup@4.53.2)': dependencies: @@ -12163,138 +12172,146 @@ snapshots: optionalDependencies: rollup: 4.53.2 - '@rollup/rollup-android-arm-eabi@4.53.1': - optional: true + '@rollup/pluginutils@5.3.0(rollup@4.53.3)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.53.3 '@rollup/rollup-android-arm-eabi@4.53.2': optional: true - '@rollup/rollup-android-arm64@4.53.1': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true '@rollup/rollup-android-arm64@4.53.2': optional: true - '@rollup/rollup-darwin-arm64@4.53.1': + '@rollup/rollup-android-arm64@4.53.3': optional: true '@rollup/rollup-darwin-arm64@4.53.2': optional: true - '@rollup/rollup-darwin-x64@4.53.1': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true '@rollup/rollup-darwin-x64@4.53.2': optional: true - '@rollup/rollup-freebsd-arm64@4.53.1': + '@rollup/rollup-darwin-x64@4.53.3': optional: true '@rollup/rollup-freebsd-arm64@4.53.2': optional: true - '@rollup/rollup-freebsd-x64@4.53.1': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true '@rollup/rollup-freebsd-x64@4.53.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.1': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.53.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.1': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true '@rollup/rollup-linux-arm-musleabihf@4.53.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.1': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true '@rollup/rollup-linux-arm64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.1': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true '@rollup/rollup-linux-arm64-musl@4.53.2': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.1': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true '@rollup/rollup-linux-loong64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.1': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true '@rollup/rollup-linux-ppc64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.1': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true '@rollup/rollup-linux-riscv64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.1': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true '@rollup/rollup-linux-riscv64-musl@4.53.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.1': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true '@rollup/rollup-linux-s390x-gnu@4.53.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.1': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true '@rollup/rollup-linux-x64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-x64-musl@4.53.1': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true '@rollup/rollup-linux-x64-musl@4.53.2': optional: true - '@rollup/rollup-openharmony-arm64@4.53.1': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true '@rollup/rollup-openharmony-arm64@4.53.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.1': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true '@rollup/rollup-win32-arm64-msvc@4.53.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.1': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true '@rollup/rollup-win32-ia32-msvc@4.53.2': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.1': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true '@rollup/rollup-win32-x64-gnu@4.53.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.1': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true '@rollup/rollup-win32-x64-msvc@4.53.2': optional: true + '@rollup/rollup-win32-x64-msvc@4.53.3': + optional: true + '@rollup/wasm-node@4.52.5': dependencies: '@types/estree': 1.0.8 @@ -12995,14 +13012,14 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.10(vitest@4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.12(vitest@4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.10 + '@vitest/utils': 4.0.12 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -13012,47 +13029,47 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.10': + '@vitest/expect@4.0.12': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.10 - '@vitest/utils': 4.0.10 + '@vitest/spy': 4.0.12 + '@vitest/utils': 4.0.12 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.10(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.12(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.10 + '@vitest/spy': 4.0.12 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.10': + '@vitest/pretty-format@4.0.12': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.10': + '@vitest/runner@4.0.12': dependencies: - '@vitest/utils': 4.0.10 + '@vitest/utils': 4.0.12 pathe: 2.0.3 - '@vitest/snapshot@4.0.10': + '@vitest/snapshot@4.0.12': dependencies: - '@vitest/pretty-format': 4.0.10 + '@vitest/pretty-format': 4.0.12 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.10': {} + '@vitest/spy@4.0.12': {} - '@vitest/utils@4.0.10': + '@vitest/utils@4.0.12': dependencies: - '@vitest/pretty-format': 4.0.10 + '@vitest/pretty-format': 4.0.12 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -13088,11 +13105,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.2) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.3) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.53.2 + rollup: 4.53.3 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -16833,7 +16850,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.2.3(rollup@4.53.2)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.94.1 + sass: 1.94.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -17772,25 +17789,25 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@1.0.0-beta.50: + rolldown@1.0.0-beta.51: dependencies: - '@oxc-project/types': 0.97.0 - '@rolldown/pluginutils': 1.0.0-beta.50 + '@oxc-project/types': 0.98.0 + '@rolldown/pluginutils': 1.0.0-beta.51 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.50 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.50 - '@rolldown/binding-darwin-x64': 1.0.0-beta.50 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.50 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.50 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.50 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.50 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.50 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.50 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.50 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.50 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.50 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.50 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.50 + '@rolldown/binding-android-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.51 + '@rolldown/binding-darwin-x64': 1.0.0-beta.51 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.51 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.51 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.51 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.51 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.51 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.51 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.51 rollup-license-plugin@3.1.0: dependencies: @@ -17807,40 +17824,20 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.53.2): + rollup-plugin-dts@6.2.3(rollup@4.53.3)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.2) - rollup: 4.53.2 + magic-string: 0.30.21 + rollup: 4.53.3 + typescript: 5.9.3 optionalDependencies: - '@types/node': 22.19.0 + '@babel/code-frame': 7.27.1 - rollup@4.53.1: + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.53.3): dependencies: - '@types/estree': 1.0.8 + '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + rollup: 4.53.3 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.1 - '@rollup/rollup-android-arm64': 4.53.1 - '@rollup/rollup-darwin-arm64': 4.53.1 - '@rollup/rollup-darwin-x64': 4.53.1 - '@rollup/rollup-freebsd-arm64': 4.53.1 - '@rollup/rollup-freebsd-x64': 4.53.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.1 - '@rollup/rollup-linux-arm-musleabihf': 4.53.1 - '@rollup/rollup-linux-arm64-gnu': 4.53.1 - '@rollup/rollup-linux-arm64-musl': 4.53.1 - '@rollup/rollup-linux-loong64-gnu': 4.53.1 - '@rollup/rollup-linux-ppc64-gnu': 4.53.1 - '@rollup/rollup-linux-riscv64-gnu': 4.53.1 - '@rollup/rollup-linux-riscv64-musl': 4.53.1 - '@rollup/rollup-linux-s390x-gnu': 4.53.1 - '@rollup/rollup-linux-x64-gnu': 4.53.1 - '@rollup/rollup-linux-x64-musl': 4.53.1 - '@rollup/rollup-openharmony-arm64': 4.53.1 - '@rollup/rollup-win32-arm64-msvc': 4.53.1 - '@rollup/rollup-win32-ia32-msvc': 4.53.1 - '@rollup/rollup-win32-x64-gnu': 4.53.1 - '@rollup/rollup-win32-x64-msvc': 4.53.1 - fsevents: 2.3.3 + '@types/node': 22.19.0 rollup@4.53.2: dependencies: @@ -17870,6 +17867,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.53.2 fsevents: 2.3.3 + rollup@4.53.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -17919,14 +17944,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.94.1)(webpack@5.103.0(esbuild@0.27.0)): + sass-loader@16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.0)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.94.1 + sass: 1.94.2 webpack: 5.103.0(esbuild@0.27.0) - sass@1.94.1: + sass@1.94.2: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -18961,33 +18986,33 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.1 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.1 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.94.1 + sass: 1.94.2 terser: 5.44.1 tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.10(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.10 - '@vitest/mocker': 4.0.10(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.10 - '@vitest/runner': 4.0.10 - '@vitest/snapshot': 4.0.10 - '@vitest/spy': 4.0.10 - '@vitest/utils': 4.0.10 + '@vitest/expect': 4.0.12 + '@vitest/mocker': 4.0.12(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.12 + '@vitest/runner': 4.0.12 + '@vitest/snapshot': 4.0.12 + '@vitest/spy': 4.0.12 + '@vitest/utils': 4.0.12 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 @@ -18999,9 +19024,10 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: + '@opentelemetry/api': 1.9.0 '@types/node': 24.10.1 jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: @@ -19421,4 +19447,4 @@ snapshots: zod@4.1.12: {} - zone.js@0.15.1: {} + zone.js@0.16.0: {} From 59319b8d6f02f857ab375f330812ff430e90f059 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 21 Nov 2025 09:06:02 +0000 Subject: [PATCH 1862/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 57200a6c1ae3..bc46e7ed3675 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.2") bazel_dep(name = "rules_nodejs", version = "6.6.2") -bazel_dep(name = "aspect_rules_js", version = "2.8.1") +bazel_dep(name = "aspect_rules_js", version = "2.8.2") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "74d8baec22a5ffd3a1a36bac252399fa125a6c4b", + commit = "9b751f826628cab386d1e8ae9c1fa766dbc6a495", remote = "https://github.com/devversion/rules_angular.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index d616eea2d7cd..6f5d406a120b 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -29,7 +29,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/MODULE.bazel": "edcde75a1357952d3acedb6f3622614c87f730927d753af77b36c604ff407f0d", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/source.json": "6da210e9e76eda699f9ca998a6f6c48980f78589f0f6d240842de6cef96543ce", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/MODULE.bazel": "76526405d6a65dae45db16b8b4619b502063ac573d2a2ae0a90fddc7d3247288", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/source.json": "a03164e3f59a05d9a6d205a477ea49ba8ee141ab764a9f38b43e6302eb4fa2b9", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", @@ -210,7 +211,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "GraoR12PYCcA5bpasvNm9vmnBGp+8JXnCK4y7D5+qkg=", + "bzlTransitiveDigest": "Kp1ElwnSsU9URW4hnpM9wzhITxGUNAp4tu7dOwA82Qo=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -414,8 +415,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "AhiDaIgaI2cWTIbzA5ZbR/OmQSUpMCFEhsCzil+lwW4=", - "usagesDigest": "J526kdgX5AQ2bYrNGwe6lTrakPUSZPfyHG24PGMUG0s=", + "bzlTransitiveDigest": "b2732vQWZpf2g1U6Rf2M0kXVkyN5QVnEn69W2+zHZPQ=", + "usagesDigest": "aGI0J/oETkNLCXhrpWEDlZEAKB8hs563suxOHlpcTj0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -636,7 +637,7 @@ "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "SMpx40jPXDQGAklWybhmgSAy5HdV4ZEIYFMuHxifgT0=", + "usagesDigest": "nyE85/XALFsAElY+d7H265tevR5W40tapQPfhmeIU2E=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -646,7 +647,7 @@ "ruleClassName": "tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.8.1", + "aspect_rules_js": "2.8.2", "aspect_rules_ts": "3.7.1", "aspect_rules_esbuild": "0.24.0", "aspect_tools_telemetry": "0.2.8" @@ -1150,7 +1151,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "6u/wPA8vJI6qkxtlJXv2v5SKQPZ1GrCSLH9fuOW/ay8=", + "usagesDigest": "R8gkuknFYSnypceao7XEOC2RaBVFY7V5K0xvOZHUZyY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 4dac5f25106162d9cbf20ec2bf4fe02c47409c41 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 21 Nov 2025 09:40:33 +0000 Subject: [PATCH 1863/2162] fix(@angular/ssr): handle `X-Forwarded-Prefix` and `APP_BASE_HREF` in redirects This commit ensures that redirects correctly account for the X-Forwarded-Prefix header and APP_BASE_HREF, preventing incorrect redirect loops or invalid URLs when running behind a proxy or with a base href. Closes #31902 --- packages/angular/ssr/src/app.ts | 9 +++- packages/angular/ssr/src/utils/ng.ts | 32 +++++++++--- packages/angular/ssr/test/app-engine_spec.ts | 14 ----- packages/angular/ssr/test/app_spec.ts | 55 +++++++++++++++++++- 4 files changed, 87 insertions(+), 23 deletions(-) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 4895866d715b..ee14f8a26105 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -175,8 +175,15 @@ export class AngularServerApp { } const { redirectTo, status, renderMode } = matchedRoute; + if (redirectTo !== undefined) { - return createRedirectResponse(buildPathWithParams(redirectTo, url.pathname), status); + return createRedirectResponse( + joinUrlParts( + request.headers.get('X-Forwarded-Prefix') ?? '', + buildPathWithParams(redirectTo, url.pathname), + ), + status, + ); } if (renderMode === RenderMode.Prerender) { diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index 5d10560db39d..16e059e6aaf2 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -6,10 +6,11 @@ * found in the LICENSE file at https://angular.dev/license */ -import { PlatformLocation } from '@angular/common'; +import { APP_BASE_HREF, PlatformLocation } from '@angular/common'; import { ApplicationRef, type PlatformRef, + REQUEST, type StaticProvider, type Type, ɵConsole, @@ -23,7 +24,7 @@ import { } from '@angular/platform-server'; import { ActivatedRoute, Router } from '@angular/router'; import { Console } from '../console'; -import { stripIndexHtmlFromURL, stripTrailingSlash } from './url'; +import { addTrailingSlash, joinUrlParts, stripIndexHtmlFromURL, stripTrailingSlash } from './url'; /** * Represents the bootstrap mechanism for an Angular application. @@ -110,9 +111,13 @@ export async function renderAngular( } else if (lastSuccessfulNavigation?.finalUrl) { hasNavigationError = false; + const requestPrefix = + envInjector.get(APP_BASE_HREF, null, { optional: true }) ?? + envInjector.get(REQUEST, null, { optional: true })?.headers.get('X-Forwarded-Prefix'); + const { pathname, search, hash } = envInjector.get(PlatformLocation); - const finalUrl = constructDecodedUrl({ pathname, search, hash }); - const urlToRenderString = constructDecodedUrl(urlToRender); + const finalUrl = constructDecodedUrl({ pathname, search, hash }, requestPrefix); + const urlToRenderString = constructDecodedUrl(urlToRender, requestPrefix); if (urlToRenderString !== finalUrl) { redirectTo = [pathname, search, hash].join(''); @@ -186,10 +191,23 @@ function asyncDestroyPlatform(platformRef: PlatformRef): Promise { * - `pathname`: The path of the URL. * - `search`: The query string of the URL (including '?'). * - `hash`: The hash fragment of the URL (including '#'). + * @param prefix - An optional prefix (e.g., `APP_BASE_HREF`) to prepend to the pathname + * if it is not already present. * @returns The constructed and decoded URL string. */ -function constructDecodedUrl(url: { pathname: string; search: string; hash: string }): string { - const joinedUrl = [stripTrailingSlash(url.pathname), url.search, url.hash].join(''); +function constructDecodedUrl( + url: { pathname: string; search: string; hash: string }, + prefix?: string | null, +): string { + const { pathname, hash, search } = url; + const urlParts: string[] = []; + if (prefix && !addTrailingSlash(pathname).startsWith(addTrailingSlash(prefix))) { + urlParts.push(joinUrlParts(prefix, pathname)); + } else { + urlParts.push(stripTrailingSlash(pathname)); + } + + urlParts.push(search, hash); - return decodeURIComponent(joinedUrl); + return decodeURIComponent(urlParts.join('')); } diff --git a/packages/angular/ssr/test/app-engine_spec.ts b/packages/angular/ssr/test/app-engine_spec.ts index bfc824b6d260..b08931b9400b 100644 --- a/packages/angular/ssr/test/app-engine_spec.ts +++ b/packages/angular/ssr/test/app-engine_spec.ts @@ -269,19 +269,5 @@ describe('AngularAppEngine', () => { const response = await appEngine.handle(request); expect(await response?.text()).toContain('Home works'); }); - - it('should work with encoded characters', async () => { - const request = new Request('https://example.com/home?email=xyz%40xyz.com'); - const response = await appEngine.handle(request); - expect(response?.status).toBe(200); - expect(await response?.text()).toContain('Home works'); - }); - - it('should work with decoded characters', async () => { - const request = new Request('https://example.com/home?email=xyz@xyz.com'); - const response = await appEngine.handle(request); - expect(response?.status).toBe(200); - expect(await response?.text()).toContain('Home works'); - }); }); }); diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index f85d4700329f..46b7cebc4e8a 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -11,7 +11,8 @@ import '@angular/compiler'; /* eslint-enable import/no-unassigned-import */ -import { Component, inject } from '@angular/core'; +import { APP_BASE_HREF } from '@angular/common'; +import { Component, REQUEST, inject } from '@angular/core'; import { CanActivateFn, Router } from '@angular/router'; import { AngularServerApp } from '../src/app'; import { RenderMode } from '../src/routes/route-config'; @@ -124,6 +125,14 @@ describe('AngularServerApp', () => { hash: 'f799132d0a09e0fef93c68a12e443527700eb59e6f67fcb7854c3a60ff082fde', }, }, + undefined, + undefined, + [ + { + provide: APP_BASE_HREF, + useFactory: () => inject(REQUEST)?.headers.get('X-Forwarded-Prefix'), + }, + ], ); app = new AngularServerApp(); @@ -309,6 +318,50 @@ describe('AngularServerApp', () => { expect(response?.headers.get('location')).toBe('/redirect-via-guard?filter=test'); expect(response?.status).toBe(302); }); + + it('should work with encoded characters', async () => { + const request = new Request('http://localhost/home?email=xyz%40xyz.com'); + const response = await app.handle(request); + expect(response?.status).toBe(200); + expect(await response?.text()).toContain('Home works'); + }); + + it('should work with decoded characters', async () => { + const request = new Request('http://localhost/home?email=xyz@xyz.com'); + const response = await app.handle(request); + expect(response?.status).toBe(200); + expect(await response?.text()).toContain('Home works'); + }); + + describe('APP_BASE_HREF / X-Forwarded-Prefix', () => { + const headers = new Headers({ 'X-Forwarded-Prefix': '/base/' }); + + it('should return a rendered page for known paths', async () => { + const request = new Request('https://example.com/home', { headers }); + const response = await app.handle(request); + expect(await response?.text()).toContain('Home works'); + }); + + it('returns a 302 status and redirects to the correct location when `redirectTo` is a function', async () => { + const response = await app.handle( + new Request('http://localhost/redirect-to-function', { + headers, + }), + ); + expect(response?.headers.get('location')).toBe('/base/home'); + expect(response?.status).toBe(302); + }); + + it('returns a 302 status and redirects to the correct location when `redirectTo` is a string', async () => { + const response = await app.handle( + new Request('http://localhost/redirect', { + headers, + }), + ); + expect(response?.headers.get('location')).toBe('/base/home'); + expect(response?.status).toBe(302); + }); + }); }); }); }); From 89a6caeb13e84d6531fb0584f8235a1b800411ae Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 24 Nov 2025 13:12:51 +0000 Subject: [PATCH 1864/2162] refactor: simplify dynamic import type assertions and remove resolution mode hints Remove `any` castings --- .../build/src/tools/vite/middlewares/ssr-middleware.ts | 6 ++---- .../build/src/utils/server-rendering/launch-server.ts | 3 +-- packages/angular/cli/src/command-builder/command-module.ts | 3 +-- 3 files changed, 4 insertions(+), 8 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 9719fc6b7482..4b0a8d8390f1 100644 --- a/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts @@ -37,8 +37,7 @@ export function createAngularSsrInternalMiddleware( // which must be processed by the runtime linker, even if they are not used. await import('@angular/compiler'); const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } = (await import( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - '@angular/ssr/node' as any + '@angular/ssr/node' as string )) as typeof import('@angular/ssr/node', { with: { 'resolution-mode': 'import' } }); const { ɵgetOrCreateAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as { @@ -88,8 +87,7 @@ export async function createAngularSsrExternalMiddleware( await import('@angular/compiler'); const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = (await import( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - '@angular/ssr/node' as any + '@angular/ssr/node' as string )) as typeof import('@angular/ssr/node', { with: { 'resolution-mode': 'import' } }); return function angularSsrExternalMiddleware( 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 c17337178b13..95b2784c6f63 100644 --- a/packages/angular/build/src/utils/server-rendering/launch-server.ts +++ b/packages/angular/build/src/utils/server-rendering/launch-server.ts @@ -21,8 +21,7 @@ export const DEFAULT_URL = new URL('http://ng-localhost/'); export async function launchServer(): Promise { const { reqHandler } = await loadEsmModuleFromMemory('./server.mjs'); const { createWebRequestFromNodeRequest, writeResponseToNodeResponse } = (await import( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - '@angular/ssr/node' as any + '@angular/ssr/node' as string )) as typeof import('@angular/ssr/node', { with: { 'resolution-mode': 'import' } }); if (!isSsrNodeRequestHandler(reqHandler) && !isSsrRequestHandler(reqHandler)) { diff --git a/packages/angular/cli/src/command-builder/command-module.ts b/packages/angular/cli/src/command-builder/command-module.ts index 64f7ac7377c7..d036656cf2dd 100644 --- a/packages/angular/cli/src/command-builder/command-module.ts +++ b/packages/angular/cli/src/command-builder/command-module.ts @@ -14,8 +14,7 @@ import type { Argv, CamelCaseKey, CommandModule as YargsCommandModule, - // Resolution mode is required due to CamelCaseKey missing from esm types -} from 'yargs' with { 'resolution-mode': 'require' }; +} from 'yargs'; import { Parser as yargsParser } from 'yargs/helpers'; import { getAnalyticsUserId } from '../analytics/analytics'; import { AnalyticsCollector } from '../analytics/analytics-collector'; From cacd5d9359a3b71cc340353c57543598422b6fa4 Mon Sep 17 00:00:00 2001 From: deku-nattsu Date: Fri, 21 Nov 2025 16:40:44 +0100 Subject: [PATCH 1865/2162] fix(@schematics/angular): silently skip when the build target already uses one of the new builders --- .../angular/migrations/use-application-builder/migration.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/schematics/angular/migrations/use-application-builder/migration.ts b/packages/schematics/angular/migrations/use-application-builder/migration.ts index 9e8c9204d67f..b481c4f30034 100644 --- a/packages/schematics/angular/migrations/use-application-builder/migration.ts +++ b/packages/schematics/angular/migrations/use-application-builder/migration.ts @@ -174,7 +174,11 @@ function updateProjects(tree: Tree, context: SchematicContext) { } const buildTarget = project.targets.get('build'); - if (!buildTarget || buildTarget.builder === Builders.Application) { + if ( + !buildTarget || + buildTarget.builder === Builders.Application || + buildTarget.builder === Builders.BuildApplication + ) { continue; } From 99a40269c5b5eadc1ce9e956100908de37af1cfc Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Nov 2025 05:06:27 +0000 Subject: [PATCH 1866/2162] build: update actions/checkout action to v6 See associated pull request for more information. --- .github/workflows/assistant-to-the-branch-manager.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dev-infra.yml | 4 ++-- .github/workflows/pr.yml | 2 +- .github/workflows/scorecard.yml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index e3eb60bd1368..28e43f9a5d98 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -13,7 +13,7 @@ jobs: assistant_to_the_branch_manager: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - uses: angular/dev-infra/github-actions/branch-manager@f47684669736e28fd77eab64e65b2952c8a948ee diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b7e2721856bb..b07d26fb957e 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false steps: - name: Checkout repository - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Initialize CodeQL diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 0b0997b0d9f0..876f5d23a7e8 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,14 +12,14 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: angular/dev-infra/github-actions/pull-request-labeling@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: angular/dev-infra/github-actions/post-approval-changes@f47684669736e28fd77eab64e65b2952c8a948ee with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 34f89073a2d8..1f4c9102c55a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -20,7 +20,7 @@ jobs: outputs: snapshots: ${{ steps.filter.outputs.snapshots }} steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1de63102d522..66993790c673 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -25,7 +25,7 @@ jobs: steps: - name: 'Checkout code' - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false From 48d942aa945da26c84e5a32c9661f361773ca3f5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Nov 2025 05:06:10 +0000 Subject: [PATCH 1867/2162] build: update pnpm to v10.23.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 413a36ab8c6b..ad908526615f 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.22.0", + "packageManager": "pnpm@10.23.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.22.0" + "pnpm": "10.23.0" }, "author": "Angular Authors", "license": "MIT", From 43d5dfaa144b80f4292e4a57a79a4b872166fda2 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Sat, 22 Nov 2025 13:24:27 +0100 Subject: [PATCH 1868/2162] fix(@schematics/angular): add missing imports for lifecycle hooks in jasmine-vitest migration --- .../jasmine-vitest/test-file-transformer.ts | 15 +++++++- .../test-file-transformer_add-imports_spec.ts | 36 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index eb8afdfe0449..79f4ee2cfc9a 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -56,6 +56,19 @@ import { RefactorReporter } from './utils/refactor-reporter'; */ const BLANK_LINE_PLACEHOLDER = '// __PRESERVE_BLANK_LINE__'; +/** + * Vitest function names that should be imported when using the --add-imports option. + */ +const VITEST_FUNCTION_NAMES = new Set([ + 'describe', + 'it', + 'expect', + 'beforeEach', + 'afterEach', + 'beforeAll', + 'afterAll', +]); + /** * Replaces blank lines in the content with a placeholder to prevent TypeScript's printer * from removing them. This ensures that the original formatting of blank lines is preserved. @@ -183,7 +196,7 @@ export function transformJasmineToVitest( if (ts.isCallExpression(transformedNode)) { if (options.addImports && ts.isIdentifier(transformedNode.expression)) { const name = transformedNode.expression.text; - if (name === 'describe' || name === 'it' || name === 'expect') { + if (VITEST_FUNCTION_NAMES.has(name)) { addVitestValueImport(pendingVitestValueImports, name); } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts index fac88bb9ed02..1fd4beb6546e 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_add-imports_spec.ts @@ -81,5 +81,41 @@ describe('Jasmine to Vitest Transformer', () => { `; await expectTransformation(input, expected, true); }); + + it('should add imports for beforeEach and afterEach when addImports is true', async () => { + const input = ` + describe('My Suite', () => { + beforeEach(() => {}); + afterEach(() => {}); + }); + `; + const expected = ` + import { afterEach, beforeEach, describe } from 'vitest'; + + describe('My Suite', () => { + beforeEach(() => {}); + afterEach(() => {}); + }); + `; + await expectTransformation(input, expected, true); + }); + + it('should add imports for beforeAll and afterAll when addImports is true', async () => { + const input = ` + describe('My Suite', () => { + beforeAll(() => {}); + afterAll(() => {}); + }); + `; + const expected = ` + import { afterAll, beforeAll, describe } from 'vitest'; + + describe('My Suite', () => { + beforeAll(() => {}); + afterAll(() => {}); + }); + `; + await expectTransformation(input, expected, true); + }); }); }); From 30bbe8719b575c911c07688f17f8ae9c08123b60 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Nov 2025 14:39:07 +0000 Subject: [PATCH 1869/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- 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 33a3f69425fc..8e858ebf0031 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#2668ef8ed2ced6b84f333661c337a1c961ff0910", - "@angular/cdk": "github:angular/cdk-builds#bce825c294a076a7706ded9ddfaac114929d67d5", - "@angular/common": "github:angular/common-builds#fa71208e517fb6bfa7a5e4e068df164bc651b56d", - "@angular/compiler": "github:angular/compiler-builds#e049255c3aa0db2505e5ef17d841d7fb2452a816", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#1961c8b8f3adbda176eac940264c839dac59419d", - "@angular/core": "github:angular/core-builds#9be43ced9f4bc45b93928ce6aa012c8cb9ab64d1", - "@angular/forms": "github:angular/forms-builds#8686ae25f8390f800d2e046cbcf6f160fbe0ca62", - "@angular/language-service": "github:angular/language-service-builds#0d4f1eb9e846e9d6102d67237ce5b81eced19cc0", - "@angular/localize": "github:angular/localize-builds#9c71f61799b3fece5c4dafdc5f92acd60f00fa83", - "@angular/material": "github:angular/material-builds#5ceb63b117f5cdc649add10f90bb80f83ea813f5", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e44a76679fae476bbde35538fbf5d0e3dc452c91", - "@angular/platform-browser": "github:angular/platform-browser-builds#77ac8bdc6a33597b67f4386c1d5e6536392de2ac", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#8bd85b81f867c37f21743f4a8a2e0ec4e36a48e0", - "@angular/platform-server": "github:angular/platform-server-builds#83cd360554ba842222c3eb5e609a3336f4a40da1", - "@angular/router": "github:angular/router-builds#13a9f8a4c518926e9308fa9ca930c6ced08b3c24", - "@angular/service-worker": "github:angular/service-worker-builds#7a36ce8587a04493dda066d299b7f72afddfd7bb" + "@angular/animations": "github:angular/animations-builds#298999d4e21a7649d2614ac6e59187555a3b3ec8", + "@angular/cdk": "github:angular/cdk-builds#afcea86fad7e0c8150b054b199f4743e97fe7d6d", + "@angular/common": "github:angular/common-builds#a5f75da060a704a8bf1e36cd586b36abe16bda75", + "@angular/compiler": "github:angular/compiler-builds#fcf65f21c335a421d7b636ae5890817f945b1d52", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#0531711efd9fe2aee6e25f8a9d8082c85c7fa862", + "@angular/core": "github:angular/core-builds#052c2451c8ad0efa53945f21680ee7d66498aced", + "@angular/forms": "github:angular/forms-builds#c3758ea531d4cf9c2954498c1832a099aa88847a", + "@angular/language-service": "github:angular/language-service-builds#9eda55356f864d1193781c69f77a7253ba3048af", + "@angular/localize": "github:angular/localize-builds#4dc3dc9bad4df2b4043c3a807bc4ae3e2f970d82", + "@angular/material": "github:angular/material-builds#ac49dbb67f0261c26725791f16a29fbe6126da4c", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#35f6a4b3c74bc488bf3440b8bb1eee064b6ad17f", + "@angular/platform-browser": "github:angular/platform-browser-builds#85f79a557b795e4307166f4c8e07ba65636a7529", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#eddc5301e3a8a25ac1c9facb65cd0cdd3f8d7dbb", + "@angular/platform-server": "github:angular/platform-server-builds#fef7e7cde613845746b1bd478cd2679d292fdec9", + "@angular/router": "github:angular/router-builds#031f4d73aed3ebdadff38da3cb73e97e9d725be2", + "@angular/service-worker": "github:angular/service-worker-builds#7ebbfdda2bf569da9801df9f9f4d3da59837c78e" } } From 98636b2903b7bbc68562c4b22c3503b85c512a4f Mon Sep 17 00:00:00 2001 From: deku-nattsu Date: Fri, 21 Nov 2025 17:03:22 +0100 Subject: [PATCH 1870/2162] refactor(@angular/build): update private exports to expose DiagnosticModes --- packages/angular/build/src/private.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/build/src/private.ts b/packages/angular/build/src/private.ts index 8012ad7f567a..175dd39530ae 100644 --- a/packages/angular/build/src/private.ts +++ b/packages/angular/build/src/private.ts @@ -61,6 +61,7 @@ export function createCompilerPlugin( } export type { AngularCompilation } from './tools/angular/compilation'; +export { DiagnosticModes } from './tools/angular/compilation'; export { createAngularCompilation }; export { ComponentStylesheetBundler } from './tools/esbuild/angular/component-stylesheets'; From 32da5a86f597db4823b8b28fe4c27f350840f05d Mon Sep 17 00:00:00 2001 From: jnizet Date: Sat, 22 Nov 2025 17:34:30 +0100 Subject: [PATCH 1871/2162] fix(@schematics/angular): fix migration of `jasmine.clock().mockDate()` The migration previously migrated `jasmine.clock().mockDate()` to `vi.setSystemTime()`, which does not compile because `vi.setSystemTime()` requires an argument. This commit fixes it by migrating `jasmine.clock().mockDate()` to `vi.setSystemTime(new Date())`. --- .../jasmine-vitest/transformers/jasmine-misc.ts | 10 +++++++++- .../jasmine-vitest/transformers/jasmine-misc_spec.ts | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts index f9667701e376..058d015c9773 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts @@ -61,7 +61,15 @@ export function transformTimerMocks( node, `Transformed \`jasmine.clock().${pae.name.text}\` to \`vi.${newMethodName}\`.`, ); - const newArgs = newMethodName === 'useFakeTimers' ? [] : node.arguments; + let newArgs: readonly ts.Expression[] = node.arguments; + if (newMethodName === 'useFakeTimers') { + newArgs = []; + } + if (newMethodName === 'setSystemTime' && node.arguments.length === 0) { + newArgs = [ + ts.factory.createNewExpression(ts.factory.createIdentifier('Date'), undefined, []), + ]; + } return createViCallExpression(newMethodName, newArgs); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts index 5095a4448db7..4684f7f69d2d 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts @@ -31,6 +31,11 @@ describe('Jasmine to Vitest Transformer', () => { input: `jasmine.clock().mockDate(new Date('2025-01-01'));`, expected: `vi.setSystemTime(new Date('2025-01-01'));`, }, + { + description: 'should transform jasmine.clock().mockDate() to vi.setSystemTime(new Date())', + input: `jasmine.clock().mockDate();`, + expected: `vi.setSystemTime(new Date());`, + }, ]; testCases.forEach(({ description, input, expected }) => { From ff519b8ebe32f62e2291309f03b8f672b64e6a0b Mon Sep 17 00:00:00 2001 From: reins-ch Date: Fri, 21 Nov 2025 23:58:57 +0100 Subject: [PATCH 1872/2162] docs: mention Vitest instead of Karma in README template of workspace files Since version Angular 21, Vitest is the default test runner. --- packages/schematics/angular/workspace/files/README.md.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/schematics/angular/workspace/files/README.md.template b/packages/schematics/angular/workspace/files/README.md.template index 85cba41ab1ea..3cf62f4dabcc 100644 --- a/packages/schematics/angular/workspace/files/README.md.template +++ b/packages/schematics/angular/workspace/files/README.md.template @@ -38,7 +38,7 @@ This will compile your project and store the build artifacts in the `dist/` dire ## Running unit tests -To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command: +To execute unit tests with the [Vitest](https://vitest.dev/) test runner, use the following command: ```bash ng test From 36cf3afb485a01f86c4c90f136b38a3cf338e313 Mon Sep 17 00:00:00 2001 From: jnizet Date: Sat, 22 Nov 2025 20:05:46 +0100 Subject: [PATCH 1873/2162] feat(@schematics/angular): add browserMode option to jasmine-vitest schematic This option allows not migrating the `toHaveClass` assertion, which exists in Vitest in browser mode and thus is best left as is. fix #31917 --- .../angular/refactor/jasmine-vitest/index.ts | 1 + .../refactor/jasmine-vitest/schema.json | 5 ++ .../test-file-transformer.integration_spec.ts | 49 ++++++++++++++++++- .../jasmine-vitest/test-file-transformer.ts | 6 ++- .../refactor/jasmine-vitest/test-helpers.ts | 5 +- 5 files changed, 61 insertions(+), 5 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index.ts b/packages/schematics/angular/refactor/jasmine-vitest/index.ts index a7e34ad26c02..2498855c4607 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index.ts @@ -121,6 +121,7 @@ export default function (options: Schema): Rule { const content = tree.readText(file); const newContent = transformJasmineToVitest(file, content, reporter, { addImports: !!options.addImports, + browserMode: !!options.browerMode, }); if (content !== newContent) { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/schema.json b/packages/schematics/angular/refactor/jasmine-vitest/schema.json index 99f34057ffb5..cb361280e473 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/schema.json +++ b/packages/schematics/angular/refactor/jasmine-vitest/schema.json @@ -30,6 +30,11 @@ "type": "boolean", "description": "Whether to add imports for the Vitest API. The Angular `unit-test` system automatically uses the Vitest globals option, which means explicit imports for global APIs like `describe`, `it`, `expect`, and `vi` are often not strictly necessary unless Vitest has been configured not to use globals.", "default": false + }, + "browserMode": { + "type": "boolean", + "description": "Whether the tests are intended to run in browser mode. If true, the `toHaveClass` assertions are left as is because Vitest browser mode has such an assertion. Otherwise they're migrated to an equivalent assertion.", + "default": false } } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index 8944e34dfa14..079718212d84 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -11,10 +11,17 @@ import { format } from 'prettier'; import { transformJasmineToVitest } from './test-file-transformer'; import { RefactorReporter } from './utils/refactor-reporter'; -async function expectTransformation(input: string, expected: string): Promise { +async function expectTransformation( + input: string, + expected: string, + options: { addImports: boolean; browserMode: boolean } = { + addImports: false, + browserMode: false, + }, +): Promise { const logger = new logging.NullLogger(); const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter, { addImports: false }); + const transformed = transformJasmineToVitest('spec.ts', input, reporter, options); const formattedTransformed = await format(transformed, { parser: 'typescript' }); const formattedExpected = await format(expected, { parser: 'typescript' }); @@ -389,6 +396,44 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { await expectTransformation(jasmineCode, vitestCode); }); + it('should not transform toHaveClass in browser mode', async () => { + const jasmineCode = ` + describe('toHaveClass in browser mode', () => { + let el: HTMLElement; + + beforeEach(() => { + el = document.createElement('div'); + }); + + it('should handle DOM matchers like toHaveClass', () => { + el.classList.add('my-class'); + expect(el).withContext('element should have my-class').toHaveClass('my-class'); + el.classList.remove('my-class'); + expect(el).not.toHaveClass('my-class'); + }); + }); + `; + + const vitestCode = ` + describe('toHaveClass in browser mode', () => { + let el: HTMLElement; + + beforeEach(() => { + el = document.createElement('div'); + }); + + it('should handle DOM matchers like toHaveClass', () => { + el.classList.add('my-class'); + expect(el, 'element should have my-class').toHaveClass('my-class'); + el.classList.remove('my-class'); + expect(el).not.toHaveClass('my-class'); + }); + }); + `; + + await expectTransformation(jasmineCode, vitestCode, { addImports: false, browserMode: true }); + }); + it('should add TODOs for unsupported Jasmine features', async () => { const jasmineCode = ` describe('Unsupported Features', () => { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts index 79f4ee2cfc9a..db225a0a4473 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.ts @@ -165,7 +165,7 @@ export function transformJasmineToVitest( filePath: string, content: string, reporter: RefactorReporter, - options: { addImports: boolean }, + options: { addImports: boolean; browserMode: boolean }, ): string { const contentWithPlaceholders = preserveBlankLines(content); @@ -202,7 +202,9 @@ export function transformJasmineToVitest( } for (const transformer of callExpressionTransformers) { - transformedNode = transformer(transformedNode, refactorCtx); + if (!(options.browserMode && transformer === transformToHaveClass)) { + transformedNode = transformer(transformedNode, refactorCtx); + } } } else if (ts.isPropertyAccessExpression(transformedNode)) { for (const transformer of propertyAccessExpressionTransformers) { diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts index a93875b912e9..9aa6532206da 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-helpers.ts @@ -30,7 +30,10 @@ export async function expectTransformation( ): Promise { const logger = new logging.NullLogger(); const reporter = new RefactorReporter(logger); - const transformed = transformJasmineToVitest('spec.ts', input, reporter, { addImports }); + const transformed = transformJasmineToVitest('spec.ts', input, reporter, { + addImports, + browserMode: false, + }); const formattedTransformed = await format(transformed, { parser: 'typescript' }); const formattedExpected = await format(expected, { parser: 'typescript' }); From a562676d392977d065578f140e298200a6203884 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 24 Nov 2025 17:05:18 +0000 Subject: [PATCH 1874/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 2 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 325 ++++++++++++++------------- 4 files changed, 169 insertions(+), 164 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 538c23336751..0a6b428d1bfa 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.12", + "@vitest/coverage-v8": "4.0.13", "jsdom": "27.2.0", "rxjs": "7.8.2", - "vitest": "4.0.12" + "vitest": "4.0.13" } } diff --git a/package.json b/package.json index ad908526615f..49c8eed7b3ab 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "typescript": "5.9.3", "undici": "7.16.0", "unenv": "^1.10.0", - "verdaccio": "6.2.1", + "verdaccio": "6.2.2", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", "zod": "4.1.12", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index e1f318faa59a..f7e243e523ce 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -57,7 +57,7 @@ "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.12" + "vitest": "4.0.13" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 944c56c1d1fb..f75439f4af03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -302,8 +302,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.2.1 - version: 6.2.1(encoding@0.1.13) + specifier: 6.2.2 + version: 6.2.2(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.12 - version: 4.0.12(vitest@4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.13 + version: 4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -344,8 +344,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.12 - version: 4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.13 + version: 4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -453,8 +453,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.12 - version: 4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.13 + version: 4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -3174,6 +3174,9 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -4058,20 +4061,20 @@ packages: resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.24': - resolution: {integrity: sha512-stRp0DdTTx3p6dnh2cKOPJZOhu6sZOf8evV2fpYtADYW0UyhhZwELBXukpa5WGQ3H3rWzsXSaccra+D7tB1LgA==} + '@verdaccio/auth@8.0.0-next-8.27': + resolution: {integrity: sha512-o9CWPX4vxpTNYvFwIH+0Els9uMSrqNA3vTraqTPP0F5a6nGhnRsl4E7Lsiir46Q6sDVXSXmQnEvbS9nb1amIfw==} engines: {node: '>=18'} - '@verdaccio/config@8.0.0-next-8.24': - resolution: {integrity: sha512-TRTVY6g2bH5V/1MQOXmdwOIuiT8i/tAtRX4T7FHwCutWTMfdFLgwy4e1VvTH8d1MwGRNyVin4O8PHVu5Xh4ouA==} + '@verdaccio/config@8.0.0-next-8.27': + resolution: {integrity: sha512-0gjxthfLHaGcR3ohJWxL4iRnhxsPYSLcBnJs1JRCeqQXAjxrCD0mmycH/5NkdiPgScp+F+VFZ1+FC/F3plf07A==} engines: {node: '>=18'} '@verdaccio/core@8.0.0-next-8.21': resolution: {integrity: sha512-n3Y8cqf84cwXxUUdTTfEJc8fV55PONPKijCt2YaC0jilb5qp1ieB3d4brqTOdCdXuwkmnG2uLCiGpUd/RuSW0Q==} engines: {node: '>=18'} - '@verdaccio/core@8.0.0-next-8.24': - resolution: {integrity: sha512-58Et0Mj562ergUd7galslWNsTseOHBCDkCIHokmoeWGX4+P46Aoa9+G0laFHyZxxfkuGkZXhO1WHysc9LzkfiA==} + '@verdaccio/core@8.0.0-next-8.27': + resolution: {integrity: sha512-9CB83WSa0DRGB8ZEXFNdnE0MSsANKONirR7oD7y0OX3MDnzqwknzQVKPhnWoWL6lBesPoKLoEUF1DKkIMrPpOA==} engines: {node: '>=18'} '@verdaccio/file-locking@10.3.1': @@ -4082,59 +4085,59 @@ packages: resolution: {integrity: sha512-F6xQWvsZnEyGjugrYfe+D/ChSVudXmBFWi8xuTIX6PAdp7dk9x9biOGQFW8O3GSAK8UhJ6WlRisQKJeYRa6vWQ==} engines: {node: '>=18'} - '@verdaccio/hooks@8.0.0-next-8.24': - resolution: {integrity: sha512-jrBHk51rsANI47YbHCFKprBPelLDklwKhkMINEYnFOQwuB3HEcupd6hGNDaj64sRnZNoK2VuJH0cAWn0iqVErg==} + '@verdaccio/hooks@8.0.0-next-8.27': + resolution: {integrity: sha512-0oaAM9r+b3vx2h6hCYl2509BtkG1KAAZwuPNHCx1siW/faB9Cdzl+gi+SpqwZuuIESjbzrdB+RYxSsVEDe9pBg==} engines: {node: '>=18'} - '@verdaccio/loaders@8.0.0-next-8.14': - resolution: {integrity: sha512-cWrTTJ7HWjrzhXIVVXPHFUFTdzbRgvU5Xwte8O/JPMtrEAxtbjg18kCIdQwAcomB1S+BkffnnQJ8TPLymnuCrg==} + '@verdaccio/loaders@8.0.0-next-8.17': + resolution: {integrity: sha512-24fDZrF3r7Qi8DUinQvnvDXdQBGX4zUby32XIAw/4mFviRdtSfAdHljIR7URVXl5oWTUhwwuTOCyubKZfVi/sA==} engines: {node: '>=18'} '@verdaccio/local-storage-legacy@11.1.1': resolution: {integrity: sha512-P6ahH2W6/KqfJFKP+Eid7P134FHDLNvHa+i8KVgRVBeo2/IXb6FEANpM1mCVNvPANu0LCAmNJBOXweoUKViaoA==} engines: {node: '>=18'} - '@verdaccio/logger-commons@8.0.0-next-8.24': - resolution: {integrity: sha512-gEBUajG1m93xG+FJ+9+Mxg3FC9tSnP0RHyrhb4gPZPqft7JpRkwjbqpjxASGzPyxdTJZwiAefr7aafXv0xMpJA==} + '@verdaccio/logger-commons@8.0.0-next-8.27': + resolution: {integrity: sha512-rBOMij8VH4IHCGYi7dTjwL765ZCyl/LI5JHaMgQFUKmp3no/l9R/Xr9Ok1MQhHEgjYNp1tJf6yCq1Nz5+VQLmQ==} engines: {node: '>=18'} '@verdaccio/logger-prettify@8.0.0-next-8.4': resolution: {integrity: sha512-gjI/JW29fyalutn/X1PQ0iNuGvzeVWKXRmnLa7gXVKhdi4p37l/j7YZ7n44XVbbiLIKAK0pbavEg9Yr66QrYaA==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.24': - resolution: {integrity: sha512-7/arkwQy2zI5W5z9zMf5wyWiZx18xbLultteNPWHkQv9CtoFtuK+TSY8rH7ITtCGoNCcB94jvvTYRylxAdaHEw==} + '@verdaccio/logger@8.0.0-next-8.27': + resolution: {integrity: sha512-IFumcJwthD721GoHkFdcuiwkxIhQUoavUtN06kY7Rxt25Cp+9S8E9Lhgvz5svG71NQkpHxiPBxbP1RJDKLyUSg==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.24': - resolution: {integrity: sha512-LuFralbC8bxl2yQx9prKEMrNbxj8BkojcUDIa+jZZRnghaZrMm1yHqf5eLHCrBBIOM3m2thJ6Ux2UfBCQP4UKA==} + '@verdaccio/middleware@8.0.0-next-8.27': + resolution: {integrity: sha512-8nZskLwgvlRFWCy53heUrl6oLLxjs26Up9b5wb4sko6ASCsgVIBA9bUO3AyfEFSkCWtTBEceDgY+HhMh8fHORg==} engines: {node: '>=18'} '@verdaccio/search-indexer@8.0.0-next-8.5': resolution: {integrity: sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.16': - resolution: {integrity: sha512-JBIpoYJQFjo3ITTRjum1IjXxNrSYcPoBLZTPlt9OLL5Brd7s1fJkTBgs9tbcCRZPrek/XBIJ/cLFZZn8zkc/bQ==} + '@verdaccio/signature@8.0.0-next-8.19': + resolution: {integrity: sha512-sYS7kYlR4/vRMtX6p6g6Facm+d3/r2Z0PCRze1fMwBQfWzwDwtxObWlDavJoS0daUEEyeml9z/GVMpXLieC9xg==} 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.24': - resolution: {integrity: sha512-rDz8gWukO7dcaWzMTr7wMvKPUsRHclVzZljyTERplpIX9NWGHRsMRO7NjoTIUWtDS0euMlRVDnR8QVnYDWl2uA==} + '@verdaccio/tarball@13.0.0-next-8.27': + resolution: {integrity: sha512-HgX9KXk2oAeQag2WjieAGqgvj9DvvKLAEK2ayR2++LAdvIaaI0EyFqMSvCUFVNylGJ6iM6bUS0W8f8D9FTJvpw==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.24': - resolution: {integrity: sha512-A8lMenzJmC0EioBjQ9+L2e8tv/iEB/jLJKH4WJjPYa8B1xlm/LLUuk2aBg7pYD1fPWuazvJiH/NAnkrA09541g==} + '@verdaccio/ui-theme@8.0.0-next-8.27': + resolution: {integrity: sha512-TkiPPOnnnM+pGJ71A8JDIYwL2VFmJrf7JT1H/fxXMrSwwjVgFw3CNzeeH3XhGGOPmygGimg+zKZzROc6BrFz9A==} - '@verdaccio/url@13.0.0-next-8.24': - resolution: {integrity: sha512-zNHR9qgiDTXp+IuOtz925tzGteXGj18IZphvxo2apgz3cAeUpL/nnmp4ZScczpxWxE8sT/88xVYgJm+Ec8fNCA==} + '@verdaccio/url@13.0.0-next-8.27': + resolution: {integrity: sha512-WmyRot1sT53vgm0ZSK6DSsH+wP9RYQoFp+ugfnw7R8iM2aSQMzoRnweTldzdOPQRTlA6jrpHyR2T6lUxOPO8qA==} engines: {node: '>=18'} - '@verdaccio/utils@8.1.0-next-8.24': - resolution: {integrity: sha512-2e54Z1J1+OPM0LCxjkJHgwFm8jESsCYaX6ARs3+29hjoI75uiSphxFI3Hrhr+67ho/7Mtul0oyakK6l18MN/Dg==} + '@verdaccio/utils@8.1.0-next-8.27': + resolution: {integrity: sha512-yHGG6wMw45e1L8/gdx8u8L8hUm+H7gBV4ENuL5ExKs5XiQvMJz0WpwQU46ALXt5ZmYBX7i9yoLxZUGO/iNQyvg==} engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.1.0': @@ -4143,20 +4146,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.12': - resolution: {integrity: sha512-d+w9xAFJJz6jyJRU4BUU7MH409Ush7FWKNkxJU+jASKg6WX33YT0zc+YawMR1JesMWt9QRFQY/uAD3BTn23FaA==} + '@vitest/coverage-v8@4.0.13': + resolution: {integrity: sha512-w77N6bmtJ3CFnL/YHiYotwW/JI3oDlR3K38WEIqegRfdMSScaYxwYKB/0jSNpOTZzUjQkG8HHEz4sdWQMWpQ5g==} peerDependencies: - '@vitest/browser': 4.0.12 - vitest: 4.0.12 + '@vitest/browser': 4.0.13 + vitest: 4.0.13 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.12': - resolution: {integrity: sha512-is+g0w8V3/ZhRNrRizrJNr8PFQKwYmctWlU4qg8zy5r9aIV5w8IxXLlfbbxJCwSpsVl2PXPTm2/zruqTqz3QSg==} + '@vitest/expect@4.0.13': + resolution: {integrity: sha512-zYtcnNIBm6yS7Gpr7nFTmq8ncowlMdOJkWLqYvhr/zweY6tFbDkDi8BPPOeHxEtK1rSI69H7Fd4+1sqvEGli6w==} - '@vitest/mocker@4.0.12': - resolution: {integrity: sha512-GsmA/tD5Ht3RUFoz41mZsMU1AXch3lhmgbTnoSPTdH231g7S3ytNN1aU0bZDSyxWs8WA7KDyMPD5L4q6V6vj9w==} + '@vitest/mocker@4.0.13': + resolution: {integrity: sha512-eNCwzrI5djoauklwP1fuslHBjrbR8rqIVbvNlAnkq1OTa6XT+lX68mrtPirNM9TnR69XUPt4puBCx2Wexseylg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4166,20 +4169,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.12': - resolution: {integrity: sha512-R7nMAcnienG17MvRN8TPMJiCG8rrZJblV9mhT7oMFdBXvS0x+QD6S1G4DxFusR2E0QIS73f7DqSR1n87rrmE+g==} + '@vitest/pretty-format@4.0.13': + resolution: {integrity: sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==} - '@vitest/runner@4.0.12': - resolution: {integrity: sha512-hDlCIJWuwlcLumfukPsNfPDOJokTv79hnOlf11V+n7E14rHNPz0Sp/BO6h8sh9qw4/UjZiKyYpVxK2ZNi+3ceQ==} + '@vitest/runner@4.0.13': + resolution: {integrity: sha512-9IKlAru58wcVaWy7hz6qWPb2QzJTKt+IOVKjAx5vb5rzEFPTL6H4/R9BMvjZ2ppkxKgTrFONEJFtzvnyEpiT+A==} - '@vitest/snapshot@4.0.12': - resolution: {integrity: sha512-2jz9zAuBDUSbnfyixnyOd1S2YDBrZO23rt1bicAb6MA/ya5rHdKFRikPIDpBj/Dwvh6cbImDmudegnDAkHvmRQ==} + '@vitest/snapshot@4.0.13': + resolution: {integrity: sha512-hb7Usvyika1huG6G6l191qu1urNPsq1iFc2hmdzQY3F5/rTgqQnwwplyf8zoYHkpt7H6rw5UfIw6i/3qf9oSxQ==} - '@vitest/spy@4.0.12': - resolution: {integrity: sha512-GZjI9PPhiOYNX8Nsyqdw7JQB+u0BptL5fSnXiottAUBHlcMzgADV58A7SLTXXQwcN1yZ6gfd1DH+2bqjuUlCzw==} + '@vitest/spy@4.0.13': + resolution: {integrity: sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==} - '@vitest/utils@4.0.12': - resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==} + '@vitest/utils@4.0.13': + resolution: {integrity: sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -6728,6 +6731,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} @@ -7735,8 +7742,8 @@ packages: pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.13.1: - resolution: {integrity: sha512-Szuj+ViDTjKPQYiKumGmEn3frdl+ZPSdosHyt9SnUevFosOkMY2b7ipxlEctNKPmMD/VibeBI+ZcZCJK+4DPuw==} + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} hasBin: true piscina@5.1.4: @@ -8384,9 +8391,6 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} - slow-redact@0.3.2: - resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} - smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -9032,28 +9036,28 @@ packages: resolution: {integrity: sha512-bwVk/OK+Qu108aJcMAEiU4yavHUI7aN20TgZNBj9MR2iU1zPUl1Z1Otr7771ExfYTPTvfN8ZJ1pbr5Iklgt4xg==} engines: {node: ^20.17.0 || >=22.9.0} - validator@13.15.15: - resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + validator@13.15.23: + resolution: {integrity: sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==} engines: {node: '>= 0.10'} vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.24: - resolution: {integrity: sha512-dXqsnhTGqOuIsZq/MrW05YKwhuKg94VtL0tcYI4kcT+J+fN3gKiZ1Q3wDPaVzCMc081stBlKhi+SL66gIidHdA==} + verdaccio-audit@13.0.0-next-8.27: + resolution: {integrity: sha512-RM2nf2Jtk4NFZc/AaQSMHlpHUCXUYzMhhCNxq59dZLDSAtcD4uBapZoTQEHTyjpCpn6jmI6ijkFG19pg5tbShg==} engines: {node: '>=18'} verdaccio-auth-memory@10.3.1: resolution: {integrity: sha512-3m4VH5lD3qdRkDvcvVzHP6YftcsRXgu3WZuspcrH0/76+ugI2wkVezgBDbu4WRwJqRvG0MEf8Zxoup9zVK5SVw==} engines: {node: '>=18'} - verdaccio-htpasswd@13.0.0-next-8.24: - resolution: {integrity: sha512-nZ+V/szt3lXQRIyqvOpJlW0MceLM3tUyTGwqy4y0uwq7w9KGD/VqytnCpiQbkjVmmfScimXwRW7PHjHyRXLCVw==} + verdaccio-htpasswd@13.0.0-next-8.27: + resolution: {integrity: sha512-cVrMjOTnjYbPh5b5bVtRE/UTeIq6xRHOoCf7t5MZhSxG0Y900ooBXXiRNffVklRwY8LE54hvbUjYqaheo9Upzw==} engines: {node: '>=18'} - verdaccio@6.2.1: - resolution: {integrity: sha512-b7EjPyVKvO/7J2BtLaybQqDd8dh4uUsuQL1zQMVLsw3aYqBsHCAOa6T1zb6gpCg68cNUHluw7IjLs2hha72TZA==} + verdaccio@6.2.2: + resolution: {integrity: sha512-hMIcPES81Cx+9xMJtBrPvLDODV433CRcen+akIu4NRQEb6rBHuZfWMhPZi1J7Ri3wSKLgp3ahexVKrkb8tTbjQ==} engines: {node: '>=18'} hasBin: true @@ -9101,8 +9105,8 @@ packages: yaml: optional: true - vitest@4.0.12: - resolution: {integrity: sha512-pmW4GCKQ8t5Ko1jYjC3SqOr7TUKN7uHOHB/XGsAIb69eYu6d1ionGSsb5H9chmPf+WeXt0VE7jTXsB1IvWoNbw==} + vitest@4.0.13: + resolution: {integrity: sha512-QSD4I0fN6uZQfftryIXuqvqgBxTvJ3ZNkF6RWECd82YGAYAfhcppBLFXzXJHQAAhVFyYEuFTrq6h0hQqjB7jIQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: @@ -9110,10 +9114,10 @@ packages: '@opentelemetry/api': ^1.9.0 '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.12 - '@vitest/browser-preview': 4.0.12 - '@vitest/browser-webdriverio': 4.0.12 - '@vitest/ui': 4.0.12 + '@vitest/browser-playwright': 4.0.13 + '@vitest/browser-preview': 4.0.13 + '@vitest/browser-webdriverio': 4.0.13 + '@vitest/ui': 4.0.13 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -12001,6 +12005,8 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true + '@pinojs/redact@0.4.0': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -12852,25 +12858,24 @@ snapshots: '@typescript-eslint/types': 8.47.0 eslint-visitor-keys: 4.2.1 - '@verdaccio/auth@8.0.0-next-8.24': + '@verdaccio/auth@8.0.0-next-8.27': dependencies: - '@verdaccio/config': 8.0.0-next-8.24 - '@verdaccio/core': 8.0.0-next-8.24 - '@verdaccio/loaders': 8.0.0-next-8.14 - '@verdaccio/signature': 8.0.0-next-8.16 + '@verdaccio/config': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/loaders': 8.0.0-next-8.17 + '@verdaccio/signature': 8.0.0-next-8.19 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.24 + verdaccio-htpasswd: 13.0.0-next-8.27 transitivePeerDependencies: - supports-color - '@verdaccio/config@8.0.0-next-8.24': + '@verdaccio/config@8.0.0-next-8.27': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) - js-yaml: 4.1.0 + js-yaml: 4.1.1 lodash: 4.17.21 - minimatch: 7.4.6 transitivePeerDependencies: - supports-color @@ -12883,7 +12888,7 @@ snapshots: process-warning: 1.0.0 semver: 7.7.2 - '@verdaccio/core@8.0.0-next-8.24': + '@verdaccio/core@8.0.0-next-8.27': dependencies: ajv: 8.17.1 http-errors: 2.0.0 @@ -12900,19 +12905,19 @@ snapshots: dependencies: lockfile: 1.0.4 - '@verdaccio/hooks@8.0.0-next-8.24': + '@verdaccio/hooks@8.0.0-next-8.27': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 - '@verdaccio/logger': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/logger': 8.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) got-cjs: 12.5.4 handlebars: 4.7.8 transitivePeerDependencies: - supports-color - '@verdaccio/loaders@8.0.0-next-8.14': + '@verdaccio/loaders@8.0.0-next-8.17': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 transitivePeerDependencies: @@ -12931,9 +12936,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.24': + '@verdaccio/logger-commons@8.0.0-next-8.27': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 '@verdaccio/logger-prettify': 8.0.0-next-8.4 colorette: 2.0.20 debug: 4.4.3(supports-color@10.2.2) @@ -12949,33 +12954,32 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.24': + '@verdaccio/logger@8.0.0-next-8.27': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.24 - pino: 9.13.1 + '@verdaccio/logger-commons': 8.0.0-next-8.27 + pino: 9.14.0 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.24': + '@verdaccio/middleware@8.0.0-next-8.27': dependencies: - '@verdaccio/config': 8.0.0-next-8.24 - '@verdaccio/core': 8.0.0-next-8.24 - '@verdaccio/url': 13.0.0-next-8.24 + '@verdaccio/config': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/url': 13.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) express: 4.21.2 express-rate-limit: 5.5.1 lodash: 4.17.21 lru-cache: 7.18.3 - mime: 2.6.0 transitivePeerDependencies: - supports-color '@verdaccio/search-indexer@8.0.0-next-8.5': {} - '@verdaccio/signature@8.0.0-next-8.16': + '@verdaccio/signature@8.0.0-next-8.19': dependencies: - '@verdaccio/config': 8.0.0-next-8.24 - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/config': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) jsonwebtoken: 9.0.2 transitivePeerDependencies: @@ -12983,10 +12987,10 @@ snapshots: '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.24': + '@verdaccio/tarball@13.0.0-next-8.27': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 - '@verdaccio/url': 13.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/url': 13.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) gunzip-maybe: 1.4.2 tar-stream: 3.1.7 @@ -12995,20 +12999,19 @@ snapshots: - react-native-b4a - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.24': {} + '@verdaccio/ui-theme@8.0.0-next-8.27': {} - '@verdaccio/url@13.0.0-next-8.24': + '@verdaccio/url@13.0.0-next-8.27': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 debug: 4.4.3(supports-color@10.2.2) - lodash: 4.17.21 - validator: 13.15.15 + validator: 13.15.23 transitivePeerDependencies: - supports-color - '@verdaccio/utils@8.1.0-next-8.24': + '@verdaccio/utils@8.1.0-next-8.27': dependencies: - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 lodash: 4.17.21 minimatch: 7.4.6 @@ -13016,10 +13019,10 @@ snapshots: dependencies: vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.12(vitest@4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.12 + '@vitest/utils': 4.0.13 ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -13029,47 +13032,47 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.12': + '@vitest/expect@4.0.13': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.12 - '@vitest/utils': 4.0.12 + '@vitest/spy': 4.0.13 + '@vitest/utils': 4.0.13 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.12(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.13(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.12 + '@vitest/spy': 4.0.13 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.12': + '@vitest/pretty-format@4.0.13': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.12': + '@vitest/runner@4.0.13': dependencies: - '@vitest/utils': 4.0.12 + '@vitest/utils': 4.0.13 pathe: 2.0.3 - '@vitest/snapshot@4.0.12': + '@vitest/snapshot@4.0.13': dependencies: - '@vitest/pretty-format': 4.0.12 + '@vitest/pretty-format': 4.0.13 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.12': {} + '@vitest/spy@4.0.13': {} - '@vitest/utils@4.0.12': + '@vitest/utils@4.0.13': dependencies: - '@vitest/pretty-format': 4.0.12 + '@vitest/pretty-format': 4.0.13 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -16144,6 +16147,10 @@ snapshots: dependencies: argparse: 2.0.1 + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + jsbn@0.1.1: {} jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): @@ -17294,8 +17301,9 @@ snapshots: pino-std-serializers@7.0.0: {} - pino@9.13.1: + pino@9.14.0: dependencies: + '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 @@ -17304,7 +17312,6 @@ snapshots: quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.5.0 - slow-redact: 0.3.2 sonic-boom: 4.2.0 thread-stream: 3.1.0 @@ -18188,8 +18195,6 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - slow-redact@0.3.2: {} - smart-buffer@4.2.0: {} socket.io-adapter@2.5.5(bufferutil@4.0.9)(utf-8-validate@6.0.5): @@ -18908,14 +18913,14 @@ snapshots: validate-npm-package-name@7.0.0: {} - validator@13.15.15: {} + validator@13.15.23: {} vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.24(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.27(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.24 - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/config': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.27 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.2.2) node-fetch: 2.6.7(encoding@0.1.13) @@ -18930,9 +18935,9 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio-htpasswd@13.0.0-next-8.24: + verdaccio-htpasswd@13.0.0-next-8.27: dependencies: - '@verdaccio/core': 8.0.0-next-8.24 + '@verdaccio/core': 8.0.0-next-8.27 '@verdaccio/file-locking': 13.0.0-next-8.6 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -18942,24 +18947,24 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.2.1(encoding@0.1.13): + verdaccio@6.2.2(encoding@0.1.13): dependencies: '@cypress/request': 3.0.9 - '@verdaccio/auth': 8.0.0-next-8.24 - '@verdaccio/config': 8.0.0-next-8.24 - '@verdaccio/core': 8.0.0-next-8.24 - '@verdaccio/hooks': 8.0.0-next-8.24 - '@verdaccio/loaders': 8.0.0-next-8.14 + '@verdaccio/auth': 8.0.0-next-8.27 + '@verdaccio/config': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/hooks': 8.0.0-next-8.27 + '@verdaccio/loaders': 8.0.0-next-8.17 '@verdaccio/local-storage-legacy': 11.1.1 - '@verdaccio/logger': 8.0.0-next-8.24 - '@verdaccio/middleware': 8.0.0-next-8.24 + '@verdaccio/logger': 8.0.0-next-8.27 + '@verdaccio/middleware': 8.0.0-next-8.27 '@verdaccio/search-indexer': 8.0.0-next-8.5 - '@verdaccio/signature': 8.0.0-next-8.16 + '@verdaccio/signature': 8.0.0-next-8.19 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.24 - '@verdaccio/ui-theme': 8.0.0-next-8.24 - '@verdaccio/url': 13.0.0-next-8.24 - '@verdaccio/utils': 8.1.0-next-8.24 + '@verdaccio/tarball': 13.0.0-next-8.27 + '@verdaccio/ui-theme': 8.0.0-next-8.27 + '@verdaccio/url': 13.0.0-next-8.27 + '@verdaccio/utils': 8.1.0-next-8.27 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 @@ -18971,9 +18976,9 @@ snapshots: lodash: 4.17.21 lru-cache: 7.18.3 mime: 3.0.0 - semver: 7.7.2 - verdaccio-audit: 13.0.0-next-8.24(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.24 + semver: 7.7.3 + verdaccio-audit: 13.0.0-next-8.27(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.27 transitivePeerDependencies: - bare-abort-controller - encoding @@ -19004,15 +19009,15 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.12(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.12 - '@vitest/mocker': 4.0.12(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.12 - '@vitest/runner': 4.0.12 - '@vitest/snapshot': 4.0.12 - '@vitest/spy': 4.0.12 - '@vitest/utils': 4.0.12 + '@vitest/expect': 4.0.13 + '@vitest/mocker': 4.0.13(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.13 + '@vitest/runner': 4.0.13 + '@vitest/snapshot': 4.0.13 + '@vitest/spy': 4.0.13 + '@vitest/utils': 4.0.13 debug: 4.4.3(supports-color@10.2.2) es-module-lexer: 1.7.0 expect-type: 1.2.2 From 0b439685dda66ce190afa2da425f02b8e5c94147 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 25 Nov 2025 11:04:57 +0000 Subject: [PATCH 1875/2162] docs: release notes for the v20.3.12 release --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d21a148efc91..421d071c8412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ + + +# 20.3.12 (2025-11-25) + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- | +| [25bb7e65c](https://github.com/angular/angular-cli/commit/25bb7e65c4fc7e401c658126c53b0b7a13d62965) | fix | ensure correct URL joining for prerender routes | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| [cceb86296](https://github.com/angular/angular-cli/commit/cceb862969e541a5f54b689a6439e32773eafe65) | fix | handle `X-Forwarded-Prefix` and `APP_BASE_HREF` in redirects | +| [1abe68ad8](https://github.com/angular/angular-cli/commit/1abe68ad87f9b892734117a087b5775068bd232b) | fix | prevent redirect loop with encoded query parameters | + + + # 21.0.0 (2025-11-19) From 5ef8b9975013733ea64deeec945bc77988191b0c Mon Sep 17 00:00:00 2001 From: jase88 <804836+jase88@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:11:00 +0100 Subject: [PATCH 1876/2162] fix(@schematics/angular): handle createSpyObj without base name on refactor-jasmine-vitest --- .../transformers/jasmine-spy.ts | 11 +++---- .../transformers/jasmine-spy_spec.ts | 29 ++++++++++++++++++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index c10fc739f9af..39c5802ea1dc 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -227,13 +227,14 @@ export function transformCreateSpyObj( 'Transformed `jasmine.createSpyObj()` to an object literal with `vi.fn()`.', ); - const baseNameArg = node.arguments[0]; - const baseName = ts.isStringLiteral(baseNameArg) ? baseNameArg.text : undefined; - const methods = node.arguments[1]; - const propertiesArg = node.arguments[2]; + const firstArg = node.arguments[0]; + const hasBaseName = ts.isStringLiteral(firstArg); + const baseName = hasBaseName ? firstArg.text : undefined; + const methods = hasBaseName ? node.arguments[1] : firstArg; + const propertiesArg = hasBaseName ? node.arguments[2] : node.arguments[1]; let properties: ts.PropertyAssignment[] = []; - if (node.arguments.length < 2) { + if (node.arguments.length < 2 && hasBaseName) { const category = 'createSpyObj-single-argument'; reporter.recordTodo(category); addTodoComment(node, category); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts index 3fc98aa02601..06e26e606b5c 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts @@ -122,6 +122,15 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, methodB: vi.fn().mockName("MyService.methodB"), };`, }, + { + description: + 'should transform jasmine.createSpyObj with an array of methods without base name', + input: `const myService = jasmine.createSpyObj(['methodA', 'methodB']);`, + expected: `const myService = { + methodA: vi.fn(), + methodB: vi.fn(), + };`, + }, { description: 'should add a TODO if the second argument is not a literal', input: `const myService = jasmine.createSpyObj('MyService', methodNames);`, @@ -138,6 +147,15 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, methodB: vi.fn().mockName("MyService.methodB").mockReturnValue(42), };`, }, + { + description: + 'should transform jasmine.createSpyObj with an object of return values without base name', + input: `const myService = jasmine.createSpyObj({ methodA: 'foo', methodB: 42 });`, + expected: `const myService = { + methodA: vi.fn().mockReturnValue('foo'), + methodB: vi.fn().mockReturnValue(42), + };`, + }, { description: 'should transform jasmine.createSpyObj with an object of return values containing an asymmetric matcher', @@ -147,7 +165,7 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, };`, }, { - description: 'should add a TODO for jasmine.createSpyObj with only one argument', + description: 'should add a TODO for jasmine.createSpyObj with only base name argument', input: `const myService = jasmine.createSpyObj('MyService');`, expected: ` // TODO: vitest-migration: jasmine.createSpyObj called with a single argument is not supported for transformation. See: https://vitest.dev/api/vi.html#vi-fn @@ -170,6 +188,15 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, propA: 'valueA', };`, }, + { + description: + 'should transform jasmine.createSpyObj with a method map and a property map without base name', + input: `const myService = jasmine.createSpyObj({ methodA: 'foo' }, { propA: 'valueA' });`, + expected: `const myService = { + methodA: vi.fn().mockReturnValue('foo'), + propA: 'valueA', + };`, + }, { description: 'should ignore non-string literals in the method array', input: `const myService = jasmine.createSpyObj('MyService', ['methodA', 123, someVar]);`, From 212ebdebdd4d5af4920131ec3dea9762cff390ea Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 24 Nov 2025 18:33:27 -0500 Subject: [PATCH 1877/2162] refactor(@angular/cli): parallelize MCP zoneless migration file discovery and improve error handling This commit enhances the `onpush_zoneless_migration` MCP tool by improving its file discovery and error handling, with a primary goal of increasing performance on large projects. The `discoverAndCategorizeFiles` function is refactored to parallelize both file I/O and analysis. It now gathers file paths and processes them concurrently in batches, preventing system resource exhaustion while speeding up execution. The tool now continues processing even if some files fail to be analyzed. Any errors are collected and reported in the final output, providing the user with a complete summary of unanalyzable files. --- .../zoneless-migration.ts | 120 ++++++++++++------ 1 file changed, 81 insertions(+), 39 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts index 080480742d3b..f85a6f322c60 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts @@ -70,12 +70,10 @@ export async function registerZonelessMigrationTool( fileOrDirPath: string, extras: RequestHandlerExtra, ) { - let filesWithComponents, componentTestFiles, zoneFiles; + let filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors; try { - ({ filesWithComponents, componentTestFiles, zoneFiles } = await discoverAndCategorizeFiles( - fileOrDirPath, - extras, - )); + ({ filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors } = + await discoverAndCategorizeFiles(fileOrDirPath, extras)); } catch (e) { return createResponse( `Error: Could not access the specified path. Please ensure the following path is correct ` + @@ -113,6 +111,14 @@ export async function registerZonelessMigrationTool( } } + if (categorizationErrors.length > 0) { + let errorMessage = + 'Migration analysis is complete for all actionable files. However, the following files could not be analyzed due to errors:\n'; + errorMessage += categorizationErrors.map((e) => `- ${e.filePath}: ${e.message}`).join('\n'); + + return createResponse(errorMessage); + } + return createTestDebuggingGuideForNonActionableInput(fileOrDirPath); } @@ -120,10 +126,11 @@ async function discoverAndCategorizeFiles( fileOrDirPath: string, extras: RequestHandlerExtra, ) { - let files: SourceFile[] = []; + const filePaths: string[] = []; const componentTestFiles = new Set(); const filesWithComponents = new Set(); const zoneFiles = new Set(); + const categorizationErrors: { filePath: string; message: string }[] = []; let isDirectory: boolean; try { @@ -134,52 +141,87 @@ async function discoverAndCategorizeFiles( } if (isDirectory) { - const allFiles = glob(`${fileOrDirPath}/**/*.ts`); - for await (const file of allFiles) { - files.push(await createSourceFile(file)); + for await (const file of glob(`${fileOrDirPath}/**/*.ts`)) { + filePaths.push(file); } } else { - files = [await createSourceFile(fileOrDirPath)]; + filePaths.push(fileOrDirPath); const maybeTestFile = await getTestFilePath(fileOrDirPath); if (maybeTestFile) { - componentTestFiles.add(await createSourceFile(maybeTestFile)); + // Eagerly add the test file path for categorization. + filePaths.push(maybeTestFile); } } - for (const sourceFile of files) { - const content = sourceFile.getFullText(); - const componentSpecifier = await getImportSpecifier(sourceFile, '@angular/core', 'Component'); - const zoneSpecifier = await getImportSpecifier(sourceFile, '@angular/core', 'NgZone'); - const testBedSpecifier = await getImportSpecifier( - sourceFile, - /(@angular\/core)?\/testing/, - 'TestBed', + const CONCURRENCY_LIMIT = 50; + const filesToProcess = [...filePaths]; + while (filesToProcess.length > 0) { + const batch = filesToProcess.splice(0, CONCURRENCY_LIMIT); + const results = await Promise.allSettled( + batch.map(async (filePath) => { + const sourceFile = await createSourceFile(filePath); + await categorizeFile(sourceFile, extras, { + filesWithComponents, + componentTestFiles, + zoneFiles, + }); + }), ); - if (testBedSpecifier) { - componentTestFiles.add(sourceFile); - } else if (componentSpecifier) { - if ( - !content.includes('changeDetectionStrategy: ChangeDetectionStrategy.OnPush') && - !content.includes('changeDetectionStrategy: ChangeDetectionStrategy.Default') - ) { - filesWithComponents.add(sourceFile); - } else { - sendDebugMessage( - `Component file already has change detection strategy: ${sourceFile.fileName}. Skipping migration.`, - extras, - ); - } - const testFilePath = await getTestFilePath(sourceFile.fileName); - if (testFilePath) { - componentTestFiles.add(await createSourceFile(testFilePath)); + for (let i = 0; i < results.length; i++) { + const result = results[i]; + if (result.status === 'rejected') { + const failedFile = batch[i]; + const reason = result.reason instanceof Error ? result.reason.message : `${result.reason}`; + categorizationErrors.push({ filePath: failedFile, message: reason }); } - } else if (zoneSpecifier) { - zoneFiles.add(sourceFile); } } - return { filesWithComponents, componentTestFiles, zoneFiles }; + return { filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors }; +} + +async function categorizeFile( + sourceFile: SourceFile, + extras: RequestHandlerExtra, + categorizedFiles: { + filesWithComponents: Set; + componentTestFiles: Set; + zoneFiles: Set; + }, +) { + const { filesWithComponents, componentTestFiles, zoneFiles } = categorizedFiles; + const content = sourceFile.getFullText(); + const componentSpecifier = await getImportSpecifier(sourceFile, '@angular/core', 'Component'); + const zoneSpecifier = await getImportSpecifier(sourceFile, '@angular/core', 'NgZone'); + const testBedSpecifier = await getImportSpecifier( + sourceFile, + /(@angular\/core)?\/testing/, + 'TestBed', + ); + + if (testBedSpecifier) { + componentTestFiles.add(sourceFile); + } else if (componentSpecifier) { + if ( + !content.includes('changeDetectionStrategy: ChangeDetectionStrategy.OnPush') && + !content.includes('changeDetectionStrategy: ChangeDetectionStrategy.Default') + ) { + filesWithComponents.add(sourceFile); + } else { + sendDebugMessage( + `Component file already has change detection strategy: ${sourceFile.fileName}. Skipping migration.`, + extras, + ); + } + + const testFilePath = await getTestFilePath(sourceFile.fileName); + if (testFilePath) { + componentTestFiles.add(await createSourceFile(testFilePath)); + } + } else if (zoneSpecifier) { + zoneFiles.add(sourceFile); + } } async function rankComponentFilesForMigration( From 3c59df2fd0aab03fbf30e74c5c1aa70df1d6a552 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 25 Nov 2025 20:38:47 +0000 Subject: [PATCH 1878/2162] build: update dependency zone.js to ~0.16.0 See associated pull request for more information. --- .../schematics/angular/utility/latest-versions/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 10f2cf8eb6bd..03db4d15a506 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -26,6 +26,6 @@ "ts-node": "~10.9.0", "typescript": "~5.9.2", "vitest": "^4.0.8", - "zone.js": "~0.15.0" + "zone.js": "~0.16.0" } } From fdac4cb790b4ffe1e02abe61fbff57fd6dc1c92a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 26 Nov 2025 02:35:37 +0000 Subject: [PATCH 1879/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- package.json | 22 +- packages/angular/ssr/package.json | 12 +- .../hello-world-lib/projects/lib/package.json | 4 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 291 ++++++++---------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 6 files changed, 166 insertions(+), 199 deletions(-) diff --git a/package.json b/package.json index 49c8eed7b3ab..9d3758ecf778 100644 --- a/package.json +++ b/package.json @@ -45,20 +45,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.0.0", + "@angular/animations": "21.1.0-next.0", "@angular/cdk": "21.0.0", - "@angular/common": "21.0.0", - "@angular/compiler": "21.0.0", - "@angular/compiler-cli": "21.0.0", - "@angular/core": "21.0.0", - "@angular/forms": "21.0.0", - "@angular/localize": "21.0.0", + "@angular/common": "21.1.0-next.0", + "@angular/compiler": "21.1.0-next.0", + "@angular/compiler-cli": "21.1.0-next.0", + "@angular/core": "21.1.0-next.0", + "@angular/forms": "21.1.0-next.0", + "@angular/localize": "21.1.0-next.0", "@angular/material": "21.0.0", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf", - "@angular/platform-browser": "21.0.0", - "@angular/platform-server": "21.0.0", - "@angular/router": "21.0.0", - "@angular/service-worker": "21.0.0", + "@angular/platform-browser": "21.1.0-next.0", + "@angular/platform-server": "21.1.0-next.0", + "@angular/router": "21.1.0-next.0", + "@angular/service-worker": "21.1.0-next.0", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index b97f9c2da6c8..2365abe997ae 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.0.0", - "@angular/compiler": "21.0.0", - "@angular/core": "21.0.0", - "@angular/platform-browser": "21.0.0", - "@angular/platform-server": "21.0.0", - "@angular/router": "21.0.0", + "@angular/common": "21.1.0-next.0", + "@angular/compiler": "21.1.0-next.0", + "@angular/core": "21.1.0-next.0", + "@angular/platform-browser": "21.1.0-next.0", + "@angular/platform-server": "21.1.0-next.0", + "@angular/router": "21.1.0-next.0", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json index a60d893b89a3..f6f00dcb4dd5 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json +++ b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json @@ -2,7 +2,7 @@ "name": "lib", "version": "0.0.1", "peerDependencies": { - "@angular/common": "^21.0.0-next", - "@angular/core": "^21.0.0-next" + "@angular/common": "^21.1.0-next", + "@angular/core": "^21.1.0-next" } } \ No newline at end of file diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 2ae769fb9edf..ab0dcc599e97 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": "21.0.0", - "@angular/compiler-cli": "21.0.0", + "@angular/compiler": "21.1.0-next.0", + "@angular/compiler-cli": "21.1.0-next.0", "typescript": "5.9.3", "webpack": "5.103.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f75439f4af03..dc42008dc360 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + version: 21.0.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/common': - specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0 - version: 21.0.0 + specifier: 21.1.0-next.0 + version: 21.1.0-next.0 '@angular/compiler-cli': - specifier: 21.0.0 - version: 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) '@angular/core': - specifier: 21.0.0 - version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.0.0 - version: 21.0.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(@angular/compiler@21.0.0) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(@angular/compiler@21.1.0-next.0) '@angular/material': specifier: 21.0.0 - version: 21.0.0(239e29b74d9c69c8f989dfa3a5e69993) + version: 21.0.0(103397789c5753d84dae18b75e29321d) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf(@modelcontextprotocol/sdk@1.22.0) '@angular/platform-browser': - specifier: 21.0.0 - version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.0)(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -445,7 +445,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -542,23 +542,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.0.0 - version: 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.0.0 - version: 21.0.0 + specifier: 21.1.0-next.0 + version: 21.1.0-next.0 '@angular/core': - specifier: 21.0.0 - version: 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.0.0 - version: 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.0)(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.0.0 - version: 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -773,7 +773,7 @@ importers: version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -871,11 +871,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.0.0 - version: 21.0.0 + specifier: 21.1.0-next.0 + version: 21.1.0-next.0 '@angular/compiler-cli': - specifier: 21.0.0 - version: 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -984,11 +984,11 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.0.0': - resolution: {integrity: sha512-9AX4HFJmSP8SFNiweKNxasBzn3zbL3xRtwaUxw1I+x/WAzubm4ZziLnXqb+tai7C4UmwV+9XDlRVPfw5WxJ9zg==} + '@angular/animations@21.1.0-next.0': + resolution: {integrity: sha512-gSkp+ic4S6gldKGE9GUu9+xXsJI5+6wMI9aZk0xv+bJ5XvAVXqsNCKPIi4BrD9vl0V70vKOcG71TiW2jz2XZ+A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0 + '@angular/core': 21.1.0-next.0 '@angular/cdk@21.0.0': resolution: {integrity: sha512-wCr5D3mEC+p69IMDC7vf8bWx18mfUNNRdsiK3XD0m1PqfeNfnCJb+Bnkks37MC/SU01uCNrAokRaTbWL6pk1Wg==} @@ -997,58 +997,58 @@ packages: '@angular/core': ^21.0.0 || ^22.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.0.0': - resolution: {integrity: sha512-uFvQDYU5X5nEnI9C4Bkdxcu4aIzNesGLJzmFlnwChVxB4BxIRF0uHL0oRhdkInGTIzPDJPH4nF6B/22c5gDVqA==} + '@angular/common@21.1.0-next.0': + resolution: {integrity: sha512-GS4D+A4qx5ojAdedUTjQXs3vfq9rzi8ffX1X/fTpycYL2j2CArOU/Tv2A6pedDlZetJMu0iifcLNuZNE4+ReKw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.0.0 + '@angular/core': 21.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.0.0': - resolution: {integrity: sha512-KTXp+e2UPGyfFew6Wq95ULpHWQ20dhqkAMZ6x6MCYfOe2ccdnGYsAbLLmnWGmSg5BaOI4B0x/1XCFZf/n6WDgA==} + '@angular/compiler-cli@21.1.0-next.0': + resolution: {integrity: sha512-gaPkonFV0EPTiLLTcWC0hMYmlCYiG3R5TMxyaxqrMmcJrMqcI9eqJPqfD4zgnZqntS2IzJtzCx2PbZlj8eibpA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0 + '@angular/compiler': 21.1.0-next.0 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.0.0': - resolution: {integrity: sha512-6jCH3UYga5iokj5F40SR4dlwo9ZRMkT8YzHCTijwZuDX9zvugp9jPof092RvIeNsTvCMVfGWuM9yZ1DRUsU/yg==} + '@angular/compiler@21.1.0-next.0': + resolution: {integrity: sha512-7RBOOws5enj6Cl63QPpFKEuXgnfUz+fVsSa2S772hVCarwPoV5p33hUYhSchGh54GkbU2lrQqyDXK6nUdUoWGw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.0.0': - resolution: {integrity: sha512-bqi8fT4csyITeX8vdN5FJDBWx5wuWzdCg4mKSjHd+onVzZLyZ8bcnuAKz4mklgvjvwuXoRYukmclUurLwfq3Rg==} + '@angular/core@21.1.0-next.0': + resolution: {integrity: sha512-dhAp5/QFwbtZC5ie8BGbLMkXeRu81WDdWPuNNBxq5qGRGixNsLQSO0fXDT5X1JK31mGbS+HEjxkv/BrLI7YH7w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.0.0 + '@angular/compiler': 21.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - zone.js: ~0.15.0 + zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: '@angular/compiler': optional: true zone.js: optional: true - '@angular/forms@21.0.0': - resolution: {integrity: sha512-kcudwbZs/ddKqaELz4eEW9kOGCsX61qsf9jkQsGTARBEOUcU2K+rM6mX5sTf9azHvQ9wlX4N36h0eYzBA4Y4Qg==} + '@angular/forms@21.1.0-next.0': + resolution: {integrity: sha512-lvrrag5KlRt+d4NgNb5JtkFF/AK8bBYcs921N6P5yTUlU1Lp/Ay3k2yiZlF4gjgDhNwp9xXt7Z/wx95lZNQvxQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0 - '@angular/core': 21.0.0 - '@angular/platform-browser': 21.0.0 + '@angular/common': 21.1.0-next.0 + '@angular/core': 21.1.0-next.0 + '@angular/platform-browser': 21.1.0-next.0 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.0.0': - resolution: {integrity: sha512-SHK/D6nYkbn3VrM7sZtipiayICc8S6IZyjd4/5ARLeZJ/giYAxqv++bV0EV1MEayAZi4g6t0qsUY4KolDClphQ==} + '@angular/localize@21.1.0-next.0': + resolution: {integrity: sha512-VnQCLUJSTDEc7iD5kXD0i8uYQeTR13vkwZEA+w21ZaaksKkKg5gz8PxWnl3k/v+U6wJZklkXupuMfh2L/SqQUg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.0.0 - '@angular/compiler-cli': 21.0.0 + '@angular/compiler': 21.1.0-next.0 + '@angular/compiler-cli': 21.1.0-next.0 '@angular/material@21.0.0': resolution: {integrity: sha512-s3+fhN7F5T1TAltZXYXOgY1wuVbICCrBJpV2TN8nJXDT0wroTYAljgBmsr6ZjDwYJewwP0OPvcj2NlOGDpa6oA==} @@ -1065,42 +1065,42 @@ packages: version: 0.0.0-f47684669736e28fd77eab64e65b2952c8a948ee hasBin: true - '@angular/platform-browser@21.0.0': - resolution: {integrity: sha512-KQrANla4RBLhcGkwlndqsKzBwVFOWQr1640CfBVjj2oz4M3dW5hyMtXivBACvuwyUhYU/qJbqlDMBXl/OUSudQ==} + '@angular/platform-browser@21.1.0-next.0': + resolution: {integrity: sha512-ZyMQQ0C95FvH9MI72heIXXwUlo0lc6Mw2cTls03dOcjFcEX2vTqgrCXf5fjVNRWeVD5Nr5utGq5lFfmfRdzfZw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.0.0 - '@angular/common': 21.0.0 - '@angular/core': 21.0.0 + '@angular/animations': 21.1.0-next.0 + '@angular/common': 21.1.0-next.0 + '@angular/core': 21.1.0-next.0 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.0.0': - resolution: {integrity: sha512-5IcmoftT2hLAbLfSoqGoCg0B1FLSk08xDoUdIyEUo1SmxNJMEEgU6WxhkPf6R7aoOlLAwYBoqGGP1Us1Z7rO7g==} + '@angular/platform-server@21.1.0-next.0': + resolution: {integrity: sha512-wo+/pQR1Aeb51c5b977GgYtnqVAbA1Blc/PIrI22/+k3KM+JwTlg39qmnVziB9+fjaTjr8+ANoYfZbxFZdccUQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0 - '@angular/compiler': 21.0.0 - '@angular/core': 21.0.0 - '@angular/platform-browser': 21.0.0 + '@angular/common': 21.1.0-next.0 + '@angular/compiler': 21.1.0-next.0 + '@angular/core': 21.1.0-next.0 + '@angular/platform-browser': 21.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.0.0': - resolution: {integrity: sha512-ARx1R2CmTgAezlMkUpV40V4T/IbXhL7dm4SuMVKbuEOsCKZC0TLOSSTsGYY7HKem45JHlJaByv819cJnabFgBg==} + '@angular/router@21.1.0-next.0': + resolution: {integrity: sha512-tjSxC3bvOJu/yJ60Ccsma/zaX9AHO/cOxZLA8VHumO08apltWoC83vvxR6jPH8eH8FCvrLB3BKzSxjzLqH6vvQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.0.0 - '@angular/core': 21.0.0 - '@angular/platform-browser': 21.0.0 + '@angular/common': 21.1.0-next.0 + '@angular/core': 21.1.0-next.0 + '@angular/platform-browser': 21.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.0.0': - resolution: {integrity: sha512-ZsJyVBvMQ6c9Xbci3cbPPQUPf+ZptvPshvf4eM5I4r3tJc7xDudpKKUqFBgAzZIN/GY5EvzMwGplgIy7HpKh1w==} + '@angular/service-worker@21.1.0-next.0': + resolution: {integrity: sha512-GGPBdjZOw3Pwc6Twj4j3JZikqoGU0TUyNj0qrZp2ceSjDrb6cx89WMJzw4Mirc0W97gkqbvNggsy+wKkzxYlPw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.0.0 + '@angular/core': 21.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.0.5': @@ -1120,10 +1120,6 @@ packages: resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.4': - resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} - engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} @@ -9626,29 +9622,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/cdk@21.0.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3)': + '@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.0.0 - '@babel/core': 7.28.4 + '@angular/compiler': 21.1.0-next.0 + '@babel/core': 7.28.5 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 convert-source-map: 1.9.0 @@ -9661,45 +9657,45 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.0.0': + '@angular/compiler@21.1.0-next.0': dependencies: tslib: 2.8.1 - '@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.0.0 + '@angular/compiler': 21.1.0-next.0 zone.js: 0.16.0 - '@angular/forms@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.0.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(@angular/compiler@21.0.0)': + '@angular/localize@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(@angular/compiler@21.1.0-next.0)': dependencies: - '@angular/compiler': 21.0.0 - '@angular/compiler-cli': 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) - '@babel/core': 7.28.4 + '@angular/compiler': 21.1.0-next.0 + '@angular/compiler-cli': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) + '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 yargs: 18.0.0 transitivePeerDependencies: - supports-color - '@angular/material@21.0.0(239e29b74d9c69c8f989dfa3a5e69993)': + '@angular/material@21.0.0(103397789c5753d84dae18b75e29321d)': dependencies: - '@angular/cdk': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.0.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 @@ -9763,35 +9759,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.0.0)(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.0)(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.0.0 - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.1.0-next.0 + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.0.0(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.0.0(@angular/animations@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.0.0(@angular/core@21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.0.0(@angular/compiler@21.0.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -9821,26 +9817,6 @@ snapshots: '@babel/compat-data@7.28.5': {} - '@babel/core@7.28.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@10.2.2) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.28.5': dependencies: '@babel/code-frame': 7.27.1 @@ -9928,15 +9904,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': - dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -16835,10 +16802,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.0.0(@angular/compiler@21.0.0)(typescript@5.9.3) + '@angular/compiler-cli': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.53.2) '@rollup/wasm-node': 4.52.5 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 8e858ebf0031..3b426b38a0b1 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#298999d4e21a7649d2614ac6e59187555a3b3ec8", - "@angular/cdk": "github:angular/cdk-builds#afcea86fad7e0c8150b054b199f4743e97fe7d6d", - "@angular/common": "github:angular/common-builds#a5f75da060a704a8bf1e36cd586b36abe16bda75", - "@angular/compiler": "github:angular/compiler-builds#fcf65f21c335a421d7b636ae5890817f945b1d52", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#0531711efd9fe2aee6e25f8a9d8082c85c7fa862", - "@angular/core": "github:angular/core-builds#052c2451c8ad0efa53945f21680ee7d66498aced", - "@angular/forms": "github:angular/forms-builds#c3758ea531d4cf9c2954498c1832a099aa88847a", - "@angular/language-service": "github:angular/language-service-builds#9eda55356f864d1193781c69f77a7253ba3048af", - "@angular/localize": "github:angular/localize-builds#4dc3dc9bad4df2b4043c3a807bc4ae3e2f970d82", - "@angular/material": "github:angular/material-builds#ac49dbb67f0261c26725791f16a29fbe6126da4c", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#35f6a4b3c74bc488bf3440b8bb1eee064b6ad17f", - "@angular/platform-browser": "github:angular/platform-browser-builds#85f79a557b795e4307166f4c8e07ba65636a7529", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#eddc5301e3a8a25ac1c9facb65cd0cdd3f8d7dbb", - "@angular/platform-server": "github:angular/platform-server-builds#fef7e7cde613845746b1bd478cd2679d292fdec9", - "@angular/router": "github:angular/router-builds#031f4d73aed3ebdadff38da3cb73e97e9d725be2", - "@angular/service-worker": "github:angular/service-worker-builds#7ebbfdda2bf569da9801df9f9f4d3da59837c78e" + "@angular/animations": "github:angular/animations-builds#2878fc0d2c6113fada05b29be6da91ced3847c9d", + "@angular/cdk": "github:angular/cdk-builds#6e473060a35b6df6a12b7fb197c8a67a7a8a0b02", + "@angular/common": "github:angular/common-builds#a89361b4dacfcee83d3a72264d6c9a1ab602d096", + "@angular/compiler": "github:angular/compiler-builds#c290d42731c756178ecc028b16a91b2cbb4a3a52", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#11557a9b5b31089913d440943ebbfe8eb6fddcea", + "@angular/core": "github:angular/core-builds#193e2e76f88029a172d1d8d9291f2de216b98cef", + "@angular/forms": "github:angular/forms-builds#aa4662e34c7ad03e4a2d11c8fd6a38a3de070ac6", + "@angular/language-service": "github:angular/language-service-builds#59f2dcda2a5441d009f9284981a41c5025dbf36c", + "@angular/localize": "github:angular/localize-builds#3c2d26a645f1ebcc731c128b9821617aa0a33369", + "@angular/material": "github:angular/material-builds#3e8e6d9bfbfa1722703562fe3268aa9636c72d98", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#660a833bd9289bcc9942ef77ac84f3de2979fb09", + "@angular/platform-browser": "github:angular/platform-browser-builds#2ca084ee9f8d24901c5a21fbca3fa86e9863000b", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#9065e478bc50dcd1b52cb9d2d40be74e24fe8ce5", + "@angular/platform-server": "github:angular/platform-server-builds#10c1ac62473ee6d07f1816dd4704524b7b02139a", + "@angular/router": "github:angular/router-builds#0f8371f667fc71a2a2a8586d7dc76c5187393e98", + "@angular/service-worker": "github:angular/service-worker-builds#e62d179e6dd15e96735b502767846794e2ebddbb" } } From 1f3387a016a473776b35ae99fd7753ee2d2179f2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 26 Nov 2025 05:05:38 +0000 Subject: [PATCH 1880/2162] build: update github/codeql-action action to v4.31.5 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b07d26fb957e..a95aa47cdce5 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@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 + uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 + uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 66993790c673..77db5573f185 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@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4 + uses: github/codeql-action/upload-sarif@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 with: sarif_file: results.sarif From 89e8171081ba0e4a629634fe9da614203738ba9a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 26 Nov 2025 08:56:40 +0000 Subject: [PATCH 1881/2162] build: update Angular framework and ng-packagr versions and peer dependency ranges. Update versions to 21.1.0-next --- constants.bzl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/constants.bzl b/constants.bzl index 04e088577dea..e2224aa24c39 100644 --- a/constants.bzl +++ b/constants.bzl @@ -3,10 +3,10 @@ RELEASE_ENGINES_NODE = "^20.19.0 || ^22.12.0 || >=24.0.0" RELEASE_ENGINES_NPM = "^6.11.0 || ^7.5.6 || >=8.0.0" RELEASE_ENGINES_YARN = ">= 1.13.0" -NG_PACKAGR_VERSION = "^21.0.0-next.0" -ANGULAR_FW_VERSION = "^21.0.0-next.0" -ANGULAR_FW_PEER_DEP = "^21.0.0-next.0" -NG_PACKAGR_PEER_DEP = "^21.0.0-next.0" +NG_PACKAGR_VERSION = "^21.1.0-next.0" +ANGULAR_FW_VERSION = "^21.1.0-next.0" +ANGULAR_FW_PEER_DEP = "^21.0.0 || ^21.1.0-next.0" +NG_PACKAGR_PEER_DEP = "^21.0.0 || ^21.1.0-next.0" # Baseline widely-available date in `YYYY-MM-DD` format which defines Angular's # browser support. This date serves as the source of truth for the Angular CLI's From 0fd1646752658025004f9345eed7fb711227682a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 25 Nov 2025 17:27:27 -0500 Subject: [PATCH 1882/2162] refactor(@angular/build): adjust compiler-cli namespace import Updates the type import for `@angular/compiler-cli` from a default import (`import type ng from ...`) to a full namespace import (`import type * as ng from ...`) across the Angular build tooling. This change ensures consistent and correct type resolution, aligning with modern TypeScript module standards and preventing potential import resolution issues. --- packages/angular/build/src/tools/angular/angular-host.ts | 2 +- .../build/src/tools/angular/compilation/angular-compilation.ts | 2 +- .../build/src/tools/angular/compilation/aot-compilation.ts | 2 +- .../build/src/tools/angular/compilation/hmr-candidates.ts | 2 +- .../build/src/tools/angular/compilation/jit-compilation.ts | 2 +- .../build/src/tools/angular/compilation/noop-compilation.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/angular/build/src/tools/angular/angular-host.ts b/packages/angular/build/src/tools/angular/angular-host.ts index 38c096f67674..e98ebf49f3eb 100644 --- a/packages/angular/build/src/tools/angular/angular-host.ts +++ b/packages/angular/build/src/tools/angular/angular-host.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import type ng from '@angular/compiler-cli'; +import type * as ng from '@angular/compiler-cli'; import assert from 'node:assert'; import { createHash } from 'node:crypto'; import nodePath from 'node:path'; diff --git a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts index ca4e869aecd5..00a17ccc453e 100644 --- a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import type ng from '@angular/compiler-cli'; +import type * as ng from '@angular/compiler-cli'; import type { PartialMessage } from 'esbuild'; import type ts from 'typescript'; import { convertTypeScriptDiagnostic } from '../../esbuild/angular/diagnostics'; diff --git a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts index 32bd7c586ed2..06a3f6e8c8d6 100644 --- a/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/aot-compilation.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import type ng from '@angular/compiler-cli'; +import type * as ng from '@angular/compiler-cli'; import assert from 'node:assert'; import { relative } from 'node:path'; import ts from 'typescript'; diff --git a/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts b/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts index e10b935907c0..cba0b18e7414 100644 --- a/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts +++ b/packages/angular/build/src/tools/angular/compilation/hmr-candidates.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import type ng from '@angular/compiler-cli'; +import type * as ng from '@angular/compiler-cli'; import assert from 'node:assert'; import ts from 'typescript'; diff --git a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts index d2876654a15e..4c529df0db08 100644 --- a/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/jit-compilation.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import type ng from '@angular/compiler-cli'; +import type * as ng from '@angular/compiler-cli'; import assert from 'node:assert'; import ts from 'typescript'; import { profileSync } from '../../esbuild/profiling'; diff --git a/packages/angular/build/src/tools/angular/compilation/noop-compilation.ts b/packages/angular/build/src/tools/angular/compilation/noop-compilation.ts index a683271b287f..e2c597b4d315 100644 --- a/packages/angular/build/src/tools/angular/compilation/noop-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/noop-compilation.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import type ng from '@angular/compiler-cli'; +import type * as ng from '@angular/compiler-cli'; import type ts from 'typescript'; import { AngularHostOptions } from '../angular-host'; import { AngularCompilation } from './angular-compilation'; From 30f49c46fd238a3eb92375b8b78b952f40955aa0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 26 Nov 2025 14:06:06 +0000 Subject: [PATCH 1883/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 6 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 474 +++++++++++++-------------- 5 files changed, 244 insertions(+), 244 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 0a6b428d1bfa..3881ebc556a9 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.13", + "@vitest/coverage-v8": "4.0.14", "jsdom": "27.2.0", "rxjs": "7.8.2", - "vitest": "4.0.13" + "vitest": "4.0.14" } } diff --git a/package.json b/package.json index 9d3758ecf778..444489a924f0 100644 --- a/package.json +++ b/package.json @@ -93,8 +93,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", "ajv": "8.17.1", "ansi-colors": "4.1.3", "buffer": "6.0.3", @@ -142,7 +142,7 @@ "verdaccio": "6.2.2", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", - "zod": "4.1.12", + "zod": "4.1.13", "zone.js": "^0.16.0" }, "dependenciesMeta": { diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index f7e243e523ce..f2575ec7fd8e 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -57,7 +57,7 @@ "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.13" + "vitest": "4.0.14" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 4dec4d9f0102..4b7706258e1f 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -30,7 +30,7 @@ "@modelcontextprotocol/sdk": "1.22.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.44.0", + "algoliasearch": "5.45.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc42008dc360..9ddc4c7e2f4e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -195,7 +195,7 @@ importers: version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) express: specifier: 5.1.0 version: 5.1.0 @@ -311,8 +311,8 @@ importers: specifier: 22.0.0 version: 22.0.0 zod: - specifier: 4.1.12 - version: 4.1.12 + specifier: 4.1.13 + version: 4.1.13 zone.js: specifier: ^0.16.0 version: 0.16.0 @@ -332,8 +332,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.13 - version: 4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 4.0.14 + version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -344,8 +344,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.13 - version: 4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.14 + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) packages/angular/build: dependencies: @@ -453,8 +453,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.13 - version: 4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.14 + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: lmdb: specifier: 3.4.4 @@ -487,8 +487,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.44.0 - version: 5.44.0 + specifier: 5.45.0 + version: 5.45.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -924,60 +924,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.10.0': - resolution: {integrity: sha512-mQT3jwuTgX8QMoqbIR7mPlWkqQqBPQaPabQzm37xg2txMlaMogK/4hCiiESGdg39MlHZOVHeV+0VJuE7f5UK8A==} + '@algolia/abtesting@1.11.0': + resolution: {integrity: sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.44.0': - resolution: {integrity: sha512-KY5CcrWhRTUo/lV7KcyjrZkPOOF9bjgWpMj9z98VA+sXzVpZtkuskBLCKsWYFp2sbwchZFTd3wJM48H0IGgF7g==} + '@algolia/client-abtesting@5.45.0': + resolution: {integrity: sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.44.0': - resolution: {integrity: sha512-LKOCE8S4ewI9bN3ot9RZoYASPi8b78E918/DVPW3HHjCMUe6i+NjbNG6KotU4RpP6AhRWZjjswbOkWelUO+OoA==} + '@algolia/client-analytics@5.45.0': + resolution: {integrity: sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.44.0': - resolution: {integrity: sha512-1yyJm4OYC2cztbS28XYVWwLXdwpLsMG4LoZLOltVglQ2+hc/i9q9fUDZyjRa2Bqt4DmkIfezagfMrokhyH4uxQ==} + '@algolia/client-common@5.45.0': + resolution: {integrity: sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.44.0': - resolution: {integrity: sha512-wVQWK6jYYsbEOjIMI+e5voLGPUIbXrvDj392IckXaCPvQ6vCMTXakQqOYCd+znQdL76S+3wHDo77HZWiAYKrtA==} + '@algolia/client-insights@5.45.0': + resolution: {integrity: sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.44.0': - resolution: {integrity: sha512-lkgRjOjOkqmIkebHjHpU9rLJcJNUDMm+eVSW/KJQYLjGqykEZxal+nYJJTBbLceEU2roByP/+27ZmgIwCdf0iA==} + '@algolia/client-personalization@5.45.0': + resolution: {integrity: sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.44.0': - resolution: {integrity: sha512-sYfhgwKu6NDVmZHL1WEKVLsOx/jUXCY4BHKLUOcYa8k4COCs6USGgz6IjFkUf+niwq8NCECMmTC4o/fVQOalsA==} + '@algolia/client-query-suggestions@5.45.0': + resolution: {integrity: sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.44.0': - resolution: {integrity: sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==} + '@algolia/client-search@5.45.0': + resolution: {integrity: sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.44.0': - resolution: {integrity: sha512-5+S5ynwMmpTpCLXGjTDpeIa81J+R4BLH0lAojOhmeGSeGEHQTqacl/4sbPyDTcidvnWhaqtyf8m42ue6lvISAw==} + '@algolia/ingestion@1.45.0': + resolution: {integrity: sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.44.0': - resolution: {integrity: sha512-xhaTN8pXJjR6zkrecg4Cc9YZaQK2LKm2R+LkbAq+AYGBCWJxtSGlNwftozZzkUyq4AXWoyoc0x2SyBtq5LRtqQ==} + '@algolia/monitoring@1.45.0': + resolution: {integrity: sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.44.0': - resolution: {integrity: sha512-GNcite/uOIS7wgRU1MT7SdNIupGSW+vbK9igIzMePvD2Dl8dy0O3urKPKIbTuZQqiVH1Cb84y5cgLvwNrdCj/Q==} + '@algolia/recommend@5.45.0': + resolution: {integrity: sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.44.0': - resolution: {integrity: sha512-YZHBk72Cd7pcuNHzbhNzF/FbbYszlc7JhZlDyQAchnX5S7tcemSS96F39Sy8t4O4WQLpFvUf1MTNedlitWdOsQ==} + '@algolia/requester-browser-xhr@5.45.0': + resolution: {integrity: sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.44.0': - resolution: {integrity: sha512-B9WHl+wQ7uf46t9cq+vVM/ypVbOeuldVDq9OtKsX2ApL2g/htx6ImB9ugDOOJmB5+fE31/XPTuCcYz/j03+idA==} + '@algolia/requester-fetch@5.45.0': + resolution: {integrity: sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.44.0': - resolution: {integrity: sha512-MULm0qeAIk4cdzZ/ehJnl1o7uB5NMokg83/3MKhPq0Pk7+I0uELGNbzIfAkvkKKEYcHALemKdArtySF9eKzh/A==} + '@algolia/requester-node-http@5.45.0': + resolution: {integrity: sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -3994,39 +3994,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.47.0': - resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==} + '@typescript-eslint/eslint-plugin@8.48.0': + resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.47.0 + '@typescript-eslint/parser': ^8.48.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.47.0': - resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==} + '@typescript-eslint/parser@8.48.0': + resolution: {integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.47.0': - resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==} + '@typescript-eslint/project-service@8.48.0': + resolution: {integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.47.0': - resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==} + '@typescript-eslint/scope-manager@8.48.0': + resolution: {integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.47.0': - resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==} + '@typescript-eslint/tsconfig-utils@8.48.0': + resolution: {integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.47.0': - resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==} + '@typescript-eslint/type-utils@8.48.0': + resolution: {integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4036,25 +4036,25 @@ packages: resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.47.0': - resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} + '@typescript-eslint/types@8.48.0': + resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.47.0': - resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==} + '@typescript-eslint/typescript-estree@8.48.0': + resolution: {integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.47.0': - resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==} + '@typescript-eslint/utils@8.48.0': + resolution: {integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.47.0': - resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} + '@typescript-eslint/visitor-keys@8.48.0': + resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.27': @@ -4142,20 +4142,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.13': - resolution: {integrity: sha512-w77N6bmtJ3CFnL/YHiYotwW/JI3oDlR3K38WEIqegRfdMSScaYxwYKB/0jSNpOTZzUjQkG8HHEz4sdWQMWpQ5g==} + '@vitest/coverage-v8@4.0.14': + resolution: {integrity: sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==} peerDependencies: - '@vitest/browser': 4.0.13 - vitest: 4.0.13 + '@vitest/browser': 4.0.14 + vitest: 4.0.14 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.13': - resolution: {integrity: sha512-zYtcnNIBm6yS7Gpr7nFTmq8ncowlMdOJkWLqYvhr/zweY6tFbDkDi8BPPOeHxEtK1rSI69H7Fd4+1sqvEGli6w==} + '@vitest/expect@4.0.14': + resolution: {integrity: sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==} - '@vitest/mocker@4.0.13': - resolution: {integrity: sha512-eNCwzrI5djoauklwP1fuslHBjrbR8rqIVbvNlAnkq1OTa6XT+lX68mrtPirNM9TnR69XUPt4puBCx2Wexseylg==} + '@vitest/mocker@4.0.14': + resolution: {integrity: sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4165,20 +4165,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.13': - resolution: {integrity: sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==} + '@vitest/pretty-format@4.0.14': + resolution: {integrity: sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==} - '@vitest/runner@4.0.13': - resolution: {integrity: sha512-9IKlAru58wcVaWy7hz6qWPb2QzJTKt+IOVKjAx5vb5rzEFPTL6H4/R9BMvjZ2ppkxKgTrFONEJFtzvnyEpiT+A==} + '@vitest/runner@4.0.14': + resolution: {integrity: sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==} - '@vitest/snapshot@4.0.13': - resolution: {integrity: sha512-hb7Usvyika1huG6G6l191qu1urNPsq1iFc2hmdzQY3F5/rTgqQnwwplyf8zoYHkpt7H6rw5UfIw6i/3qf9oSxQ==} + '@vitest/snapshot@4.0.14': + resolution: {integrity: sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==} - '@vitest/spy@4.0.13': - resolution: {integrity: sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==} + '@vitest/spy@4.0.14': + resolution: {integrity: sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==} - '@vitest/utils@4.0.13': - resolution: {integrity: sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==} + '@vitest/utils@4.0.14': + resolution: {integrity: sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -4370,8 +4370,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.44.0: - resolution: {integrity: sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==} + algoliasearch@5.45.0: + resolution: {integrity: sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -7481,6 +7481,9 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + on-exit-leak-free@2.1.2: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} engines: {node: '>=14.0.0'} @@ -9101,19 +9104,18 @@ packages: yaml: optional: true - vitest@4.0.13: - resolution: {integrity: sha512-QSD4I0fN6uZQfftryIXuqvqgBxTvJ3ZNkF6RWECd82YGAYAfhcppBLFXzXJHQAAhVFyYEuFTrq6h0hQqjB7jIQ==} + vitest@4.0.14: + resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.13 - '@vitest/browser-preview': 4.0.13 - '@vitest/browser-webdriverio': 4.0.13 - '@vitest/ui': 4.0.13 + '@vitest/browser-playwright': 4.0.14 + '@vitest/browser-preview': 4.0.14 + '@vitest/browser-webdriverio': 4.0.14 + '@vitest/ui': 4.0.14 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9121,8 +9123,6 @@ packages: optional: true '@opentelemetry/api': optional: true - '@types/debug': - optional: true '@types/node': optional: true '@vitest/browser-playwright': @@ -9507,8 +9507,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.12: - resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} zone.js@0.16.0: resolution: {integrity: sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==} @@ -9533,89 +9533,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.10.0': + '@algolia/abtesting@1.11.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-abtesting@5.44.0': + '@algolia/client-abtesting@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-analytics@5.44.0': + '@algolia/client-analytics@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-common@5.44.0': {} + '@algolia/client-common@5.45.0': {} - '@algolia/client-insights@5.44.0': + '@algolia/client-insights@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-personalization@5.44.0': + '@algolia/client-personalization@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-query-suggestions@5.44.0': + '@algolia/client-query-suggestions@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/client-search@5.44.0': + '@algolia/client-search@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/ingestion@1.44.0': + '@algolia/ingestion@1.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/monitoring@1.44.0': + '@algolia/monitoring@1.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/recommend@5.44.0': + '@algolia/recommend@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + '@algolia/client-common': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 - '@algolia/requester-browser-xhr@5.44.0': + '@algolia/requester-browser-xhr@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 + '@algolia/client-common': 5.45.0 - '@algolia/requester-fetch@5.44.0': + '@algolia/requester-fetch@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 + '@algolia/client-common': 5.45.0 - '@algolia/requester-node-http@5.44.0': + '@algolia/requester-node-http@5.45.0': dependencies: - '@algolia/client-common': 5.44.0 + '@algolia/client-common': 5.45.0 '@ampproject/remapping@2.3.0': dependencies: @@ -12730,14 +12730,14 @@ snapshots: '@types/node': 22.19.0 optional: true - '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.47.0 - '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.47.0 + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.0 eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12747,41 +12747,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.47.0 - '@typescript-eslint/types': 8.47.0 - '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.47.0 + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.48.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) - '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) + '@typescript-eslint/types': 8.48.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.47.0': + '@typescript-eslint/scope-manager@8.48.0': dependencies: - '@typescript-eslint/types': 8.47.0 - '@typescript-eslint/visitor-keys': 8.47.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/visitor-keys': 8.48.0 - '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.47.0 - '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12791,38 +12791,37 @@ snapshots: '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/types@8.47.0': {} + '@typescript-eslint/types@8.48.0': {} - '@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.47.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) - '@typescript-eslint/types': 8.47.0 - '@typescript-eslint/visitor-keys': 8.47.0 + '@typescript-eslint/project-service': 8.48.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/visitor-keys': 8.48.0 debug: 4.4.3(supports-color@10.2.2) - fast-glob: 3.3.3 - is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.3 + tinyglobby: 0.2.15 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.47.0 - '@typescript-eslint/types': 8.47.0 - '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.47.0': + '@typescript-eslint/visitor-keys@8.48.0': dependencies: - '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/types': 8.48.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.27': @@ -12986,60 +12985,60 @@ snapshots: dependencies: vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/coverage-v8@4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.13 + '@vitest/utils': 4.0.14 ast-v8-to-istanbul: 0.3.8 - debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 magicast: 0.5.1 + obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.13': + '@vitest/expect@4.0.14': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.13 - '@vitest/utils': 4.0.13 + '@vitest/spy': 4.0.14 + '@vitest/utils': 4.0.14 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.13(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.13 + '@vitest/spy': 4.0.14 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@4.0.13': + '@vitest/pretty-format@4.0.14': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.13': + '@vitest/runner@4.0.14': dependencies: - '@vitest/utils': 4.0.13 + '@vitest/utils': 4.0.14 pathe: 2.0.3 - '@vitest/snapshot@4.0.13': + '@vitest/snapshot@4.0.14': dependencies: - '@vitest/pretty-format': 4.0.13 + '@vitest/pretty-format': 4.0.14 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.13': {} + '@vitest/spy@4.0.14': {} - '@vitest/utils@4.0.13': + '@vitest/utils@4.0.14': dependencies: - '@vitest/pretty-format': 4.0.13 + '@vitest/pretty-format': 4.0.14 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -13379,22 +13378,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.44.0: - dependencies: - '@algolia/abtesting': 1.10.0 - '@algolia/client-abtesting': 5.44.0 - '@algolia/client-analytics': 5.44.0 - '@algolia/client-common': 5.44.0 - '@algolia/client-insights': 5.44.0 - '@algolia/client-personalization': 5.44.0 - '@algolia/client-query-suggestions': 5.44.0 - '@algolia/client-search': 5.44.0 - '@algolia/ingestion': 1.44.0 - '@algolia/monitoring': 1.44.0 - '@algolia/recommend': 5.44.0 - '@algolia/requester-browser-xhr': 5.44.0 - '@algolia/requester-fetch': 5.44.0 - '@algolia/requester-node-http': 5.44.0 + algoliasearch@5.45.0: + dependencies: + '@algolia/abtesting': 1.11.0 + '@algolia/client-abtesting': 5.45.0 + '@algolia/client-analytics': 5.45.0 + '@algolia/client-common': 5.45.0 + '@algolia/client-insights': 5.45.0 + '@algolia/client-personalization': 5.45.0 + '@algolia/client-query-suggestions': 5.45.0 + '@algolia/client-search': 5.45.0 + '@algolia/ingestion': 1.45.0 + '@algolia/monitoring': 1.45.0 + '@algolia/recommend': 5.45.0 + '@algolia/requester-browser-xhr': 5.45.0 + '@algolia/requester-fetch': 5.45.0 + '@algolia/requester-node-http': 5.45.0 ansi-colors@4.1.3: {} @@ -14770,11 +14769,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14784,7 +14783,7 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14795,7 +14794,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14807,7 +14806,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16992,6 +16991,8 @@ snapshots: obuf@1.1.2: {} + obug@2.1.1: {} + on-exit-leak-free@2.1.2: {} on-finished@2.3.0: @@ -18976,19 +18977,19 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.13 - '@vitest/mocker': 4.0.13(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.13 - '@vitest/runner': 4.0.13 - '@vitest/snapshot': 4.0.13 - '@vitest/spy': 4.0.13 - '@vitest/utils': 4.0.13 - debug: 4.4.3(supports-color@10.2.2) + '@vitest/expect': 4.0.14 + '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.14 + '@vitest/runner': 4.0.14 + '@vitest/snapshot': 4.0.14 + '@vitest/spy': 4.0.14 + '@vitest/utils': 4.0.14 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.10.0 @@ -19011,7 +19012,6 @@ snapshots: - sass-embedded - stylus - sugarss - - supports-color - terser - tsx - yaml @@ -19417,6 +19417,6 @@ snapshots: zod@3.25.76: {} - zod@4.1.12: {} + zod@4.1.13: {} zone.js@0.16.0: {} From 91d364e7fc2d1ba9eeb778a85281d127c3810845 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 26 Nov 2025 15:38:54 +0000 Subject: [PATCH 1884/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 1180 +++++++++++++++++------------------------------- 1 file changed, 405 insertions(+), 775 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ddc4c7e2f4e..b33bced5e3f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,7 +93,7 @@ importers: version: 16.0.3(rollup@4.53.3) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.5.0(eslint@9.39.1(jiti@2.6.1)) + version: 5.6.1(eslint@9.39.1(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -114,7 +114,7 @@ importers: version: 4.1.1 '@types/jasmine': specifier: ~5.1.0 - version: 5.1.12 + version: 5.1.13 '@types/jasmine-reporters': specifier: ^2 version: 2.5.3 @@ -129,10 +129,10 @@ importers: version: 3.0.0(esbuild@0.27.0) '@types/lodash': specifier: ^4.17.0 - version: 4.17.20 + version: 4.17.21 '@types/node': specifier: ^22.12.0 - version: 22.19.0 + version: 22.19.1 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -153,10 +153,10 @@ importers: version: 7.7.1 '@types/watchpack': specifier: ^2.4.4 - version: 2.4.4 + version: 2.4.5 '@types/yargs': specifier: ^17.0.20 - version: 17.0.34 + version: 17.0.35 '@types/yargs-parser': specifier: ^21.0.0 version: 21.0.3 @@ -276,7 +276,7 @@ importers: version: 6.2.3(rollup@4.53.3)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.0)(rollup@4.53.3) + version: 0.5.4(@types/node@22.19.1)(rollup@4.53.3) semver: specifier: 7.7.3 version: 7.7.3 @@ -288,7 +288,7 @@ importers: version: 7.5.2 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.19.0)(typescript@5.9.3) + version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -375,7 +375,7 @@ importers: version: 0.3.5 browserslist: specifier: ^4.26.0 - version: 4.27.0 + version: 4.28.0 esbuild: specifier: 0.27.0 version: 0.27.0 @@ -658,7 +658,7 @@ importers: version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.0)) browserslist: specifier: ^4.26.0 - version: 4.27.0 + version: 4.28.0 copy-webpack-plugin: specifier: 13.0.1 version: 13.0.1(webpack@5.103.0(esbuild@0.27.0)) @@ -909,8 +909,8 @@ importers: packages: - '@acemir/cssom@0.9.23': - resolution: {integrity: sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==} + '@acemir/cssom@0.9.24': + resolution: {integrity: sha512-5YjgMmAiT2rjJZU7XK1SNI7iqTy92DpaYVgG6x63FxkJ11UpYfLndHJATtinWJClAXiOlW9XWaUyAQf8pMrQPg==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -1103,8 +1103,8 @@ packages: '@angular/core': 21.1.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@asamuzakjp/css-color@4.0.5': - resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} + '@asamuzakjp/css-color@4.1.0': + resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} '@asamuzakjp/dom-selector@6.7.4': resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==} @@ -1673,8 +1673,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.15': - resolution: {integrity: sha512-q0p6zkVq2lJnmzZVPR33doA51G7YOja+FBvRdp5ISIthL0MtFCgYHHhR563z9WFGxcOn0WfjSkPDJ5Qig3H3Sw==} + '@csstools/css-syntax-patches-for-csstree@1.0.17': + resolution: {integrity: sha512-LCC++2h8pLUSPY+EsZmrrJ1EOUu+5iClpEiDhhdw3zRJpPbABML/N5lmRuBHjxtKm9VnRcsUzioyD0sekFMF0A==} engines: {node: '>=18'} '@csstools/css-tokenizer@3.0.4': @@ -1689,11 +1689,11 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@emnapi/core@1.7.0': - resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.7.0': - resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -2315,8 +2315,8 @@ packages: '@modelcontextprotocol/sdk': optional: true - '@grpc/grpc-js@1.14.0': - resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} + '@grpc/grpc-js@1.14.1': + resolution: {integrity: sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==} engines: {node: '>=12.10.0'} '@grpc/grpc-js@1.9.15': @@ -2611,15 +2611,6 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.9': - resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/type@4.0.1': resolution: {integrity: sha512-odO8YwoQAw/eVu/PSPsDDVPmqO77r/Mq7zcoF5VduVqIu2wSRWUgmYb5K9WH1no0SjLnOe8MDKtDL++z6mfo2g==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} @@ -2926,20 +2917,16 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/agent@3.0.0': - resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} - engines: {node: ^18.17.0 || >=20.5.0} - '@npmcli/agent@4.0.0': resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/fs@4.0.0': - resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/fs@5.0.0': + resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/git@7.0.0': - resolution: {integrity: sha512-vnz7BVGtOctJAIHouCJdvWBhsTVSICMeUgZo2c7XAi5d5Rrl80S1H7oPym7K03cRuinK5Q6s2dw36+PgXQTcMA==} + '@npmcli/git@7.0.1': + resolution: {integrity: sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==} engines: {node: ^20.17.0 || >=22.9.0} '@npmcli/installed-package-contents@4.0.0': @@ -2951,24 +2938,20 @@ packages: resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/package-json@7.0.1': - resolution: {integrity: sha512-956YUeI0YITbk2+KnirCkD19HLzES0habV+Els+dyZaVsaM6VGSiNwnRu6t3CZaqDLz4KXy2zx+0N/Zy6YjlAA==} + '@npmcli/package-json@7.0.4': + resolution: {integrity: sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/promise-spawn@8.0.3': - resolution: {integrity: sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/promise-spawn@9.0.0': - resolution: {integrity: sha512-qxvGj3ZM6Zuk8YeVMY0gZHY19WN6g3OGxwR4MBaxHImfD/4zD0HpgBHNOSayEaisj/p3PyQjdQlO9tbl5ZBFZg==} + '@npmcli/promise-spawn@9.0.1': + resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/redact@3.2.2': - resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/redact@4.0.0': + resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/run-script@10.0.2': - resolution: {integrity: sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==} + '@npmcli/run-script@10.0.3': + resolution: {integrity: sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==} engines: {node: ^20.17.0 || >=22.9.0} '@octokit/auth-app@8.1.2': @@ -3039,8 +3022,8 @@ packages: resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} engines: {node: '>= 20'} - '@octokit/request@10.0.6': - resolution: {integrity: sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==} + '@octokit/request@10.0.7': + resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==} engines: {node: '>= 20'} '@octokit/rest@22.0.1': @@ -3075,8 +3058,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.37.0': - resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} + '@opentelemetry/semantic-conventions@1.38.0': + resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} '@oxc-project/types@0.98.0': @@ -3227,8 +3210,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.12': - resolution: {integrity: sha512-mP9iLFZwH+FapKJLeA7/fLqOlSUwYpMwjR1P5J23qd4e7qGJwecJccJqHYrjw33jmIZYV4dtiTHPD/J+1e7cEw==} + '@puppeteer/browsers@2.10.13': + resolution: {integrity: sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==} engines: {node: '>=18'} hasBin: true @@ -3385,250 +3368,129 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.2': - resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.53.3': resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.2': - resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.53.3': resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.2': - resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.53.3': resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.2': - resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.2': - resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.53.3': resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.2': - resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.53.3': resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.2': - resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.53.3': resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.2': - resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.53.3': resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.53.2': - resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.53.3': resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.3': resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.3': resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.2': - resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.53.3': resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.2': - resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.53.3': resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.2': - resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.3': resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.2': - resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.53.3': resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.53.2': - resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.53.3': resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.2': - resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.53.3': resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.2': - resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.2': - resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.2': - resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.52.5': - resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==} + '@rollup/wasm-node@4.53.3': + resolution: {integrity: sha512-mB8z32H6kz4kVjn+tfTGcrXBae7rIeAvm/g6itsE3IqcXpjSRRvk1/EOWDEi5wL8NNmxXiH71t4jtNfr128zpw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3669,8 +3531,8 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@stylistic/eslint-plugin@5.5.0': - resolution: {integrity: sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==} + '@stylistic/eslint-plugin@5.6.1': + resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -3686,8 +3548,8 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3838,9 +3700,6 @@ packages: '@types/jasmine-reporters@2.5.3': resolution: {integrity: sha512-8aojAUdgdiD9VQbllBJb/9gny3lOjz9T5gyMcbYlKe6npwGVsarbr8v2JYSFJSZSuFYXcPVzFG2lLX3ib0j/DA==} - '@types/jasmine@5.1.12': - resolution: {integrity: sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==} - '@types/jasmine@5.1.13': resolution: {integrity: sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==} @@ -3868,8 +3727,8 @@ packages: '@types/loader-utils@3.0.0': resolution: {integrity: sha512-oOi4OGpiLUbb+Q/cN9FIkkDFgOpOGZ2cUAzb5i03wrGstnG6Syx1WDMhSiB5rcP10XX7cw7Uev8mv++/aplnNg==} - '@types/lodash@4.17.20': - resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/lodash@4.17.21': + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} '@types/micromatch@2.3.35': resolution: {integrity: sha512-J749bHo/Zu56w0G0NI/IGHLQPiSsjx//0zJhfEVAN95K/xM5C8ZDmhkXtU3qns0sBOao7HuQzr8XV1/2o5LbXA==} @@ -3883,8 +3742,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.19.0': - resolution: {integrity: sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==} + '@types/node@22.19.1': + resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} '@types/node@24.10.1': resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} @@ -3967,8 +3826,8 @@ packages: '@types/stack-trace@0.0.33': resolution: {integrity: sha512-O7in6531Bbvlb2KEsJ0dq0CHZvc3iWSR5ZYMtvGgnHA56VgriAN/AU2LorfmcvAl2xc9N5fbCTRyMRRl8nd74g==} - '@types/watchpack@2.4.4': - resolution: {integrity: sha512-SbuSavsPxfOPZwVHBgQUVuzYBe6+8KL7dwiJLXaj5rmv3DxktOMwX5WP1J6UontwUbewjVoc7pCgZvqy6rPn+A==} + '@types/watchpack@2.4.5': + resolution: {integrity: sha512-8CarnGOIYYRL342jwQyHrGwz4vCD3y5uwwYmzQVzT2Z24DqSd6wwBva6m0eNJX4S5pVmrx9xUEbOsOoqBVhWsg==} '@types/which@3.0.4': resolution: {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} @@ -3982,9 +3841,6 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.34': - resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} - '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} @@ -4032,10 +3888,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.2': - resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.48.0': resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4292,9 +4144,9 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -4382,8 +4234,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.1.1: - resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -4585,16 +4437,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.1: - resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: bare-abort-controller: optional: true - bare-fs@4.5.0: - resolution: {integrity: sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==} + bare-fs@4.5.1: + resolution: {integrity: sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -4630,8 +4482,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.23: - resolution: {integrity: sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ==} + baseline-browser-mapping@2.8.31: + resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} hasBin: true basic-ftp@5.0.5: @@ -4682,8 +4534,8 @@ 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==} + body-parser@2.2.1: + resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} engines: {node: '>=18'} bonjour-service@1.3.0: @@ -4720,8 +4572,8 @@ packages: browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.27.0: - resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4758,12 +4610,8 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cacache@19.0.1: - resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - cacache@20.0.1: - resolution: {integrity: sha512-+7LYcYGBYoNqTp1Rv7Ny1YjUo5E0/ftkQtraH3vkfAGgVHc+ouWdC8okAwQgQR7EVIdW6JTzTmhKFwzb+4okAQ==} + cacache@20.0.3: + resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} engines: {node: ^20.17.0 || >=22.9.0} cache-content-type@1.0.1: @@ -4802,11 +4650,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001753: - resolution: {integrity: sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw==} - - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} + caniuse-lite@1.0.30001757: + resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4861,8 +4706,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@10.5.1: - resolution: {integrity: sha512-rlj6OyhKhVTnk4aENcUme3Jl9h+cq4oXu4AzBcvr8RMmT6BR4a3zSNT9dbIfXr9/BS6ibzRyDhowuw4n2GgzsQ==} + chromium-bidi@11.0.0: + resolution: {integrity: sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==} peerDependencies: devtools-protocol: '*' @@ -5003,9 +4848,9 @@ 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-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} @@ -5054,8 +4899,8 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.46.0: - resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -5244,12 +5089,8 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} - - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} default-browser@5.4.0: @@ -5415,8 +5256,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.244: - resolution: {integrity: sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==} + electron-to-chromium@1.5.260: + resolution: {integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5890,8 +5731,8 @@ packages: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} formdata-polyfill@4.0.10: @@ -6025,14 +5866,13 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} - hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -6062,12 +5902,12 @@ packages: resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} engines: {node: '>=18'} - google-gax@5.0.5: - resolution: {integrity: sha512-VuC6nVnPVfo/M1WudLoS4Y3dTepVndZatUmeb0nUNmfzft6mKSy8ffDh4h5qxR7L9lslDxNpWPYsuPrFboOmTw==} + google-gax@5.0.6: + resolution: {integrity: sha512-1kGbqVQBZPAAu4+/R1XxPQKP0ydbNYoLAr4l0ZO2bMV0kLyLW4I1gAk++qBLWt7DPORTzmWRMsCZe86gDjShJA==} engines: {node: '>=18'} - google-logging-utils@1.1.2: - resolution: {integrity: sha512-YsFPGVgDFf4IzSwbwIR0iaFJQFmR5Jp7V1WuYSjuRgAm9yWqsMhKE9YPlL+wvFLnc/wMiFV4SQUD9Y/JMpxIxQ==} + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} gopd@1.2.0: @@ -6198,6 +6038,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-parser-js@0.5.10: resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} @@ -6342,10 +6186,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ini@5.0.0: - resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} - engines: {node: ^18.17.0 || >=20.5.0} - ini@6.0.0: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -6361,8 +6201,8 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ip-regex@4.3.0: @@ -6621,8 +6461,8 @@ packages: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} - isbinaryfile@5.0.6: - resolution: {integrity: sha512-I+NmIfBHUl+r2wcDd6JwE9yWje/PIVY/R5/CmV8dXLZd5K+L9X2klAOwfAHNnondLXkbHyTAleQAWonpTJBTtw==} + isbinaryfile@5.0.7: + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} engines: {node: '>= 18.0.0'} isexe@2.0.0: @@ -6670,10 +6510,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - jake@10.9.4: resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} @@ -6723,10 +6559,6 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -6757,9 +6589,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@4.0.0: - resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} - engines: {node: ^18.17.0 || >=20.5.0} + json-parse-even-better-errors@5.0.0: + resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} + engines: {node: ^20.17.0 || >=22.9.0} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7064,12 +6896,8 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@14.0.3: - resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - make-fetch-happen@15.0.2: - resolution: {integrity: sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==} + make-fetch-happen@15.0.3: + resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} engines: {node: ^20.17.0 || >=22.9.0} marky@1.3.0: @@ -7090,8 +6918,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.50.0: - resolution: {integrity: sha512-N0LUYQMUA1yS5tJKmMtU9yprPm6ZIg24yr/OVv/7t6q0kKDIho4cBbXRi1XKttUmNYDYgF/q45qrKE/UhGO0CA==} + memfs@4.51.0: + resolution: {integrity: sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7131,9 +6959,9 @@ 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-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -7201,9 +7029,9 @@ packages: resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} engines: {node: '>=16 || 14 >=14.17'} - minipass-fetch@4.0.1: - resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} - engines: {node: ^18.17.0 || >=20.5.0} + minipass-fetch@5.0.0: + resolution: {integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==} + engines: {node: ^20.17.0 || >=22.9.0} minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} @@ -7383,17 +7211,17 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-gyp@11.5.0: - resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} - engines: {node: ^18.17.0 || >=20.5.0} + node-gyp@12.1.0: + resolution: {integrity: sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true normalize-path@3.0.0: @@ -7432,8 +7260,8 @@ packages: resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} engines: {node: ^20.17.0 || >=22.9.0} - npm-registry-fetch@19.1.0: - resolution: {integrity: sha512-xyZLfs7TxPu/WKjHUs0jZOPinzBAI32kEUel6za0vH+JUTnFZ5zbHI1ZoGZRDm6oMjADtrli6FxtMlk/5ABPNw==} + npm-registry-fetch@19.1.1: + resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} engines: {node: ^20.17.0 || >=22.9.0} npm-run-path@4.0.1: @@ -7580,8 +7408,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} p-queue@6.6.2: @@ -7672,8 +7500,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: @@ -7749,8 +7577,8 @@ packages: resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} engines: {node: '>=20.x'} - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} pkg-dir@8.0.0: @@ -7921,8 +7749,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.27.0: - resolution: {integrity: sha512-yubwj2XXmTM3wRIpbhO5nCjbByPgpFHlgrsD4IK+gMPqO7/a5FfnoSXDKjmqi8A2M1Ewusz0rTI/r+IN0GU0MA==} + puppeteer-core@24.31.0: + resolution: {integrity: sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -7978,8 +7806,12 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - raw-body@3.0.1: - resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} readable-stream@2.3.8: @@ -8157,11 +7989,6 @@ packages: '@types/node': optional: true - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.53.3: resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8238,8 +8065,8 @@ packages: saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -8495,10 +8322,6 @@ packages: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ssri@12.0.0: - resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} - engines: {node: ^18.17.0 || >=20.5.0} - ssri@13.0.0: resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} engines: {node: ^20.17.0 || >=22.9.0} @@ -8738,15 +8561,15 @@ packages: tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts-core@7.0.17: - resolution: {integrity: sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==} + tldts-core@7.0.19: + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} tldts@6.1.86: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tldts@7.0.17: - resolution: {integrity: sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==} + tldts@7.0.19: + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} hasBin: true tmp@0.0.30: @@ -8964,13 +8787,13 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - unique-filename@4.0.0: - resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} - engines: {node: ^18.17.0 || >=20.5.0} + unique-filename@5.0.0: + resolution: {integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==} + engines: {node: ^20.17.0 || >=22.9.0} - unique-slug@5.0.0: - resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} - engines: {node: ^18.17.0 || >=20.5.0} + unique-slug@6.0.0: + resolution: {integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==} + engines: {node: ^20.17.0 || >=22.9.0} universal-github-app-jwt@2.2.2: resolution: {integrity: sha512-dcmbeSrOdTnsjGjUfAlqNDJrhxXizjAz94ija9Qw8YkZ1uu0d+GoZzyH+Jb9tIIqvGsadUfwg+22k5aDqqwzbw==} @@ -9163,8 +8986,8 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-bidi-protocol@0.3.8: - resolution: {integrity: sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==} + webdriver-bidi-protocol@0.3.9: + resolution: {integrity: sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==} webdriver-js-extender@2.1.0: resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} @@ -9291,11 +9114,6 @@ packages: engines: {node: '>= 8'} hasBin: true - which@5.0.0: - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - which@6.0.0: resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9499,10 +9317,10 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zod-to-json-schema@3.24.6: - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + zod-to-json-schema@3.25.0: + resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==} peerDependencies: - zod: ^3.24.1 + zod: ^3.25 || ^4 zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -9515,7 +9333,7 @@ packages: snapshots: - '@acemir/cssom@0.9.23': {} + '@acemir/cssom@0.9.24': {} '@actions/core@1.11.1': dependencies: @@ -9791,7 +9609,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@asamuzakjp/css-color@4.0.5': + '@asamuzakjp/css-color@4.1.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -9853,7 +9671,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.27.0 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -10442,7 +10260,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.46.0 + core-js-compat: 3.47.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10517,7 +10335,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.15': {} + '@csstools/css-syntax-patches-for-csstree@1.0.17': {} '@csstools/css-tokenizer@3.0.4': {} @@ -10529,7 +10347,7 @@ snapshots: combined-stream: 1.0.8 extend: 3.0.2 forever-agent: 0.6.1 - form-data: 4.0.4 + form-data: 4.0.5 http-signature: 1.4.0 is-typedarray: 1.0.0 isstream: 0.1.2 @@ -10544,13 +10362,13 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@emnapi/core@1.7.0': + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.0': + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 optional: true @@ -10757,7 +10575,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -11128,7 +10946,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 big.js: 7.0.1 @@ -11137,7 +10955,7 @@ snapshots: events-intercept: 2.0.0 extend: 3.0.2 google-auth-library: 10.5.0(supports-color@10.2.2) - google-gax: 5.0.5(supports-color@10.2.2) + google-gax: 5.0.6(supports-color@10.2.2) grpc-gcp: 1.0.1(protobufjs@7.5.4) is: 3.3.2 lodash.snakecase: 4.1.1 @@ -11164,7 +10982,7 @@ snapshots: - supports-color - utf-8-validate - '@grpc/grpc-js@1.14.0': + '@grpc/grpc-js@1.14.1': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -11172,7 +10990,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@grpc/proto-loader@0.7.15': dependencies: @@ -11441,10 +11259,6 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/type@3.0.9(@types/node@24.10.1)': - optionalDependencies: - '@types/node': 24.10.1 - '@inquirer/type@4.0.1(@types/node@24.10.1)': optionalDependencies: '@types/node': 24.10.1 @@ -11542,7 +11356,7 @@ snapshots: '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@24.10.1) - '@inquirer/type': 3.0.9(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11579,10 +11393,10 @@ snapshots: eventsource-parser: 3.0.6 express: 5.1.0 express-rate-limit: 7.5.1(express@5.1.0) - pkce-challenge: 5.0.0 - raw-body: 3.0.1 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) + zod-to-json-schema: 3.25.0(zod@3.25.76) transitivePeerDependencies: - supports-color @@ -11687,8 +11501,8 @@ snapshots: '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.7.0 - '@emnapi/runtime': 1.7.0 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -11704,16 +11518,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@npmcli/agent@3.0.0': - dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6(supports-color@10.2.2) - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - '@npmcli/agent@4.0.0': dependencies: agent-base: 7.1.4 @@ -11724,20 +11528,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/fs@4.0.0': + '@npmcli/fs@5.0.0': dependencies: semver: 7.7.3 - '@npmcli/git@7.0.0': + '@npmcli/git@7.0.1': dependencies: - '@npmcli/promise-spawn': 8.0.3 - ini: 5.0.0 + '@npmcli/promise-spawn': 9.0.1 + ini: 6.0.0 lru-cache: 11.2.2 npm-pick-manifest: 11.0.3 - proc-log: 5.0.0 + proc-log: 6.0.0 promise-retry: 2.0.1 semver: 7.7.3 - which: 5.0.0 + which: 6.0.0 '@npmcli/installed-package-contents@4.0.0': dependencies: @@ -11746,34 +11550,30 @@ snapshots: '@npmcli/node-gyp@5.0.0': {} - '@npmcli/package-json@7.0.1': + '@npmcli/package-json@7.0.4': dependencies: - '@npmcli/git': 7.0.0 - glob: 11.0.3 + '@npmcli/git': 7.0.1 + glob: 13.0.0 hosted-git-info: 9.0.2 - json-parse-even-better-errors: 4.0.0 - proc-log: 5.0.0 + json-parse-even-better-errors: 5.0.0 + proc-log: 6.0.0 semver: 7.7.3 validate-npm-package-license: 3.0.4 - '@npmcli/promise-spawn@8.0.3': + '@npmcli/promise-spawn@9.0.1': dependencies: - which: 5.0.0 - - '@npmcli/promise-spawn@9.0.0': - dependencies: - which: 5.0.0 + which: 6.0.0 - '@npmcli/redact@3.2.2': {} + '@npmcli/redact@4.0.0': {} - '@npmcli/run-script@10.0.2': + '@npmcli/run-script@10.0.3': dependencies: '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.1 - '@npmcli/promise-spawn': 9.0.0 - node-gyp: 11.5.0 + '@npmcli/package-json': 7.0.4 + '@npmcli/promise-spawn': 9.0.1 + node-gyp: 12.1.0 proc-log: 6.0.0 - which: 5.0.0 + which: 6.0.0 transitivePeerDependencies: - supports-color @@ -11781,7 +11581,7 @@ snapshots: dependencies: '@octokit/auth-oauth-app': 9.0.3 '@octokit/auth-oauth-user': 6.0.2 - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 toad-cache: 3.7.0 @@ -11792,14 +11592,14 @@ snapshots: dependencies: '@octokit/auth-oauth-device': 8.0.3 '@octokit/auth-oauth-user': 6.0.2 - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 '@octokit/auth-oauth-device@8.0.3': dependencies: '@octokit/oauth-methods': 6.0.2 - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 @@ -11807,7 +11607,7 @@ snapshots: dependencies: '@octokit/auth-oauth-device': 8.0.3 '@octokit/oauth-methods': 6.0.2 - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 @@ -11817,7 +11617,7 @@ snapshots: dependencies: '@octokit/auth-token': 6.0.0 '@octokit/graphql': 9.0.3 - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 before-after-hook: 4.0.0 @@ -11835,7 +11635,7 @@ snapshots: '@octokit/graphql@9.0.3': dependencies: - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 @@ -11844,7 +11644,7 @@ snapshots: '@octokit/oauth-methods@6.0.2': dependencies: '@octokit/oauth-authorization-url': 8.0.0 - '@octokit/request': 10.0.6 + '@octokit/request': 10.0.7 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 @@ -11868,7 +11668,7 @@ snapshots: dependencies: '@octokit/types': 16.0.0 - '@octokit/request@10.0.6': + '@octokit/request@10.0.7': dependencies: '@octokit/endpoint': 11.0.2 '@octokit/request-error': 7.1.0 @@ -11905,9 +11705,9 @@ snapshots: '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/semantic-conventions@1.37.0': {} + '@opentelemetry/semantic-conventions@1.38.0': {} '@oxc-project/types@0.98.0': {} @@ -12020,7 +11820,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.12': + '@puppeteer/browsers@2.10.13': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -12097,12 +11897,6 @@ snapshots: optionalDependencies: rollup: 4.53.3 - '@rollup/plugin-json@6.1.0(rollup@4.53.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.2) - optionalDependencies: - rollup: 4.53.2 - '@rollup/plugin-json@6.1.0(rollup@4.53.3)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.3) @@ -12137,14 +11931,6 @@ snapshots: optionalDependencies: rollup: 4.53.3 - '@rollup/pluginutils@5.3.0(rollup@4.53.2)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.53.2 - '@rollup/pluginutils@5.3.0(rollup@4.53.3)': dependencies: '@types/estree': 1.0.8 @@ -12153,139 +11939,73 @@ snapshots: optionalDependencies: rollup: 4.53.3 - '@rollup/rollup-android-arm-eabi@4.53.2': - optional: true - '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.53.2': - optional: true - '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.53.2': - optional: true - '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.53.2': - optional: true - '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.53.2': - optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.53.2': - optional: true - '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.2': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.2': - optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.2': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.2': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.2': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.2': - optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.53.2': - optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.53.2': - optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.2': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.2': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.2': - optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.2': - optional: true - '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true - '@rollup/wasm-node@4.52.5': + '@rollup/wasm-node@4.53.3': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -12306,7 +12026,7 @@ snapshots: '@sigstore/bundle': 4.0.0 '@sigstore/core': 3.0.0 '@sigstore/protobuf-specs': 0.5.0 - make-fetch-happen: 15.0.2 + make-fetch-happen: 15.0.3 proc-log: 5.0.0 promise-retry: 2.0.1 transitivePeerDependencies: @@ -12331,10 +12051,10 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.48.0 eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12349,7 +12069,7 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -12371,7 +12091,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/babel__code-frame@7.0.6': {} @@ -12401,16 +12121,16 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/browser-sync@2.29.1': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/serve-static': 2.2.0 chokidar: 3.6.0 @@ -12421,11 +12141,11 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -12433,11 +12153,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.7 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/connect@3.4.38': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/content-disposition@0.5.9': {} @@ -12448,11 +12168,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.5 '@types/keygrip': 1.0.6 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/cors@2.8.19': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/debounce@1.2.4': {} @@ -12460,7 +12180,7 @@ snapshots: '@types/duplexify@3.6.5': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/ejs@3.1.5': {} @@ -12480,14 +12200,14 @@ snapshots: '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -12509,11 +12229,11 @@ snapshots: '@types/git-raw-commits@5.0.1': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/http-assert@1.5.6': {} @@ -12521,7 +12241,7 @@ snapshots: '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/ini@4.1.1': {} @@ -12537,9 +12257,7 @@ snapshots: '@types/jasmine-reporters@2.5.3': dependencies: - '@types/jasmine': 5.1.12 - - '@types/jasmine@5.1.12': {} + '@types/jasmine': 5.1.13 '@types/jasmine@5.1.13': {} @@ -12549,7 +12267,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -12569,13 +12287,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.9 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.27.0)': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 webpack: 5.103.0(esbuild@0.27.0) transitivePeerDependencies: - '@swc/core' @@ -12583,7 +12301,7 @@ snapshots: - uglify-js - webpack-cli - '@types/lodash@4.17.20': {} + '@types/lodash@4.17.21': {} '@types/micromatch@2.3.35': dependencies: @@ -12593,14 +12311,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.19.0 - form-data: 4.0.4 + '@types/node': 22.19.1 + form-data: 4.0.5 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 - '@types/node@22.19.0': + '@types/node@22.19.1': dependencies: undici-types: 7.16.0 @@ -12612,7 +12330,7 @@ snapshots: '@types/npm-registry-fetch@8.0.9': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12620,11 +12338,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/npm-registry-fetch': 8.0.9 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12637,12 +12355,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/pumpify@1.4.5': dependencies: '@types/duplexify': 3.6.5 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/q@0.0.32': {} @@ -12656,7 +12374,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/retry@0.12.2': {} @@ -12667,11 +12385,11 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/send@1.2.1': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/serve-index@1.9.4': dependencies: @@ -12680,45 +12398,41 @@ snapshots: '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/send': 0.17.6 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/stack-trace@0.0.33': {} - '@types/watchpack@2.4.4': + '@types/watchpack@2.4.5': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/ws@8.18.1': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.34': - dependencies: - '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 @@ -12727,7 +12441,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 optional: true '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': @@ -12789,8 +12503,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/types@8.48.0': {} '@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)': @@ -13057,7 +12769,7 @@ snapshots: es-module-lexer: 1.7.0 get-stream: 6.0.1 is-stream: 2.0.1 - isbinaryfile: 5.0.6 + isbinaryfile: 5.0.7 koa: 2.16.3 koa-etag: 4.0.0 koa-send: 5.0.1 @@ -13116,7 +12828,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.27.0(bufferutil@4.0.9) + puppeteer-core: 24.31.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13302,7 +13014,7 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abbrev@3.0.1: {} + abbrev@4.0.0: {} abort-controller@3.0.0: dependencies: @@ -13315,7 +13027,7 @@ snapshots: accepts@2.0.0: dependencies: - mime-types: 3.0.1 + mime-types: 3.0.2 negotiator: 1.0.0 acorn-import-phases@1.0.4(acorn@8.15.0): @@ -13401,7 +13113,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.1.1: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -13540,8 +13252,8 @@ snapshots: autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.27.0 - caniuse-lite: 1.0.30001754 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001757 fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13577,7 +13289,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.46.0 + core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color @@ -13590,13 +13302,13 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.8.1: {} + bare-events@2.8.2: {} - bare-fs@4.5.0: + bare-fs@4.5.1: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.8.1) + bare-stream: 2.7.0(bare-events@2.8.2) bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: @@ -13612,11 +13324,11 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.8.1): + bare-stream@2.7.0(bare-events@2.8.2): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -13631,7 +13343,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.23: {} + baseline-browser-mapping@2.8.31: {} basic-ftp@5.0.5: {} @@ -13695,16 +13407,16 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.0: + body-parser@2.2.1: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 4.4.3(supports-color@10.2.2) - http-errors: 2.0.0 - iconv-lite: 0.6.3 + http-errors: 2.0.1 + iconv-lite: 0.7.0 on-finished: 2.4.1 qs: 6.14.0 - raw-body: 3.0.1 + raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: - supports-color @@ -13771,7 +13483,7 @@ snapshots: micromatch: 4.0.8 opn: 5.3.0 portscanner: 2.2.0 - raw-body: 2.5.2 + raw-body: 2.5.3 resp-modifier: 6.0.2 rx: 4.1.0 send: 0.19.1 @@ -13791,13 +13503,13 @@ snapshots: dependencies: pako: 0.2.9 - browserslist@4.27.0: + browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.23 - caniuse-lite: 1.0.30001753 - electron-to-chromium: 1.5.244 + baseline-browser-mapping: 2.8.31 + caniuse-lite: 1.0.30001757 + electron-to-chromium: 1.5.260 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.27.0) + update-browserslist-db: 1.1.4(browserslist@4.28.0) browserstack@1.6.1: dependencies: @@ -13833,34 +13545,19 @@ snapshots: bytes@3.1.2: {} - cacache@19.0.1: + cacache@20.0.3: dependencies: - '@npmcli/fs': 4.0.0 + '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 7.0.3 - ssri: 12.0.0 - tar: 7.5.2 - unique-filename: 4.0.0 - - cacache@20.0.1: - dependencies: - '@npmcli/fs': 4.0.0 - fs-minipass: 3.0.3 - glob: 11.0.3 + glob: 13.0.0 lru-cache: 11.2.2 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - p-map: 7.0.3 - ssri: 12.0.0 - unique-filename: 4.0.0 + p-map: 7.0.4 + ssri: 13.0.0 + unique-filename: 5.0.0 cache-content-type@1.0.1: dependencies: @@ -13902,9 +13599,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001753: {} - - caniuse-lite@1.0.30001754: {} + caniuse-lite@1.0.30001757: {} caseless@0.12.0: {} @@ -13961,7 +13656,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13970,7 +13665,7 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@10.5.1(devtools-protocol@0.0.1521046): + chromium-bidi@11.0.0(devtools-protocol@0.0.1521046): dependencies: devtools-protocol: 0.0.1521046 mitt: 3.0.1 @@ -14042,7 +13737,7 @@ snapshots: '@hapi/bourne': 3.0.0 inflation: 2.1.0 qs: 6.14.0 - raw-body: 2.5.2 + raw-body: 2.5.3 type-is: 1.6.18 co@4.6.0: {} @@ -14131,9 +13826,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 + content-disposition@1.0.1: {} content-type@1.0.5: {} @@ -14173,9 +13866,9 @@ snapshots: tinyglobby: 0.2.15 webpack: 5.103.0(esbuild@0.27.0) - core-js-compat@3.46.0: + core-js-compat@3.47.0: dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 core-util-is@1.0.2: {} @@ -14190,7 +13883,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 @@ -14247,8 +13940,8 @@ snapshots: cssstyle@5.3.3: dependencies: - '@asamuzakjp/css-color': 4.0.5 - '@csstools/css-syntax-patches-for-csstree': 1.0.15 + '@asamuzakjp/css-color': 4.1.0 + '@csstools/css-syntax-patches-for-csstree': 1.0.17 css-tree: 3.1.0 custom-event@1.0.1: {} @@ -14336,17 +14029,12 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} - - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id@5.0.1: {} default-browser@5.4.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 default-gateway@6.0.3: dependencies: @@ -14504,7 +14192,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.244: {} + electron-to-chromium@1.5.260: {} emoji-regex@10.6.0: {} @@ -14543,7 +14231,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.19.0 + '@types/node': 22.19.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14907,7 +14595,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller @@ -14982,8 +14670,8 @@ snapshots: express@5.1.0: dependencies: accepts: 2.0.0 - body-parser: 2.2.0 - content-disposition: 1.0.0 + body-parser: 2.2.1 + content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 @@ -14993,9 +14681,9 @@ snapshots: etag: 1.8.1 finalhandler: 2.1.0 fresh: 2.0.0 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 2.0.0 - mime-types: 3.0.1 + mime-types: 3.0.2 on-finished: 2.4.1 once: 1.4.0 parseurl: 1.3.3 @@ -15015,7 +14703,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15218,7 +14906,7 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -15286,7 +14974,7 @@ snapshots: gcp-metadata@8.1.2(supports-color@10.2.2): dependencies: gaxios: 7.1.3(supports-color@10.2.2) - google-logging-utils: 1.1.2 + google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - supports-color @@ -15369,7 +15057,7 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 @@ -15378,14 +15066,11 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.3: + glob@13.0.0: dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 minimatch: 10.1.1 minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -15429,19 +15114,19 @@ snapshots: ecdsa-sig-formatter: 1.0.11 gaxios: 7.1.3(supports-color@10.2.2) gcp-metadata: 8.1.2(supports-color@10.2.2) - google-logging-utils: 1.1.2 + google-logging-utils: 1.1.3 gtoken: 8.0.0(supports-color@10.2.2) jws: 4.0.0 transitivePeerDependencies: - supports-color - google-gax@5.0.5(supports-color@10.2.2): + google-gax@5.0.6(supports-color@10.2.2): dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.1 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 google-auth-library: 10.5.0(supports-color@10.2.2) - google-logging-utils: 1.1.2 + google-logging-utils: 1.1.3 node-fetch: 3.3.2 object-hash: 3.0.0 proto3-json-serializer: 3.0.4 @@ -15451,7 +15136,7 @@ snapshots: transitivePeerDependencies: - supports-color - google-logging-utils@1.1.2: {} + google-logging-utils@1.1.3: {} gopd@1.2.0: {} @@ -15483,7 +15168,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.5.4): dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.1 protobufjs: 7.5.4 gtoken@8.0.0(supports-color@10.2.2): @@ -15604,6 +15289,14 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-parser-js@0.5.10: {} http-proxy-agent@5.0.0(supports-color@10.2.2): @@ -15755,8 +15448,6 @@ snapshots: ini@1.3.8: {} - ini@5.0.0: {} - ini@6.0.0: {} injection-js@2.6.1: @@ -15776,7 +15467,7 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - ip-address@10.0.1: {} + ip-address@10.1.0: {} ip-regex@4.3.0: {} @@ -15992,7 +15683,7 @@ snapshots: isbinaryfile@4.0.10: {} - isbinaryfile@5.0.6: {} + isbinaryfile@5.0.7: {} isexe@2.0.0: {} @@ -16057,10 +15748,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - jake@10.9.4: dependencies: async: 3.2.6 @@ -16090,14 +15777,14 @@ snapshots: jasmine@5.12.0: dependencies: - glob: 10.4.5 + glob: 10.5.0 jasmine-core: 5.12.1 jasminewd2@2.2.0: {} jest-worker@27.5.1: dependencies: - '@types/node': 22.19.0 + '@types/node': 22.19.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16109,10 +15796,6 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -16121,7 +15804,7 @@ snapshots: jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.23 + '@acemir/cssom': 0.9.24 '@asamuzakjp/dom-selector': 6.7.4 cssstyle: 5.3.3 data-urls: 6.0.0 @@ -16156,7 +15839,7 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@4.0.0: {} + json-parse-even-better-errors@5.0.0: {} json-schema-traverse@0.4.1: {} @@ -16507,7 +16190,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.1.1 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -16569,35 +16252,19 @@ snapshots: make-error@1.3.6: {} - make-fetch-happen@14.0.3: - dependencies: - '@npmcli/agent': 3.0.0 - cacache: 19.0.1 - http-cache-semantics: 4.2.0 - minipass: 7.1.2 - minipass-fetch: 4.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 1.0.0 - proc-log: 5.0.0 - promise-retry: 2.0.1 - ssri: 12.0.0 - transitivePeerDependencies: - - supports-color - - make-fetch-happen@15.0.2: + make-fetch-happen@15.0.3: dependencies: '@npmcli/agent': 4.0.0 - cacache: 20.0.1 + cacache: 20.0.3 http-cache-semantics: 4.2.0 minipass: 7.1.2 - minipass-fetch: 4.0.1 + minipass-fetch: 5.0.0 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 1.0.0 - proc-log: 5.0.0 + proc-log: 6.0.0 promise-retry: 2.0.1 - ssri: 12.0.0 + ssri: 13.0.0 transitivePeerDependencies: - supports-color @@ -16611,7 +16278,7 @@ snapshots: media-typer@1.1.0: {} - memfs@4.50.0: + memfs@4.51.0: dependencies: '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -16645,7 +16312,7 @@ snapshots: dependencies: mime-db: 1.52.0 - mime-types@3.0.1: + mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -16697,7 +16364,7 @@ snapshots: dependencies: minipass: 7.1.2 - minipass-fetch@4.0.1: + minipass-fetch@5.0.0: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 @@ -16788,7 +16455,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.1 + sax: 1.4.3 optional: true negotiator@0.6.3: {} @@ -16805,11 +16472,11 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.53.2) - '@rollup/wasm-node': 4.52.5 + '@rollup/plugin-json': 6.1.0(rollup@4.53.3) + '@rollup/wasm-node': 4.53.3 ajv: 8.17.1 ansi-colors: 4.1.3 - browserslist: 4.27.0 + browserslist: 4.28.0 chokidar: 4.0.3 commander: 14.0.2 dependency-graph: 1.0.0 @@ -16821,14 +16488,14 @@ snapshots: ora: 9.0.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.53.2)(typescript@5.9.3) + rollup-plugin-dts: 6.2.3(rollup@4.53.3)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.94.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.53.2 + rollup: 4.53.3 nock@14.0.10: dependencies: @@ -16873,26 +16540,26 @@ snapshots: node-gyp-build@4.8.4: {} - node-gyp@11.5.0: + node-gyp@12.1.0: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.3 graceful-fs: 4.2.11 - make-fetch-happen: 14.0.3 - nopt: 8.1.0 - proc-log: 5.0.0 + make-fetch-happen: 15.0.3 + nopt: 9.0.0 + proc-log: 6.0.0 semver: 7.7.3 tar: 7.5.2 tinyglobby: 0.2.15 - which: 5.0.0 + which: 6.0.0 transitivePeerDependencies: - supports-color node-releases@2.0.27: {} - nopt@8.1.0: + nopt@9.0.0: dependencies: - abbrev: 3.0.1 + abbrev: 4.0.0 normalize-path@3.0.0: {} @@ -16929,16 +16596,16 @@ snapshots: npm-package-arg: 13.0.2 semver: 7.7.3 - npm-registry-fetch@19.1.0: + npm-registry-fetch@19.1.1: dependencies: - '@npmcli/redact': 3.2.2 + '@npmcli/redact': 4.0.0 jsonparse: 1.3.1 - make-fetch-happen: 15.0.2 + make-fetch-happen: 15.0.3 minipass: 7.1.2 - minipass-fetch: 4.0.1 + minipass-fetch: 5.0.0 minizlib: 3.1.0 npm-package-arg: 13.0.2 - proc-log: 5.0.0 + proc-log: 6.0.0 transitivePeerDependencies: - supports-color @@ -17021,7 +16688,7 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.4.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -17103,7 +16770,7 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.3: {} + p-map@7.0.4: {} p-queue@6.6.2: dependencies: @@ -17144,18 +16811,18 @@ snapshots: pacote@21.0.4: dependencies: - '@npmcli/git': 7.0.0 + '@npmcli/git': 7.0.1 '@npmcli/installed-package-contents': 4.0.0 - '@npmcli/package-json': 7.0.1 - '@npmcli/promise-spawn': 9.0.0 - '@npmcli/run-script': 10.0.2 - cacache: 20.0.1 + '@npmcli/package-json': 7.0.4 + '@npmcli/promise-spawn': 9.0.1 + '@npmcli/run-script': 10.0.3 + cacache: 20.0.3 fs-minipass: 3.0.3 minipass: 7.1.2 npm-package-arg: 13.0.2 npm-packlist: 10.0.3 npm-pick-manifest: 11.0.3 - npm-registry-fetch: 19.1.0 + npm-registry-fetch: 19.1.1 proc-log: 6.0.0 promise-retry: 2.0.1 sigstore: 4.0.0 @@ -17214,7 +16881,7 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: lru-cache: 11.2.2 minipass: 7.1.2 @@ -17287,7 +16954,7 @@ snapshots: optionalDependencies: '@napi-rs/nice': 1.1.1 - pkce-challenge@5.0.0: {} + pkce-challenge@5.0.1: {} pkg-dir@8.0.0: dependencies: @@ -17399,7 +17066,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.19.0 + '@types/node': 22.19.1 long: 5.3.2 protractor@7.0.0: @@ -17487,14 +17154,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.27.0(bufferutil@4.0.9): + puppeteer-core@24.31.0(bufferutil@4.0.9): dependencies: - '@puppeteer/browsers': 2.10.12 - chromium-bidi: 10.5.1(devtools-protocol@0.0.1521046) + '@puppeteer/browsers': 2.10.13 + chromium-bidi: 11.0.0(devtools-protocol@0.0.1521046) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1521046 typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.3.8 + webdriver-bidi-protocol: 0.3.9 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-abort-controller @@ -17568,10 +17235,17 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.1: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 iconv-lite: 0.7.0 unpipe: 1.0.0 @@ -17762,7 +17436,7 @@ snapshots: rimraf@5.0.10: dependencies: - glob: 10.4.5 + glob: 10.5.0 rolldown@1.0.0-beta.51: dependencies: @@ -17791,14 +17465,6 @@ snapshots: semver: 7.7.3 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.53.2)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.53.2 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.2.3(rollup@4.53.3)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17807,40 +17473,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.0)(rollup@4.53.3): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.1)(rollup@4.53.3): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.53.3) rollup: 4.53.3 optionalDependencies: - '@types/node': 22.19.0 - - rollup@4.53.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.2 - '@rollup/rollup-android-arm64': 4.53.2 - '@rollup/rollup-darwin-arm64': 4.53.2 - '@rollup/rollup-darwin-x64': 4.53.2 - '@rollup/rollup-freebsd-arm64': 4.53.2 - '@rollup/rollup-freebsd-x64': 4.53.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 - '@rollup/rollup-linux-arm-musleabihf': 4.53.2 - '@rollup/rollup-linux-arm64-gnu': 4.53.2 - '@rollup/rollup-linux-arm64-musl': 4.53.2 - '@rollup/rollup-linux-loong64-gnu': 4.53.2 - '@rollup/rollup-linux-ppc64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-musl': 4.53.2 - '@rollup/rollup-linux-s390x-gnu': 4.53.2 - '@rollup/rollup-linux-x64-gnu': 4.53.2 - '@rollup/rollup-linux-x64-musl': 4.53.2 - '@rollup/rollup-openharmony-arm64': 4.53.2 - '@rollup/rollup-win32-arm64-msvc': 4.53.2 - '@rollup/rollup-win32-ia32-msvc': 4.53.2 - '@rollup/rollup-win32-x64-gnu': 4.53.2 - '@rollup/rollup-win32-x64-msvc': 4.53.2 - fsevents: 2.3.3 + '@types/node': 22.19.1 rollup@4.53.3: dependencies: @@ -17940,7 +17578,7 @@ snapshots: transitivePeerDependencies: - supports-color - sax@1.4.1: {} + sax@1.4.3: {} saxes@6.0.0: dependencies: @@ -18018,8 +17656,8 @@ snapshots: escape-html: 1.0.3 etag: 1.8.1 fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 + http-errors: 2.0.1 + mime-types: 3.0.2 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -18222,7 +17860,7 @@ snapshots: socks@2.8.7: dependencies: - ip-address: 10.0.1 + ip-address: 10.1.0 smart-buffer: 4.2.0 sonic-boom@3.8.1: @@ -18322,10 +17960,6 @@ snapshots: dependencies: minipass: 7.1.2 - ssri@12.0.0: - dependencies: - minipass: 7.1.2 - ssri@13.0.0: dependencies: minipass: 7.1.2 @@ -18494,7 +18128,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.5.0 + bare-fs: 4.5.1 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -18595,15 +18229,15 @@ snapshots: tldts-core@6.1.86: {} - tldts-core@7.0.17: {} + tldts-core@7.0.19: {} tldts@6.1.86: dependencies: tldts-core: 6.1.86 - tldts@7.0.17: + tldts@7.0.19: dependencies: - tldts-core: 7.0.17 + tldts-core: 7.0.19 tmp@0.0.30: dependencies: @@ -18630,7 +18264,7 @@ snapshots: tough-cookie@6.0.0: dependencies: - tldts: 7.0.17 + tldts: 7.0.19 tr46@0.0.3: {} @@ -18652,14 +18286,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.19.0)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.19.0 + '@types/node': 22.19.1 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18692,7 +18326,7 @@ snapshots: dependencies: '@tufjs/models': 4.0.0 debug: 4.4.3(supports-color@10.2.2) - make-fetch-happen: 15.0.2 + make-fetch-happen: 15.0.3 transitivePeerDependencies: - supports-color @@ -18721,7 +18355,7 @@ snapshots: dependencies: content-type: 1.0.5 media-typer: 1.1.0 - mime-types: 3.0.1 + mime-types: 3.0.2 typed-array-buffer@1.0.3: dependencies: @@ -18824,11 +18458,11 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 - unique-filename@4.0.0: + unique-filename@5.0.0: dependencies: - unique-slug: 5.0.0 + unique-slug: 6.0.0 - unique-slug@5.0.0: + unique-slug@6.0.0: dependencies: imurmurhash: 0.1.4 @@ -18842,9 +18476,9 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.4(browserslist@4.27.0): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -19038,7 +18672,7 @@ snapshots: web-vitals@4.2.4: {} - webdriver-bidi-protocol@0.3.8: {} + webdriver-bidi-protocol@0.3.9: {} webdriver-js-extender@2.1.0: dependencies: @@ -19068,8 +18702,8 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.103.0(esbuild@0.27.0)): dependencies: colorette: 2.0.20 - memfs: 4.50.0 - mime-types: 3.0.1 + memfs: 4.51.0 + mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.3 @@ -19137,7 +18771,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.27.0 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -19239,10 +18873,6 @@ snapshots: dependencies: isexe: 2.0.0 - which@5.0.0: - dependencies: - isexe: 3.1.1 - which@6.0.0: dependencies: isexe: 3.1.1 @@ -19319,7 +18949,7 @@ snapshots: xml2js@0.4.23: dependencies: - sax: 1.4.1 + sax: 1.4.3 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} @@ -19411,7 +19041,7 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.24.6(zod@3.25.76): + zod-to-json-schema@3.25.0(zod@3.25.76): dependencies: zod: 3.25.76 From df3135e22adfb6941c24cbc56243c2de6ffe1b59 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 26 Nov 2025 15:38:22 +0000 Subject: [PATCH 1885/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 1 - package.json | 2 +- pnpm-lock.yaml | 36 ++++++------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 11 files changed, 91 insertions(+), 92 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 28e43f9a5d98..43f71577f113 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@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@f47684669736e28fd77eab64e65b2952c8a948ee + - uses: angular/dev-infra/github-actions/branch-manager@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index faeefa80cbd7..30fbcad22919 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae 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@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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 876f5d23a7e8..2fa680b35016 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@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@f47684669736e28fd77eab64e65b2952c8a948ee + - uses: angular/dev-infra/github-actions/pull-request-labeling@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@f47684669736e28fd77eab64e65b2952c8a948ee + - uses: angular/dev-infra/github-actions/post-approval-changes@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 5d29b9ef151f..dab00bf96bc2 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@f47684669736e28fd77eab64e65b2952c8a948ee + - uses: angular/dev-infra/github-actions/feature-request@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index a1e0f8dad657..5e7bb8afa786 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@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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 1f4c9102c55a..45c74b55c4d5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/linting/licenses@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@f47684669736e28fd77eab64e65b2952c8a948ee + uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae - 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/MODULE.bazel b/MODULE.bazel index bc46e7ed3675..fada853c7a71 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "f47684669736e28fd77eab64e65b2952c8a948ee", + commit = "95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 6f5d406a120b..71d6aa83b976 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -28,7 +28,6 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.1/MODULE.bazel": "edcde75a1357952d3acedb6f3622614c87f730927d753af77b36c604ff407f0d", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/MODULE.bazel": "76526405d6a65dae45db16b8b4619b502063ac573d2a2ae0a90fddc7d3247288", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/source.json": "a03164e3f59a05d9a6d205a477ea49ba8ee141ab764a9f38b43e6302eb4fa2b9", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", diff --git a/package.json b/package.json index 444489a924f0..50b5209c4268 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@angular/forms": "21.1.0-next.0", "@angular/localize": "21.1.0-next.0", "@angular/material": "21.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23", "@angular/platform-browser": "21.1.0-next.0", "@angular/platform-server": "21.1.0-next.0", "@angular/router": "21.1.0-next.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b33bced5e3f6..e7edac604830 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.0.0 version: 21.0.0(103397789c5753d84dae18b75e29321d) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf(@modelcontextprotocol/sdk@1.22.0) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.22.0) '@angular/platform-browser': specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1060,9 +1060,9 @@ packages: '@angular/platform-browser': ^21.0.0 || ^22.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/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf} - version: 0.0.0-f47684669736e28fd77eab64e65b2952c8a948ee + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23} + version: 0.0.0-95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae hasBin: true '@angular/platform-browser@21.1.0-next.0': @@ -2982,8 +2982,8 @@ packages: resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==} engines: {node: '>= 20'} - '@octokit/graphql-schema@15.26.0': - resolution: {integrity: sha512-SoVbh+sXe9nsoweFbLT3tAk3XWYbYLs5ku05wij1zhyQ2U3lewdrhjo5Tb7lfaOGWNHSkPZT4uuPZp8neF7P7A==} + '@octokit/graphql-schema@15.26.1': + resolution: {integrity: sha512-RFDC2MpRBd4AxSRvUeBIVeBU7ojN/SxDfALUd7iVYOSeEK3gZaqR2MGOysj4Zh2xj2RY5fQAUT+Oqq7hWTraMA==} '@octokit/graphql@9.0.3': resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} @@ -3168,16 +3168,16 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.4': - resolution: {integrity: sha512-AUFsnxZB13ME7JKFis3/zo+Cz4qvYl7PzpzFFrw0bL75OY2+jeXcG3dbNXoVfpjaA3/lyZBtQmxE+Q6xbjyV5Q==} + '@pnpm/dependency-path@1001.1.5': + resolution: {integrity: sha512-powgYgNzuAdrZK+bx1Vxes5LRFp8ByUCcFsCeo0pQpyFbKpRDFF31FUVSE3CGs61WgL0lTBQr7ZoUSRc+BDrCw==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} - '@pnpm/types@1001.0.0': - resolution: {integrity: sha512-9P7I8Zv8hvAO81+D5KVmwveH4nmxhBNFEEeb77YYPV72bkyqzKTR6I8OGEs7TNZ6gPHufF+lIyBVEqO6SMFpJA==} + '@pnpm/types@1001.0.1': + resolution: {integrity: sha512-v5X09E6LkJFOOw9FgGITpAs7nQJtx6u3N0SNtyIC5mSeIC5SebMrrelpCz6QUTJvyXBEa1AWj2dZhYfLj59xhA==} engines: {node: '>=18.12'} '@protobufjs/aspromise@1.1.2': @@ -9517,7 +9517,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/e0bb3b2b000ff0c0c18a2020d5d42371bca51ecf(@modelcontextprotocol/sdk@1.22.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.22.0)': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -9527,14 +9527,14 @@ snapshots: '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 - '@octokit/graphql-schema': 15.26.0 + '@octokit/graphql-schema': 15.26.1 '@octokit/openapi-types': 27.0.0 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) '@octokit/request-error': 7.1.0 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 - '@pnpm/dependency-path': 1001.1.4 + '@pnpm/dependency-path': 1001.1.5 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 @@ -11628,7 +11628,7 @@ snapshots: '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 - '@octokit/graphql-schema@15.26.0': + '@octokit/graphql-schema@15.26.1': dependencies: graphql: 16.12.0 graphql-tag: 2.12.6(graphql@16.12.0) @@ -11785,17 +11785,17 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.4': + '@pnpm/dependency-path@1001.1.5': dependencies: '@pnpm/crypto.hash': 1000.2.1 - '@pnpm/types': 1001.0.0 + '@pnpm/types': 1001.0.1 semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 - '@pnpm/types@1001.0.0': {} + '@pnpm/types@1001.0.1': {} '@protobufjs/aspromise@1.1.2': {} diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 3b426b38a0b1..fa2a54763ab8 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#2878fc0d2c6113fada05b29be6da91ced3847c9d", - "@angular/cdk": "github:angular/cdk-builds#6e473060a35b6df6a12b7fb197c8a67a7a8a0b02", - "@angular/common": "github:angular/common-builds#a89361b4dacfcee83d3a72264d6c9a1ab602d096", - "@angular/compiler": "github:angular/compiler-builds#c290d42731c756178ecc028b16a91b2cbb4a3a52", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#11557a9b5b31089913d440943ebbfe8eb6fddcea", - "@angular/core": "github:angular/core-builds#193e2e76f88029a172d1d8d9291f2de216b98cef", - "@angular/forms": "github:angular/forms-builds#aa4662e34c7ad03e4a2d11c8fd6a38a3de070ac6", - "@angular/language-service": "github:angular/language-service-builds#59f2dcda2a5441d009f9284981a41c5025dbf36c", - "@angular/localize": "github:angular/localize-builds#3c2d26a645f1ebcc731c128b9821617aa0a33369", - "@angular/material": "github:angular/material-builds#3e8e6d9bfbfa1722703562fe3268aa9636c72d98", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#660a833bd9289bcc9942ef77ac84f3de2979fb09", - "@angular/platform-browser": "github:angular/platform-browser-builds#2ca084ee9f8d24901c5a21fbca3fa86e9863000b", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#9065e478bc50dcd1b52cb9d2d40be74e24fe8ce5", - "@angular/platform-server": "github:angular/platform-server-builds#10c1ac62473ee6d07f1816dd4704524b7b02139a", - "@angular/router": "github:angular/router-builds#0f8371f667fc71a2a2a8586d7dc76c5187393e98", - "@angular/service-worker": "github:angular/service-worker-builds#e62d179e6dd15e96735b502767846794e2ebddbb" + "@angular/animations": "github:angular/animations-builds#6f9d65fce6fd79c1361b0bec264aac9dae1196ab", + "@angular/cdk": "github:angular/cdk-builds#c7d1eb8184d9637e7f783dafedbbc3b674652539", + "@angular/common": "github:angular/common-builds#7dc0a930322af5809f988db78ea18ef0709a737e", + "@angular/compiler": "github:angular/compiler-builds#43e4f018d5ed0d1411b6cde06ae8b25631cd7f76", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#0ef671b2bbddcab0da991737cf31bacc3821d2ad", + "@angular/core": "github:angular/core-builds#0bd4dfa92b564cf99e3e511658feaa02491826d7", + "@angular/forms": "github:angular/forms-builds#fda84cc3aff9524e8c12b389a47f36cce1ed5cb4", + "@angular/language-service": "github:angular/language-service-builds#484c852f2d609eb919d1c0a78053f2b3a803f3ad", + "@angular/localize": "github:angular/localize-builds#d167e954fe0ac1632133a12488e98789744a8fd8", + "@angular/material": "github:angular/material-builds#c8eb0ab63e3a53ce36e36b9d6e827d3b5200327e", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#81f090a08ad978b4d7069b2d9028c8225bfebb8e", + "@angular/platform-browser": "github:angular/platform-browser-builds#130ddcdc00d42ebab49e441882202608d58c9518", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#70eac5bc41c662abd0c7a75d79e333028cecf2dd", + "@angular/platform-server": "github:angular/platform-server-builds#52cd67b17dd78e0b6a516271767bf7a82bed80fe", + "@angular/router": "github:angular/router-builds#0303dc8895ab6a72b6a5c7e4e5d7fcdcec9b12db", + "@angular/service-worker": "github:angular/service-worker-builds#446d147b31b5ecc82ceaacc362671d1839aa71a8" } } From 0d711ff7ed8cc369355708f8d1141934d05fb3d4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 26 Nov 2025 11:53:19 -0500 Subject: [PATCH 1886/2162] docs: release notes for the v21.0.1 release --- CHANGELOG.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 421d071c8412..fcfa66caab43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,47 @@ + + +# 21.0.1 (2025-11-26) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------- | +| [363496ae0](https://github.com/angular/angular-cli/commit/363496ae0d2850545274cd7fe4dc6902ccb64e10) | fix | ensure dependencies are resolved correctly for node modules directory check | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------- | +| [2f58705cb](https://github.com/angular/angular-cli/commit/2f58705cb5389019ceb49616a0e4ec3f92a558ed) | fix | add missing imports for lifecycle hooks in jasmine-vitest migration | +| [c973bb9ca](https://github.com/angular/angular-cli/commit/c973bb9cafc8d59b901a9d763347f4b615257867) | fix | add mock names to createSpyObj transformation | +| [4534c9848](https://github.com/angular/angular-cli/commit/4534c9848745eea516bdb58d86914252c35b5b9c) | fix | do not set `esModuleInterop` and `moduleResolution` when module is `preserve` | +| [16d898e75](https://github.com/angular/angular-cli/commit/16d898e7587036d68786cebe764da08304559d41) | fix | fix migration of `jasmine.clock().mockDate()` | +| [21c3eac72](https://github.com/angular/angular-cli/commit/21c3eac726c198132af760ffacc0dab9dfccb430) | fix | handle createSpyObj without base name on refactor-jasmine-vitest | +| [b8c99aa4c](https://github.com/angular/angular-cli/commit/b8c99aa4c909647285d1dcc61a2bb97a36100c63) | fix | improve safety of done callback transformation | +| [4a71e06fc](https://github.com/angular/angular-cli/commit/4a71e06fcafaadbcb820d285c0c186aa0e92f158) | fix | silently skip when the build target already uses one of the new builders | +| [2ffdae421](https://github.com/angular/angular-cli/commit/2ffdae42149b0f3da44f96271af1bca6d09b7ed5) | fix | support testRunner option in library schematic | +| [145de4a58](https://github.com/angular/angular-cli/commit/145de4a584ce8f72746704547282299306d9bafb) | fix | warn about loose matching in arrayWithExactContents | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | +| [d097df2d7](https://github.com/angular/angular-cli/commit/d097df2d7088dd2bb97643c3acfc1f977a767dd9) | fix | correct Vitest coverage path resolution for JSDOM on Windows | +| [cdb607ada](https://github.com/angular/angular-cli/commit/cdb607ada4bf9aaec6ed8aafd8826d782fd13109) | fix | correctly configure per-browser headless mode in Vitest runner | +| [244931ece](https://github.com/angular/angular-cli/commit/244931ece877a1cacd1cfce64314e04a52526f80) | fix | correctly invoke `isTTY` as a function | +| [54d542738](https://github.com/angular/angular-cli/commit/54d542738e23c275ac6827f19da92213c405f9e2) | fix | ensure correct URL joining for prerender routes | +| [a28b38bbe](https://github.com/angular/angular-cli/commit/a28b38bbeba0977e99142a15d1ecc77c15abc416) | fix | force dev-server to use HTTP/1.1 when using SSR with SSL | +| [59ff867f0](https://github.com/angular/angular-cli/commit/59ff867f0d2e7f7f88480deefa0ee470c037197a) | fix | normalize `--include` paths to posix | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| [03e231216](https://github.com/angular/angular-cli/commit/03e231216d3b8ba0de81da53a446eff0c701658d) | fix | handle `X-Forwarded-Prefix` and `APP_BASE_HREF` in redirects | +| [3cac01882](https://github.com/angular/angular-cli/commit/3cac0188271175e12cc238c6610b542f3ae14db3) | fix | prevent redirect loop with encoded query parameters | + + + # 20.3.12 (2025-11-25) From aeb3b3e06807a3f0803cc5f3df0bb4b0b58bb824 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 26 Nov 2025 12:12:55 -0500 Subject: [PATCH 1887/2162] release: cut the v21.1.0-next.0 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcfa66caab43..08dea589c42d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 21.1.0-next.0 (2025-11-26) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | +| [c3c9ac506](https://github.com/angular/angular-cli/commit/c3c9ac5067275461e2d8caefba81ac9701949776) | feat | Add MCP tools for building and running devservers | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------- | +| [36cf3afb4](https://github.com/angular/angular-cli/commit/36cf3afb485a01f86c4c90f136b38a3cf338e313) | feat | add browserMode option to jasmine-vitest schematic | +| [18cf6c51b](https://github.com/angular/angular-cli/commit/18cf6c51b72ce5c7f23012585ed992cf91cef5ed) | fix | add MCP configuration file to new workspaces | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | +| [ad99e00ad](https://github.com/angular/angular-cli/commit/ad99e00ad7edd17e369777c8d38b4137ea736121) | fix | simplify SSL handling for `ng serve` with SSR ([#31722](https://github.com/angular/angular-cli/pull/31722)) | + + + # 21.0.1 (2025-11-26) From e71a72ffdc426e26bfb4f0bb92e8f5795a621c18 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 19 Nov 2025 18:20:09 -0500 Subject: [PATCH 1888/2162] feat(@schematics/angular): generate detailed migration report for `refactor-jasmine-vitest` The `refactor-jasmine-vitest` schematic will now generate a detailed migration report (`jasmine-vitest-.md`). This report provides a summary of the migration process and lists all files requiring manual attention (TODOs), organized by file path and line number. This helps developers quickly identify and address manual migration tasks in large codebases. The report generation is enabled by default but can be disabled via the `report` option. For example: ``` ng generate jasmine-to-vitest --no-report ``` --- .../angular/refactor/jasmine-vitest/index.ts | 5 + .../refactor/jasmine-vitest/schema.json | 5 + .../transformers/jasmine-lifecycle.ts | 4 +- .../transformers/jasmine-matcher.ts | 14 +-- .../transformers/jasmine-misc.ts | 6 +- .../transformers/jasmine-spy.ts | 12 +-- .../jasmine-vitest/utils/refactor-reporter.ts | 94 ++++++++++++++++++- .../utils/refactor-reporter_spec.ts | 32 ++++++- 8 files changed, 147 insertions(+), 25 deletions(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index.ts b/packages/schematics/angular/refactor/jasmine-vitest/index.ts index 2498855c4607..0e2f2e35b9e7 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index.ts @@ -130,6 +130,11 @@ export default function (options: Schema): Rule { } } + if (options.report) { + const reportContent = reporter.generateReportContent(); + tree.create(`jasmine-vitest-${new Date().toISOString()}.md`, reportContent); + } + reporter.printSummary(options.verbose); }; } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/schema.json b/packages/schematics/angular/refactor/jasmine-vitest/schema.json index cb361280e473..4192a27367fd 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/schema.json +++ b/packages/schematics/angular/refactor/jasmine-vitest/schema.json @@ -35,6 +35,11 @@ "type": "boolean", "description": "Whether the tests are intended to run in browser mode. If true, the `toHaveClass` assertions are left as is because Vitest browser mode has such an assertion. Otherwise they're migrated to an equivalent assertion.", "default": false + }, + "report": { + "type": "boolean", + "description": "Whether to generate a summary report file (jasmine-vitest-.md) in the project root.", + "default": true } } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts index f2b60c35f327..9b0c61b6dca9 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle.ts @@ -85,7 +85,7 @@ export function transformPending( 'Converted `pending()` to a skipped test (`it.skip`).', ); const category = 'pending'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, bodyNode); addTodoComment(replacement, category); ts.addSyntheticLeadingComment( replacement, @@ -412,7 +412,7 @@ export function transformDoneCallback(node: ts.Node, refactorCtx: RefactorContex `Found unhandled usage of \`${doneIdentifier.text}\` callback. Skipping transformation.`, ); const category = 'unhandled-done-usage'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); return node; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts index 5de173bcd52b..05c137100271 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher.ts @@ -56,7 +56,7 @@ export function transformSyntacticSugarMatchers( if (matcherName === 'toHaveSpyInteractions') { const category = 'toHaveSpyInteractions'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); return node; @@ -64,7 +64,7 @@ export function transformSyntacticSugarMatchers( if (matcherName === 'toThrowMatching') { const category = 'toThrowMatching'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category, { name: matcherName }); return node; @@ -304,11 +304,11 @@ export function transformExpectAsync( if (matcherName) { if (matcherName === 'toBePending') { const category = 'toBePending'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); } else { const category = 'unsupported-expect-async-matcher'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category, { name: matcherName }); } } @@ -418,7 +418,7 @@ export function transformArrayWithExactContents( if (!ts.isArrayLiteralExpression(argument.arguments[0])) { const category = 'arrayWithExactContents-dynamic-variable'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); return node; @@ -455,7 +455,7 @@ export function transformArrayWithExactContents( const containingStmt = ts.factory.createExpressionStatement(containingCall); const category = 'arrayWithExactContents-check'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(lengthStmt, category); return [lengthStmt, containingStmt]; @@ -615,7 +615,7 @@ export function transformExpectNothing( reporter.reportTransformation(sourceFile, node, 'Removed `expect().nothing()` statement.'); const category = 'expect-nothing'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(replacement, category); ts.addSyntheticLeadingComment( replacement, diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts index 058d015c9773..2872a3f7503e 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc.ts @@ -154,7 +154,7 @@ export function transformGlobalFunctions( `Found unsupported global function \`${functionName}\`.`, ); const category = 'unsupported-global-function'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category, { name: functionName }); } @@ -187,7 +187,7 @@ export function transformUnsupportedJasmineCalls( node, `Found unsupported call \`jasmine.${methodName}\`.`, ); - reporter.recordTodo(methodName); + reporter.recordTodo(methodName, sourceFile, node); addTodoComment(node, methodName); } @@ -238,7 +238,7 @@ export function transformUnknownJasmineProperties( `Found unknown jasmine property \`jasmine.${propName}\`.`, ); const category = 'unknown-jasmine-property'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category, { name: propName }); } } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts index 39c5802ea1dc..f019dbb53099 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts @@ -153,7 +153,7 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. } default: { const category = 'unsupported-spy-strategy'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category, { name: strategyName }); break; } @@ -202,7 +202,7 @@ export function transformSpies(node: ts.Node, refactorCtx: RefactorContext): ts. 'Found unsupported `jasmine.spyOnAllFunctions()`.', ); const category = 'spyOnAllFunctions'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); return node; @@ -236,7 +236,7 @@ export function transformCreateSpyObj( if (node.arguments.length < 2 && hasBaseName) { const category = 'createSpyObj-single-argument'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); return node; @@ -248,7 +248,7 @@ export function transformCreateSpyObj( properties = createSpyObjWithObject(methods, baseName); } else { const category = 'createSpyObj-dynamic-variable'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); return node; @@ -259,7 +259,7 @@ export function transformCreateSpyObj( properties.push(...(propertiesArg.properties as unknown as ts.PropertyAssignment[])); } else { const category = 'createSpyObj-dynamic-property-map'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); } } @@ -486,7 +486,7 @@ export function transformSpyCallInspection(node: ts.Node, refactorCtx: RefactorC node.parent.name.text !== 'args' ) { const category = 'mostRecent-without-args'; - reporter.recordTodo(category); + reporter.recordTodo(category, sourceFile, node); addTodoComment(node, category); } diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts index 737abdc0ef94..63b924d12139 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; import { TodoCategory } from './todo-notes'; @@ -15,8 +14,9 @@ export class RefactorReporter { private filesTransformed = 0; private readonly todos = new Map(); private readonly verboseLogs = new Map(); + private readonly fileTodos = new Map(); - constructor(private logger: logging.LoggerApi) {} + constructor(private logger: { info(message: string): void; warn(message: string): void }) {} get hasTodos(): boolean { return this.todos.size > 0; @@ -30,14 +30,27 @@ export class RefactorReporter { this.filesTransformed++; } - recordTodo(category: TodoCategory): void { + recordTodo(category: TodoCategory, sourceFile: ts.SourceFile, node: ts.Node): void { this.todos.set(category, (this.todos.get(category) ?? 0) + 1); + + const { line } = ts.getLineAndCharacterOfPosition( + sourceFile, + ts.getOriginalNode(node).getStart(sourceFile), + ); + const filePath = sourceFile.fileName; + + let fileTodos = this.fileTodos.get(filePath); + if (!fileTodos) { + fileTodos = []; + this.fileTodos.set(filePath, fileTodos); + } + fileTodos.push({ category, line: line + 1 }); } reportTransformation(sourceFile: ts.SourceFile, node: ts.Node, message: string): void { const { line } = ts.getLineAndCharacterOfPosition( sourceFile, - ts.getOriginalNode(node).getStart(), + ts.getOriginalNode(node).getStart(sourceFile), ); const filePath = sourceFile.fileName; @@ -49,6 +62,79 @@ export class RefactorReporter { logs.push(`L${line + 1}: ${message}`); } + generateReportContent(): string { + const lines: string[] = []; + lines.push('# Jasmine to Vitest Refactoring Report'); + lines.push(''); + lines.push(`Date: ${new Date().toISOString()}`); + lines.push(''); + + const summaryEntries = [ + { label: 'Files Scanned', value: this.filesScanned }, + { label: 'Files Transformed', value: this.filesTransformed }, + { label: 'Files Skipped', value: this.filesScanned - this.filesTransformed }, + { label: 'Total TODOs', value: [...this.todos.values()].reduce((a, b) => a + b, 0) }, + ]; + + const firstColPad = Math.max(...summaryEntries.map(({ label }) => label.length)); + const secondColPad = 5; + + lines.push('## Summary'); + lines.push(''); + lines.push(`| ${' '.padEnd(firstColPad)} | ${'Count'.padStart(secondColPad)} |`); + lines.push(`|:${'-'.repeat(firstColPad + 1)}|${'-'.repeat(secondColPad + 1)}:|`); + for (const { label, value } of summaryEntries) { + lines.push(`| ${label.padEnd(firstColPad)} | ${String(value).padStart(secondColPad)} |`); + } + lines.push(''); + + if (this.todos.size > 0) { + lines.push('## TODO Overview'); + lines.push(''); + const todoEntries = [...this.todos.entries()]; + const firstColPad = Math.max( + 'Category'.length, + ...todoEntries.map(([category]) => category.length), + ); + const secondColPad = 5; + + lines.push(`| ${'Category'.padEnd(firstColPad)} | ${'Count'.padStart(secondColPad)} |`); + lines.push(`|:${'-'.repeat(firstColPad + 1)}|${'-'.repeat(secondColPad + 1)}:|`); + for (const [category, count] of todoEntries) { + lines.push(`| ${category.padEnd(firstColPad)} | ${String(count).padStart(secondColPad)} |`); + } + lines.push(''); + } + + if (this.fileTodos.size > 0) { + lines.push('## Files Requiring Manual Attention'); + lines.push(''); + // Sort files alphabetically + const sortedFiles = [...this.fileTodos.keys()].sort(); + + for (const filePath of sortedFiles) { + const relativePath = filePath.startsWith('/') ? filePath.substring(1) : filePath; + lines.push(`### [\`${relativePath}\`](./${relativePath})`); + const todos = this.fileTodos.get(filePath); + if (todos) { + // Sort todos by line number + todos.sort((a, b) => a.line - b.line); + + for (const todo of todos) { + lines.push(`- [L${todo.line}](./${relativePath}#L${todo.line}): ${todo.category}`); + } + } + lines.push(''); + } + } else { + lines.push('## No Manual Changes Required'); + lines.push(''); + lines.push('All identified patterns were successfully transformed.'); + } + + return lines.join('\n'); + } + printSummary(verbose = false): void { if (verbose && this.verboseLogs.size > 0) { this.logger.info('Detailed Transformation Log:'); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts index 10053135a10e..184dca31f9c7 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/refactor-reporter_spec.ts @@ -7,11 +7,14 @@ */ import { logging } from '@angular-devkit/core'; +import ts from '../../../third_party/github.com/Microsoft/TypeScript/lib/typescript'; import { RefactorReporter } from './refactor-reporter'; describe('RefactorReporter', () => { let logger: logging.LoggerApi; let reporter: RefactorReporter; + let sourceFile: ts.SourceFile; + let node: ts.Node; beforeEach(() => { logger = { @@ -19,6 +22,8 @@ describe('RefactorReporter', () => { warn: jasmine.createSpy('warn'), } as unknown as logging.LoggerApi; reporter = new RefactorReporter(logger); + sourceFile = ts.createSourceFile('/test.spec.ts', 'statement;', ts.ScriptTarget.Latest); + node = sourceFile.statements[0]; }); it('should correctly increment scanned and transformed files', () => { @@ -34,9 +39,9 @@ describe('RefactorReporter', () => { }); it('should record and count todos by category', () => { - reporter.recordTodo('pending'); - reporter.recordTodo('spyOnAllFunctions'); - reporter.recordTodo('pending'); + reporter.recordTodo('pending', sourceFile, node); + reporter.recordTodo('spyOnAllFunctions', sourceFile, node); + reporter.recordTodo('pending', sourceFile, node); reporter.printSummary(); expect(logger.warn).toHaveBeenCalledWith('- 3 TODO(s) added for manual review:'); @@ -48,4 +53,25 @@ describe('RefactorReporter', () => { reporter.printSummary(); expect(logger.warn).not.toHaveBeenCalled(); }); + + it('should generate a markdown report with TODOs', () => { + reporter.incrementScannedFiles(); + reporter.recordTodo('pending', sourceFile, node); + + const report = reporter.generateReportContent(); + + expect(report).toContain('# Jasmine to Vitest Refactoring Report'); + expect(report).toContain('## Summary'); + expect(report).toContain('| | Count |'); + expect(report).toContain('|:------------------|------:|'); + expect(report).toContain('| Files Scanned | 1 |'); + expect(report).toContain('| Total TODOs | 1 |'); + expect(report).toContain('## TODO Overview'); + expect(report).toContain('| Category | Count |'); + expect(report).toContain('|:---------|------:|'); + expect(report).toContain('| pending | 1 |'); + expect(report).toContain('## Files Requiring Manual Attention'); + expect(report).toContain('### [`test.spec.ts`](./test.spec.ts)'); + expect(report).toContain('- [L1](./test.spec.ts#L1): pending'); + }); }); From 47ace2a7c8f8d358a50b6083ffc99a6442aaa30b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 24 Nov 2025 10:58:37 -0500 Subject: [PATCH 1889/2162] refactor(@angular/cli): modularize `find_examples` MCP tool The `find_examples` MCP tool has been refactored to improve maintainability and organization. The original `examples.ts` file was broken down into several smaller, single-responsibility modules within `packages/angular/cli/src/commands/mcp/tools/examples/`. --- .../cli/src/commands/mcp/mcp-server.ts | 2 +- .../cli/src/commands/mcp/tools/examples.ts | 755 ------------------ .../mcp/tools/examples/database-discovery.ts | 107 +++ .../commands/mcp/tools/examples/database.ts | 142 ++++ .../src/commands/mcp/tools/examples/index.ts | 132 +++ .../mcp/tools/examples/query-escaper.ts | 66 ++ .../query-escaper_spec.ts} | 2 +- .../mcp/tools/examples/runtime-database.ts | 198 +++++ .../commands/mcp/tools/examples/schemas.ts | 132 +++ .../src/commands/mcp/tools/examples/utils.ts | 31 + .../e2e/tests/mcp/find-examples-basic.ts | 48 ++ 11 files changed, 858 insertions(+), 757 deletions(-) delete mode 100644 packages/angular/cli/src/commands/mcp/tools/examples.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/database.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/index.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/query-escaper.ts rename packages/angular/cli/src/commands/mcp/tools/{examples_spec.ts => examples/query-escaper_spec.ts} (97%) create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/schemas.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/utils.ts create mode 100644 tests/legacy-cli/e2e/tests/mcp/find-examples-basic.ts diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index dfcd162a44f7..27ef2880336c 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -19,7 +19,7 @@ import { START_DEVSERVER_TOOL } from './tools/devserver/start-devserver'; import { STOP_DEVSERVER_TOOL } from './tools/devserver/stop-devserver'; import { WAIT_FOR_DEVSERVER_BUILD_TOOL } from './tools/devserver/wait-for-devserver-build'; import { DOC_SEARCH_TOOL } from './tools/doc-search'; -import { FIND_EXAMPLE_TOOL } from './tools/examples'; +import { FIND_EXAMPLE_TOOL } from './tools/examples/index'; import { MODERNIZE_TOOL } from './tools/modernize'; import { ZONELESS_MIGRATION_TOOL } from './tools/onpush-zoneless-migration/zoneless-migration'; import { LIST_PROJECTS_TOOL } from './tools/projects'; diff --git a/packages/angular/cli/src/commands/mcp/tools/examples.ts b/packages/angular/cli/src/commands/mcp/tools/examples.ts deleted file mode 100644 index b05b2b4edf97..000000000000 --- a/packages/angular/cli/src/commands/mcp/tools/examples.ts +++ /dev/null @@ -1,755 +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 { glob, readFile, stat } from 'node:fs/promises'; -import { createRequire } from 'node:module'; -import { dirname, isAbsolute, join, relative, resolve } from 'node:path'; -import type { DatabaseSync, SQLInputValue } from 'node:sqlite'; -import { z } from 'zod'; -import { type McpToolContext, declareTool } from './tool-registry'; - -const findExampleInputSchema = z.object({ - workspacePath: z - .string() - .optional() - .describe( - 'The absolute path to the `angular.json` file for the workspace. This is used to find the ' + - 'version-specific code examples that correspond to the installed version of the ' + - 'Angular framework. You **MUST** get this path from the `list_projects` tool. ' + - 'If omitted, the tool will search the generic code examples bundled with the CLI.', - ), - query: z - .string() - .describe( - `The primary, conceptual search query. This should capture the user's main goal or question ` + - `(e.g., 'lazy loading a route' or 'how to use signal inputs'). The query will be processed ` + - 'by a powerful full-text search engine.\n\n' + - 'Key Syntax Features (see https://www.sqlite.org/fts5.html for full documentation):\n' + - ' - AND (default): Space-separated terms are combined with AND.\n' + - ' - Example: \'standalone component\' (finds results with both "standalone" and "component")\n' + - ' - OR: Use the OR operator to find results with either term.\n' + - " - Example: 'validation OR validator'\n" + - ' - NOT: Use the NOT operator to exclude terms.\n' + - " - Example: 'forms NOT reactive'\n" + - ' - Grouping: Use parentheses () to group expressions.\n' + - " - Example: '(validation OR validator) AND forms'\n" + - ' - Phrase Search: Use double quotes "" for exact phrases.\n' + - ' - Example: \'"template-driven forms"\'\n' + - ' - Prefix Search: Use an asterisk * for prefix matching.\n' + - ' - Example: \'rout*\' (matches "route", "router", "routing")', - ), - keywords: z - .array(z.string()) - .optional() - .describe( - 'A list of specific, exact keywords to narrow the search. Use this for precise terms like ' + - 'API names, function names, or decorators (e.g., `ngFor`, `trackBy`, `inject`).', - ), - required_packages: z - .array(z.string()) - .optional() - .describe( - "A list of NPM packages that an example must use. Use this when the user's request is " + - 'specific to a feature within a certain package (e.g., if the user asks about `ngModel`, ' + - 'you should filter by `@angular/forms`).', - ), - related_concepts: z - .array(z.string()) - .optional() - .describe( - 'A list of high-level concepts to filter by. Use this to find examples related to broader ' + - 'architectural ideas or patterns (e.g., `signals`, `dependency injection`, `routing`).', - ), - includeExperimental: z - .boolean() - .optional() - .default(false) - .describe( - 'By default, this tool returns only production-safe examples. Set this to `true` **only if** ' + - 'the user explicitly asks for a bleeding-edge feature or if a stable solution to their ' + - 'problem cannot be found. If you set this to `true`, you **MUST** preface your answer by ' + - 'warning the user that the example uses experimental APIs that are not suitable for production.', - ), -}); - -type FindExampleInput = z.infer; - -const findExampleOutputSchema = z.object({ - examples: z.array( - z.object({ - title: z - .string() - .describe( - 'The title of the example. Use this as a heading when presenting the example to the user.', - ), - summary: z - .string() - .describe( - "A one-sentence summary of the example's purpose. Use this to help the user decide " + - 'if the example is relevant to them.', - ), - keywords: z - .array(z.string()) - .optional() - .describe( - 'A list of keywords for the example. You can use these to explain why this example ' + - "was a good match for the user's query.", - ), - required_packages: z - .array(z.string()) - .optional() - .describe( - 'A list of NPM packages required for the example to work. Before presenting the code, ' + - 'you should inform the user if any of these packages need to be installed.', - ), - related_concepts: z - .array(z.string()) - .optional() - .describe( - 'A list of related concepts. You can suggest these to the user as topics for ' + - 'follow-up questions.', - ), - related_tools: z - .array(z.string()) - .optional() - .describe( - 'A list of related MCP tools. You can suggest these as potential next steps for the user.', - ), - content: z - .string() - .describe( - 'A complete, self-contained Angular code example in Markdown format. This should be ' + - 'presented to the user inside a markdown code block.', - ), - snippet: z - .string() - .optional() - .describe( - 'A contextual snippet from the content showing the matched search term. This field is ' + - 'critical for efficiently evaluating a result`s relevance. It enables two primary ' + - 'workflows:\n\n' + - '1. For direct questions: You can internally review snippets to select the single best ' + - 'result before generating a comprehensive answer from its full `content`.\n' + - '2. For ambiguous or exploratory questions: You can present a summary of titles and ' + - 'snippets to the user, allowing them to guide the next step.', - ), - }), - ), -}); - -export const FIND_EXAMPLE_TOOL = declareTool({ - name: 'find_examples', - title: 'Find Angular Code Examples', - description: ` - -Augments your knowledge base with a curated database of official, best-practice code examples, -focusing on **modern, new, and recently updated** Angular features. This tool acts as a RAG -(Retrieval-Augmented Generation) source, providing ground-truth information on the latest Angular -APIs and patterns. You **MUST** use it to understand and apply current standards when working with -new or evolving features. - - -* **Knowledge Augmentation:** Learning about new or updated Angular features (e.g., query: 'signal input' or 'deferrable views'). -* **Modern Implementation:** Finding the correct modern syntax for features - (e.g., query: 'functional route guard' or 'http client with fetch'). -* **Refactoring to Modern Patterns:** Upgrading older code by finding examples of new syntax - (e.g., query: 'built-in control flow' to replace "*ngIf"). -* **Advanced Filtering:** Combining a full-text search with filters to narrow results. - (e.g., query: 'forms', required_packages: ['@angular/forms'], keywords: ['validation']) - - -* **Project-Specific Use (Recommended):** For tasks inside a user's project, you **MUST** provide the - \`workspacePath\` argument to get examples that match the project's Angular version. Get this - path from \`list_projects\`. -* **General Use:** If no project context is available (e.g., for general questions or learning), - you can call the tool without the \`workspacePath\` argument. It will return the latest - generic examples. -* **Tool Selection:** This database primarily contains examples for new and recently updated Angular - features. For established, core features, the main documentation (via the - \`search_documentation\` tool) may be a better source of information. -* The examples in this database are the single source of truth for modern Angular coding patterns. -* The search query uses a powerful full-text search syntax (FTS5). Refer to the 'query' - parameter description for detailed syntax rules and examples. -* You can combine the main 'query' with optional filters like 'keywords', 'required_packages', - and 'related_concepts' to create highly specific searches. -`, - inputSchema: findExampleInputSchema.shape, - outputSchema: findExampleOutputSchema.shape, - isReadOnly: true, - isLocalOnly: true, - shouldRegister: ({ logger }) => { - // sqlite database support requires Node.js 22.16+ - const [nodeMajor, nodeMinor] = process.versions.node.split('.', 2).map(Number); - if (nodeMajor < 22 || (nodeMajor === 22 && nodeMinor < 16)) { - logger.warn( - `MCP tool 'find_examples' requires Node.js 22.16 (or higher). ` + - ' Registration of this tool has been skipped.', - ); - - return false; - } - - return true; - }, - factory: createFindExampleHandler, -}); - -/** - * A list of known Angular packages that may contain example databases. - * The tool will attempt to resolve and load example databases from these packages. - */ -const KNOWN_EXAMPLE_PACKAGES = ['@angular/core', '@angular/aria', '@angular/forms']; - -/** - * Attempts to find version-specific example databases from the user's installed - * versions of known Angular packages. It looks for a custom `angular` metadata property in each - * package's `package.json` to locate the database. - * - * @example A sample `package.json` `angular` field: - * ```json - * { - * "angular": { - * "examples": { - * "format": "sqlite", - * "path": "./resources/code-examples.db" - * } - * } - * } - * ``` - * - * @param workspacePath The absolute path to the user's `angular.json` file. - * @param logger The MCP tool context logger for reporting warnings. - * @returns A promise that resolves to an array of objects, each containing a database path and source. - */ -async function getVersionSpecificExampleDatabases( - workspacePath: string, - logger: McpToolContext['logger'], -): Promise<{ dbPath: string; source: string }[]> { - const workspaceRequire = createRequire(workspacePath); - const databases: { dbPath: string; source: string }[] = []; - - for (const packageName of KNOWN_EXAMPLE_PACKAGES) { - // 1. Resolve the path to package.json - let pkgJsonPath: string; - try { - pkgJsonPath = workspaceRequire.resolve(`${packageName}/package.json`); - } catch (e) { - // This is not a warning because the user may not have all known packages installed. - continue; - } - - // 2. Read and parse package.json, then find the database. - try { - const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); - const pkgJson = JSON.parse(pkgJsonContent); - const examplesInfo = pkgJson['angular']?.examples; - - if ( - examplesInfo && - examplesInfo.format === 'sqlite' && - typeof examplesInfo.path === 'string' - ) { - const packageDirectory = dirname(pkgJsonPath); - const dbPath = resolve(packageDirectory, examplesInfo.path); - - // Ensure the resolved database path is within the package boundary. - const relativePath = relative(packageDirectory, dbPath); - if (relativePath.startsWith('..') || isAbsolute(relativePath)) { - logger.warn( - `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + - `The path '${examplesInfo.path}' escapes the package boundary. ` + - 'This database will be skipped.', - ); - continue; - } - - // Check the file size to prevent reading a very large file. - const stats = await stat(dbPath); - if (stats.size > 10 * 1024 * 1024) { - // 10MB - logger.warn( - `The example database at '${dbPath}' is larger than 10MB (${stats.size} bytes). ` + - 'This is unexpected and the file will not be used.', - ); - continue; - } - - const source = `package ${packageName}@${pkgJson.version}`; - databases.push({ dbPath, source }); - } - } catch (e) { - logger.warn( - `Failed to read or parse version-specific examples metadata referenced in '${pkgJsonPath}': ${ - e instanceof Error ? e.message : e - }.`, - ); - } - } - - return databases; -} - -async function createFindExampleHandler({ logger, exampleDatabasePath }: McpToolContext) { - const runtimeDb = process.env['NG_MCP_EXAMPLES_DIR'] - ? await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR']) - : undefined; - - suppressSqliteWarning(); - - return async (input: FindExampleInput) => { - // If the dev-time override is present, use it and bypass all other logic. - if (runtimeDb) { - return queryDatabase([runtimeDb], input); - } - - const resolvedDbs: { path: string; source: string }[] = []; - - // First, try to get all available version-specific guides. - if (input.workspacePath) { - const versionSpecificDbs = await getVersionSpecificExampleDatabases( - input.workspacePath, - logger, - ); - for (const db of versionSpecificDbs) { - resolvedDbs.push({ path: db.dbPath, source: db.source }); - } - } - - // If no version-specific guides were found for any reason, fall back to the bundled version. - if (resolvedDbs.length === 0 && exampleDatabasePath) { - resolvedDbs.push({ path: exampleDatabasePath, source: 'bundled' }); - } - - if (resolvedDbs.length === 0) { - // This should be prevented by the registration logic in mcp-server.ts - throw new Error('No example databases are available.'); - } - - const { DatabaseSync } = await import('node:sqlite'); - const dbConnections: DatabaseSync[] = []; - - for (const { path, source } of resolvedDbs) { - const db = new DatabaseSync(path, { readOnly: true }); - try { - validateDatabaseSchema(db, source); - dbConnections.push(db); - } catch (e) { - logger.warn((e as Error).message); - // If a database is invalid, we should not query it, but we should not fail the whole tool. - // We will just skip this database and try to use the others. - continue; - } - } - - if (dbConnections.length === 0) { - throw new Error('All available example databases were invalid. Cannot perform query.'); - } - - return queryDatabase(dbConnections, input); - }; -} - -function queryDatabase(dbs: DatabaseSync[], input: FindExampleInput) { - const { query, keywords, required_packages, related_concepts, includeExperimental } = input; - - // Build the query dynamically - const params: SQLInputValue[] = []; - let sql = - `SELECT e.title, e.summary, e.keywords, e.required_packages, e.related_concepts, e.related_tools, e.content, ` + - // The `snippet` function generates a contextual snippet of the matched text. - // Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size. - "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet, " + - // The `bm25` function returns the relevance score of the match. The weights - // assigned to each column boost the ranking of documents where the search - // term appears in a more important field. - // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content - 'bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0) AS rank ' + - 'FROM examples e JOIN examples_fts ON e.id = examples_fts.rowid'; - const whereClauses = []; - - // FTS query - if (query) { - whereClauses.push('examples_fts MATCH ?'); - params.push(escapeSearchQuery(query)); - } - - // JSON array filters - const addJsonFilter = (column: string, values: string[] | undefined) => { - if (values?.length) { - for (const value of values) { - whereClauses.push(`e.${column} LIKE ?`); - params.push(`%"${value}"%`); - } - } - }; - - addJsonFilter('keywords', keywords); - addJsonFilter('required_packages', required_packages); - addJsonFilter('related_concepts', related_concepts); - - if (!includeExperimental) { - whereClauses.push('e.experimental = 0'); - } - - if (whereClauses.length > 0) { - sql += ` WHERE ${whereClauses.join(' AND ')}`; - } - - // Query database and return results - const examples = []; - const textContent = []; - - for (const db of dbs) { - const queryStatement = db.prepare(sql); - for (const exampleRecord of queryStatement.all(...params)) { - const record = exampleRecord as Record; - const example = { - title: record['title'] as string, - summary: record['summary'] as string, - keywords: JSON.parse((record['keywords'] as string) || '[]') as string[], - required_packages: JSON.parse((record['required_packages'] as string) || '[]') as string[], - related_concepts: JSON.parse((record['related_concepts'] as string) || '[]') as string[], - related_tools: JSON.parse((record['related_tools'] as string) || '[]') as string[], - content: record['content'] as string, - snippet: record['snippet'] as string, - rank: record['rank'] as number, - }; - examples.push(example); - } - } - - // Order the combined results by relevance. - // The `bm25` algorithm returns a smaller number for a more relevant match. - examples.sort((a, b) => a.rank - b.rank); - - // The `rank` field is an internal implementation detail for sorting and should not be - // returned to the user. We create a new array of examples without the `rank`. - const finalExamples = examples.map(({ rank, ...rest }) => rest); - - for (const example of finalExamples) { - // Also create a more structured text output - let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`; - if (example.snippet) { - text += `\n**Snippet:** ${example.snippet}`; - } - text += `\n\n---\n\n${example.content}`; - textContent.push({ type: 'text' as const, text }); - } - - return { - content: textContent, - structuredContent: { examples: finalExamples }, - }; -} - -/** - * Escapes a search query for FTS5 by tokenizing and quoting terms. - * - * This function processes a raw search string and prepares it for an FTS5 full-text search. - * It correctly handles quoted phrases, logical operators (AND, OR, NOT), parentheses, - * and prefix searches (ending with an asterisk), ensuring that individual search - * terms are properly quoted to be treated as literals by the search engine. - * This is primarily intended to avoid unintentional usage of FTS5 query syntax by consumers. - * - * @param query The raw search query string. - * @returns A sanitized query string suitable for FTS5. - */ -export function escapeSearchQuery(query: string): string { - // This regex tokenizes the query string into parts: - // 1. Quoted phrases (e.g., "foo bar") - // 2. Parentheses ( and ) - // 3. FTS5 operators (AND, OR, NOT, NEAR) - // 4. Words, which can include a trailing asterisk for prefix search (e.g., foo*) - const tokenizer = /"([^"]*)"|([()])|\b(AND|OR|NOT|NEAR)\b|([^\s()]+)/g; - let match; - const result: string[] = []; - let lastIndex = 0; - - while ((match = tokenizer.exec(query)) !== null) { - // Add any whitespace or other characters between tokens - if (match.index > lastIndex) { - result.push(query.substring(lastIndex, match.index)); - } - - const [, quoted, parenthesis, operator, term] = match; - - if (quoted !== undefined) { - // It's a quoted phrase, keep it as is. - result.push(`"${quoted}"`); - } else if (parenthesis) { - // It's a parenthesis, keep it as is. - result.push(parenthesis); - } else if (operator) { - // It's an operator, keep it as is. - result.push(operator); - } else if (term) { - // It's a term that needs to be quoted. - if (term.endsWith('*')) { - result.push(`"${term.slice(0, -1)}"*`); - } else { - result.push(`"${term}"`); - } - } - lastIndex = tokenizer.lastIndex; - } - - // Add any remaining part of the string - if (lastIndex < query.length) { - result.push(query.substring(lastIndex)); - } - - return result.join(''); -} - -/** - * Suppresses the experimental warning emitted by Node.js for the `node:sqlite` module. - * - * This is a workaround to prevent the console from being cluttered with warnings - * about the experimental status of the SQLite module, which is used by this tool. - */ -function suppressSqliteWarning() { - const originalProcessEmit = process.emit; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - process.emit = function (event: string, error?: unknown): any { - if ( - event === 'warning' && - error instanceof Error && - error.name === 'ExperimentalWarning' && - error.message.includes('SQLite') - ) { - return false; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any, prefer-rest-params - return originalProcessEmit.apply(process, arguments as any); - }; -} - -/** - * A simple YAML front matter parser. - * - * This function extracts the YAML block enclosed by `---` at the beginning of a string - * and parses it into a JavaScript object. It is not a full YAML parser and only - * supports simple key-value pairs and string arrays. - * - * @param content The string content to parse. - * @returns A record containing the parsed front matter data. - */ -function parseFrontmatter(content: string): Record { - const match = content.match(/^---\r?\n(.*?)\r?\n---/s); - if (!match) { - return {}; - } - - const frontmatter = match[1]; - const data: Record = {}; - const lines = frontmatter.split(/\r?\n/); - - let currentKey = ''; - let isArray = false; - const arrayValues: string[] = []; - - for (const line of lines) { - const keyValueMatch = line.match(/^([^:]+):\s*(.*)/); - if (keyValueMatch) { - if (currentKey && isArray) { - data[currentKey] = arrayValues.slice(); - arrayValues.length = 0; - } - - const [, key, value] = keyValueMatch; - currentKey = key.trim(); - isArray = value.trim() === ''; - - if (!isArray) { - const trimmedValue = value.trim(); - if (trimmedValue === 'true') { - data[currentKey] = true; - } else if (trimmedValue === 'false') { - data[currentKey] = false; - } else { - data[currentKey] = trimmedValue; - } - } - } else { - const arrayItemMatch = line.match(/^\s*-\s*(.*)/); - if (arrayItemMatch && currentKey && isArray) { - let value = arrayItemMatch[1].trim(); - // Unquote if the value is quoted. - if ( - (value.startsWith("'") && value.endsWith("'")) || - (value.startsWith('"') && value.endsWith('"')) - ) { - value = value.slice(1, -1); - } - arrayValues.push(value); - } - } - } - - if (currentKey && isArray) { - data[currentKey] = arrayValues; - } - - return data; -} - -async function setupRuntimeExamples(examplesPath: string): Promise { - const { DatabaseSync } = await import('node:sqlite'); - const db = new DatabaseSync(':memory:'); - - // Create a relational table to store the structured example data. - db.exec(` - CREATE TABLE metadata ( - key TEXT PRIMARY KEY NOT NULL, - value TEXT NOT NULL - ); - `); - - db.exec(` - INSERT INTO metadata (key, value) VALUES - ('schema_version', '1'), - ('created_at', '${new Date().toISOString()}'); - `); - - db.exec(` - CREATE TABLE examples ( - id INTEGER PRIMARY KEY, - title TEXT NOT NULL, - summary TEXT NOT NULL, - keywords TEXT, - required_packages TEXT, - related_concepts TEXT, - related_tools TEXT, - experimental INTEGER NOT NULL DEFAULT 0, - content TEXT NOT NULL - ); - `); - - // Create an FTS5 virtual table to provide full-text search capabilities. - db.exec(` - CREATE VIRTUAL TABLE examples_fts USING fts5( - title, - summary, - keywords, - required_packages, - related_concepts, - related_tools, - content, - content='examples', - content_rowid='id', - tokenize = 'porter ascii' - ); - `); - - // Create triggers to keep the FTS table synchronized with the examples table. - db.exec(` - CREATE TRIGGER examples_after_insert AFTER INSERT ON examples BEGIN - INSERT INTO examples_fts(rowid, title, summary, keywords, required_packages, related_concepts, related_tools, content) - VALUES ( - new.id, new.title, new.summary, new.keywords, new.required_packages, new.related_concepts, - new.related_tools, new.content - ); - END; - `); - - const insertStatement = db.prepare( - 'INSERT INTO examples(' + - 'title, summary, keywords, required_packages, related_concepts, related_tools, experimental, content' + - ') VALUES(?, ?, ?, ?, ?, ?, ?, ?);', - ); - - const frontmatterSchema = z.object({ - title: z.string(), - summary: z.string(), - keywords: z.array(z.string()).optional(), - required_packages: z.array(z.string()).optional(), - related_concepts: z.array(z.string()).optional(), - related_tools: z.array(z.string()).optional(), - experimental: z.boolean().optional(), - }); - - db.exec('BEGIN TRANSACTION'); - for await (const entry of glob('**/*.md', { cwd: examplesPath, withFileTypes: true })) { - if (!entry.isFile()) { - continue; - } - - const content = await readFile(join(entry.parentPath, entry.name), 'utf-8'); - const frontmatter = parseFrontmatter(content); - - const validation = frontmatterSchema.safeParse(frontmatter); - if (!validation.success) { - // eslint-disable-next-line no-console - console.warn(`Skipping invalid example file ${entry.name}:`, validation.error.issues); - continue; - } - - const { - title, - summary, - keywords, - required_packages, - related_concepts, - related_tools, - experimental, - } = validation.data; - - insertStatement.run( - title, - summary, - JSON.stringify(keywords ?? []), - JSON.stringify(required_packages ?? []), - JSON.stringify(related_concepts ?? []), - JSON.stringify(related_tools ?? []), - experimental ? 1 : 0, - content, - ); - } - db.exec('END TRANSACTION'); - - return db; -} - -const EXPECTED_SCHEMA_VERSION = 1; - -/** - * Validates the schema version of the example database. - * - * @param db The database connection to validate. - * @param dbSource A string identifying the source of the database (e.g., 'bundled' or a version number). - * @throws An error if the schema version is missing or incompatible. - */ -function validateDatabaseSchema(db: DatabaseSync, dbSource: string): void { - const schemaVersionResult = db - .prepare('SELECT value FROM metadata WHERE key = ?') - .get('schema_version') as { value: string } | undefined; - const actualSchemaVersion = schemaVersionResult ? Number(schemaVersionResult.value) : undefined; - - if (actualSchemaVersion !== EXPECTED_SCHEMA_VERSION) { - db.close(); - - let errorMessage: string; - if (actualSchemaVersion === undefined) { - errorMessage = 'The example database is missing a schema version and cannot be used.'; - } else if (actualSchemaVersion > EXPECTED_SCHEMA_VERSION) { - errorMessage = - `This project's example database (version ${actualSchemaVersion})` + - ` is newer than what this version of the Angular CLI supports (version ${EXPECTED_SCHEMA_VERSION}).` + - ' Please update your `@angular/cli` package to a newer version.'; - } else { - errorMessage = - `This version of the Angular CLI (expects schema version ${EXPECTED_SCHEMA_VERSION})` + - ` requires a newer example database than the one found in this project (version ${actualSchemaVersion}).`; - } - - throw new Error( - `Incompatible example database schema from source '${dbSource}':\n${errorMessage}`, - ); - } -} diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts b/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts new file mode 100644 index 000000000000..9c9d0cd98d3b --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts @@ -0,0 +1,107 @@ +/** + * @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 { readFile, stat } from 'node:fs/promises'; +import { createRequire } from 'node:module'; +import { dirname, isAbsolute, relative, resolve } from 'node:path'; +import type { McpToolContext } from '../tool-registry'; + +/** + * A list of known Angular packages that may contain example databases. + * The tool will attempt to resolve and load example databases from these packages. + */ +const KNOWN_EXAMPLE_PACKAGES = ['@angular/core', '@angular/aria', '@angular/forms']; + +/** + * Attempts to find version-specific example databases from the user's installed + * versions of known Angular packages. It looks for a custom `angular` metadata property in each + * package's `package.json` to locate the database. + * + * @example A sample `package.json` `angular` field: + * ```json + * { + * "angular": { + * "examples": { + * "format": "sqlite", + * "path": "./resources/code-examples.db" + * } + * } + * } + * ``` + * + * @param workspacePath The absolute path to the user's `angular.json` file. + * @param logger The MCP tool context logger for reporting warnings. + * @returns A promise that resolves to an array of objects, each containing a database path and source. + */ +export async function getVersionSpecificExampleDatabases( + workspacePath: string, + logger: McpToolContext['logger'], +): Promise<{ dbPath: string; source: string }[]> { + const workspaceRequire = createRequire(workspacePath); + const databases: { dbPath: string; source: string }[] = []; + + for (const packageName of KNOWN_EXAMPLE_PACKAGES) { + // 1. Resolve the path to package.json + let pkgJsonPath: string; + try { + pkgJsonPath = workspaceRequire.resolve(`${packageName}/package.json`); + } catch (e) { + // This is not a warning because the user may not have all known packages installed. + continue; + } + + // 2. Read and parse package.json, then find the database. + try { + const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); + const pkgJson = JSON.parse(pkgJsonContent); + const examplesInfo = pkgJson['angular']?.examples; + + if ( + examplesInfo && + examplesInfo.format === 'sqlite' && + typeof examplesInfo.path === 'string' + ) { + const packageDirectory = dirname(pkgJsonPath); + const dbPath = resolve(packageDirectory, examplesInfo.path); + + // Ensure the resolved database path is within the package boundary. + const relativePath = relative(packageDirectory, dbPath); + if (relativePath.startsWith('..') || isAbsolute(relativePath)) { + logger.warn( + `Detected a potential path traversal attempt in '${pkgJsonPath}'. ` + + `The path '${examplesInfo.path}' escapes the package boundary. ` + + 'This database will be skipped.', + ); + continue; + } + + // Check the file size to prevent reading a very large file. + const stats = await stat(dbPath); + if (stats.size > 10 * 1024 * 1024) { + // 10MB + logger.warn( + `The example database at '${dbPath}' is larger than 10MB (${stats.size} bytes). ` + + 'This is unexpected and the file will not be used.', + ); + continue; + } + + const source = `package ${packageName}@${pkgJson.version}`; + databases.push({ dbPath, source }); + } + } catch (e) { + logger.warn( + `Failed to read or parse version-specific examples metadata referenced in '${pkgJsonPath}': ${ + e instanceof Error ? e.message : e + }.`, + ); + } + } + + return databases; +} diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/database.ts b/packages/angular/cli/src/commands/mcp/tools/examples/database.ts new file mode 100644 index 000000000000..cd4f31a655c0 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/database.ts @@ -0,0 +1,142 @@ +/** + * @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 { DatabaseSync, SQLInputValue } from 'node:sqlite'; +import { escapeSearchQuery } from './query-escaper'; +import type { FindExampleInput } from './schemas'; + +const EXPECTED_SCHEMA_VERSION = 1; + +/** + * Validates the schema version of the example database. + * + * @param db The database connection to validate. + * @param dbSource A string identifying the source of the database (e.g., 'bundled' or a version number). + * @throws An error if the schema version is missing or incompatible. + */ +export function validateDatabaseSchema(db: DatabaseSync, dbSource: string): void { + const schemaVersionResult = db + .prepare('SELECT value FROM metadata WHERE key = ?') + .get('schema_version') as { value: string } | undefined; + const actualSchemaVersion = schemaVersionResult ? Number(schemaVersionResult.value) : undefined; + + if (actualSchemaVersion !== EXPECTED_SCHEMA_VERSION) { + db.close(); + + let errorMessage: string; + if (actualSchemaVersion === undefined) { + errorMessage = 'The example database is missing a schema version and cannot be used.'; + } else if (actualSchemaVersion > EXPECTED_SCHEMA_VERSION) { + errorMessage = + `This project's example database (version ${actualSchemaVersion})` + + ` is newer than what this version of the Angular CLI supports (version ${EXPECTED_SCHEMA_VERSION}).` + + ' Please update your `@angular/cli` package to a newer version.'; + } else { + errorMessage = + `This version of the Angular CLI (expects schema version ${EXPECTED_SCHEMA_VERSION})` + + ` requires a newer example database than the one found in this project (version ${actualSchemaVersion}).`; + } + + throw new Error( + `Incompatible example database schema from source '${dbSource}':\n${errorMessage}`, + ); + } +} + +export function queryDatabase(dbs: DatabaseSync[], input: FindExampleInput) { + const { query, keywords, required_packages, related_concepts, includeExperimental } = input; + + // Build the query dynamically + const params: SQLInputValue[] = []; + let sql = + `SELECT e.title, e.summary, e.keywords, e.required_packages, e.related_concepts, e.related_tools, e.content, ` + + // The `snippet` function generates a contextual snippet of the matched text. + // Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size. + "snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet, " + + // The `bm25` function returns the relevance score of the match. The weights + // assigned to each column boost the ranking of documents where the search + // term appears in a more important field. + // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content + 'bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0) AS rank ' + + 'FROM examples e JOIN examples_fts ON e.id = examples_fts.rowid'; + const whereClauses = []; + + // FTS query + if (query) { + whereClauses.push('examples_fts MATCH ?'); + params.push(escapeSearchQuery(query)); + } + + // JSON array filters + const addJsonFilter = (column: string, values: string[] | undefined) => { + if (values?.length) { + for (const value of values) { + whereClauses.push(`e.${column} LIKE ?`); + params.push(`%"${value}"%`); + } + } + }; + + addJsonFilter('keywords', keywords); + addJsonFilter('required_packages', required_packages); + addJsonFilter('related_concepts', related_concepts); + + if (!includeExperimental) { + whereClauses.push('e.experimental = 0'); + } + + if (whereClauses.length > 0) { + sql += ` WHERE ${whereClauses.join(' AND ')}`; + } + + // Query database and return results + const examples = []; + const textContent = []; + + for (const db of dbs) { + const queryStatement = db.prepare(sql); + for (const exampleRecord of queryStatement.all(...params)) { + const record = exampleRecord as Record; + const example = { + title: record['title'] as string, + summary: record['summary'] as string, + keywords: JSON.parse((record['keywords'] as string) || '[]') as string[], + required_packages: JSON.parse((record['required_packages'] as string) || '[]') as string[], + related_concepts: JSON.parse((record['related_concepts'] as string) || '[]') as string[], + related_tools: JSON.parse((record['related_tools'] as string) || '[]') as string[], + content: record['content'] as string, + snippet: record['snippet'] as string, + rank: record['rank'] as number, + }; + examples.push(example); + } + } + + // Order the combined results by relevance. + // The `bm25` algorithm returns a smaller number for a more relevant match. + examples.sort((a, b) => a.rank - b.rank); + + // The `rank` field is an internal implementation detail for sorting and should not be + // returned to the user. We create a new array of examples without the `rank`. + const finalExamples = examples.map(({ rank, ...rest }) => rest); + + for (const example of finalExamples) { + // Also create a more structured text output + let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`; + if (example.snippet) { + text += `\n**Snippet:** ${example.snippet}`; + } + text += `\n\n---\n\n${example.content}`; + textContent.push({ type: 'text' as const, text }); + } + + return { + content: textContent, + structuredContent: { examples: finalExamples }, + }; +} diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/index.ts b/packages/angular/cli/src/commands/mcp/tools/examples/index.ts new file mode 100644 index 000000000000..9ee35b8f1c2c --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/index.ts @@ -0,0 +1,132 @@ +/** + * @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 { DatabaseSync } from 'node:sqlite'; +import { type McpToolContext, declareTool } from '../tool-registry'; +import { queryDatabase, validateDatabaseSchema } from './database'; +import { getVersionSpecificExampleDatabases } from './database-discovery'; +import { setupRuntimeExamples } from './runtime-database'; +import { type FindExampleInput, findExampleInputSchema, findExampleOutputSchema } from './schemas'; +import { suppressSqliteWarning } from './utils'; + +export const FIND_EXAMPLE_TOOL = declareTool({ + name: 'find_examples', + title: 'Find Angular Code Examples', + description: ` + +Augments your knowledge base with a curated database of official, best-practice code examples, +focusing on **modern, new, and recently updated** Angular features. This tool acts as a RAG +(Retrieval-Augmented Generation) source, providing ground-truth information on the latest Angular +APIs and patterns. You **MUST** use it to understand and apply current standards when working with +new or evolving features. + + +* **Knowledge Augmentation:** Learning about new or updated Angular features (e.g., query: 'signal input' or 'deferrable views'). +* **Modern Implementation:** Finding the correct modern syntax for features + (e.g., query: 'functional route guard' or 'http client with fetch'). +* **Refactoring to Modern Patterns:** Upgrading older code by finding examples of new syntax + (e.g., query: 'built-in control flow' to replace "*ngIf"). +* **Advanced Filtering:** Combining a full-text search with filters to narrow results. + (e.g., query: 'forms', required_packages: ['@angular/forms'], keywords: ['validation']) + + +* **Project-Specific Use (Recommended):** For tasks inside a user's project, you **MUST** provide the + \`workspacePath\` argument to get examples that match the project's Angular version. Get this + path from \`list_projects\`. +* **General Use:** If no project context is available (e.g., for general questions or learning), + you can call the tool without the \`workspacePath\` argument. It will return the latest + generic examples. +* **Tool Selection:** This database primarily contains examples for new and recently updated Angular + features. For established, core features, the main documentation (via the + \`search_documentation\` tool) may be a better source of information. +* The examples in this database are the single source of truth for modern Angular coding patterns. +* The search query uses a powerful full-text search syntax (FTS5). Refer to the 'query' + parameter description for detailed syntax rules and examples. +* You can combine the main 'query' with optional filters like 'keywords', 'required_packages', + and 'related_concepts' to create highly specific searches. +`, + inputSchema: findExampleInputSchema.shape, + outputSchema: findExampleOutputSchema.shape, + isReadOnly: true, + isLocalOnly: true, + shouldRegister: ({ logger }) => { + // sqlite database support requires Node.js 22.16+ + const [nodeMajor, nodeMinor] = process.versions.node.split('.', 2).map(Number); + if (nodeMajor < 22 || (nodeMajor === 22 && nodeMinor < 16)) { + logger.warn( + `MCP tool 'find_examples' requires Node.js 22.16 (or higher). ` + + ' Registration of this tool has been skipped.', + ); + + return false; + } + + return true; + }, + factory: createFindExampleHandler, +}); + +async function createFindExampleHandler({ logger, exampleDatabasePath }: McpToolContext) { + const runtimeDb = process.env['NG_MCP_EXAMPLES_DIR'] + ? await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR']) + : undefined; + + suppressSqliteWarning(); + + return async (input: FindExampleInput) => { + // If the dev-time override is present, use it and bypass all other logic. + if (runtimeDb) { + return queryDatabase([runtimeDb], input); + } + + const resolvedDbs: { path: string; source: string }[] = []; + + // First, try to get all available version-specific guides. + if (input.workspacePath) { + const versionSpecificDbs = await getVersionSpecificExampleDatabases( + input.workspacePath, + logger, + ); + for (const db of versionSpecificDbs) { + resolvedDbs.push({ path: db.dbPath, source: db.source }); + } + } + + // If no version-specific guides were found for any reason, fall back to the bundled version. + if (resolvedDbs.length === 0 && exampleDatabasePath) { + resolvedDbs.push({ path: exampleDatabasePath, source: 'bundled' }); + } + + if (resolvedDbs.length === 0) { + // This should be prevented by the registration logic in mcp-server.ts + throw new Error('No example databases are available.'); + } + + const { DatabaseSync } = await import('node:sqlite'); + const dbConnections: DatabaseSync[] = []; + + for (const { path, source } of resolvedDbs) { + const db = new DatabaseSync(path, { readOnly: true }); + try { + validateDatabaseSchema(db, source); + dbConnections.push(db); + } catch (e) { + logger.warn((e as Error).message); + // If a database is invalid, we should not query it, but we should not fail the whole tool. + // We will just skip this database and try to use the others. + continue; + } + } + + if (dbConnections.length === 0) { + throw new Error('All available example databases were invalid. Cannot perform query.'); + } + + return queryDatabase(dbConnections, input); + }; +} diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/query-escaper.ts b/packages/angular/cli/src/commands/mcp/tools/examples/query-escaper.ts new file mode 100644 index 000000000000..bb6acd375d45 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/query-escaper.ts @@ -0,0 +1,66 @@ +/** + * @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 + */ + +/** + * Escapes a search query for FTS5 by tokenizing and quoting terms. + * + * This function processes a raw search string and prepares it for an FTS5 full-text search. + * It correctly handles quoted phrases, logical operators (AND, OR, NOT), parentheses, + * and prefix searches (ending with an asterisk), ensuring that individual search + * terms are properly quoted to be treated as literals by the search engine. + * This is primarily intended to avoid unintentional usage of FTS5 query syntax by consumers. + * + * @param query The raw search query string. + * @returns A sanitized query string suitable for FTS5. + */ +export function escapeSearchQuery(query: string): string { + // This regex tokenizes the query string into parts: + // 1. Quoted phrases (e.g., "foo bar") + // 2. Parentheses ( and ) + // 3. FTS5 operators (AND, OR, NOT, NEAR) + // 4. Words, which can include a trailing asterisk for prefix search (e.g., foo*) + const tokenizer = /"([^"]*)"|([()])|\b(AND|OR|NOT|NEAR)\b|([^\s()]+)/g; + let match; + const result: string[] = []; + let lastIndex = 0; + + while ((match = tokenizer.exec(query)) !== null) { + // Add any whitespace or other characters between tokens + if (match.index > lastIndex) { + result.push(query.substring(lastIndex, match.index)); + } + + const [, quoted, parenthesis, operator, term] = match; + + if (quoted !== undefined) { + // It's a quoted phrase, keep it as is. + result.push(`"${quoted}"`); + } else if (parenthesis) { + // It's a parenthesis, keep it as is. + result.push(parenthesis); + } else if (operator) { + // It's an operator, keep it as is. + result.push(operator); + } else if (term) { + // It's a term that needs to be quoted. + if (term.endsWith('*')) { + result.push(`"${term.slice(0, -1)}"*`); + } else { + result.push(`"${term}"`); + } + } + lastIndex = tokenizer.lastIndex; + } + + // Add any remaining part of the string + if (lastIndex < query.length) { + result.push(query.substring(lastIndex)); + } + + return result.join(''); +} diff --git a/packages/angular/cli/src/commands/mcp/tools/examples_spec.ts b/packages/angular/cli/src/commands/mcp/tools/examples/query-escaper_spec.ts similarity index 97% rename from packages/angular/cli/src/commands/mcp/tools/examples_spec.ts rename to packages/angular/cli/src/commands/mcp/tools/examples/query-escaper_spec.ts index 9fc75120aee5..6aa801fe0349 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples/query-escaper_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { escapeSearchQuery } from './examples'; +import { escapeSearchQuery } from './query-escaper'; describe('escapeSearchQuery', () => { it('should wrap single terms in double quotes', () => { diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts b/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts new file mode 100644 index 000000000000..2f243eb402b3 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts @@ -0,0 +1,198 @@ +/** + * @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 { glob, readFile } from 'node:fs/promises'; +import { join } from 'node:path'; +import type { DatabaseSync } from 'node:sqlite'; +import { z } from 'zod'; + +/** + * A simple YAML front matter parser. + * + * This function extracts the YAML block enclosed by `---` at the beginning of a string + * and parses it into a JavaScript object. It is not a full YAML parser and only + * supports simple key-value pairs and string arrays. + * + * @param content The string content to parse. + * @returns A record containing the parsed front matter data. + */ +function parseFrontmatter(content: string): Record { + const match = content.match(/^---\r?\n(.*?)\r?\n---/s); + if (!match) { + return {}; + } + + const frontmatter = match[1]; + const data: Record = {}; + const lines = frontmatter.split(/\r?\n/); + + let currentKey = ''; + let isArray = false; + const arrayValues: string[] = []; + + for (const line of lines) { + const keyValueMatch = line.match(/^([^:]+):\s*(.*)/); + if (keyValueMatch) { + if (currentKey && isArray) { + data[currentKey] = arrayValues.slice(); + arrayValues.length = 0; + } + + const [, key, value] = keyValueMatch; + currentKey = key.trim(); + isArray = value.trim() === ''; + + if (!isArray) { + const trimmedValue = value.trim(); + if (trimmedValue === 'true') { + data[currentKey] = true; + } else if (trimmedValue === 'false') { + data[currentKey] = false; + } else { + data[currentKey] = trimmedValue; + } + } + } else { + const arrayItemMatch = line.match(/^\s*-\s*(.*)/); + if (arrayItemMatch && currentKey && isArray) { + let value = arrayItemMatch[1].trim(); + // Unquote if the value is quoted. + if ( + (value.startsWith("'") && value.endsWith("'")) || + (value.startsWith('"') && value.endsWith('"')) + ) { + value = value.slice(1, -1); + } + arrayValues.push(value); + } + } + } + + if (currentKey && isArray) { + data[currentKey] = arrayValues; + } + + return data; +} + +export async function setupRuntimeExamples(examplesPath: string): Promise { + const { DatabaseSync } = await import('node:sqlite'); + const db = new DatabaseSync(':memory:'); + + // Create a relational table to store the structured example data. + db.exec(` + CREATE TABLE metadata ( + key TEXT PRIMARY KEY NOT NULL, + value TEXT NOT NULL + ); + `); + + db.exec(` + INSERT INTO metadata (key, value) VALUES + ('schema_version', '1'), + ('created_at', '${new Date().toISOString()}'); + `); + + db.exec(` + CREATE TABLE examples ( + id INTEGER PRIMARY KEY, + title TEXT NOT NULL, + summary TEXT NOT NULL, + keywords TEXT, + required_packages TEXT, + related_concepts TEXT, + related_tools TEXT, + experimental INTEGER NOT NULL DEFAULT 0, + content TEXT NOT NULL + ); + `); + + // Create an FTS5 virtual table to provide full-text search capabilities. + db.exec(` + CREATE VIRTUAL TABLE examples_fts USING fts5( + title, + summary, + keywords, + required_packages, + related_concepts, + related_tools, + content, + content='examples', + content_rowid='id', + tokenize = 'porter ascii' + ); + `); + + // Create triggers to keep the FTS table synchronized with the examples table. + db.exec(` + CREATE TRIGGER examples_after_insert AFTER INSERT ON examples BEGIN + INSERT INTO examples_fts(rowid, title, summary, keywords, required_packages, related_concepts, related_tools, content) + VALUES ( + new.id, new.title, new.summary, new.keywords, new.required_packages, new.related_concepts, + new.related_tools, new.content + ); + END; + `); + + const insertStatement = db.prepare( + 'INSERT INTO examples(' + + 'title, summary, keywords, required_packages, related_concepts, related_tools, experimental, content' + + ') VALUES(?, ?, ?, ?, ?, ?, ?, ?);', + ); + + const frontmatterSchema = z.object({ + title: z.string(), + summary: z.string(), + keywords: z.array(z.string()).optional(), + required_packages: z.array(z.string()).optional(), + related_concepts: z.array(z.string()).optional(), + related_tools: z.array(z.string()).optional(), + experimental: z.boolean().optional(), + }); + + db.exec('BEGIN TRANSACTION'); + for await (const entry of glob('**/*.md', { cwd: examplesPath, withFileTypes: true })) { + if (!entry.isFile()) { + continue; + } + + const content = await readFile(join(entry.parentPath, entry.name), 'utf-8'); + const frontmatter = parseFrontmatter(content); + + const validation = frontmatterSchema.safeParse(frontmatter); + if (!validation.success) { + // eslint-disable-next-line no-console + console.warn(`Skipping invalid example file ${entry.name}:`, validation.error.issues); + continue; + } + + const { + title, + summary, + keywords, + required_packages, + related_concepts, + related_tools, + experimental, + } = validation.data; + + insertStatement.run( + title, + summary, + JSON.stringify(keywords ?? []), + JSON.stringify(required_packages ?? []), + JSON.stringify(related_concepts ?? []), + JSON.stringify(related_tools ?? []), + experimental ? 1 : 0, + content, + ); + } + db.exec('END TRANSACTION'); + + return db; +} diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/schemas.ts b/packages/angular/cli/src/commands/mcp/tools/examples/schemas.ts new file mode 100644 index 000000000000..2122f6775bc8 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/schemas.ts @@ -0,0 +1,132 @@ +/** + * @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 { z } from 'zod'; + +export const findExampleInputSchema = z.object({ + workspacePath: z + .string() + .optional() + .describe( + 'The absolute path to the `angular.json` file for the workspace. This is used to find the ' + + 'version-specific code examples that correspond to the installed version of the ' + + 'Angular framework. You **MUST** get this path from the `list_projects` tool. ' + + 'If omitted, the tool will search the generic code examples bundled with the CLI.', + ), + query: z + .string() + .describe( + "The primary, conceptual search query. This should capture the user's main goal or question " + + "(e.g., 'lazy loading a route' or 'how to use signal inputs'). The query will be processed " + + 'by a powerful full-text search engine.\n\n' + + 'Key Syntax Features (see https://www.sqlite.org/fts5.html for full documentation):\n' + + ' - AND (default): Space-separated terms are combined with AND.\n' + + ' - Example: \'standalone component\' (finds results with both "standalone" and "component")\n' + + ' - OR: Use the OR operator to find results with either term.\n' + + " - Example: 'validation OR validator'\n" + + ' - NOT: Use the NOT operator to exclude terms.\n' + + " - Example: 'forms NOT reactive'\n" + + ' - Grouping: Use parentheses () to group expressions.\n' + + " - Example: '(validation OR validator) AND forms'\n" + + ' - Phrase Search: Use double quotes "" for exact phrases.\n' + + ' - Example: \'"template-driven forms"\'\n' + + ' - Prefix Search: Use an asterisk * for prefix matching.\n' + + ' - Example: \'rout*\' (matches "route", "router", "routing")', + ), + keywords: z + .array(z.string()) + .optional() + .describe( + 'A list of specific, exact keywords to narrow the search. Use this for precise terms like ', + ), + required_packages: z + .array(z.string()) + .optional() + .describe( + "A list of NPM packages that an example must use. Use this when the user's request is " + + 'specific to a feature within a certain package (e.g., if the user asks about `ngModel`, ' + + 'you should filter by `@angular/forms`).', + ), + related_concepts: z + .array(z.string()) + .optional() + .describe( + 'A list of high-level concepts to filter by. Use this to find examples related to broader ' + + 'architectural ideas or patterns (e.g., `signals`, `dependency injection`, `routing`).', + ), + includeExperimental: z + .boolean() + .optional() + .default(false) + .describe( + 'By default, this tool returns only production-safe examples. Set this to `true` **only if** ' + + 'the user explicitly asks for a bleeding-edge feature or if a stable solution to their ' + + 'problem cannot be found. If you set this to `true`, you **MUST** preface your answer by ' + + 'warning the user that the example uses experimental APIs that are not suitable for production.', + ), +}); + +export type FindExampleInput = z.infer; + +export const findExampleOutputSchema = z.object({ + examples: z.array( + z.object({ + title: z + .string() + .describe( + 'The title of the example. Use this as a heading when presenting the example to the user.', + ), + summary: z + .string() + .describe( + "A one-sentence summary of the example's purpose. Use this to help the user decide " + + 'if the example is relevant to them.', + ), + keywords: z + .array(z.string()) + .optional() + .describe( + 'A list of keywords for the example. You can use these to explain why this example ' + + "was a good match for the user's query.", + ), + required_packages: z + .array(z.string()) + .optional() + .describe( + 'A list of NPM packages required for the example to work. Before presenting the code, ' + + 'you should inform the user if any of these packages need to be installed.', + ), + related_concepts: z + .array(z.string()) + .optional() + .describe( + 'A list of related concepts. You can suggest these to the user as topics for ' + + 'follow-up questions.', + ), + related_tools: z + .array(z.string()) + .optional() + .describe( + 'A list of related MCP tools. You can suggest these as potential next steps for the user.', + ), + content: z + .string() + .describe( + 'A complete, self-contained Angular code example in Markdown format. This should be ' + + 'presented to the user inside a markdown code block.', + ), + snippet: z + .string() + .optional() + .describe( + 'A contextual snippet from the content showing the matched search term. This field is ' + + 'critical for efficiently evaluating a result`s relevance. It enables two primary ', + ), + }), + ), +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/utils.ts b/packages/angular/cli/src/commands/mcp/tools/examples/utils.ts new file mode 100644 index 000000000000..312994d7b3fd --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/utils.ts @@ -0,0 +1,31 @@ +/** + * @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 + */ + +/** + * Suppresses the experimental warning emitted by Node.js for the `node:sqlite` module. + * + * This is a workaround to prevent the console from being cluttered with warnings + * about the experimental status of the SQLite module, which is used by this tool. + */ +export function suppressSqliteWarning(): void { + const originalProcessEmit = process.emit; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + process.emit = function (event: string, error?: unknown): any { + if ( + event === 'warning' && + error instanceof Error && + error.name === 'ExperimentalWarning' && + error.message.includes('SQLite') + ) { + return false; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any, prefer-rest-params + return originalProcessEmit.apply(process, arguments as any); + }; +} diff --git a/tests/legacy-cli/e2e/tests/mcp/find-examples-basic.ts b/tests/legacy-cli/e2e/tests/mcp/find-examples-basic.ts new file mode 100644 index 000000000000..b7f42045076c --- /dev/null +++ b/tests/legacy-cli/e2e/tests/mcp/find-examples-basic.ts @@ -0,0 +1,48 @@ +import { exec, ProcessOutput, silentNpm } from '../../utils/process'; +import assert from 'node:assert/strict'; + +const MCP_INSPECTOR_PACKAGE_NAME = '@modelcontextprotocol/inspector-cli'; +const MCP_INSPECTOR_PACKAGE_VERSION = '0.16.2'; +const MCP_INSPECTOR_COMMAND_NAME = 'mcp-inspector-cli'; + +async function runInspector(...args: string[]): Promise { + const result = await exec( + MCP_INSPECTOR_COMMAND_NAME, + '--cli', + 'npx', + '--no', + '@angular/cli', + 'mcp', + ...args, + ); + + return result; +} + +export default async function () { + const [nodeMajor, nodeMinor] = process.versions.node.split('.', 2).map(Number); + if (nodeMajor < 22 || (nodeMajor === 22 && nodeMinor < 16)) { + console.log('Test bypassed: find_examples tool requires Node.js 22.16 or higher.'); + + return; + } + + await silentNpm( + 'install', + '--ignore-scripts', + '-g', + `${MCP_INSPECTOR_PACKAGE_NAME}@${MCP_INSPECTOR_PACKAGE_VERSION}`, + ); + + // Ensure `get_best_practices` returns the markdown content + const { stdout: stdoutInsideWorkspace } = await runInspector( + '--method', + 'tools/call', + '--tool-name', + 'find_examples', + '--tool-arg', + 'query=if', + ); + + assert.match(stdoutInsideWorkspace, /Using the @if Built-in Control Flow Block/); +} From dabe101d019fbc7b7254b214dcad30caac6071f1 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 25 Nov 2025 12:26:46 -0500 Subject: [PATCH 1890/2162] refactor(@angular/cli): add generic package manifest resolver Extends the package manager abstraction to resolve manifests for various specifier types beyond registry packages. This is crucial for supporting packages installed from local directories, file archives, and git repositories. A new `getManifest` method is introduced on the `PackageManager` service. This method acts as a unified entry point for manifest resolution: - It uses `npm-package-arg` to parse the package specifier and determine its type (registry, directory, file, git, etc.). - For local directory specifiers, it reads the `package.json` directly from the filesystem for maximum efficiency. - For other non-registry specifiers (git repos, remote tarballs, local tarballs), it uses the `acquireTempPackage` flow to safely fetch and extract the package. - When acquiring a package, lifecycle scripts are disabled for improved security and performance. - To reliably determine the package name for non-registry types, the manifest resolver now inspects the temporary `package.json` after the package manager has installed the dependency. The existing `getPackageManifest` method has been renamed to `getRegistryManifest` to more accurately reflect its purpose. --- .../angular/cli/src/package-managers/host.ts | 10 +- .../package-manager-descriptor.ts | 12 +-- .../src/package-managers/package-manager.ts | 92 +++++++++++++++++-- .../src/package-managers/testing/mock-host.ts | 4 + 4 files changed, 105 insertions(+), 13 deletions(-) diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts index 1295154ceacf..1d4b441bdc37 100644 --- a/packages/angular/cli/src/package-managers/host.ts +++ b/packages/angular/cli/src/package-managers/host.ts @@ -15,7 +15,7 @@ import { spawn } from 'node:child_process'; import { Stats } from 'node:fs'; -import { mkdtemp, readdir, rm, stat, writeFile } from 'node:fs/promises'; +import { mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { PackageManagerError } from './error'; @@ -38,6 +38,13 @@ export interface Host { */ readdir(path: string): Promise; + /** + * Reads the content of a file. + * @param path The path to the file. + * @returns A promise that resolves to the file content as a string. + */ + readFile(path: string): Promise; + /** * Creates a new, unique temporary directory. * @returns A promise that resolves to the absolute path of the created directory. @@ -85,6 +92,7 @@ export interface Host { export const NodeJS_HOST: Host = { stat, readdir, + readFile: (path: string) => readFile(path, { encoding: 'utf8' }), writeFile, createTempDirectory: () => mkdtemp(join(tmpdir(), 'angular-cli-')), deleteDirectory: (path: string) => rm(path, { recursive: true, force: true }), diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index 62a6ae8b79b6..e64b4c8be92c 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -82,7 +82,7 @@ export interface PackageManagerDescriptor { listDependencies: (stdout: string, logger?: Logger) => Map; /** A function to parse the output of `getManifestCommand` for a specific version. */ - getPackageManifest: (stdout: string, logger?: Logger) => PackageManifest | null; + getRegistryManifest: (stdout: string, logger?: Logger) => PackageManifest | null; /** A function to parse the output of `getManifestCommand` for the full package metadata. */ getRegistryMetadata: (stdout: string, logger?: Logger) => PackageMetadata | null; @@ -122,7 +122,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { viewCommandFieldArgFormatter: (fields) => [...fields], outputParsers: { listDependencies: parseNpmLikeDependencies, - getPackageManifest: parseNpmLikeManifest, + getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, }, }, @@ -144,7 +144,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { viewCommandFieldArgFormatter: (fields) => ['--fields', fields.join(',')], outputParsers: { listDependencies: parseYarnModernDependencies, - getPackageManifest: parseNpmLikeManifest, + getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, }, }, @@ -168,7 +168,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { getManifestCommand: ['info', '--json'], outputParsers: { listDependencies: parseYarnClassicDependencies, - getPackageManifest: parseYarnLegacyManifest, + getRegistryManifest: parseYarnLegacyManifest, getRegistryMetadata: parseNpmLikeMetadata, }, }, @@ -190,7 +190,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { viewCommandFieldArgFormatter: (fields) => [...fields], outputParsers: { listDependencies: parseNpmLikeDependencies, - getPackageManifest: parseNpmLikeManifest, + getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, }, }, @@ -212,7 +212,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { viewCommandFieldArgFormatter: (fields) => [...fields], outputParsers: { listDependencies: parseNpmLikeDependencies, - getPackageManifest: parseNpmLikeManifest, + getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, }, }, diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 4f4620994769..02a4f8d4c853 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -13,6 +13,7 @@ */ import { join } from 'node:path'; +import npa from 'npm-package-arg'; import { PackageManagerError } from './error'; import { Host } from './host'; import { Logger } from './logger'; @@ -353,7 +354,7 @@ export class PackageManager { * @param options.bypassCache If true, ignores the in-memory cache and fetches fresh data. * @returns A promise that resolves to the `PackageManifest` object, or `null` if the package is not found. */ - async getPackageManifest( + async getRegistryManifest( packageName: string, version: string, options: { timeout?: number; registry?: string; bypassCache?: boolean } = {}, @@ -369,24 +370,100 @@ export class PackageManager { return this.#fetchAndParse( commandArgs, - (stdout, logger) => this.descriptor.outputParsers.getPackageManifest(stdout, logger), + (stdout, logger) => this.descriptor.outputParsers.getRegistryManifest(stdout, logger), { ...options, cache: this.#manifestCache, cacheKey }, ); } + /** + * Fetches the manifest for a package. + * + * This method can resolve manifests for packages from the registry, as well + * as those specified by file paths, directory paths, and remote tarballs. + * Caching is only supported for registry packages. + * + * @param specifier The package specifier to resolve the manifest for. + * @param options Options for the fetch. + * @returns A promise that resolves to the `PackageManifest` object, or `null` if the package is not found. + */ + async getManifest( + specifier: string | npa.Result, + options: { timeout?: number; registry?: string; bypassCache?: boolean } = {}, + ): Promise { + const { name, type, fetchSpec } = typeof specifier === 'string' ? npa(specifier) : specifier; + + switch (type) { + case 'range': + case 'version': + case 'tag': + if (!name) { + throw new Error(`Could not parse package name from specifier: ${specifier}`); + } + + // `fetchSpec` is the version, range, or tag. + return this.getRegistryManifest(name, fetchSpec ?? 'latest', options); + case 'directory': { + if (!fetchSpec) { + throw new Error(`Could not parse directory path from specifier: ${specifier}`); + } + + const manifestPath = join(fetchSpec, 'package.json'); + const manifest = await this.host.readFile(manifestPath); + + return JSON.parse(manifest); + } + case 'file': + case 'remote': + case 'git': { + if (!fetchSpec) { + throw new Error(`Could not parse location from specifier: ${specifier}`); + } + + // Caching is not supported for non-registry specifiers. + const { workingDirectory, cleanup } = await this.acquireTempPackage(fetchSpec, { + ...options, + ignoreScripts: true, + }); + + try { + // Discover the package name by reading the temporary `package.json` file. + // The package manager will have added the package to the `dependencies`. + const tempManifest = await this.host.readFile(join(workingDirectory, 'package.json')); + const { dependencies } = JSON.parse(tempManifest) as PackageManifest; + const packageName = dependencies && Object.keys(dependencies)[0]; + + if (!packageName) { + throw new Error(`Could not determine package name for specifier: ${specifier}`); + } + + // The package will be installed in `/node_modules/`. + const packagePath = join(workingDirectory, 'node_modules', packageName); + const manifestPath = join(packagePath, 'package.json'); + const manifest = await this.host.readFile(manifestPath); + + return JSON.parse(manifest); + } finally { + await cleanup(); + } + } + default: + throw new Error(`Unsupported package specifier type: ${type}`); + } + } + /** * Acquires a package by installing it into a temporary directory. The caller is * responsible for managing the lifecycle of the temporary directory by calling * the returned `cleanup` function. * - * @param packageName The name of the package to install. + * @param specifier The specifier of the package to install. * @param options Options for the installation. * @returns A promise that resolves to an object containing the temporary path * and a cleanup function. */ async acquireTempPackage( - packageName: string, - options: { registry?: string } = {}, + specifier: string, + options: { registry?: string; ignoreScripts?: boolean } = {}, ): Promise<{ workingDirectory: string; cleanup: () => Promise }> { const workingDirectory = await this.host.createTempDirectory(); const cleanup = () => this.host.deleteDirectory(workingDirectory); @@ -396,7 +473,10 @@ export class PackageManager { // Writing an empty package.json file beforehand prevents this. await this.host.writeFile(join(workingDirectory, 'package.json'), '{}'); - const args: readonly string[] = [this.descriptor.addCommand, packageName]; + const flags = [options.ignoreScripts ? this.descriptor.ignoreScriptsFlag : ''].filter( + (flag) => flag, + ); + const args: readonly string[] = [this.descriptor.addCommand, specifier, ...flags]; try { await this.#run(args, { ...options, cwd: workingDirectory }); diff --git a/packages/angular/cli/src/package-managers/testing/mock-host.ts b/packages/angular/cli/src/package-managers/testing/mock-host.ts index 69b252501850..af518553a61d 100644 --- a/packages/angular/cli/src/package-managers/testing/mock-host.ts +++ b/packages/angular/cli/src/package-managers/testing/mock-host.ts @@ -58,4 +58,8 @@ export class MockHost implements Host { writeFile(): Promise { throw new Error('Method not implemented.'); } + + readFile(): Promise { + throw new Error('Method not implemented.'); + } } From 98b5d7af5cb5de14fcb9208ae2385317b77aec3e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 1 Dec 2025 05:11:51 +0000 Subject: [PATCH 1891/2162] build: update pnpm to v10.24.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 50b5209c4268..9be592647b8c 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.23.0", + "packageManager": "pnpm@10.24.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.23.0" + "pnpm": "10.24.0" }, "author": "Angular Authors", "license": "MIT", From 243a827191079ba60e1bb84aadec5fcd89612000 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 1 Dec 2025 05:11:23 +0000 Subject: [PATCH 1892/2162] build: update rules_angular digest to 9409450 See associated pull request for more information. --- MODULE.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MODULE.bazel b/MODULE.bazel index fada853c7a71..fb1416746333 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "9b751f826628cab386d1e8ae9c1fa766dbc6a495", + commit = "940945071ebab1e8a323e93882d661d753c920f5", remote = "https://github.com/devversion/rules_angular.git", ) From 331373fcba8fa4ee58ea4b735a72baff4d61f402 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 28 Nov 2025 05:06:11 +0000 Subject: [PATCH 1893/2162] build: update dependency chokidar to v5 See associated pull request for more information. --- packages/angular_devkit/core/package.json | 4 ++-- pnpm-lock.yaml | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/angular_devkit/core/package.json b/packages/angular_devkit/core/package.json index 2fa6f3eb24a4..abdeffbe7116 100644 --- a/packages/angular_devkit/core/package.json +++ b/packages/angular_devkit/core/package.json @@ -33,10 +33,10 @@ "source-map": "0.7.6" }, "devDependencies": { - "chokidar": "4.0.3" + "chokidar": "5.0.0" }, "peerDependencies": { - "chokidar": "^4.0.0" + "chokidar": "^5.0.0" }, "peerDependenciesMeta": { "chokidar": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e7edac604830..520284d14e97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -826,8 +826,8 @@ importers: version: 0.7.6 devDependencies: chokidar: - specifier: 4.0.3 - version: 4.0.3 + specifier: 5.0.0 + version: 5.0.0 packages/angular_devkit/schematics: dependencies: @@ -4690,6 +4690,10 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -7837,6 +7841,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} @@ -13650,6 +13658,10 @@ snapshots: dependencies: readdirp: 4.1.2 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + chownr@1.1.4: {} chownr@3.0.0: {} @@ -17287,6 +17299,8 @@ snapshots: readdirp@4.1.2: {} + readdirp@5.0.0: {} + real-require@0.2.0: {} reflect-metadata@0.2.2: {} From cfe62f255e8ab08405f726404823b45dc3e55210 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 1 Dec 2025 08:59:18 -0500 Subject: [PATCH 1894/2162] build: update @modelcontextprotocol/sdk to v1.23.0 Also updates `zod` to v4.1.13. --- packages/angular/cli/package.json | 4 +-- .../src/commands/mcp/tools/tool-registry.ts | 5 ++- pnpm-lock.yaml | 33 ++++++++++--------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 4b7706258e1f..514d10033bbb 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.22.0", + "@modelcontextprotocol/sdk": "1.23.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.45.0", @@ -40,7 +40,7 @@ "resolve": "1.22.11", "semver": "7.7.3", "yargs": "18.0.0", - "zod": "3.25.76" + "zod": "4.1.13" }, "ng-update": { "migrations": "@schematics/angular/migrations/migration-collection.json", diff --git a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts index 9bbce768000b..3878f6cfbf8a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts +++ b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts @@ -7,12 +7,11 @@ */ import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/mcp.js'; +import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types'; import type { ZodRawShape } from 'zod'; import type { AngularWorkspace } from '../../../utilities/config'; import type { DevServer } from '../dev-server'; -type ToolConfig = Parameters[1]; - export interface McpToolContext { server: McpServer; workspace?: AngularWorkspace; @@ -29,7 +28,7 @@ export interface McpToolDeclaration; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 520284d14e97..39f8bef333ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.0.0(103397789c5753d84dae18b75e29321d) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.22.0) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -478,8 +478,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.22.0 - version: 1.22.0 + specifier: 1.23.0 + version: 1.23.0(zod@4.1.13) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -517,8 +517,8 @@ importers: specifier: 18.0.0 version: 18.0.0 zod: - specifier: 3.25.76 - version: 3.25.76 + specifier: 4.1.13 + version: 4.1.13 packages/angular/pwa: dependencies: @@ -2746,11 +2746,12 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.22.0': - resolution: {integrity: sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g==} + '@modelcontextprotocol/sdk@1.23.0': + resolution: {integrity: sha512-MCGd4K9aZKvuSqdoBkdMvZNcYXCkZRYVs/Gh92mdV5IHbctX9H9uIvd4X93+9g8tBbXv08sxc/QHXTzf8y65bA==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 + zod: ^3.25 || ^4.0 peerDependenciesMeta: '@cfworker/json-schema': optional: true @@ -9525,11 +9526,11 @@ 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/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.22.0)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.0.1(@types/node@24.10.1) '@inquirer/type': 4.0.1(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 @@ -10979,12 +10980,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.22.0)(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.22.0 + '@modelcontextprotocol/sdk': 1.23.0(zod@4.1.13) transitivePeerDependencies: - bufferutil - supports-color @@ -11390,7 +11391,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.22.0': + '@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11403,8 +11404,8 @@ snapshots: express-rate-limit: 7.5.1(express@5.1.0) pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 3.25.76 - zod-to-json-schema: 3.25.0(zod@3.25.76) + zod: 4.1.13 + zod-to-json-schema: 3.25.0(zod@4.1.13) transitivePeerDependencies: - supports-color @@ -19055,9 +19056,9 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.0(zod@3.25.76): + zod-to-json-schema@3.25.0(zod@4.1.13): dependencies: - zod: 3.25.76 + zod: 4.1.13 zod@3.25.76: {} From d635a6c6335d0838fc0977f6742f6aa9f769c527 Mon Sep 17 00:00:00 2001 From: Devin Chasanoff Date: Mon, 24 Nov 2025 16:49:51 -0500 Subject: [PATCH 1895/2162] feat(@angular/cli): add signal forms lessons --- .../src/commands/mcp/resources/ai-tutor.md | 202 +++++++++++++++++- 1 file changed, 199 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md b/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md index 7dacf2f525ee..0e92502e913e 100644 --- a/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md +++ b/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md @@ -19,6 +19,7 @@ This is your most important principle. You will teach **Modern Angular** as the - ✅ **DO** teach the built-in **control flow** (`@if`, `@for`, `@switch`) in templates. - ✅ **DO** teach the new v20 file naming conventions (e.g., `app.ts` for a component file). - ❌ **DO NOT** teach outdated patterns like `NgModules`, `ngIf`/`ngFor`/`ngSwitch`, or `@Input()` decorators unless a user specifically asks for a comparison. Frame them as "the old way" and note that as of v20, the core structural directives are officially deprecated. +- **CRITICAL NOTE (Experimental Features)**: You **must prominently warn** the user whenever a module covers an **experimental or developer-preview feature** (currently Phase 5: Signal Forms). Emphasize that the API is subject to change. ### 2. The Concept-Example-Exercise-Support Cycle @@ -26,7 +27,7 @@ Your primary teaching method involves guiding the user to solve problems themsel 1. **Explain Concept (The "Why" and "What")**: Clearly explain the Angular concept or feature, its purpose, and how it generally works. The depth of this explanation depends on the user's experience level. -2. **Provide Generic Example (The "How" in Isolation)**: Provide a clear, well-formatted, concise code snippet that illustrates the core concept. **This example MUST NOT be code directly from the user's tutorial project ("Smart Recipe Box").** It should be a generic, illustrative example designed to show the concept in action (e.g., using a simple `Counter` to demonstrate a signal, or a generic `Logger` to explain dependency injection). This generic code should still follow all rules in `## ⚙️ Specific Technical & Syntax Rules`. +2.  **Provide Generic Example (The "How" in Isolation)**: **(MANDATORY)** You **MUST** provide a clear, well-formatted, concise code snippet that illustrates the core concept. **This example MUST NOT be code directly from the user's tutorial project ("Smart Recipe Box").** It should be a generic, illustrative example designed to show the concept in action (e.g., using a simple `Counter` to demonstrate a signal, or a generic `Logger` to explain dependency injection). This generic code should still follow all rules in `## ⚙️ Specific Technical & Syntax Rules`. 3. **Define Project Exercise (The "Apply it to Your App")**: **IMPORTANT:** Your primary directive for creating a project exercise is to **describe the destination, not the journey.** You must present a high-level challenge by defining the properties of the _finished product_, not the steps to get there. @@ -201,6 +202,14 @@ This rule defines the logical process you **must** follow to determine the preci _ **Import Path Accuracy**: All relative `import` paths (`../`, `./`) in TypeScript files must be correct based on the final, canonical file structure. _ **Dependency Completeness**: If a component's template uses CSS classes, its decorator **must** include a `styleUrl` property pointing to an existing `.css` file. All standalone `imports` arrays must be complete and correct for the features used in the template. \* **Code Hygiene**: Remove any unused variables, methods, or imports that were created in an early module but made obsolete by a later module's refactoring. +### 17. Mandatory Build Verification + +Whenever you apply automated edits to the user's project (e.g., during module skipping, auto-completion, or jumping), you **must** verify the application compiles **before** asking the user to check their preview. + +- **Action**: Immediately after writing file changes, run `ng build`. +- **Handle Failure**: If the build fails, you **must** analyze the errors, apply fixes, and re-run the build. Do not return control to the user until the build passes. +- **Proceed**: Only after a successful build should you prompt the user to verify the outcome in the web preview. + --- ## ⚙️ Specific Technical & Syntax Rules @@ -289,6 +298,10 @@ ng generate service _ **`RouterModule`**: Instruct users that they **should NEVER** need to import `RouterModule` into their standalone components. Router directives are globally available via `provideRouter`. - **`RouterLink` and `RouterOutlet` Import**: When a component template uses router directives like `routerLink`, `routerLinkActive`, or ``, you **must** instruct the user to `import` the specific directive class (e.g., `RouterLink`, `RouterOutlet`) from `'@angular/router'` and add it to that component's `imports` array. +### **Application Configuration (app.config.ts)** + +- **CRITICAL: Animation Provider Prohibition**: The `provideAnimationsAsync` function **MUST NOT** be used in `app.config.ts` or any other configuration file. This provider is deprecated and is not necessary for modern Angular applications, even when using Angular Material. **You must not generate code that imports or calls `provideAnimationsAsync()` under any circumstances.** + ### Styling, Layout, and Accessibility - **Layout Guidance (Flexbox vs. Grid)**: When providing generic examples or guiding exercises, recommend CSS Flexbox for one-dimensional alignment within components (e.g., aligning items in a header). @@ -299,6 +312,99 @@ ng generate service - When an exercise involves Material, guide the user to import the specific `Mat...Module` needed for the UI components they are using. - For conditional styling, **you must teach property binding to `class` and `style` as the preferred method** (e.g., `[class.is-active]="isActive()"` or `[style.color]="'red'"`). The `[ngClass]` and `[ngStyle]` directives should be framed as an older pattern for more complex, object-based scenarios. +### Signal Forms + +When teaching or generating code for Phase 5 (Signal Forms), you **must** strictly adhere to these new syntax and import rules: + +- **Imports**: + - `form`, `submit`, `Field`, and validator functions (like `required`, `email`) must be imported from `@angular/forms/signals`. + - **Critical**: You must import `Field` (capitalized) to use strict typing in your component imports, but the binding in the template uses the lowercase `[field]` directive. +- **Definition**: + - Use `protected readonly myForm = form(...)` to create the form group. + - The first argument is the initial model state (e.g., `this.initialData` or a signal). + - The second argument is the validation callback (optional). +- **Template Binding**: + - Use the `[field]` directive to bind a form control to an input. + - **Correct Syntax**: `` (Note: `field` is lowercase here). +- **Submission Logic**: + - Use the `submit()` utility function inside a standard click handler. + - **Syntax**: `submit(this.myForm, async () => { /* logic */ })`. +- **Resetting Logic**: + - To reset the form, you must perform two actions: + 1. **Clear Interaction State**: Call `.reset()` on the form signal's value: `this.myForm().reset()`. + 2. **Clear Values**: Update the underlying model signal: `this.myModel.set({ ... })`. +- **Validation Syntax**: + - Import validator functions (`required`, `email`, etc.) directly from `@angular/forms/signals`. + - Apply them inside the definition callback. +- **Field State & Error Display**: + - Access field state by calling the field property as a signal (e.g., `myForm.email()`). + - Check validity using the `.invalid()` signal. + - Retrieve errors using the `.errors()` signal, which returns an array of error objects. + - **Pattern**: + ```html + @if (myForm.email().invalid()) { +
    + @for (error of myForm.email().errors(); track error) { +
  • {{ error.message }}
  • + } +
+ } + ``` +- **Code Example (Standard Pattern)**: + + ```typescript + // src/app/example/example.ts + import { Component, signal, inject } from '@angular/core'; + import { form, submit, Field, required, email } from '@angular/forms/signals'; + import { AuthService } from './auth.service'; + + @Component({ + selector: 'app-example', + standalone: true, + imports: [Field], + template: ` +
+ + @if (loginForm.email().touched() && loginForm.email().invalid()) { +

+ @for (error of loginForm.email().errors(); track $index) { + {{ error.message }} + } +

+ } + + + + +
+ `, + }) + export class Example { + private readonly authService = inject(AuthService); + protected readonly loginModel = signal({ email: '', password: '' }); + + protected readonly loginForm = form(this.loginModel, (s) => { + required(s.email, { message: 'Required' }); + email(s.email, { message: 'Invalid email' }); + }); + + protected async save(event: Event): Promise { + event.preventDefault(); + await submit(this.loginForm, async () => { + await this.authService.login(this.loginForm().value()); + this.loginForm().reset(); + this.loginModel.set({ email: '', password: '' }); + }); + } + } + ``` + +````` + + --- ## 🚀 Onboarding: Project Analysis & Confirmation @@ -429,9 +535,30 @@ _(The LLM will need to interpret "project-specific" or "app-themed" below based _ **16a**: A new component exists with a `ReactiveForm` (using `FormBuilder`, `FormGroup`, `FormControl`). `description`: "building a reactive form to add new items." _ **16b**: The form's submit handler calls a method on an injected service to add the new data. `description`: "adding the new item to the service on form submission." - **Module 17 (Intro to Angular Material)** - _ **17a**: `package.json` contains `@angular/material`. `description`: "installing Angular Material." + _ **17a**: `package.json` contains `@angular/material`. `description`: "installing Angular Material." When installing `@angular/material`, use the command `ng add @angular/material`. Do not install `@angular/animations`, which is no longer a dependency of `@angular/material`. _ **17b**: A component imports a Material module and uses a Material component in its template. `description`: "using an Angular Material component." +### Phase 5: Modern Signal Forms + +- **Module 18 (Introduction to Signal Forms)** + - **18a**: `models.ts` includes `authorEmail` in the `RecipeModel` interface. `description`: "updating the model for new form fields." + - **18b**: A component imports `form` and `Field` from `@angular/forms/signals`. `description`: "importing the Signal Forms API." + - **18c**: A `protected readonly` form signal is defined using `form()` and initialized with a signal model. `description`: "creating the form signal." + - **18d**: The template uses the `[field]` directive on inputs to bind to the form. `description`: "binding inputs to the signal form." +- **Module 19 (Submitting & Resetting)** + - **19a**: The component imports `submit` from `@angular/forms/signals`. `description`: "importing the submit utility." + - **19b**: A save method uses `submit(this.form, ...)` to wrap the submission logic. `description`: "using the submit utility function." + - **19c**: The save method calls the service to add data. `description`: "integrating the service call." + - **19d**: The save method resets the form state using `.reset()` and clears the model values using `.set()`. `description`: "implementing form reset logic." +- **Module 20 (Validation in Signal Forms)** + - **20a**: The component imports validator functions (e.g., `required`, `email`) from `@angular/forms/signals`. `description`: "importing functional validators." + - **20b**: The `form()` definition uses a validation callback. `description`: "defining the validation schema." + - **20c**: The button uses `[disabled]` bound to `myForm.invalid()`. `description`: "disabling the button for invalid forms." +- **Module 21 (Field State & Error Messages)** + - **21a**: The template uses an `@if` block checking `field().invalid()` (e.g., `myForm.name().invalid()`). `description`: "checking field invalidity." + - **21b**: Inside the check, an `@for` loop iterates over `field().errors()`. `description`: "iterating over validation errors." + - **21c**: The loop displays the `error.message`. `description`: "displaying specific error messages." + --- ## 🗺️ The Phased Learning Journey @@ -501,7 +628,7 @@ touch src/app/mock-recipes.ts ]; ``` **Exercise**: Now that our data structure is ready, your exercise is to import the`RecipeModel`and mock data into`app.ts`, create a `recipe`signal initialized with one of the recipes, display its text data, and use the existing buttons from Module 3 to change the active recipe using`.set()`. - ```` +````` - **Module 5**: **State Management with Writable Signals (Part 2: `update`)**: Concept: Modifying state based on the current value. Exercise: Create a new `servings` signal of type `number`. Add buttons to the template that call methods to increment and decrement the servings count using the `.update()` method. - **Module 6**: **Computed Signals**: Concept: Deriving state with `computed()`. Exercise: Create an `adjustedIngredients` computed signal that recalculates ingredient quantities based on the `recipe` and `servings` signals. Display the list of ingredients for the active recipe, showing how their quantities change dynamically when you adjust the servings. @@ -625,3 +752,72 @@ touch src/app/mock-recipes.ts - **Module 15**: **Basic Routing**: Concept: Decoupling components and enabling navigation using `provideRouter`, dynamic routes (e.g., `path: 'recipes/:id'`), and the `routerLink` directive. **Exercise**: A major refactoring lesson. Your goal is to convert your single-view application into a multi-view application with navigation. You will define routes to show the `RecipeList` at a `/recipes` URL and the `RecipeDetail` at a `/recipes/:id` URL. In the `RecipeList`, you will replace the nested detail component with a list of links (using `routerLink`) that navigate to the specific detail page for each recipe. Finally, you will modify the `RecipeDetail` component to fetch its own data from your `RecipeService` using the ID from the route URL, removing its dependency on the parent component's `input()` binding. - **Module 16**: **Introduction to Forms**: Concept: Handling user input with `ReactiveFormsModule`. Exercise: Create a new component with a reactive form to add a new recipe. Upon successful form submission, the new recipe should be added to the array of items held in your application's service. - **Module 17**: **Intro to Angular Material**: Concept: Using professional UI libraries. Exercise: Replace a standard HTML element with an Angular Material equivalent (e.g., `MatButton`). + +### Phase 5: Experimental Signal Forms (⚠️ WARNING: Subject to Change) + +**CRITICAL NOTE FOR THIS PHASE:** Signal Forms are currently an **EXPERIMENTAL** feature. The API may change significantly in future Angular releases. Please proceed with the understanding that this section demonstrates a cutting-edge feature. + +- **Module 18**: **Introduction to Signal Forms**: Concept: Using the new `form()` signal API for state-driven forms. **Setup**: **Prerequisite: Angular v21+**. Signal Forms are a feature available starting in Angular v21. Before proceeding, please check your `package.json` or run `ng version`. If you are on an older version, run `ng update @angular/cli @angular/core` to upgrade your project. We need to update our recipe model to include some new fields that we will use in our form. Please update `models.ts` and `mock-recipes.ts` with the code below. + **File: `src/app/models.ts`** (Updated) + + ```typescript + export interface Ingredient { + name: string; + quantity: number; + unit: string; + } + export interface RecipeModel { + id: number; + name: string; + description: string; + authorEmail: string; // Add this + imgUrl: string; + isFavorite: boolean; + ingredients: Ingredient[]; + } + ``` + + **File: `src/app/mock-recipes.ts`** (Updated) + + ```typescript + import { RecipeModel } from './models'; + export const MOCK_RECIPES: RecipeModel[] = [ + { + id: 1, + name: 'Spaghetti Carbonara', + description: 'A classic Italian pasta dish.', + authorEmail: 'mario@italy.com', // Add this + imgUrl: + '[https://via.placeholder.com/300x200.png?text=Spaghetti+Carbonara](https://via.placeholder.com/300x200.png?text=Spaghetti+Carbonara)', + isFavorite: true, + ingredients: [ + { name: 'Spaghetti', quantity: 200, unit: 'g' }, + { name: 'Guanciale', quantity: 100, unit: 'g' }, + { name: 'Egg Yolks', quantity: 4, unit: 'each' }, + { name: 'Pecorino Romano Cheese', quantity: 50, unit: 'g' }, + { name: 'Black Pepper', quantity: 1, unit: 'tsp' }, + ], + }, + // ... (update other mock recipes similarly or leave optional fields undefined) + ]; + ``` + + **Exercise**: Your goal is to create a new `AddRecipe` component that uses the modern `Signal Forms` API. Import `form` and `Field` from `@angular/forms/signals`. Create a form using the `form()` function that includes fields for `name`, `description`, and `authorEmail`. In your template, use the `[field]` binding to connect your inputs to these form controls. + +- **Module 19**: **Submitting & Resetting**: Concept: Handling form submission and resetting state. **Exercise**: Inject the service into your `AddRecipe` component. Create a protected `save()` method triggered by a "Save Recipe" button's `(click)` event. Inside this method: + 1. Use the `submit(this.myForm, ...)` utility. + 2. Update the `RecipeService` to include an `addRecipe(newRecipe: RecipeModel)` method. + 3. Construct a complete `RecipeModel` (merging form values with defaults) and pass it to the service. + 4. **Reset the form**: Call `this.myForm().reset()` to clear interaction flags. + 5. **Clear the values**: Call `this.myModel.set(...)` to reset the inputs. + +- **Module 20**: **Validation in Signal Forms**: Concept: Applying functional validators. **Exercise**: Import `required` and `email` from `@angular/forms/signals`. Modify your `form()` definition to add a validation callback enforcing: + - `name`: Required (Message: 'Recipe name is required.'). + - `description`: Required (Message: 'Description is required.'). + - `authorEmail`: Required (Message: 'Author email is required.') AND Email format (Message: 'Please enter a valid email address.'). + **Finally, bind the `[disabled]` property of your button to `myForm.invalid()` so users cannot submit invalid data.** + +- **Module 21**: **Field State & Error Messages**: Concept: Providing user feedback by accessing field state signals. **Exercise**: Improve the UX of your `AddRecipe` component by showing specific error messages when data is missing or incorrect. In your template, for the `name`, `description`, and `authorEmail` inputs: + 1. Create an `@if` block that checks if the field is `invalid()` (e.g., `myForm.name().invalid()`). + 2. Inside the block, use `@for` to iterate over the field's `.errors()`. + 3. Display the `error.message` in a red text color or helper text style so the user knows exactly what to fix. From 0d6db864815f14c3b21eedbb0b9d940db730970c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 1 Dec 2025 12:07:23 +0000 Subject: [PATCH 1896/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- package.json | 4 +-- pnpm-lock.yaml | 36 +++++++++---------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++++--------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 9be592647b8c..baa9e98bf828 100644 --- a/package.json +++ b/package.json @@ -46,14 +46,14 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@angular/animations": "21.1.0-next.0", - "@angular/cdk": "21.0.0", + "@angular/cdk": "21.1.0-next.0", "@angular/common": "21.1.0-next.0", "@angular/compiler": "21.1.0-next.0", "@angular/compiler-cli": "21.1.0-next.0", "@angular/core": "21.1.0-next.0", "@angular/forms": "21.1.0-next.0", "@angular/localize": "21.1.0-next.0", - "@angular/material": "21.0.0", + "@angular/material": "21.1.0-next.0", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23", "@angular/platform-browser": "21.1.0-next.0", "@angular/platform-server": "21.1.0-next.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39f8bef333ee..180058acf92d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': - specifier: 21.0.0 - version: 21.0.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/common': specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) @@ -44,8 +44,8 @@ importers: specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(@angular/compiler@21.1.0-next.0) '@angular/material': - specifier: 21.0.0 - version: 21.0.0(103397789c5753d84dae18b75e29321d) + specifier: 21.1.0-next.0 + version: 21.1.0-next.0(bd97c5a741e978ef84ea9f0c3ef58280) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23 version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)) @@ -990,11 +990,11 @@ packages: peerDependencies: '@angular/core': 21.1.0-next.0 - '@angular/cdk@21.0.0': - resolution: {integrity: sha512-wCr5D3mEC+p69IMDC7vf8bWx18mfUNNRdsiK3XD0m1PqfeNfnCJb+Bnkks37MC/SU01uCNrAokRaTbWL6pk1Wg==} + '@angular/cdk@21.1.0-next.0': + resolution: {integrity: sha512-Rao5QbCStbeb9SfWT1SvZCo6nPtdRo5IljrLwrWW1cKZruE4suVSoXS3JGom3jVphxxD7pwk+NZg4eER3vCRrw==} peerDependencies: - '@angular/common': ^21.0.0 || ^22.0.0 - '@angular/core': ^21.0.0 || ^22.0.0 + '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 '@angular/common@21.1.0-next.0': @@ -1050,14 +1050,14 @@ packages: '@angular/compiler': 21.1.0-next.0 '@angular/compiler-cli': 21.1.0-next.0 - '@angular/material@21.0.0': - resolution: {integrity: sha512-s3+fhN7F5T1TAltZXYXOgY1wuVbICCrBJpV2TN8nJXDT0wroTYAljgBmsr6ZjDwYJewwP0OPvcj2NlOGDpa6oA==} + '@angular/material@21.1.0-next.0': + resolution: {integrity: sha512-HBz/7SwpmGqKi9paSJ44mEoTsI7UXKesl01Rg0hR2KzR5m16+oi1XKfV8061DXyX/+CyluqWByQjiChgQO3NVQ==} peerDependencies: - '@angular/cdk': 21.0.0 - '@angular/common': ^21.0.0 || ^22.0.0 - '@angular/core': ^21.0.0 || ^22.0.0 - '@angular/forms': ^21.0.0 || ^22.0.0 - '@angular/platform-browser': ^21.0.0 || ^22.0.0 + '@angular/cdk': 21.1.0-next.0 + '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/4c28145df03aff8c74d0a53f4f5602140e4d1a23': @@ -9454,7 +9454,7 @@ snapshots: '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.0.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/cdk@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) @@ -9516,9 +9516,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.0.0(103397789c5753d84dae18b75e29321d)': + '@angular/material@21.1.0-next.0(bd97c5a741e978ef84ea9f0c3ef58280)': dependencies: - '@angular/cdk': 21.0.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/cdk': 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index fa2a54763ab8..cda23a8e1cbb 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#6f9d65fce6fd79c1361b0bec264aac9dae1196ab", - "@angular/cdk": "github:angular/cdk-builds#c7d1eb8184d9637e7f783dafedbbc3b674652539", - "@angular/common": "github:angular/common-builds#7dc0a930322af5809f988db78ea18ef0709a737e", - "@angular/compiler": "github:angular/compiler-builds#43e4f018d5ed0d1411b6cde06ae8b25631cd7f76", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#0ef671b2bbddcab0da991737cf31bacc3821d2ad", - "@angular/core": "github:angular/core-builds#0bd4dfa92b564cf99e3e511658feaa02491826d7", - "@angular/forms": "github:angular/forms-builds#fda84cc3aff9524e8c12b389a47f36cce1ed5cb4", - "@angular/language-service": "github:angular/language-service-builds#484c852f2d609eb919d1c0a78053f2b3a803f3ad", - "@angular/localize": "github:angular/localize-builds#d167e954fe0ac1632133a12488e98789744a8fd8", - "@angular/material": "github:angular/material-builds#c8eb0ab63e3a53ce36e36b9d6e827d3b5200327e", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#81f090a08ad978b4d7069b2d9028c8225bfebb8e", - "@angular/platform-browser": "github:angular/platform-browser-builds#130ddcdc00d42ebab49e441882202608d58c9518", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#70eac5bc41c662abd0c7a75d79e333028cecf2dd", - "@angular/platform-server": "github:angular/platform-server-builds#52cd67b17dd78e0b6a516271767bf7a82bed80fe", - "@angular/router": "github:angular/router-builds#0303dc8895ab6a72b6a5c7e4e5d7fcdcec9b12db", - "@angular/service-worker": "github:angular/service-worker-builds#446d147b31b5ecc82ceaacc362671d1839aa71a8" + "@angular/animations": "github:angular/animations-builds#11d7706d678a19673fa431bbcefa61cf9aed54e6", + "@angular/cdk": "github:angular/cdk-builds#dae18ca09b159877511bffe923307e1f6238fb8f", + "@angular/common": "github:angular/common-builds#ab6288059a88ef5123607cea91d7052712eff065", + "@angular/compiler": "github:angular/compiler-builds#873c2e55ec20859ae2b1f149253b079b34c37a78", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#815caa207ebbd189c7970990ef3a6aaa538d453b", + "@angular/core": "github:angular/core-builds#8f5401536873152a3dcef8b42177072756c279c1", + "@angular/forms": "github:angular/forms-builds#abf953fb5bb6accece15900505c9192578b4182c", + "@angular/language-service": "github:angular/language-service-builds#b0f4eb1225f22b5adee3ac68010e98e271c4fa81", + "@angular/localize": "github:angular/localize-builds#eb16b425011073200357927b7a5dd73d939de11a", + "@angular/material": "github:angular/material-builds#dcf1def3e210a203ba3ee06574949d8768f12295", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#4907290e2aead220de18fc4e4b1b130b1c845fd6", + "@angular/platform-browser": "github:angular/platform-browser-builds#9dd4110ca6e5b44b01ba13e2b36751ff20341c51", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#6f55f14b3918bd0719917cbcfc3cdd5d4a53de97", + "@angular/platform-server": "github:angular/platform-server-builds#f13c4650e588d231b8720ae3f4bb6499e336857a", + "@angular/router": "github:angular/router-builds#1b51dfebd1302045b1f45c1c9571f3aba7104279", + "@angular/service-worker": "github:angular/service-worker-builds#5eb6f67f1023e24bf18de81bd2abd65ab18cdd73" } } From 2d0e105b068897d6ab09509a12838d3ec88fd879 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 1 Dec 2025 14:40:50 +0000 Subject: [PATCH 1897/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 6 +- packages/angular/build/package.json | 2 +- pnpm-lock.yaml | 345 +++++++++++++++------------- 3 files changed, 184 insertions(+), 169 deletions(-) diff --git a/package.json b/package.json index baa9e98bf828..02498d13a65f 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", "@eslint/compat": "2.0.0", - "@eslint/eslintrc": "3.3.1", + "@eslint/eslintrc": "3.3.3", "@eslint/js": "9.39.1", "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^29.0.0", @@ -129,7 +129,7 @@ "quicktype-core": "23.2.6", "rollup": "4.53.3", "rollup-license-plugin": "~3.1.0", - "rollup-plugin-dts": "6.2.3", + "rollup-plugin-dts": "6.3.0", "rollup-plugin-sourcemaps2": "0.5.4", "semver": "7.7.3", "source-map-support": "0.5.21", @@ -139,7 +139,7 @@ "typescript": "5.9.3", "undici": "7.16.0", "unenv": "^1.10.0", - "verdaccio": "6.2.2", + "verdaccio": "6.2.3", "verdaccio-auth-memory": "^10.0.0", "yargs-parser": "22.0.0", "zod": "4.1.13", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index f2575ec7fd8e..700cf49bed08 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.51", + "rolldown": "1.0.0-beta.52", "sass": "1.94.2", "semver": "7.7.3", "source-map-support": "0.5.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 180058acf92d..b976738be754 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,8 +74,8 @@ importers: specifier: 2.0.0 version: 2.0.0(eslint@9.39.1(jiti@2.6.1)) '@eslint/eslintrc': - specifier: 3.3.1 - version: 3.3.1 + specifier: 3.3.3 + version: 3.3.3 '@eslint/js': specifier: 9.39.1 version: 9.39.1 @@ -272,8 +272,8 @@ importers: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: - specifier: 6.2.3 - version: 6.2.3(rollup@4.53.3)(typescript@5.9.3) + specifier: 6.3.0 + version: 6.3.0(rollup@4.53.3)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 version: 0.5.4(@types/node@22.19.1)(rollup@4.53.3) @@ -302,8 +302,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.2.2 - version: 6.2.2(encoding@0.1.13) + specifier: 6.2.3 + version: 6.2.3(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 @@ -407,8 +407,8 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.51 - version: 1.0.0-beta.51 + specifier: 1.0.0-beta.52 + version: 1.0.0-beta.52 sass: specifier: 1.94.2 version: 1.94.2 @@ -2045,8 +2045,8 @@ packages: resolution: {integrity: sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@9.39.1': @@ -3063,8 +3063,8 @@ packages: resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} - '@oxc-project/types@0.98.0': - resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==} + '@oxc-project/types@0.99.0': + resolution: {integrity: sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3216,95 +3216,95 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.51': - resolution: {integrity: sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==} + '@rolldown/binding-android-arm64@1.0.0-beta.52': + resolution: {integrity: sha512-MBGIgysimZPqTDcLXI+i9VveijkP5C3EAncEogXhqfax6YXj1Tr2LY3DVuEOMIjWfMPMhtQSPup4fSTAmgjqIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.51': - resolution: {integrity: sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.52': + resolution: {integrity: sha512-MmKeoLnKu1d9j6r19K8B+prJnIZ7u+zQ+zGQ3YHXGnr41rzE3eqQLovlkvoZnRoxDGPA4ps0pGiwXy6YE3lJyg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.51': - resolution: {integrity: sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==} + '@rolldown/binding-darwin-x64@1.0.0-beta.52': + resolution: {integrity: sha512-qpHedvQBmIjT8zdnjN3nWPR2qjQyJttbXniCEKKdHeAbZG9HyNPBUzQF7AZZGwmS9coQKL+hWg9FhWzh2dZ2IA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.51': - resolution: {integrity: sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.52': + resolution: {integrity: sha512-dDp7WbPapj/NVW0LSiH/CLwMhmLwwKb3R7mh2kWX+QW85X1DGVnIEyKh9PmNJjB/+suG1dJygdtdNPVXK1hylg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': - resolution: {integrity: sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52': + resolution: {integrity: sha512-9e4l6vy5qNSliDPqNfR6CkBOAx6PH7iDV4OJiEJzajajGrVy8gc/IKKJUsoE52G8ud8MX6r3PMl97NfwgOzB7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': - resolution: {integrity: sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52': + resolution: {integrity: sha512-V48oDR84feRU2KRuzpALp594Uqlx27+zFsT6+BgTcXOtu7dWy350J1G28ydoCwKB+oxwsRPx2e7aeQnmd3YJbQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': - resolution: {integrity: sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.52': + resolution: {integrity: sha512-ENLmSQCWqSA/+YN45V2FqTIemg7QspaiTjlm327eUAMeOLdqmSOVVyrQexJGNTQ5M8sDYCgVAig2Kk01Ggmqaw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': - resolution: {integrity: sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.52': + resolution: {integrity: sha512-klahlb2EIFltSUubn/VLjuc3qxp1E7th8ukayPfdkcKvvYcQ5rJztgx8JsJSuAKVzKtNTqUGOhy4On71BuyV8g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': - resolution: {integrity: sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.52': + resolution: {integrity: sha512-UuA+JqQIgqtkgGN2c/AQ5wi8M6mJHrahz/wciENPTeI6zEIbbLGoth5XN+sQe2pJDejEVofN9aOAp0kaazwnVg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': - resolution: {integrity: sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.52': + resolution: {integrity: sha512-1BNQW8u4ro8bsN1+tgKENJiqmvc+WfuaUhXzMImOVSMw28pkBKdfZtX2qJPADV3terx+vNJtlsgSGeb3+W6Jiw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': - resolution: {integrity: sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.52': + resolution: {integrity: sha512-K/p7clhCqJOQpXGykrFaBX2Dp9AUVIDHGc+PtFGBwg7V+mvBTv/tsm3LC3aUmH02H2y3gz4y+nUTQ0MLpofEEg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': - resolution: {integrity: sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52': + resolution: {integrity: sha512-a4EkXBtnYYsKipjS7QOhEBM4bU5IlR9N1hU+JcVEVeuTiaslIyhWVKsvf7K2YkQHyVAJ+7/A9BtrGqORFcTgng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': - resolution: {integrity: sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52': + resolution: {integrity: sha512-5ZXcYyd4GxPA6QfbGrNcQjmjbuLGvfz6728pZMsQvGHI+06LT06M6TPtXvFvLgXtexc+OqvFe1yAIXJU1gob/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': - resolution: {integrity: sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.52': + resolution: {integrity: sha512-tzpnRQXJrSzb8Z9sm97UD3cY0toKOImx+xRKsDLX4zHaAlRXWh7jbaKBePJXEN7gNw7Nm03PBNwphdtA8KSUYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.51': - resolution: {integrity: sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==} + '@rolldown/pluginutils@1.0.0-beta.52': + resolution: {integrity: sha512-/L0htLJZbaZFL1g9OHOblTxbCYIGefErJjtYOwgl9ZqNx27P3L0SDfjhhHIss32gu5NWgnxuT2a2Hnnv6QGHKA==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3910,20 +3910,20 @@ packages: resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@verdaccio/auth@8.0.0-next-8.27': - resolution: {integrity: sha512-o9CWPX4vxpTNYvFwIH+0Els9uMSrqNA3vTraqTPP0F5a6nGhnRsl4E7Lsiir46Q6sDVXSXmQnEvbS9nb1amIfw==} + '@verdaccio/auth@8.0.0-next-8.28': + resolution: {integrity: sha512-tM0URyKFq1dGFaoBN0whT1SDur1lBKG+pkQwxgJIXgH04DmefLCH63pn/K1iDDfLwqyxMewpmvMTBS390SSR+A==} engines: {node: '>=18'} - '@verdaccio/config@8.0.0-next-8.27': - resolution: {integrity: sha512-0gjxthfLHaGcR3ohJWxL4iRnhxsPYSLcBnJs1JRCeqQXAjxrCD0mmycH/5NkdiPgScp+F+VFZ1+FC/F3plf07A==} + '@verdaccio/config@8.0.0-next-8.28': + resolution: {integrity: sha512-yl7lcSOzT9y7EgUald4bZXIKxhZdAPRvtDZwmsPL433bc+CInyriqYCo6L4fZgFxYAdj9iDzvZIJtCtsFc+8NA==} engines: {node: '>=18'} '@verdaccio/core@8.0.0-next-8.21': resolution: {integrity: sha512-n3Y8cqf84cwXxUUdTTfEJc8fV55PONPKijCt2YaC0jilb5qp1ieB3d4brqTOdCdXuwkmnG2uLCiGpUd/RuSW0Q==} engines: {node: '>=18'} - '@verdaccio/core@8.0.0-next-8.27': - resolution: {integrity: sha512-9CB83WSa0DRGB8ZEXFNdnE0MSsANKONirR7oD7y0OX3MDnzqwknzQVKPhnWoWL6lBesPoKLoEUF1DKkIMrPpOA==} + '@verdaccio/core@8.0.0-next-8.28': + resolution: {integrity: sha512-W/wBvgF53CLr7m2zDV4QnHGYh0M/D3HTm5OuTxIjeclwDZGH2UHSdiI2BFFhvW7zt6MQVjfTQdgtcH4cmLGXhQ==} engines: {node: '>=18'} '@verdaccio/file-locking@10.3.1': @@ -3934,59 +3934,59 @@ packages: resolution: {integrity: sha512-F6xQWvsZnEyGjugrYfe+D/ChSVudXmBFWi8xuTIX6PAdp7dk9x9biOGQFW8O3GSAK8UhJ6WlRisQKJeYRa6vWQ==} engines: {node: '>=18'} - '@verdaccio/hooks@8.0.0-next-8.27': - resolution: {integrity: sha512-0oaAM9r+b3vx2h6hCYl2509BtkG1KAAZwuPNHCx1siW/faB9Cdzl+gi+SpqwZuuIESjbzrdB+RYxSsVEDe9pBg==} + '@verdaccio/hooks@8.0.0-next-8.28': + resolution: {integrity: sha512-K+Cu9Pls8G2Wvu6pOYuelCTNBLpSOpmodJaPbUVv/kkhsTphgRiRENhOZGbiPhfVKehQeUCj9WiF8C7xzTf2Vg==} engines: {node: '>=18'} - '@verdaccio/loaders@8.0.0-next-8.17': - resolution: {integrity: sha512-24fDZrF3r7Qi8DUinQvnvDXdQBGX4zUby32XIAw/4mFviRdtSfAdHljIR7URVXl5oWTUhwwuTOCyubKZfVi/sA==} + '@verdaccio/loaders@8.0.0-next-8.18': + resolution: {integrity: sha512-p8o/DST+TPLz1pTqnduYKMggNxYO5ET+3a4UXLArVDWbhqNnYFRmZVyIW8r0JFOuRwUKdpcJMkXefufMRm8B8g==} engines: {node: '>=18'} '@verdaccio/local-storage-legacy@11.1.1': resolution: {integrity: sha512-P6ahH2W6/KqfJFKP+Eid7P134FHDLNvHa+i8KVgRVBeo2/IXb6FEANpM1mCVNvPANu0LCAmNJBOXweoUKViaoA==} engines: {node: '>=18'} - '@verdaccio/logger-commons@8.0.0-next-8.27': - resolution: {integrity: sha512-rBOMij8VH4IHCGYi7dTjwL765ZCyl/LI5JHaMgQFUKmp3no/l9R/Xr9Ok1MQhHEgjYNp1tJf6yCq1Nz5+VQLmQ==} + '@verdaccio/logger-commons@8.0.0-next-8.28': + resolution: {integrity: sha512-GlIpSCKC6uKR4D9BZFbCiiJHeAaZ/n8izYqMKqFV5RKOrdMaMmYKjVFLvjGDpd22AFnCvSUfgrKCX1FXe8ZFqw==} engines: {node: '>=18'} '@verdaccio/logger-prettify@8.0.0-next-8.4': resolution: {integrity: sha512-gjI/JW29fyalutn/X1PQ0iNuGvzeVWKXRmnLa7gXVKhdi4p37l/j7YZ7n44XVbbiLIKAK0pbavEg9Yr66QrYaA==} engines: {node: '>=18'} - '@verdaccio/logger@8.0.0-next-8.27': - resolution: {integrity: sha512-IFumcJwthD721GoHkFdcuiwkxIhQUoavUtN06kY7Rxt25Cp+9S8E9Lhgvz5svG71NQkpHxiPBxbP1RJDKLyUSg==} + '@verdaccio/logger@8.0.0-next-8.28': + resolution: {integrity: sha512-Iss+5mUJSvkDIwOWv6lk9OZjHl9PKHXf4FwM/YI5a77B06r5LYvdpppKVwGxBFn8jFcyGBl97zz8uqz6uD/rhQ==} engines: {node: '>=18'} - '@verdaccio/middleware@8.0.0-next-8.27': - resolution: {integrity: sha512-8nZskLwgvlRFWCy53heUrl6oLLxjs26Up9b5wb4sko6ASCsgVIBA9bUO3AyfEFSkCWtTBEceDgY+HhMh8fHORg==} + '@verdaccio/middleware@8.0.0-next-8.28': + resolution: {integrity: sha512-L2PL4JJQ6dKipNrA/weWTEw47ZUgiJrvKb7g/z3yuDR5O/C7AJ+mOxqsWww0kgq0cvQm+kOXMVY9Oq1g9a+Agw==} engines: {node: '>=18'} '@verdaccio/search-indexer@8.0.0-next-8.5': resolution: {integrity: sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==} engines: {node: '>=18'} - '@verdaccio/signature@8.0.0-next-8.19': - resolution: {integrity: sha512-sYS7kYlR4/vRMtX6p6g6Facm+d3/r2Z0PCRze1fMwBQfWzwDwtxObWlDavJoS0daUEEyeml9z/GVMpXLieC9xg==} + '@verdaccio/signature@8.0.0-next-8.20': + resolution: {integrity: sha512-1kwO+l7cLiDjXUwqVTvaKXvcI4C23u4cZCVnGGKXRcahrbVm7Hdh12wSIX5V9gV6O3VlWH458JxoimpPAo4Oxw==} 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.27': - resolution: {integrity: sha512-HgX9KXk2oAeQag2WjieAGqgvj9DvvKLAEK2ayR2++LAdvIaaI0EyFqMSvCUFVNylGJ6iM6bUS0W8f8D9FTJvpw==} + '@verdaccio/tarball@13.0.0-next-8.28': + resolution: {integrity: sha512-89FHelT4xsrBeAk6WYhhUR6cgpky1IAgBiN3VtWs2b3KA8XesZeG7G0UDygTVEe2O0etXYtrz9vlqZ9nYEaAGA==} engines: {node: '>=18'} - '@verdaccio/ui-theme@8.0.0-next-8.27': - resolution: {integrity: sha512-TkiPPOnnnM+pGJ71A8JDIYwL2VFmJrf7JT1H/fxXMrSwwjVgFw3CNzeeH3XhGGOPmygGimg+zKZzROc6BrFz9A==} + '@verdaccio/ui-theme@8.0.0-next-8.28': + resolution: {integrity: sha512-TzhdphchcvsI38UPP5hdNJh+LAFvRhYlfrtBuqlZy0BHeGM2i2MNioGl2il2NLVteqXAK9MqnuC5WGxCFXoDYw==} - '@verdaccio/url@13.0.0-next-8.27': - resolution: {integrity: sha512-WmyRot1sT53vgm0ZSK6DSsH+wP9RYQoFp+ugfnw7R8iM2aSQMzoRnweTldzdOPQRTlA6jrpHyR2T6lUxOPO8qA==} + '@verdaccio/url@13.0.0-next-8.28': + resolution: {integrity: sha512-42wA5LkXWpY42pONEHQhAC5h8nFXdDHChP22swOitTp1xzvAs+PmwUlrol7kMXMWO04skDCSSW1Q54eNkTx/rA==} engines: {node: '>=18'} - '@verdaccio/utils@8.1.0-next-8.27': - resolution: {integrity: sha512-yHGG6wMw45e1L8/gdx8u8L8hUm+H7gBV4ENuL5ExKs5XiQvMJz0WpwQU46ALXt5ZmYBX7i9yoLxZUGO/iNQyvg==} + '@verdaccio/utils@8.1.0-next-8.28': + resolution: {integrity: sha512-/AYNGafG9T90NPGsq6eDMuXx+41tlWfiYsCchgwz074GWEitZ2nAZQWWNvYvFVB2hXzord52muEVTWjgaZPOdQ==} engines: {node: '>=18'} '@vitejs/plugin-basic-ssl@2.1.0': @@ -7972,8 +7972,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.51: - resolution: {integrity: sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==} + rolldown@1.0.0-beta.52: + resolution: {integrity: sha512-Hbnpljue+JhMJrlOjQ1ixp9me7sUec7OjFvS+A1Qm8k8Xyxmw3ZhxFu7LlSXW1s9AX3POE9W9o2oqCEeR5uDmg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7988,6 +7988,13 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 + rollup-plugin-dts@6.3.0: + resolution: {integrity: sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 + rollup-plugin-sourcemaps2@0.5.4: resolution: {integrity: sha512-XK6ITvEsKtUFN1GQbYKoqilwh1yKxTS9BLaFlVsm0IaYUYe3eVnhBWzKP4AHbkBO2BNOheGNlf407K7wCj6Rrw==} engines: {node: '>=18.0.0'} @@ -8875,20 +8882,20 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.27: - resolution: {integrity: sha512-RM2nf2Jtk4NFZc/AaQSMHlpHUCXUYzMhhCNxq59dZLDSAtcD4uBapZoTQEHTyjpCpn6jmI6ijkFG19pg5tbShg==} + verdaccio-audit@13.0.0-next-8.28: + resolution: {integrity: sha512-vcl+V4R43QFSrch0QggG92hEd+aGh7fGBqkA1pcF/m4eJ2JQw7+/8JD5VJ/qCnt7Udnz9Jmey6SvgFgxsB6ODA==} engines: {node: '>=18'} verdaccio-auth-memory@10.3.1: resolution: {integrity: sha512-3m4VH5lD3qdRkDvcvVzHP6YftcsRXgu3WZuspcrH0/76+ugI2wkVezgBDbu4WRwJqRvG0MEf8Zxoup9zVK5SVw==} engines: {node: '>=18'} - verdaccio-htpasswd@13.0.0-next-8.27: - resolution: {integrity: sha512-cVrMjOTnjYbPh5b5bVtRE/UTeIq6xRHOoCf7t5MZhSxG0Y900ooBXXiRNffVklRwY8LE54hvbUjYqaheo9Upzw==} + verdaccio-htpasswd@13.0.0-next-8.28: + resolution: {integrity: sha512-iAkhusaNUEvBeq+7Xn8YUqq4hXoVuAteZPrG4dwsqSjVliS7YQGdysQKYG89QnN9iMKAEvuSzhb+GP0c5dbL0g==} engines: {node: '>=18'} - verdaccio@6.2.2: - resolution: {integrity: sha512-hMIcPES81Cx+9xMJtBrPvLDODV433CRcen+akIu4NRQEb6rBHuZfWMhPZi1J7Ri3wSKLgp3ahexVKrkb8tTbjQ==} + verdaccio@6.2.3: + resolution: {integrity: sha512-WADj3xYiuxjI1IFPLdN8Qskfmg35wERIlgNp/quA3XUl7bt94zc66L2FJ/ldjWmTClS7xjL2fXGOiJWJXFeK7g==} engines: {node: '>=18'} hasBin: true @@ -10576,7 +10583,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 debug: 4.4.3(supports-color@10.2.2) @@ -11718,7 +11725,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.38.0': {} - '@oxc-project/types@0.98.0': {} + '@oxc-project/types@0.99.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11844,51 +11851,51 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.51': + '@rolldown/binding-android-arm64@1.0.0-beta.52': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.51': + '@rolldown/binding-darwin-arm64@1.0.0-beta.52': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.51': + '@rolldown/binding-darwin-x64@1.0.0-beta.52': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.51': + '@rolldown/binding-freebsd-x64@1.0.0-beta.52': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.52': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.52': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.51': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.52': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.51': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.52': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.51': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.52': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.52': optional: true - '@rolldown/pluginutils@1.0.0-beta.51': {} + '@rolldown/pluginutils@1.0.0-beta.52': {} '@rollup/plugin-alias@6.0.0(rollup@4.53.3)': optionalDependencies: @@ -12545,21 +12552,21 @@ snapshots: '@typescript-eslint/types': 8.48.0 eslint-visitor-keys: 4.2.1 - '@verdaccio/auth@8.0.0-next-8.27': + '@verdaccio/auth@8.0.0-next-8.28': dependencies: - '@verdaccio/config': 8.0.0-next-8.27 - '@verdaccio/core': 8.0.0-next-8.27 - '@verdaccio/loaders': 8.0.0-next-8.17 - '@verdaccio/signature': 8.0.0-next-8.19 + '@verdaccio/config': 8.0.0-next-8.28 + '@verdaccio/core': 8.0.0-next-8.28 + '@verdaccio/loaders': 8.0.0-next-8.18 + '@verdaccio/signature': 8.0.0-next-8.20 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 - verdaccio-htpasswd: 13.0.0-next-8.27 + verdaccio-htpasswd: 13.0.0-next-8.28 transitivePeerDependencies: - supports-color - '@verdaccio/config@8.0.0-next-8.27': + '@verdaccio/config@8.0.0-next-8.28': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) js-yaml: 4.1.1 lodash: 4.17.21 @@ -12575,7 +12582,7 @@ snapshots: process-warning: 1.0.0 semver: 7.7.2 - '@verdaccio/core@8.0.0-next-8.27': + '@verdaccio/core@8.0.0-next-8.28': dependencies: ajv: 8.17.1 http-errors: 2.0.0 @@ -12592,19 +12599,19 @@ snapshots: dependencies: lockfile: 1.0.4 - '@verdaccio/hooks@8.0.0-next-8.27': + '@verdaccio/hooks@8.0.0-next-8.28': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 - '@verdaccio/logger': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 + '@verdaccio/logger': 8.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) got-cjs: 12.5.4 handlebars: 4.7.8 transitivePeerDependencies: - supports-color - '@verdaccio/loaders@8.0.0-next-8.17': + '@verdaccio/loaders@8.0.0-next-8.18': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) lodash: 4.17.21 transitivePeerDependencies: @@ -12623,9 +12630,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/logger-commons@8.0.0-next-8.27': + '@verdaccio/logger-commons@8.0.0-next-8.28': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 '@verdaccio/logger-prettify': 8.0.0-next-8.4 colorette: 2.0.20 debug: 4.4.3(supports-color@10.2.2) @@ -12641,18 +12648,18 @@ snapshots: pino-abstract-transport: 1.2.0 sonic-boom: 3.8.1 - '@verdaccio/logger@8.0.0-next-8.27': + '@verdaccio/logger@8.0.0-next-8.28': dependencies: - '@verdaccio/logger-commons': 8.0.0-next-8.27 + '@verdaccio/logger-commons': 8.0.0-next-8.28 pino: 9.14.0 transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.0-next-8.27': + '@verdaccio/middleware@8.0.0-next-8.28': dependencies: - '@verdaccio/config': 8.0.0-next-8.27 - '@verdaccio/core': 8.0.0-next-8.27 - '@verdaccio/url': 13.0.0-next-8.27 + '@verdaccio/config': 8.0.0-next-8.28 + '@verdaccio/core': 8.0.0-next-8.28 + '@verdaccio/url': 13.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) express: 4.21.2 express-rate-limit: 5.5.1 @@ -12663,10 +12670,10 @@ snapshots: '@verdaccio/search-indexer@8.0.0-next-8.5': {} - '@verdaccio/signature@8.0.0-next-8.19': + '@verdaccio/signature@8.0.0-next-8.20': dependencies: - '@verdaccio/config': 8.0.0-next-8.27 - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/config': 8.0.0-next-8.28 + '@verdaccio/core': 8.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) jsonwebtoken: 9.0.2 transitivePeerDependencies: @@ -12674,10 +12681,10 @@ snapshots: '@verdaccio/streams@10.2.1': {} - '@verdaccio/tarball@13.0.0-next-8.27': + '@verdaccio/tarball@13.0.0-next-8.28': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 - '@verdaccio/url': 13.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 + '@verdaccio/url': 13.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) gunzip-maybe: 1.4.2 tar-stream: 3.1.7 @@ -12686,19 +12693,19 @@ snapshots: - react-native-b4a - supports-color - '@verdaccio/ui-theme@8.0.0-next-8.27': {} + '@verdaccio/ui-theme@8.0.0-next-8.28': {} - '@verdaccio/url@13.0.0-next-8.27': + '@verdaccio/url@13.0.0-next-8.28': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 debug: 4.4.3(supports-color@10.2.2) validator: 13.15.23 transitivePeerDependencies: - supports-color - '@verdaccio/utils@8.1.0-next-8.27': + '@verdaccio/utils@8.1.0-next-8.28': dependencies: - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 lodash: 4.17.21 minimatch: 7.4.6 @@ -14534,7 +14541,7 @@ snapshots: '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.1 + '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.1 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 @@ -14716,7 +14723,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -17453,25 +17460,25 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-beta.51: + rolldown@1.0.0-beta.52: dependencies: - '@oxc-project/types': 0.98.0 - '@rolldown/pluginutils': 1.0.0-beta.51 + '@oxc-project/types': 0.99.0 + '@rolldown/pluginutils': 1.0.0-beta.52 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.51 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.51 - '@rolldown/binding-darwin-x64': 1.0.0-beta.51 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.51 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.51 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.51 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.51 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.51 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.51 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.51 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.51 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.51 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.51 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.51 + '@rolldown/binding-android-arm64': 1.0.0-beta.52 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.52 + '@rolldown/binding-darwin-x64': 1.0.0-beta.52 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.52 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.52 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.52 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.52 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.52 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.52 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.52 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.52 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.52 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.52 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.52 rollup-license-plugin@3.1.0: dependencies: @@ -17488,6 +17495,14 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 + rollup-plugin-dts@6.3.0(rollup@4.53.3)(typescript@5.9.3): + dependencies: + magic-string: 0.30.21 + rollup: 4.53.3 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.1)(rollup@4.53.3): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.53.3) @@ -18534,10 +18549,10 @@ snapshots: vary@1.1.2: {} - verdaccio-audit@13.0.0-next-8.27(encoding@0.1.13): + verdaccio-audit@13.0.0-next-8.28(encoding@0.1.13): dependencies: - '@verdaccio/config': 8.0.0-next-8.27 - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/config': 8.0.0-next-8.28 + '@verdaccio/core': 8.0.0-next-8.28 express: 4.21.2 https-proxy-agent: 5.0.1(supports-color@10.2.2) node-fetch: 2.6.7(encoding@0.1.13) @@ -18552,9 +18567,9 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio-htpasswd@13.0.0-next-8.27: + verdaccio-htpasswd@13.0.0-next-8.28: dependencies: - '@verdaccio/core': 8.0.0-next-8.27 + '@verdaccio/core': 8.0.0-next-8.28 '@verdaccio/file-locking': 13.0.0-next-8.6 apache-md5: 1.1.8 bcryptjs: 2.4.3 @@ -18564,24 +18579,24 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.2.2(encoding@0.1.13): + verdaccio@6.2.3(encoding@0.1.13): dependencies: '@cypress/request': 3.0.9 - '@verdaccio/auth': 8.0.0-next-8.27 - '@verdaccio/config': 8.0.0-next-8.27 - '@verdaccio/core': 8.0.0-next-8.27 - '@verdaccio/hooks': 8.0.0-next-8.27 - '@verdaccio/loaders': 8.0.0-next-8.17 + '@verdaccio/auth': 8.0.0-next-8.28 + '@verdaccio/config': 8.0.0-next-8.28 + '@verdaccio/core': 8.0.0-next-8.28 + '@verdaccio/hooks': 8.0.0-next-8.28 + '@verdaccio/loaders': 8.0.0-next-8.18 '@verdaccio/local-storage-legacy': 11.1.1 - '@verdaccio/logger': 8.0.0-next-8.27 - '@verdaccio/middleware': 8.0.0-next-8.27 + '@verdaccio/logger': 8.0.0-next-8.28 + '@verdaccio/middleware': 8.0.0-next-8.28 '@verdaccio/search-indexer': 8.0.0-next-8.5 - '@verdaccio/signature': 8.0.0-next-8.19 + '@verdaccio/signature': 8.0.0-next-8.20 '@verdaccio/streams': 10.2.1 - '@verdaccio/tarball': 13.0.0-next-8.27 - '@verdaccio/ui-theme': 8.0.0-next-8.27 - '@verdaccio/url': 13.0.0-next-8.27 - '@verdaccio/utils': 8.1.0-next-8.27 + '@verdaccio/tarball': 13.0.0-next-8.28 + '@verdaccio/ui-theme': 8.0.0-next-8.28 + '@verdaccio/url': 13.0.0-next-8.28 + '@verdaccio/utils': 8.1.0-next-8.28 JSONStream: 1.3.5 async: 3.2.6 clipanion: 4.0.0-rc.4 @@ -18594,8 +18609,8 @@ snapshots: lru-cache: 7.18.3 mime: 3.0.0 semver: 7.7.3 - verdaccio-audit: 13.0.0-next-8.27(encoding@0.1.13) - verdaccio-htpasswd: 13.0.0-next-8.27 + verdaccio-audit: 13.0.0-next-8.28(encoding@0.1.13) + verdaccio-htpasswd: 13.0.0-next-8.28 transitivePeerDependencies: - bare-abort-controller - encoding From 98e10fa0f29cc8f6cf6a25c45c6888a79465eaf7 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 1 Dec 2025 14:35:31 +0000 Subject: [PATCH 1898/2162] fix(@angular-devkit/schematics): remove lazy imports in node tasks This commit replaces lazy imports with static imports in the node tasks of `@angular-devkit/schematics`. This change fixes an issue where migrations could fail during an update process if the package layout changes on disk (e.g. due to `npm` hoisting changes) after the main module is loaded but before the lazy chunks are requested. By using static imports, we ensure all necessary code is loaded upfront. Closes #31974 --- .../angular_devkit/schematics/tasks/node/index.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/angular_devkit/schematics/tasks/node/index.ts b/packages/angular_devkit/schematics/tasks/node/index.ts index 300a9ea243d4..419b534cde4b 100644 --- a/packages/angular_devkit/schematics/tasks/node/index.ts +++ b/packages/angular_devkit/schematics/tasks/node/index.ts @@ -7,29 +7,28 @@ */ import { TaskExecutor, TaskExecutorFactory } from '../../src'; +import NodePackageExecutor from '../package-manager/executor'; import { NodePackageName, NodePackageTaskFactoryOptions } from '../package-manager/options'; +import RepositoryInitializerExecutor from '../repo-init/executor'; import { RepositoryInitializerName, RepositoryInitializerTaskFactoryOptions, } from '../repo-init/options'; +import RunSchematicExecutor from '../run-schematic/executor'; import { RunSchematicName } from '../run-schematic/options'; export class BuiltinTaskExecutor { static readonly NodePackage: TaskExecutorFactory = { name: NodePackageName, - create: (options) => - import('../package-manager/executor').then((mod) => mod.default(options)) as Promise< - TaskExecutor<{}> - >, + create: async (options) => NodePackageExecutor(options) as TaskExecutor<{}>, }; static readonly RepositoryInitializer: TaskExecutorFactory = { name: RepositoryInitializerName, - create: (options) => import('../repo-init/executor').then((mod) => mod.default(options)), + create: async (options) => RepositoryInitializerExecutor(options) as TaskExecutor<{}>, }; static readonly RunSchematic: TaskExecutorFactory<{}> = { name: RunSchematicName, - create: () => - import('../run-schematic/executor').then((mod) => mod.default()) as Promise>, + create: async () => RunSchematicExecutor() as TaskExecutor<{}>, }; } From 63c3e3f6406d345e777ca18bfad7d6d701e5c4ea Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 1 Dec 2025 09:45:48 -0500 Subject: [PATCH 1899/2162] fix(@angular/build): add filename truncation to test discovery Adds truncation logic to the `generateNameFromPath` function in the unit test discovery process. This prevents issues with filesystems that have filename length limits. When a generated test entrypoint name exceeds 128 characters, it is truncated. The truncated name consists of a prefix of the original name, an 8-character SHA256 hash of the full path, and a suffix of the original name, ensuring uniqueness while keeping the name readable. Unit tests are included to verify the truncation behavior for long filenames. --- .../src/builders/unit-test/test-discovery.ts | 30 +++++- .../builders/unit-test/test-discovery_spec.ts | 91 +++++++++++++++++++ 2 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 packages/angular/build/src/builders/unit-test/test-discovery_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index 47bfed884ad3..d4f097b388f7 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import { createHash } from 'node:crypto'; import { type PathLike, constants, promises as fs } from 'node:fs'; import os from 'node:os'; import { basename, dirname, extname, isAbsolute, join, relative } from 'node:path'; @@ -18,6 +19,9 @@ import { toPosixPath } from '../../utils/path'; */ const TEST_FILE_INFIXES = ['.spec', '.test']; +/** Maximum length for a generated test entrypoint name. */ +const MAX_FILENAME_LENGTH = 128; + /** * Finds all test files in the project. This function implements a special handling * for static paths (non-globs) to improve developer experience. For example, if a @@ -120,7 +124,7 @@ export function getTestEntrypoints( * @param removeTestExtension Whether to remove the test file infix and extension from the result. * @returns A dash-cased name derived from the relative path of the test file. */ -function generateNameFromPath( +export function generateNameFromPath( testFile: string, roots: string[], removeTestExtension: boolean, @@ -155,7 +159,29 @@ function generateNameFromPath( result += char === '/' || char === '\\' ? '-' : char; } - return result; + return truncateName(result, relativePath); +} + +/** + * Truncates a generated name if it exceeds the maximum allowed filename length. + * If truncation occurs, the name will be shortened by replacing a middle segment + * with an 8-character SHA256 hash of the original full path to maintain uniqueness. + * + * @param name The generated name to potentially truncate. + * @param originalPath The original full path from which the name was derived. Used for hashing. + * @returns The original name if within limits, or a truncated name with a hash. + */ +function truncateName(name: string, originalPath: string): string { + if (name.length <= MAX_FILENAME_LENGTH) { + return name; + } + + const hash = createHash('sha256').update(originalPath).digest('hex').substring(0, 8); + const availableLength = MAX_FILENAME_LENGTH - hash.length - 2; // 2 for '-' separators + const prefixLength = Math.floor(availableLength / 2); + const suffixLength = availableLength - prefixLength; + + return `${name.substring(0, prefixLength)}-${hash}-${name.substring(name.length - suffixLength)}`; } /** diff --git a/packages/angular/build/src/builders/unit-test/test-discovery_spec.ts b/packages/angular/build/src/builders/unit-test/test-discovery_spec.ts new file mode 100644 index 000000000000..617839868d50 --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/test-discovery_spec.ts @@ -0,0 +1,91 @@ +/** + * @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 { generateNameFromPath } from './test-discovery'; + +describe('generateNameFromPath', () => { + const roots = ['/project/src/', '/project/']; + + it('should generate a dash-cased name from a simple path', () => { + const testFile = '/project/src/app/components/my-component.spec.ts'; + const result = generateNameFromPath(testFile, roots, true); + expect(result).toBe('app-components-my-component'); + }); + + it('should handle Windows-style paths', () => { + const testFile = 'C:\\project\\src\\app\\components\\my-component.spec.ts'; + const result = generateNameFromPath(testFile, ['C:\\project\\src\\'], true); + expect(result).toBe('app-components-my-component'); + }); + + it('should remove test extensions when removeTestExtension is true', () => { + const testFile = '/project/src/app/utils/helpers.test.ts'; + const result = generateNameFromPath(testFile, roots, true); + expect(result).toBe('app-utils-helpers'); + }); + + it('should not remove test extensions when removeTestExtension is false', () => { + const testFile = '/project/src/app/utils/helpers.test.ts'; + const result = generateNameFromPath(testFile, roots, false); + expect(result).toBe('app-utils-helpers.test'); + }); + + it('should handle paths with leading dots and slashes', () => { + const testFile = '/project/src/./app/services/api.service.spec.ts'; + const result = generateNameFromPath(testFile, roots, true); + expect(result).toBe('app-services-api.service'); + }); + + it('should return the basename if no root matches', () => { + const testFile = '/unrelated/path/to/some/file.spec.ts'; + const result = generateNameFromPath(testFile, roots, true); + expect(result).toBe('file'); + }); + + it('should truncate a long file name', () => { + const longPath = + 'a/very/long/path/that/definitely/exceeds/the/maximum/allowed/length/for/a/filename/in/order/to/trigger/the/truncation/logic/in/the/function.spec.ts'; // eslint-disable-line max-len + const testFile = `/project/src/${longPath}`; + const result = generateNameFromPath(testFile, roots, true); + + expect(result.length).toBeLessThanOrEqual(128); + expect(result).toBe( + 'a-very-long-path-that-definitely-exceeds-the-maximum-allowe-9cf40291-me-in-order-to-trigger-the-truncation-logic-in-the-function', + ); // eslint-disable-line max-len + }); + + it('should generate different hashes for different paths with similar truncated names', () => { + const longPath1 = + 'a/very/long/path/that/definitely/exceeds/the/maximum/allowed/length/for/a/filename/in/order/to/trigger/the/truncation/logic/variant-a.spec.ts'; // eslint-disable-line max-len + const longPath2 = + 'a/very/long/path/that/definitely/exceeds/the/maximum/allowed/length/for/a/filename/in/order/to/trigger/the/truncation/logic/variant-b.spec.ts'; // eslint-disable-line max-len + + const testFile1 = `/project/src/${longPath1}`; + const testFile2 = `/project/src/${longPath2}`; + + const result1 = generateNameFromPath(testFile1, roots, true); + const result2 = generateNameFromPath(testFile2, roots, true); + + expect(result1).not.toBe(result2); + // The hash is always 8 characters long and is surrounded by hyphens. + const hashRegex = /-[a-f0-9]{8}-/; + const hash1 = result1.match(hashRegex)?.[0]; + const hash2 = result2.match(hashRegex)?.[0]; + + expect(hash1).toBeDefined(); + expect(hash2).toBeDefined(); + expect(hash1).not.toBe(hash2); + }); + + it('should not truncate a filename that is exactly the max length', () => { + const name = 'a'.repeat(128); + const testFile = `/project/src/${name}.spec.ts`; + const result = generateNameFromPath(testFile, roots, true); + expect(result).toBe(name); + }); +}); From 8d8ba4f61fc07dd670b705c48e82cf63424b3cce Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 1 Dec 2025 11:41:25 -0500 Subject: [PATCH 1900/2162] fix(@angular/build): allow overriding Vitest coverage `reportsDirectory` option The Vitest `reportsDirectory` coverage option can now be customized via a `runnerConfig` configuration file. --- .../unit-test/runners/vitest/plugins.ts | 32 +++++++----- .../behavior/runner-config-vitest_spec.ts | 50 +++++++++++++++++++ 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 93ef7cfb9f85..102b6a6101fa 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -154,7 +154,11 @@ export async function createVitestConfigPlugin( return { test: { - coverage: await generateCoverageOption(options.coverage, projectName), + coverage: await generateCoverageOption( + options.coverage, + testConfig?.coverage, + projectName, + ), // eslint-disable-next-line @typescript-eslint/no-explicit-any ...(reporters ? ({ reporters } as any) : {}), projects: [projectConfig], @@ -303,11 +307,12 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins } async function generateCoverageOption( - coverage: NormalizedUnitTestBuilderOptions['coverage'], + optionsCoverage: NormalizedUnitTestBuilderOptions['coverage'], + configCoverage: VitestCoverageOption | undefined, projectName: string, ): Promise { let defaultExcludes: string[] = []; - if (coverage.exclude) { + if (optionsCoverage.exclude) { try { const vitestConfig = await import('vitest/config'); defaultExcludes = vitestConfig.coverageConfigDefaults.exclude; @@ -315,28 +320,31 @@ async function generateCoverageOption( } return { - enabled: coverage.enabled, excludeAfterRemap: true, + reportsDirectory: + configCoverage?.reportsDirectory ?? toPosixPath(path.join('coverage', projectName)), + ...(optionsCoverage.enabled !== undefined ? { enabled: optionsCoverage.enabled } : {}), // Vitest performs a pre-check and a post-check for sourcemaps. // The pre-check uses the bundled files, so specific bundled entry points and chunks need to be included. // The post-check uses the original source files, so the user's include is used. - ...(coverage.include ? { include: ['spec-*.js', 'chunk-*.js', ...coverage.include] } : {}), - reportsDirectory: toPosixPath(path.join('coverage', projectName)), - thresholds: coverage.thresholds, - watermarks: coverage.watermarks, + ...(optionsCoverage.include + ? { include: ['spec-*.js', 'chunk-*.js', ...optionsCoverage.include] } + : {}), + thresholds: optionsCoverage.thresholds, + watermarks: optionsCoverage.watermarks, // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures - ...(coverage.exclude + ...(optionsCoverage.exclude ? { exclude: [ // Augment the default exclude https://vitest.dev/config/#coverage-exclude // with the user defined exclusions - ...coverage.exclude, + ...optionsCoverage.exclude, ...defaultExcludes, ], } : {}), - ...(coverage.reporters - ? ({ reporter: coverage.reporters } satisfies VitestCoverageOption) + ...(optionsCoverage.reporters + ? ({ reporter: optionsCoverage.reporters } satisfies VitestCoverageOption) : {}), }; } diff --git a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts index f68dd8daa171..603c69f533ea 100644 --- a/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/behavior/runner-config-vitest_spec.ts @@ -42,6 +42,56 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { harness.expectFile('vitest-results.xml').toExist(); }); + it('should use custom reportsDirectory defined in runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: 'vitest.config.ts', + coverage: true, + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + coverage: { + reportsDirectory: './custom-coverage-reports', + }, + }, + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + harness.expectFile('custom-coverage-reports/coverage-final.json').toExist(); + }); + + it('should use default reportsDirectory when not defined in runnerConfig file', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + coverage: true, + runnerConfig: 'vitest.config.ts', + }); + + harness.writeFile( + 'vitest.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + coverage: {}, + }, + }); + `, + ); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + harness.expectFile('coverage/test/coverage-final.json').toExist(); + }); + it('should exclude test files based on runnerConfig file', async () => { harness.useTarget('test', { ...BASE_OPTIONS, From 6b3d798700acc9b4d6cd6620ba1ef1c29b7ddbf2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 24 Nov 2025 13:00:02 -0500 Subject: [PATCH 1901/2162] refactor(@angular/cli): introduce Host abstraction for `find_examples` MCP tool This commit introduces a `Host` abstraction layer for the `find_examples` MCP tool, enhancing its testability and modularity by decoupling it from direct Node.js APIs. --- packages/angular/cli/src/commands/mcp/host.ts | 43 +++++- .../cli/src/commands/mcp/mcp-server.ts | 2 + .../cli/src/commands/mcp/testing/mock-host.ts | 5 +- .../mcp/tools/examples/database-discovery.ts | 11 +- .../tools/examples/database-discovery_spec.ts | 137 ++++++++++++++++++ .../src/commands/mcp/tools/examples/index.ts | 5 +- .../mcp/tools/examples/runtime-database.ts | 11 +- .../src/commands/mcp/tools/tool-registry.ts | 2 + 8 files changed, 202 insertions(+), 14 deletions(-) create mode 100644 packages/angular/cli/src/commands/mcp/tools/examples/database-discovery_spec.ts diff --git a/packages/angular/cli/src/commands/mcp/host.ts b/packages/angular/cli/src/commands/mcp/host.ts index 0be6ff67a7fc..1ff0bb9724b3 100644 --- a/packages/angular/cli/src/commands/mcp/host.ts +++ b/packages/angular/cli/src/commands/mcp/host.ts @@ -16,7 +16,8 @@ import { existsSync as nodeExistsSync } from 'fs'; import { ChildProcess, spawn } from 'node:child_process'; import { Stats } from 'node:fs'; -import { stat } from 'node:fs/promises'; +import { glob as nodeGlob, readFile as nodeReadFile, stat } from 'node:fs/promises'; +import { createRequire } from 'node:module'; import { createServer } from 'node:net'; /** @@ -50,6 +51,33 @@ export interface Host { */ existsSync(path: string): boolean; + /** + * Reads a file and returns its content. + * @param path The path to the file. + * @param encoding The encoding to use. + * @returns A promise that resolves to the file content. + */ + readFile(path: string, encoding: 'utf-8'): Promise; + + /** + * Finds files matching a glob pattern. + * @param pattern The glob pattern. + * @param options Options for the glob search. + * @returns An async iterable of file entries. + */ + glob( + pattern: string, + options: { cwd: string }, + ): AsyncIterable<{ name: string; parentPath: string; isFile(): boolean }>; + + /** + * Resolves a module request from a given path. + * @param request The module request to resolve. + * @param from The path from which to resolve the request. + * @returns The resolved module path. + */ + resolveModule(request: string, from: string): string; + /** * Spawns a child process and returns a promise that resolves with the process's * output or rejects with a structured error. @@ -100,6 +128,19 @@ export const LocalWorkspaceHost: Host = { existsSync: nodeExistsSync, + readFile: nodeReadFile, + + glob: function ( + pattern: string, + options: { cwd: string }, + ): AsyncIterable<{ name: string; parentPath: string; isFile(): boolean }> { + return nodeGlob(pattern, { ...options, withFileTypes: true }); + }, + + resolveModule(request: string, from: string): string { + return createRequire(from).resolve(request); + }, + runCommand: async ( command: string, args: readonly string[], diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index 27ef2880336c..cdea2a232b3c 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -11,6 +11,7 @@ import { join } from 'node:path'; import type { AngularWorkspace } from '../../utilities/config'; import { VERSION } from '../../utilities/version'; import type { DevServer } from './dev-server'; +import { LocalWorkspaceHost } from './host'; import { registerInstructionsResource } from './resources/instructions'; import { AI_TUTOR_TOOL } from './tools/ai-tutor'; import { BEST_PRACTICES_TOOL } from './tools/best-practices'; @@ -115,6 +116,7 @@ equivalent actions. logger, exampleDatabasePath: join(__dirname, '../../../lib/code-examples.db'), devServers: new Map(), + host: LocalWorkspaceHost, }, toolDeclarations, ); diff --git a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts index 1720b1377792..29f41c24e101 100644 --- a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts +++ b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts @@ -13,9 +13,12 @@ import type { Host } from '../host'; * This class allows spying on host methods and controlling their return values. */ export class MockHost implements Host { - runCommand = jasmine.createSpy('runCommand').and.resolveTo({ stdout: '', stderr: '' }); + runCommand = jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }); stat = jasmine.createSpy('stat'); existsSync = jasmine.createSpy('existsSync'); + readFile = jasmine.createSpy('readFile').and.resolveTo(''); + glob = jasmine.createSpy('glob').and.returnValue((async function* () {})()); + resolveModule = jasmine.createSpy('resolveRequest').and.returnValue('/dev/null'); spawn = jasmine.createSpy('spawn'); getAvailablePort = jasmine.createSpy('getAvailablePort'); } diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts b/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts index 9c9d0cd98d3b..aeab96e15871 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import { readFile, stat } from 'node:fs/promises'; -import { createRequire } from 'node:module'; import { dirname, isAbsolute, relative, resolve } from 'node:path'; import type { McpToolContext } from '../tool-registry'; @@ -36,20 +34,21 @@ const KNOWN_EXAMPLE_PACKAGES = ['@angular/core', '@angular/aria', '@angular/form * * @param workspacePath The absolute path to the user's `angular.json` file. * @param logger The MCP tool context logger for reporting warnings. + * @param host The host interface for file system and module resolution operations. * @returns A promise that resolves to an array of objects, each containing a database path and source. */ export async function getVersionSpecificExampleDatabases( workspacePath: string, logger: McpToolContext['logger'], + host: McpToolContext['host'], ): Promise<{ dbPath: string; source: string }[]> { - const workspaceRequire = createRequire(workspacePath); const databases: { dbPath: string; source: string }[] = []; for (const packageName of KNOWN_EXAMPLE_PACKAGES) { // 1. Resolve the path to package.json let pkgJsonPath: string; try { - pkgJsonPath = workspaceRequire.resolve(`${packageName}/package.json`); + pkgJsonPath = host.resolveModule(`${packageName}/package.json`, workspacePath); } catch (e) { // This is not a warning because the user may not have all known packages installed. continue; @@ -57,7 +56,7 @@ export async function getVersionSpecificExampleDatabases( // 2. Read and parse package.json, then find the database. try { - const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8'); + const pkgJsonContent = await host.readFile(pkgJsonPath, 'utf-8'); const pkgJson = JSON.parse(pkgJsonContent); const examplesInfo = pkgJson['angular']?.examples; @@ -81,7 +80,7 @@ export async function getVersionSpecificExampleDatabases( } // Check the file size to prevent reading a very large file. - const stats = await stat(dbPath); + const stats = await host.stat(dbPath); if (stats.size > 10 * 1024 * 1024) { // 10MB logger.warn( diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery_spec.ts b/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery_spec.ts new file mode 100644 index 000000000000..0d5680d01c06 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/examples/database-discovery_spec.ts @@ -0,0 +1,137 @@ +/** + * @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 { Stats } from 'node:fs'; +import { Host } from '../../host'; +import { getVersionSpecificExampleDatabases } from './database-discovery'; + +describe('getVersionSpecificExampleDatabases', () => { + let mockHost: jasmine.SpyObj; + let mockLogger: { warn: jasmine.Spy }; + + beforeEach(() => { + mockHost = jasmine.createSpyObj('Host', ['resolveModule', 'readFile', 'stat']); + mockLogger = { + warn: jasmine.createSpy('warn'), + }; + }); + + it('should find a valid example database from a package', async () => { + mockHost.resolveModule.and.callFake((specifier) => { + if (specifier === '@angular/core/package.json') { + return '/path/to/node_modules/@angular/core/package.json'; + } + throw new Error(`Unexpected module specifier: ${specifier}`); + }); + mockHost.readFile.and.resolveTo( + JSON.stringify({ + name: '@angular/core', + version: '18.1.0', + angular: { + examples: { + format: 'sqlite', + path: './resources/code-examples.db', + }, + }, + }), + ); + mockHost.stat.and.resolveTo({ size: 1024 } as Stats); + + const databases = await getVersionSpecificExampleDatabases( + '/path/to/workspace', + mockLogger, + mockHost, + ); + + expect(databases.length).toBe(1); + expect(databases[0].dbPath).toBe( + '/path/to/node_modules/@angular/core/resources/code-examples.db', + ); + expect(databases[0].source).toBe('package @angular/core@18.1.0'); + expect(mockLogger.warn).not.toHaveBeenCalled(); + }); + + it('should skip packages without angular.examples metadata', async () => { + mockHost.resolveModule.and.returnValue('/path/to/node_modules/@angular/core/package.json'); + mockHost.readFile.and.resolveTo(JSON.stringify({ name: '@angular/core', version: '18.1.0' })); + + const databases = await getVersionSpecificExampleDatabases( + '/path/to/workspace', + mockLogger, + mockHost, + ); + + expect(databases.length).toBe(0); + }); + + it('should handle packages that are not found', async () => { + mockHost.resolveModule.and.throwError(new Error('Cannot find module')); + + const databases = await getVersionSpecificExampleDatabases( + '/path/to/workspace', + mockLogger, + mockHost, + ); + + expect(databases.length).toBe(0); + expect(mockLogger.warn).not.toHaveBeenCalled(); + }); + + it('should reject database paths that attempt path traversal', async () => { + mockHost.resolveModule.and.returnValue('/path/to/node_modules/@angular/core/package.json'); + mockHost.readFile.and.resolveTo( + JSON.stringify({ + name: '@angular/core', + version: '18.1.0', + angular: { + examples: { + format: 'sqlite', + path: '../outside-package/danger.db', + }, + }, + }), + ); + + const databases = await getVersionSpecificExampleDatabases( + '/path/to/workspace', + mockLogger, + mockHost, + ); + + expect(databases.length).toBe(0); + expect(mockLogger.warn).toHaveBeenCalledWith( + jasmine.stringMatching(/Detected a potential path traversal attempt/), + ); + }); + + it('should skip database files larger than 10MB', async () => { + mockHost.resolveModule.and.returnValue('/path/to/node_modules/@angular/core/package.json'); + mockHost.readFile.and.resolveTo( + JSON.stringify({ + name: '@angular/core', + version: '18.1.0', + angular: { + examples: { + format: 'sqlite', + path: './resources/code-examples.db', + }, + }, + }), + ); + mockHost.stat.and.resolveTo({ size: 11 * 1024 * 1024 } as Stats); // 11MB + + const databases = await getVersionSpecificExampleDatabases( + '/path/to/workspace', + mockLogger, + mockHost, + ); + + expect(databases.length).toBe(0); + expect(mockLogger.warn).toHaveBeenCalledWith(jasmine.stringMatching(/is larger than 10MB/)); + }); +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/index.ts b/packages/angular/cli/src/commands/mcp/tools/examples/index.ts index 9ee35b8f1c2c..8ceecf2d840d 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples/index.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples/index.ts @@ -71,9 +71,9 @@ new or evolving features. factory: createFindExampleHandler, }); -async function createFindExampleHandler({ logger, exampleDatabasePath }: McpToolContext) { +async function createFindExampleHandler({ logger, exampleDatabasePath, host }: McpToolContext) { const runtimeDb = process.env['NG_MCP_EXAMPLES_DIR'] - ? await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR']) + ? await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR'], host) : undefined; suppressSqliteWarning(); @@ -91,6 +91,7 @@ async function createFindExampleHandler({ logger, exampleDatabasePath }: McpTool const versionSpecificDbs = await getVersionSpecificExampleDatabases( input.workspacePath, logger, + host, ); for (const db of versionSpecificDbs) { resolvedDbs.push({ path: db.dbPath, source: db.source }); diff --git a/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts b/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts index 2f243eb402b3..5ca74dc60d63 100644 --- a/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts +++ b/packages/angular/cli/src/commands/mcp/tools/examples/runtime-database.ts @@ -6,10 +6,10 @@ * found in the LICENSE file at https://angular.dev/license */ -import { glob, readFile } from 'node:fs/promises'; import { join } from 'node:path'; import type { DatabaseSync } from 'node:sqlite'; import { z } from 'zod'; +import type { McpToolContext } from '../tool-registry'; /** * A simple YAML front matter parser. @@ -80,7 +80,10 @@ function parseFrontmatter(content: string): Record { return data; } -export async function setupRuntimeExamples(examplesPath: string): Promise { +export async function setupRuntimeExamples( + examplesPath: string, + host: McpToolContext['host'], +): Promise { const { DatabaseSync } = await import('node:sqlite'); const db = new DatabaseSync(':memory:'); @@ -156,12 +159,12 @@ export async function setupRuntimeExamples(examplesPath: string): Promise; + host: Host; } export type McpToolFactory = ( From 1c154aa000a22c342394fc1393295c2623f28645 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 2 Dec 2025 04:11:06 +0000 Subject: [PATCH 1902/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 186 +++++++++++++++++++++++-------------------------- 1 file changed, 89 insertions(+), 97 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b976738be754..93d99602f856 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -255,7 +255,7 @@ importers: version: 0.30.21 prettier: specifier: ^3.0.0 - version: 3.6.2 + version: 3.7.3 protractor: specifier: ~7.0.0 version: 7.0.0 @@ -333,7 +333,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.14 - version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -345,7 +345,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.14 - version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) packages/angular/build: dependencies: @@ -369,7 +369,7 @@ importers: version: 5.1.21(@types/node@24.10.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.4 - version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.14 - version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -1106,8 +1106,8 @@ packages: '@asamuzakjp/css-color@4.1.0': resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} - '@asamuzakjp/dom-selector@6.7.4': - resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==} + '@asamuzakjp/dom-selector@6.7.5': + resolution: {integrity: sha512-Eks6dY8zau4m4wNRQjRVaKQRTalNcPcBvU1ZQ35w5kKRk1gUeNCkVLsRiATurjASTp3TKM4H10wsI50nx3NZdw==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -1673,8 +1673,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.17': - resolution: {integrity: sha512-LCC++2h8pLUSPY+EsZmrrJ1EOUu+5iClpEiDhhdw3zRJpPbABML/N5lmRuBHjxtKm9VnRcsUzioyD0sekFMF0A==} + '@csstools/css-syntax-patches-for-csstree@1.0.20': + resolution: {integrity: sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==} engines: {node: '>=18'} '@csstools/css-tokenizer@3.0.4': @@ -4446,8 +4446,8 @@ packages: bare-abort-controller: optional: true - bare-fs@4.5.1: - resolution: {integrity: sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==} + bare-fs@4.5.2: + resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -4483,8 +4483,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.31: - resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} + baseline-browser-mapping@2.8.32: + resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==} hasBin: true basic-ftp@5.0.5: @@ -5261,8 +5261,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.260: - resolution: {integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==} + electron-to-chromium@1.5.262: + resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -6218,8 +6218,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} is-array-buffer@3.0.5: @@ -6869,8 +6869,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -6923,8 +6923,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.51.0: - resolution: {integrity: sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==} + memfs@4.51.1: + resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7204,8 +7204,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.3.2: + resolution: {integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==} engines: {node: '>= 6.13.0'} node-gyp-build-optional-packages@5.2.2: @@ -7646,8 +7646,8 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -7665,8 +7665,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.7.3: + resolution: {integrity: sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==} engines: {node: '>=14'} hasBin: true @@ -7674,8 +7674,8 @@ packages: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} - proc-log@6.0.0: - resolution: {integrity: sha512-KG/XsTDN901PNfPfAMmj6N/Ywg9tM+bHK8pAz+27fS4N4Pcr+4zoYBOcGSBu6ceXYNPxkLpa4ohtfxV1XcLAfA==} + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} process-nextick-args@2.0.1: @@ -7981,13 +7981,6 @@ packages: resolution: {integrity: sha512-wt0sqnedDjYVUnalyDEajrVAiup2V3O30I5PzXDS3syN9liSRKrZ8H6EECiV3OEZRs2fLauwT9t0QZGLuVTs2Q==} engines: {node: '>=18.0.0'} - rollup-plugin-dts@6.2.3: - resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 - rollup-plugin-dts@6.3.0: resolution: {integrity: sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==} engines: {node: '>=16'} @@ -9278,6 +9271,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -9631,15 +9629,15 @@ snapshots: '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.2 + lru-cache: 11.2.4 - '@asamuzakjp/dom-selector@6.7.4': + '@asamuzakjp/dom-selector@6.7.5': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.2 + lru-cache: 11.2.4 '@asamuzakjp/nwsapi@2.3.9': {} @@ -10351,7 +10349,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.17': {} + '@csstools/css-syntax-patches-for-csstree@1.0.20': {} '@csstools/css-tokenizer@3.0.4': {} @@ -11539,7 +11537,7 @@ snapshots: agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) - lru-cache: 11.2.2 + lru-cache: 11.2.4 socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -11552,9 +11550,9 @@ snapshots: dependencies: '@npmcli/promise-spawn': 9.0.1 ini: 6.0.0 - lru-cache: 11.2.2 + lru-cache: 11.2.4 npm-pick-manifest: 11.0.3 - proc-log: 6.0.0 + proc-log: 6.1.0 promise-retry: 2.0.1 semver: 7.7.3 which: 6.0.0 @@ -11572,7 +11570,7 @@ snapshots: glob: 13.0.0 hosted-git-info: 9.0.2 json-parse-even-better-errors: 5.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 semver: 7.7.3 validate-npm-package-license: 3.0.4 @@ -11588,7 +11586,7 @@ snapshots: '@npmcli/package-json': 7.0.4 '@npmcli/promise-spawn': 9.0.1 node-gyp: 12.1.0 - proc-log: 6.0.0 + proc-log: 6.1.0 which: 6.0.0 transitivePeerDependencies: - supports-color @@ -12709,11 +12707,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2))': dependencies: - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.14 @@ -12726,7 +12724,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12739,13 +12737,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.14 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) '@vitest/pretty-format@4.0.14': dependencies: @@ -13320,7 +13318,7 @@ snapshots: bare-events@2.8.2: {} - bare-fs@4.5.1: + bare-fs@4.5.2: dependencies: bare-events: 2.8.2 bare-path: 3.0.0 @@ -13359,7 +13357,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.31: {} + baseline-browser-mapping@2.8.32: {} basic-ftp@5.0.5: {} @@ -13521,9 +13519,9 @@ snapshots: browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.31 + baseline-browser-mapping: 2.8.32 caniuse-lite: 1.0.30001757 - electron-to-chromium: 1.5.260 + electron-to-chromium: 1.5.262 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) @@ -13566,7 +13564,7 @@ snapshots: '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 glob: 13.0.0 - lru-cache: 11.2.2 + lru-cache: 11.2.4 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -13961,7 +13959,7 @@ snapshots: cssstyle@5.3.3: dependencies: '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.17 + '@csstools/css-syntax-patches-for-csstree': 1.0.20 css-tree: 3.1.0 custom-event@1.0.1: {} @@ -14212,7 +14210,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.260: {} + electron-to-chromium@1.5.262: {} emoji-regex@10.6.0: {} @@ -14723,7 +14721,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15253,7 +15251,7 @@ snapshots: hosted-git-info@9.0.2: dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.4 hpack.js@2.1.6: dependencies: @@ -15493,7 +15491,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} is-array-buffer@3.0.5: dependencies: @@ -15825,7 +15823,7 @@ snapshots: jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@acemir/cssom': 0.9.24 - '@asamuzakjp/dom-selector': 6.7.4 + '@asamuzakjp/dom-selector': 6.7.5 cssstyle: 5.3.3 data-urls: 6.0.0 decimal.js: 10.6.0 @@ -16240,7 +16238,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.2: {} + lru-cache@11.2.4: {} lru-cache@5.1.1: dependencies: @@ -16282,7 +16280,7 @@ snapshots: minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 1.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 promise-retry: 2.0.1 ssri: 13.0.0 transitivePeerDependencies: @@ -16298,7 +16296,7 @@ snapshots: media-typer@1.1.0: {} - memfs@4.51.0: + memfs@4.51.1: dependencies: '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -16508,7 +16506,7 @@ snapshots: ora: 9.0.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.2.3(rollup@4.53.3)(typescript@5.9.3) + rollup-plugin-dts: 6.3.0(rollup@4.53.3)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.94.2 tinyglobby: 0.2.15 @@ -16551,7 +16549,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.1: {} + node-forge@1.3.2: {} node-gyp-build-optional-packages@5.2.2: dependencies: @@ -16567,7 +16565,7 @@ snapshots: graceful-fs: 4.2.11 make-fetch-happen: 15.0.3 nopt: 9.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 semver: 7.7.3 tar: 7.5.2 tinyglobby: 0.2.15 @@ -16600,14 +16598,14 @@ snapshots: npm-package-arg@13.0.2: dependencies: hosted-git-info: 9.0.2 - proc-log: 6.0.0 + proc-log: 6.1.0 semver: 7.7.3 validate-npm-package-name: 7.0.0 npm-packlist@10.0.3: dependencies: ignore-walk: 8.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 npm-pick-manifest@11.0.3: dependencies: @@ -16625,7 +16623,7 @@ snapshots: minipass-fetch: 5.0.0 minizlib: 3.1.0 npm-package-arg: 13.0.2 - proc-log: 6.0.0 + proc-log: 6.1.0 transitivePeerDependencies: - supports-color @@ -16843,7 +16841,7 @@ snapshots: npm-packlist: 10.0.3 npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.1.1 - proc-log: 6.0.0 + proc-log: 6.1.0 promise-retry: 2.0.1 sigstore: 4.0.0 ssri: 13.0.0 @@ -16903,7 +16901,7 @@ snapshots: path-scurry@2.0.1: dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.4 minipass: 7.1.2 path-to-regexp@0.1.12: {} @@ -17017,20 +17015,20 @@ snapshots: dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -17047,11 +17045,11 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.6.2: {} + prettier@3.7.3: {} proc-log@5.0.0: {} - proc-log@6.0.0: {} + proc-log@6.1.0: {} process-nextick-args@2.0.1: {} @@ -17238,7 +17236,7 @@ snapshots: unicode-properties: 1.4.1 urijs: 1.19.11 wordwrap: 1.0.0 - yaml: 2.8.1 + yaml: 2.8.2 transitivePeerDependencies: - encoding @@ -17487,14 +17485,6 @@ snapshots: semver: 7.7.3 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.2.3(rollup@4.53.3)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.53.3 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.3.0(rollup@4.53.3)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17633,7 +17623,7 @@ snapshots: selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.14 - node-forge: 1.3.1 + node-forge: 1.3.2 semver@5.7.2: {} @@ -18158,7 +18148,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.5.1 + bare-fs: 4.5.2 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -18623,7 +18613,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18639,12 +18629,12 @@ snapshots: sass: 1.94.2 terser: 5.44.1 tsx: 4.20.6 - yaml: 2.8.1 + yaml: 2.8.2 - vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.14 - '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.14 '@vitest/runner': 4.0.14 '@vitest/snapshot': 4.0.14 @@ -18661,7 +18651,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18732,7 +18722,7 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.103.0(esbuild@0.27.0)): dependencies: colorette: 2.0.20 - memfs: 4.51.0 + memfs: 4.51.1 mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 @@ -18759,7 +18749,7 @@ snapshots: express: 4.21.2 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.2.0 + ipaddr.js: 2.3.0 launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 @@ -19002,6 +18992,8 @@ snapshots: yaml@2.8.1: {} + yaml@2.8.2: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 From 54652629d89755779ec474fede15b43cf9737efd Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 2 Dec 2025 16:06:20 -0500 Subject: [PATCH 1903/2162] build: use native ESM and improve templates script performance This commit refactors the `scripts/templates.mts` file with several improvements: - Uses a native ESM import for `@angular/ng-dev`. - Replaces all synchronous `fs` calls with their `fs.promises` counterparts. - Optimizes file reading by using `Promise.all` to read files concurrently. --- scripts/templates.mts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/scripts/templates.mts b/scripts/templates.mts index 06623a193a4d..1a43b9e68cac 100644 --- a/scripts/templates.mts +++ b/scripts/templates.mts @@ -7,40 +7,42 @@ */ import lodash from 'lodash'; -import * as fs from 'node:fs'; +import { readFile, writeFile } from 'node:fs/promises'; import * as path from 'node:path'; import { releasePackages } from './packages.mjs'; const __dirname = import.meta.dirname; -async function _runTemplate(inputPath: string, outputPath: string) { +async function runTemplate(inputPath: string, outputPath: string) { inputPath = path.resolve(__dirname, inputPath); outputPath = path.resolve(__dirname, outputPath); console.info(`Building ${path.relative(path.dirname(__dirname), outputPath)}...`); - // TODO(ESM): Consider making this an actual import statement. - const { COMMIT_TYPES, ScopeRequirement } = await new Function( - `return import('@angular/ng-dev');`, - )(); + const { COMMIT_TYPES, ScopeRequirement } = await import('@angular/ng-dev'); - const monorepo = JSON.parse(fs.readFileSync('./.monorepo.json', 'utf-8')); - const content = lodash.template(fs.readFileSync(inputPath, 'utf-8'))({ + const [monorepoRaw, templateContent] = await Promise.all([ + readFile('./.monorepo.json', 'utf-8'), + readFile(inputPath, 'utf-8'), + ]); + + const monorepo = JSON.parse(monorepoRaw); + const content = lodash.template(templateContent)({ monorepo, packages: releasePackages.map(({ name }) => name), - encode: (x: string) => global.encodeURIComponent(x), + encode: (x: string) => encodeURIComponent(x), // Pass-through `ng-dev` ESM commit message information for the `contributing.ejs` // template. EJS templates using the devkit template cannot use ESM. COMMIT_TYPES: COMMIT_TYPES, ScopeRequirement: ScopeRequirement, }); - fs.writeFileSync(outputPath, content, 'utf-8'); + await writeFile(outputPath, content, 'utf-8'); } -export default async function (_options: {}): Promise { +export default async function (): Promise { await Promise.all([ - _runTemplate('./templates/readme.ejs', '../README.md'), - _runTemplate('./templates/contributing.ejs', '../CONTRIBUTING.md'), + runTemplate('./templates/readme.ejs', '../README.md'), + runTemplate('./templates/contributing.ejs', '../CONTRIBUTING.md'), ]); return 0; From 281c69e5ec52b8be457eb5c094c31ef3dc19c989 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 2 Dec 2025 19:47:47 -0500 Subject: [PATCH 1904/2162] test: migrate e2e test runner to Node.js styleText API This commit removes the external 'ansi-colors' dependency from the e2e test runner and its utilities by migrating to the native Node.js 'styleText' API. Changes include: - Removing 'ansi-colors' imports in `tests/legacy-cli/e2e/utils/process.ts` and `tests/legacy-cli/e2e_runner.ts`. - Updating Bazel `BUILD.bazel` files to remove the 'ansi-colors' dependency. - Replacing all `colors.STYLE(...)` calls with `styleText(...)` equivalents. - Adjusting output formatting in `printHeader` and `printFooter` functions in `e2e_runner.ts` for consistency with the new styling. --- tests/legacy-cli/BUILD.bazel | 1 - tests/legacy-cli/e2e/utils/BUILD.bazel | 1 - tests/legacy-cli/e2e/utils/process.ts | 14 ++++---- tests/legacy-cli/e2e_runner.ts | 47 +++++++++++++++----------- 4 files changed, 33 insertions(+), 30 deletions(-) diff --git a/tests/legacy-cli/BUILD.bazel b/tests/legacy-cli/BUILD.bazel index 713bc31b5c82..23acd2ddd3ff 100644 --- a/tests/legacy-cli/BUILD.bazel +++ b/tests/legacy-cli/BUILD.bazel @@ -13,7 +13,6 @@ ts_project( ], deps = [ "//:node_modules/@types/node", - "//:node_modules/ansi-colors", "//:node_modules/fast-glob", "//packages/angular_devkit/core", "//packages/angular_devkit/core/node", diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index b73eec76471a..77bd09288582 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -13,7 +13,6 @@ ts_project( "//:node_modules/@types/jasmine", "//:node_modules/@types/node", "//:node_modules/@types/semver", - "//:node_modules/ansi-colors", "//:node_modules/fast-glob", "//:node_modules/protractor", "//:node_modules/semver", diff --git a/tests/legacy-cli/e2e/utils/process.ts b/tests/legacy-cli/e2e/utils/process.ts index cb542ff1ea0f..ce4eb8291ab2 100644 --- a/tests/legacy-cli/e2e/utils/process.ts +++ b/tests/legacy-cli/e2e/utils/process.ts @@ -1,11 +1,10 @@ -import * as ansiColors from 'ansi-colors'; import { spawn, SpawnOptions } from 'node:child_process'; import * as child_process from 'node:child_process'; import { concat, defer, EMPTY, from, lastValueFrom, catchError, repeat } from 'rxjs'; import { getGlobalVariable, getGlobalVariablesEnv } from './env'; import treeKill from 'tree-kill'; import { delimiter, join, resolve } from 'node:path'; -import { stripVTControlCharacters } from 'node:util'; +import { stripVTControlCharacters, styleText } from 'node:util'; interface ExecOptions { silent?: boolean; @@ -30,9 +29,6 @@ export type ProcessOutput = { }; function _exec(options: ExecOptions, cmd: string, args: string[]): Promise { - // Create a separate instance to prevent unintended global changes to the color configuration - const colors = ansiColors.create(); - const cwd = options.cwd ?? process.cwd(); const env = options.env ?? process.env; @@ -57,8 +53,10 @@ function _exec(options: ExecOptions, cmd: string, args: string[]): Promise `"${x}"`).join(' ')}\`${flags}...`)); - console.log(colors.blue(`CWD: ${cwd}`)); + console.log( + styleText(['blue'], `Running \`${cmd} ${args.map((x) => `"${x}"`).join(' ')}\`${flags}...`), + ); + console.log(styleText(['blue'], `CWD: ${cwd}`)); const spawnOptions: SpawnOptions = { cwd, @@ -123,7 +121,7 @@ function _exec(options: ExecOptions, cmd: string, args: string[]): Promise line !== '') - .forEach((line) => console.error(colors.yellow(' ' + line))); + .forEach((line) => console.error(styleText(['yellow'], ' ' + line))); }); childProcess.on('close', (code) => { diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index 6c9e3179411c..b1b5ef60e890 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -1,6 +1,5 @@ -import { parseArgs } from 'node:util'; +import { parseArgs, styleText } from 'node:util'; import { createConsoleLogger } from '../../packages/angular_devkit/core/node'; -import colors from 'ansi-colors'; import glob from 'fast-glob'; import * as path from 'node:path'; import * as fs from 'node:fs'; @@ -114,9 +113,9 @@ if (process.env.CHROME_BIN) { const logger = createConsoleLogger(argv.verbose, process.stdout, process.stderr, { info: (s) => s, debug: (s) => s, - warn: (s) => colors.bold.yellow(s), - error: (s) => colors.bold.red(s), - fatal: (s) => colors.bold.red(s), + warn: (s) => styleText(['bold', 'yellow'], s), + error: (s) => styleText(['bold', 'red'], s), + fatal: (s) => styleText(['bold', 'red'], s), }); const logStack = [logger]; @@ -250,21 +249,21 @@ process.env.CHROMEDRIVER_BIN = path.resolve(process.env.CHROMEDRIVER_BIN!); await runSteps(runTest, testsToRun, 'test'); if (shardId !== null) { - console.log(colors.green(`Done shard ${shardId} of ${nbShards}.`)); + console.log(styleText(['green'], `Done shard ${shardId} of ${nbShards}.`)); } else { - console.log(colors.green('Done.')); + console.log(styleText(['green'], 'Done.')); } process.exitCode = 0; } catch (err) { if (err instanceof Error) { console.log('\n'); - console.error(colors.red(err.message)); + console.error(styleText(['red'], err.message)); if (err.stack) { - console.error(colors.red(err.stack)); + console.error(styleText(['red'], err.stack)); } } else { - console.error(colors.red(String(err))); + console.error(styleText(['red'], String(err))); } if (argv.debug) { @@ -281,7 +280,7 @@ process.env.CHROMEDRIVER_BIN = path.resolve(process.env.CHROMEDRIVER_BIN!); secureRegistryProcess.kill(); } })().catch((err) => { - console.error(colors.red(`Unkown Error: ${err}`)); + console.error(styleText(['red'], `Unkown Error: ${err}`)); process.exitCode = 1; }); @@ -310,7 +309,7 @@ async function runSteps( await run(absoluteName); } catch (e) { console.log('\n'); - console.error(colors.red(`${capsType} "${name}" failed...`)); + console.error(styleText(['red'], `${capsType} "${name}" failed...`)); throw e; } finally { @@ -363,16 +362,22 @@ function printHeader( count: number, type: 'setup' | 'initializer' | 'test', ) { - const text = `${testIndex + 1} of ${count}`; + const text = `(${testIndex + 1} of ${count})`; const fullIndex = testIndex * nbShards + (shardId ?? 0) + 1; const shard = shardId === null || type !== 'test' ? '' - : colors.yellow(` [${shardId}:${nbShards}]` + colors.bold(` (${fullIndex}/${tests.length})`)); + : styleText( + ['yellow'], + ` [${shardId}:${nbShards}]` + styleText(['bold'], ` (${fullIndex}/${tests.length})`), + ); console.log( - colors.green( - `Running ${type} "${colors.bold.blue(testName)}" (${colors.bold.white(text)}${shard})...`, - ), + styleText(['green'], `Running ${type} "`) + + styleText(['bold', 'blue'], testName) + + styleText(['green'], '" ') + + styleText(['bold', 'white'], text) + + shard + + styleText(['green'], '...'), ); } @@ -382,9 +387,11 @@ function printFooter(testName: string, type: 'setup' | 'initializer' | 'test', s // Round to hundredth of a second. const t = Math.round((Date.now() - startTime) / 10) / 100; console.log( - colors.green(`${capsType} "${colors.bold.blue(testName)}" took `) + - colors.bold.blue('' + t) + - colors.green('s...'), + styleText(['green'], `${capsType} "`) + + styleText(['bold', 'blue'], testName) + + styleText(['green'], '" took ') + + styleText(['bold', 'blue'], t.toFixed(2)) + + styleText(['green'], 's...'), ); console.log(''); } From 2a2a2586883803580d68b016a4f72568c606c706 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Wed, 3 Dec 2025 01:02:47 -0700 Subject: [PATCH 1905/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 ++++++------ .ng-dev/github.mjs | 3 +- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 71 +++++++++---------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++----- 11 files changed, 107 insertions(+), 113 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 43f71577f113..98f5f37dd3c8 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@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + - uses: angular/dev-infra/github-actions/branch-manager@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30fbcad22919..ae6cb8ad4535 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 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@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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 2fa680b35016..516fd51573b6 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@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - - uses: angular/dev-infra/github-actions/pull-request-labeling@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + - uses: angular/dev-infra/github-actions/pull-request-labeling@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - - uses: angular/dev-infra/github-actions/post-approval-changes@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + - uses: angular/dev-infra/github-actions/post-approval-changes@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index dab00bf96bc2..70c688b19c4d 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@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + - uses: angular/dev-infra/github-actions/feature-request@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 5e7bb8afa786..da8a0b38b3de 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@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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 45c74b55c4d5..b472d9a44d44 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/linting/licenses@18448ed104aeef3146ccb27484002bf5ed02bdf6 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 - 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/.ng-dev/github.mjs b/.ng-dev/github.mjs index 15e228fb5ae3..467741f70f83 100644 --- a/.ng-dev/github.mjs +++ b/.ng-dev/github.mjs @@ -1,7 +1,7 @@ /** * Github configuration for the ng-dev command. This repository is * used as remote for the merge script. - * + * * @type { import("@angular/ng-dev").GithubConfig } */ export const github = { @@ -9,4 +9,5 @@ export const github = { name: 'angular-cli', mainBranchName: 'main', useNgDevAuthService: true, + mergeMode: 'team-only', }; diff --git a/MODULE.bazel b/MODULE.bazel index fb1416746333..caae38e86baf 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae", + commit = "18448ed104aeef3146ccb27484002bf5ed02bdf6", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 02498d13a65f..3424e55a7216 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@angular/forms": "21.1.0-next.0", "@angular/localize": "21.1.0-next.0", "@angular/material": "21.1.0-next.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#bbba566abca437dcd3f6bf91a0788bdb29227563", "@angular/platform-browser": "21.1.0-next.0", "@angular/platform-server": "21.1.0-next.0", "@angular/router": "21.1.0-next.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93d99602f856..ff93ee00158d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.0 version: 21.1.0-next.0(bd97c5a741e978ef84ea9f0c3ef58280) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4c28145df03aff8c74d0a53f4f5602140e4d1a23 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#bbba566abca437dcd3f6bf91a0788bdb29227563 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -333,7 +333,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.14 - version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2)) + version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -345,7 +345,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.14 - version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -369,7 +369,7 @@ importers: version: 5.1.21(@types/node@24.10.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2)) + version: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -426,7 +426,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.4 - version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -454,7 +454,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.14 - version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -1060,9 +1060,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/4c28145df03aff8c74d0a53f4f5602140e4d1a23': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4c28145df03aff8c74d0a53f4f5602140e4d1a23} - version: 0.0.0-95e3a0ede6dfa1aedd34b03918ad72b18f87e5ae + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563} + version: 0.0.0-18448ed104aeef3146ccb27484002bf5ed02bdf6 hasBin: true '@angular/platform-browser@21.1.0-next.0': @@ -3169,8 +3169,8 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.5': - resolution: {integrity: sha512-powgYgNzuAdrZK+bx1Vxes5LRFp8ByUCcFsCeo0pQpyFbKpRDFF31FUVSE3CGs61WgL0lTBQr7ZoUSRc+BDrCw==} + '@pnpm/dependency-path@1001.1.6': + resolution: {integrity: sha512-MQ0l7p0xTNsobggVsT3zXed677WvlDQ25wt0rTQv54Z6fLS/B89pwemUMNhWIKR4q+5WHJjkSlVN2t+W4um+7Q==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': @@ -8664,8 +8664,8 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} - tsx@4.20.6: - resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true @@ -9266,11 +9266,6 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} - engines: {node: '>= 14.6'} - hasBin: true - yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} @@ -9531,7 +9526,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/4c28145df03aff8c74d0a53f4f5602140e4d1a23(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -9548,7 +9543,7 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 - '@pnpm/dependency-path': 1001.1.5 + '@pnpm/dependency-path': 1001.1.6 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 @@ -9580,12 +9575,12 @@ snapshots: nock: 14.0.10 semver: 7.7.3 supports-color: 10.2.2 - tsx: 4.20.6 + tsx: 4.21.0 typed-graphqlify: 3.1.6 typescript: 5.9.3 utf-8-validate: 6.0.5 which: 6.0.0 - yaml: 2.8.1 + yaml: 2.8.2 yargs: 18.0.0 transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -11799,7 +11794,7 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.5': + '@pnpm/dependency-path@1001.1.6': dependencies: '@pnpm/crypto.hash': 1000.2.1 '@pnpm/types': 1001.0.1 @@ -12707,11 +12702,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.14 @@ -12724,7 +12719,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12737,13 +12732,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2))': + '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.14 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.14': dependencies: @@ -18335,9 +18330,9 @@ snapshots: tsscmp@1.0.6: {} - tsx@4.20.6: + tsx@4.21.0: dependencies: - esbuild: 0.25.12 + esbuild: 0.27.0 get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -18613,7 +18608,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2): + vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18628,13 +18623,13 @@ snapshots: less: 4.4.2 sass: 1.94.2 terser: 5.44.1 - tsx: 4.20.6 + tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2): + vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.14 - '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2)) + '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.14 '@vitest/runner': 4.0.14 '@vitest/snapshot': 4.0.14 @@ -18651,7 +18646,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.2) + vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18990,8 +18985,6 @@ snapshots: yallist@5.0.0: {} - yaml@2.8.1: {} - yaml@2.8.2: {} 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 cda23a8e1cbb..251aaf641226 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#11d7706d678a19673fa431bbcefa61cf9aed54e6", - "@angular/cdk": "github:angular/cdk-builds#dae18ca09b159877511bffe923307e1f6238fb8f", - "@angular/common": "github:angular/common-builds#ab6288059a88ef5123607cea91d7052712eff065", - "@angular/compiler": "github:angular/compiler-builds#873c2e55ec20859ae2b1f149253b079b34c37a78", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#815caa207ebbd189c7970990ef3a6aaa538d453b", - "@angular/core": "github:angular/core-builds#8f5401536873152a3dcef8b42177072756c279c1", - "@angular/forms": "github:angular/forms-builds#abf953fb5bb6accece15900505c9192578b4182c", - "@angular/language-service": "github:angular/language-service-builds#b0f4eb1225f22b5adee3ac68010e98e271c4fa81", - "@angular/localize": "github:angular/localize-builds#eb16b425011073200357927b7a5dd73d939de11a", - "@angular/material": "github:angular/material-builds#dcf1def3e210a203ba3ee06574949d8768f12295", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#4907290e2aead220de18fc4e4b1b130b1c845fd6", - "@angular/platform-browser": "github:angular/platform-browser-builds#9dd4110ca6e5b44b01ba13e2b36751ff20341c51", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#6f55f14b3918bd0719917cbcfc3cdd5d4a53de97", - "@angular/platform-server": "github:angular/platform-server-builds#f13c4650e588d231b8720ae3f4bb6499e336857a", - "@angular/router": "github:angular/router-builds#1b51dfebd1302045b1f45c1c9571f3aba7104279", - "@angular/service-worker": "github:angular/service-worker-builds#5eb6f67f1023e24bf18de81bd2abd65ab18cdd73" + "@angular/animations": "github:angular/animations-builds#01dabba056a9ee161393c2ea72885982424f58e8", + "@angular/cdk": "github:angular/cdk-builds#d5270ab17028e056e02592619bd7f7f48b5452b2", + "@angular/common": "github:angular/common-builds#8b9648c9b0c5292ff4c34d3e87492e363fb596af", + "@angular/compiler": "github:angular/compiler-builds#2cc5088e36429f547f5d6a108e0af251fcdeec4d", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#b466d8549f5d8bd48d789d872b39720a14a27378", + "@angular/core": "github:angular/core-builds#6a786bcedfbca320c807696aec674d5cebc15a69", + "@angular/forms": "github:angular/forms-builds#33c4210c6989bf43501c13f2f8ac00f87b986af5", + "@angular/language-service": "github:angular/language-service-builds#586bd2bd5073ffd3ecf8b20be2b25d4c239ef15b", + "@angular/localize": "github:angular/localize-builds#08a23a2bd5a61dd764c9b0462ce47f79afd49c49", + "@angular/material": "github:angular/material-builds#d2102b0570aa3373f1e7523b72137460d559e498", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#52dec3209ab471a46549055ec705d5aa2e03079f", + "@angular/platform-browser": "github:angular/platform-browser-builds#cadab2d518da130b8577c10bf67019baa555fca3", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0591d34ed71950c7266c62c989ba8580e77e0bc2", + "@angular/platform-server": "github:angular/platform-server-builds#1403cb3bda702165a68e79977207e72a3d90fa00", + "@angular/router": "github:angular/router-builds#8b5a55f2e3e2c9c7579a311b428ba6e2662fbf98", + "@angular/service-worker": "github:angular/service-worker-builds#405395ef5a0d45d3a0ef8af98ec1644f7020093d" } } From 848fb9716a2c3fd33e1f56901b2fe0ae8928a02c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:06:27 -0500 Subject: [PATCH 1906/2162] test: enable two lint rules that are now passing Removed "off" directives for "@typescript-eslint/ban-types" and "@typescript-eslint/no-var-requires" as there are no longer any failures associated with these rules. --- eslint.config.mjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 318b5dec3bee..192ba19f2007 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -190,9 +190,7 @@ export default [ ], '@typescript-eslint/await-thenable': 'off', - '@typescript-eslint/ban-types': 'off', '@typescript-eslint/no-implied-eval': 'off', - '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/no-unsafe-call': 'off', From 4187162da8d1586bd2dfa4614651f504b40ec25c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 3 Dec 2025 05:05:57 +0000 Subject: [PATCH 1907/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 28 +++++++++++++++------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index caae38e86baf..d52744af6fc2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "yq.bzl", version = "0.3.2") bazel_dep(name = "rules_nodejs", version = "6.6.2") -bazel_dep(name = "aspect_rules_js", version = "2.8.2") +bazel_dep(name = "aspect_rules_js", version = "2.8.3") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "0.8.1") @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "940945071ebab1e8a323e93882d661d753c920f5", + commit = "f942bfd36bf472e93ef568b2f46bc0cfe21f1c3e", remote = "https://github.com/devversion/rules_angular.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 71d6aa83b976..5eece6e96827 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -29,7 +29,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/MODULE.bazel": "76526405d6a65dae45db16b8b4619b502063ac573d2a2ae0a90fddc7d3247288", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/source.json": "a03164e3f59a05d9a6d205a477ea49ba8ee141ab764a9f38b43e6302eb4fa2b9", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/MODULE.bazel": "807ce5f624124a8bc586c743394d174e85f0f9c6c4e0e2410b4088aebe790ac8", + "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/source.json": "c35cb4e04f61a09c17f8c569894b80de884b1e3dee2d33829704786e3f778037", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", @@ -37,7 +38,8 @@ "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.3/MODULE.bazel": "20f53b145f40957a51077ae90b37b7ce83582a1daf9350349f0f86179e19dd0d", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.6/MODULE.bazel": "cafb8781ad591bc57cc765dca5fefab08cf9f65af363d162b79d49205c7f8af7", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", - "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/source.json": "786cbc49377fb6bf4859aec5b1c61f8fc26b08e9fdb929e2dde2e1e2a406bd24", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.3.3/MODULE.bazel": "37c764292861c2f70314efa9846bb6dbb44fc0308903b3285da6528305450183", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.3.3/source.json": "605086bbc197743a0d360f7ddc550a1d4dfa0441bc807236e17170f636153348", "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", @@ -210,7 +212,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "Kp1ElwnSsU9URW4hnpM9wzhITxGUNAp4tu7dOwA82Qo=", + "bzlTransitiveDigest": "JQs66uyOA1/zxJFApKCcki/1PXjP5vhUCCpYeFpJ3Kc=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -414,8 +416,8 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "b2732vQWZpf2g1U6Rf2M0kXVkyN5QVnEn69W2+zHZPQ=", - "usagesDigest": "aGI0J/oETkNLCXhrpWEDlZEAKB8hs563suxOHlpcTj0=", + "bzlTransitiveDigest": "0XQcEfIpZXbqfvQ8VHGuskXDdxI9vks/wa/Cyf90LOA=", + "usagesDigest": "dfeONN+LabTG4hYuh2tcpxqorjlWOOipsrJa/4UI3uc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -635,8 +637,8 @@ }, "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { "general": { - "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", - "usagesDigest": "nyE85/XALFsAElY+d7H265tevR5W40tapQPfhmeIU2E=", + "bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=", + "usagesDigest": "jUf82HrX+VUjDf7DwXXgNndO40SIF/kS1l2uXEdbcwQ=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -646,10 +648,10 @@ "ruleClassName": "tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.8.2", + "aspect_rules_js": "2.8.3", "aspect_rules_ts": "3.7.1", "aspect_rules_esbuild": "0.24.0", - "aspect_tools_telemetry": "0.2.8" + "aspect_tools_telemetry": "0.3.3" } } } @@ -657,8 +659,8 @@ "recordedRepoMappingEntries": [ [ "aspect_tools_telemetry~", - "aspect_bazel_lib", - "aspect_bazel_lib~" + "bazel_lib", + "bazel_lib~" ], [ "aspect_tools_telemetry~", @@ -1150,7 +1152,7 @@ "@@rules_nodejs~//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "R8gkuknFYSnypceao7XEOC2RaBVFY7V5K0xvOZHUZyY=", + "usagesDigest": "tDPYIzJ/dcdh6jHCAxQXiu9fk5u6dI6a2j28VcR1w6E=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -4612,7 +4614,7 @@ "@@yq.bzl~//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", - "usagesDigest": "d69aUcr/oJv29ydTdFN0JWU618+QzKkxecQFV9S2xjU=", + "usagesDigest": "iaUQ8Qw3jEPbSuD0+Sq/7rnxBky70UQGNJbXnlCid+Q=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From 7eef9768b5a2b3c871bdf6962811d0739015885b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 3 Dec 2025 05:06:36 +0000 Subject: [PATCH 1908/2162] build: update schematics dependencies to ~5.13.0 See associated pull request for more information. --- .../angular_devkit/schematics_cli/schematic/files/package.json | 2 +- .../schematics/angular/utility/latest-versions/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/schematic/files/package.json b/packages/angular_devkit/schematics_cli/schematic/files/package.json index f1067a247bec..ddbc5d48e920 100644 --- a/packages/angular_devkit/schematics_cli/schematic/files/package.json +++ b/packages/angular_devkit/schematics_cli/schematic/files/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@types/node": "^20.17.19", "@types/jasmine": "~5.1.0", - "jasmine": "~5.12.0", + "jasmine": "~5.13.0", "typescript": "~5.9.2" } } diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 03db4d15a506..29ef3658f23b 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -8,7 +8,7 @@ "@types/node": "^20.17.19", "browser-sync": "^3.0.0", "express": "^5.1.0", - "jasmine-core": "~5.12.0", + "jasmine-core": "~5.13.0", "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", From 780e36c30346dffe611e7946bcf76a46e1ab6dfe Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 2 Dec 2025 20:08:57 -0500 Subject: [PATCH 1909/2162] build: remove repo root usage of `ansi-colors` The `scripts/devkit-admin.mts` infrastructure script has been migrated to use the native Node.js `styleText` API. This removes the last non-package usage of the `ansi-colors` package and allows the root level dependency to be removed. --- package.json | 1 - packages/angular_devkit/architect_cli/BUILD.bazel | 2 +- packages/angular_devkit/schematics_cli/BUILD.bazel | 2 +- pnpm-lock.yaml | 3 --- scripts/devkit-admin.mts | 6 +++--- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 3424e55a7216..4fc9cca8db3d 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,6 @@ "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", "ajv": "8.17.1", - "ansi-colors": "4.1.3", "buffer": "6.0.3", "esbuild": "0.27.0", "esbuild-wasm": "0.27.0", diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 62bf288cbf7a..039b5c41c998 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -19,11 +19,11 @@ ts_project( deps = [ ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", + ":node_modules/ansi-colors", ":node_modules/progress", "//:node_modules/@types/node", "//:node_modules/@types/progress", "//:node_modules/@types/yargs-parser", - "//:node_modules/ansi-colors", "//:node_modules/yargs-parser", ], ) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index f67abd6a3eb6..0828963697a6 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -48,9 +48,9 @@ ts_project( ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", ":node_modules/@inquirer/prompts", + ":node_modules/ansi-colors", "//:node_modules/@types/node", "//:node_modules/@types/yargs-parser", - "//:node_modules/ansi-colors", "//:node_modules/yargs-parser", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff93ee00158d..308c76121cc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -172,9 +172,6 @@ importers: ajv: specifier: 8.17.1 version: 8.17.1 - ansi-colors: - specifier: 4.1.3 - version: 4.1.3 buffer: specifier: 6.0.3 version: 6.0.3 diff --git a/scripts/devkit-admin.mts b/scripts/devkit-admin.mts index 3240759f3b54..c5946671e49b 100644 --- a/scripts/devkit-admin.mts +++ b/scripts/devkit-admin.mts @@ -7,8 +7,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import colors from 'ansi-colors'; import path from 'node:path'; +import { styleText } from 'node:util'; import yargsParser from 'yargs-parser'; const args = yargsParser(process.argv.slice(2), { @@ -26,11 +26,11 @@ process.chdir(path.join(scriptDir, '..')); const originalConsole = { ...console }; console.warn = function (...args) { const [m, ...rest] = args; - originalConsole.warn(colors.yellow(m), ...rest); + originalConsole.warn(styleText(['yellow'], m), ...rest); }; console.error = function (...args) { const [m, ...rest] = args; - originalConsole.error(colors.red(m), ...rest); + originalConsole.error(styleText(['red'], m), ...rest); }; try { From c0ebc40a30d445d7fcd635f3debac743a6e48f0a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 2 Dec 2025 22:27:23 -0500 Subject: [PATCH 1910/2162] test: remove several unused eslint disable directives Several unused eslint directives have been removed from source code files. This is only an initial set with more that could be removed in the future. --- .../build_angular/src/tools/babel/webpack-loader.ts | 1 - .../angular_devkit/core/src/virtual-fs/host/record_spec.ts | 1 - packages/angular_devkit/schematics/src/rules/base_spec.ts | 1 - packages/angular_devkit/schematics/src/rules/call_spec.ts | 1 - packages/angular_devkit/schematics_cli/bin/schematics.ts | 1 - .../ngtools/webpack/src/transformers/replace_resources_spec.ts | 1 - .../jasmine-vitest/test-file-transformer.integration_spec.ts | 2 -- .../refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts | 1 - .../refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts | 3 --- packages/schematics/angular/utility/standalone/rules_spec.ts | 3 --- 10 files changed, 15 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts b/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts index 5be925d2c6b6..8cee4edf4d90 100644 --- a/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts +++ b/packages/angular_devkit/build_angular/src/tools/babel/webpack-loader.ts @@ -36,7 +36,6 @@ let linkerPluginCreator: */ let i18nPluginCreators: I18nPluginCreators | undefined; -// eslint-disable-next-line max-lines-per-function export default custom(() => { const baseOptions = Object.freeze({ babelrc: false, diff --git a/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts b/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts index 12debf5d94e4..3927e2a872a1 100644 --- a/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts +++ b/packages/angular_devkit/core/src/virtual-fs/host/record_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -/* eslint-disable @typescript-eslint/no-explicit-any */ import { path } from '../path'; import { stringToFileBuffer } from './buffer'; import { CordHost } from './record'; diff --git a/packages/angular_devkit/schematics/src/rules/base_spec.ts b/packages/angular_devkit/schematics/src/rules/base_spec.ts index 09963fd48b1f..9470a55fcdb1 100644 --- a/packages/angular_devkit/schematics/src/rules/base_spec.ts +++ b/packages/angular_devkit/schematics/src/rules/base_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { Path, virtualFs } from '@angular-devkit/core'; import { lastValueFrom, of as observableOf } from 'rxjs'; import { Rule, SchematicContext, Source } from '../engine/interface'; diff --git a/packages/angular_devkit/schematics/src/rules/call_spec.ts b/packages/angular_devkit/schematics/src/rules/call_spec.ts index ef71747fb2df..f088f03a60b1 100644 --- a/packages/angular_devkit/schematics/src/rules/call_spec.ts +++ b/packages/angular_devkit/schematics/src/rules/call_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { of as observableOf } from 'rxjs'; import { Rule, SchematicContext, Source } from '../engine/interface'; diff --git a/packages/angular_devkit/schematics_cli/bin/schematics.ts b/packages/angular_devkit/schematics_cli/bin/schematics.ts index 8e9779728a77..0905f347d4cc 100644 --- a/packages/angular_devkit/schematics_cli/bin/schematics.ts +++ b/packages/angular_devkit/schematics_cli/bin/schematics.ts @@ -216,7 +216,6 @@ function getPackageManagerName() { return 'npm'; } -// eslint-disable-next-line max-lines-per-function export async function main({ args, stdout = process.stdout, diff --git a/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts b/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts index 102d6e1e0879..8b15f5d55b09 100644 --- a/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts +++ b/packages/ngtools/webpack/src/transformers/replace_resources_spec.ts @@ -28,7 +28,6 @@ function transform( } describe('@ngtools/webpack transformers', () => { - /* eslint-disable max-len */ describe('find_resources', () => { it('should replace resources', () => { const input = tags.stripIndent` diff --git a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts index 079718212d84..d037ed5c7f08 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer.integration_spec.ts @@ -464,7 +464,6 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { }); `; - /* eslint-disable max-len */ const vitestCode = ` describe('Unsupported Features', () => { beforeAll(() => { @@ -496,7 +495,6 @@ describe('Jasmine to Vitest Transformer - Integration Tests', () => { }); }); `; - /* eslint-enable max-len */ await expectTransformation(jasmineCode, vitestCode); }); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts index 4684f7f69d2d..0ce25ccacfd5 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts @@ -132,7 +132,6 @@ describe('Jasmine to Vitest Transformer', () => { return a.toString() === b.toString(); }); `, - // eslint-disable-next-line max-len expected: `// TODO: vitest-migration: jasmine.addCustomEqualityTester is not supported. Please manually migrate to expect.addEqualityTesters(). See: https://vitest.dev/api/expect.html#expect-addequalitytesters jasmine.addCustomEqualityTester((a, b) => { return a.toString() === b.toString(); diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts index 06e26e606b5c..6c11f776bd3b 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts @@ -59,7 +59,6 @@ describe('Jasmine to Vitest Transformer', () => { { description: 'should add a TODO for jasmine.spyOnAllFunctions(object)', input: `jasmine.spyOnAllFunctions(myObject);`, - // eslint-disable-next-line max-len expected: `// TODO: vitest-migration: Vitest does not have a direct equivalent for jasmine.spyOnAllFunctions(). Please spy on individual methods manually using vi.spyOn(). See: https://vitest.dev/api/vi.html#vi-spyon jasmine.spyOnAllFunctions(myObject); `, @@ -99,7 +98,6 @@ describe('Jasmine to Vitest Transformer', () => { { description: 'should add a TODO for an unsupported spy strategy', input: `spyOn(service, 'myMethod').and.unknownStrategy();`, - // eslint-disable-next-line max-len expected: `// TODO: vitest-migration: Unsupported spy strategy ".and.unknownStrategy()" found. Please migrate this manually. See: https://vitest.dev/api/mocked.html#mock vi.spyOn(service, 'myMethod').and.unknownStrategy();`, }, @@ -269,7 +267,6 @@ vi.spyOn(service, 'myMethod').and.unknownStrategy();`, { description: 'should add a TODO for spy.calls.mostRecent() without .args', input: `const mostRecent = mySpy.calls.mostRecent();`, - // eslint-disable-next-line max-len expected: `// TODO: vitest-migration: Direct usage of mostRecent() is not supported. Please refactor to access .args directly or use vi.mocked(spy).mock.lastCall. See: https://vitest.dev/api/mocked.html#mock-lastcall const mostRecent = mySpy.calls.mostRecent();`, }, diff --git a/packages/schematics/angular/utility/standalone/rules_spec.ts b/packages/schematics/angular/utility/standalone/rules_spec.ts index da11e0527c11..3208ed0d6f04 100644 --- a/packages/schematics/angular/utility/standalone/rules_spec.ts +++ b/packages/schematics/angular/utility/standalone/rules_spec.ts @@ -354,7 +354,6 @@ describe('standalone utilities', () => { host, ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises await expectAsync(promise).toBeRejectedWithError( `Cannot add provider to invalid bootstrapApplication call in ${mainPath}`, ); @@ -384,7 +383,6 @@ describe('standalone utilities', () => { host, ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises await expectAsync(promise).toBeRejectedWithError( `Cannot statically analyze bootstrapApplication call in ${mainPath}`, ); @@ -402,7 +400,6 @@ describe('standalone utilities', () => { host, ); - // eslint-disable-next-line @typescript-eslint/no-floating-promises await expectAsync(promise).toBeRejectedWithError('Bootstrap call not found'); }); }); From b1bce75bf18b7e74b737f0dca788267b61bd7732 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 3 Dec 2025 08:06:21 +0000 Subject: [PATCH 1911/2162] build: update all github actions See associated pull request for more information. --- .github/workflows/assistant-to-the-branch-manager.yml | 2 +- .github/workflows/codeql.yml | 6 +++--- .github/workflows/dev-infra.yml | 4 ++-- .github/workflows/pr.yml | 2 +- .github/workflows/scorecard.yml | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 98f5f37dd3c8..4e944714318e 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -13,7 +13,7 @@ jobs: assistant_to_the_branch_manager: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - uses: angular/dev-infra/github-actions/branch-manager@18448ed104aeef3146ccb27484002bf5ed02bdf6 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a95aa47cdce5..f22527a4d9b1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,16 +19,16 @@ jobs: fail-fast: false steps: - name: Checkout repository - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/init@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/analyze@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 516fd51573b6..6cf8ca97e852 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,14 +12,14 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: angular/dev-infra/github-actions/pull-request-labeling@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: angular/dev-infra/github-actions/post-approval-changes@18448ed104aeef3146ccb27484002bf5ed02bdf6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index b472d9a44d44..4a6667e576e5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -20,7 +20,7 @@ jobs: outputs: snapshots: ${{ steps.filter.outputs.snapshots }} steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 77db5573f185..3c01f90238fb 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -25,7 +25,7 @@ jobs: steps: - name: 'Checkout code' - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false @@ -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@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 + uses: github/codeql-action/upload-sarif@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: sarif_file: results.sarif From 87ac2849f6dba87faaaf69d140814568a53722b5 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:05:40 +0000 Subject: [PATCH 1912/2162] docs: release notes for the v20.3.13 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08dea589c42d..8a0b880074a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 20.3.13 (2025-12-03) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | +| [cfbb61602](https://github.com/angular/angular-cli/commit/cfbb61602daf32c5b942ea84702fc3638aa111e7) | fix | update `@modelcontextprotocol/sdk` to v1.24.0 | + + + # 21.1.0-next.0 (2025-11-26) From fe631c05b38a14067acbb34c794d5b0cf4963a52 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 3 Dec 2025 13:49:37 +0000 Subject: [PATCH 1913/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 10 +- packages/angular/build/package.json | 2 +- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 273 ++++++++++++++++++---------- 4 files changed, 186 insertions(+), 101 deletions(-) diff --git a/package.json b/package.json index 4fc9cca8db3d..49a2eb3ee1db 100644 --- a/package.json +++ b/package.json @@ -93,8 +93,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.48.0", - "@typescript-eslint/parser": "8.48.0", + "@typescript-eslint/eslint-plugin": "8.48.1", + "@typescript-eslint/parser": "8.48.1", "ajv": "8.17.1", "buffer": "6.0.3", "esbuild": "0.27.0", @@ -103,14 +103,14 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", - "express": "5.1.0", + "express": "5.2.1", "fast-glob": "3.3.3", "globals": "16.5.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", - "jasmine": "~5.12.0", - "jasmine-core": "~5.12.0", + "jasmine": "~5.13.0", + "jasmine-core": "~5.13.0", "jasmine-reporters": "^2.5.2", "jasmine-spec-reporter": "~7.0.0", "karma": "~6.4.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 700cf49bed08..9bd8ae2a54c3 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -43,7 +43,7 @@ "source-map-support": "0.5.21", "tinyglobby": "0.2.15", "undici": "7.16.0", - "vite": "7.2.4", + "vite": "7.2.6", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 514d10033bbb..26dc1c5c49ac 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.23.0", + "@modelcontextprotocol/sdk": "1.24.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.45.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 308c76121cc5..c58286a7c7c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.1.0-next.0(bd97c5a741e978ef84ea9f0c3ef58280) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#bbba566abca437dcd3f6bf91a0788bdb29227563 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.48.0 - version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.48.1 + version: 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.48.0 - version: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.48.1 + version: 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -192,10 +192,10 @@ importers: version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) express: - specifier: 5.1.0 - version: 5.1.0 + specifier: 5.2.1 + version: 5.2.1 fast-glob: specifier: 3.3.3 version: 3.3.3 @@ -212,11 +212,11 @@ importers: specifier: 9.1.7 version: 9.1.7 jasmine: - specifier: ~5.12.0 - version: 5.12.0 + specifier: ~5.13.0 + version: 5.13.0 jasmine-core: - specifier: ~5.12.0 - version: 5.12.1 + specifier: ~5.13.0 + version: 5.13.0 jasmine-reporters: specifier: ^2.5.2 version: 2.5.2 @@ -237,7 +237,7 @@ importers: version: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.12.1)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) + version: 2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -366,7 +366,7 @@ importers: version: 5.1.21(@types/node@24.10.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -422,8 +422,8 @@ importers: specifier: 7.16.0 version: 7.16.0 vite: - specifier: 7.2.4 - version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 7.2.6 + version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -475,8 +475,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.23.0 - version: 1.23.0(zod@4.1.13) + specifier: 1.24.0 + version: 1.24.0(zod@4.1.13) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -2743,8 +2743,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.23.0': - resolution: {integrity: sha512-MCGd4K9aZKvuSqdoBkdMvZNcYXCkZRYVs/Gh92mdV5IHbctX9H9uIvd4X93+9g8tBbXv08sxc/QHXTzf8y65bA==} + '@modelcontextprotocol/sdk@1.24.0': + resolution: {integrity: sha512-D8h5KXY2vHFW8zTuxn2vuZGN0HGrQ5No6LkHwlEA9trVgNdPL3TF1dSqKA7Dny6BbBYKSW/rOBDXdC8KJAjUCg==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -3848,39 +3848,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.48.0': - resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==} + '@typescript-eslint/eslint-plugin@8.48.1': + resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.48.0 + '@typescript-eslint/parser': ^8.48.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.48.0': - resolution: {integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==} + '@typescript-eslint/parser@8.48.1': + resolution: {integrity: sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.48.0': - resolution: {integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==} + '@typescript-eslint/project-service@8.48.1': + resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.48.0': - resolution: {integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==} + '@typescript-eslint/scope-manager@8.48.1': + resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.48.0': - resolution: {integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==} + '@typescript-eslint/tsconfig-utils@8.48.1': + resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.48.0': - resolution: {integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==} + '@typescript-eslint/type-utils@8.48.1': + resolution: {integrity: sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3890,21 +3890,25 @@ packages: resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.48.0': - resolution: {integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==} + '@typescript-eslint/types@8.48.1': + resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.48.1': + resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.48.0': - resolution: {integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==} + '@typescript-eslint/utils@8.48.1': + resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.48.0': - resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==} + '@typescript-eslint/visitor-keys@8.48.1': + resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.28': @@ -5579,8 +5583,8 @@ 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==} + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} extend@3.0.2: @@ -6526,6 +6530,9 @@ packages: jasmine-core@5.12.1: resolution: {integrity: sha512-P/UbRZ0LKwXe7wEpwDheuhunPwITn4oPALhrJEQJo6756EwNGnsK/TSQrWojBB4cQDQ+VaxWYws9tFNDuiMh2Q==} + jasmine-core@5.13.0: + resolution: {integrity: sha512-vsYjfh7lyqvZX5QgqKc4YH8phs7g96Z8bsdIFNEU3VqXhlHaq+vov/Fgn/sr6MiUczdZkyXRC3TX369Ll4Nzbw==} + jasmine-reporters@2.5.2: resolution: {integrity: sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==} @@ -6540,6 +6547,10 @@ packages: resolution: {integrity: sha512-KmKeTNuH8rgAuPRL5AUsXWSdJVlDu+pgqi2dLXoZUSH/g3kR+7Ho8B7hEhwDu0fu1PLuiXZtfaxmQ/mB5wqihw==} hasBin: true + jasmine@5.13.0: + resolution: {integrity: sha512-oLCXIhEb5e0zzjn9GyuvcuisvLBwUjmgz7a0RNGWKwQtJCDld4m+vwKUpAIJVLB5vbmQFdtKhT86/tIZlJ5gYw==} + hasBin: true + jasminewd2@2.2.0: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} @@ -6552,6 +6563,9 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + js-base64@3.7.8: resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} @@ -8933,6 +8947,46 @@ packages: yaml: optional: true + vite@7.2.6: + resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@4.0.14: resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -9523,11 +9577,11 @@ 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/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.0.1(@types/node@24.10.1) '@inquirer/type': 4.0.1(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 @@ -10977,12 +11031,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.23.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.23.0(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.24.0(zod@4.1.13) transitivePeerDependencies: - bufferutil - supports-color @@ -11388,7 +11442,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.23.0(zod@4.1.13)': + '@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11397,8 +11451,9 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.6 - express: 5.1.0 - express-rate-limit: 7.5.1(express@5.1.0) + express: 5.2.1 + express-rate-limit: 7.5.1(express@5.2.1) + jose: 6.1.3 pkce-challenge: 5.0.1 raw-body: 3.0.2 zod: 4.1.13 @@ -12450,14 +12505,14 @@ snapshots: '@types/node': 22.19.1 optional: true - '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.48.0 - '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.48.0 + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.1 eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -12467,41 +12522,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.48.0 - '@typescript-eslint/types': 8.48.0 - '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.48.0 + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.1 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.48.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) - '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.48.0': + '@typescript-eslint/scope-manager@8.48.1': dependencies: - '@typescript-eslint/types': 8.48.0 - '@typescript-eslint/visitor-keys': 8.48.0 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/visitor-keys': 8.48.1 - '@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.48.0 - '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12511,12 +12566,14 @@ snapshots: '@typescript-eslint/types@8.48.0': {} - '@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)': + '@typescript-eslint/types@8.48.1': {} + + '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.48.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) - '@typescript-eslint/types': 8.48.0 - '@typescript-eslint/visitor-keys': 8.48.0 + '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/visitor-keys': 8.48.1 debug: 4.4.3(supports-color@10.2.2) minimatch: 9.0.5 semver: 7.7.3 @@ -12526,20 +12583,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.48.0 - '@typescript-eslint/types': 8.48.0 - '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.48.0': + '@typescript-eslint/visitor-keys@8.48.1': dependencies: - '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/types': 8.48.1 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.28': @@ -12699,9 +12756,9 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: @@ -14467,11 +14524,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14481,7 +14538,7 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14492,7 +14549,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14504,7 +14561,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14637,9 +14694,9 @@ snapshots: express-rate-limit@5.5.1: {} - express-rate-limit@7.5.1(express@5.1.0): + express-rate-limit@7.5.1(express@5.2.1): dependencies: - express: 5.1.0 + express: 5.2.1 express@4.21.2: dependencies: @@ -14677,7 +14734,7 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.1.0: + express@5.2.1: dependencies: accepts: 2.0.0 body-parser: 2.2.1 @@ -14686,6 +14743,7 @@ snapshots: cookie: 0.7.2 cookie-signature: 1.2.2 debug: 4.4.3(supports-color@10.2.2) + depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -14713,7 +14771,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15770,6 +15828,8 @@ snapshots: jasmine-core@5.12.1: {} + jasmine-core@5.13.0: {} + jasmine-reporters@2.5.2: dependencies: '@xmldom/xmldom': 0.8.11 @@ -15790,6 +15850,11 @@ snapshots: glob: 10.5.0 jasmine-core: 5.12.1 + jasmine@5.13.0: + dependencies: + glob: 10.5.0 + jasmine-core: 5.13.0 + jasminewd2@2.2.0: {} jest-worker@27.5.1: @@ -15800,6 +15865,8 @@ snapshots: jiti@2.6.1: {} + jose@6.1.3: {} + js-base64@3.7.8: {} js-tokens@4.0.0: {} @@ -15950,9 +16017,9 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.12.1)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): dependencies: - jasmine-core: 5.12.1 + jasmine-core: 5.13.0 karma: 6.4.4(bufferutil@4.0.9) karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) @@ -18623,6 +18690,24 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 + vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.1 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.94.2 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 + vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.14 From ca0b8e546a105e61a1db777625f3fd9e0753edb1 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:14:56 +0000 Subject: [PATCH 1914/2162] docs: release notes for the v21.0.2 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a0b880074a2..94eb9785ed2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 21.0.2 (2025-12-03) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- | +| [f1a7116cd](https://github.com/angular/angular-cli/commit/f1a7116cdff1bd83b26b0d64cea14ec4e8084583) | fix | update `@modelcontextprotocol/sdk` to v1.24.0 | + +### @angular-devkit/schematics + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | +| [dc6d9469e](https://github.com/angular/angular-cli/commit/dc6d9469ea494bbfee7da191774e9fa3c0baf30a) | fix | remove lazy imports in node tasks | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | +| [f8a1939fd](https://github.com/angular/angular-cli/commit/f8a1939fdf5abbc1de439d288d9357d4f92a72a9) | fix | add filename truncation to test discovery | +| [86dd3297f](https://github.com/angular/angular-cli/commit/86dd3297f7ad81788713cfd8dae48c0fad4b89ab) | fix | allow overriding Vitest coverage `reportsDirectory` option | + + + # 20.3.13 (2025-12-03) From 5dc3b641d4aba14ec31495ed8142455826bbf789 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:16:36 +0000 Subject: [PATCH 1915/2162] release: cut the v21.1.0-next.1 release --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94eb9785ed2b..632933540a9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ + + +# 21.1.0-next.1 (2025-12-03) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------ | +| [d635a6c63](https://github.com/angular/angular-cli/commit/d635a6c6335d0838fc0977f6742f6aa9f769c527) | feat | add signal forms lessons | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- | +| [e71a72ffd](https://github.com/angular/angular-cli/commit/e71a72ffdc426e26bfb4f0bb92e8f5795a621c18) | feat | generate detailed migration report for `refactor-jasmine-vitest` | + +### @angular-devkit/schematics + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | +| [98e10fa0f](https://github.com/angular/angular-cli/commit/98e10fa0f29cc8f6cf6a25c45c6888a79465eaf7) | fix | remove lazy imports in node tasks | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | +| [63c3e3f64](https://github.com/angular/angular-cli/commit/63c3e3f6406d345e777ca18bfad7d6d701e5c4ea) | fix | add filename truncation to test discovery | +| [8d8ba4f61](https://github.com/angular/angular-cli/commit/8d8ba4f61fc07dd670b705c48e82cf63424b3cce) | fix | allow overriding Vitest coverage `reportsDirectory` option | + + + # 21.0.2 (2025-12-03) diff --git a/package.json b/package.json index 49a2eb3ee1db..2aed1d6aca99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.1.0-next.0", + "version": "21.1.0-next.1", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 816b3d2f2e1aef92ba0f8f7f4d766e312de76adc Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:50:05 -0500 Subject: [PATCH 1916/2162] test: migrate tar extraction to `tar-stream` for E2E setup This commit replaces the `tar` package with `tar-stream` for file extraction in the e2e test utilities. The primary advantage of this change is a significant reduction in dependency size. The `tar` package is approximately 2MB on disk, whereas `tar-stream` is only ~235KB. This improves installation speed and reduces the overall disk footprint of the project. The implementation in `extractFile` has been updated to use the `tar-stream` event-based API and now includes `zlib.createGunzip()` to correctly handle compressed tarballs. --- package.json | 1 - pnpm-lock.yaml | 16 +++++++++-- tests/legacy-cli/e2e/utils/BUILD.bazel | 3 +- tests/legacy-cli/e2e/utils/tar.ts | 40 +++++++++++++++----------- tests/package.json | 2 ++ 5 files changed, 41 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 2aed1d6aca99..ad9b83b0e87c 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,6 @@ "rollup-plugin-sourcemaps2": "0.5.4", "semver": "7.7.3", "source-map-support": "0.5.21", - "tar": "^7.0.0", "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c58286a7c7c3..fba93a20d9ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -280,9 +280,6 @@ importers: source-map-support: specifier: 0.5.21 version: 0.5.21 - tar: - specifier: ^7.0.0 - version: 7.5.2 ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) @@ -897,9 +894,15 @@ importers: '@angular-devkit/schematics': specifier: workspace:* version: link:../packages/angular_devkit/schematics + '@types/tar-stream': + specifier: 3.1.4 + version: 3.1.4 rxjs: specifier: 7.8.2 version: 7.8.2 + tar-stream: + specifier: 3.1.7 + version: 3.1.7 tree-kill: specifier: 1.2.2 version: 1.2.2 @@ -3824,6 +3827,9 @@ packages: '@types/stack-trace@0.0.33': resolution: {integrity: sha512-O7in6531Bbvlb2KEsJ0dq0CHZvc3iWSR5ZYMtvGgnHA56VgriAN/AU2LorfmcvAl2xc9N5fbCTRyMRRl8nd74g==} + '@types/tar-stream@3.1.4': + resolution: {integrity: sha512-921gW0+g29mCJX0fRvqeHzBlE/XclDaAG0Ousy1LCghsOhvaKacDeRGEVzQP9IPfKn8Vysy7FEXAIxycpc/CMg==} + '@types/watchpack@2.4.5': resolution: {integrity: sha512-8CarnGOIYYRL342jwQyHrGwz4vCD3y5uwwYmzQVzT2Z24DqSd6wwBva6m0eNJX4S5pVmrx9xUEbOsOoqBVhWsg==} @@ -12477,6 +12483,10 @@ snapshots: '@types/stack-trace@0.0.33': {} + '@types/tar-stream@3.1.4': + dependencies: + '@types/node': 22.19.1 + '@types/watchpack@2.4.5': dependencies: '@types/graceful-fs': 4.1.9 diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index 77bd09288582..a565262640c4 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -16,10 +16,11 @@ ts_project( "//:node_modules/fast-glob", "//:node_modules/protractor", "//:node_modules/semver", - "//:node_modules/tar", "//:node_modules/verdaccio", "//:node_modules/verdaccio-auth-memory", + "//tests:node_modules/@types/tar-stream", "//tests:node_modules/rxjs", + "//tests:node_modules/tar-stream", "//tests:node_modules/tree-kill", ], ) diff --git a/tests/legacy-cli/e2e/utils/tar.ts b/tests/legacy-cli/e2e/utils/tar.ts index 77239c74eb0f..d78f47762337 100644 --- a/tests/legacy-cli/e2e/utils/tar.ts +++ b/tests/legacy-cli/e2e/utils/tar.ts @@ -8,7 +8,8 @@ import { createReadStream } from 'node:fs'; import { normalize } from 'node:path'; -import { Parser } from 'tar'; +import { createGunzip } from 'node:zlib'; +import { extract } from 'tar-stream'; /** * Extract and return the contents of a single file out of a tar file. @@ -21,20 +22,27 @@ export function extractFile(tarball: string, filePath: string): Promise const normalizedFilePath = normalize(filePath); return new Promise((resolve, reject) => { - createReadStream(tarball) - .pipe( - new Parser({ - strict: true, - filter: (p) => normalize(p) === normalizedFilePath, - onReadEntry: (entry) => { - const chunks: Buffer[] = []; - - entry.on('data', (chunk) => chunks.push(chunk)); - entry.on('error', reject); - entry.on('finish', () => resolve(Buffer.concat(chunks))); - }, - }), - ) - .on('close', () => reject(`${tarball} does not contain ${filePath}`)); + const extractor = extract(); + + extractor.on('entry', (header, stream, next) => { + if (normalize(header.name) !== normalizedFilePath) { + stream.resume(); + next(); + + return; + } + + const chunks: Buffer[] = []; + stream.on('data', (chunk) => chunks.push(chunk)); + stream.on('error', reject); + stream.on('end', () => { + resolve(Buffer.concat(chunks)); + next(); + }); + }); + + extractor.on('finish', () => reject(new Error(`'${filePath}' not found in '${tarball}'.`))); + + createReadStream(tarball).pipe(createGunzip()).pipe(extractor).on('error', reject); }); } diff --git a/tests/package.json b/tests/package.json index 4aec9553824b..9a87c1c637b8 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,9 @@ { "devDependencies": { + "@types/tar-stream": "3.1.4", "@angular-devkit/schematics": "workspace:*", "rxjs": "7.8.2", + "tar-stream": "3.1.7", "tree-kill": "1.2.2" } } From ec19c2686e21909e958e65e02c92734d475c28cf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 3 Dec 2025 11:41:17 -0500 Subject: [PATCH 1917/2162] build: remove repo root usage of `yargs-parser` The `scripts/devkit-admin.mts` infrastructure script has been migrated to use the native Node.js `parseArgs` API. This removes the last non-package usage of the `yargs-parser` package and allows the root level dependency to be removed. --- package.json | 1 - .../angular_devkit/architect_cli/BUILD.bazel | 2 +- .../angular_devkit/schematics_cli/BUILD.bazel | 2 +- pnpm-lock.yaml | 3 --- scripts/devkit-admin.mts | 22 +++++++++++++------ 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index ad9b83b0e87c..53dfe13439bd 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,6 @@ "unenv": "^1.10.0", "verdaccio": "6.2.3", "verdaccio-auth-memory": "^10.0.0", - "yargs-parser": "22.0.0", "zod": "4.1.13", "zone.js": "^0.16.0" }, diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 039b5c41c998..463753173ad3 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -21,10 +21,10 @@ ts_project( ":node_modules/@angular-devkit/core", ":node_modules/ansi-colors", ":node_modules/progress", + ":node_modules/yargs-parser", "//:node_modules/@types/node", "//:node_modules/@types/progress", "//:node_modules/@types/yargs-parser", - "//:node_modules/yargs-parser", ], ) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index 0828963697a6..f6f26dd249fb 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -49,9 +49,9 @@ ts_project( ":node_modules/@angular-devkit/schematics", ":node_modules/@inquirer/prompts", ":node_modules/ansi-colors", + ":node_modules/yargs-parser", "//:node_modules/@types/node", "//:node_modules/@types/yargs-parser", - "//:node_modules/yargs-parser", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fba93a20d9ca..2644777b133d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -301,9 +301,6 @@ importers: verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 - yargs-parser: - specifier: 22.0.0 - version: 22.0.0 zod: specifier: 4.1.13 version: 4.1.13 diff --git a/scripts/devkit-admin.mts b/scripts/devkit-admin.mts index c5946671e49b..93f3356438e8 100644 --- a/scripts/devkit-admin.mts +++ b/scripts/devkit-admin.mts @@ -8,16 +8,24 @@ */ import path from 'node:path'; -import { styleText } from 'node:util'; -import yargsParser from 'yargs-parser'; +import { parseArgs, styleText } from 'node:util'; -const args = yargsParser(process.argv.slice(2), { - boolean: ['verbose'], - configuration: { - 'camel-case-expansion': false, +const { values, positionals } = parseArgs({ + args: process.argv.slice(2), + options: { + verbose: { + type: 'boolean', + }, }, + allowPositionals: true, + strict: false, // Allow unknown options to pass through. }); -const scriptName = args._.shift(); + +const scriptName = positionals.shift(); +const args = { + ...values, + _: positionals, +}; const cwd = process.cwd(); const scriptDir = import.meta.dirname; From 51055fb3ce0775e82a65e51e39c6be235b475659 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 1 Dec 2025 15:16:58 -0500 Subject: [PATCH 1918/2162] build: use rules_angular to build MCP find examples tool database This commit refactors the build process for the Model Context Protocol (MCP) examples database to leverage `rules_angular`. Previously, the MCP examples database was built using a custom Bazel rule. This change transitions to using the build rules provided by rules_angular. --- package.json | 1 - packages/angular/cli/BUILD.bazel | 5 +- pnpm-lock.yaml | 4 - tools/BUILD.bazel | 9 -- tools/defaults.bzl | 4 + tools/example_db_generator.bzl | 12 -- tools/example_db_generator.js | 229 ------------------------------- 7 files changed, 6 insertions(+), 258 deletions(-) delete mode 100644 tools/example_db_generator.bzl delete mode 100644 tools/example_db_generator.js diff --git a/package.json b/package.json index 53dfe13439bd..7ac947bd43dd 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,6 @@ "unenv": "^1.10.0", "verdaccio": "6.2.3", "verdaccio-auth-memory": "^10.0.0", - "zod": "4.1.13", "zone.js": "^0.16.0" }, "dependenciesMeta": { diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index aeb1878b9d52..d53d8d7078da 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -4,8 +4,7 @@ # found in the LICENSE file at https://angular.dev/license load("@npm//:defs.bzl", "npm_link_all_packages") -load("//tools:defaults.bzl", "jasmine_test", "npm_package", "ts_project") -load("//tools:example_db_generator.bzl", "cli_example_db") +load("//tools:defaults.bzl", "jasmine_test", "ng_examples_db", "npm_package", "ts_project") load("//tools:ng_cli_schema_generator.bzl", "cli_json_schema") load("//tools:ts_json_schema.bzl", "ts_json_schema") @@ -90,7 +89,7 @@ ts_project( ], ) -cli_example_db( +ng_examples_db( name = "cli_example_database", srcs = glob( include = [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2644777b133d..3814382a0a1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -301,9 +301,6 @@ importers: verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 - zod: - specifier: 4.1.13 - version: 4.1.13 zone.js: specifier: ^0.16.0 version: 0.16.0 @@ -7782,7 +7779,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: diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index 59c817e3aa06..4804a9ee59a6 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -30,12 +30,3 @@ js_binary( ], entry_point = "quicktype_runner.js", ) - -js_binary( - name = "ng_example_db", - data = [ - "example_db_generator.js", - "//:node_modules/zod", - ], - entry_point = "example_db_generator.js", -) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index dd4238243f16..d301591a32ba 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -2,6 +2,7 @@ load("@aspect_bazel_lib//lib:copy_to_bin.bzl", _copy_to_bin = "copy_to_bin") load("@aspect_rules_jasmine//jasmine:defs.bzl", _jasmine_test = "jasmine_test") load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary") load("@devinfra//bazel/ts_project:index.bzl", "strict_deps_test") +load("@rules_angular//src/ng_examples_db:index.bzl", _ng_examples_db = "ng_examples_db") load("@rules_angular//src/ng_package:index.bzl", _ng_package = "ng_package") load("@rules_angular//src/ts_project:index.bzl", _ts_project = "ts_project") load("//tools:substitutions.bzl", "substitutions") @@ -77,3 +78,6 @@ def jasmine_test(data = [], args = [], **kwargs): data = data + ["//:node_modules/source-map-support"], **kwargs ) + +def ng_examples_db(**kwargs): + _ng_examples_db(**kwargs) diff --git a/tools/example_db_generator.bzl b/tools/example_db_generator.bzl deleted file mode 100644 index 7a899e3d8de4..000000000000 --- a/tools/example_db_generator.bzl +++ /dev/null @@ -1,12 +0,0 @@ -load("@aspect_rules_js//js:defs.bzl", "js_run_binary") - -def cli_example_db(name, srcs, path, out, data = []): - js_run_binary( - name = name, - outs = [out], - srcs = srcs + data, - tool = "//tools:ng_example_db", - progress_message = "Generating code example database from %s" % path, - mnemonic = "NgExampleSqliteDb", - args = [path, "$(rootpath %s)" % out], - ) diff --git a/tools/example_db_generator.js b/tools/example_db_generator.js deleted file mode 100644 index 052bb1afb53d..000000000000 --- a/tools/example_db_generator.js +++ /dev/null @@ -1,229 +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 - */ - -const { globSync, readdirSync, readFileSync, mkdirSync, existsSync, rmSync } = require('node:fs'); -const { resolve, dirname, join } = require('node:path'); -const { DatabaseSync } = require('node:sqlite'); -const { z } = require('zod'); - -/** - * A simple YAML front matter parser. - * - * This function extracts the YAML block enclosed by `---` at the beginning of a string - * and parses it into a JavaScript object. It is not a full YAML parser and only - * supports simple key-value pairs and string arrays. - * - * @param content The string content to parse. - * @returns A record containing the parsed front matter data. - */ -function parseFrontmatter(content) { - const match = content.match(/^---\r?\n(.*?)\r?\n---/s); - if (!match) { - return {}; - } - - const frontmatter = match[1]; - const data = {}; - const lines = frontmatter.split(/\r?\n/); - - let currentKey = ''; - let isArray = false; - const arrayValues = []; - - for (const line of lines) { - const keyValueMatch = line.match(/^([^:]+):\s*(.*)/); - if (keyValueMatch) { - if (currentKey && isArray) { - data[currentKey] = arrayValues.slice(); - arrayValues.length = 0; - } - - const [, key, value] = keyValueMatch; - currentKey = key.trim(); - isArray = value.trim() === ''; - - if (!isArray) { - const trimmedValue = value.trim(); - if (trimmedValue === 'true') { - data[currentKey] = true; - } else if (trimmedValue === 'false') { - data[currentKey] = false; - } else { - data[currentKey] = trimmedValue; - } - } - } else { - const arrayItemMatch = line.match(/^\s*-\s*(.*)/); - if (arrayItemMatch && currentKey && isArray) { - let value = arrayItemMatch[1].trim(); - // Unquote if the value is quoted. - if ( - (value.startsWith("'") && value.endsWith("'")) || - (value.startsWith('"') && value.endsWith('"')) - ) { - value = value.slice(1, -1); - } - arrayValues.push(value); - } - } - } - - if (currentKey && isArray) { - data[currentKey] = arrayValues; - } - - return data; -} - -function generate(inPath, outPath) { - const dbPath = outPath; - mkdirSync(dirname(outPath), { recursive: true }); - - if (existsSync(dbPath)) { - rmSync(dbPath); - } - const db = new DatabaseSync(dbPath); - - // Create a table to store metadata. - db.exec(` - CREATE TABLE metadata ( - key TEXT PRIMARY KEY NOT NULL, - value TEXT NOT NULL - ); - `); - - db.exec(` - INSERT INTO metadata (key, value) VALUES - ('schema_version', '1'), - ('created_at', '${new Date().toISOString()}'); - `); - - // Create a relational table to store the structured example data. - db.exec(` - CREATE TABLE examples ( - id INTEGER PRIMARY KEY, - title TEXT NOT NULL, - summary TEXT NOT NULL, - keywords TEXT, - required_packages TEXT, - related_concepts TEXT, - related_tools TEXT, - experimental INTEGER NOT NULL DEFAULT 0, - content TEXT NOT NULL - ); - `); - - // Create an FTS5 virtual table to provide full-text search capabilities. - db.exec(` - CREATE VIRTUAL TABLE examples_fts USING fts5( - title, - summary, - keywords, - required_packages, - related_concepts, - related_tools, - content, - content='examples', - content_rowid='id', - tokenize = 'porter ascii' - ); - `); - - // Create triggers to keep the FTS table synchronized with the examples table. - db.exec(` - CREATE TRIGGER examples_after_insert AFTER INSERT ON examples BEGIN - INSERT INTO examples_fts( - rowid, title, summary, keywords, required_packages, related_concepts, related_tools, - content - ) - VALUES ( - new.id, new.title, new.summary, new.keywords, new.required_packages, - new.related_concepts, new.related_tools, new.content - ); - END; - `); - - const insertStatement = db.prepare( - 'INSERT INTO examples(' + - 'title, summary, keywords, required_packages, related_concepts, related_tools, experimental, content' + - ') VALUES(?, ?, ?, ?, ?, ?, ?, ?);', - ); - - const frontmatterSchema = z.object({ - title: z.string(), - summary: z.string(), - keywords: z.array(z.string()).optional(), - required_packages: z.array(z.string()).optional(), - related_concepts: z.array(z.string()).optional(), - related_tools: z.array(z.string()).optional(), - experimental: z.boolean().optional(), - }); - - db.exec('BEGIN TRANSACTION'); - const entries = globSync - ? globSync('**/*.md', { cwd: resolve(inPath), withFileTypes: true }) - : readdirSync(resolve(inPath), { withFileTypes: true }); - for (const entry of entries) { - if (!entry.isFile() || !entry.name.endsWith('.md')) { - continue; - } - - const content = readFileSync(join(entry.parentPath, entry.name), 'utf-8'); - const frontmatter = parseFrontmatter(content); - - const validation = frontmatterSchema.safeParse(frontmatter); - if (!validation.success) { - console.error(`Validation failed for example file: ${entry.name}`); - console.error('Issues:', validation.error.issues); - throw new Error(`Invalid front matter in ${entry.name}`); - } - - const { - title, - summary, - keywords, - required_packages, - related_concepts, - related_tools, - experimental, - } = validation.data; - insertStatement.run( - title, - summary, - JSON.stringify(keywords ?? []), - JSON.stringify(required_packages ?? []), - JSON.stringify(related_concepts ?? []), - JSON.stringify(related_tools ?? []), - experimental ? 1 : 0, - content, - ); - } - db.exec('END TRANSACTION'); - - db.close(); -} - -if (require.main === module) { - const argv = process.argv.slice(2); - if (argv.length !== 2) { - console.error('Must include 2 arguments.'); - process.exit(1); - } - - const [inPath, outPath] = argv; - - try { - generate(inPath, outPath); - } catch (error) { - console.error('An error happened:'); - console.error(error); - process.exit(127); - } -} - -exports.generate = generate; From d8b76e93d3e9e4e7bd7ad6e12fdf59cd663cbb8e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 1 Dec 2025 19:05:18 -0500 Subject: [PATCH 1919/2162] fix(@angular/cli): correctly handle yarn classic tag manifest fetching Introduces a `requiresManifestVersionLookup` property to `PackageManagerDescriptor` to control whether a package manager needs an explicit metadata lookup for tags, ranges, or when no `fetchSpec` is provided before attempting to fetch the full registry manifest. This change optimizes manifest fetching by enabling a preliminary metadata lookup for package managers like `yarn-classic` that require it to resolve tags and ranges to concrete versions. --- .../package-manager-descriptor.ts | 11 +++-- .../src/package-managers/package-manager.ts | 30 +++++++++++-- .../cli/src/package-managers/parsers.ts | 44 +++++++++++++++++-- 3 files changed, 76 insertions(+), 9 deletions(-) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index e64b4c8be92c..85fa55707a11 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -20,7 +20,8 @@ import { parseNpmLikeManifest, parseNpmLikeMetadata, parseYarnClassicDependencies, - parseYarnLegacyManifest, + parseYarnClassicManifest, + parseYarnClassicMetadata, parseYarnModernDependencies, } from './parsers'; @@ -73,6 +74,9 @@ export interface PackageManagerDescriptor { /** The command to fetch the registry manifest of a package. */ readonly getManifestCommand: readonly string[]; + /** Whether a specific version lookup is needed prior to fetching a registry manifest. */ + readonly requiresManifestVersionLookup?: boolean; + /** A function that formats the arguments for field-filtered registry views. */ readonly viewCommandFieldArgFormatter?: (fields: readonly string[]) => string[]; @@ -166,10 +170,11 @@ export const SUPPORTED_PACKAGE_MANAGERS = { versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json'], getManifestCommand: ['info', '--json'], + requiresManifestVersionLookup: true, outputParsers: { listDependencies: parseYarnClassicDependencies, - getRegistryManifest: parseYarnLegacyManifest, - getRegistryMetadata: parseNpmLikeMetadata, + getRegistryManifest: parseYarnClassicManifest, + getRegistryMetadata: parseYarnClassicMetadata, }, }, pnpm: { diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 02a4f8d4c853..85d532850938 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -14,6 +14,7 @@ import { join } from 'node:path'; import npa from 'npm-package-arg'; +import { maxSatisfying } from 'semver'; import { PackageManagerError } from './error'; import { Host } from './host'; import { Logger } from './logger'; @@ -156,12 +157,14 @@ export class PackageManager { return { stdout: '', stderr: '' }; } - return this.host.runCommand(this.descriptor.binary, finalArgs, { + const commandResult = await this.host.runCommand(this.descriptor.binary, finalArgs, { ...runOptions, cwd: executionDirectory, stdio: 'pipe', env: finalEnv, }); + + return { stdout: commandResult.stdout.trim(), stderr: commandResult.stderr.trim() }; } /** @@ -395,13 +398,34 @@ export class PackageManager { switch (type) { case 'range': case 'version': - case 'tag': + case 'tag': { if (!name) { throw new Error(`Could not parse package name from specifier: ${specifier}`); } // `fetchSpec` is the version, range, or tag. - return this.getRegistryManifest(name, fetchSpec ?? 'latest', options); + let versionSpec = fetchSpec ?? 'latest'; + if (this.descriptor.requiresManifestVersionLookup) { + if (type === 'tag' || !fetchSpec) { + const metadata = await this.getRegistryMetadata(name, options); + if (!metadata) { + return null; + } + versionSpec = metadata['dist-tags'][versionSpec]; + } else if (type === 'range') { + const metadata = await this.getRegistryMetadata(name, options); + if (!metadata) { + return null; + } + versionSpec = maxSatisfying(metadata.versions, fetchSpec) ?? ''; + } + if (!versionSpec) { + return null; + } + } + + return this.getRegistryManifest(name, versionSpec, options); + } case 'directory': { if (!fetchSpec) { throw new Error(`Could not parse directory path from specifier: ${specifier}`); diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts index e14b455a4fe6..fd52402f1cf3 100644 --- a/packages/angular/cli/src/package-managers/parsers.ts +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -269,12 +269,12 @@ export function parseNpmLikeMetadata(stdout: string, logger?: Logger): PackageMe } /** - * Parses the output of `yarn info` (classic). + * Parses the output of `yarn info` (classic) to get a package manifest. * @param stdout The standard output of the command. * @param logger An optional logger instance. * @returns The package manifest object. */ -export function parseYarnLegacyManifest(stdout: string, logger?: Logger): PackageManifest | null { +export function parseYarnClassicManifest(stdout: string, logger?: Logger): PackageManifest | null { logger?.debug(`Parsing yarn classic manifest...`); logStdout(stdout, logger); @@ -287,5 +287,43 @@ export function parseYarnLegacyManifest(stdout: string, logger?: Logger): Packag const data = JSON.parse(stdout); // Yarn classic wraps the manifest in a `data` property. - return data.data ?? data; + const manifest = data.data as PackageManifest; + + // Yarn classic removes any field with a falsy value + // https://github.com/yarnpkg/yarn/blob/7cafa512a777048ce0b666080a24e80aae3d66a9/src/cli/commands/info.js#L26-L29 + // Add a default of 'false' for the `save` field when the `ng-add` object is present but does not have any fields. + // There is a small chance this causes an incorrect value. However, the use of `ng-add` is rare and, in the cases + // it is used, save is set to either a `false` literal or a truthy value. Special cases can be added for specific + // packages if discovered. + if ( + manifest['ng-add'] && + typeof manifest['ng-add'] === 'object' && + Object.keys(manifest['ng-add']).length === 0 + ) { + manifest['ng-add'].save ??= false; + } + + return manifest; +} + +/** + * Parses the output of `yarn info` (classic) to get package metadata. + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns The package metadata object. + */ +export function parseYarnClassicMetadata(stdout: string, logger?: Logger): PackageMetadata | null { + logger?.debug(`Parsing yarn classic metadata...`); + logStdout(stdout, logger); + + if (!stdout) { + logger?.debug(' stdout is empty. No metadata found.'); + + return null; + } + + const data = JSON.parse(stdout); + + // Yarn classic wraps the metadata in a `data` property. + return data.data; } From 69b2be851321ae06001f02135b5a39790b3543db Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 3 Dec 2025 16:52:55 -0500 Subject: [PATCH 1920/2162] refactor(@angular/cli): implement structured error handling in package manager API This commit introduces a structured error handling system into the package manager abstraction. Previously, the system treated most command failures generically, often assuming a package was simply "not found." This could mask the true root cause of issues such as network failures, registry authentication errors, or unexpected changes in a package manager's output. The new implementation enhances diagnostics and provides clearer, more actionable error messages by: - Introducing a standardized `ErrorInfo` interface to represent parsed error details. - Adding dedicated parsers to extract structured error information (JSON or text-based) from the stderr of npm, yarn, pnpm, and bun. - Making the core execution logic stricter. It now re-throws the original `PackageManagerError` if a command fails for an unknown reason, preventing silent failures. - Abstracting the "package not found" check into the `PackageManagerDescriptor`, removing hardcoded logic from the execution layer. - Improving the `yarn-classic` parser to use verbose logs, allowing it to accurately detect and report specific HTTP status codes (e.g., 401, 403, 404, 500). --- .../angular/cli/src/package-managers/error.ts | 15 ++ .../package-manager-descriptor.ts | 33 ++- .../src/package-managers/package-manager.ts | 46 +++- .../cli/src/package-managers/parsers.ts | 254 +++++++++++++++--- .../cli/src/package-managers/parsers_spec.ts | 112 ++++++++ 5 files changed, 423 insertions(+), 37 deletions(-) create mode 100644 packages/angular/cli/src/package-managers/parsers_spec.ts diff --git a/packages/angular/cli/src/package-managers/error.ts b/packages/angular/cli/src/package-managers/error.ts index c17af3f7cae3..1ce79f2240a7 100644 --- a/packages/angular/cli/src/package-managers/error.ts +++ b/packages/angular/cli/src/package-managers/error.ts @@ -35,3 +35,18 @@ export class PackageManagerError extends Error { super(message); } } + +/** + * Represents structured information about an error returned by a package manager command. + * This is a data interface, not an `Error` subclass. + */ +export interface ErrorInfo { + /** A specific error code (e.g. 'E404', 'EACCES'). */ + readonly code: string; + + /** A short, human-readable summary of the error. */ + readonly summary: string; + + /** An optional, detailed description of the error. */ + readonly detail?: string; +} diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index 85fa55707a11..322cf5aa2147 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -12,14 +12,17 @@ * package-manager-specific commands, flags, and output parsing. */ +import { ErrorInfo } from './error'; import { Logger } from './logger'; import { PackageManifest, PackageMetadata } from './package-metadata'; import { InstalledPackage } from './package-tree'; import { parseNpmLikeDependencies, + parseNpmLikeError, parseNpmLikeManifest, parseNpmLikeMetadata, parseYarnClassicDependencies, + parseYarnClassicError, parseYarnClassicManifest, parseYarnClassicMetadata, parseYarnModernDependencies, @@ -90,12 +93,30 @@ export interface PackageManagerDescriptor { /** A function to parse the output of `getManifestCommand` for the full package metadata. */ getRegistryMetadata: (stdout: string, logger?: Logger) => PackageMetadata | null; + + /** A function to parse the output when a command fails. */ + getError?: (output: string, logger?: Logger) => ErrorInfo | null; }; + + /** A function that checks if a structured error represents a "package not found" error. */ + readonly isNotFound: (error: ErrorInfo) => boolean; } /** A type that represents the name of a supported package manager. */ export type PackageManagerName = keyof typeof SUPPORTED_PACKAGE_MANAGERS; +/** A set of error codes that are known to indicate a "package not found" error. */ +const NOT_FOUND_ERROR_CODES = new Set(['E404']); + +/** + * A shared function to check if a structured error represents a "package not found" error. + * @param error The structured error to check. + * @returns True if the error code is a known "not found" code, false otherwise. + */ +function isKnownNotFound(error: ErrorInfo): boolean { + return NOT_FOUND_ERROR_CODES.has(error.code); +} + /** * A map of supported package managers to their descriptors. * This is the single source of truth for all package-manager-specific @@ -128,7 +149,9 @@ export const SUPPORTED_PACKAGE_MANAGERS = { listDependencies: parseNpmLikeDependencies, getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, + getError: parseNpmLikeError, }, + isNotFound: isKnownNotFound, }, yarn: { binary: 'yarn', @@ -150,7 +173,9 @@ export const SUPPORTED_PACKAGE_MANAGERS = { listDependencies: parseYarnModernDependencies, getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, + getError: parseNpmLikeError, }, + isNotFound: isKnownNotFound, }, 'yarn-classic': { binary: 'yarn', @@ -169,13 +194,15 @@ export const SUPPORTED_PACKAGE_MANAGERS = { getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json'], - getManifestCommand: ['info', '--json'], + getManifestCommand: ['info', '--json', '--verbose'], requiresManifestVersionLookup: true, outputParsers: { listDependencies: parseYarnClassicDependencies, getRegistryManifest: parseYarnClassicManifest, getRegistryMetadata: parseYarnClassicMetadata, + getError: parseYarnClassicError, }, + isNotFound: isKnownNotFound, }, pnpm: { binary: 'pnpm', @@ -197,7 +224,9 @@ export const SUPPORTED_PACKAGE_MANAGERS = { listDependencies: parseNpmLikeDependencies, getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, + getError: parseNpmLikeError, }, + isNotFound: isKnownNotFound, }, bun: { binary: 'bun', @@ -219,7 +248,9 @@ export const SUPPORTED_PACKAGE_MANAGERS = { listDependencies: parseNpmLikeDependencies, getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, + getError: parseNpmLikeError, }, + isNotFound: isKnownNotFound, }, } satisfies Record; diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 85d532850938..7a012a3e544c 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -15,7 +15,7 @@ import { join } from 'node:path'; import npa from 'npm-package-arg'; import { maxSatisfying } from 'semver'; -import { PackageManagerError } from './error'; +import { ErrorInfo, PackageManagerError } from './error'; import { Host } from './host'; import { Logger } from './logger'; import { PackageManagerDescriptor } from './package-manager-descriptor'; @@ -194,20 +194,56 @@ export class PackageManager { let stdout; let stderr; + let exitCode; + let thrownError; try { ({ stdout, stderr } = await this.#run(args, runOptions)); + exitCode = 0; } catch (e) { - if (e instanceof PackageManagerError && typeof e.exitCode === 'number' && e.exitCode !== 0) { - // Some package managers exit with a non-zero code when the package is not found. + thrownError = e; + if (e instanceof PackageManagerError) { + stdout = e.stdout; + stderr = e.stderr; + exitCode = e.exitCode; + } else { + // Re-throw unexpected errors + throw e; + } + } + + // Yarn classic can exit with code 0 even when an error occurs. + // To ensure we capture these cases, we will always attempt to parse a + // structured error from the output, regardless of the exit code. + const getError = this.descriptor.outputParsers.getError; + const parsedError = + getError?.(stdout, this.options.logger) ?? getError?.(stderr, this.options.logger) ?? null; + + if (parsedError) { + this.options.logger?.debug( + `[${this.descriptor.binary}] Structured error (code: ${parsedError.code}): ${parsedError.summary}`, + ); + + // Special case for 'not found' errors (e.g., E404). Return null for these. + if (this.descriptor.isNotFound(parsedError)) { if (cache && cacheKey) { cache.set(cacheKey, null); } return null; + } else { + // For all other structured errors, throw a more informative error. + throw new PackageManagerError(parsedError.summary, stdout, stderr, exitCode); } - throw e; } + // If an error was originally thrown and we didn't parse a more specific + // structured error, re-throw the original error now. + if (thrownError) { + throw thrownError; + } + + // If we reach this point, the command succeeded and no structured error was found. + // We can now safely parse the successful output. try { const result = parser(stdout, this.options.logger); if (cache && cacheKey) { @@ -219,7 +255,7 @@ export class PackageManager { const message = `Failed to parse package manager output: ${ e instanceof Error ? e.message : '' }`; - throw new PackageManagerError(message, stdout, stderr, 0); + throw new PackageManagerError(message, stdout, stderr, exitCode); } } diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts index fd52402f1cf3..0e12fd5f0cfb 100644 --- a/packages/angular/cli/src/package-managers/parsers.ts +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -12,6 +12,7 @@ * into their own file improves modularity and allows for focused testing. */ +import { ErrorInfo } from './error'; import { Logger } from './logger'; import { PackageManifest, PackageMetadata } from './package-metadata'; import { InstalledPackage } from './package-tree'; @@ -31,6 +32,26 @@ function logStdout(stdout: string, logger?: Logger): void { logger.debug(` stdout:\n${output}`); } +/** + * A generator function that parses a string containing JSONL (newline-delimited JSON) + * and yields each successfully parsed JSON object. + * @param output The string output to parse. + * @param logger An optional logger instance. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function* parseJsonLines(output: string, logger?: Logger): Generator { + for (const line of output.split('\n')) { + if (!line.trim()) { + continue; + } + try { + yield JSON.parse(line); + } catch (e) { + logger?.debug(` Ignoring non-JSON line: ${e}`); + } + } +} + interface NpmListDependency { version: string; path?: string; @@ -106,7 +127,7 @@ export function parseNpmLikeDependencies( * Parses the output of `yarn list` (classic). * * The expected output is a JSON stream (JSONL), where each line is a JSON object. - * The relevant object has a `type` of `'tree'`. + * The relevant object has a `type` of `'tree'` with a `data` property. * Yarn classic does not provide a path, so the `path` property will be `undefined`. * * ```json @@ -131,11 +152,7 @@ export function parseYarnClassicDependencies( return dependencies; } - for (const line of stdout.split('\n')) { - if (!line) { - continue; - } - const json = JSON.parse(line); + for (const json of parseJsonLines(stdout, logger)) { if (json.type === 'tree' && json.data?.trees) { for (const info of json.data.trees) { const name = info.name.split('@')[0]; @@ -202,25 +219,16 @@ export function parseYarnModernDependencies( ` Failed to parse as single JSON object: ${e}. Falling back to line-by-line parsing.`, ); // Fallback for older versions of yarn berry that might still output json lines - for (const line of stdout.split('\n')) { - if (!line) { - continue; - } - try { - const json = JSON.parse(line); - if (json.type === 'tree' && json.data?.trees) { - for (const info of json.data.trees) { - const name = info.name.split('@')[0]; - const version = info.name.split('@').pop(); - dependencies.set(name, { - name, - version, - }); - } + for (const json of parseJsonLines(stdout, logger)) { + if (json.type === 'tree' && json.data?.trees) { + for (const info of json.data.trees) { + const name = info.name.split('@')[0]; + const version = info.name.split('@').pop(); + dependencies.set(name, { + name, + version, + }); } - } catch (innerError) { - logger?.debug(` Ignoring non-JSON line: ${innerError}`); - // Ignore lines that are not valid JSON. } } } @@ -270,9 +278,16 @@ export function parseNpmLikeMetadata(stdout: string, logger?: Logger): PackageMe /** * Parses the output of `yarn info` (classic) to get a package manifest. + * + * When `yarn info --verbose` is used, the output is a JSONL stream. This function + * iterates through the lines to find the object with `type: 'inspect'` which contains + * the package manifest. + * + * For non-verbose output, it falls back to parsing a single JSON object. + * * @param stdout The standard output of the command. * @param logger An optional logger instance. - * @returns The package manifest object. + * @returns The package manifest object, or `null` if not found. */ export function parseYarnClassicManifest(stdout: string, logger?: Logger): PackageManifest | null { logger?.debug(`Parsing yarn classic manifest...`); @@ -284,10 +299,21 @@ export function parseYarnClassicManifest(stdout: string, logger?: Logger): Packa return null; } - const data = JSON.parse(stdout); + // Yarn classic outputs JSONL. We need to find the relevant object. + let manifest; + for (const json of parseJsonLines(stdout, logger)) { + // The manifest data is in a JSON object with type 'inspect'. + if (json.type === 'inspect' && json.data) { + manifest = json.data; + break; + } + } - // Yarn classic wraps the manifest in a `data` property. - const manifest = data.data as PackageManifest; + if (!manifest) { + logger?.debug(' Failed to find manifest in yarn classic output.'); + + return null; + } // Yarn classic removes any field with a falsy value // https://github.com/yarnpkg/yarn/blob/7cafa512a777048ce0b666080a24e80aae3d66a9/src/cli/commands/info.js#L26-L29 @@ -322,8 +348,174 @@ export function parseYarnClassicMetadata(stdout: string, logger?: Logger): Packa return null; } - const data = JSON.parse(stdout); + // Yarn classic outputs JSONL. We need to find the relevant object. + let metadata; + for (const json of parseJsonLines(stdout, logger)) { + // The metadata data is in a JSON object with type 'inspect'. + if (json.type === 'inspect' && json.data) { + metadata = json.data; + break; + } + } + + if (!metadata) { + logger?.debug(' Failed to find metadata in yarn classic output.'); + + return null; + } + + return metadata; +} + +/** + * Parses the `stdout` or `stderr` output of npm, pnpm, modern yarn, or bun to extract structured error information. + * + * This parser uses a multi-stage approach. It first attempts to parse the entire `output` as a + * single JSON object, which is the standard for modern tools like pnpm, yarn, and bun. If JSON + * parsing fails, it falls back to a line-by-line regex-based approach to handle the plain + * text output from older versions of npm. + * + * Example JSON output (pnpm): + * ```json + * { + * "code": "E404", + * "summary": "Not Found - GET https://registry.npmjs.org/@angular%2fnon-existent - Not found", + * "detail": "The requested resource '@angular/non-existent@*' could not be found or you do not have permission to access it." + * } + * ``` + * + * Example text output (npm): + * ``` + * npm error code E404 + * npm error 404 Not Found - GET https://registry.npmjs.org/@angular%2fnon-existent - Not found + * ``` + * + * @param output The standard output or standard error of the command. + * @param logger An optional logger instance. + * @returns An `ErrorInfo` object if parsing is successful, otherwise `null`. + */ +export function parseNpmLikeError(output: string, logger?: Logger): ErrorInfo | null { + logger?.debug(`Parsing npm-like error output...`); + logStdout(output, logger); // Log output for debugging purposes + + if (!output) { + logger?.debug(' output is empty. No error found.'); + + return null; + } + + // Attempt to parse as JSON first (common for pnpm, modern yarn, bun) + try { + const jsonError = JSON.parse(output); + if ( + jsonError && + typeof jsonError.code === 'string' && + (typeof jsonError.summary === 'string' || typeof jsonError.message === 'string') + ) { + const summary = jsonError.summary || jsonError.message; + logger?.debug(` Successfully parsed JSON error with code '${jsonError.code}'.`); + + return { + code: jsonError.code, + summary, + detail: jsonError.detail, + }; + } + } catch (e) { + logger?.debug(` Failed to parse output as JSON: ${e}. Attempting regex fallback.`); + // Fallback to regex for plain text errors (common for npm) + } + + // Regex for npm-like error codes (e.g., `npm ERR! code E404` or `npm error code E404`) + const errorCodeMatch = output.match(/npm (ERR!|error) code (E\d{3}|[A-Z_]+)/); + if (errorCodeMatch) { + const code = errorCodeMatch[2]; // Capture group 2 is the actual error code + let summary: string | undefined; + + // Find the most descriptive summary line (the line after `npm ERR! code ...` or `npm error code ...`). + for (const line of output.split('\n')) { + if (line.startsWith('npm ERR!') && !line.includes(' code ')) { + summary = line.replace('npm ERR! ', '').trim(); + break; + } else if (line.startsWith('npm error') && !line.includes(' code ')) { + summary = line.replace('npm error ', '').trim(); + break; + } + } + + logger?.debug(` Successfully parsed text error with code '${code}'.`); + + return { + code, + summary: summary || `Package manager error: ${code}`, + }; + } + + logger?.debug(' Failed to parse npm-like error. No structured error found.'); + + return null; +} + +/** + * Parses the `stdout` or `stderr` output of yarn classic to extract structured error information. + * + * This parser first attempts to find an HTTP status code (e.g., 404, 401) in the verbose output. + * If found, it returns a standardized error code (`E${statusCode}`). + * If no HTTP status code is found, it falls back to parsing generic JSON error lines. + * + * Example verbose output (with HTTP status code): + * ```json + * {"type":"verbose","data":"Request \"https://registry.npmjs.org/@angular%2fnon-existent\" finished with status code 404."} + * ``` + * + * Example generic JSON error output: + * ```json + * {"type":"error","data":"Received invalid response from npm."} + * ``` + * + * @param output The standard output or standard error of the command. + * @param logger An optional logger instance. + * @returns An `ErrorInfo` object if parsing is successful, otherwise `null`. + */ +export function parseYarnClassicError(output: string, logger?: Logger): ErrorInfo | null { + logger?.debug(`Parsing yarn classic error output...`); + logStdout(output, logger); // Log output for debugging purposes + + if (!output) { + logger?.debug(' output is empty. No error found.'); + + return null; + } + + // First, check for any HTTP status code in the verbose output. + const statusCodeMatch = output.match(/finished with status code (\d{3})/); + if (statusCodeMatch) { + const statusCode = Number(statusCodeMatch[1]); + // Status codes in the 200-299 range are successful. + if (statusCode < 200 || statusCode >= 300) { + logger?.debug(` Detected HTTP error status code '${statusCode}' in verbose output.`); + + return { + code: `E${statusCode}`, + summary: `Request failed with status code ${statusCode}.`, + }; + } + } + + // Fallback to the JSON error type if no HTTP status code is present. + for (const json of parseJsonLines(output, logger)) { + if (json.type === 'error' && typeof json.data === 'string') { + const summary = json.data; + logger?.debug(` Successfully parsed generic yarn classic error.`); + + return { + code: 'UNKNOWN_ERROR', + summary, + }; + } + } + + logger?.debug(' Failed to parse yarn classic error. No structured error found.'); - // Yarn classic wraps the metadata in a `data` property. - return data.data; + return null; } diff --git a/packages/angular/cli/src/package-managers/parsers_spec.ts b/packages/angular/cli/src/package-managers/parsers_spec.ts new file mode 100644 index 000000000000..8717a6d1a5a1 --- /dev/null +++ b/packages/angular/cli/src/package-managers/parsers_spec.ts @@ -0,0 +1,112 @@ +/** + * @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 { parseNpmLikeError, parseYarnClassicError } from './parsers'; + +describe('parsers', () => { + describe('parseNpmLikeError', () => { + it('should parse a structured JSON error from modern yarn', () => { + const stdout = JSON.stringify({ + code: 'ERR_PNPM_NO_SUCH_PACKAGE', + summary: 'No such package.', + detail: 'Package not found.', + }); + const error = parseNpmLikeError(stdout); + expect(error).toEqual({ + code: 'ERR_PNPM_NO_SUCH_PACKAGE', + summary: 'No such package.', + detail: 'Package not found.', + }); + }); + + it('should parse a plain text error from npm', () => { + const stdout = + 'npm error code E404\nnpm error 404 Not Found - GET https://registry.example.com/non-existent-package'; + const error = parseNpmLikeError(stdout); + expect(error).toEqual({ + code: 'E404', + summary: '404 Not Found - GET https://registry.example.com/non-existent-package', + }); + }); + + it('should parse a plain text error from npm with ERR!', () => { + const stderr = + 'npm ERR! code E404\nnpm ERR! 404 Not Found - GET https://registry.example.com/non-existent-package'; + const error = parseNpmLikeError(stderr); + expect(error).toEqual({ + code: 'E404', + summary: '404 Not Found - GET https://registry.example.com/non-existent-package', + }); + }); + + it('should parse a structured JSON error with a message property', () => { + const stderr = JSON.stringify({ + code: 'EUNSUPPORTEDPROTOCOL', + message: 'Unsupported protocol.', + detail: 'The protocol "invalid:" is not supported.', + }); + const error = parseNpmLikeError(stderr); + expect(error).toEqual({ + code: 'EUNSUPPORTEDPROTOCOL', + summary: 'Unsupported protocol.', + detail: 'The protocol "invalid:" is not supported.', + }); + }); + + it('should return null for empty stdout', () => { + const error = parseNpmLikeError(''); + expect(error).toBeNull(); + }); + + it('should return null for unparsable stdout', () => { + const error = parseNpmLikeError('An unexpected error occurred.'); + expect(error).toBeNull(); + }); + }); + + describe('parseYarnClassicError', () => { + it('should parse a 404 from verbose logs', () => { + const stdout = + '{"type":"verbose","data":"Request "https://registry.example.com/non-existent-package" finished with status code 404."}'; + const error = parseYarnClassicError(stdout); + expect(error).toEqual({ + code: 'E404', + summary: 'Request failed with status code 404.', + }); + }); + + it('should parse a non-404 HTTP error from verbose logs', () => { + const stdout = + '{"type":"verbose","data":"Request "https://registry.example.com/private-package" finished with status code 401."}'; + const error = parseYarnClassicError(stdout); + expect(error).toEqual({ + code: 'E401', + summary: 'Request failed with status code 401.', + }); + }); + + it('should parse a generic JSON error when no HTTP status is found', () => { + const stdout = '{"type":"error","data":"An unexpected error occurred."}'; + const error = parseYarnClassicError(stdout); + expect(error).toEqual({ + code: 'UNKNOWN_ERROR', + summary: 'An unexpected error occurred.', + }); + }); + + it('should return null for empty stdout', () => { + const error = parseYarnClassicError(''); + expect(error).toBeNull(); + }); + + it('should return null for unparsable stdout', () => { + const error = parseYarnClassicError('A random error message.'); + expect(error).toBeNull(); + }); + }); +}); From 42629c0f949664ee40fc0cad017dd3a5fc34b49b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 20 Oct 2025 18:14:23 -0400 Subject: [PATCH 1921/2162] refactor(@angular/cli): migrate `ng add` to new package manager abstraction This commit fully refactors the `ng add` command to use the new, centralized package manager abstraction. All package installation and metadata fetching logic now goes through the new API. This includes: - Using `createPackageManager` to detect the project's package manager. - Replacing `fetchPackageMetadata` with `packageManager.getRegistryMetadata`. - Replacing `fetchPackageManifest` with `packageManager.getManifest`. - Replacing the `install` and `installTemp` methods with the `packageManager.add` and `packageManager.acquireTempPackage` methods. This change improves security by eliminating `shell: true` execution as well as enhances reliability with better error handling and caching. --- packages/angular/cli/src/commands/add/cli.ts | 227 ++++++++++--------- 1 file changed, 117 insertions(+), 110 deletions(-) diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index aec0014b9114..f20116dd1222 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -8,12 +8,12 @@ import { Listr, ListrRenderer, ListrTaskWrapper, color, figures } from 'listr2'; import assert from 'node:assert'; +import { promises as fs } from 'node:fs'; import { createRequire } from 'node:module'; import { dirname, join } from 'node:path'; import npa from 'npm-package-arg'; import { Range, compare, intersects, prerelease, satisfies, valid } from 'semver'; import { Argv } from 'yargs'; -import { PackageManager } from '../../../lib/config/workspace-schema'; import { CommandModuleImplementation, Options, @@ -23,14 +23,14 @@ import { SchematicsCommandArgs, SchematicsCommandModule, } from '../../command-builder/schematics-command-module'; -import { assertIsError } from '../../utilities/error'; import { NgAddSaveDependency, + PackageManager, PackageManifest, PackageMetadata, - fetchPackageManifest, - fetchPackageMetadata, -} from '../../utilities/package-metadata'; + createPackageManager, +} from '../../package-managers'; +import { assertIsError } from '../../utilities/error'; import { isTTY } from '../../utilities/tty'; import { VERSION } from '../../utilities/version'; @@ -44,8 +44,8 @@ interface AddCommandArgs extends SchematicsCommandArgs { } interface AddCommandTaskContext { + packageManager: PackageManager; packageIdentifier: npa.Result; - usingYarn?: boolean; savePackage?: NgAddSaveDependency; collectionName?: string; executeSchematic: AddCommandModule['executeSchematic']; @@ -173,12 +173,12 @@ export default class AddCommandModule } } - const taskContext: AddCommandTaskContext = { + const taskContext = { packageIdentifier, executeSchematic: this.executeSchematic.bind(this), getPeerDependencyConflicts: this.getPeerDependencyConflicts.bind(this), dryRun: options.dryRun, - }; + } as AddCommandTaskContext; const tasks = new Listr( [ @@ -194,7 +194,7 @@ export default class AddCommandModule rendererOptions: { persistentOutput: true }, }, { - title: 'Loading package information from registry', + title: 'Loading package information', task: (context, task) => this.loadPackageInfoTask(context, task, options), rendererOptions: { persistentOutput: true }, }, @@ -294,13 +294,16 @@ export default class AddCommandModule } } - private determinePackageManagerTask( + private async determinePackageManagerTask( context: AddCommandTaskContext, task: AddCommandTaskWrapper, - ): void { - const { packageManager } = this.context; - context.usingYarn = packageManager.name === PackageManager.Yarn; - task.output = `Using package manager: ${color.dim(packageManager.name)}`; + ): Promise { + context.packageManager = await createPackageManager({ + cwd: this.context.root, + logger: this.context.logger, + dryRun: context.dryRun, + }); + task.output = `Using package manager: ${color.dim(context.packageManager.name)}`; } private async findCompatiblePackageVersionTask( @@ -308,77 +311,87 @@ export default class AddCommandModule task: AddCommandTaskWrapper, options: Options, ): Promise { - const { logger } = this.context; - const { verbose, registry } = options; + const { registry, verbose } = options; + const { packageManager, packageIdentifier } = context; + const packageName = packageIdentifier.name; - assert( - context.packageIdentifier.name, - 'Registry package identifiers should always have a name.', - ); + assert(packageName, 'Registry package identifiers should always have a name.'); - // only package name provided; search for viable version - // plus special cases for packages that did not have peer deps setup - let packageMetadata; + const rejectionReasons: string[] = []; + + // Attempt to use the 'latest' tag from the registry. try { - packageMetadata = await fetchPackageMetadata(context.packageIdentifier.name, logger, { + const latestManifest = await packageManager.getManifest(`${packageName}@latest`, { registry, - usingYarn: context.usingYarn, - verbose, }); + + if (latestManifest) { + const conflicts = await this.getPeerDependencyConflicts(latestManifest); + if (!conflicts) { + context.packageIdentifier = npa.resolve(latestManifest.name, latestManifest.version); + task.output = `Found compatible package version: ${color.blue(latestManifest.version)}.`; + + return; + } + rejectionReasons.push(...conflicts); + } } catch (e) { assertIsError(e); throw new CommandError(`Unable to load package information from registry: ${e.message}`); } - const rejectionReasons: string[] = []; + // 'latest' is invalid or not found, search for most recent matching package. + task.output = + 'Could not find a compatible version with `latest`. Searching for a compatible version.'; - // Start with the version tagged as `latest` if it exists - const latestManifest = packageMetadata.tags['latest']; - if (latestManifest) { - const latestConflicts = await this.getPeerDependencyConflicts(latestManifest); - if (latestConflicts) { - // 'latest' is invalid so search for most recent matching package - rejectionReasons.push(...latestConflicts); - } else { - context.packageIdentifier = npa.resolve(latestManifest.name, latestManifest.version); - task.output = `Found compatible package version: ${color.blue(latestManifest.version)}.`; + let packageMetadata; + try { + packageMetadata = await packageManager.getRegistryMetadata(packageName, { + registry, + }); + } catch (e) { + assertIsError(e); + throw new CommandError(`Unable to load package information from registry: ${e.message}`); + } - return; - } + if (!packageMetadata) { + throw new CommandError('Unable to load package information from registry.'); } - // Allow prelease versions if the CLI itself is a prerelease + // Allow prelease versions if the CLI itself is a prerelease. const allowPrereleases = !!prerelease(VERSION.full); - const versionManifests = this.#getPotentialVersionManifests(packageMetadata, allowPrereleases); + const potentialVersions = this.#getPotentialVersions(packageMetadata, allowPrereleases); - let found = false; - for (const versionManifest of versionManifests) { - // Already checked the 'latest' version - if (latestManifest?.version === versionManifest.version) { + let found; + for (const version of potentialVersions) { + const manifest = await packageManager.getManifest(`${packageName}@${version}`, { + registry, + }); + if (!manifest) { continue; } - const conflicts = await this.getPeerDependencyConflicts(versionManifest); + const conflicts = await this.getPeerDependencyConflicts(manifest); if (conflicts) { - if (options.verbose || rejectionReasons.length < DEFAULT_CONFLICT_DISPLAY_LIMIT) { + if (verbose || rejectionReasons.length < DEFAULT_CONFLICT_DISPLAY_LIMIT) { rejectionReasons.push(...conflicts); } continue; } - context.packageIdentifier = npa.resolve(versionManifest.name, versionManifest.version); - found = true; + context.packageIdentifier = npa.resolve(manifest.name, manifest.version); + found = manifest; break; } if (!found) { - let message = `Unable to find compatible package. Using 'latest' tag.`; + let message = `Unable to find compatible package.`; if (rejectionReasons.length > 0) { message += '\nThis is often because of incompatible peer dependencies.\n' + 'These versions were rejected due to the following conflicts:\n' + rejectionReasons - .slice(0, options.verbose ? undefined : DEFAULT_CONFLICT_DISPLAY_LIMIT) + .slice(0, verbose ? undefined : DEFAULT_CONFLICT_DISPLAY_LIMIT) .map((r) => ` - ${r}`) .join('\n'); } @@ -390,35 +403,25 @@ export default class AddCommandModule } } - #getPotentialVersionManifests( - packageMetadata: PackageMetadata, - allowPrereleases: boolean, - ): PackageManifest[] { + #getPotentialVersions(packageMetadata: PackageMetadata, allowPrereleases: boolean): string[] { const versionExclusions = packageVersionExclusions[packageMetadata.name]; - const versionManifests = Object.values(packageMetadata.versions).filter( - (value: PackageManifest) => { - // Prerelease versions are not stable and should not be considered by default - if (!allowPrereleases && prerelease(value.version)) { - return false; - } - // Deprecated versions should not be used or considered - if (value.deprecated) { - return false; - } - // Excluded package versions should not be considered - if ( - versionExclusions && - satisfies(value.version, versionExclusions, { includePrerelease: true }) - ) { - return false; - } - return true; - }, - ); + const versions = Object.values(packageMetadata.versions).filter((version) => { + // Prerelease versions are not stable and should not be considered by default + if (!allowPrereleases && prerelease(version)) { + return false; + } + + // Excluded package versions should not be considered + if (versionExclusions && satisfies(version, versionExclusions, { includePrerelease: true })) { + return false; + } + + return true; + }); // Sort in reverse SemVer order so that the newest compatible version is chosen - return versionManifests.sort((a, b) => compare(b.version, a.version, true)); + return versions.sort((a, b) => compare(b, a, true)); } private async loadPackageInfoTask( @@ -426,15 +429,12 @@ export default class AddCommandModule task: AddCommandTaskWrapper, options: Options, ): Promise { - const { logger } = this.context; - const { verbose, registry } = options; + const { registry } = options; let manifest; try { - manifest = await fetchPackageManifest(context.packageIdentifier.toString(), logger, { + manifest = await context.packageManager.getManifest(context.packageIdentifier.toString(), { registry, - verbose, - usingYarn: context.usingYarn, }); } catch (e) { assertIsError(e); @@ -443,6 +443,12 @@ export default class AddCommandModule ); } + if (!manifest) { + throw new CommandError( + `Unable to fetch package information for '${context.packageIdentifier}'.`, + ); + } + context.hasSchematics = !!manifest.schematics; context.savePackage = manifest['ng-add']?.save; context.collectionName = manifest.name; @@ -487,45 +493,42 @@ export default class AddCommandModule task: AddCommandTaskWrapper, options: Options, ): Promise { - const { packageManager } = this.context; const { registry } = options; + const { packageManager, packageIdentifier, savePackage } = context; // Only show if installation will actually occur task.title = 'Installing package'; - if (context.savePackage === false && packageManager.name !== PackageManager.Bun) { - // Bun has a `--no-save` option which we are using to - // install the package and not update the package.json and the lock file. + if (context.savePackage === false) { task.title += ' in temporary location'; // Temporary packages are located in a different directory // Hence we need to resolve them using the temp path - const { success, tempNodeModules } = await packageManager.installTemp( - context.packageIdentifier.toString(), - registry ? [`--registry="${registry}"`] : undefined, + const { workingDirectory } = await packageManager.acquireTempPackage( + packageIdentifier.toString(), + { + registry, + }, ); - const tempRequire = createRequire(tempNodeModules + '/'); + + const tempRequire = createRequire(workingDirectory + '/'); assert(context.collectionName, 'Collection name should always be available'); const resolvedCollectionPath = tempRequire.resolve( join(context.collectionName, 'package.json'), ); - if (!success) { - throw new CommandError('Unable to install package'); - } - context.collectionName = dirname(resolvedCollectionPath); } else { - const success = await packageManager.install( - context.packageIdentifier.toString(), - context.savePackage, - registry ? [`--registry="${registry}"`] : undefined, - undefined, + await packageManager.add( + packageIdentifier.toString(), + 'none', + savePackage !== 'dependencies', + false, + true, + { + registry, + }, ); - - if (!success) { - throw new CommandError('Unable to install package'); - } } } @@ -633,24 +636,28 @@ export default class AddCommandModule return cachedVersion; } - const { logger, root } = this.context; - let installedPackage; + const { root } = this.context; + let installedPackagePath; try { - installedPackage = this.rootRequire.resolve(join(name, 'package.json')); + installedPackagePath = this.rootRequire.resolve(join(name, 'package.json')); } catch {} - if (installedPackage) { + if (installedPackagePath) { try { - const installed = await fetchPackageManifest(dirname(installedPackage), logger); - this.#projectVersionCache.set(name, installed.version); + const installedPackage = JSON.parse( + await fs.readFile(installedPackagePath, 'utf-8'), + ) as PackageManifest; + this.#projectVersionCache.set(name, installedPackage.version); - return installed.version; + return installedPackage.version; } catch {} } let projectManifest; try { - projectManifest = await fetchPackageManifest(root, logger); + projectManifest = JSON.parse( + await fs.readFile(join(root, 'package.json'), 'utf-8'), + ) as PackageManifest; } catch {} if (projectManifest) { From 240588b7e3c8698c83110793ab98d20caee4e1a4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 20 Oct 2025 18:16:25 -0400 Subject: [PATCH 1922/2162] perf(@angular/cli): optimize `ng add` version discovery The `ng add` command's version discovery mechanism could be slow when the `latest` tag of a package was incompatible, as it would fall back to exhaustively fetching the manifest for every available version. This commit introduces a performance optimization that uses a heuristic-based search. The new logic first identifies the latest release within each major version line and checks only those for compatibility. This dramatically reduces the number of network requests in the common case where peer dependency conflicts align with major versions. The exhaustive, version-by-version search is retained as a fallback to ensure correctness in edge cases. --- packages/angular/cli/src/commands/add/cli.ts | 98 +++++++++++++++----- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index f20116dd1222..0dae016fba12 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -8,11 +8,11 @@ import { Listr, ListrRenderer, ListrTaskWrapper, color, figures } from 'listr2'; import assert from 'node:assert'; -import { promises as fs } from 'node:fs'; +import fs from 'node:fs/promises'; import { createRequire } from 'node:module'; import { dirname, join } from 'node:path'; import npa from 'npm-package-arg'; -import { Range, compare, intersects, prerelease, satisfies, valid } from 'semver'; +import semver, { Range, compare, intersects, prerelease, satisfies, valid } from 'semver'; import { Argv } from 'yargs'; import { CommandModuleImplementation, @@ -358,30 +358,27 @@ export default class AddCommandModule throw new CommandError('Unable to load package information from registry.'); } - // Allow prelease versions if the CLI itself is a prerelease. - const allowPrereleases = !!prerelease(VERSION.full); + // Allow prelease versions if the CLI itself is a prerelease or locally built. + const allowPrereleases = !!prerelease(VERSION.full) || VERSION.full === '0.0.0'; const potentialVersions = this.#getPotentialVersions(packageMetadata, allowPrereleases); - let found; - for (const version of potentialVersions) { - const manifest = await packageManager.getManifest(`${packageName}@${version}`, { + // Heuristic-based search: Check the latest release of each major version first. + const majorVersions = this.#getMajorVersions(potentialVersions); + let found = await this.#findCompatibleVersion(context, majorVersions, { + registry, + verbose, + rejectionReasons, + }); + + // Exhaustive search: If no compatible major version is found, fall back to checking all versions. + if (!found) { + const checkedVersions = new Set(majorVersions); + const remainingVersions = potentialVersions.filter((v) => !checkedVersions.has(v)); + found = await this.#findCompatibleVersion(context, remainingVersions, { registry, + verbose, + rejectionReasons, }); - if (!manifest) { - continue; - } - - const conflicts = await this.getPeerDependencyConflicts(manifest); - if (conflicts) { - if (verbose || rejectionReasons.length < DEFAULT_CONFLICT_DISPLAY_LIMIT) { - rejectionReasons.push(...conflicts); - } - continue; - } - - context.packageIdentifier = npa.resolve(manifest.name, manifest.version); - found = manifest; - break; } if (!found) { @@ -403,10 +400,54 @@ export default class AddCommandModule } } + async #findCompatibleVersion( + context: AddCommandTaskContext, + versions: string[], + options: { + registry?: string; + verbose?: boolean; + rejectionReasons: string[]; + }, + ): Promise { + const { packageManager, packageIdentifier } = context; + const { registry, verbose, rejectionReasons } = options; + const packageName = packageIdentifier.name; + assert(packageName, 'Package name must be defined.'); + + for (const version of versions) { + const manifest = await packageManager.getManifest(`${packageName}@${version}`, { + registry, + }); + if (!manifest) { + continue; + } + + const conflicts = await this.getPeerDependencyConflicts(manifest); + if (conflicts) { + if (verbose || rejectionReasons.length < DEFAULT_CONFLICT_DISPLAY_LIMIT) { + rejectionReasons.push(...conflicts); + } + continue; + } + + context.packageIdentifier = npa.resolve(manifest.name, manifest.version); + + return manifest; + } + + return null; + } + #getPotentialVersions(packageMetadata: PackageMetadata, allowPrereleases: boolean): string[] { const versionExclusions = packageVersionExclusions[packageMetadata.name]; + const latestVersion = packageMetadata['dist-tags']['latest']; const versions = Object.values(packageMetadata.versions).filter((version) => { + // Latest tag has already been checked + if (latestVersion && version === latestVersion) { + return false; + } + // Prerelease versions are not stable and should not be considered by default if (!allowPrereleases && prerelease(version)) { return false; @@ -424,6 +465,19 @@ export default class AddCommandModule return versions.sort((a, b) => compare(b, a, true)); } + #getMajorVersions(versions: string[]): string[] { + const majorVersions = new Map(); + for (const version of versions) { + const major = semver.major(version); + const existing = majorVersions.get(major); + if (!existing || semver.gt(version, existing)) { + majorVersions.set(major, version); + } + } + + return [...majorVersions.values()].sort((a, b) => compare(b, a, true)); + } + private async loadPackageInfoTask( context: AddCommandTaskContext, task: AddCommandTaskWrapper, From 0e071cb56d46e9fc8d32678d3c4cbe55e47be4d6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 1 Dec 2025 19:13:30 -0500 Subject: [PATCH 1923/2162] refactor(@angular/cli): adjust bun's manifest field formatter Removes the `viewCommandFieldArgFormatter` from the `bun` package manager descriptor. While `bun` supports field-filtered registry views, it is limited to a single field at a time. The current package manager abstraction requires support for multiple fields. This change ensures that the package manager abstraction for `bun` is more accurate and avoids potential issues with unsupported command arguments. --- .../cli/src/package-managers/package-manager-descriptor.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index 322cf5aa2147..f48ed1e32ed7 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -243,7 +243,6 @@ export const SUPPORTED_PACKAGE_MANAGERS = { versionCommand: ['--version'], listDependenciesCommand: ['pm', 'ls', '--json'], getManifestCommand: ['pm', 'view', '--json'], - viewCommandFieldArgFormatter: (fields) => [...fields], outputParsers: { listDependencies: parseNpmLikeDependencies, getRegistryManifest: parseNpmLikeManifest, From 88102f7a3236406656d65d1f3251b3ccf0f33539 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:12:51 -0500 Subject: [PATCH 1924/2162] test(@angular/cli): create `.yarnrc` for E2E registry tests with Yarn Classic The E2E tests for authenticated `ng add` operations, when run with Yarn Classic, were failing because they only generated an `.npmrc` file. Yarn Classic utilizes a `.yarnrc` file for registry authentication with a specific syntax. This change updates the `createNpmConfigForAuthentication` test utility to generate both an `.npmrc` and a `.yarnrc` file. This ensures that the authenticated E2E tests can run successfull with both NPM and Yarn Classic, improving test coverage for the package manager abstraction layer's handling of Yarn Classic's authentication mechanism. --- tests/legacy-cli/e2e/utils/registry.ts | 29 +++++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tests/legacy-cli/e2e/utils/registry.ts b/tests/legacy-cli/e2e/utils/registry.ts index b4c1b08afcbc..fd557c116120 100644 --- a/tests/legacy-cli/e2e/utils/registry.ts +++ b/tests/legacy-cli/e2e/utils/registry.ts @@ -49,7 +49,7 @@ export async function createNpmRegistry( // Token was generated using `echo -n 'testing:s3cret' | openssl base64`. const VALID_TOKEN = `dGVzdGluZzpzM2NyZXQ=`; -export function createNpmConfigForAuthentication( +export async function createNpmConfigForAuthentication( /** * When true, the authentication token will be scoped to the registry URL. * @example @@ -70,17 +70,30 @@ export function createNpmConfigForAuthentication( const token = invalidToken ? `invalid=` : VALID_TOKEN; const registry = (getGlobalVariable('package-secure-registry') as string).replace(/^\w+:/, ''); - return writeFile( + await writeFile( '.npmrc', scopedAuthentication ? ` - ${registry}:_auth="${token}" - registry=http:${registry} - ` +${registry}/:_auth="${token}" +registry=http:${registry} +` : ` - _auth="${token}" - registry=http:${registry} - `, +_auth="${token}" +registry=http:${registry} +`, + ); + + await writeFile( + '.yarnrc', + scopedAuthentication + ? ` +${registry}/:_auth "${token}" +registry http:${registry} +` + : ` +_auth "${token}" +registry http:${registry} +`, ); } From fa0ddc56f48d7a411bf87a7ff46a3d46c9624f99 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:37:43 -0500 Subject: [PATCH 1925/2162] test(@angular/cli): correct unscoped auth E2E test logic The E2E test for `ng add` with unscoped registry authentication was being incorrectly executed for `pnpm`. The previous logic excluded `npm` and `bun` but erroneously assumed `pnpm` supported this authentication method, which it does not. This commit refines the `supportsUnscopedAuth` condition to be strictly limited to `yarn`. This ensures the unscoped authentication test case is now accurately targeted, only running against the package manager that supports this behavior, thereby improving the overall reliability of the secure registry tests. --- .../legacy-cli/e2e/tests/commands/add/secure-registry.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts b/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts index 95218fd653d9..4a640607f8be 100644 --- a/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts +++ b/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts @@ -10,15 +10,16 @@ export default async function () { // The environment variable has priority over the .npmrc delete process.env['NPM_CONFIG_REGISTRY']; const packageManager = getActivePackageManager(); - const supportsUnscopedAuth = packageManager !== 'bun' && packageManager !== 'npm'; + const supportsUnscopedAuth = packageManager === 'yarn'; const command = ['add', '@angular/pwa', '--skip-confirmation']; - await expectFileNotToExist('public/manifest.webmanifest'); - // Works with unscoped registry authentication details if (supportsUnscopedAuth) { // Some package managers such as Bun and NPM do not support unscoped auth. await createNpmConfigForAuthentication(false); + + await expectFileNotToExist('public/manifest.webmanifest'); + await ng(...command); await expectFileToExist('public/manifest.webmanifest'); await git('clean', '-dxf'); @@ -33,7 +34,7 @@ export default async function () { await git('clean', '-dxf'); // Invalid authentication token - if (!supportsUnscopedAuth) { + if (supportsUnscopedAuth) { // Some package managers such as Bun and NPM do not support unscoped auth. await createNpmConfigForAuthentication(false, true); await expectToFail(() => ng(...command)); From 7ab5c0b0a1c637f3e0adb71486e5e7e8716561e4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 4 Dec 2025 21:21:40 -0500 Subject: [PATCH 1926/2162] fix(@angular/cli): correctly spawn package managers on Windows in new abstraction When running E2E tests on Windows, `spawn` was failing to find package manager executables like `npm` because it does not automatically resolve `.cmd` or `.bat` extensions when `shell: false` is used. --- packages/angular/cli/src/package-managers/host.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts index 1d4b441bdc37..82d61031d147 100644 --- a/packages/angular/cli/src/package-managers/host.ts +++ b/packages/angular/cli/src/package-managers/host.ts @@ -13,10 +13,10 @@ * enabling the injection of mock or test-specific implementations. */ -import { spawn } from 'node:child_process'; +import { type SpawnOptions, spawn } from 'node:child_process'; import { Stats } from 'node:fs'; import { mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; -import { tmpdir } from 'node:os'; +import { platform, tmpdir } from 'node:os'; import { join } from 'node:path'; import { PackageManagerError } from './error'; @@ -107,10 +107,11 @@ export const NodeJS_HOST: Host = { } = {}, ): Promise<{ stdout: string; stderr: string }> => { const signal = options.timeout ? AbortSignal.timeout(options.timeout) : undefined; + const isWin32 = platform() === 'win32'; return new Promise((resolve, reject) => { - const childProcess = spawn(command, args, { - shell: false, + const spawnOptions = { + shell: isWin32, stdio: options.stdio ?? 'pipe', signal, cwd: options.cwd, @@ -118,7 +119,10 @@ export const NodeJS_HOST: Host = { ...process.env, ...options.env, }, - }); + } satisfies SpawnOptions; + const childProcess = isWin32 + ? spawn(`${command} ${args.join(' ')}`, spawnOptions) + : spawn(command, args, spawnOptions); let stdout = ''; childProcess.stdout?.on('data', (data) => (stdout += data.toString())); From 39c7d2be54326d55acc7555b57b539f29e956011 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 5 Dec 2025 05:06:55 +0000 Subject: [PATCH 1927/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index d52744af6fc2..b6a1ca4d8d8b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -19,7 +19,7 @@ multiple_version_override( ], ) -bazel_dep(name = "aspect_bazel_lib", version = "2.21.2") +bazel_dep(name = "aspect_bazel_lib", version = "2.22.0") bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "aspect_rules_esbuild", version = "0.24.0") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") @@ -47,7 +47,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "f066f614451374721fac787fb1f0dbbd818d50d4", + commit = "8ef3e996d5fc040a35770f860987d8b9cad8ef3d", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 5eece6e96827..87094cff6ffc 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -17,7 +17,8 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/MODULE.bazel": "276347663a25b0d5bd6cad869252bea3e160c4d980e764b15f3bae7f80b30624", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/source.json": "f42051fa42629f0e59b7ac2adf0a55749144b11f1efcd8c697f0ee247181e526", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "7fe0191f047d4fe4a4a46c1107e2350cbb58a8fc2e10913aa4322d3190dec0bf", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/source.json": "369df5b7f2eae82f200fff95cf1425f90dee90a0d0948122060b48150ff0e224", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", @@ -212,7 +213,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "JQs66uyOA1/zxJFApKCcki/1PXjP5vhUCCpYeFpJ3Kc=", + "bzlTransitiveDigest": "rqSMJntEJnXuFCMbobmdXD0eunCrvMzbwA0vyR14UVA=", "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -416,7 +417,7 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "0XQcEfIpZXbqfvQ8VHGuskXDdxI9vks/wa/Cyf90LOA=", + "bzlTransitiveDigest": "h7KQnZdYZPnFLrqYi5kPqRaskCrLELwUgRITBo08M+I=", "usagesDigest": "dfeONN+LabTG4hYuh2tcpxqorjlWOOipsrJa/4UI3uc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, From 668c04ce2352e15360070a3ad85824840866fbeb Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 4 Dec 2025 20:06:22 +0000 Subject: [PATCH 1928/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 1 - package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 481 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 328 insertions(+), 342 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 4e944714318e..dbc5d1503874 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@18448ed104aeef3146ccb27484002bf5ed02bdf6 + - uses: angular/dev-infra/github-actions/branch-manager@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae6cb8ad4535..40b069bfdc56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a 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@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -101,11 +101,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -139,7 +139,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -167,13 +167,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -192,13 +192,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -212,13 +212,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@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -248,11 +248,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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 6cf8ca97e852..706db95c91af 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@18448ed104aeef3146ccb27484002bf5ed02bdf6 + - uses: angular/dev-infra/github-actions/pull-request-labeling@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@18448ed104aeef3146ccb27484002bf5ed02bdf6 + - uses: angular/dev-infra/github-actions/post-approval-changes@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 70c688b19c4d..2e9d0c2ded1a 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@18448ed104aeef3146ccb27484002bf5ed02bdf6 + - uses: angular/dev-infra/github-actions/feature-request@73051ae248ba64911a8e7e66536d8c99ba07ef2a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index da8a0b38b3de..9217660d4389 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@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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 4a6667e576e5..0f2448fd697f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/linting/licenses@73051ae248ba64911a8e7e66536d8c99ba07ef2a build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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 }} @@ -129,11 +129,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -157,7 +157,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -185,13 +185,13 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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 }} @@ -208,12 +208,12 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@18448ed104aeef3146ccb27484002bf5ed02bdf6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a - 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/MODULE.bazel b/MODULE.bazel index b6a1ca4d8d8b..3ec7ab96cc75 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "18448ed104aeef3146ccb27484002bf5ed02bdf6", + commit = "73051ae248ba64911a8e7e66536d8c99ba07ef2a", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 87094cff6ffc..16c8c8419779 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -29,7 +29,6 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.2/MODULE.bazel": "76526405d6a65dae45db16b8b4619b502063ac573d2a2ae0a90fddc7d3247288", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/MODULE.bazel": "807ce5f624124a8bc586c743394d174e85f0f9c6c4e0e2410b4088aebe790ac8", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/source.json": "c35cb4e04f61a09c17f8c569894b80de884b1e3dee2d33829704786e3f778037", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", diff --git a/package.json b/package.json index 7ac947bd43dd..6c5e27297922 100644 --- a/package.json +++ b/package.json @@ -45,20 +45,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.1.0-next.0", - "@angular/cdk": "21.1.0-next.0", - "@angular/common": "21.1.0-next.0", - "@angular/compiler": "21.1.0-next.0", - "@angular/compiler-cli": "21.1.0-next.0", - "@angular/core": "21.1.0-next.0", - "@angular/forms": "21.1.0-next.0", - "@angular/localize": "21.1.0-next.0", - "@angular/material": "21.1.0-next.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#bbba566abca437dcd3f6bf91a0788bdb29227563", - "@angular/platform-browser": "21.1.0-next.0", - "@angular/platform-server": "21.1.0-next.0", - "@angular/router": "21.1.0-next.0", - "@angular/service-worker": "21.1.0-next.0", + "@angular/animations": "21.1.0-next.1", + "@angular/cdk": "21.1.0-next.1", + "@angular/common": "21.1.0-next.1", + "@angular/compiler": "21.1.0-next.1", + "@angular/compiler-cli": "21.1.0-next.1", + "@angular/core": "21.1.0-next.1", + "@angular/forms": "21.1.0-next.1", + "@angular/localize": "21.1.0-next.1", + "@angular/material": "21.1.0-next.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a6bcef88323031f5c157227705792019833c5c08", + "@angular/platform-browser": "21.1.0-next.1", + "@angular/platform-server": "21.1.0-next.1", + "@angular/router": "21.1.0-next.1", + "@angular/service-worker": "21.1.0-next.1", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 2365abe997ae..bc8447ef40af 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.1.0-next.0", - "@angular/compiler": "21.1.0-next.0", - "@angular/core": "21.1.0-next.0", - "@angular/platform-browser": "21.1.0-next.0", - "@angular/platform-server": "21.1.0-next.0", - "@angular/router": "21.1.0-next.0", + "@angular/common": "21.1.0-next.1", + "@angular/compiler": "21.1.0-next.1", + "@angular/core": "21.1.0-next.1", + "@angular/platform-browser": "21.1.0-next.1", + "@angular/platform-server": "21.1.0-next.1", + "@angular/router": "21.1.0-next.1", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index ab0dcc599e97..409279d28958 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": "21.1.0-next.0", - "@angular/compiler-cli": "21.1.0-next.0", + "@angular/compiler": "21.1.0-next.1", + "@angular/compiler-cli": "21.1.0-next.1", "typescript": "5.9.3", "webpack": "5.103.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3814382a0a1e..ca9a7171743b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/common': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0 + specifier: 21.1.0-next.1 + version: 21.1.0-next.1 '@angular/compiler-cli': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) '@angular/core': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(@angular/compiler@21.1.0-next.0) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(@angular/compiler@21.1.0-next.1) '@angular/material': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(bd97c5a741e978ef84ea9f0c3ef58280) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#bbba566abca437dcd3f6bf91a0788bdb29227563 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a6bcef88323031f5c157227705792019833c5c08 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)) '@angular/platform-browser': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.0)(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.1)(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -433,7 +433,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -530,23 +530,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0 + specifier: 21.1.0-next.1 + version: 21.1.0-next.1 '@angular/core': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.0)(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.1)(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -761,7 +761,7 @@ importers: version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -859,11 +859,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0 + specifier: 21.1.0-next.1 + version: 21.1.0-next.1 '@angular/compiler-cli': - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) + specifier: 21.1.0-next.1 + version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -978,46 +978,46 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.1.0-next.0': - resolution: {integrity: sha512-gSkp+ic4S6gldKGE9GUu9+xXsJI5+6wMI9aZk0xv+bJ5XvAVXqsNCKPIi4BrD9vl0V70vKOcG71TiW2jz2XZ+A==} + '@angular/animations@21.1.0-next.1': + resolution: {integrity: sha512-1LsMG9OewoAtDvOGtrdsacbCcbnb7QmMwsoaxeF16X4ITfa0rWjAfsB8Aj/Pp1CNs4E4pX+RCzTx3DUs4hgqkA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.0 + '@angular/core': 21.1.0-next.1 - '@angular/cdk@21.1.0-next.0': - resolution: {integrity: sha512-Rao5QbCStbeb9SfWT1SvZCo6nPtdRo5IljrLwrWW1cKZruE4suVSoXS3JGom3jVphxxD7pwk+NZg4eER3vCRrw==} + '@angular/cdk@21.1.0-next.1': + resolution: {integrity: sha512-rd9hrsKc77s+EOuN+qPGpTpbTgSio6TLm25ZkVr9i/nAkqowxbTNOHdkA8kyLLqdkhKrz1Xf+ziyc6Al0m/caQ==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.1.0-next.0': - resolution: {integrity: sha512-GS4D+A4qx5ojAdedUTjQXs3vfq9rzi8ffX1X/fTpycYL2j2CArOU/Tv2A6pedDlZetJMu0iifcLNuZNE4+ReKw==} + '@angular/common@21.1.0-next.1': + resolution: {integrity: sha512-8PeshaDEzCo7GNCa64NSnf8yc+eCId4po/iWeOp+gddKHC/Vaksbz3bJBi6EWpaPKIGixjYfQlfhcoXz0+XXyg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.0 + '@angular/core': 21.1.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.1.0-next.0': - resolution: {integrity: sha512-gaPkonFV0EPTiLLTcWC0hMYmlCYiG3R5TMxyaxqrMmcJrMqcI9eqJPqfD4zgnZqntS2IzJtzCx2PbZlj8eibpA==} + '@angular/compiler-cli@21.1.0-next.1': + resolution: {integrity: sha512-FATOxDvH5bkTcVkPIdahA3xHbhZvPy70gXcBRedSlMwNq2ubRfxB4hLTGS0BmrAKcVUeZPabCWABymOWqTKtUQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.0 + '@angular/compiler': 21.1.0-next.1 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.1.0-next.0': - resolution: {integrity: sha512-7RBOOws5enj6Cl63QPpFKEuXgnfUz+fVsSa2S772hVCarwPoV5p33hUYhSchGh54GkbU2lrQqyDXK6nUdUoWGw==} + '@angular/compiler@21.1.0-next.1': + resolution: {integrity: sha512-sKA7XwvXj5pgzDab49u6p2srtiOWRE3dvJeHl0iOgttKIYSF+ot2e6ulzha7CtP5qQ78cpUWb9Ih0O5KJhKjMQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.1.0-next.0': - resolution: {integrity: sha512-dhAp5/QFwbtZC5ie8BGbLMkXeRu81WDdWPuNNBxq5qGRGixNsLQSO0fXDT5X1JK31mGbS+HEjxkv/BrLI7YH7w==} + '@angular/core@21.1.0-next.1': + resolution: {integrity: sha512-sgOEuLiSNkaID24w62u3qlD4TzCcUC1mIG8RT8nwbEK5XsjrbgaxZQYqTYJWJpwSTSynbi2qQTQzJNn0vfNJnw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.1.0-next.0 + '@angular/compiler': 21.1.0-next.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -1026,75 +1026,75 @@ packages: zone.js: optional: true - '@angular/forms@21.1.0-next.0': - resolution: {integrity: sha512-lvrrag5KlRt+d4NgNb5JtkFF/AK8bBYcs921N6P5yTUlU1Lp/Ay3k2yiZlF4gjgDhNwp9xXt7Z/wx95lZNQvxQ==} + '@angular/forms@21.1.0-next.1': + resolution: {integrity: sha512-zx/oms9ul3EIJczIDZwnHZRpQy0Ysq7NHCCSa/07zBPfjbc8brU6cfoCWnqYMRkavuocG0q3VWmlJuLghD0oYg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.0 - '@angular/core': 21.1.0-next.0 - '@angular/platform-browser': 21.1.0-next.0 + '@angular/common': 21.1.0-next.1 + '@angular/core': 21.1.0-next.1 + '@angular/platform-browser': 21.1.0-next.1 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.1.0-next.0': - resolution: {integrity: sha512-VnQCLUJSTDEc7iD5kXD0i8uYQeTR13vkwZEA+w21ZaaksKkKg5gz8PxWnl3k/v+U6wJZklkXupuMfh2L/SqQUg==} + '@angular/localize@21.1.0-next.1': + resolution: {integrity: sha512-v7tnLvujrP490kZUHUGtUbd9ByDQLFK93OUPhFtoj5WKlrGlfSwESU029D8tnoE2IyzIBxKnNRbGMm734fY9bA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.0 - '@angular/compiler-cli': 21.1.0-next.0 + '@angular/compiler': 21.1.0-next.1 + '@angular/compiler-cli': 21.1.0-next.1 - '@angular/material@21.1.0-next.0': - resolution: {integrity: sha512-HBz/7SwpmGqKi9paSJ44mEoTsI7UXKesl01Rg0hR2KzR5m16+oi1XKfV8061DXyX/+CyluqWByQjiChgQO3NVQ==} + '@angular/material@21.1.0-next.1': + resolution: {integrity: sha512-wsu8s0RqIvamIJabDA2ikVGdbyQE4LQ1omNPjswjo+87WVFN51dOWO8K3KjbcEeKu8DMs2ksqSuESOggLZty7Q==} peerDependencies: - '@angular/cdk': 21.1.0-next.0 + '@angular/cdk': 21.1.0-next.1 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/bbba566abca437dcd3f6bf91a0788bdb29227563': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/bbba566abca437dcd3f6bf91a0788bdb29227563} - version: 0.0.0-18448ed104aeef3146ccb27484002bf5ed02bdf6 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08} + version: 0.0.0-73051ae248ba64911a8e7e66536d8c99ba07ef2a hasBin: true - '@angular/platform-browser@21.1.0-next.0': - resolution: {integrity: sha512-ZyMQQ0C95FvH9MI72heIXXwUlo0lc6Mw2cTls03dOcjFcEX2vTqgrCXf5fjVNRWeVD5Nr5utGq5lFfmfRdzfZw==} + '@angular/platform-browser@21.1.0-next.1': + resolution: {integrity: sha512-dZF5PemHmXaw78PRFFRaVrW3SHvtK3lVe1NuQEqp+Qiv5vn/YOfCBGL/U7NcXprB24kXPpaoBp0NsO2KXDA4hw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.1.0-next.0 - '@angular/common': 21.1.0-next.0 - '@angular/core': 21.1.0-next.0 + '@angular/animations': 21.1.0-next.1 + '@angular/common': 21.1.0-next.1 + '@angular/core': 21.1.0-next.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.1.0-next.0': - resolution: {integrity: sha512-wo+/pQR1Aeb51c5b977GgYtnqVAbA1Blc/PIrI22/+k3KM+JwTlg39qmnVziB9+fjaTjr8+ANoYfZbxFZdccUQ==} + '@angular/platform-server@21.1.0-next.1': + resolution: {integrity: sha512-nlnKp10oLNqg18zqf79ymY4LLarhmBF7+ldO9c1Xqe4iNu7BsF536H93hy0MAnEtVN5zGX6whySTVNRavbyIvw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.0 - '@angular/compiler': 21.1.0-next.0 - '@angular/core': 21.1.0-next.0 - '@angular/platform-browser': 21.1.0-next.0 + '@angular/common': 21.1.0-next.1 + '@angular/compiler': 21.1.0-next.1 + '@angular/core': 21.1.0-next.1 + '@angular/platform-browser': 21.1.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.1.0-next.0': - resolution: {integrity: sha512-tjSxC3bvOJu/yJ60Ccsma/zaX9AHO/cOxZLA8VHumO08apltWoC83vvxR6jPH8eH8FCvrLB3BKzSxjzLqH6vvQ==} + '@angular/router@21.1.0-next.1': + resolution: {integrity: sha512-gVzyePS5GeDpgBWyAiikE9iQYS+2HrrS4xkz8DuOG5DNF0d/lkz/f4jpKc/4KfV3Y0mqst2KOFr/xRC60PYmfw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.0 - '@angular/core': 21.1.0-next.0 - '@angular/platform-browser': 21.1.0-next.0 + '@angular/common': 21.1.0-next.1 + '@angular/core': 21.1.0-next.1 + '@angular/platform-browser': 21.1.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.1.0-next.0': - resolution: {integrity: sha512-GGPBdjZOw3Pwc6Twj4j3JZikqoGU0TUyNj0qrZp2ceSjDrb6cx89WMJzw4Mirc0W97gkqbvNggsy+wKkzxYlPw==} + '@angular/service-worker@21.1.0-next.1': + resolution: {integrity: sha512-zwut8bSDbKIxkq4Tcb7OJEonuqt6aG8EVF3YxHsmjo995qcdKZan/xnWD+aXVRylHAOq8DNXrUIkxuN7GGCJTg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.1.0-next.0 + '@angular/core': 21.1.0-next.1 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.1.0': @@ -2350,8 +2350,8 @@ packages: resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/ansi@2.0.1': - resolution: {integrity: sha512-QAZUk6BBncv/XmSEZTscd8qazzjV3E0leUMrEPjxCd51QBgCKmprUGLex5DTsNtURm7LMzv+CLcd6S86xvBfYg==} + '@inquirer/ansi@2.0.2': + resolution: {integrity: sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} '@inquirer/checkbox@4.3.2': @@ -2363,8 +2363,8 @@ packages: '@types/node': optional: true - '@inquirer/checkbox@5.0.1': - resolution: {integrity: sha512-5VPFBK8jKdsjMK3DTFOlbR0+Kkd4q0AWB7VhWQn6ppv44dr3b7PU8wSJQTC5oA0f/aGW7v/ZozQJAY9zx6PKig==} + '@inquirer/checkbox@5.0.2': + resolution: {integrity: sha512-iTPV4tMMct7iOpwer5qmTP7gjnk1VQJjsNfAaC2b8Q3qiuHM3K2yjjDr5u1MKfkrvp2JD4Flf8sIPpF21pmZmw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2381,8 +2381,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@6.0.1': - resolution: {integrity: sha512-wD+pM7IxLn1TdcQN12Q6wcFe5VpyCuh/I2sSmqO5KjWH2R4v+GkUToHb+PsDGobOe1MtAlXMwGNkZUPc2+L6NA==} + '@inquirer/confirm@6.0.2': + resolution: {integrity: sha512-A0/13Wyi+8iFeNDX6D4zZYKPoBLIEbE4K/219qHcnpXMer2weWvaTo63+2c7mQPPA206DEMSYVOPnEw3meOlCw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2399,8 +2399,8 @@ packages: '@types/node': optional: true - '@inquirer/core@11.0.1': - resolution: {integrity: sha512-Tpf49h50e4KYffVUCXzkx4gWMafUi3aDQDwfVAAGBNnVcXiwJIj4m2bKlZ7Kgyf6wjt1eyXH1wDGXcAokm4Ssw==} + '@inquirer/core@11.0.2': + resolution: {integrity: sha512-lgMRx/n02ciiNELBvFLHtmcjbV5tf5D/I0UYfCg2YbTZWmBZ10/niLd3IjWBxz8LtM27xP+4oLEa06Slmb7p7A==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2417,8 +2417,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@5.0.1': - resolution: {integrity: sha512-zDKobHI7Ry++4noiV9Z5VfYgSVpPZoMApviIuGwLOMciQaP+dGzCO+1fcwI441riklRiZg4yURWyEoX0Zy2zZw==} + '@inquirer/editor@5.0.2': + resolution: {integrity: sha512-pXQ4Nf0qmFcJuYB6NlcIIxH6l6zKOwNg1Jh/ZRdKd2dTqBB4OXKUFbFwR2K4LVXVtq15ZFFatBVT+rerYR8hWQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2435,8 +2435,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@5.0.1': - resolution: {integrity: sha512-TBrTpAB6uZNnGQHtSEkbvJZIQ3dXZOrwqQSO9uUbwct3G2LitwBCE5YZj98MbQ5nzihzs5pRjY1K9RRLH4WgoA==} + '@inquirer/expand@5.0.2': + resolution: {integrity: sha512-siFG1swxfjFIOxIcehtZkh+KUNB/YCpyfHNEGu+nC/SBXIbgUWibvThLn/WesSxLRGOeSKdNKoTm+GQCKFm6Ww==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2453,8 +2453,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@2.0.1': - resolution: {integrity: sha512-BPYWJXCAK9w6R+pb2s3WyxUz9ts9SP/LDOUwA9fu7LeuyYgojz83i0DSRwezu736BgMwz14G63Xwj70hSzHohQ==} + '@inquirer/external-editor@2.0.2': + resolution: {integrity: sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2466,8 +2466,8 @@ packages: resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/figures@2.0.1': - resolution: {integrity: sha512-KtMxyjLCuDFqAWHmCY9qMtsZ09HnjMsm8H3OvpSIpfhHdfw3/AiGWHNrfRwbyvHPtOJpumm8wGn5fkhtvkWRsg==} + '@inquirer/figures@2.0.2': + resolution: {integrity: sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} '@inquirer/input@4.3.1': @@ -2479,8 +2479,8 @@ packages: '@types/node': optional: true - '@inquirer/input@5.0.1': - resolution: {integrity: sha512-cEhEUohCpE2BCuLKtFFZGp4Ief05SEcqeAOq9NxzN5ThOQP8Rl5N/Nt9VEDORK1bRb2Sk/zoOyQYfysPQwyQtA==} + '@inquirer/input@5.0.2': + resolution: {integrity: sha512-hN2YRo1QiEc9lD3mK+CPnTS4TK2RhCMmMmP4nCWwTkmQL2vx9jPJWYk+rbUZpwR1D583ZJk1FI3i9JZXIpi/qg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2497,8 +2497,8 @@ packages: '@types/node': optional: true - '@inquirer/number@4.0.1': - resolution: {integrity: sha512-4//zgBGHe8Q/FfCoUXZUrUHyK/q5dyqiwsePz3oSSPSmw1Ijo35ZkjaftnxroygcUlLYfXqm+0q08lnB5hd49A==} + '@inquirer/number@4.0.2': + resolution: {integrity: sha512-4McnjTSYrlthNW1ojkkmP75WLRYhQs7GXm6pDDoIrHqJuV5uUYwfdbB0geHdaKMarAqJQgoOVjzIT0jdWCsKew==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2515,8 +2515,8 @@ packages: '@types/node': optional: true - '@inquirer/password@5.0.1': - resolution: {integrity: sha512-UJudHpd7Ia30Q+x+ctYqI9Nh6SyEkaBscpa7J6Ts38oc1CNSws0I1hJEdxbQBlxQd65z5GEJPM4EtNf6tzfWaQ==} + '@inquirer/password@5.0.2': + resolution: {integrity: sha512-oSDziMKiw4G2e4zS+0JRfxuPFFGh6N/9yUaluMgEHp2/Yyj2JGwfDO7XbwtOrxVrz+XsP/iaGyWXdQb9d8A0+g==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2533,8 +2533,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@8.0.1': - resolution: {integrity: sha512-MURRu/cyvLm9vchDDaVZ9u4p+ADnY0Mz3LQr0KTgihrrvuKZlqcWwlBC4lkOMvd0KKX4Wz7Ww9+uA7qEpQaqjg==} + '@inquirer/prompts@8.0.2': + resolution: {integrity: sha512-2zK5zY48fZcl6+gG4eqOC/UzZsJckHCRvjXoLuW4D8LKOCVGdcJiSKkLnumSZjR/6PXPINDGOrGHqNxb+sxJDg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2551,8 +2551,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@5.0.1': - resolution: {integrity: sha512-vVfVHKUgH6rZmMlyd0jOuGZo0Fw1jfcOqZF96lMwlgavx7g0x7MICe316bV01EEoI+c68vMdbkTTawuw3O+Fgw==} + '@inquirer/rawlist@5.0.2': + resolution: {integrity: sha512-AcNALEdQKUQDeJcpC1a3YC53m1MLv+sMUS+vRZ8Qigs1Yg3Dcdtmi82rscJplogKOY8CXkKW4wvVwHS2ZjCIBQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2569,8 +2569,8 @@ packages: '@types/node': optional: true - '@inquirer/search@4.0.1': - resolution: {integrity: sha512-XwiaK5xBvr31STX6Ji8iS3HCRysBXfL/jUbTzufdWTS6LTGtvDQA50oVETt1BJgjKyQBp9vt0VU6AmU/AnOaGA==} + '@inquirer/search@4.0.2': + resolution: {integrity: sha512-hg63w5toohdzE65S3LiGhdfIL0kT+yisbZARf7zw65PvyMUTutTN3eMAvD/B6y/25z88vTrB7kSB45Vz5CbrXg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2587,8 +2587,8 @@ packages: '@types/node': optional: true - '@inquirer/select@5.0.1': - resolution: {integrity: sha512-gPByrgYoezGyKMq5KjV7Tuy1JU2ArIy6/sI8sprw0OpXope3VGQwP5FK1KD4eFFqEhKu470Dwe6/AyDPmGRA0Q==} + '@inquirer/select@5.0.2': + resolution: {integrity: sha512-JygTohvQxSNnvt7IKANVlg/eds+yN5sLRilYeGc4ri/9Aqi/2QPoXBMV5Cz/L1VtQv63SnTbPXJZeCK2pSwsOA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2605,8 +2605,8 @@ packages: '@types/node': optional: true - '@inquirer/type@4.0.1': - resolution: {integrity: sha512-odO8YwoQAw/eVu/PSPsDDVPmqO77r/Mq7zcoF5VduVqIu2wSRWUgmYb5K9WH1no0SjLnOe8MDKtDL++z6mfo2g==} + '@inquirer/type@4.0.2': + resolution: {integrity: sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -6527,9 +6527,6 @@ packages: jasmine-core@4.6.1: resolution: {integrity: sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==} - jasmine-core@5.12.1: - resolution: {integrity: sha512-P/UbRZ0LKwXe7wEpwDheuhunPwITn4oPALhrJEQJo6756EwNGnsK/TSQrWojBB4cQDQ+VaxWYws9tFNDuiMh2Q==} - jasmine-core@5.13.0: resolution: {integrity: sha512-vsYjfh7lyqvZX5QgqKc4YH8phs7g96Z8bsdIFNEU3VqXhlHaq+vov/Fgn/sr6MiUczdZkyXRC3TX369Ll4Nzbw==} @@ -6543,10 +6540,6 @@ packages: resolution: {integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==} hasBin: true - jasmine@5.12.0: - resolution: {integrity: sha512-KmKeTNuH8rgAuPRL5AUsXWSdJVlDu+pgqi2dLXoZUSH/g3kR+7Ho8B7hEhwDu0fu1PLuiXZtfaxmQ/mB5wqihw==} - hasBin: true - jasmine@5.13.0: resolution: {integrity: sha512-oLCXIhEb5e0zzjn9GyuvcuisvLBwUjmgz7a0RNGWKwQtJCDld4m+vwKUpAIJVLB5vbmQFdtKhT86/tIZlJ5gYw==} hasBin: true @@ -7779,6 +7772,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: @@ -9499,31 +9493,31 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/cdk@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3)': + '@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.1.0-next.0 + '@angular/compiler': 21.1.0-next.1 '@babel/core': 7.28.5 '@jridgewell/sourcemap-codec': 1.5.5 - chokidar: 4.0.3 + chokidar: 5.0.0 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 semver: 7.7.3 @@ -9534,31 +9528,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.1.0-next.0': + '@angular/compiler@21.1.0-next.1': dependencies: tslib: 2.8.1 - '@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.1.0-next.0 + '@angular/compiler': 21.1.0-next.1 zone.js: 0.16.0 - '@angular/forms@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(@angular/compiler@21.1.0-next.0)': + '@angular/localize@21.1.0-next.1(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(@angular/compiler@21.1.0-next.1)': dependencies: - '@angular/compiler': 21.1.0-next.0 - '@angular/compiler-cli': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) + '@angular/compiler': 21.1.0-next.1 + '@angular/compiler-cli': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9566,23 +9560,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.1.0-next.0(bd97c5a741e978ef84ea9f0c3ef58280)': + '@angular/material@21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4)': dependencies: - '@angular/cdk': 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.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/bbba566abca437dcd3f6bf91a0788bdb29227563(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 8.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/prompts': 8.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -9616,8 +9610,8 @@ snapshots: firebase: 12.6.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) - jasmine: 5.12.0 - jasmine-core: 5.12.1 + jasmine: 5.13.0 + jasmine-core: 5.13.0 jasmine-reporters: 2.5.2 jsonc-parser: 3.3.1 minimatch: 10.1.1 @@ -9636,35 +9630,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.0)(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.1)(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.1.0-next.0 - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.1.0-next.1 + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.1.0-next.0(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.0(@angular/animations@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.1.0-next.0(@angular/core@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -11080,7 +11074,7 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/ansi@2.0.1': {} + '@inquirer/ansi@2.0.2': {} '@inquirer/checkbox@4.3.2(@types/node@24.10.1)': dependencies: @@ -11092,12 +11086,12 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/checkbox@5.0.1(@types/node@24.10.1)': + '@inquirer/checkbox@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 2.0.1 - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/figures': 2.0.1 - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/ansi': 2.0.2 + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/figures': 2.0.2 + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11108,10 +11102,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/confirm@6.0.1(@types/node@24.10.1)': + '@inquirer/confirm@6.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11128,11 +11122,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/core@11.0.1(@types/node@24.10.1)': + '@inquirer/core@11.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 2.0.1 - '@inquirer/figures': 2.0.1 - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/ansi': 2.0.2 + '@inquirer/figures': 2.0.2 + '@inquirer/type': 4.0.2(@types/node@24.10.1) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 @@ -11148,11 +11142,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/editor@5.0.1(@types/node@24.10.1)': + '@inquirer/editor@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/external-editor': 2.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/external-editor': 2.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11164,10 +11158,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/expand@5.0.1(@types/node@24.10.1)': + '@inquirer/expand@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11178,7 +11172,7 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/external-editor@2.0.1(@types/node@24.10.1)': + '@inquirer/external-editor@2.0.2(@types/node@24.10.1)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 @@ -11187,7 +11181,7 @@ snapshots: '@inquirer/figures@1.0.15': {} - '@inquirer/figures@2.0.1': {} + '@inquirer/figures@2.0.2': {} '@inquirer/input@4.3.1(@types/node@24.10.1)': dependencies: @@ -11196,10 +11190,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/input@5.0.1(@types/node@24.10.1)': + '@inquirer/input@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11210,10 +11204,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/number@4.0.1(@types/node@24.10.1)': + '@inquirer/number@4.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11225,11 +11219,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/password@5.0.1(@types/node@24.10.1)': + '@inquirer/password@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 2.0.1 - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/ansi': 2.0.2 + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11248,18 +11242,18 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/prompts@8.0.1(@types/node@24.10.1)': - dependencies: - '@inquirer/checkbox': 5.0.1(@types/node@24.10.1) - '@inquirer/confirm': 6.0.1(@types/node@24.10.1) - '@inquirer/editor': 5.0.1(@types/node@24.10.1) - '@inquirer/expand': 5.0.1(@types/node@24.10.1) - '@inquirer/input': 5.0.1(@types/node@24.10.1) - '@inquirer/number': 4.0.1(@types/node@24.10.1) - '@inquirer/password': 5.0.1(@types/node@24.10.1) - '@inquirer/rawlist': 5.0.1(@types/node@24.10.1) - '@inquirer/search': 4.0.1(@types/node@24.10.1) - '@inquirer/select': 5.0.1(@types/node@24.10.1) + '@inquirer/prompts@8.0.2(@types/node@24.10.1)': + dependencies: + '@inquirer/checkbox': 5.0.2(@types/node@24.10.1) + '@inquirer/confirm': 6.0.2(@types/node@24.10.1) + '@inquirer/editor': 5.0.2(@types/node@24.10.1) + '@inquirer/expand': 5.0.2(@types/node@24.10.1) + '@inquirer/input': 5.0.2(@types/node@24.10.1) + '@inquirer/number': 4.0.2(@types/node@24.10.1) + '@inquirer/password': 5.0.2(@types/node@24.10.1) + '@inquirer/rawlist': 5.0.2(@types/node@24.10.1) + '@inquirer/search': 4.0.2(@types/node@24.10.1) + '@inquirer/select': 5.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11271,10 +11265,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/rawlist@5.0.1(@types/node@24.10.1)': + '@inquirer/rawlist@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11287,11 +11281,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/search@4.0.1(@types/node@24.10.1)': + '@inquirer/search@4.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/figures': 2.0.1 - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/figures': 2.0.2 + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11305,12 +11299,12 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/select@5.0.1(@types/node@24.10.1)': + '@inquirer/select@5.0.2(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 2.0.1 - '@inquirer/core': 11.0.1(@types/node@24.10.1) - '@inquirer/figures': 2.0.1 - '@inquirer/type': 4.0.1(@types/node@24.10.1) + '@inquirer/ansi': 2.0.2 + '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/figures': 2.0.2 + '@inquirer/type': 4.0.2(@types/node@24.10.1) optionalDependencies: '@types/node': 24.10.1 @@ -11318,7 +11312,7 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@inquirer/type@4.0.1(@types/node@24.10.1)': + '@inquirer/type@4.0.2(@types/node@24.10.1)': optionalDependencies: '@types/node': 24.10.1 @@ -15829,8 +15823,6 @@ snapshots: jasmine-core@4.6.1: {} - jasmine-core@5.12.1: {} - jasmine-core@5.13.0: {} jasmine-reporters@2.5.2: @@ -15848,11 +15840,6 @@ snapshots: glob: 7.2.3 jasmine-core: 2.8.0 - jasmine@5.12.0: - dependencies: - glob: 10.5.0 - jasmine-core: 5.12.1 - jasmine@5.13.0: dependencies: glob: 10.5.0 @@ -16548,10 +16535,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.1.0-next.0(@angular/compiler@21.1.0-next.0)(typescript@5.9.3) + '@angular/compiler-cli': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.53.3) '@rollup/wasm-node': 4.53.3 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 251aaf641226..226faf24e7b5 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#01dabba056a9ee161393c2ea72885982424f58e8", - "@angular/cdk": "github:angular/cdk-builds#d5270ab17028e056e02592619bd7f7f48b5452b2", - "@angular/common": "github:angular/common-builds#8b9648c9b0c5292ff4c34d3e87492e363fb596af", - "@angular/compiler": "github:angular/compiler-builds#2cc5088e36429f547f5d6a108e0af251fcdeec4d", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#b466d8549f5d8bd48d789d872b39720a14a27378", - "@angular/core": "github:angular/core-builds#6a786bcedfbca320c807696aec674d5cebc15a69", - "@angular/forms": "github:angular/forms-builds#33c4210c6989bf43501c13f2f8ac00f87b986af5", - "@angular/language-service": "github:angular/language-service-builds#586bd2bd5073ffd3ecf8b20be2b25d4c239ef15b", - "@angular/localize": "github:angular/localize-builds#08a23a2bd5a61dd764c9b0462ce47f79afd49c49", - "@angular/material": "github:angular/material-builds#d2102b0570aa3373f1e7523b72137460d559e498", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#52dec3209ab471a46549055ec705d5aa2e03079f", - "@angular/platform-browser": "github:angular/platform-browser-builds#cadab2d518da130b8577c10bf67019baa555fca3", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#0591d34ed71950c7266c62c989ba8580e77e0bc2", - "@angular/platform-server": "github:angular/platform-server-builds#1403cb3bda702165a68e79977207e72a3d90fa00", - "@angular/router": "github:angular/router-builds#8b5a55f2e3e2c9c7579a311b428ba6e2662fbf98", - "@angular/service-worker": "github:angular/service-worker-builds#405395ef5a0d45d3a0ef8af98ec1644f7020093d" + "@angular/animations": "github:angular/animations-builds#4fd25b7828b8d0c351cea22d6166e9070e594d98", + "@angular/cdk": "github:angular/cdk-builds#0f465cd702d2c2342030ddc1c9bdad1df221f615", + "@angular/common": "github:angular/common-builds#fae67d42313e092eea59e0ce01b73e6769d29391", + "@angular/compiler": "github:angular/compiler-builds#18facb646514574861b4d9e303b8868f11994fca", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#a948fb2abd45f8906066aa57b5d6ab7f88fd7b23", + "@angular/core": "github:angular/core-builds#58f3209f55fe8ff45d1b895c4cc10db6f982cd6a", + "@angular/forms": "github:angular/forms-builds#a95b5f65c9527211be4f8432b93d3e4f7856f9ab", + "@angular/language-service": "github:angular/language-service-builds#df1494bf50466ea9ce6c76f595986b436980f412", + "@angular/localize": "github:angular/localize-builds#7e1806664c408c5e8a706ee8e343d2cdefe826a4", + "@angular/material": "github:angular/material-builds#fcd2548e2705cea722bb75644ab4eb5b544e4fd4", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ed266ac485067d6581382e6a9d9aa757d0714568", + "@angular/platform-browser": "github:angular/platform-browser-builds#b2c5e171c4186567d9012fd10868e6a2b7baf0ba", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#f3ecea1be0115c84afdcbcfcbad77ddddb3a7bcb", + "@angular/platform-server": "github:angular/platform-server-builds#2cb5daf2ce11c4f71586f3d832b1e56f8f06fc18", + "@angular/router": "github:angular/router-builds#258969801d17effcf4387e815926ca6bca32588d", + "@angular/service-worker": "github:angular/service-worker-builds#fc1c504dfdf32395b7916a86c7a5827f86e70eda" } } From 9033d9434d61a4969e45b1a943daa41dffeb203e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:07:04 +0000 Subject: [PATCH 1929/2162] ci: force dev server host to IPv4 to resolve RBE resolution issues This is needed to get around an RBE issue --- .../testing/builder/projects/hello-world-app/angular.json | 3 ++- .../angular/build/src/builders/dev-server/tests/setup.ts | 4 ++++ .../build_angular/src/builders/dev-server/specs/ssl_spec.ts | 4 ++-- .../build_angular/src/builders/dev-server/tests/setup.ts | 4 ++++ .../build_webpack/test/basic-app/webpack.config.cjs | 5 +++++ .../build_webpack/test/basic-app/webpack.config.mjs | 5 +++++ 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/modules/testing/builder/projects/hello-world-app/angular.json b/modules/testing/builder/projects/hello-world-app/angular.json index 95607701be8f..536fe863f6da 100644 --- a/modules/testing/builder/projects/hello-world-app/angular.json +++ b/modules/testing/builder/projects/hello-world-app/angular.json @@ -103,7 +103,8 @@ "builder": "@angular-devkit/build-angular:dev-server", "options": { "buildTarget": "app:build", - "watch": false + "watch": false, + "host": "127.0.0.1" }, "configurations": { "production": { 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 2c5906e9644d..0385e6834fd1 100644 --- a/packages/angular/build/src/builders/dev-server/tests/setup.ts +++ b/packages/angular/build/src/builders/dev-server/tests/setup.ts @@ -62,6 +62,10 @@ export const BASE_OPTIONS = Object.freeze({ buildTarget: 'test:build', port: 0, + // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. + // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. + host: '127.0.0.1', + // Watch is not supported for testing in vite as currently there is no teardown logic to stop the watchers. watch: false, }); diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts index 60ed65793c7f..51dba9d0a4d8 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts @@ -33,7 +33,7 @@ describe('Dev Server Builder ssl', () => { runs.push(run); const output = (await run.result) as DevServerBuilderOutput; expect(output.success).toBe(true); - expect(output.baseUrl).toMatch(/^https:\/\/localhost:\d+\//); + expect(output.baseUrl).toMatch(/^https:\/\/127\.0\.0\.1:\d+\//); const response = await fetch(output.baseUrl, { dispatcher: new Agent({ @@ -112,7 +112,7 @@ describe('Dev Server Builder ssl', () => { runs.push(run); const output = (await run.result) as DevServerBuilderOutput; expect(output.success).toBe(true); - expect(output.baseUrl).toMatch(/^https:\/\/localhost:\d+\//); + expect(output.baseUrl).toMatch(/^https:\/\/127\.0\.0\.1:\d+\//); const response = await fetch(output.baseUrl, { dispatcher: new Agent({ diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts index f92d3b713c9f..7b8d3851544e 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts @@ -63,6 +63,10 @@ export const BASE_OPTIONS = Object.freeze({ buildTarget: 'test:build', port: 0, + // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. + // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. + host: '127.0.0.1', + // Watch is not supported for testing in vite as currently there is no teardown logic to stop the watchers. watch: false, }); diff --git a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs index b1f988ab2071..63a5a947e7ea 100644 --- a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs +++ b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs @@ -3,6 +3,11 @@ const path = require('path'); module.exports = { mode: 'development', entry: path.resolve(__dirname, './src/main.js'), + devServer: { + // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. + // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. + host: '127.0.0.1', + }, module: { rules: [ // rxjs 6 requires directory imports which are not support in ES modules. diff --git a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs index 289fff7bdb69..cd76b55970d3 100644 --- a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs +++ b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs @@ -4,6 +4,11 @@ import { fileURLToPath } from 'url'; export default { mode: 'development', entry: resolve(fileURLToPath(import.meta.url), '../src/main.js'), + devServer: { + // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. + // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. + host: '127.0.0.1', + }, module: { rules: [ // rxjs 6 requires directory imports which are not support in ES modules. From 7038ea1df857422448f9fd9174c7a3427eee6c94 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 5 Dec 2025 07:36:54 +0000 Subject: [PATCH 1930/2162] build: update all non-major dependencies See associated pull request for more information. Closes #32034 as a pr takeover --- modules/testing/builder/package.json | 4 +- package.json | 6 +- packages/angular/build/package.json | 6 +- packages/angular/cli/package.json | 2 +- .../src/commands/mcp/tools/best-practices.ts | 2 +- .../cli/src/commands/mcp/tools/doc-search.ts | 2 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 699 ++++++++---------- 8 files changed, 329 insertions(+), 396 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index 3881ebc556a9..d45f22f1c42f 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.14", + "@vitest/coverage-v8": "4.0.15", "jsdom": "27.2.0", "rxjs": "7.8.2", - "vitest": "4.0.14" + "vitest": "4.0.15" } } diff --git a/package.json b/package.json index 6c5e27297922..5f8fc75a47a2 100644 --- a/package.json +++ b/package.json @@ -97,8 +97,8 @@ "@typescript-eslint/parser": "8.48.1", "ajv": "8.17.1", "buffer": "6.0.3", - "esbuild": "0.27.0", - "esbuild-wasm": "0.27.0", + "esbuild": "0.27.1", + "esbuild-wasm": "0.27.1", "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", @@ -137,7 +137,7 @@ "typescript": "5.9.3", "undici": "7.16.0", "unenv": "^1.10.0", - "verdaccio": "6.2.3", + "verdaccio": "6.2.4", "verdaccio-auth-memory": "^10.0.0", "zone.js": "^0.16.0" }, diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 9bd8ae2a54c3..934f349cb309 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -27,7 +27,7 @@ "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", - "esbuild": "0.27.0", + "esbuild": "0.27.1", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -37,7 +37,7 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.52", + "rolldown": "1.0.0-beta.53", "sass": "1.94.2", "semver": "7.7.3", "source-map-support": "0.5.21", @@ -57,7 +57,7 @@ "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.14" + "vitest": "4.0.15" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 26dc1c5c49ac..e9ea544df4f0 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.24.0", + "@modelcontextprotocol/sdk": "1.24.2", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.45.0", diff --git a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts index 2c72d2175bac..52bf71a8048a 100644 --- a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts +++ b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts @@ -211,7 +211,7 @@ function createBestPracticesHandler({ logger }: McpToolContext) { type: 'text' as const, text: content, annotations: { - audience: ['assistant'], + audience: ['assistant' as const], priority: 0.9, source, }, diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts index 7d0f1bd92ab5..385f0d00d6a4 100644 --- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts +++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts @@ -176,7 +176,7 @@ function createDocSearchHandler({ logger }: McpToolContext) { const textContent: { type: 'text'; text: string; - annotations?: { audience: string[]; priority: number }; + annotations?: { audience: Array<'user' | 'assistant'>; priority: number }; }[] = [ { type: 'text' as const, diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index b8fe65aff344..3cd0481dc7c5 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -28,7 +28,7 @@ "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.27.0", + "esbuild-wasm": "0.27.1", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -62,7 +62,7 @@ "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.27.0" + "esbuild": "0.27.1" }, "devDependencies": { "@angular/ssr": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca9a7171743b..6250ae36c084 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a6bcef88323031f5c157227705792019833c5c08 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.1 version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -126,7 +126,7 @@ importers: version: 3.0.8 '@types/loader-utils': specifier: ^3.0.0 - version: 3.0.0(esbuild@0.27.0) + version: 3.0.0(esbuild@0.27.1) '@types/lodash': specifier: ^4.17.0 version: 4.17.21 @@ -176,11 +176,11 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.27.0 - version: 0.27.0 + specifier: 0.27.1 + version: 0.27.1 esbuild-wasm: - specifier: 0.27.0 - version: 0.27.0 + specifier: 0.27.1 + version: 0.27.1 eslint: specifier: 9.39.1 version: 9.39.1(jiti@2.6.1) @@ -296,8 +296,8 @@ importers: specifier: ^1.10.0 version: 1.10.0 verdaccio: - specifier: 6.2.3 - version: 6.2.3(encoding@0.1.13) + specifier: 6.2.4 + version: 6.2.4(encoding@0.1.13) verdaccio-auth-memory: specifier: ^10.0.0 version: 10.3.1 @@ -320,8 +320,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.14 - version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 4.0.15 + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -332,8 +332,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.14 - version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.15 + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -365,8 +365,8 @@ importers: specifier: ^4.26.0 version: 4.28.0 esbuild: - specifier: 0.27.0 - version: 0.27.0 + specifier: 0.27.1 + version: 0.27.1 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.2.2) @@ -395,8 +395,8 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.52 - version: 1.0.0-beta.52 + specifier: 1.0.0-beta.53 + version: 1.0.0-beta.53 sass: specifier: 1.94.2 version: 1.94.2 @@ -441,8 +441,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.14 - version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.15 + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -466,8 +466,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.24.0 - version: 1.24.0(zod@4.1.13) + specifier: 1.24.2 + version: 1.24.2(zod@4.1.13) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -643,19 +643,19 @@ importers: version: 10.4.22(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.0)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1)) browserslist: specifier: ^4.26.0 version: 4.28.0 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.103.0(esbuild@0.27.0)) + version: 13.0.1(webpack@5.103.0(esbuild@0.27.1)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.103.0(esbuild@0.27.0)) + version: 7.1.2(webpack@5.103.0(esbuild@0.27.1)) esbuild-wasm: - specifier: 0.27.0 - version: 0.27.0 + specifier: 0.27.1 + version: 0.27.1 http-proxy-middleware: specifier: 3.0.5 version: 3.0.5 @@ -673,16 +673,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.0)) + version: 12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.1)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.103.0(esbuild@0.27.0)) + version: 4.0.2(webpack@5.103.0(esbuild@0.27.1)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.103.0(esbuild@0.27.0)) + version: 2.9.4(webpack@5.103.0(esbuild@0.27.1)) open: specifier: 11.0.0 version: 11.0.0 @@ -700,7 +700,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.0)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.1)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -712,13 +712,13 @@ importers: version: 1.94.2 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.0)) + version: 16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.1)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.103.0(esbuild@0.27.0)) + version: 5.0.0(webpack@5.103.0(esbuild@0.27.1)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -736,19 +736,19 @@ importers: version: 2.8.1 webpack: specifier: 5.103.0 - version: 5.103.0(esbuild@0.27.0) + version: 5.103.0(esbuild@0.27.1) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.103.0(esbuild@0.27.0)) + version: 7.4.5(webpack@5.103.0(esbuild@0.27.1)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.0)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.1)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.103.0(esbuild@0.27.0)) + version: 5.1.0(webpack@5.103.0(esbuild@0.27.1)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -767,8 +767,8 @@ importers: version: 7.16.0 optionalDependencies: esbuild: - specifier: 0.27.0 - version: 0.27.0 + specifier: 0.27.1 + version: 0.27.1 packages/angular_devkit/build_webpack: dependencies: @@ -787,10 +787,10 @@ importers: version: link:../../ngtools/webpack webpack: specifier: 5.103.0 - version: 5.103.0(esbuild@0.27.0) + version: 5.103.0(esbuild@0.27.1) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.0)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.1)) packages/angular_devkit/core: dependencies: @@ -869,7 +869,7 @@ importers: version: 5.9.3 webpack: specifier: 5.103.0 - version: 5.103.0(esbuild@0.27.0) + version: 5.103.0(esbuild@0.27.1) packages/schematics/angular: dependencies: @@ -1698,8 +1698,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.0': - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} + '@esbuild/aix-ppc64@0.27.1': + resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1710,8 +1710,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.0': - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} + '@esbuild/android-arm64@0.27.1': + resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1722,8 +1722,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.0': - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} + '@esbuild/android-arm@0.27.1': + resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1734,8 +1734,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.0': - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} + '@esbuild/android-x64@0.27.1': + resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1746,8 +1746,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.0': - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} + '@esbuild/darwin-arm64@0.27.1': + resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1758,8 +1758,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.0': - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} + '@esbuild/darwin-x64@0.27.1': + resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1770,8 +1770,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.0': - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} + '@esbuild/freebsd-arm64@0.27.1': + resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1782,8 +1782,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.0': - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} + '@esbuild/freebsd-x64@0.27.1': + resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1794,8 +1794,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.0': - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} + '@esbuild/linux-arm64@0.27.1': + resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1806,8 +1806,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.0': - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} + '@esbuild/linux-arm@0.27.1': + resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1818,8 +1818,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.0': - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} + '@esbuild/linux-ia32@0.27.1': + resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1830,8 +1830,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.0': - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} + '@esbuild/linux-loong64@0.27.1': + resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1842,8 +1842,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.0': - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} + '@esbuild/linux-mips64el@0.27.1': + resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1854,8 +1854,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.0': - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} + '@esbuild/linux-ppc64@0.27.1': + resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1866,8 +1866,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.0': - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} + '@esbuild/linux-riscv64@0.27.1': + resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1878,8 +1878,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.0': - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} + '@esbuild/linux-s390x@0.27.1': + resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1890,8 +1890,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.0': - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + '@esbuild/linux-x64@0.27.1': + resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1902,8 +1902,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.0': - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} + '@esbuild/netbsd-arm64@0.27.1': + resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1914,8 +1914,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.0': - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} + '@esbuild/netbsd-x64@0.27.1': + resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1926,8 +1926,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.0': - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} + '@esbuild/openbsd-arm64@0.27.1': + resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1938,8 +1938,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.0': - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} + '@esbuild/openbsd-x64@0.27.1': + resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1950,8 +1950,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.0': - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} + '@esbuild/openharmony-arm64@0.27.1': + resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -1962,8 +1962,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.0': - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} + '@esbuild/sunos-x64@0.27.1': + resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1974,8 +1974,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.0': - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} + '@esbuild/win32-arm64@0.27.1': + resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1986,8 +1986,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.0': - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} + '@esbuild/win32-ia32@0.27.1': + resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1998,8 +1998,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.0': - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} + '@esbuild/win32-x64@0.27.1': + resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2740,8 +2740,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.24.0': - resolution: {integrity: sha512-D8h5KXY2vHFW8zTuxn2vuZGN0HGrQ5No6LkHwlEA9trVgNdPL3TF1dSqKA7Dny6BbBYKSW/rOBDXdC8KJAjUCg==} + '@modelcontextprotocol/sdk@1.24.2': + resolution: {integrity: sha512-hS/kzSfchqzvUeJUsdiDHi84/kNhLIZaZ6coGQVwbYIelOBbcAwUohUfaQTLa1MvFOK/jbTnGFzraHSFwB7pjQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -2897,8 +2897,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@napi-rs/wasm-runtime@1.1.0': + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -3057,8 +3057,8 @@ packages: resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} - '@oxc-project/types@0.99.0': - resolution: {integrity: sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==} + '@oxc-project/types@0.101.0': + resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3210,95 +3210,89 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.52': - resolution: {integrity: sha512-MBGIgysimZPqTDcLXI+i9VveijkP5C3EAncEogXhqfax6YXj1Tr2LY3DVuEOMIjWfMPMhtQSPup4fSTAmgjqIw==} + '@rolldown/binding-android-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.52': - resolution: {integrity: sha512-MmKeoLnKu1d9j6r19K8B+prJnIZ7u+zQ+zGQ3YHXGnr41rzE3eqQLovlkvoZnRoxDGPA4ps0pGiwXy6YE3lJyg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.52': - resolution: {integrity: sha512-qpHedvQBmIjT8zdnjN3nWPR2qjQyJttbXniCEKKdHeAbZG9HyNPBUzQF7AZZGwmS9coQKL+hWg9FhWzh2dZ2IA==} + '@rolldown/binding-darwin-x64@1.0.0-beta.53': + resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.52': - resolution: {integrity: sha512-dDp7WbPapj/NVW0LSiH/CLwMhmLwwKb3R7mh2kWX+QW85X1DGVnIEyKh9PmNJjB/+suG1dJygdtdNPVXK1hylg==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52': - resolution: {integrity: sha512-9e4l6vy5qNSliDPqNfR6CkBOAx6PH7iDV4OJiEJzajajGrVy8gc/IKKJUsoE52G8ud8MX6r3PMl97NfwgOzB7g==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52': - resolution: {integrity: sha512-V48oDR84feRU2KRuzpALp594Uqlx27+zFsT6+BgTcXOtu7dWy350J1G28ydoCwKB+oxwsRPx2e7aeQnmd3YJbQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.52': - resolution: {integrity: sha512-ENLmSQCWqSA/+YN45V2FqTIemg7QspaiTjlm327eUAMeOLdqmSOVVyrQexJGNTQ5M8sDYCgVAig2Kk01Ggmqaw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.52': - resolution: {integrity: sha512-klahlb2EIFltSUubn/VLjuc3qxp1E7th8ukayPfdkcKvvYcQ5rJztgx8JsJSuAKVzKtNTqUGOhy4On71BuyV8g==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.52': - resolution: {integrity: sha512-UuA+JqQIgqtkgGN2c/AQ5wi8M6mJHrahz/wciENPTeI6zEIbbLGoth5XN+sQe2pJDejEVofN9aOAp0kaazwnVg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.52': - resolution: {integrity: sha512-1BNQW8u4ro8bsN1+tgKENJiqmvc+WfuaUhXzMImOVSMw28pkBKdfZtX2qJPADV3terx+vNJtlsgSGeb3+W6Jiw==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.52': - resolution: {integrity: sha512-K/p7clhCqJOQpXGykrFaBX2Dp9AUVIDHGc+PtFGBwg7V+mvBTv/tsm3LC3aUmH02H2y3gz4y+nUTQ0MLpofEEg==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': + resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52': - resolution: {integrity: sha512-a4EkXBtnYYsKipjS7QOhEBM4bU5IlR9N1hU+JcVEVeuTiaslIyhWVKsvf7K2YkQHyVAJ+7/A9BtrGqORFcTgng==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52': - resolution: {integrity: sha512-5ZXcYyd4GxPA6QfbGrNcQjmjbuLGvfz6728pZMsQvGHI+06LT06M6TPtXvFvLgXtexc+OqvFe1yAIXJU1gob/w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.52': - resolution: {integrity: sha512-tzpnRQXJrSzb8Z9sm97UD3cY0toKOImx+xRKsDLX4zHaAlRXWh7jbaKBePJXEN7gNw7Nm03PBNwphdtA8KSUYQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.52': - resolution: {integrity: sha512-/L0htLJZbaZFL1g9OHOblTxbCYIGefErJjtYOwgl9ZqNx27P3L0SDfjhhHIss32gu5NWgnxuT2a2Hnnv6QGHKA==} + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3996,20 +3990,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.14': - resolution: {integrity: sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==} + '@vitest/coverage-v8@4.0.15': + resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} peerDependencies: - '@vitest/browser': 4.0.14 - vitest: 4.0.14 + '@vitest/browser': 4.0.15 + vitest: 4.0.15 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.14': - resolution: {integrity: sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==} + '@vitest/expect@4.0.15': + resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} - '@vitest/mocker@4.0.14': - resolution: {integrity: sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==} + '@vitest/mocker@4.0.15': + resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4019,20 +4013,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.14': - resolution: {integrity: sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==} + '@vitest/pretty-format@4.0.15': + resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} - '@vitest/runner@4.0.14': - resolution: {integrity: sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==} + '@vitest/runner@4.0.15': + resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} - '@vitest/snapshot@4.0.14': - resolution: {integrity: sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==} + '@vitest/snapshot@4.0.15': + resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} - '@vitest/spy@4.0.14': - resolution: {integrity: sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==} + '@vitest/spy@4.0.15': + resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} - '@vitest/utils@4.0.14': - resolution: {integrity: sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==} + '@vitest/utils@4.0.15': + resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -5382,8 +5376,8 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.27.0: - resolution: {integrity: sha512-4XpLDOY4sOzqgiezPXDkHTn25cBA1MKN5OTotehoFR7/wTpSYCK76OA8rQfpiuz12G27JpGxxdh+/D9GcNl61w==} + esbuild-wasm@0.27.1: + resolution: {integrity: sha512-NjueSyuuMjX6F/mnqQ8g4rkwAFTct7JT/A/oXjXhGTFbWiTm3zU59BMulOrT+KuCHj+oShTBARQCxCDDvVxwFA==} engines: {node: '>=18'} hasBin: true @@ -5392,8 +5386,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.0: - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} + esbuild@0.27.1: + resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} engines: {node: '>=18'} hasBin: true @@ -7976,8 +7970,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.52: - resolution: {integrity: sha512-Hbnpljue+JhMJrlOjQ1ixp9me7sUec7OjFvS+A1Qm8k8Xyxmw3ZhxFu7LlSXW1s9AX3POE9W9o2oqCEeR5uDmg==} + rolldown@1.0.0-beta.53: + resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8560,8 +8554,9 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -8891,8 +8886,8 @@ packages: resolution: {integrity: sha512-iAkhusaNUEvBeq+7Xn8YUqq4hXoVuAteZPrG4dwsqSjVliS7YQGdysQKYG89QnN9iMKAEvuSzhb+GP0c5dbL0g==} engines: {node: '>=18'} - verdaccio@6.2.3: - resolution: {integrity: sha512-WADj3xYiuxjI1IFPLdN8Qskfmg35wERIlgNp/quA3XUl7bt94zc66L2FJ/ldjWmTClS7xjL2fXGOiJWJXFeK7g==} + verdaccio@6.2.4: + resolution: {integrity: sha512-1riItDS5ZmkLVclEOI4ibmJPCTfg1f8iEbdZWo7mgaEDHs1KS2JJnGq+dnoDlbo4efJ5mCyy1g7p32k/xx2+wg==} engines: {node: '>=18'} hasBin: true @@ -8900,46 +8895,6 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.2.4: - resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.2.6: resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8980,18 +8935,18 @@ packages: yaml: optional: true - vitest@4.0.14: - resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==} + vitest@4.0.15: + resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.14 - '@vitest/browser-preview': 4.0.14 - '@vitest/browser-webdriverio': 4.0.14 - '@vitest/ui': 4.0.14 + '@vitest/browser-playwright': 4.0.15 + '@vitest/browser-preview': 4.0.15 + '@vitest/browser-webdriverio': 4.0.15 + '@vitest/ui': 4.0.15 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9570,11 +9525,11 @@ 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/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.0.2(@types/node@24.10.1) '@inquirer/type': 4.0.2(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 @@ -10434,157 +10389,157 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.0': + '@esbuild/aix-ppc64@0.27.1': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.0': + '@esbuild/android-arm64@0.27.1': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.0': + '@esbuild/android-arm@0.27.1': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.0': + '@esbuild/android-x64@0.27.1': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.0': + '@esbuild/darwin-arm64@0.27.1': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.0': + '@esbuild/darwin-x64@0.27.1': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.0': + '@esbuild/freebsd-arm64@0.27.1': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.0': + '@esbuild/freebsd-x64@0.27.1': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.0': + '@esbuild/linux-arm64@0.27.1': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.0': + '@esbuild/linux-arm@0.27.1': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.0': + '@esbuild/linux-ia32@0.27.1': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.0': + '@esbuild/linux-loong64@0.27.1': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.0': + '@esbuild/linux-mips64el@0.27.1': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.0': + '@esbuild/linux-ppc64@0.27.1': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.0': + '@esbuild/linux-riscv64@0.27.1': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.0': + '@esbuild/linux-s390x@0.27.1': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.0': + '@esbuild/linux-x64@0.27.1': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.0': + '@esbuild/netbsd-arm64@0.27.1': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.0': + '@esbuild/netbsd-x64@0.27.1': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.0': + '@esbuild/openbsd-arm64@0.27.1': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.0': + '@esbuild/openbsd-x64@0.27.1': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.0': + '@esbuild/openharmony-arm64@0.27.1': optional: true '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.0': + '@esbuild/sunos-x64@0.27.1': optional: true '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.0': + '@esbuild/win32-arm64@0.27.1': optional: true '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.0': + '@esbuild/win32-ia32@0.27.1': optional: true '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.0': + '@esbuild/win32-x64@0.27.1': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': @@ -11024,12 +10979,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.24.0(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.24.0(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.24.2(zod@4.1.13) transitivePeerDependencies: - bufferutil - supports-color @@ -11435,7 +11390,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)': + '@modelcontextprotocol/sdk@1.24.2(zod@4.1.13)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -11553,7 +11508,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.0.7': + '@napi-rs/wasm-runtime@1.1.0': dependencies: '@emnapi/core': 1.7.1 '@emnapi/runtime': 1.7.1 @@ -11763,7 +11718,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.38.0': {} - '@oxc-project/types@0.99.0': {} + '@oxc-project/types@0.101.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11889,51 +11844,48 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.52': + '@rolldown/binding-android-arm64@1.0.0-beta.53': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.52': + '@rolldown/binding-darwin-arm64@1.0.0-beta.53': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.52': + '@rolldown/binding-darwin-x64@1.0.0-beta.53': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.52': + '@rolldown/binding-freebsd-x64@1.0.0-beta.53': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.52': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.52': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.52': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.52': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.52': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': dependencies: - '@napi-rs/wasm-runtime': 1.0.7 - optional: true - - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52': + '@napi-rs/wasm-runtime': 1.1.0 optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.52': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': optional: true - '@rolldown/pluginutils@1.0.0-beta.52': {} + '@rolldown/pluginutils@1.0.0-beta.53': {} '@rollup/plugin-alias@6.0.0(rollup@4.53.3)': optionalDependencies: @@ -12345,10 +12297,10 @@ snapshots: '@types/less@3.0.8': {} - '@types/loader-utils@3.0.0(esbuild@0.27.0)': + '@types/loader-utils@3.0.0(esbuild@0.27.1)': dependencies: '@types/node': 22.19.1 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12757,10 +12709,10 @@ snapshots: dependencies: vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.14 + '@vitest/utils': 4.0.15 ast-v8-to-istanbul: 0.3.8 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -12770,47 +12722,47 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.14': + '@vitest/expect@4.0.15': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.14 - '@vitest/utils': 4.0.14 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.14 + '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@4.0.14': + '@vitest/pretty-format@4.0.15': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.14': + '@vitest/runner@4.0.15': dependencies: - '@vitest/utils': 4.0.14 + '@vitest/utils': 4.0.15 pathe: 2.0.3 - '@vitest/snapshot@4.0.14': + '@vitest/snapshot@4.0.15': dependencies: - '@vitest/pretty-format': 4.0.14 + '@vitest/pretty-format': 4.0.15 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.14': {} + '@vitest/spy@4.0.15': {} - '@vitest/utils@4.0.14': + '@vitest/utils@4.0.15': dependencies: - '@vitest/pretty-format': 4.0.14 + '@vitest/pretty-format': 4.0.15 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -13330,11 +13282,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.0)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13921,14 +13873,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.103.0(esbuild@0.27.0)): + copy-webpack-plugin@13.0.1(webpack@5.103.0(esbuild@0.27.1)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) core-js-compat@3.47.0: dependencies: @@ -13972,7 +13924,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.103.0(esbuild@0.27.0)): + css-loader@7.1.2(webpack@5.103.0(esbuild@0.27.1)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13983,7 +13935,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) css-select@6.0.0: dependencies: @@ -14433,7 +14385,7 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.27.0: {} + esbuild-wasm@0.27.1: {} esbuild@0.25.12: optionalDependencies: @@ -14464,34 +14416,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.0: + esbuild@0.27.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.0 - '@esbuild/android-arm': 0.27.0 - '@esbuild/android-arm64': 0.27.0 - '@esbuild/android-x64': 0.27.0 - '@esbuild/darwin-arm64': 0.27.0 - '@esbuild/darwin-x64': 0.27.0 - '@esbuild/freebsd-arm64': 0.27.0 - '@esbuild/freebsd-x64': 0.27.0 - '@esbuild/linux-arm': 0.27.0 - '@esbuild/linux-arm64': 0.27.0 - '@esbuild/linux-ia32': 0.27.0 - '@esbuild/linux-loong64': 0.27.0 - '@esbuild/linux-mips64el': 0.27.0 - '@esbuild/linux-ppc64': 0.27.0 - '@esbuild/linux-riscv64': 0.27.0 - '@esbuild/linux-s390x': 0.27.0 - '@esbuild/linux-x64': 0.27.0 - '@esbuild/netbsd-arm64': 0.27.0 - '@esbuild/netbsd-x64': 0.27.0 - '@esbuild/openbsd-arm64': 0.27.0 - '@esbuild/openbsd-x64': 0.27.0 - '@esbuild/openharmony-arm64': 0.27.0 - '@esbuild/sunos-x64': 0.27.0 - '@esbuild/win32-arm64': 0.27.0 - '@esbuild/win32-ia32': 0.27.0 - '@esbuild/win32-x64': 0.27.0 + '@esbuild/aix-ppc64': 0.27.1 + '@esbuild/android-arm': 0.27.1 + '@esbuild/android-arm64': 0.27.1 + '@esbuild/android-x64': 0.27.1 + '@esbuild/darwin-arm64': 0.27.1 + '@esbuild/darwin-x64': 0.27.1 + '@esbuild/freebsd-arm64': 0.27.1 + '@esbuild/freebsd-x64': 0.27.1 + '@esbuild/linux-arm': 0.27.1 + '@esbuild/linux-arm64': 0.27.1 + '@esbuild/linux-ia32': 0.27.1 + '@esbuild/linux-loong64': 0.27.1 + '@esbuild/linux-mips64el': 0.27.1 + '@esbuild/linux-ppc64': 0.27.1 + '@esbuild/linux-riscv64': 0.27.1 + '@esbuild/linux-s390x': 0.27.1 + '@esbuild/linux-x64': 0.27.1 + '@esbuild/netbsd-arm64': 0.27.1 + '@esbuild/netbsd-x64': 0.27.1 + '@esbuild/openbsd-arm64': 0.27.1 + '@esbuild/openbsd-x64': 0.27.1 + '@esbuild/openharmony-arm64': 0.27.1 + '@esbuild/sunos-x64': 0.27.1 + '@esbuild/win32-arm64': 0.27.1 + '@esbuild/win32-ia32': 0.27.1 + '@esbuild/win32-x64': 0.27.1 escalade@3.2.0: {} @@ -16123,11 +16075,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.0)): + less-loader@12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.1)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) less@4.4.2: dependencies: @@ -16148,11 +16100,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.103.0(esbuild@0.27.0)): + license-webpack-plugin@4.0.2(webpack@5.103.0(esbuild@0.27.1)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) lie@3.3.0: dependencies: @@ -16397,11 +16349,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.103.0(esbuild@0.27.0)): + mini-css-extract-plugin@2.9.4(webpack@5.103.0(esbuild@0.27.1)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) minimalistic-assert@1.0.1: {} @@ -16547,7 +16499,7 @@ snapshots: chokidar: 4.0.3 commander: 14.0.2 dependency-graph: 1.0.0 - esbuild: 0.27.0 + esbuild: 0.27.1 find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 @@ -17043,14 +16995,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.0)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.1)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) transitivePeerDependencies: - typescript @@ -17507,25 +17459,24 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-beta.52: + rolldown@1.0.0-beta.53: dependencies: - '@oxc-project/types': 0.99.0 - '@rolldown/pluginutils': 1.0.0-beta.52 + '@oxc-project/types': 0.101.0 + '@rolldown/pluginutils': 1.0.0-beta.53 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.52 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.52 - '@rolldown/binding-darwin-x64': 1.0.0-beta.52 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.52 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.52 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.52 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.52 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.52 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.52 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.52 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.52 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.52 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.52 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.52 + '@rolldown/binding-android-arm64': 1.0.0-beta.53 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 + '@rolldown/binding-darwin-x64': 1.0.0-beta.53 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 rollup-license-plugin@3.1.0: dependencies: @@ -17626,12 +17577,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.0)): + sass-loader@16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.1)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.94.2 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) sass@1.94.2: dependencies: @@ -17942,11 +17893,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.103.0(esbuild@0.27.0)): + source-map-loader@5.0.0(webpack@5.103.0(esbuild@0.27.1)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) source-map-support@0.4.18: dependencies: @@ -18238,16 +18189,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.27.0)(webpack@5.103.0(esbuild@0.27.0)): + terser-webpack-plugin@5.3.14(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) optionalDependencies: - esbuild: 0.27.0 + esbuild: 0.27.1 terser@5.44.1: dependencies: @@ -18287,7 +18238,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -18386,7 +18337,7 @@ snapshots: tsx@4.21.0: dependencies: - esbuild: 0.27.0 + esbuild: 0.27.1 get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -18618,7 +18569,7 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.2.3(encoding@0.1.13): + verdaccio@6.2.4(encoding@0.1.13): dependencies: '@cypress/request': 3.0.9 '@verdaccio/auth': 8.0.0-next-8.28 @@ -18662,24 +18613,6 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.1 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.94.2 - terser: 5.44.1 - tsx: 4.21.0 - yaml: 2.8.2 - vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 @@ -18698,15 +18631,15 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.14 - '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.14 - '@vitest/runner': 4.0.14 - '@vitest/snapshot': 4.0.14 - '@vitest/spy': 4.0.14 - '@vitest/utils': 4.0.14 + '@vitest/expect': 4.0.15 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.15 + '@vitest/runner': 4.0.15 + '@vitest/snapshot': 4.0.15 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -18715,10 +18648,10 @@ snapshots: picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18786,7 +18719,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.103.0(esbuild@0.27.0)): + webpack-dev-middleware@7.4.5(webpack@5.103.0(esbuild@0.27.1)): dependencies: colorette: 2.0.20 memfs: 4.51.1 @@ -18795,9 +18728,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.0)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18825,10 +18758,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.103.0(esbuild@0.27.0)) + webpack-dev-middleware: 7.4.5(webpack@5.103.0(esbuild@0.27.1)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) transitivePeerDependencies: - bufferutil - debug @@ -18843,12 +18776,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.103.0(esbuild@0.27.0)): + webpack-subresource-integrity@5.1.0(webpack@5.103.0(esbuild@0.27.1)): dependencies: typed-assert: 1.0.9 - webpack: 5.103.0(esbuild@0.27.0) + webpack: 5.103.0(esbuild@0.27.1) - webpack@5.103.0(esbuild@0.27.0): + webpack@5.103.0(esbuild@0.27.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18872,7 +18805,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.27.0)(webpack@5.103.0(esbuild@0.27.0)) + terser-webpack-plugin: 5.3.14(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From 9d48693528fce6c9b34fd680f989e5f7c6d6c4f0 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 5 Dec 2025 12:53:46 +0000 Subject: [PATCH 1931/2162] Revert "ci: force dev server host to IPv4 to resolve RBE resolution issues" This reverts commit 9033d9434d61a4969e45b1a943daa41dffeb203e. --- .../testing/builder/projects/hello-world-app/angular.json | 3 +-- .../angular/build/src/builders/dev-server/tests/setup.ts | 4 ---- .../build_angular/src/builders/dev-server/specs/ssl_spec.ts | 4 ++-- .../build_angular/src/builders/dev-server/tests/setup.ts | 4 ---- .../build_webpack/test/basic-app/webpack.config.cjs | 5 ----- .../build_webpack/test/basic-app/webpack.config.mjs | 5 ----- 6 files changed, 3 insertions(+), 22 deletions(-) diff --git a/modules/testing/builder/projects/hello-world-app/angular.json b/modules/testing/builder/projects/hello-world-app/angular.json index 536fe863f6da..95607701be8f 100644 --- a/modules/testing/builder/projects/hello-world-app/angular.json +++ b/modules/testing/builder/projects/hello-world-app/angular.json @@ -103,8 +103,7 @@ "builder": "@angular-devkit/build-angular:dev-server", "options": { "buildTarget": "app:build", - "watch": false, - "host": "127.0.0.1" + "watch": false }, "configurations": { "production": { 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 0385e6834fd1..2c5906e9644d 100644 --- a/packages/angular/build/src/builders/dev-server/tests/setup.ts +++ b/packages/angular/build/src/builders/dev-server/tests/setup.ts @@ -62,10 +62,6 @@ export const BASE_OPTIONS = Object.freeze({ buildTarget: 'test:build', port: 0, - // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. - // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. - host: '127.0.0.1', - // Watch is not supported for testing in vite as currently there is no teardown logic to stop the watchers. watch: false, }); diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts index 51dba9d0a4d8..60ed65793c7f 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/specs/ssl_spec.ts @@ -33,7 +33,7 @@ describe('Dev Server Builder ssl', () => { runs.push(run); const output = (await run.result) as DevServerBuilderOutput; expect(output.success).toBe(true); - expect(output.baseUrl).toMatch(/^https:\/\/127\.0\.0\.1:\d+\//); + expect(output.baseUrl).toMatch(/^https:\/\/localhost:\d+\//); const response = await fetch(output.baseUrl, { dispatcher: new Agent({ @@ -112,7 +112,7 @@ describe('Dev Server Builder ssl', () => { runs.push(run); const output = (await run.result) as DevServerBuilderOutput; expect(output.success).toBe(true); - expect(output.baseUrl).toMatch(/^https:\/\/127\.0\.0\.1:\d+\//); + expect(output.baseUrl).toMatch(/^https:\/\/localhost:\d+\//); const response = await fetch(output.baseUrl, { dispatcher: new Agent({ diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts index 7b8d3851544e..f92d3b713c9f 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/tests/setup.ts @@ -63,10 +63,6 @@ export const BASE_OPTIONS = Object.freeze({ buildTarget: 'test:build', port: 0, - // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. - // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. - host: '127.0.0.1', - // Watch is not supported for testing in vite as currently there is no teardown logic to stop the watchers. watch: false, }); diff --git a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs index 63a5a947e7ea..b1f988ab2071 100644 --- a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs +++ b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.cjs @@ -3,11 +3,6 @@ const path = require('path'); module.exports = { mode: 'development', entry: path.resolve(__dirname, './src/main.js'), - devServer: { - // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. - // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. - host: '127.0.0.1', - }, module: { rules: [ // rxjs 6 requires directory imports which are not support in ES modules. diff --git a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs index cd76b55970d3..289fff7bdb69 100644 --- a/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs +++ b/packages/angular_devkit/build_webpack/test/basic-app/webpack.config.mjs @@ -4,11 +4,6 @@ import { fileURLToPath } from 'url'; export default { mode: 'development', entry: resolve(fileURLToPath(import.meta.url), '../src/main.js'), - devServer: { - // Force an IPv4 address as with RBE there are currently resolution issues with IPv6 addresses. - // http://localhost is resolved to IPv6 address with vite and webpack but to IPv4 with node fetch. - host: '127.0.0.1', - }, module: { rules: [ // rxjs 6 requires directory imports which are not support in ES modules. From 588f3b85b1fc451edd8f23df77bca2992280e1e2 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:04:36 +0000 Subject: [PATCH 1932/2162] ci: force ipv4 resolutions first in Node.js This addresses an issue with RBE. --- packages/angular/build/BUILD.bazel | 4 ++++ packages/angular_devkit/build_angular/BUILD.bazel | 3 +++ packages/angular_devkit/build_webpack/BUILD.bazel | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/packages/angular/build/BUILD.bazel b/packages/angular/build/BUILD.bazel index d8f89be1d5cd..2f74117ff850 100644 --- a/packages/angular/build/BUILD.bazel +++ b/packages/angular/build/BUILD.bazel @@ -292,6 +292,10 @@ jasmine_test( name = "dev-server_integration_tests", size = "medium", data = [":dev-server_integration_test_lib"], + env = { + # Force IPv4 to resolve RBE resolution issues + "NODE_OPTIONS": "--dns-result-order=ipv4first", + }, flaky = True, shard_count = 10, ) diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 2a505e1fd8ca..9d145d03682c 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -422,6 +422,9 @@ LARGE_SPECS = { "//modules/testing/builder:node_modules/@angular-devkit/build-angular", ], env = { + # Force IPv4 to resolve RBE resolution issues + "NODE_OPTIONS": "--dns-result-order=ipv4first", + # TODO: Replace Puppeteer downloaded browsers with Bazel-managed browsers, # or standardize to avoid complex configuration like this! "PUPPETEER_DOWNLOAD_PATH": "../../../node_modules/puppeteer/downloads", diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index f66ea94f1919..3a104c243a66 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -90,6 +90,10 @@ jasmine_test( "//:node_modules/typescript", "//:node_modules/zone.js", ], + env = { + # Force IPv4 to resolve RBE resolution issues + "NODE_OPTIONS": "--dns-result-order=ipv4first", + }, ) genrule( From 0cc102e5011a3fc4b41dcaad16e616d67974e53d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:10:37 -0500 Subject: [PATCH 1933/2162] test: enhance `findFreePort` E2E utility reliability and clarity The `findFreePort` utility has been enhanced to: - Explicitly bind to `127.0.0.1` to prevent firewall prompts, IPv6 binding issues, and ensure consistent IPv4 usage. - Improve error handling by directly rejecting the promise if the server encounters an error during binding, rather than attempting to close a potentially non-listening server. --- tests/legacy-cli/e2e/utils/network.ts | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/tests/legacy-cli/e2e/utils/network.ts b/tests/legacy-cli/e2e/utils/network.ts index a869d9289ad2..48602f0000d2 100644 --- a/tests/legacy-cli/e2e/utils/network.ts +++ b/tests/legacy-cli/e2e/utils/network.ts @@ -1,13 +1,30 @@ -import { AddressInfo, createServer } from 'node:net'; +import { createServer } from 'node:net'; +/** + * Finds an available network port on the loopback interface (127.0.0.1). + * This is useful for tests that need to bind to a free port to avoid conflicts. + * Explicitly binds to IPv4 localhost to avoid firewall prompts, IPv6 binding issues, and ensure consistency. + * + * @returns A promise that resolves with an available port number. + */ export function findFreePort(): Promise { return new Promise((resolve, reject) => { const srv = createServer(); srv.once('listening', () => { - const port = (srv.address() as AddressInfo).port; + const address = srv.address(); + if (!address || typeof address === 'string') { + // Should not happen with TCP, but good for type safety + srv.close(() => reject(new Error('Failed to get server address'))); + return; + } + const port = address.port; srv.close((e) => (e ? reject(e) : resolve(port))); }); - srv.once('error', (e) => srv.close(() => reject(e))); - srv.listen(); + + // If an error happens (e.g. during bind), the server is not listening, + // so we should not call close(). + srv.once('error', (e) => reject(e)); + // Explicitly listen on IPv4 localhost to avoid firewall prompts, IPv6 binding issues, and ensure consistency. + srv.listen(0, '127.0.0.1'); }); } From 38b16ea0108c48835dc0d81863eca84f7b8cea6e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 5 Dec 2025 18:16:11 +0100 Subject: [PATCH 1934/2162] fix(@angular/build): ensure locale base href retains leading slash (#32040) When baseHref is provided, getLocaleBaseHref was incorrectly adding a leading slash from the joined path. This commit removes calls `stripLeadingSlash` to ensure the leading slash is removed when appropriate. --- .../build/src/builders/application/options.ts | 15 ++- .../src/builders/application/options_spec.ts | 106 ++++++++++++++++++ 2 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 packages/angular/build/src/builders/application/options_spec.ts diff --git a/packages/angular/build/src/builders/application/options.ts b/packages/angular/build/src/builders/application/options.ts index 25bd87253357..83b7ea428f35 100644 --- a/packages/angular/build/src/builders/application/options.ts +++ b/packages/angular/build/src/builders/application/options.ts @@ -25,7 +25,7 @@ import { loadPostcssConfiguration, } from '../../utils/postcss-configuration'; import { getProjectRootPaths, normalizeDirectoryPath } from '../../utils/project-metadata'; -import { addTrailingSlash, joinUrlParts } from '../../utils/url'; +import { addTrailingSlash, joinUrlParts, stripLeadingSlash } from '../../utils/url'; import { Schema as ApplicationBuilderOptions, ExperimentalPlatform, @@ -681,9 +681,16 @@ export function getLocaleBaseHref( const baseHrefSuffix = localeData.baseHref ?? localeData.subPath + '/'; - return baseHrefSuffix !== '' - ? addTrailingSlash(joinUrlParts(baseHref, baseHrefSuffix)) - : undefined; + let joinedBaseHref: string | undefined; + if (baseHrefSuffix !== '') { + joinedBaseHref = addTrailingSlash(joinUrlParts(baseHref, baseHrefSuffix)); + + if (baseHref && baseHref[0] !== '/') { + joinedBaseHref = stripLeadingSlash(joinedBaseHref); + } + } + + return joinedBaseHref; } /** diff --git a/packages/angular/build/src/builders/application/options_spec.ts b/packages/angular/build/src/builders/application/options_spec.ts new file mode 100644 index 000000000000..ac6320905019 --- /dev/null +++ b/packages/angular/build/src/builders/application/options_spec.ts @@ -0,0 +1,106 @@ +/** + * @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 { NormalizedApplicationBuildOptions, getLocaleBaseHref } from './options'; + +describe('getLocaleBaseHref', () => { + const baseI18nOptions: NormalizedApplicationBuildOptions['i18nOptions'] = { + inlineLocales: new Set(), + sourceLocale: 'en-US', + locales: {}, + flatOutput: false, + shouldInline: false, + hasDefinedSourceLocale: false, + }; + + it('should return undefined if flatOutput is true', () => { + const result = getLocaleBaseHref(undefined, { ...baseI18nOptions, flatOutput: true }, 'fr'); + expect(result).toBeUndefined(); + }); + + it('should return undefined if locale is not found', () => { + const result = getLocaleBaseHref(undefined, baseI18nOptions, 'fr'); + expect(result).toBeUndefined(); + }); + + it('should return baseHref from locale data if present', () => { + const i18nOptions = { + ...baseI18nOptions, + locales: { + fr: { + files: [], + translation: {}, + subPath: 'fr', + baseHref: '/fr/', + }, + }, + }; + const result = getLocaleBaseHref(undefined, i18nOptions, 'fr'); + expect(result).toBe('/fr/'); + }); + + it('should join baseHref and locale subPath if baseHref is provided', () => { + const i18nOptions = { + ...baseI18nOptions, + locales: { + fr: { + files: [], + translation: {}, + subPath: 'fr', + }, + }, + }; + const result = getLocaleBaseHref('/app/', i18nOptions, 'fr'); + expect(result).toBe('/app/fr/'); + }); + + it('should handle missing baseHref (undefined) correctly', () => { + const i18nOptions = { + ...baseI18nOptions, + locales: { + fr: { + files: [], + translation: {}, + subPath: 'fr', + }, + }, + }; + const result = getLocaleBaseHref(undefined, i18nOptions, 'fr'); + expect(result).toBe('/fr/'); + }); + + it('should handle empty baseHref correctly', () => { + const i18nOptions = { + ...baseI18nOptions, + locales: { + fr: { + files: [], + translation: {}, + subPath: 'fr', + }, + }, + }; + const result = getLocaleBaseHref('', i18nOptions, 'fr'); + expect(result).toBe('/fr/'); + }); + + it('should strip leading slash if baseHref does not start with slash', () => { + const i18nOptions = { + ...baseI18nOptions, + locales: { + fr: { + files: [], + translation: {}, + subPath: 'fr', + }, + }, + }; + const result = getLocaleBaseHref('app/', i18nOptions, 'fr'); + expect(result).toBe('app/fr/'); + }); +}); From 385165cbc6ff087e6bc1fb6f686d4929e83a075a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:12:28 -0500 Subject: [PATCH 1935/2162] fix(@angular/build): inject testing polyfills in Karma unit-test executor This commit ensures that testing polyfills (specifically `zone.js/testing`) are correctly injected when using the new unit-test builder with the Karma runner. Previously, only the application polyfills were included, which could lead to runtime errors in tests dependent on `zone.js/testing`. --- .../build/src/builders/unit-test/runners/karma/executor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts index 4b30ff0405bf..0cee5e11cd6f 100644 --- a/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts @@ -11,7 +11,7 @@ import fs from 'node:fs/promises'; import path from 'node:path'; import type { ApplicationBuilderInternalOptions } from '../../../application/options'; import type { KarmaBuilderOptions, KarmaBuilderTransformsOptions } from '../../../karma'; -import { NormalizedUnitTestBuilderOptions } from '../../options'; +import { type NormalizedUnitTestBuilderOptions, injectTestingPolyfills } from '../../options'; import type { TestExecutor } from '../api'; export class KarmaExecutor implements TestExecutor { @@ -70,7 +70,7 @@ export class KarmaExecutor implements TestExecutor { const karmaOptions: KarmaBuilderOptions = { karmaConfig, tsConfig: unitTestOptions.tsConfig ?? buildTargetOptions.tsConfig, - polyfills: buildTargetOptions.polyfills, + polyfills: injectTestingPolyfills(buildTargetOptions.polyfills), assets: buildTargetOptions.assets, scripts: buildTargetOptions.scripts, styles: buildTargetOptions.styles, From 985aa18d0b6cf728c498c0873793e131a4c416c1 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 5 Dec 2025 17:25:49 +0000 Subject: [PATCH 1936/2162] fix(@angular-devkit/build-angular): conditionally provide Zone.js change detection in the built-in test main file Prior to this change Zone.js change detection provider was never added. Closes #32047 --- .../build_angular/src/builders/karma/browser_builder.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 775a29fdf549..dc45da558527 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 @@ -149,15 +149,20 @@ async function initializeBrowser( return [karma, (await webpackConfigurationTransformer?.(config)) ?? config]; } -function getBuiltInMainFile(includeZoneProvider = false): string { +function getBuiltInMainFile(): string { const content = Buffer.from( ` import { provideZoneChangeDetection, ɵcompileNgModuleDefs as compileNgModuleDefs } from '@angular/core'; import { getTestBed } from '@angular/core/testing'; import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing'; + const providers = []; + if (typeof window.Zone !== 'undefined') { + providers.push(provideZoneChangeDetection()); + } + export class TestModule {} - compileNgModuleDefs(TestModule, {providers: [${includeZoneProvider ? 'provideZoneChangeDetection()' : ''}]}); + compileNgModuleDefs(TestModule, {providers}); // Initialize the Angular testing environment. getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), { From 78f90135ddb837567b380989abc1b54c567c3c4d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:03:04 -0500 Subject: [PATCH 1937/2162] test: remove RxJS from E2E process utility Replaces RxJS-based retry logic in `execAndWaitForOutputToMatch` with standard async/await for better readability and reduced dependency footprint. --- pnpm-lock.yaml | 3 --- tests/legacy-cli/e2e/utils/BUILD.bazel | 1 - tests/legacy-cli/e2e/utils/process.ts | 25 ++++++++++++++----------- tests/package.json | 1 - 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6250ae36c084..481f893a0420 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -891,9 +891,6 @@ importers: '@types/tar-stream': specifier: 3.1.4 version: 3.1.4 - rxjs: - specifier: 7.8.2 - version: 7.8.2 tar-stream: specifier: 3.1.7 version: 3.1.7 diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/legacy-cli/e2e/utils/BUILD.bazel index a565262640c4..093a4f832092 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/legacy-cli/e2e/utils/BUILD.bazel @@ -19,7 +19,6 @@ ts_project( "//:node_modules/verdaccio", "//:node_modules/verdaccio-auth-memory", "//tests:node_modules/@types/tar-stream", - "//tests:node_modules/rxjs", "//tests:node_modules/tar-stream", "//tests:node_modules/tree-kill", ], diff --git a/tests/legacy-cli/e2e/utils/process.ts b/tests/legacy-cli/e2e/utils/process.ts index ce4eb8291ab2..91216843086a 100644 --- a/tests/legacy-cli/e2e/utils/process.ts +++ b/tests/legacy-cli/e2e/utils/process.ts @@ -1,6 +1,5 @@ import { spawn, SpawnOptions } from 'node:child_process'; import * as child_process from 'node:child_process'; -import { concat, defer, EMPTY, from, lastValueFrom, catchError, repeat } from 'rxjs'; import { getGlobalVariable, getGlobalVariablesEnv } from './env'; import treeKill from 'tree-kill'; import { delimiter, join, resolve } from 'node:path'; @@ -310,7 +309,7 @@ export async function execAndCaptureError( } } -export function execAndWaitForOutputToMatch( +export async function execAndWaitForOutputToMatch( cmd: string, args: string[], match: RegExp, @@ -322,15 +321,19 @@ export function execAndWaitForOutputToMatch( // happened just before the build (e.g. `git clean`). // This seems to be due to host file system differences, see // https://nodejs.org/docs/latest/api/fs.html#fs_caveats - return lastValueFrom( - concat( - from(_exec({ waitForMatch: match, env }, cmd, args)), - defer(() => waitForAnyProcessOutputToMatch(match, 2500)).pipe( - repeat(20), - catchError(() => EMPTY), - ), - ), - ); + const maxRetries = 20; + let lastResult = await _exec({ waitForMatch: match, env }, cmd, args); + + for (let i = 0; i < maxRetries; i++) { + try { + lastResult = await waitForAnyProcessOutputToMatch(match, 2500); + } catch { + // If we timeout (no new match found), we assume the process is stable. + break; + } + } + + return lastResult; } else { return _exec({ waitForMatch: match, env }, cmd, args); } diff --git a/tests/package.json b/tests/package.json index 9a87c1c637b8..17660ff2192e 100644 --- a/tests/package.json +++ b/tests/package.json @@ -2,7 +2,6 @@ "devDependencies": { "@types/tar-stream": "3.1.4", "@angular-devkit/schematics": "workspace:*", - "rxjs": "7.8.2", "tar-stream": "3.1.7", "tree-kill": "1.2.2" } From 9a8ea6bfa1b723ab80fdc252ae548ec2f1827e49 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 5 Dec 2025 18:01:21 +0000 Subject: [PATCH 1938/2162] build: simplify format configuration and update ng-dev dependency The matchers option has been removed. --- .ng-dev/format.mjs | 4 +--- package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.ng-dev/format.mjs b/.ng-dev/format.mjs index 98115c626abd..c750eeea395c 100644 --- a/.ng-dev/format.mjs +++ b/.ng-dev/format.mjs @@ -4,8 +4,6 @@ * @type { import("@angular/ng-dev").FormatConfig } */ export const format = { - 'prettier': { - matchers: ['**/*.{mts,cts,ts,mjs,cjs,js,json,yml,yaml,md}'], - }, + 'prettier': true, 'buildifier': true, }; diff --git a/package.json b/package.json index 5f8fc75a47a2..f311e4a6ff70 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@angular/forms": "21.1.0-next.1", "@angular/localize": "21.1.0-next.1", "@angular/material": "21.1.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a6bcef88323031f5c157227705792019833c5c08", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9037bb2813539aab76b41abd85ea690e0d839e4a", "@angular/platform-browser": "21.1.0-next.1", "@angular/platform-server": "21.1.0-next.1", "@angular/router": "21.1.0-next.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 481f893a0420..0ebcfc3fec4c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.1 version: 21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a6bcef88323031f5c157227705792019833c5c08 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9037bb2813539aab76b41abd85ea690e0d839e4a + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.1 version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1051,9 +1051,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/a6bcef88323031f5c157227705792019833c5c08': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a6bcef88323031f5c157227705792019833c5c08} - version: 0.0.0-73051ae248ba64911a8e7e66536d8c99ba07ef2a + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a} + version: 0.0.0-a88cb5b721f1547ed5cbdcc5779cade25500f575 hasBin: true '@angular/platform-browser@21.1.0-next.1': @@ -2297,8 +2297,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.30.0': - resolution: {integrity: sha512-3MRcgczBFbUat1wIlZoLJ0vCCfXgm7Qxjh59cZi2X08RgWLtm9hKOspzp7TOg1TV2e26/MLxR2GR5yD5GmBV2w==} + '@google/genai@1.31.0': + resolution: {integrity: sha512-rK0RKXxNkbK35eDl+G651SxtxwHNEOogjyeZJUJe+Ed4yxu3xy5ufCiU0+QLT7xo4M9Spey8OAYfD8LPRlYBKw==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.20.1 @@ -9522,11 +9522,11 @@ 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/a6bcef88323031f5c157227705792019833c5c08(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.30.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.31.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.0.2(@types/node@24.10.1) '@inquirer/type': 4.0.2(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 @@ -10976,7 +10976,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.30.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.31.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) From 9d6891fb39d40c2ca83d1bd30558e346bb9f9b4f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 5 Dec 2025 19:30:20 -0500 Subject: [PATCH 1939/2162] refactor(@angular/cli): split update command into smaller modules This commit refactors the `ng update` command by extracting functions from `packages/angular/cli/src/commands/update/cli.ts` into more focused utility modules: - `packages/angular/cli/src/commands/update/utilities/git.ts`: Encapsulates Git-related operations such as checking for a clean repository, creating commits, and retrieving commit hashes. - `packages/angular/cli/src/commands/update/utilities/cli-version.ts`: Handles CLI version compatibility checks, temporary CLI installations, and package manager force options. - `packages/angular/cli/src/commands/update/utilities/constants.ts`: Stores shared constants like `ANGULAR_PACKAGES_REGEXP`. --- .../angular/cli/src/commands/update/cli.ts | 261 +++--------------- .../commands/update/utilities/cli-version.ts | 205 ++++++++++++++ .../commands/update/utilities/constants.ts | 13 + .../cli/src/commands/update/utilities/git.ts | 86 ++++++ 4 files changed, 337 insertions(+), 228 deletions(-) create mode 100644 packages/angular/cli/src/commands/update/utilities/cli-version.ts create mode 100644 packages/angular/cli/src/commands/update/utilities/constants.ts create mode 100644 packages/angular/cli/src/commands/update/utilities/git.ts diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index fdf8e850e026..50442ade0d35 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -13,15 +13,13 @@ import { NodeWorkflow, } from '@angular-devkit/schematics/tools'; import { Listr } from 'listr2'; -import { SpawnSyncReturns, execSync, spawnSync } from 'node:child_process'; +import { SpawnSyncReturns } from 'node:child_process'; import { existsSync, promises as fs } from 'node:fs'; import { createRequire } from 'node:module'; import * as path from 'node:path'; -import { join, resolve } from 'node:path'; import npa from 'npm-package-arg'; import * as semver from 'semver'; import { Argv } from 'yargs'; -import { PackageManager } from '../../../lib/config/workspace-schema'; import { CommandModule, CommandModuleError, @@ -37,7 +35,6 @@ import { writeErrorToLogFile } from '../../utilities/log-file'; import { PackageIdentifier, PackageManifest, - fetchPackageManifest, fetchPackageMetadata, } from '../../utilities/package-metadata'; import { @@ -48,7 +45,20 @@ import { } from '../../utilities/package-tree'; import { askChoices } from '../../utilities/prompt'; import { isTTY } from '../../utilities/tty'; -import { VERSION } from '../../utilities/version'; +import { + checkCLIVersion, + coerceVersionNumber, + runTempBinary, + shouldForcePackageManager, +} from './utilities/cli-version'; +import { ANGULAR_PACKAGES_REGEXP } from './utilities/constants'; +import { + checkCleanGit, + createCommit, + findCurrentGitSha, + getShortHash, + hasChangesToCommit, +} from './utilities/git'; interface UpdateCommandArgs { packages?: string[]; @@ -63,8 +73,10 @@ interface UpdateCommandArgs { 'create-commits': boolean; } -interface MigrationSchematicDescription - extends SchematicDescription { +interface MigrationSchematicDescription extends SchematicDescription< + FileSystemCollectionDescription, + FileSystemSchematicDescription +> { version?: string; optional?: boolean; recommended?: boolean; @@ -77,7 +89,6 @@ interface MigrationSchematicDescriptionWithVersion extends MigrationSchematicDes class CommandError extends Error {} -const ANGULAR_PACKAGES_REGEXP = /^@(?:angular|nguniversal)\//; const UPDATE_SCHEMATIC_COLLECTION = path.join(__dirname, 'schematic/collection.json'); export default class UpdateCommandModule extends CommandModule { @@ -87,7 +98,7 @@ export default class UpdateCommandModule extends CommandModule { return localYargs @@ -161,7 +172,7 @@ export default class UpdateCommandModule extends CommandModule favor @schematics/update from this package // Otherwise, use packages from the active workspace (migrations) resolvePaths: this.resolvePaths, @@ -771,7 +788,9 @@ export default class UpdateCommandModule extends CommandModule { - const { version } = await fetchPackageManifest( - `@angular/cli@${this.getCLIUpdateRunnerVersion(packagesToUpdate, next)}`, - this.context.logger, - { - verbose, - usingYarn: this.context.packageManager.name === PackageManager.Yarn, - }, - ); - - return VERSION.full === version ? null : version; - } - - private getCLIUpdateRunnerVersion( - packagesToUpdate: string[] | undefined, - next: boolean, - ): string | number { - if (next) { - return 'next'; - } - - const updatingAngularPackage = packagesToUpdate?.find((r) => ANGULAR_PACKAGES_REGEXP.test(r)); - if (updatingAngularPackage) { - // If we are updating any Angular package we can update the CLI to the target version because - // migrations for @angular/core@13 can be executed using Angular/cli@13. - // This is same behaviour as `npx @angular/cli@13 update @angular/core@13`. - - // `@angular/cli@13` -> ['', 'angular/cli', '13'] - // `@angular/cli` -> ['', 'angular/cli'] - const tempVersion = coerceVersionNumber(updatingAngularPackage.split('@')[2]); - - return semver.parse(tempVersion)?.major ?? 'latest'; - } - - // When not updating an Angular package we cannot determine which schematic runtime the migration should to be executed in. - // Typically, we can assume that the `@angular/cli` was updated previously. - // Example: Angular official packages are typically updated prior to NGRX etc... - // Therefore, we only update to the latest patch version of the installed major version of the Angular CLI. - - // This is important because we might end up in a scenario where locally Angular v12 is installed, updating NGRX from 11 to 12. - // We end up using Angular ClI v13 to run the migrations if we run the migrations using the CLI installed major version + 1 logic. - return VERSION.major; - } - - private async runTempBinary(packageName: string, args: string[] = []): Promise { - const { success, tempNodeModules } = await this.context.packageManager.installTemp(packageName); - if (!success) { - return 1; - } - - // Remove version/tag etc... from package name - // Ex: @angular/cli@latest -> @angular/cli - const packageNameNoVersion = packageName.substring(0, packageName.lastIndexOf('@')); - const pkgLocation = join(tempNodeModules, packageNameNoVersion); - const packageJsonPath = join(pkgLocation, 'package.json'); - - // Get a binary location for this package - let binPath: string | undefined; - if (existsSync(packageJsonPath)) { - const content = await fs.readFile(packageJsonPath, 'utf-8'); - if (content) { - const { bin = {} } = JSON.parse(content) as { bin: Record }; - const binKeys = Object.keys(bin); - - if (binKeys.length) { - binPath = resolve(pkgLocation, bin[binKeys[0]]); - } - } - } - - if (!binPath) { - throw new Error(`Cannot locate bin for temporary package: ${packageNameNoVersion}.`); - } - - const { status, error } = spawnSync(process.execPath, [binPath, ...args], { - stdio: 'inherit', - env: { - ...process.env, - NG_DISABLE_VERSION_CHECK: 'true', - NG_CLI_ANALYTICS: 'false', - }, - }); - - if (status === null && error) { - throw error; - } - - return status ?? 0; - } - - private packageManagerForce(verbose: boolean): boolean { - // npm 7+ can fail due to it incorrectly resolving peer dependencies that have valid SemVer - // ranges during an update. Update will set correct versions of dependencies within the - // package.json file. The force option is set to workaround these errors. - // Example error: - // npm ERR! Conflicting peer dependency: @angular/compiler-cli@14.0.0-rc.0 - // npm ERR! node_modules/@angular/compiler-cli - // npm ERR! peer @angular/compiler-cli@"^14.0.0 || ^14.0.0-rc" from @angular-devkit/build-angular@14.0.0-rc.0 - // npm ERR! node_modules/@angular-devkit/build-angular - // npm ERR! dev @angular-devkit/build-angular@"~14.0.0-rc.0" from the root project - if ( - this.context.packageManager.name === PackageManager.Npm && - this.context.packageManager.version && - semver.gte(this.context.packageManager.version, '7.0.0') - ) { - if (verbose) { - this.context.logger.info( - 'NPM 7+ detected -- enabling force option for package installation', - ); - } - - return true; - } - - return false; - } - private async getOptionalMigrationsToRun( optionalMigrations: MigrationSchematicDescription[], packageName: string, @@ -1161,68 +1028,6 @@ export default class UpdateCommandModule extends CommandModule { + const { version } = await fetchPackageManifest( + `@angular/cli@${getCLIUpdateRunnerVersion(packagesToUpdate, next)}`, + logger, + { + verbose, + usingYarn: packageManager.name === PackageManager.Yarn, + }, + ); + + return VERSION.full === version ? null : version; +} + +/** + * Determines the version of the CLI to use for the update process. + * @param packagesToUpdate The list of packages being updated. + * @param next Whether to use the next version. + * @returns The version or tag to use for the CLI update runner. + */ +export function getCLIUpdateRunnerVersion( + packagesToUpdate: string[] | undefined, + next: boolean, +): string | number { + if (next) { + return 'next'; + } + + const updatingAngularPackage = packagesToUpdate?.find((r) => ANGULAR_PACKAGES_REGEXP.test(r)); + if (updatingAngularPackage) { + // If we are updating any Angular package we can update the CLI to the target version because + // migrations for @angular/core@13 can be executed using Angular/cli@13. + // This is same behaviour as `npx @angular/cli@13 update @angular/core@13`. + + // `@angular/cli@13` -> ['', 'angular/cli', '13'] + // `@angular/cli` -> ['', 'angular/cli'] + const tempVersion = coerceVersionNumber(updatingAngularPackage.split('@')[2]); + + return semver.parse(tempVersion)?.major ?? 'latest'; + } + + // When not updating an Angular package we cannot determine which schematic runtime the migration should to be executed in. + // Typically, we can assume that the `@angular/cli` was updated previously. + // Example: Angular official packages are typically updated prior to NGRX etc... + // Therefore, we only update to the latest patch version of the installed major version of the Angular CLI. + + // This is important because we might end up in a scenario where locally Angular v12 is installed, updating NGRX from 11 to 12. + // We end up using Angular ClI v13 to run the migrations if we run the migrations using the CLI installed major version + 1 logic. + return VERSION.major; +} + +/** + * Runs a binary from a temporary package installation. + * @param packageName The name of the package to install and run. + * @param packageManager The package manager instance. + * @param args The arguments to pass to the binary. + * @returns The exit code of the binary. + */ +export async function runTempBinary( + packageName: string, + packageManager: PackageManagerUtils, + args: string[] = [], +): Promise { + const { success, tempNodeModules } = await packageManager.installTemp(packageName); + if (!success) { + return 1; + } + + // Remove version/tag etc... from package name + // Ex: @angular/cli@latest -> @angular/cli + const packageNameNoVersion = packageName.substring(0, packageName.lastIndexOf('@')); + const pkgLocation = join(tempNodeModules, packageNameNoVersion); + const packageJsonPath = join(pkgLocation, 'package.json'); + + // Get a binary location for this package + let binPath: string | undefined; + if (existsSync(packageJsonPath)) { + const content = await fs.readFile(packageJsonPath, 'utf-8'); + if (content) { + const { bin = {} } = JSON.parse(content) as { bin: Record }; + const binKeys = Object.keys(bin); + + if (binKeys.length) { + binPath = resolve(pkgLocation, bin[binKeys[0]]); + } + } + } + + if (!binPath) { + throw new Error(`Cannot locate bin for temporary package: ${packageNameNoVersion}.`); + } + + const { status, error } = spawnSync(process.execPath, [binPath, ...args], { + stdio: 'inherit', + env: { + ...process.env, + NG_DISABLE_VERSION_CHECK: 'true', + NG_CLI_ANALYTICS: 'false', + }, + }); + + if (status === null && error) { + throw error; + } + + return status ?? 0; +} + +/** + * Determines whether to force the package manager to ignore peer dependency warnings. + * @param packageManager The package manager instance. + * @param logger The logger instance. + * @param verbose Whether to log verbose output. + * @returns True if the package manager should be forced, false otherwise. + */ +export function shouldForcePackageManager( + packageManager: PackageManagerUtils, + logger: logging.LoggerApi, + verbose: boolean, +): boolean { + // npm 7+ can fail due to it incorrectly resolving peer dependencies that have valid SemVer + // ranges during an update. Update will set correct versions of dependencies within the + // package.json file. The force option is set to workaround these errors. + // Example error: + // npm ERR! Conflicting peer dependency: @angular/compiler-cli@14.0.0-rc.0 + // npm ERR! node_modules/@angular/compiler-cli + // npm ERR! peer @angular/compiler-cli@"^14.0.0 || ^14.0.0-rc" from @angular-devkit/build-angular@14.0.0-rc.0 + // npm ERR! node_modules/@angular-devkit/build-angular + // npm ERR! dev @angular-devkit/build-angular@"~14.0.0-rc.0" from the root project + if ( + packageManager.name === PackageManager.Npm && + packageManager.version && + semver.gte(packageManager.version, '7.0.0') + ) { + if (verbose) { + logger.info('NPM 7+ detected -- enabling force option for package installation'); + } + + return true; + } + + return false; +} diff --git a/packages/angular/cli/src/commands/update/utilities/constants.ts b/packages/angular/cli/src/commands/update/utilities/constants.ts new file mode 100644 index 000000000000..dfeef5ff96d1 --- /dev/null +++ b/packages/angular/cli/src/commands/update/utilities/constants.ts @@ -0,0 +1,13 @@ +/** + * @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 + */ + +/** + * Regular expression to match Angular packages. + * Checks for packages starting with `@angular/` or `@nguniversal/`. + */ +export const ANGULAR_PACKAGES_REGEXP = /^@(?:angular|nguniversal)\//; diff --git a/packages/angular/cli/src/commands/update/utilities/git.ts b/packages/angular/cli/src/commands/update/utilities/git.ts new file mode 100644 index 000000000000..631e5b9bb99e --- /dev/null +++ b/packages/angular/cli/src/commands/update/utilities/git.ts @@ -0,0 +1,86 @@ +/** + * @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 { execSync } from 'node:child_process'; +import * as path from 'node:path'; + +/** + * Checks if the git repository is clean. + * @param root The root directory of the project. + * @returns True if the repository is clean, false otherwise. + */ +export function checkCleanGit(root: string): boolean { + try { + const topLevel = execSync('git rev-parse --show-toplevel', { + encoding: 'utf8', + stdio: 'pipe', + }); + const result = execSync('git status --porcelain', { encoding: 'utf8', stdio: 'pipe' }); + if (result.trim().length === 0) { + return true; + } + + // Only files inside the workspace root are relevant + for (const entry of result.split('\n')) { + const relativeEntry = path.relative( + path.resolve(root), + path.resolve(topLevel.trim(), entry.slice(3).trim()), + ); + + if (!relativeEntry.startsWith('..') && !path.isAbsolute(relativeEntry)) { + return false; + } + } + } catch {} // eslint-disable-line no-empty + + return true; +} + +/** + * Checks if the working directory has pending changes to commit. + * @returns Whether or not the working directory has Git changes to commit. + */ +export function hasChangesToCommit(): boolean { + // List all modified files not covered by .gitignore. + // If any files are returned, then there must be something to commit. + + return execSync('git ls-files -m -d -o --exclude-standard').toString() !== ''; +} + +/** + * Stages all changes in the Git working tree and creates a new commit. + * @param message The commit message to use. + */ +export function createCommit(message: string) { + // Stage entire working tree for commit. + execSync('git add -A', { encoding: 'utf8', stdio: 'pipe' }); + + // Commit with the message passed via stdin to avoid bash escaping issues. + execSync('git commit --no-verify -F -', { encoding: 'utf8', stdio: 'pipe', input: message }); +} + +/** + * Finds the Git SHA hash of the HEAD commit. + * @returns The Git SHA hash of the HEAD commit. Returns null if unable to retrieve the hash. + */ +export function findCurrentGitSha(): string | null { + try { + return execSync('git rev-parse HEAD', { encoding: 'utf8', stdio: 'pipe' }).trim(); + } catch { + return null; + } +} + +/** + * Gets the short hash of a commit. + * @param commitHash The full commit hash. + * @returns The short hash (first 9 characters). + */ +export function getShortHash(commitHash: string): string { + return commitHash.slice(0, 9); +} From 6d212206fdfc94e661a25bed1287c0bc15219b63 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 8 Dec 2025 08:39:49 +0000 Subject: [PATCH 1940/2162] fix(@angular/build): support NODE_EXTRA_CA_CERTS in SSR SSL plugin This commit adds support for the 'NODE_EXTRA_CA_CERTS' environment variable when configuring the global dispatcher for the SSR SSL plugin. This ensures that custom CA certificates specified via this environment variable are correctly trusted. Closes #31983 --- .../src/tools/vite/plugins/ssr-ssl-plugin.ts | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts b/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts index 0cde7f89ef0a..80ddf56e739a 100644 --- a/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/ssr-ssl-plugin.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import { rootCertificates } from 'node:tls'; +import { readFile } from 'node:fs/promises'; +import { getCACertificates, rootCertificates, setDefaultCACertificates } from 'node:tls'; import type { Plugin } from 'vite'; export function createAngularServerSideSSLPlugin(): Plugin { @@ -35,17 +36,30 @@ export function createAngularServerSideSSLPlugin(): Plugin { httpServer.ALPNProtocols = ['http/1.1']; } - // TODO(alanagius): Replace `undici` with `tls.setDefaultCACertificates` once we only support Node.js 22.18.0+ and 24.5.0+. - // See: https://nodejs.org/api/tls.html#tlssetdefaultcacertificatescerts + const { cert } = https; + const additionalCerts = Array.isArray(cert) ? cert : [cert]; + + // TODO(alanagius): Remove the `if` check once we only support Node.js 22.18.0+ and 24.5.0+. + if (getCACertificates && setDefaultCACertificates) { + const currentCerts = getCACertificates('default'); + setDefaultCACertificates([...currentCerts, ...additionalCerts]); + + return; + } + + // TODO(alanagius): Remove the below and `undici` dependency once we only support Node.js 22.18.0+ and 24.5.0+. const { getGlobalDispatcher, setGlobalDispatcher, Agent } = await import('undici'); const originalDispatcher = getGlobalDispatcher(); - const { cert } = https; - const certificates = Array.isArray(cert) ? cert : [cert]; + const ca = [...rootCertificates, ...additionalCerts]; + const extraNodeCerts = process.env['NODE_EXTRA_CA_CERTS']; + if (extraNodeCerts) { + ca.push(await readFile(extraNodeCerts)); + } setGlobalDispatcher( new Agent({ connect: { - ca: [...rootCertificates, ...certificates], + ca, }, }), ); From cca0642fc99cfb2ae7f408f774bb32319431aeb6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 8 Dec 2025 12:17:41 -0500 Subject: [PATCH 1941/2162] build: remove unneeded root `listr2` dependency The `listr2` dependency is a package-level dependency (`@angular/cli`) and is not used at the root level of the repo. --- package.json | 1 - packages/angular/cli/BUILD.bazel | 2 +- pnpm-lock.yaml | 3 --- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/package.json b/package.json index f311e4a6ff70..20ef7af03112 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,6 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "karma-source-map-support": "1.4.0", - "listr2": "9.0.5", "lodash": "^4.17.21", "magic-string": "0.30.21", "prettier": "^3.0.0", diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index d53d8d7078da..abed616cd810 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -68,6 +68,7 @@ ts_project( ":node_modules/algoliasearch", ":node_modules/ini", ":node_modules/jsonc-parser", + ":node_modules/listr2", ":node_modules/npm-package-arg", ":node_modules/pacote", ":node_modules/parse5-html-rewriting-stream", @@ -83,7 +84,6 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/@types/yargs", "//:node_modules/@types/yarnpkg__lockfile", - "//:node_modules/listr2", "//:node_modules/semver", "//:node_modules/typescript", ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ebcfc3fec4c..2fb50be9c0d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -241,9 +241,6 @@ importers: karma-source-map-support: specifier: 1.4.0 version: 1.4.0 - listr2: - specifier: 9.0.5 - version: 9.0.5 lodash: specifier: ^4.17.21 version: 4.17.21 From 427c3a93329d826f4b4a7d879ca8e2af275ff03b Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Thu, 13 Nov 2025 13:59:45 -0800 Subject: [PATCH 1942/2162] refactor(@angular/cli): rename devserver MCP tools to be more consistent 1. Rename all devserver tools to have `devserver` as a prefix. 2. Make "devserver" be considered as a single word throughout. 3. Add support for grouping experimental tools and added "devserver" as a group, making it easy to enable all the devserver tools together. --- packages/angular/cli/src/commands/mcp/cli.ts | 7 ++- .../mcp/{dev-server.ts => devserver.ts} | 22 ++++---- .../cli/src/commands/mcp/mcp-server.ts | 30 ++++++++--- .../cli/src/commands/mcp/tools/build.ts | 2 +- ...{start-devserver.ts => devserver-start.ts} | 54 +++++++++---------- .../{stop-devserver.ts => devserver-stop.ts} | 32 +++++------ ...r-build.ts => devserver-wait-for-build.ts} | 44 +++++++-------- .../{serve_spec.ts => devserver_spec.ts} | 22 ++++---- .../src/commands/mcp/tools/tool-registry.ts | 6 ++- 9 files changed, 120 insertions(+), 99 deletions(-) rename packages/angular/cli/src/commands/mcp/{dev-server.ts => devserver.ts} (86%) rename packages/angular/cli/src/commands/mcp/tools/devserver/{start-devserver.ts => devserver-start.ts} (63%) rename packages/angular/cli/src/commands/mcp/tools/devserver/{stop-devserver.ts => devserver-stop.ts} (69%) rename packages/angular/cli/src/commands/mcp/tools/devserver/{wait-for-devserver-build.ts => devserver-wait-for-build.ts} (67%) rename packages/angular/cli/src/commands/mcp/tools/devserver/{serve_spec.ts => devserver_spec.ts} (90%) diff --git a/packages/angular/cli/src/commands/mcp/cli.ts b/packages/angular/cli/src/commands/mcp/cli.ts index 0076752ac6f3..091a9064ca7f 100644 --- a/packages/angular/cli/src/commands/mcp/cli.ts +++ b/packages/angular/cli/src/commands/mcp/cli.ts @@ -13,7 +13,7 @@ import { type CommandModuleImplementation, } from '../../command-builder/command-module'; import { isTTY } from '../../utilities/tty'; -import { EXPERIMENTAL_TOOLS, createMcpServer } from './mcp-server'; +import { EXPERIMENTAL_TOOLS, EXPERIMENTAL_TOOL_GROUPS, createMcpServer } from './mcp-server'; const INTERACTIVE_MESSAGE = ` To start using the Angular CLI MCP Server, add this configuration to your host: @@ -54,7 +54,10 @@ export default class McpCommandModule extends CommandModule implements CommandMo alias: 'E', array: true, describe: 'Enable an experimental tool.', - choices: EXPERIMENTAL_TOOLS.map(({ name }) => name), + choices: [ + ...EXPERIMENTAL_TOOLS.map(({ name }) => name), + ...Object.keys(EXPERIMENTAL_TOOL_GROUPS), + ], hidden: true, }); } diff --git a/packages/angular/cli/src/commands/mcp/dev-server.ts b/packages/angular/cli/src/commands/mcp/devserver.ts similarity index 86% rename from packages/angular/cli/src/commands/mcp/dev-server.ts rename to packages/angular/cli/src/commands/mcp/devserver.ts index e6da33aa7bd3..cf8378294edd 100644 --- a/packages/angular/cli/src/commands/mcp/dev-server.ts +++ b/packages/angular/cli/src/commands/mcp/devserver.ts @@ -30,7 +30,7 @@ export type BuildStatus = 'success' | 'failure' | 'unknown'; /** * An Angular development server managed by the MCP server. */ -export interface DevServer { +export interface Devserver { /** * Launches the dev server and returns immediately. * @@ -64,19 +64,19 @@ export interface DevServer { port: number; } -export function devServerKey(project?: string) { +export function devserverKey(project?: string) { return project ?? ''; } /** * A local Angular development server managed by the MCP server. */ -export class LocalDevServer implements DevServer { +export class LocalDevserver implements Devserver { readonly host: Host; readonly port: number; readonly project?: string; - private devServerProcess: ChildProcess | null = null; + private devserverProcess: ChildProcess | null = null; private serverLogs: string[] = []; private buildInProgress = false; private latestBuildLogStartIndex?: number = undefined; @@ -89,7 +89,7 @@ export class LocalDevServer implements DevServer { } start() { - if (this.devServerProcess) { + if (this.devserverProcess) { throw Error('Dev server already started.'); } @@ -100,14 +100,14 @@ export class LocalDevServer implements DevServer { args.push(`--port=${this.port}`); - this.devServerProcess = this.host.spawn('ng', args, { stdio: 'pipe' }); - this.devServerProcess.stdout?.on('data', (data) => { + this.devserverProcess = this.host.spawn('ng', args, { stdio: 'pipe' }); + this.devserverProcess.stdout?.on('data', (data) => { this.addLog(data.toString()); }); - this.devServerProcess.stderr?.on('data', (data) => { + this.devserverProcess.stderr?.on('data', (data) => { this.addLog(data.toString()); }); - this.devServerProcess.stderr?.on('close', () => { + this.devserverProcess.stderr?.on('close', () => { this.stop(); }); this.buildInProgress = true; @@ -127,8 +127,8 @@ export class LocalDevServer implements DevServer { } stop() { - this.devServerProcess?.kill(); - this.devServerProcess = null; + this.devserverProcess?.kill(); + this.devserverProcess = null; } getServerLogs(): string[] { diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index cdea2a232b3c..512398876513 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -10,15 +10,15 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { join } from 'node:path'; import type { AngularWorkspace } from '../../utilities/config'; import { VERSION } from '../../utilities/version'; -import type { DevServer } from './dev-server'; +import type { Devserver } from './devserver'; import { LocalWorkspaceHost } from './host'; import { registerInstructionsResource } from './resources/instructions'; import { AI_TUTOR_TOOL } from './tools/ai-tutor'; import { BEST_PRACTICES_TOOL } from './tools/best-practices'; import { BUILD_TOOL } from './tools/build'; -import { START_DEVSERVER_TOOL } from './tools/devserver/start-devserver'; -import { STOP_DEVSERVER_TOOL } from './tools/devserver/stop-devserver'; -import { WAIT_FOR_DEVSERVER_BUILD_TOOL } from './tools/devserver/wait-for-devserver-build'; +import { DEVSERVER_START_TOOL } from './tools/devserver/devserver-start'; +import { DEVSERVER_STOP_TOOL } from './tools/devserver/devserver-stop'; +import { DEVSERVER_WAIT_FOR_BUILD_TOOL } from './tools/devserver/devserver-wait-for-build'; import { DOC_SEARCH_TOOL } from './tools/doc-search'; import { FIND_EXAMPLE_TOOL } from './tools/examples/index'; import { MODERNIZE_TOOL } from './tools/modernize'; @@ -29,7 +29,16 @@ import { type AnyMcpToolDeclaration, registerTools } from './tools/tool-registry /** * Tools to manage devservers. Should be bundled together, then added to experimental or stable as a group. */ -const SERVE_TOOLS = [START_DEVSERVER_TOOL, STOP_DEVSERVER_TOOL, WAIT_FOR_DEVSERVER_BUILD_TOOL]; +const DEVSERVER_TOOLS = [DEVSERVER_START_TOOL, DEVSERVER_STOP_TOOL, DEVSERVER_WAIT_FOR_BUILD_TOOL]; + +/** + * Experimental tools that are grouped together under a single name. + * + * Used for enabling them as a group. + */ +export const EXPERIMENTAL_TOOL_GROUPS = { + 'devserver': DEVSERVER_TOOLS, +}; /** * The set of tools that are enabled by default for the MCP server. @@ -48,7 +57,7 @@ const STABLE_TOOLS = [ * The set of tools that are available but not enabled by default. * These tools are considered experimental and may have limitations. */ -export const EXPERIMENTAL_TOOLS = [BUILD_TOOL, MODERNIZE_TOOL, ...SERVE_TOOLS] as const; +export const EXPERIMENTAL_TOOLS = [BUILD_TOOL, MODERNIZE_TOOL, ...DEVSERVER_TOOLS] as const; export async function createMcpServer( options: { @@ -115,7 +124,7 @@ equivalent actions. workspace: options.workspace, logger, exampleDatabasePath: join(__dirname, '../../../lib/code-examples.db'), - devServers: new Map(), + devservers: new Map(), host: LocalWorkspaceHost, }, toolDeclarations, @@ -148,6 +157,13 @@ export function assembleToolDeclarations( if (process.env['NG_MCP_CODE_EXAMPLES'] === '1') { enabledExperimentalTools.add('find_examples'); } + for (const [toolGroupName, toolGroup] of Object.entries(EXPERIMENTAL_TOOL_GROUPS)) { + if (enabledExperimentalTools.delete(toolGroupName)) { + for (const tool of toolGroup) { + enabledExperimentalTools.add(tool.name); + } + } + } if (enabledExperimentalTools.size > 0) { const experimentalToolsMap = new Map(experimentalDeclarations.map((tool) => [tool.name, tool])); diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index f2618f8e6309..1daea2c83677 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -97,7 +97,7 @@ Perform a one-off, non-watched build using "ng build". Use this tool whenever th * This tool runs "ng build" so it expects to run within an Angular workspace. -* If you want a watched build which updates as files are changed, use "start_devserver" instead, which also serves the app. +* If you want a watched build which updates as files are changed, use "devserver_start" instead, which also serves the app. * You can provide a project instead of building the root one. The "list_projects" MCP tool could be used to obtain the list of projects. * This tool defaults to a development environment while a regular "ng build" defaults to a production environment. An unexpected build failure might suggest the project is not configured for the requested environment. diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts similarity index 63% rename from packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts rename to packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts index dbbc4dbd3cfd..08606c89da2b 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/start-devserver.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts @@ -7,12 +7,12 @@ */ import { z } from 'zod'; -import { LocalDevServer, devServerKey } from '../../dev-server'; +import { LocalDevserver, devserverKey } from '../../devserver'; import { type Host, LocalWorkspaceHost } from '../../host'; import { createStructuredContentOutput } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; -const startDevServerToolInputSchema = z.object({ +const devserverStartToolInputSchema = z.object({ project: z .string() .optional() @@ -21,9 +21,9 @@ const startDevServerToolInputSchema = z.object({ ), }); -export type StartDevserverToolInput = z.infer; +export type DevserverStartToolInput = z.infer; -const startDevServerToolOutputSchema = z.object({ +const devserverStartToolOutputSchema = z.object({ message: z.string().describe('A message indicating the result of the operation.'), address: z .string() @@ -33,33 +33,33 @@ const startDevServerToolOutputSchema = z.object({ ), }); -export type StartDevserverToolOutput = z.infer; +export type DevserverStartToolOutput = z.infer; function localhostAddress(port: number) { return `http://localhost:${port}/`; } -export async function startDevServer( - input: StartDevserverToolInput, +export async function startDevserver( + input: DevserverStartToolInput, context: McpToolContext, host: Host, ) { - const projectKey = devServerKey(input.project); + const projectKey = devserverKey(input.project); - let devServer = context.devServers.get(projectKey); - if (devServer) { + let devserver = context.devservers.get(projectKey); + if (devserver) { return createStructuredContentOutput({ message: `Development server for project '${projectKey}' is already running.`, - address: localhostAddress(devServer.port), + address: localhostAddress(devserver.port), }); } const port = await host.getAvailablePort(); - devServer = new LocalDevServer({ host, project: input.project, port }); - devServer.start(); + devserver = new LocalDevserver({ host, project: input.project, port }); + devserver.start(); - context.devServers.set(projectKey, devServer); + context.devservers.set(projectKey, devserver); return createStructuredContentOutput({ message: `Development server for project '${projectKey}' started and watching for workspace changes.`, @@ -67,37 +67,37 @@ export async function startDevServer( }); } -export const START_DEVSERVER_TOOL: McpToolDeclaration< - typeof startDevServerToolInputSchema.shape, - typeof startDevServerToolOutputSchema.shape +export const DEVSERVER_START_TOOL: McpToolDeclaration< + typeof devserverStartToolInputSchema.shape, + typeof devserverStartToolOutputSchema.shape > = declareTool({ - name: 'start_devserver', + name: 'devserver_start', title: 'Start Development Server', description: ` -Starts the Angular development server ("ng serve") as a background process. Follow this up with "wait_for_devserver_build" to wait until +Starts the Angular development server ("ng serve") as a background process. Follow this up with "devserver_wait_for_build" to wait until the first build completes. * **Starting the Server:** Use this tool to begin serving the application. The tool will return immediately while the server runs in the background. -* **Get Initial Build Logs:** Once a dev server has started, use the "wait_for_devserver_build" tool to ensure it's alive. If there are any - build errors, "wait_for_devserver_build" would provide them back and you can give them to the user or rely on them to propose a fix. -* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "stop_devserver" wasn't called), after every time you make a - change to the workspace, re-run "wait_for_devserver_build" to see whether the change was successfully built and wait for the devserver to +* **Get Initial Build Logs:** Once a dev server has started, use the "devserver_wait_for_build" tool to ensure it's alive. If there are any + build errors, "devserver_wait_for_build" would provide them back and you can give them to the user or rely on them to propose a fix. +* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver_stop" wasn't called), after every time you make a + change to the workspace, re-run "devserver_wait_for_build" to see whether the change was successfully built and wait for the devserver to be updated. * This tool manages development servers by itself. It maintains at most a single dev server instance for each project in the monorepo. * This is an asynchronous operation. Subsequent commands can be ran while the server is active. -* Use 'stop_devserver' to gracefully shut down the server and access the full log output. +* Use 'devserver_stop' to gracefully shut down the server and access the full log output. `, isReadOnly: true, isLocalOnly: true, - inputSchema: startDevServerToolInputSchema.shape, - outputSchema: startDevServerToolOutputSchema.shape, + inputSchema: devserverStartToolInputSchema.shape, + outputSchema: devserverStartToolOutputSchema.shape, factory: (context) => (input) => { - return startDevServer(input, context, LocalWorkspaceHost); + return startDevserver(input, context, LocalWorkspaceHost); }, }); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts similarity index 69% rename from packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts rename to packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts index ed33ff3f0f7d..987a3da7c080 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/stop-devserver.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts @@ -7,11 +7,11 @@ */ import { z } from 'zod'; -import { devServerKey } from '../../dev-server'; +import { devserverKey } from '../../devserver'; import { createStructuredContentOutput } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; -const stopDevserverToolInputSchema = z.object({ +const devserverStopToolInputSchema = z.object({ project: z .string() .optional() @@ -20,18 +20,18 @@ const stopDevserverToolInputSchema = z.object({ ), }); -export type StopDevserverToolInput = z.infer; +export type DevserverStopToolInput = z.infer; -const stopDevserverToolOutputSchema = z.object({ +const devserverStopToolOutputSchema = z.object({ message: z.string().describe('A message indicating the result of the operation.'), logs: z.array(z.string()).optional().describe('The full logs from the dev server.'), }); -export type StopDevserverToolOutput = z.infer; +export type DevserverStopToolOutput = z.infer; -export function stopDevserver(input: StopDevserverToolInput, context: McpToolContext) { - const projectKey = devServerKey(input.project); - const devServer = context.devServers.get(projectKey); +export function stopDevserver(input: DevserverStopToolInput, context: McpToolContext) { + const projectKey = devserverKey(input.project); + const devServer = context.devservers.get(projectKey); if (!devServer) { return createStructuredContentOutput({ @@ -41,7 +41,7 @@ export function stopDevserver(input: StopDevserverToolInput, context: McpToolCon } devServer.stop(); - context.devServers.delete(projectKey); + context.devservers.delete(projectKey); return createStructuredContentOutput({ message: `Development server for project '${projectKey}' stopped.`, @@ -49,15 +49,15 @@ export function stopDevserver(input: StopDevserverToolInput, context: McpToolCon }); } -export const STOP_DEVSERVER_TOOL: McpToolDeclaration< - typeof stopDevserverToolInputSchema.shape, - typeof stopDevserverToolOutputSchema.shape +export const DEVSERVER_STOP_TOOL: McpToolDeclaration< + typeof devserverStopToolInputSchema.shape, + typeof devserverStopToolOutputSchema.shape > = declareTool({ - name: 'stop_devserver', + name: 'devserver_stop', title: 'Stop Development Server', description: ` -Stops a running Angular development server ("ng serve") that was started with the "start_devserver" tool. +Stops a running Angular development server ("ng serve") that was started with the "devserver_start" tool. * **Stopping the Server:** Use this tool to terminate a running development server and retrieve the logs. @@ -70,8 +70,8 @@ Stops a running Angular development server ("ng serve") that was started with th `, isReadOnly: true, isLocalOnly: true, - inputSchema: stopDevserverToolInputSchema.shape, - outputSchema: stopDevserverToolOutputSchema.shape, + inputSchema: devserverStopToolInputSchema.shape, + outputSchema: devserverStopToolOutputSchema.shape, factory: (context) => (input) => { return stopDevserver(input, context); }, diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts similarity index 67% rename from packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts rename to packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts index 1a002f4c5b2a..5021cc6e2bd3 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/wait-for-devserver-build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts @@ -7,7 +7,7 @@ */ import { z } from 'zod'; -import { devServerKey } from '../../dev-server'; +import { devserverKey } from '../../devserver'; import { createStructuredContentOutput } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; @@ -21,7 +21,7 @@ export const WATCH_DELAY = 1000; */ const DEFAULT_TIMEOUT = 180_000; // In milliseconds -const waitForDevserverBuildToolInputSchema = z.object({ +const devserverWaitForBuildToolInputSchema = z.object({ project: z .string() .optional() @@ -36,9 +36,9 @@ const waitForDevserverBuildToolInputSchema = z.object({ ), }); -export type WaitForDevserverBuildToolInput = z.infer; +export type DevserverWaitForBuildToolInput = z.infer; -const waitForDevserverBuildToolOutputSchema = z.object({ +const devserverWaitForBuildToolOutputSchema = z.object({ status: z .enum(['success', 'failure', 'unknown', 'timeout', 'no_devserver_found']) .describe( @@ -50,22 +50,22 @@ const waitForDevserverBuildToolOutputSchema = z.object({ .describe('The logs from the most recent build, if one exists.'), }); -export type WaitForDevserverBuildToolOutput = z.infer; +export type DevserverWaitForBuildToolOutput = z.infer; function wait(ms: number): Promise { return new Promise((resolve) => setTimeout(resolve, ms)); } export async function waitForDevserverBuild( - input: WaitForDevserverBuildToolInput, + input: DevserverWaitForBuildToolInput, context: McpToolContext, ) { - const projectKey = devServerKey(input.project); - const devServer = context.devServers.get(projectKey); + const projectKey = devserverKey(input.project); + const devServer = context.devservers.get(projectKey); const deadline = Date.now() + input.timeout; if (!devServer) { - return createStructuredContentOutput({ + return createStructuredContentOutput({ status: 'no_devserver_found', }); } @@ -73,49 +73,49 @@ export async function waitForDevserverBuild( await wait(WATCH_DELAY); while (devServer.isBuilding()) { if (Date.now() > deadline) { - return createStructuredContentOutput({ + return createStructuredContentOutput({ status: 'timeout', }); } await wait(WATCH_DELAY); } - return createStructuredContentOutput({ + return createStructuredContentOutput({ ...devServer.getMostRecentBuild(), }); } -export const WAIT_FOR_DEVSERVER_BUILD_TOOL: McpToolDeclaration< - typeof waitForDevserverBuildToolInputSchema.shape, - typeof waitForDevserverBuildToolOutputSchema.shape +export const DEVSERVER_WAIT_FOR_BUILD_TOOL: McpToolDeclaration< + typeof devserverWaitForBuildToolInputSchema.shape, + typeof devserverWaitForBuildToolOutputSchema.shape > = declareTool({ - name: 'wait_for_devserver_build', + name: 'devserver_wait_for_build', title: 'Wait for Devserver Build', description: ` -Waits for a dev server that was started with the "start_devserver" tool to complete its build, then reports the build logs from its most +Waits for a dev server that was started with the "devserver_start" tool to complete its build, then reports the build logs from its most recent build. -* **Waiting for a build:** As long as a devserver is alive ("start_devserver" was called for this project and "stop_devserver" wasn't +* **Waiting for a build:** As long as a devserver is alive ("devserver_start" was called for this project and "devserver_stop" wasn't called yet), then if you're making a file change and want to ensure it was successfully built, call this tool instead of any other build tool or command. When it retuns you'll get build logs back **and** you'll know the user's devserver is up-to-date with the latest changes. -* This tool expects that a dev server was launched on the same project with the "start_devserver" tool, otherwise a "no_devserver_found" +* This tool expects that a dev server was launched on the same project with the "devserver_start" tool, otherwise a "no_devserver_found" status will be returned. * This tool will block until the build is complete or the timeout is reached. If you expect a long build process, consider increasing the - timeout. Timeouts on initial run (right after "start_devserver" calls) or after a big change are not necessarily indicative of an error. + timeout. Timeouts on initial run (right after "devserver_start" calls) or after a big change are not necessarily indicative of an error. * If you encountered a timeout and it might be reasonable, just call this tool again. * If the dev server is not building, it will return quickly, with the logs from the last build. -* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "start_devserver" +* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "devserver_start" tool again, before giving up. `, isReadOnly: true, isLocalOnly: true, - inputSchema: waitForDevserverBuildToolInputSchema.shape, - outputSchema: waitForDevserverBuildToolOutputSchema.shape, + inputSchema: devserverWaitForBuildToolInputSchema.shape, + outputSchema: devserverWaitForBuildToolOutputSchema.shape, factory: (context) => (input) => { return waitForDevserverBuild(input, context); }, diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts similarity index 90% rename from packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts rename to packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts index 7b9ce0f10a08..b2e5aa2ca566 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/serve_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts @@ -10,9 +10,9 @@ import { EventEmitter } from 'events'; import type { ChildProcess } from 'node:child_process'; import type { MockHost } from '../../testing/mock-host'; import type { McpToolContext } from '../tool-registry'; -import { startDevServer } from './start-devserver'; -import { stopDevserver } from './stop-devserver'; -import { WATCH_DELAY, waitForDevserverBuild } from './wait-for-devserver-build'; +import { startDevserver } from './devserver-start'; +import { stopDevserver } from './devserver-stop'; +import { WATCH_DELAY, waitForDevserverBuild } from './devserver-wait-for-build'; class MockChildProcess extends EventEmitter { stdout = new EventEmitter(); @@ -37,12 +37,12 @@ describe('Serve Tools', () => { } as MockHost; mockContext = { - devServers: new Map(), + devservers: new Map(), } as Partial as McpToolContext; }); it('should start and stop a dev server', async () => { - const startResult = await startDevServer({}, mockContext, mockHost); + const startResult = await startDevserver({}, mockContext, mockHost); expect(startResult.structuredContent.message).toBe( `Development server for project '' started and watching for workspace changes.`, ); @@ -56,7 +56,7 @@ describe('Serve Tools', () => { }); it('should wait for a build to complete', async () => { - await startDevServer({}, mockContext, mockHost); + await startDevserver({}, mockContext, mockHost); const waitPromise = waitForDevserverBuild({ timeout: 10 }, mockContext); @@ -78,7 +78,7 @@ describe('Serve Tools', () => { it('should handle multiple dev servers', async () => { // Start server for project 1. This uses the basic mockProcess created for the tests. - const startResult1 = await startDevServer({ project: 'app-one' }, mockContext, mockHost); + const startResult1 = await startDevserver({ project: 'app-one' }, mockContext, mockHost); expect(startResult1.structuredContent.message).toBe( `Development server for project 'app-one' started and watching for workspace changes.`, ); @@ -87,7 +87,7 @@ describe('Serve Tools', () => { // Start server for project 2, returning a new mock process. const process2 = new MockChildProcess(); mockHost.spawn.and.returnValue(process2 as unknown as ChildProcess); - const startResult2 = await startDevServer({ project: 'app-two' }, mockContext, mockHost); + const startResult2 = await startDevserver({ project: 'app-two' }, mockContext, mockHost); expect(startResult2.structuredContent.message).toBe( `Development server for project 'app-two' started and watching for workspace changes.`, ); @@ -116,7 +116,7 @@ describe('Serve Tools', () => { }); it('should handle server crash', async () => { - await startDevServer({ project: 'crash-app' }, mockContext, mockHost); + await startDevserver({ project: 'crash-app' }, mockContext, mockHost); // Simulate a crash with exit code 1 mockProcess.stdout.emit('data', 'Fatal error.'); @@ -128,7 +128,7 @@ describe('Serve Tools', () => { }); it('wait should timeout if build takes too long', async () => { - await startDevServer({ project: 'timeout-app' }, mockContext, mockHost); + await startDevserver({ project: 'timeout-app' }, mockContext, mockHost); const waitResult = await waitForDevserverBuild( { project: 'timeout-app', timeout: 10 }, mockContext, @@ -139,7 +139,7 @@ describe('Serve Tools', () => { it('should wait through multiple cycles for a build to complete', async () => { jasmine.clock().install(); try { - await startDevServer({}, mockContext, mockHost); + await startDevserver({}, mockContext, mockHost); // Immediately simulate a build starting so isBuilding() is true. mockProcess.stdout.emit('data', '❯ Changes detected. Rebuilding...'); diff --git a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts index 3c01b27e3bf3..5af40a4e98b5 100644 --- a/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts +++ b/packages/angular/cli/src/commands/mcp/tools/tool-registry.ts @@ -10,15 +10,17 @@ import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/m import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types'; import type { ZodRawShape } from 'zod'; import type { AngularWorkspace } from '../../../utilities/config'; -import type { DevServer } from '../dev-server'; +import type { Devserver } from '../devserver'; import type { Host } from '../host'; +type ToolConfig = Parameters[1]; + export interface McpToolContext { server: McpServer; workspace?: AngularWorkspace; logger: { warn(text: string): void }; exampleDatabasePath?: string; - devServers: Map; + devservers: Map; host: Host; } From 25631655a10a2433c77a31f98ab01926a337a623 Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Wed, 3 Dec 2025 10:50:30 -0800 Subject: [PATCH 1943/2162] refactor(@angular/cli): Update MCP tools to use host from context --- .../angular/cli/src/commands/mcp/tools/build.ts | 4 ++-- .../mcp/tools/devserver/devserver-start.ts | 13 ++++--------- .../mcp/tools/devserver/devserver_spec.ts | 15 ++++++++------- .../cli/src/commands/mcp/tools/modernize.ts | 4 ++-- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index 1daea2c83677..9b65a9c2f13e 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -7,7 +7,7 @@ */ import { z } from 'zod'; -import { CommandError, type Host, LocalWorkspaceHost } from '../host'; +import { CommandError, type Host } from '../host'; import { createStructuredContentOutput } from '../utils'; import { type McpToolDeclaration, declareTool } from './tool-registry'; @@ -107,5 +107,5 @@ Perform a one-off, non-watched build using "ng build". Use this tool whenever th isLocalOnly: true, inputSchema: buildToolInputSchema.shape, outputSchema: buildToolOutputSchema.shape, - factory: () => (input) => runBuild(input, LocalWorkspaceHost), + factory: (context) => (input) => runBuild(input, context.host), }); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts index 08606c89da2b..a2a04594b1bc 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts @@ -8,7 +8,6 @@ import { z } from 'zod'; import { LocalDevserver, devserverKey } from '../../devserver'; -import { type Host, LocalWorkspaceHost } from '../../host'; import { createStructuredContentOutput } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; @@ -39,11 +38,7 @@ function localhostAddress(port: number) { return `http://localhost:${port}/`; } -export async function startDevserver( - input: DevserverStartToolInput, - context: McpToolContext, - host: Host, -) { +export async function startDevserver(input: DevserverStartToolInput, context: McpToolContext) { const projectKey = devserverKey(input.project); let devserver = context.devservers.get(projectKey); @@ -54,9 +49,9 @@ export async function startDevserver( }); } - const port = await host.getAvailablePort(); + const port = await context.host.getAvailablePort(); - devserver = new LocalDevserver({ host, project: input.project, port }); + devserver = new LocalDevserver({ host: context.host, project: input.project, port }); devserver.start(); context.devservers.set(projectKey, devserver); @@ -98,6 +93,6 @@ the first build completes. inputSchema: devserverStartToolInputSchema.shape, outputSchema: devserverStartToolOutputSchema.shape, factory: (context) => (input) => { - return startDevserver(input, context, LocalWorkspaceHost); + return startDevserver(input, context); }, }); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts index b2e5aa2ca566..ea6449ceeffa 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts @@ -38,11 +38,12 @@ describe('Serve Tools', () => { mockContext = { devservers: new Map(), + host: mockHost, } as Partial as McpToolContext; }); it('should start and stop a dev server', async () => { - const startResult = await startDevserver({}, mockContext, mockHost); + const startResult = await startDevserver({}, mockContext); expect(startResult.structuredContent.message).toBe( `Development server for project '' started and watching for workspace changes.`, ); @@ -56,7 +57,7 @@ describe('Serve Tools', () => { }); it('should wait for a build to complete', async () => { - await startDevserver({}, mockContext, mockHost); + await startDevserver({}, mockContext); const waitPromise = waitForDevserverBuild({ timeout: 10 }, mockContext); @@ -78,7 +79,7 @@ describe('Serve Tools', () => { it('should handle multiple dev servers', async () => { // Start server for project 1. This uses the basic mockProcess created for the tests. - const startResult1 = await startDevserver({ project: 'app-one' }, mockContext, mockHost); + const startResult1 = await startDevserver({ project: 'app-one' }, mockContext); expect(startResult1.structuredContent.message).toBe( `Development server for project 'app-one' started and watching for workspace changes.`, ); @@ -87,7 +88,7 @@ describe('Serve Tools', () => { // Start server for project 2, returning a new mock process. const process2 = new MockChildProcess(); mockHost.spawn.and.returnValue(process2 as unknown as ChildProcess); - const startResult2 = await startDevserver({ project: 'app-two' }, mockContext, mockHost); + const startResult2 = await startDevserver({ project: 'app-two' }, mockContext); expect(startResult2.structuredContent.message).toBe( `Development server for project 'app-two' started and watching for workspace changes.`, ); @@ -116,7 +117,7 @@ describe('Serve Tools', () => { }); it('should handle server crash', async () => { - await startDevserver({ project: 'crash-app' }, mockContext, mockHost); + await startDevserver({ project: 'crash-app' }, mockContext); // Simulate a crash with exit code 1 mockProcess.stdout.emit('data', 'Fatal error.'); @@ -128,7 +129,7 @@ describe('Serve Tools', () => { }); it('wait should timeout if build takes too long', async () => { - await startDevserver({ project: 'timeout-app' }, mockContext, mockHost); + await startDevserver({ project: 'timeout-app' }, mockContext); const waitResult = await waitForDevserverBuild( { project: 'timeout-app', timeout: 10 }, mockContext, @@ -139,7 +140,7 @@ describe('Serve Tools', () => { it('should wait through multiple cycles for a build to complete', async () => { jasmine.clock().install(); try { - await startDevserver({}, mockContext, mockHost); + await startDevserver({}, mockContext); // Immediately simulate a build starting so isBuilding() is true. mockProcess.stdout.emit('data', '❯ Changes detected. Rebuilding...'); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 754bb683bdc0..9e85c6f7246b 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -8,7 +8,7 @@ import { dirname, join, relative } from 'path'; import { z } from 'zod'; -import { CommandError, type Host, LocalWorkspaceHost } from '../host'; +import { CommandError, type Host } from '../host'; import { createStructuredContentOutput, findAngularJsonDir } from '../utils'; import { type McpToolDeclaration, declareTool } from './tool-registry'; @@ -205,5 +205,5 @@ ${TRANSFORMATIONS.map((t) => ` * ${t.name}: ${t.description}`).join('\n')} outputSchema: modernizeOutputSchema.shape, isLocalOnly: true, isReadOnly: false, - factory: () => (input) => runModernization(input, LocalWorkspaceHost), + factory: (context) => (input) => runModernization(input, context.host), }); From f184d72da274c7c84e2713258bc2532d311e917d Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Wed, 3 Dec 2025 14:40:29 -0800 Subject: [PATCH 1944/2162] refactor(@angular/cli): Rename devserver MCP tools to use slashes for categorization --- .../angular/cli/src/commands/mcp/tools/build.ts | 2 +- .../mcp/tools/devserver/devserver-start.ts | 14 +++++++------- .../commands/mcp/tools/devserver/devserver-stop.ts | 4 ++-- .../tools/devserver/devserver-wait-for-build.ts | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index 9b65a9c2f13e..5f3500d609ec 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -97,7 +97,7 @@ Perform a one-off, non-watched build using "ng build". Use this tool whenever th * This tool runs "ng build" so it expects to run within an Angular workspace. -* If you want a watched build which updates as files are changed, use "devserver_start" instead, which also serves the app. +* If you want a watched build which updates as files are changed, use "devserver/start" instead, which also serves the app. * You can provide a project instead of building the root one. The "list_projects" MCP tool could be used to obtain the list of projects. * This tool defaults to a development environment while a regular "ng build" defaults to a production environment. An unexpected build failure might suggest the project is not configured for the requested environment. diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts index a2a04594b1bc..831cc5488e56 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts @@ -66,26 +66,26 @@ export const DEVSERVER_START_TOOL: McpToolDeclaration< typeof devserverStartToolInputSchema.shape, typeof devserverStartToolOutputSchema.shape > = declareTool({ - name: 'devserver_start', + name: 'devserver/start', title: 'Start Development Server', description: ` -Starts the Angular development server ("ng serve") as a background process. Follow this up with "devserver_wait_for_build" to wait until +Starts the Angular development server ("ng serve") as a background process. Follow this up with "devserver/wait_for_build" to wait until the first build completes. * **Starting the Server:** Use this tool to begin serving the application. The tool will return immediately while the server runs in the background. -* **Get Initial Build Logs:** Once a dev server has started, use the "devserver_wait_for_build" tool to ensure it's alive. If there are any - build errors, "devserver_wait_for_build" would provide them back and you can give them to the user or rely on them to propose a fix. -* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver_stop" wasn't called), after every time you make a - change to the workspace, re-run "devserver_wait_for_build" to see whether the change was successfully built and wait for the devserver to +* **Get Initial Build Logs:** Once a dev server has started, use the "devserver/wait_for_build" tool to ensure it's alive. If there are any + build errors, "devserver/wait_for_build" would provide them back and you can give them to the user or rely on them to propose a fix. +* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver/stop" wasn't called), after every time you make a + change to the workspace, re-run "devserver/wait_for_build" to see whether the change was successfully built and wait for the devserver to be updated. * This tool manages development servers by itself. It maintains at most a single dev server instance for each project in the monorepo. * This is an asynchronous operation. Subsequent commands can be ran while the server is active. -* Use 'devserver_stop' to gracefully shut down the server and access the full log output. +* Use 'devserver/stop' to gracefully shut down the server and access the full log output. `, isReadOnly: true, diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts index 987a3da7c080..faefbae3b73f 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts @@ -53,11 +53,11 @@ export const DEVSERVER_STOP_TOOL: McpToolDeclaration< typeof devserverStopToolInputSchema.shape, typeof devserverStopToolOutputSchema.shape > = declareTool({ - name: 'devserver_stop', + name: 'devserver/stop', title: 'Stop Development Server', description: ` -Stops a running Angular development server ("ng serve") that was started with the "devserver_start" tool. +Stops a running Angular development server ("ng serve") that was started with the "devserver/start" tool. * **Stopping the Server:** Use this tool to terminate a running development server and retrieve the logs. diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts index 5021cc6e2bd3..38e162123428 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts @@ -89,26 +89,26 @@ export const DEVSERVER_WAIT_FOR_BUILD_TOOL: McpToolDeclaration< typeof devserverWaitForBuildToolInputSchema.shape, typeof devserverWaitForBuildToolOutputSchema.shape > = declareTool({ - name: 'devserver_wait_for_build', + name: 'devserver/wait_for_build', title: 'Wait for Devserver Build', description: ` -Waits for a dev server that was started with the "devserver_start" tool to complete its build, then reports the build logs from its most +Waits for a dev server that was started with the "devserver/start" tool to complete its build, then reports the build logs from its most recent build. -* **Waiting for a build:** As long as a devserver is alive ("devserver_start" was called for this project and "devserver_stop" wasn't +* **Waiting for a build:** As long as a devserver is alive ("devserver/start" was called for this project and "devserver_stop" wasn't called yet), then if you're making a file change and want to ensure it was successfully built, call this tool instead of any other build tool or command. When it retuns you'll get build logs back **and** you'll know the user's devserver is up-to-date with the latest changes. -* This tool expects that a dev server was launched on the same project with the "devserver_start" tool, otherwise a "no_devserver_found" +* This tool expects that a dev server was launched on the same project with the "devserver/start" tool, otherwise a "no_devserver_found" status will be returned. * This tool will block until the build is complete or the timeout is reached. If you expect a long build process, consider increasing the - timeout. Timeouts on initial run (right after "devserver_start" calls) or after a big change are not necessarily indicative of an error. + timeout. Timeouts on initial run (right after "devserver/start" calls) or after a big change are not necessarily indicative of an error. * If you encountered a timeout and it might be reasonable, just call this tool again. * If the dev server is not building, it will return quickly, with the logs from the last build. -* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "devserver_start" +* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "devserver/start" tool again, before giving up. `, From c47e99110e75577659be16452437dce1a9704de9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 8 Dec 2025 05:06:28 +0000 Subject: [PATCH 1945/2162] build: update all non-major dependencies See associated pull request for more information. --- packages/angular/cli/package.json | 4 +- pnpm-lock.yaml | 230 +++++++++++++++--------------- 2 files changed, 117 insertions(+), 117 deletions(-) diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index e9ea544df4f0..786815f3c982 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,10 +27,10 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.24.2", + "@modelcontextprotocol/sdk": "1.24.3", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.45.0", + "algoliasearch": "5.46.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fb50be9c0d1..4c5e12e1ce7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9037bb2813539aab76b41abd85ea690e0d839e4a - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.1 version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -463,8 +463,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.24.2 - version: 1.24.2(zod@4.1.13) + specifier: 1.24.3 + version: 1.24.3(zod@4.1.13) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -472,8 +472,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.45.0 - version: 5.45.0 + specifier: 5.46.0 + version: 5.46.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -912,60 +912,60 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.11.0': - resolution: {integrity: sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==} + '@algolia/abtesting@1.12.0': + resolution: {integrity: sha512-EfW0bfxjPs+C7ANkJDw2TATntfBKsFiy7APh+KO0pQ8A6HYa5I0NjFuCGCXWfzzzLXNZta3QUl3n5Kmm6aJo9Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.45.0': - resolution: {integrity: sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==} + '@algolia/client-abtesting@5.46.0': + resolution: {integrity: sha512-eG5xV8rujK4ZIHXrRshvv9O13NmU/k42Rnd3w43iKH5RaQ2zWuZO6Q7XjaoJjAFVCsJWqRbXzbYyPGrbF3wGNg==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.45.0': - resolution: {integrity: sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==} + '@algolia/client-analytics@5.46.0': + resolution: {integrity: sha512-AYh2uL8IUW9eZrbbT+wZElyb7QkkeV3US2NEKY7doqMlyPWE8lErNfkVN1NvZdVcY4/SVic5GDbeDz2ft8YIiQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.45.0': - resolution: {integrity: sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==} + '@algolia/client-common@5.46.0': + resolution: {integrity: sha512-0emZTaYOeI9WzJi0TcNd2k3SxiN6DZfdWc2x2gHt855Jl9jPUOzfVTL6gTvCCrOlT4McvpDGg5nGO+9doEjjig==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.45.0': - resolution: {integrity: sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==} + '@algolia/client-insights@5.46.0': + resolution: {integrity: sha512-wrBJ8fE+M0TDG1As4DDmwPn2TXajrvmvAN72Qwpuv8e2JOKNohF7+JxBoF70ZLlvP1A1EiH8DBu+JpfhBbNphQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.45.0': - resolution: {integrity: sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==} + '@algolia/client-personalization@5.46.0': + resolution: {integrity: sha512-LnkeX4p0ENt0DoftDJJDzQQJig/sFQmD1eQifl/iSjhUOGUIKC/7VTeXRcKtQB78naS8njUAwpzFvxy1CDDXDQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.45.0': - resolution: {integrity: sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==} + '@algolia/client-query-suggestions@5.46.0': + resolution: {integrity: sha512-aF9tc4ex/smypXw+W3lBPB1jjKoaGHpZezTqofvDOI/oK1dR2sdTpFpK2Ru+7IRzYgwtRqHF3znmTlyoNs9dpA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.45.0': - resolution: {integrity: sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==} + '@algolia/client-search@5.46.0': + resolution: {integrity: sha512-22SHEEVNjZfFWkFks3P6HilkR3rS7a6GjnCIqR22Zz4HNxdfT0FG+RE7efTcFVfLUkTTMQQybvaUcwMrHXYa7Q==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.45.0': - resolution: {integrity: sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==} + '@algolia/ingestion@1.46.0': + resolution: {integrity: sha512-2LT0/Z+/sFwEpZLH6V17WSZ81JX2uPjgvv5eNlxgU7rPyup4NXXfuMbtCJ+6uc4RO/LQpEJd3Li59ke3wtyAsA==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.45.0': - resolution: {integrity: sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==} + '@algolia/monitoring@1.46.0': + resolution: {integrity: sha512-uivZ9wSWZ8mz2ZU0dgDvQwvVZV8XBv6lYBXf8UtkQF3u7WeTqBPeU8ZoeTyLpf0jAXCYOvc1mAVmK0xPLuEwOQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.45.0': - resolution: {integrity: sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==} + '@algolia/recommend@5.46.0': + resolution: {integrity: sha512-O2BB8DuySuddgOAbhyH4jsGbL+KyDGpzJRtkDZkv091OMomqIA78emhhMhX9d/nIRrzS1wNLWB/ix7Hb2eV5rg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.45.0': - resolution: {integrity: sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==} + '@algolia/requester-browser-xhr@5.46.0': + resolution: {integrity: sha512-eW6xyHCyYrJD0Kjk9Mz33gQ40LfWiEA51JJTVfJy3yeoRSw/NXhAL81Pljpa0qslTs6+LO/5DYPZddct6HvISQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.45.0': - resolution: {integrity: sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==} + '@algolia/requester-fetch@5.46.0': + resolution: {integrity: sha512-Vn2+TukMGHy4PIxmdvP667tN/MhS7MPT8EEvEhS6JyFLPx3weLcxSa1F9gVvrfHWCUJhLWoMVJVB2PT8YfRGcw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.45.0': - resolution: {integrity: sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==} + '@algolia/requester-node-http@5.46.0': + resolution: {integrity: sha512-xaqXyna5yBZ+r1SJ9my/DM6vfTqJg9FJgVydRJ0lnO+D5NhqGW/qaRG/iBGKr/d4fho34el6WakV7BqJvrl/HQ==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -2734,8 +2734,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.24.2': - resolution: {integrity: sha512-hS/kzSfchqzvUeJUsdiDHi84/kNhLIZaZ6coGQVwbYIelOBbcAwUohUfaQTLa1MvFOK/jbTnGFzraHSFwB7pjQ==} + '@modelcontextprotocol/sdk@1.24.3': + resolution: {integrity: sha512-YgSHW29fuzKKAHTGe9zjNoo+yF8KaQPzDC2W9Pv41E7/57IfY+AMGJ/aDFlgTLcVVELoggKE4syABCE75u3NCw==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -4212,8 +4212,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.45.0: - resolution: {integrity: sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==} + algoliasearch@5.46.0: + resolution: {integrity: sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -9353,89 +9353,89 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.11.0': + '@algolia/abtesting@1.12.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-abtesting@5.45.0': + '@algolia/client-abtesting@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-analytics@5.45.0': + '@algolia/client-analytics@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-common@5.45.0': {} + '@algolia/client-common@5.46.0': {} - '@algolia/client-insights@5.45.0': + '@algolia/client-insights@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-personalization@5.45.0': + '@algolia/client-personalization@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-query-suggestions@5.45.0': + '@algolia/client-query-suggestions@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-search@5.45.0': + '@algolia/client-search@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/ingestion@1.45.0': + '@algolia/ingestion@1.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/monitoring@1.45.0': + '@algolia/monitoring@1.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/recommend@5.45.0': + '@algolia/recommend@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/requester-browser-xhr@5.45.0': + '@algolia/requester-browser-xhr@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 + '@algolia/client-common': 5.46.0 - '@algolia/requester-fetch@5.45.0': + '@algolia/requester-fetch@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 + '@algolia/client-common': 5.46.0 - '@algolia/requester-node-http@5.45.0': + '@algolia/requester-node-http@5.46.0': dependencies: - '@algolia/client-common': 5.45.0 + '@algolia/client-common': 5.46.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9519,11 +9519,11 @@ 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/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.31.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.31.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.0.2(@types/node@24.10.1) '@inquirer/type': 4.0.2(@types/node@24.10.1) '@octokit/auth-app': 8.1.2 @@ -10973,12 +10973,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.31.0(@modelcontextprotocol/sdk@1.24.2(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.31.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.24.2(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.24.3(zod@4.1.13) transitivePeerDependencies: - bufferutil - supports-color @@ -11384,7 +11384,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.24.2(zod@4.1.13)': + '@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -13096,22 +13096,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.45.0: - dependencies: - '@algolia/abtesting': 1.11.0 - '@algolia/client-abtesting': 5.45.0 - '@algolia/client-analytics': 5.45.0 - '@algolia/client-common': 5.45.0 - '@algolia/client-insights': 5.45.0 - '@algolia/client-personalization': 5.45.0 - '@algolia/client-query-suggestions': 5.45.0 - '@algolia/client-search': 5.45.0 - '@algolia/ingestion': 1.45.0 - '@algolia/monitoring': 1.45.0 - '@algolia/recommend': 5.45.0 - '@algolia/requester-browser-xhr': 5.45.0 - '@algolia/requester-fetch': 5.45.0 - '@algolia/requester-node-http': 5.45.0 + algoliasearch@5.46.0: + dependencies: + '@algolia/abtesting': 1.12.0 + '@algolia/client-abtesting': 5.46.0 + '@algolia/client-analytics': 5.46.0 + '@algolia/client-common': 5.46.0 + '@algolia/client-insights': 5.46.0 + '@algolia/client-personalization': 5.46.0 + '@algolia/client-query-suggestions': 5.46.0 + '@algolia/client-search': 5.46.0 + '@algolia/ingestion': 1.46.0 + '@algolia/monitoring': 1.46.0 + '@algolia/recommend': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 ansi-colors@4.1.3: {} From d680b800cee1690f1efe08c937225313078cc0cd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 8 Dec 2025 05:06:06 +0000 Subject: [PATCH 1946/2162] build: update rules_angular digest to 7133b97 See associated pull request for more information. --- MODULE.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MODULE.bazel b/MODULE.bazel index 3ec7ab96cc75..14245fe8dd2a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -26,7 +26,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "f942bfd36bf472e93ef568b2f46bc0cfe21f1c3e", + commit = "7133b97252508f8528e5c5818a9a73cacc2e2a0e", remote = "https://github.com/devversion/rules_angular.git", ) From 62dc12bf5c2fb61c22f9d3c4c21390e115f190b9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:26:00 -0500 Subject: [PATCH 1947/2162] test: remove webdriver-manager repo postinstall The postinstall action is no longer required with the current Bazel test rule setup. --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 20ef7af03112..bea1e2a75718 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,7 @@ "lint": "eslint --cache --max-warnings=0 \"**/*.@(ts|mts|cts)\"", "templates": "pnpm -s admin templates", "validate": "pnpm -s admin validate", - "postinstall": "pnpm -s webdriver-update && husky", - "//webdriver-update-README": "ChromeDriver version must match Puppeteer Chromium version, see https://github.com/GoogleChrome/puppeteer/releases http://chromedriver.chromium.org/downloads", - "webdriver-update": "webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21", + "postinstall": "husky", "ng-dev": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only node_modules/@angular/ng-dev/bundles/cli.mjs", "ts-circular-deps": "pnpm -s ng-dev ts-circular-deps --config ./scripts/circular-deps-test.conf.mjs", "check-tooling-setup": "tsc --project .ng-dev/tsconfig.json", From 114cddd7c9c0992d38dafd760eaf561f58328b48 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 8 Dec 2025 11:50:15 -0500 Subject: [PATCH 1948/2162] refactor(@angular/cli): extract update migration logic into separate module Extracts the migration execution and related helper logic from `cli.ts` into a new module `utilities/migration.ts` within the update command. --- .../angular/cli/src/commands/update/cli.ts | 377 +----------------- .../commands/update/utilities/migration.ts | 361 +++++++++++++++++ 2 files changed, 382 insertions(+), 356 deletions(-) create mode 100644 packages/angular/cli/src/commands/update/utilities/migration.ts diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 50442ade0d35..2ce76d30fece 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -6,14 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import { SchematicDescription, UnsuccessfulWorkflowExecution } from '@angular-devkit/schematics'; -import { - FileSystemCollectionDescription, - FileSystemSchematicDescription, - NodeWorkflow, -} from '@angular-devkit/schematics/tools'; +import { NodeWorkflow } from '@angular-devkit/schematics/tools'; import { Listr } from 'listr2'; -import { SpawnSyncReturns } from 'node:child_process'; import { existsSync, promises as fs } from 'node:fs'; import { createRequire } from 'node:module'; import * as path from 'node:path'; @@ -27,11 +21,9 @@ import { Options, } from '../../command-builder/command-module'; import { SchematicEngineHost } from '../../command-builder/utilities/schematic-engine-host'; -import { subscribeToWorkflow } from '../../command-builder/utilities/schematic-workflow'; -import { colors, figures } from '../../utilities/color'; +import { colors } from '../../utilities/color'; import { disableVersionCheck } from '../../utilities/environment-options'; import { assertIsError } from '../../utilities/error'; -import { writeErrorToLogFile } from '../../utilities/log-file'; import { PackageIdentifier, PackageManifest, @@ -43,8 +35,6 @@ import { getProjectDependencies, readPackageJson, } from '../../utilities/package-tree'; -import { askChoices } from '../../utilities/prompt'; -import { isTTY } from '../../utilities/tty'; import { checkCLIVersion, coerceVersionNumber, @@ -52,13 +42,13 @@ import { shouldForcePackageManager, } from './utilities/cli-version'; import { ANGULAR_PACKAGES_REGEXP } from './utilities/constants'; +import { checkCleanGit } from './utilities/git'; import { - checkCleanGit, - createCommit, - findCurrentGitSha, - getShortHash, - hasChangesToCommit, -} from './utilities/git'; + commitChanges, + executeMigration, + executeMigrations, + executeSchematic, +} from './utilities/migration'; interface UpdateCommandArgs { packages?: string[]; @@ -73,20 +63,6 @@ interface UpdateCommandArgs { 'create-commits': boolean; } -interface MigrationSchematicDescription extends SchematicDescription< - FileSystemCollectionDescription, - FileSystemSchematicDescription -> { - version?: string; - optional?: boolean; - recommended?: boolean; - documentation?: string; -} - -interface MigrationSchematicDescriptionWithVersion extends MigrationSchematicDescription { - version: string; -} - class CommandError extends Error {} const UPDATE_SCHEMATIC_COLLECTION = path.join(__dirname, 'schematic/collection.json'); @@ -281,8 +257,9 @@ export default class UpdateCommandModule extends CommandModule = {}, - ): Promise<{ success: boolean; files: Set }> { - const { logger } = this.context; - const workflowSubscription = subscribeToWorkflow(workflow, logger); - - // TODO: Allow passing a schematic instance directly - try { - await workflow - .execute({ - collection, - schematic, - options, - logger, - }) - .toPromise(); - - return { success: !workflowSubscription.error, files: workflowSubscription.files }; - } catch (e) { - if (e instanceof UnsuccessfulWorkflowExecution) { - logger.error(`${figures.cross} Migration failed. See above for further details.\n`); - } else { - assertIsError(e); - const logPath = writeErrorToLogFile(e); - logger.fatal( - `${figures.cross} Migration failed: ${e.message}\n` + - ` See "${logPath}" for further details.\n`, - ); - } - - return { success: false, files: workflowSubscription.files }; - } finally { - workflowSubscription.unsubscribe(); - } - } - - /** - * @return Whether or not the migration was performed successfully. - */ - private async executeMigration( - workflow: NodeWorkflow, - packageName: string, - collectionPath: string, - migrationName: string, - commit?: boolean, - ): Promise { - const { logger } = this.context; - const collection = workflow.engine.createCollection(collectionPath); - const name = collection.listSchematicNames().find((name) => name === migrationName); - if (!name) { - logger.error(`Cannot find migration '${migrationName}' in '${packageName}'.`); - - return 1; - } - - logger.info(colors.cyan(`** Executing '${migrationName}' of package '${packageName}' **\n`)); - const schematic = workflow.engine.createSchematic(name, collection); - - return this.executePackageMigrations(workflow, [schematic.description], packageName, commit); - } - - /** - * @return Whether or not the migrations were performed successfully. - */ - private async executeMigrations( - workflow: NodeWorkflow, - packageName: string, - collectionPath: string, - from: string, - to: string, - commit?: boolean, - ): Promise { - const collection = workflow.engine.createCollection(collectionPath); - const migrationRange = new semver.Range( - '>' + (semver.prerelease(from) ? from.split('-')[0] + '-0' : from) + ' <=' + to.split('-')[0], - ); - - const requiredMigrations: MigrationSchematicDescriptionWithVersion[] = []; - const optionalMigrations: MigrationSchematicDescriptionWithVersion[] = []; - - for (const name of collection.listSchematicNames()) { - const schematic = workflow.engine.createSchematic(name, collection); - const description = schematic.description as MigrationSchematicDescription; - - description.version = coerceVersionNumber(description.version); - if (!description.version) { - continue; - } - - if (semver.satisfies(description.version, migrationRange, { includePrerelease: true })) { - (description.optional ? optionalMigrations : requiredMigrations).push( - description as MigrationSchematicDescriptionWithVersion, - ); - } - } - - if (requiredMigrations.length === 0 && optionalMigrations.length === 0) { - return 0; - } - - // Required migrations - if (requiredMigrations.length) { - this.context.logger.info( - colors.cyan(`** Executing migrations of package '${packageName}' **\n`), - ); - - requiredMigrations.sort( - (a, b) => semver.compare(a.version, b.version) || a.name.localeCompare(b.name), - ); - - const result = await this.executePackageMigrations( - workflow, - requiredMigrations, - packageName, - commit, - ); - - if (result === 1) { - return 1; - } - } - - // Optional migrations - if (optionalMigrations.length) { - this.context.logger.info( - colors.magenta(`** Optional migrations of package '${packageName}' **\n`), - ); - - optionalMigrations.sort( - (a, b) => semver.compare(a.version, b.version) || a.name.localeCompare(b.name), - ); - - const migrationsToRun = await this.getOptionalMigrationsToRun( - optionalMigrations, - packageName, - ); - - if (migrationsToRun?.length) { - return this.executePackageMigrations(workflow, migrationsToRun, packageName, commit); - } - } - - return 0; - } - - private async executePackageMigrations( - workflow: NodeWorkflow, - migrations: MigrationSchematicDescription[], - packageName: string, - commit = false, - ): Promise<1 | 0> { - const { logger } = this.context; - for (const migration of migrations) { - const { title, description } = getMigrationTitleAndDescription(migration); - - logger.info(colors.cyan(figures.pointer) + ' ' + colors.bold(title)); - - if (description) { - logger.info(' ' + description); - } - - const { success, files } = await this.executeSchematic( - workflow, - migration.collection.name, - migration.name, - ); - if (!success) { - return 1; - } - - let modifiedFilesText: string; - switch (files.size) { - case 0: - modifiedFilesText = 'No changes made'; - break; - case 1: - modifiedFilesText = '1 file modified'; - break; - default: - modifiedFilesText = `${files.size} files modified`; - break; - } - - logger.info(` Migration completed (${modifiedFilesText}).`); - - // Commit migration - if (commit) { - const commitPrefix = `${packageName} migration - ${migration.name}`; - const commitMessage = migration.description - ? `${commitPrefix}\n\n${migration.description}` - : commitPrefix; - const committed = this.commit(commitMessage); - if (!committed) { - // Failed to commit, something went wrong. Abort the update. - return 1; - } - } - - logger.info(''); // Extra trailing newline. - } - - return 0; - } - private async migrateOnly( workflow: NodeWorkflow, packageName: string, @@ -592,8 +362,9 @@ export default class UpdateCommandModule extends CommandModule).stderr}`); - - return false; - } - - if (!commitNeeded) { - logger.info(' No changes to commit after migration.'); - - return true; - } - - // Commit changes and abort on error. - try { - createCommit(message); - } catch (err) { - logger.error( - `Failed to commit update (${message}):\n${(err as SpawnSyncReturns).stderr}`, - ); - - return false; - } - - // Notify user of the commit. - const hash = findCurrentGitSha(); - const shortMessage = message.split('\n')[0]; - if (hash) { - logger.info(` Committed migration step (${getShortHash(hash)}): ${shortMessage}.`); - } else { - // Commit was successful, but reading the hash was not. Something weird happened, - // but nothing that would stop the update. Just log the weirdness and continue. - logger.info(` Committed migration step: ${shortMessage}.`); - logger.warn(' Failed to look up hash of most recent commit, continuing anyways.'); - } - - return true; - } - - private async getOptionalMigrationsToRun( - optionalMigrations: MigrationSchematicDescription[], - packageName: string, - ): Promise { - const { logger } = this.context; - const numberOfMigrations = optionalMigrations.length; - logger.info( - `This package has ${numberOfMigrations} optional migration${ - numberOfMigrations > 1 ? 's' : '' - } that can be executed.`, - ); - - if (!isTTY()) { - for (const migration of optionalMigrations) { - const { title } = getMigrationTitleAndDescription(migration); - logger.info(colors.cyan(figures.pointer) + ' ' + colors.bold(title)); - logger.info(colors.gray(` ng update ${packageName} --name ${migration.name}`)); - logger.info(''); // Extra trailing newline. - } - - return undefined; - } - - logger.info( - 'Optional migrations may be skipped and executed after the update process, if preferred.', - ); - logger.info(''); // Extra trailing newline. - - const answer = await askChoices( - `Select the migrations that you'd like to run`, - optionalMigrations.map((migration) => { - const { title, documentation } = getMigrationTitleAndDescription(migration); - - return { - name: `[${colors.white(migration.name)}] ${title}${documentation ? ` (${documentation})` : ''}`, - value: migration.name, - checked: migration.recommended, - }; - }), - null, - ); - - logger.info(''); // Extra trailing newline. - - return optionalMigrations.filter(({ name }) => answer?.includes(name)); - } -} - -function getMigrationTitleAndDescription(migration: MigrationSchematicDescription): { - title: string; - description: string; - documentation?: string; -} { - const [title, ...description] = migration.description.split('. '); - - return { - title: title.endsWith('.') ? title : title + '.', - description: description.join('.\n '), - documentation: migration.documentation - ? new URL(migration.documentation, 'https://angular.dev').href - : undefined, - }; } diff --git a/packages/angular/cli/src/commands/update/utilities/migration.ts b/packages/angular/cli/src/commands/update/utilities/migration.ts new file mode 100644 index 000000000000..3b53694d3859 --- /dev/null +++ b/packages/angular/cli/src/commands/update/utilities/migration.ts @@ -0,0 +1,361 @@ +/** + * @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 { SchematicDescription, UnsuccessfulWorkflowExecution } from '@angular-devkit/schematics'; +import { + FileSystemCollectionDescription, + FileSystemSchematicDescription, + NodeWorkflow, +} from '@angular-devkit/schematics/tools'; +import { SpawnSyncReturns } from 'node:child_process'; +import * as semver from 'semver'; +import { subscribeToWorkflow } from '../../../command-builder/utilities/schematic-workflow'; +import { colors, figures } from '../../../utilities/color'; +import { assertIsError } from '../../../utilities/error'; +import { writeErrorToLogFile } from '../../../utilities/log-file'; +import { askChoices } from '../../../utilities/prompt'; +import { isTTY } from '../../../utilities/tty'; +import { coerceVersionNumber } from './cli-version'; +import { createCommit, findCurrentGitSha, getShortHash, hasChangesToCommit } from './git'; + +export interface MigrationSchematicDescription extends SchematicDescription< + FileSystemCollectionDescription, + FileSystemSchematicDescription +> { + version?: string; + optional?: boolean; + recommended?: boolean; + documentation?: string; +} + +interface MigrationSchematicDescriptionWithVersion extends MigrationSchematicDescription { + version: string; +} + +export async function executeSchematic( + workflow: NodeWorkflow, + logger: logging.Logger, + collection: string, + schematic: string, + options: Record = {}, +): Promise<{ success: boolean; files: Set }> { + const workflowSubscription = subscribeToWorkflow(workflow, logger); + + // TODO: Allow passing a schematic instance directly + try { + await workflow + .execute({ + collection, + schematic, + options, + logger, + }) + .toPromise(); + + return { success: !workflowSubscription.error, files: workflowSubscription.files }; + } catch (e) { + if (e instanceof UnsuccessfulWorkflowExecution) { + logger.error(`${figures.cross} Migration failed. See above for further details.\n`); + } else { + assertIsError(e); + const logPath = writeErrorToLogFile(e); + logger.fatal( + `${figures.cross} Migration failed: ${e.message}\n` + + ` See "${logPath}" for further details.\n`, + ); + } + + return { success: false, files: workflowSubscription.files }; + } finally { + workflowSubscription.unsubscribe(); + } +} + +/** + * @return Whether or not the migration was performed successfully. + */ +export async function executeMigration( + workflow: NodeWorkflow, + logger: logging.Logger, + packageName: string, + collectionPath: string, + migrationName: string, + commit: boolean = false, +): Promise { + const collection = workflow.engine.createCollection(collectionPath); + const name = collection.listSchematicNames().find((name) => name === migrationName); + if (!name) { + logger.error(`Cannot find migration '${migrationName}' in '${packageName}'.`); + + return 1; + } + + logger.info(colors.cyan(`** Executing '${migrationName}' of package '${packageName}' **\n`)); + const schematic = workflow.engine.createSchematic(name, collection); + + return executePackageMigrations( + workflow, + logger, + [schematic.description as MigrationSchematicDescription], + packageName, + commit, + ); +} + +/** + * @return Whether or not the migrations were performed successfully. + */ +export async function executeMigrations( + workflow: NodeWorkflow, + logger: logging.Logger, + packageName: string, + collectionPath: string, + from: string, + to: string, + commit: boolean = false, +): Promise { + const collection = workflow.engine.createCollection(collectionPath); + const migrationRange = new semver.Range( + '>' + (semver.prerelease(from) ? from.split('-')[0] + '-0' : from) + ' <=' + to.split('-')[0], + ); + + const requiredMigrations: MigrationSchematicDescriptionWithVersion[] = []; + const optionalMigrations: MigrationSchematicDescriptionWithVersion[] = []; + + for (const name of collection.listSchematicNames()) { + const schematic = workflow.engine.createSchematic(name, collection); + const description = schematic.description as MigrationSchematicDescription; + + description.version = coerceVersionNumber(description.version); + if (!description.version) { + continue; + } + + if (semver.satisfies(description.version, migrationRange, { includePrerelease: true })) { + (description.optional ? optionalMigrations : requiredMigrations).push( + description as MigrationSchematicDescriptionWithVersion, + ); + } + } + + if (requiredMigrations.length === 0 && optionalMigrations.length === 0) { + return 0; + } + + // Required migrations + if (requiredMigrations.length) { + logger.info(colors.cyan(`** Executing migrations of package '${packageName}' **\n`)); + + requiredMigrations.sort( + (a, b) => semver.compare(a.version, b.version) || a.name.localeCompare(b.name), + ); + + const result = await executePackageMigrations( + workflow, + logger, + requiredMigrations, + packageName, + commit, + ); + + if (result === 1) { + return 1; + } + } + + // Optional migrations + if (optionalMigrations.length) { + logger.info(colors.magenta(`** Optional migrations of package '${packageName}' **\n`)); + + optionalMigrations.sort( + (a, b) => semver.compare(a.version, b.version) || a.name.localeCompare(b.name), + ); + + const migrationsToRun = await getOptionalMigrationsToRun( + logger, + optionalMigrations, + packageName, + ); + + if (migrationsToRun?.length) { + return executePackageMigrations(workflow, logger, migrationsToRun, packageName, commit); + } + } + + return 0; +} + +async function executePackageMigrations( + workflow: NodeWorkflow, + logger: logging.Logger, + migrations: MigrationSchematicDescription[], + packageName: string, + commit = false, +): Promise<1 | 0> { + for (const migration of migrations) { + const { title, description } = getMigrationTitleAndDescription(migration); + + logger.info(colors.cyan(figures.pointer) + ' ' + colors.bold(title)); + + if (description) { + logger.info(' ' + description); + } + + const { success, files } = await executeSchematic( + workflow, + logger, + migration.collection.name, + migration.name, + ); + if (!success) { + return 1; + } + + let modifiedFilesText: string; + switch (files.size) { + case 0: + modifiedFilesText = 'No changes made'; + break; + case 1: + modifiedFilesText = '1 file modified'; + break; + default: + modifiedFilesText = `${files.size} files modified`; + break; + } + + logger.info(` Migration completed (${modifiedFilesText}).`); + + // Commit migration + if (commit) { + const commitPrefix = `${packageName} migration - ${migration.name}`; + const commitMessage = migration.description + ? `${commitPrefix}\n\n${migration.description}` + : commitPrefix; + const committed = commitChanges(logger, commitMessage); + if (!committed) { + // Failed to commit, something went wrong. Abort the update. + return 1; + } + } + + logger.info(''); // Extra trailing newline. + } + + return 0; +} + +/** + * @return Whether or not the commit was successful. + */ +export function commitChanges(logger: logging.Logger, message: string): boolean { + // Check if a commit is needed. + let commitNeeded: boolean; + try { + commitNeeded = hasChangesToCommit(); + } catch (err) { + logger.error(` Failed to read Git tree:\n${(err as SpawnSyncReturns).stderr}`); + + return false; + } + + if (!commitNeeded) { + logger.info(' No changes to commit after migration.'); + + return true; + } + + // Commit changes and abort on error. + try { + createCommit(message); + } catch (err) { + logger.error( + `Failed to commit update (${message}):\n${(err as SpawnSyncReturns).stderr}`, + ); + + return false; + } + + // Notify user of the commit. + const hash = findCurrentGitSha(); + const shortMessage = message.split('\n')[0]; + if (hash) { + logger.info(` Committed migration step (${getShortHash(hash)}): ${shortMessage}.`); + } else { + // Commit was successful, but reading the hash was not. Something weird happened, + // but nothing that would stop the update. Just log the weirdness and continue. + logger.info(` Committed migration step: ${shortMessage}.`); + logger.warn(' Failed to look up hash of most recent commit, continuing anyways.'); + } + + return true; +} + +async function getOptionalMigrationsToRun( + logger: logging.Logger, + optionalMigrations: MigrationSchematicDescription[], + packageName: string, +): Promise { + const numberOfMigrations = optionalMigrations.length; + logger.info( + `This package has ${numberOfMigrations} optional migration${ + numberOfMigrations > 1 ? 's' : '' + } that can be executed.`, + ); + + if (!isTTY()) { + for (const migration of optionalMigrations) { + const { title } = getMigrationTitleAndDescription(migration); + logger.info(colors.cyan(figures.pointer) + ' ' + colors.bold(title)); + logger.info(colors.gray(` ng update ${packageName} --name ${migration.name}`)); + logger.info(''); // Extra trailing newline. + } + + return undefined; + } + + logger.info( + 'Optional migrations may be skipped and executed after the update process, if preferred.', + ); + logger.info(''); // Extra trailing newline. + + const answer = await askChoices( + `Select the migrations that you'd like to run`, + optionalMigrations.map((migration) => { + const { title, documentation } = getMigrationTitleAndDescription(migration); + + return { + name: `[${colors.white(migration.name)}] ${title}${documentation ? ` (${documentation})` : ''}`, + value: migration.name, + checked: migration.recommended, + }; + }), + null, + ); + + logger.info(''); // Extra trailing newline. + + return optionalMigrations.filter(({ name }) => answer?.includes(name)); +} + +function getMigrationTitleAndDescription(migration: MigrationSchematicDescription): { + title: string; + description: string; + documentation?: string; +} { + const [title, ...description] = migration.description.split('. '); + + return { + title: title.endsWith('.') ? title : title + '.', + description: description.join('.\n '), + documentation: migration.documentation + ? new URL(migration.documentation, 'https://angular.dev').href + : undefined, + }; +} From a53e666000e4ecef89aa1f4eb635e98f74dd7c03 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 9 Dec 2025 12:25:55 -0500 Subject: [PATCH 1949/2162] test: rename npm E2E suite to webpack The current `npm` E2E test suite is actually the browser builder (Webpack-based) tests. The name has now been updated to better reflect the test behavior. --- .github/workflows/ci.yml | 6 +++--- .github/workflows/pr.yml | 4 ++-- tests/legacy-cli/e2e.bzl | 9 ++++++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40b069bfdc56..bafa463a93ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,7 +80,7 @@ jobs: matrix: os: [ubuntu-latest] node: [20, 22, 24] - subset: [npm, esbuild] + subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] runs-on: ${{ matrix.os }} steps: @@ -134,7 +134,7 @@ jobs: matrix: os: [windows-2025] node: [22] - subset: [npm, esbuild] + subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] runs-on: ${{ matrix.os }} steps: @@ -187,7 +187,7 @@ jobs: matrix: os: [ubuntu-latest] node: [22] - subset: [npm, esbuild] + subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0f2448fd697f..1bcb672e4c58 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -110,7 +110,7 @@ jobs: matrix: os: [ubuntu-latest] node: [22] - subset: [npm, esbuild] + subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] runs-on: ${{ matrix.os }} steps: @@ -203,7 +203,7 @@ jobs: matrix: os: [ubuntu-latest] node: [22] - subset: [npm, esbuild] + subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] runs-on: ${{ matrix.os }} steps: diff --git a/tests/legacy-cli/e2e.bzl b/tests/legacy-cli/e2e.bzl index 62a89ee6a76f..07004fcb09d0 100644 --- a/tests/legacy-cli/e2e.bzl +++ b/tests/legacy-cli/e2e.bzl @@ -83,11 +83,14 @@ def e2e_suites(name, runner, data): # Default target meant to be run manually for debugging, customizing test cli via bazel _e2e_tests(name + "_" + toolchain_name, runner, data = data, toolchain = toolchain, tags = ["manual"]) - _e2e_suite(name, runner, "npm", data, toolchain_name, toolchain) + # Main test suites + _e2e_suite(name, runner, "webpack", data, toolchain_name, toolchain) + _e2e_suite(name, runner, "esbuild", data, toolchain_name, toolchain) + + # Package manager subsets _e2e_suite(name, runner, "bun", data, toolchain_name, toolchain) _e2e_suite(name, runner, "pnpm", data, toolchain_name, toolchain) _e2e_suite(name, runner, "yarn", data, toolchain_name, toolchain) - _e2e_suite(name, runner, "esbuild", data, toolchain_name, toolchain) # Saucelabs tests are only run on the default toolchain _e2e_suite(name, runner, "saucelabs", data) @@ -162,7 +165,7 @@ def _e2e_suite(name, runner, type, data, toolchain_name = "", toolchain = None): args.append("--esbuild") tests = BROWSER_TESTS ignore = None - elif type == "npm": + elif type == "webpack": tests = None ignore = BROWSER_TESTS + WEBPACK_IGNORE_TESTS From 9f2880706e2fa79b413c3084e56e058899b24357 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 9 Dec 2025 13:11:50 -0500 Subject: [PATCH 1950/2162] ci: correctly build E2E webpack tests on Windows --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bafa463a93ea..204d0717a0a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: run: | pnpm bazel build \ --config=e2e \ - //tests/legacy-cli:e2e.npm_node22 \ + //tests/legacy-cli:e2e.webpack_node22 \ //tests/legacy-cli:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests From 4cdc66bae261064e47966b9fa11090ab76752034 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 9 Dec 2025 15:25:32 -0500 Subject: [PATCH 1951/2162] ci: remove single value os matrix field from E2E jobs Since the `os` matrix field only ever has a single value, there is no need to include it in the matrix itself. This also shortens the display name by removing the otherwise static value from each matrix job entry. --- .github/workflows/ci.yml | 12 ++++-------- .github/workflows/pr.yml | 9 +++------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 204d0717a0a6..842f021615c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,11 +78,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] node: [20, 22, 24] subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a @@ -132,11 +131,10 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-2025] node: [22] subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] - runs-on: ${{ matrix.os }} + runs-on: windows-2025 steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a @@ -160,11 +158,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] node: [22] subset: [yarn, pnpm, bun] shard: [0, 1, 2] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a @@ -185,11 +182,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] node: [22] subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 1bcb672e4c58..d372b118b5ac 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -108,11 +108,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] node: [22] subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a @@ -178,11 +177,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] node: [22] subset: [yarn, pnpm, bun] shard: [0, 1, 2] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a @@ -201,11 +199,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] node: [22] subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a From 30b5d81b4adafca32c94672a39574daa2e3fc8b7 Mon Sep 17 00:00:00 2001 From: Angelo Parziale Date: Wed, 10 Dec 2025 02:03:31 +0100 Subject: [PATCH 1952/2162] fix(@angular/build): Add custom middleware for to present an Angular-tailored message New Blocked request page for custom host --- .../tests/options/allowed-hosts_spec.ts | 3 + .../vite/middlewares/host-check-middleware.ts | 76 +++++++++++++++++++ .../build/src/tools/vite/middlewares/index.ts | 1 + .../vite/plugins/setup-middlewares-plugin.ts | 3 + 4 files changed, 83 insertions(+) create mode 100644 packages/angular/build/src/tools/vite/middlewares/host-check-middleware.ts diff --git a/packages/angular/build/src/builders/dev-server/tests/options/allowed-hosts_spec.ts b/packages/angular/build/src/builders/dev-server/tests/options/allowed-hosts_spec.ts index 8e96c7b4b4b0..775e057bece6 100644 --- a/packages/angular/build/src/builders/dev-server/tests/options/allowed-hosts_spec.ts +++ b/packages/angular/build/src/builders/dev-server/tests/options/allowed-hosts_spec.ts @@ -10,6 +10,7 @@ import { executeDevServer } from '../../index'; import { executeOnceAndGet } from '../execute-fetch'; import { describeServeBuilder } from '../jasmine-helpers'; import { BASE_OPTIONS, DEV_SERVER_BUILDER_INFO } from '../setup'; +import { text } from 'node:stream/consumers'; const FETCH_HEADERS = Object.freeze({ Host: 'example.com' }); @@ -33,6 +34,7 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT expect(result?.success).toBeTrue(); expect(response?.statusCode).toBe(403); + expect(response && (await text(response))).toContain('angular.json'); }); it('does not allow an invalid host when option is an empty array', async () => { @@ -47,6 +49,7 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT expect(result?.success).toBeTrue(); expect(response?.statusCode).toBe(403); + expect(response && (await text(response))).toContain('angular.json'); }); it('allows a host when specified in the option', async () => { diff --git a/packages/angular/build/src/tools/vite/middlewares/host-check-middleware.ts b/packages/angular/build/src/tools/vite/middlewares/host-check-middleware.ts new file mode 100644 index 000000000000..8561354812b3 --- /dev/null +++ b/packages/angular/build/src/tools/vite/middlewares/host-check-middleware.ts @@ -0,0 +1,76 @@ +/** + * @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 { IncomingMessage, ServerResponse } from 'node:http'; +import type { Connect } from 'vite'; + +export function patchHostValidationMiddleware(middlewares: Connect.Server): void { + const entry = middlewares.stack.find( + ({ handle }) => + typeof handle === 'function' && handle.name.startsWith('hostValidationMiddleware'), + ); + + if (typeof entry?.handle !== 'function') { + return; + } + + const originalHandle = entry.handle as Connect.NextHandleFunction; + + entry.handle = function angularHostValidationMiddleware( + req: IncomingMessage, + res: ServerResponse, + next: (err?: unknown) => void, + ) { + originalHandle( + req, + { + writeHead: (code) => { + res.writeHead(code, { 'content-type': 'text/html' }); + }, + end: () => { + const hostname = req.headers.host?.toLowerCase().split(':')[0] ?? ''; + res.end(html403(hostname)); + }, + } as ServerResponse, + next, + ); + }; +} + +function html403(hostname: string): string { + return ` + + + + + Blocked request + + + +
+

Blocked request. This host ("${hostname}") is not allowed.

+

To allow this host, add it to allowedHosts under the serve target in angular.json.

+
{
+  "serve": {
+    "options": {
+      "allowedHosts": ["${hostname}"]
+    }
+  }
+}
+
+ + `; +} diff --git a/packages/angular/build/src/tools/vite/middlewares/index.ts b/packages/angular/build/src/tools/vite/middlewares/index.ts index ef2db01f3aaf..1816fe26265c 100644 --- a/packages/angular/build/src/tools/vite/middlewares/index.ts +++ b/packages/angular/build/src/tools/vite/middlewares/index.ts @@ -16,3 +16,4 @@ export { export { createAngularHeadersMiddleware } from './headers-middleware'; export { createAngularComponentMiddleware } from './component-middleware'; export { createChromeDevtoolsMiddleware } from './chrome-devtools-middleware'; +export { patchHostValidationMiddleware } from './host-check-middleware'; diff --git a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts index b82cc2d3acd6..b14c2b409012 100644 --- a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts @@ -17,6 +17,7 @@ import { createAngularSsrExternalMiddleware, createAngularSsrInternalMiddleware, createChromeDevtoolsMiddleware, + patchHostValidationMiddleware, } from '../middlewares'; import { AngularMemoryOutputFiles, AngularOutputAssets } from '../utils'; @@ -109,6 +110,8 @@ export function createAngularSetupMiddlewaresPlugin( // before the built-in HTML middleware // eslint-disable-next-line @typescript-eslint/no-misused-promises return async () => { + patchHostValidationMiddleware(server.middlewares); + if (ssrMode === ServerSsrMode.ExternalSsrMiddleware) { server.middlewares.use( await createAngularSsrExternalMiddleware(server, indexHtmlTransformer), From 458bdcf701bb769fe7ffe5c172379df8438183e7 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Tue, 9 Dec 2025 18:04:31 -0700 Subject: [PATCH 1953/2162] build: update to bazel version 8.4.2 Update bazel to use version 8.4.2 --- .bazelrc | 2 +- .bazelversion | 2 +- BUILD.bazel | 12 - MODULE.bazel | 19 +- MODULE.bazel.lock | 1274 +++++++++-------------- packages/angular/ssr/BUILD.bazel | 1 - scripts/build-packages-dist.mts | 2 +- scripts/build.mts | 3 +- scripts/diff-release-package.mts | 12 +- tests/legacy-cli/e2e_runner.ts | 2 +- tools/bazel/npm_package.bzl | 3 +- tools/toolchains/BUILD.bazel | 44 + tools/toolchains/dummy_cc_toolchain.bzl | 28 + 13 files changed, 599 insertions(+), 805 deletions(-) create mode 100644 tools/toolchains/BUILD.bazel create mode 100644 tools/toolchains/dummy_cc_toolchain.bzl diff --git a/.bazelrc b/.bazelrc index 816134dca1ef..92e60820829a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -53,7 +53,7 @@ test --incompatible_strict_action_env build --experimental_remote_merkle_tree_cache # Ensure that tags applied in BUILDs propagate to actions -common --experimental_allow_tags_propagation +common --incompatible_allow_tags_propagation # Ensure sandboxing is enabled even for exclusive tests test --incompatible_exclusive_test_sandboxed diff --git a/.bazelversion b/.bazelversion index 5942a0d3a0e7..e7fdef7e2e63 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.7.1 +8.4.2 diff --git a/BUILD.bazel b/BUILD.bazel index 57090fe9772a..99bc6eb0355f 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -108,15 +108,3 @@ validate_ts_version_matching( module_lock_file = "MODULE.bazel.lock", package_json = "package.json", ) - -# This is needed following https://github.com/bazel-contrib/rules_nodejs/pull/3859 -toolchain( - name = "node22_windows_no_exec_config_toolchain", - exec_compatible_with = [], - target_compatible_with = [ - "@platforms//os:windows", - "@platforms//cpu:x86_64", - ], - toolchain = "@node22_windows_amd64//:toolchain", - toolchain_type = "@rules_nodejs//nodejs:toolchain_type", -) diff --git a/MODULE.bazel b/MODULE.bazel index 14245fe8dd2a..653a1b89dfed 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -4,21 +4,13 @@ module( name = "angular_cli", ) +bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "yq.bzl", version = "0.3.2") bazel_dep(name = "rules_nodejs", version = "6.6.2") bazel_dep(name = "aspect_rules_js", version = "2.8.3") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") -bazel_dep(name = "rules_pkg", version = "0.8.1") - -# Alow for usage of rules_pkg@0.8.1 even though other deps want a later verison. -multiple_version_override( - module_name = "rules_pkg", - versions = [ - "0.8.1", - "1.1.0", - ], -) - +bazel_dep(name = "rules_pkg", version = "1.1.0") +bazel_dep(name = "rules_cc", version = "0.1.1") bazel_dep(name = "aspect_bazel_lib", version = "2.22.0") bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "aspect_rules_esbuild", version = "0.24.0") @@ -104,9 +96,6 @@ use_repo( "node24_windows_amd64", ) -# This is needed following https://github.com/bazel-contrib/rules_nodejs/pull/3859 -register_toolchains("//:node22_windows_no_exec_config_toolchain") - npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") npm.npm_translate_lock( name = "npm", @@ -172,4 +161,6 @@ register_toolchains( "@devinfra//bazel/git-toolchain:git_macos_x86_toolchain", "@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain", "@devinfra//bazel/git-toolchain:git_windows_toolchain", + "//tools/toolchains:dummy_cc_windows_no_exec_toolchain", + "//tools/toolchains:node22_windows_no_exec_toolchain", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 16c8c8419779..62ee1d86f412 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1,5 +1,5 @@ { - "lockFileVersion": 13, + "lockFileVersion": 18, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", @@ -10,8 +10,6 @@ "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", - "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", @@ -47,11 +45,12 @@ "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", - "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "407729e232f611c3270005b016b437005daa7b1505826798ea584169a476e878", "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d", "https://bcr.bazel.build/modules/bazel_lib/3.0.0/source.json": "895f21909c6fba01d7c17914bb6c8e135982275a1b18cdaa4e62272217ef1751", @@ -93,7 +92,6 @@ "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", - "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", @@ -101,9 +99,9 @@ "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", - "https://bcr.bazel.build/modules/protobuf/29.0-rc3/source.json": "c16a6488fb279ef578da7098e605082d72ed85fc8d843eaae81e7d27d0f4625d", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", @@ -112,8 +110,8 @@ "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.11/MODULE.bazel": "9f249c5624a4788067b96b8b896be10c7e8b4375dc46f6d8e1e51100113e0992", "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", @@ -136,10 +134,10 @@ "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", + "https://bcr.bazel.build/modules/rules_java/8.14.0/source.json": "8a88c4ca9e8759da53cddc88123880565c520503321e2566b4e33d0287a3d4bc", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", - "https://bcr.bazel.build/modules/rules_java/8.5.1/source.json": "db1a77d81b059e0f84985db67a22f3f579a529a86b7997605be3d214a0abe38e", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", @@ -161,8 +159,6 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/MODULE.bazel": "9fdb5e1d50246a25761f150fcc820dc47e4052330a8408451e628804f9ca64a6", "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/source.json": "6e8c1ecc64ff8da147c1620f862ad77d7b19c5d1b52b3aa5e847d5b3d0de4cc3", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/0.8.1/MODULE.bazel": "7e9e7b5b26bd7ff012dfe63930db2f0176ddcd25e44a858fc72d63e995b6aab9", - "https://bcr.bazel.build/modules/rules_pkg/0.8.1/source.json": "15dd7e13dc303f7fcde2b55300bcb8de5c0dd08a7a7269749cbbaa0fb1dfbe16", "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", "https://bcr.bazel.build/modules/rules_pkg/1.1.0/MODULE.bazel": "9db8031e71b6ef32d1846106e10dd0ee2deac042bd9a2de22b4761b0c3036453", "https://bcr.bazel.build/modules/rules_pkg/1.1.0/source.json": "fef768df13a92ce6067e1cd0cdc47560dace01354f1d921cfb1d632511f7d608", @@ -173,12 +169,12 @@ "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", "https://bcr.bazel.build/modules/rules_python/1.0.0/source.json": "b0162a65c6312e45e7912e39abd1a7f8856c2c7e41ecc9b6dc688a6f6400a917", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", @@ -203,24 +199,22 @@ "https://bcr.bazel.build/modules/yq.bzl/0.3.2/MODULE.bazel": "0384efa70e8033d842ea73aa4b7199fa099709e236a7264345c03937166670b6", "https://bcr.bazel.build/modules/yq.bzl/0.3.2/source.json": "c4ec3e192477e154f08769e29d69e8fd36e8a4f0f623997f3e1f6f7d328f7d7d", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@aspect_rules_esbuild~//esbuild:extensions.bzl%esbuild": { + "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "rqSMJntEJnXuFCMbobmdXD0eunCrvMzbwA0vyR14UVA=", - "usagesDigest": "w3kRc6iou9hC6M+vwECvdfk0P8nsVNjHSl4Ftru44zU=", + "bzlTransitiveDigest": "YwJI8DvcTdDNYeYL/QHwByfLcjJYUIqkjOIS7wZufyE=", + "usagesDigest": "86SYlNcUMJASgUMqvnMJEEnJPg8LQekpDutWxwIGptI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "esbuild_darwin-x64": { - "bzlFile": "@@aspect_rules_esbuild~//esbuild:repositories.bzl", - "ruleClassName": "esbuild_repositories", + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", "integrity": "", @@ -228,8 +222,7 @@ } }, "esbuild_darwin-arm64": { - "bzlFile": "@@aspect_rules_esbuild~//esbuild:repositories.bzl", - "ruleClassName": "esbuild_repositories", + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", "integrity": "", @@ -237,8 +230,7 @@ } }, "esbuild_linux-x64": { - "bzlFile": "@@aspect_rules_esbuild~//esbuild:repositories.bzl", - "ruleClassName": "esbuild_repositories", + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", "integrity": "", @@ -246,8 +238,7 @@ } }, "esbuild_linux-arm64": { - "bzlFile": "@@aspect_rules_esbuild~//esbuild:repositories.bzl", - "ruleClassName": "esbuild_repositories", + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", "integrity": "", @@ -255,8 +246,7 @@ } }, "esbuild_win32-x64": { - "bzlFile": "@@aspect_rules_esbuild~//esbuild:repositories.bzl", - "ruleClassName": "esbuild_repositories", + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", "attributes": { "esbuild_version": "0.19.9", "integrity": "", @@ -264,16 +254,14 @@ } }, "esbuild_toolchains": { - "bzlFile": "@@aspect_rules_esbuild~//esbuild/private:toolchains_repo.bzl", - "ruleClassName": "toolchains_repo", + "repoRuleId": "@@aspect_rules_esbuild+//esbuild/private:toolchains_repo.bzl%toolchains_repo", "attributes": { "esbuild_version": "0.19.9", "user_repository_name": "esbuild" } }, "npm__esbuild_0.19.9": { - "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", - "ruleClassName": "npm_import_rule", + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", "attributes": { "package": "esbuild", "version": "0.19.9", @@ -300,8 +288,7 @@ } }, "npm__esbuild_0.19.9__links": { - "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", - "ruleClassName": "npm_import_links", + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", "attributes": { "package": "esbuild", "version": "0.19.9", @@ -327,104 +314,103 @@ }, "recordedRepoMappingEntries": [ [ - "aspect_bazel_lib~", + "aspect_bazel_lib+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "aspect_bazel_lib~", + "aspect_bazel_lib+", "bazel_tools", "bazel_tools" ], [ - "aspect_bazel_lib~", + "aspect_bazel_lib+", "tar.bzl", - "tar.bzl~" + "tar.bzl+" ], [ - "aspect_rules_esbuild~", + "aspect_rules_esbuild+", "aspect_rules_js", - "aspect_rules_js~" + "aspect_rules_js+" ], [ - "aspect_rules_esbuild~", + "aspect_rules_esbuild+", "aspect_tools_telemetry_report", - "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" + "aspect_tools_telemetry++telemetry+aspect_tools_telemetry_report" ], [ - "aspect_rules_esbuild~", + "aspect_rules_esbuild+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "aspect_bazel_lib", - "aspect_bazel_lib~" + "aspect_bazel_lib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "aspect_rules_js", - "aspect_rules_js~" + "aspect_rules_js+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "aspect_tools_telemetry_report", - "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" + "aspect_tools_telemetry++telemetry+aspect_tools_telemetry_report" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_lib", - "bazel_lib~" + "bazel_lib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_tools", "bazel_tools" ], [ - "bazel_lib~", + "bazel_lib+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "bazel_lib~", + "bazel_lib+", "bazel_tools", "bazel_tools" ], [ - "tar.bzl~", + "tar.bzl+", "bazel_lib", - "bazel_lib~" + "bazel_lib+" ], [ - "tar.bzl~", + "tar.bzl+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "tar.bzl~", + "tar.bzl+", "tar.bzl", - "tar.bzl~" + "tar.bzl+" ] ] } }, - "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { + "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "h7KQnZdYZPnFLrqYi5kPqRaskCrLELwUgRITBo08M+I=", - "usagesDigest": "dfeONN+LabTG4hYuh2tcpxqorjlWOOipsrJa/4UI3uc=", + "bzlTransitiveDigest": "fFcLmS3p3sFcn/GGOh4LxupnmV3++FYtXPG7KyQUZx4=", + "usagesDigest": "Tr4lh/DJy/YCO5nByO5cQarJwc2X2Vqej4F+rmkNim0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "pnpm": { - "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", - "ruleClassName": "npm_import_rule", + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", "attributes": { "package": "pnpm", "version": "8.15.9", @@ -451,8 +437,7 @@ } }, "pnpm__links": { - "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", - "ruleClassName": "npm_import_links", + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", "attributes": { "package": "pnpm", "version": "8.15.9", @@ -478,106 +463,105 @@ }, "recordedRepoMappingEntries": [ [ - "aspect_bazel_lib~", + "aspect_bazel_lib+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "aspect_bazel_lib~", + "aspect_bazel_lib+", "bazel_tools", "bazel_tools" ], [ - "aspect_bazel_lib~", + "aspect_bazel_lib+", "tar.bzl", - "tar.bzl~" + "tar.bzl+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "aspect_bazel_lib", - "aspect_bazel_lib~" + "aspect_bazel_lib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "aspect_rules_js", - "aspect_rules_js~" + "aspect_rules_js+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "aspect_tools_telemetry_report", - "aspect_tools_telemetry~~telemetry~aspect_tools_telemetry_report" + "aspect_tools_telemetry++telemetry+aspect_tools_telemetry_report" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_features", - "bazel_features~" + "bazel_features+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_lib", - "bazel_lib~" + "bazel_lib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "aspect_rules_js~", + "aspect_rules_js+", "bazel_tools", "bazel_tools" ], [ - "bazel_features~", + "bazel_features+", "bazel_features_globals", - "bazel_features~~version_extension~bazel_features_globals" + "bazel_features++version_extension+bazel_features_globals" ], [ - "bazel_features~", + "bazel_features+", "bazel_features_version", - "bazel_features~~version_extension~bazel_features_version" + "bazel_features++version_extension+bazel_features_version" ], [ - "bazel_lib~", + "bazel_lib+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "bazel_lib~", + "bazel_lib+", "bazel_tools", "bazel_tools" ], [ - "tar.bzl~", + "tar.bzl+", "bazel_lib", - "bazel_lib~" + "bazel_lib+" ], [ - "tar.bzl~", + "tar.bzl+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "tar.bzl~", + "tar.bzl+", "tar.bzl", - "tar.bzl~" + "tar.bzl+" ] ] } }, - "@@aspect_rules_ts~//ts:extensions.bzl%ext": { + "@@aspect_rules_ts+//ts:extensions.bzl%ext": { "general": { - "bzlTransitiveDigest": "pEu5+6q07zdUqscbVkhWTNLGT9OGRpnFCF4OGHv1n1k=", - "usagesDigest": "PB65rYTG/QbLoSQfRhLDeERG+0m7bjTPzYXBqieQ5/4=", + "bzlTransitiveDigest": "I+tE9vGTL3Se93kLUNxPQQZiIfYBgupRtrzLY383/Wk=", + "usagesDigest": "aaqqxEFKCRGFkeAf0pKmXvZZTLGYIk3pQsDFG28ZbNg=", "recordedFileInputs": { - "@@rules_browsers~//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" + "@@rules_browsers+//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" }, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "angular_cli_npm_typescript": { - "bzlFile": "@@aspect_rules_ts~//ts/private:npm_repositories.bzl", - "ruleClassName": "http_archive_version", + "repoRuleId": "@@aspect_rules_ts+//ts/private:npm_repositories.bzl%http_archive_version", "attributes": { "version": "5.9.3", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", @@ -587,8 +571,7 @@ } }, "rules_angular_npm_typescript": { - "bzlFile": "@@aspect_rules_ts~//ts/private:npm_repositories.bzl", - "ruleClassName": "http_archive_version", + "repoRuleId": "@@aspect_rules_ts+//ts/private:npm_repositories.bzl%http_archive_version", "attributes": { "version": "5.9.2", "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", @@ -598,8 +581,7 @@ } }, "npm_typescript": { - "bzlFile": "@@aspect_rules_ts~//ts/private:npm_repositories.bzl", - "ruleClassName": "http_archive_version", + "repoRuleId": "@@aspect_rules_ts+//ts/private:npm_repositories.bzl%http_archive_version", "attributes": { "version": "5.9.3", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", @@ -609,11 +591,10 @@ } }, "npm_rules_browsers_typescript": { - "bzlFile": "@@aspect_rules_ts~//ts/private:npm_repositories.bzl", - "ruleClassName": "http_archive_version", + "repoRuleId": "@@aspect_rules_ts+//ts/private:npm_repositories.bzl%http_archive_version", "attributes": { "version": "", - "version_from": "@@rules_browsers~//:package.json", + "version_from": "@@rules_browsers+//:package.json", "integrity": "", "urls": [ "https://registry.npmjs.org/typescript/-/typescript-{}.tgz" @@ -623,29 +604,28 @@ }, "recordedRepoMappingEntries": [ [ - "aspect_rules_ts~", + "aspect_rules_ts+", "aspect_rules_ts", - "aspect_rules_ts~" + "aspect_rules_ts+" ], [ - "aspect_rules_ts~", + "aspect_rules_ts+", "bazel_tools", "bazel_tools" ] ] } }, - "@@aspect_tools_telemetry~//:extension.bzl%telemetry": { + "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=", - "usagesDigest": "jUf82HrX+VUjDf7DwXXgNndO40SIF/kS1l2uXEdbcwQ=", + "usagesDigest": "Zv1e82KAhTeVpSLFVowQBovmAl3TulEXhTXUWLFY9TU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "aspect_tools_telemetry_report": { - "bzlFile": "@@aspect_tools_telemetry~//:extension.bzl", - "ruleClassName": "tel_repository", + "repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository", "attributes": { "deps": { "aspect_rules_js": "2.8.3", @@ -658,38 +638,36 @@ }, "recordedRepoMappingEntries": [ [ - "aspect_tools_telemetry~", + "aspect_tools_telemetry+", "bazel_lib", - "bazel_lib~" + "bazel_lib+" ], [ - "aspect_tools_telemetry~", + "aspect_tools_telemetry+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ] ] } }, - "@@pybind11_bazel~//:python_configure.bzl%extension": { + "@@pybind11_bazel+//:python_configure.bzl%extension": { "general": { - "bzlTransitiveDigest": "dFd3A3f+jPCss+EDKMp/jxjcUhfMku130eT1KGxSCwA=", - "usagesDigest": "gNvOHVcAlwgDsNXD0amkv2CC96mnaCThPQoE44y8K+w=", + "bzlTransitiveDigest": "4rSUGWibZDYLhHR+8eMwTNwAwdIv+xjVrtQ+gHtWHq4=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", "recordedFileInputs": { - "@@pybind11_bazel~//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" }, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "local_config_python": { - "bzlFile": "@@pybind11_bazel~//:python_configure.bzl", - "ruleClassName": "python_configure", + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", "attributes": {} }, "pybind11": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "build_file": "@@pybind11_bazel~//:pybind11.BUILD", + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", "strip_prefix": "pybind11-2.11.1", "urls": [ "https://github.com/pybind/pybind11/archive/v2.11.1.zip" @@ -699,60 +677,56 @@ }, "recordedRepoMappingEntries": [ [ - "pybind11_bazel~", + "pybind11_bazel+", "bazel_tools", "bazel_tools" ] ] } }, - "@@rules_angular~//setup:extensions.bzl%rules_angular": { + "@@rules_angular+//setup:extensions.bzl%rules_angular": { "general": { "bzlTransitiveDigest": "fkaH7HMicL3g7/NDaFzlq39kcLopMyQ3KdbDn+5CRzA=", - "usagesDigest": "mthsJSuRvcThgmaeFEDgFmVR6HwM1CSMSOyLlJaCSI0=", + "usagesDigest": "ZinuLP7QHxaW5achD0Vz19qElMu4r2LvGvh96Z5zYlA=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "components_rules_angular_configurable_deps": { - "bzlFile": "@@rules_angular~//setup:repositories.bzl", - "ruleClassName": "configurable_deps_repo", + "repoRuleId": "@@rules_angular+//setup:repositories.bzl%configurable_deps_repo", "attributes": { - "angular_compiler_cli": "@@rules_angular~//:node_modules/@angular/compiler-cli", - "typescript": "@@rules_angular~//:node_modules/typescript" + "angular_compiler_cli": "@@rules_angular+//:node_modules/@angular/compiler-cli", + "typescript": "@@rules_angular+//:node_modules/typescript" } }, "rules_angular_configurable_deps": { - "bzlFile": "@@rules_angular~//setup:repositories.bzl", - "ruleClassName": "configurable_deps_repo", + "repoRuleId": "@@rules_angular+//setup:repositories.bzl%configurable_deps_repo", "attributes": { - "angular_compiler_cli": "@@rules_angular~//:node_modules/@angular/compiler-cli", - "typescript": "@@rules_angular~//:node_modules/typescript-local" + "angular_compiler_cli": "@@rules_angular+//:node_modules/@angular/compiler-cli", + "typescript": "@@rules_angular+//:node_modules/typescript-local" } }, "dev_infra_rules_angular_configurable_deps": { - "bzlFile": "@@rules_angular~//setup:repositories.bzl", - "ruleClassName": "configurable_deps_repo", + "repoRuleId": "@@rules_angular+//setup:repositories.bzl%configurable_deps_repo", "attributes": { - "angular_compiler_cli": "@@rules_angular~//:node_modules/@angular/compiler-cli", - "typescript": "@@rules_angular~//:node_modules/typescript" + "angular_compiler_cli": "@@rules_angular+//:node_modules/@angular/compiler-cli", + "typescript": "@@rules_angular+//:node_modules/typescript" } } }, "recordedRepoMappingEntries": [] } }, - "@@rules_browsers~//browsers:extensions.bzl%browsers": { + "@@rules_browsers+//browsers:extensions.bzl%browsers": { "general": { "bzlTransitiveDigest": "ljZlVgWkQJnI6EvlHVfYit2EttUE52gDTbvmota5YO8=", - "usagesDigest": "1PlExi+b77pSr2tAxFCVbpCtFoA7oixHabaL3dmas4Y=", + "usagesDigest": "FS7q5WaIwg3KirS3njhuPFkTIBYvDaTInVGrlzu0XL8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "rules_browsers_chrome_linux": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "1419fa328bd7ea2697f26412ec693867516e4ef23c32eb13143a0b0b179b604b", "urls": [ @@ -770,8 +744,7 @@ } }, "rules_browsers_chrome_mac": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "792cbf9b77219b4476e41c49647bcd15e55f0988002fa1e4e6a720eb430c7eda", "urls": [ @@ -789,8 +762,7 @@ } }, "rules_browsers_chrome_mac_arm": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "f0c1917769775e826dfa69936381d0d95b06fe67cf631ecd842380d5de0e4c7f", "urls": [ @@ -808,8 +780,7 @@ } }, "rules_browsers_chrome_win64": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "6ce0f20dd743a804890f45f5349370e1aa7cd3ac3482c04686fcff5fafd01bb3", "urls": [ @@ -827,8 +798,7 @@ } }, "rules_browsers_chromedriver_linux": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "baf4bf9d22881265487732f17d35a49e9aadd0837aa5c1c1eea520c8aa24a97f", "urls": [ @@ -844,8 +814,7 @@ } }, "rules_browsers_chromedriver_mac": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "87560768d5aa203b37c0a1b8459a35b05e4ece54afee2df530f3bc33de4f63c5", "urls": [ @@ -861,8 +830,7 @@ } }, "rules_browsers_chromedriver_mac_arm": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "99821795fa7c87eb92fb15248e23b237c83f397486d22ad9a10771622c36a5a0", "urls": [ @@ -878,8 +846,7 @@ } }, "rules_browsers_chromedriver_win64": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "6e180e234a710c3cbf69566f64a662ed85473db6ae82275fd359f80ab288df99", "urls": [ @@ -895,8 +862,7 @@ } }, "rules_browsers_firefox_linux": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "00fb922cda6bab971e02bcbfb77923b0a234388ed7d77c23506ca0a1a61d4a86", "urls": [ @@ -912,8 +878,7 @@ } }, "rules_browsers_firefox_mac": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "1c4556480deac8424049f3081a6de1e2c6de619bab3e8ce53e5a497b8d6d919e", "urls": [ @@ -929,8 +894,7 @@ } }, "rules_browsers_firefox_mac_arm": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "1c4556480deac8424049f3081a6de1e2c6de619bab3e8ce53e5a497b8d6d919e", "urls": [ @@ -946,8 +910,7 @@ } }, "rules_browsers_firefox_win64": { - "bzlFile": "@@rules_browsers~//browsers/private:browser_repo.bzl", - "ruleClassName": "browser_repo", + "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { "sha256": "4b0345c113242653d923b369fcbd48e3089c57658f8c1542f887c8a375d50306", "urls": [ @@ -966,17 +929,16 @@ "recordedRepoMappingEntries": [] } }, - "@@rules_fuzzing~//fuzzing/private:extensions.bzl%non_module_dependencies": { + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { "general": { - "bzlTransitiveDigest": "VMhyxXtdJvrNlLts7afAymA+pOatXuh5kLdxzVAZ/04=", - "usagesDigest": "YnIrdgwnf3iCLfChsltBdZ7yOJh706lpa2vww/i2pDI=", + "bzlTransitiveDigest": "v2H25KPHEkN56IHR41S67Kzp5Xjxd75GBiazhON8jzc=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "platforms": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "urls": [ "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", @@ -986,8 +948,7 @@ } }, "rules_python": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", "strip_prefix": "rules_python-0.28.0", @@ -995,8 +956,7 @@ } }, "bazel_skylib": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", "urls": [ @@ -1006,8 +966,7 @@ } }, "com_google_absl": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "urls": [ "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" @@ -1017,31 +976,27 @@ } }, "rules_fuzzing_oss_fuzz": { - "bzlFile": "@@rules_fuzzing~//fuzzing/private/oss_fuzz:repository.bzl", - "ruleClassName": "oss_fuzz_repository", + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", "attributes": {} }, "honggfuzz": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { - "build_file": "@@rules_fuzzing~//:honggfuzz.BUILD", + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", "url": "https://github.com/google/honggfuzz/archive/2.5.zip", "strip_prefix": "honggfuzz-2.5" } }, "rules_fuzzing_jazzer": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_jar", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", "attributes": { "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" } }, "rules_fuzzing_jazzer_api": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_jar", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", "attributes": { "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" @@ -1050,47 +1005,23 @@ }, "recordedRepoMappingEntries": [ [ - "rules_fuzzing~", + "rules_fuzzing+", "bazel_tools", "bazel_tools" ] ] } }, - "@@rules_java~//java:rules_java_deps.bzl%compatibility_proxy": { + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "C4xqrMy1wN4iuTN6Z2eCm94S5XingHhD6uwrIXvCxVI=", - "usagesDigest": "pwHZ+26iLgQdwvdZeA5wnAjKnNI3y6XO2VbhOTeo5h8=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "compatibility_proxy": { - "bzlFile": "@@rules_java~//java:rules_java_deps.bzl", - "ruleClassName": "_compatibility_proxy_repo_rule", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [ - [ - "rules_java~", - "bazel_tools", - "bazel_tools" - ] - ] - } - }, - "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { - "general": { - "bzlTransitiveDigest": "eecmTsmdIQveoA97hPtH3/Ej/kugbdCI24bhXIXaly8=", - "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=", + "bzlTransitiveDigest": "OlvsB0HsvxbR8ZN+J9Vf00X/+WVz/Y/5Xrq2LgcVfdo=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "com_github_jetbrains_kotlin_git": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", - "ruleClassName": "kotlin_compiler_git_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", "attributes": { "urls": [ "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" @@ -1099,16 +1030,14 @@ } }, "com_github_jetbrains_kotlin": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:compiler.bzl", - "ruleClassName": "kotlin_capabilities_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", "attributes": { "git_repository_name": "com_github_jetbrains_kotlin_git", "compiler_version": "1.9.23" } }, "com_github_google_ksp": { - "bzlFile": "@@rules_kotlin~//src/main/starlark/core/repositories:ksp.bzl", - "ruleClassName": "ksp_compiler_plugin_repository", + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", "attributes": { "urls": [ "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" @@ -1118,8 +1047,7 @@ } }, "com_github_pinterest_ktlint": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_file", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", "attributes": { "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", "urls": [ @@ -1129,8 +1057,7 @@ } }, "rules_android": { - "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", - "ruleClassName": "http_archive", + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", "strip_prefix": "rules_android-0.1.1", @@ -1142,24 +1069,23 @@ }, "recordedRepoMappingEntries": [ [ - "rules_kotlin~", + "rules_kotlin+", "bazel_tools", "bazel_tools" ] ] } }, - "@@rules_nodejs~//nodejs:extensions.bzl%node": { + "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "tDPYIzJ/dcdh6jHCAxQXiu9fk5u6dI6a2j28VcR1w6E=", + "usagesDigest": "/b/T+Q3LJcpInmNhx8xutZ9Uf0JlyC5a0jCoKFvtDS0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "nodejs_linux_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1172,8 +1098,7 @@ } }, "nodejs_linux_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1186,8 +1111,7 @@ } }, "nodejs_linux_s390x": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1200,8 +1124,7 @@ } }, "nodejs_linux_ppc64le": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1214,8 +1137,7 @@ } }, "nodejs_darwin_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1228,8 +1150,7 @@ } }, "nodejs_darwin_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1242,8 +1163,7 @@ } }, "nodejs_windows_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1256,8 +1176,7 @@ } }, "nodejs_windows_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1270,29 +1189,25 @@ } }, "nodejs": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "nodejs" } }, "nodejs_host": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "nodejs" } }, "nodejs_toolchains": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_toolchains_repo.bzl", - "ruleClassName": "nodejs_toolchains_repo", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", "attributes": { "user_node_repository_name": "nodejs" } }, "node20_linux_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1305,8 +1220,7 @@ } }, "node20_linux_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1319,8 +1233,7 @@ } }, "node20_linux_s390x": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1333,8 +1246,7 @@ } }, "node20_linux_ppc64le": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1347,8 +1259,7 @@ } }, "node20_darwin_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1361,8 +1272,7 @@ } }, "node20_darwin_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1375,8 +1285,7 @@ } }, "node20_windows_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1389,8 +1298,7 @@ } }, "node20_windows_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1403,29 +1311,25 @@ } }, "node20": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "node20" } }, "node20_host": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "node20" } }, "node20_toolchains": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_toolchains_repo.bzl", - "ruleClassName": "nodejs_toolchains_repo", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", "attributes": { "user_node_repository_name": "node20" } }, "node22_linux_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1438,8 +1342,7 @@ } }, "node22_linux_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1452,8 +1355,7 @@ } }, "node22_linux_s390x": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1466,8 +1368,7 @@ } }, "node22_linux_ppc64le": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1480,8 +1381,7 @@ } }, "node22_darwin_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1494,8 +1394,7 @@ } }, "node22_darwin_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1508,8 +1407,7 @@ } }, "node22_windows_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1522,8 +1420,7 @@ } }, "node22_windows_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1536,29 +1433,25 @@ } }, "node22": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "node22" } }, "node22_host": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "node22" } }, "node22_toolchains": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_toolchains_repo.bzl", - "ruleClassName": "nodejs_toolchains_repo", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", "attributes": { "user_node_repository_name": "node22" } }, "node24_linux_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1571,8 +1464,7 @@ } }, "node24_linux_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1585,8 +1477,7 @@ } }, "node24_linux_s390x": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1599,8 +1490,7 @@ } }, "node24_linux_ppc64le": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1613,8 +1503,7 @@ } }, "node24_darwin_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1627,8 +1516,7 @@ } }, "node24_darwin_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1641,8 +1529,7 @@ } }, "node24_windows_amd64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1655,8 +1542,7 @@ } }, "node24_windows_arm64": { - "bzlFile": "@@rules_nodejs~//nodejs:repositories.bzl", - "ruleClassName": "_nodejs_repositories", + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, "node_repositories": {}, @@ -1669,22 +1555,19 @@ } }, "node24": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "node24" } }, "node24_host": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_repo_host_os_alias.bzl", - "ruleClassName": "nodejs_repo_host_os_alias", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", "attributes": { "user_node_repository_name": "node24" } }, "node24_toolchains": { - "bzlFile": "@@rules_nodejs~//nodejs/private:nodejs_toolchains_repo.bzl", - "ruleClassName": "nodejs_toolchains_repo", + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", "attributes": { "user_node_repository_name": "node24" } @@ -1693,16 +1576,16 @@ "recordedRepoMappingEntries": [] } }, - "@@rules_python~//python/extensions:pip.bzl%pip": { + "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "VKf3JZIRvp7gyc5Q9pSqri7bmB3079s5o6Yg7IaUHZI=", - "usagesDigest": "K3E4RGDnEgGXkrLOS8/ma4NTUiLvGkMrRIhPiFxv8u0=", + "bzlTransitiveDigest": "k4yH+pmbTp1up4vf3Ew6RCqsUBcBaBznUiFqEh8KtZ4=", + "usagesDigest": "AK1R124YPWwAs8z1CQYyjYuci8RO5Ofot+EP5ZCNQDc=", "recordedFileInputs": { - "@@rules_python~//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", - "@@rules_fuzzing~//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", - "@@rules_python~//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556", - "@@protobuf~//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", - "@@rules_python~//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc" + "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@rules_python+//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc", + "@@rules_python+//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", + "@@rules_python+//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556" }, "recordedDirentsInputs": {}, "envVariables": { @@ -1711,238 +1594,217 @@ }, "generatedRepoSpecs": { "pip_deps_310_numpy": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", "repo": "pip_deps_310", "requirement": "numpy<=1.26.1" } }, "pip_deps_310_setuptools": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", "repo": "pip_deps_310", "requirement": "setuptools<=70.3.0" } }, "pip_deps_311_numpy": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "pip_deps_311", "requirement": "numpy<=1.26.1" } }, "pip_deps_311_setuptools": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "pip_deps_311", "requirement": "setuptools<=70.3.0" } }, "pip_deps_312_numpy": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", "repo": "pip_deps_312", "requirement": "numpy<=1.26.1" } }, "pip_deps_312_setuptools": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", "repo": "pip_deps_312", "requirement": "setuptools<=70.3.0" } }, "pip_deps_38_numpy": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", "repo": "pip_deps_38", "requirement": "numpy<=1.26.1" } }, "pip_deps_38_setuptools": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", "repo": "pip_deps_38", "requirement": "setuptools<=70.3.0" } }, "pip_deps_39_numpy": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", "repo": "pip_deps_39", "requirement": "numpy<=1.26.1" } }, "pip_deps_39_setuptools": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@pip_deps//{name}:{target}", - "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", "repo": "pip_deps_39", "requirement": "setuptools<=70.3.0" } }, "rules_fuzzing_py_deps_310_absl_py": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", "repo": "rules_fuzzing_py_deps_310", "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" } }, "rules_fuzzing_py_deps_310_six": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_10_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", "repo": "rules_fuzzing_py_deps_310", "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" } }, "rules_fuzzing_py_deps_311_absl_py": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_fuzzing_py_deps_311", "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" } }, "rules_fuzzing_py_deps_311_six": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_fuzzing_py_deps_311", "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" } }, "rules_fuzzing_py_deps_312_absl_py": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", "repo": "rules_fuzzing_py_deps_312", "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" } }, "rules_fuzzing_py_deps_312_six": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", "repo": "rules_fuzzing_py_deps_312", "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" } }, "rules_fuzzing_py_deps_38_absl_py": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", "repo": "rules_fuzzing_py_deps_38", "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" } }, "rules_fuzzing_py_deps_38_six": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_8_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", "repo": "rules_fuzzing_py_deps_38", "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" } }, "rules_fuzzing_py_deps_39_absl_py": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", "repo": "rules_fuzzing_py_deps_39", "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" } }, "rules_fuzzing_py_deps_39_six": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", "extra_pip_args": [ "--require-hashes" ], - "python_interpreter_target": "@@rules_python~~python~python_3_9_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", "repo": "rules_fuzzing_py_deps_39", "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" } }, "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -1956,7 +1818,7 @@ "cp311_windows_x86_64" ], "filename": "backports.tarfile-1.2.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "backports-tarfile==1.2.0", "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", @@ -1966,8 +1828,7 @@ } }, "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -1985,7 +1846,7 @@ "https://pypi.org/simple" ], "filename": "backports_tarfile-1.2.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "backports-tarfile==1.2.0", "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", @@ -1995,8 +1856,7 @@ } }, "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2010,7 +1870,7 @@ "cp311_windows_x86_64" ], "filename": "certifi-2024.8.30-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "certifi==2024.8.30", "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", @@ -2020,8 +1880,7 @@ } }, "rules_python_publish_deps_311_certifi_sdist_bec941d2": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2039,7 +1898,7 @@ "https://pypi.org/simple" ], "filename": "certifi-2024.8.30.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "certifi==2024.8.30", "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", @@ -2049,8 +1908,7 @@ } }, "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2061,7 +1919,7 @@ "cp311_linux_x86_64" ], "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", @@ -2071,8 +1929,7 @@ } }, "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2083,7 +1940,7 @@ "cp311_linux_x86_64" ], "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", @@ -2093,8 +1950,7 @@ } }, "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2105,7 +1961,7 @@ "cp311_linux_x86_64" ], "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", @@ -2115,8 +1971,7 @@ } }, "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2127,7 +1982,7 @@ "cp311_linux_x86_64" ], "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", @@ -2137,8 +1992,7 @@ } }, "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2149,7 +2003,7 @@ "cp311_linux_x86_64" ], "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", @@ -2159,8 +2013,7 @@ } }, "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2171,7 +2024,7 @@ "cp311_linux_x86_64" ], "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", @@ -2181,8 +2034,7 @@ } }, "rules_python_publish_deps_311_cffi_sdist_1c39c601": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2197,7 +2049,7 @@ "https://pypi.org/simple" ], "filename": "cffi-1.17.1.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cffi==1.17.1", "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", @@ -2207,8 +2059,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2222,7 +2073,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", @@ -2232,8 +2083,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2247,7 +2097,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", @@ -2257,8 +2107,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2272,7 +2121,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", @@ -2282,8 +2131,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2297,7 +2145,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", @@ -2307,8 +2155,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2322,7 +2169,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", @@ -2332,8 +2179,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2347,7 +2193,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", @@ -2357,8 +2203,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2372,7 +2217,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", @@ -2382,8 +2227,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2397,7 +2241,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", @@ -2407,8 +2251,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2422,7 +2265,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", @@ -2432,8 +2275,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2447,7 +2289,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", @@ -2457,8 +2299,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2472,7 +2313,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", @@ -2482,8 +2323,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2497,7 +2337,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", @@ -2507,8 +2347,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2522,7 +2361,7 @@ "cp311_windows_x86_64" ], "filename": "charset_normalizer-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", @@ -2532,8 +2371,7 @@ } }, "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2551,7 +2389,7 @@ "https://pypi.org/simple" ], "filename": "charset_normalizer-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "charset-normalizer==3.4.0", "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", @@ -2561,8 +2399,7 @@ } }, "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2573,7 +2410,7 @@ "cp311_linux_x86_64" ], "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", @@ -2583,8 +2420,7 @@ } }, "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2595,7 +2431,7 @@ "cp311_linux_x86_64" ], "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", @@ -2605,8 +2441,7 @@ } }, "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2617,7 +2452,7 @@ "cp311_linux_x86_64" ], "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", @@ -2627,8 +2462,7 @@ } }, "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2639,7 +2473,7 @@ "cp311_linux_x86_64" ], "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", @@ -2649,8 +2483,7 @@ } }, "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2661,7 +2494,7 @@ "cp311_linux_x86_64" ], "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", @@ -2671,8 +2504,7 @@ } }, "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2683,7 +2515,7 @@ "cp311_linux_x86_64" ], "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", @@ -2693,8 +2525,7 @@ } }, "rules_python_publish_deps_311_cryptography_sdist_315b9001": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2709,7 +2540,7 @@ "https://pypi.org/simple" ], "filename": "cryptography-43.0.3.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "cryptography==43.0.3", "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", @@ -2719,8 +2550,7 @@ } }, "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2734,7 +2564,7 @@ "cp311_windows_x86_64" ], "filename": "docutils-0.21.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "docutils==0.21.2", "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", @@ -2744,8 +2574,7 @@ } }, "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2763,7 +2592,7 @@ "https://pypi.org/simple" ], "filename": "docutils-0.21.2.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "docutils==0.21.2", "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", @@ -2773,8 +2602,7 @@ } }, "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2788,7 +2616,7 @@ "cp311_windows_x86_64" ], "filename": "idna-3.10-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "idna==3.10", "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", @@ -2798,8 +2626,7 @@ } }, "rules_python_publish_deps_311_idna_sdist_12f65c9b": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2817,7 +2644,7 @@ "https://pypi.org/simple" ], "filename": "idna-3.10.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "idna==3.10", "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", @@ -2827,8 +2654,7 @@ } }, "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2842,7 +2668,7 @@ "cp311_windows_x86_64" ], "filename": "importlib_metadata-8.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "importlib-metadata==8.5.0", "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", @@ -2852,8 +2678,7 @@ } }, "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2871,7 +2696,7 @@ "https://pypi.org/simple" ], "filename": "importlib_metadata-8.5.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "importlib-metadata==8.5.0", "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", @@ -2881,8 +2706,7 @@ } }, "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2896,7 +2720,7 @@ "cp311_windows_x86_64" ], "filename": "jaraco.classes-3.4.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jaraco-classes==3.4.0", "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", @@ -2906,8 +2730,7 @@ } }, "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2925,7 +2748,7 @@ "https://pypi.org/simple" ], "filename": "jaraco.classes-3.4.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jaraco-classes==3.4.0", "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", @@ -2935,8 +2758,7 @@ } }, "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2950,7 +2772,7 @@ "cp311_windows_x86_64" ], "filename": "jaraco.context-6.0.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jaraco-context==6.0.1", "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", @@ -2960,8 +2782,7 @@ } }, "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -2979,7 +2800,7 @@ "https://pypi.org/simple" ], "filename": "jaraco_context-6.0.1.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jaraco-context==6.0.1", "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", @@ -2989,8 +2810,7 @@ } }, "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3004,7 +2824,7 @@ "cp311_windows_x86_64" ], "filename": "jaraco.functools-4.1.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jaraco-functools==4.1.0", "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", @@ -3014,8 +2834,7 @@ } }, "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3033,7 +2852,7 @@ "https://pypi.org/simple" ], "filename": "jaraco_functools-4.1.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jaraco-functools==4.1.0", "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", @@ -3043,8 +2862,7 @@ } }, "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3055,7 +2873,7 @@ "cp311_linux_x86_64" ], "filename": "jeepney-0.8.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jeepney==0.8.0", "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", @@ -3065,8 +2883,7 @@ } }, "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3081,7 +2898,7 @@ "https://pypi.org/simple" ], "filename": "jeepney-0.8.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "jeepney==0.8.0", "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", @@ -3091,8 +2908,7 @@ } }, "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3106,7 +2922,7 @@ "cp311_windows_x86_64" ], "filename": "keyring-25.4.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "keyring==25.4.1", "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", @@ -3116,8 +2932,7 @@ } }, "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3135,7 +2950,7 @@ "https://pypi.org/simple" ], "filename": "keyring-25.4.1.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "keyring==25.4.1", "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", @@ -3145,8 +2960,7 @@ } }, "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3160,7 +2974,7 @@ "cp311_windows_x86_64" ], "filename": "markdown_it_py-3.0.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "markdown-it-py==3.0.0", "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", @@ -3170,8 +2984,7 @@ } }, "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3189,7 +3002,7 @@ "https://pypi.org/simple" ], "filename": "markdown-it-py-3.0.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "markdown-it-py==3.0.0", "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", @@ -3199,8 +3012,7 @@ } }, "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3214,7 +3026,7 @@ "cp311_windows_x86_64" ], "filename": "mdurl-0.1.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "mdurl==0.1.2", "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", @@ -3224,8 +3036,7 @@ } }, "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3243,7 +3054,7 @@ "https://pypi.org/simple" ], "filename": "mdurl-0.1.2.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "mdurl==0.1.2", "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", @@ -3253,8 +3064,7 @@ } }, "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3268,7 +3078,7 @@ "cp311_windows_x86_64" ], "filename": "more_itertools-10.5.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "more-itertools==10.5.0", "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", @@ -3278,8 +3088,7 @@ } }, "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3297,7 +3106,7 @@ "https://pypi.org/simple" ], "filename": "more-itertools-10.5.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "more-itertools==10.5.0", "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", @@ -3307,8 +3116,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3322,7 +3130,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", @@ -3332,8 +3140,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3347,7 +3154,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", @@ -3357,8 +3164,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3372,7 +3178,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", @@ -3382,8 +3188,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3397,7 +3202,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", @@ -3407,8 +3212,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3422,7 +3226,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", @@ -3432,8 +3236,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3447,7 +3250,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad", @@ -3457,8 +3260,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3472,7 +3274,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", @@ -3482,8 +3284,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3497,7 +3298,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", @@ -3507,8 +3308,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3522,7 +3322,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", @@ -3532,8 +3332,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3547,7 +3346,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", @@ -3557,8 +3356,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3572,7 +3370,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", @@ -3582,8 +3380,7 @@ } }, "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3597,7 +3394,7 @@ "cp311_windows_x86_64" ], "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", @@ -3607,8 +3404,7 @@ } }, "rules_python_publish_deps_311_nh3_sdist_94a16692": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3626,7 +3422,7 @@ "https://pypi.org/simple" ], "filename": "nh3-0.2.18.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "nh3==0.2.18", "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", @@ -3636,8 +3432,7 @@ } }, "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3651,7 +3446,7 @@ "cp311_windows_x86_64" ], "filename": "pkginfo-1.10.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pkginfo==1.10.0", "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", @@ -3661,8 +3456,7 @@ } }, "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3680,7 +3474,7 @@ "https://pypi.org/simple" ], "filename": "pkginfo-1.10.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pkginfo==1.10.0", "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", @@ -3690,8 +3484,7 @@ } }, "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3702,7 +3495,7 @@ "cp311_linux_x86_64" ], "filename": "pycparser-2.22-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pycparser==2.22", "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", @@ -3712,8 +3505,7 @@ } }, "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3728,7 +3520,7 @@ "https://pypi.org/simple" ], "filename": "pycparser-2.22.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pycparser==2.22", "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", @@ -3738,8 +3530,7 @@ } }, "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3753,7 +3544,7 @@ "cp311_windows_x86_64" ], "filename": "pygments-2.18.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pygments==2.18.0", "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", @@ -3763,8 +3554,7 @@ } }, "rules_python_publish_deps_311_pygments_sdist_786ff802": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3782,7 +3572,7 @@ "https://pypi.org/simple" ], "filename": "pygments-2.18.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pygments==2.18.0", "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", @@ -3792,15 +3582,14 @@ } }, "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ "cp311_windows_x86_64" ], "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pywin32-ctypes==0.2.3", "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", @@ -3810,8 +3599,7 @@ } }, "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3822,7 +3610,7 @@ "https://pypi.org/simple" ], "filename": "pywin32-ctypes-0.2.3.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "pywin32-ctypes==0.2.3", "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", @@ -3832,8 +3620,7 @@ } }, "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3847,7 +3634,7 @@ "cp311_windows_x86_64" ], "filename": "readme_renderer-44.0-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "readme-renderer==44.0", "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", @@ -3857,8 +3644,7 @@ } }, "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3876,7 +3662,7 @@ "https://pypi.org/simple" ], "filename": "readme_renderer-44.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "readme-renderer==44.0", "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", @@ -3886,8 +3672,7 @@ } }, "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3901,7 +3686,7 @@ "cp311_windows_x86_64" ], "filename": "requests-2.32.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "requests==2.32.3", "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", @@ -3911,8 +3696,7 @@ } }, "rules_python_publish_deps_311_requests_sdist_55365417": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3930,7 +3714,7 @@ "https://pypi.org/simple" ], "filename": "requests-2.32.3.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "requests==2.32.3", "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", @@ -3940,8 +3724,7 @@ } }, "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3955,7 +3738,7 @@ "cp311_windows_x86_64" ], "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "requests-toolbelt==1.0.0", "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", @@ -3965,8 +3748,7 @@ } }, "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -3984,7 +3766,7 @@ "https://pypi.org/simple" ], "filename": "requests-toolbelt-1.0.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "requests-toolbelt==1.0.0", "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", @@ -3994,8 +3776,7 @@ } }, "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4009,7 +3790,7 @@ "cp311_windows_x86_64" ], "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "rfc3986==2.0.0", "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", @@ -4019,8 +3800,7 @@ } }, "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4038,7 +3818,7 @@ "https://pypi.org/simple" ], "filename": "rfc3986-2.0.0.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "rfc3986==2.0.0", "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", @@ -4048,8 +3828,7 @@ } }, "rules_python_publish_deps_311_rich_py3_none_any_9836f509": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4063,7 +3842,7 @@ "cp311_windows_x86_64" ], "filename": "rich-13.9.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "rich==13.9.3", "sha256": "9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283", @@ -4073,8 +3852,7 @@ } }, "rules_python_publish_deps_311_rich_sdist_bc1e01b8": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4092,7 +3870,7 @@ "https://pypi.org/simple" ], "filename": "rich-13.9.3.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "rich==13.9.3", "sha256": "bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e", @@ -4102,8 +3880,7 @@ } }, "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4114,7 +3891,7 @@ "cp311_linux_x86_64" ], "filename": "SecretStorage-3.3.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "secretstorage==3.3.3", "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", @@ -4124,8 +3901,7 @@ } }, "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4140,7 +3916,7 @@ "https://pypi.org/simple" ], "filename": "SecretStorage-3.3.3.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "secretstorage==3.3.3", "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", @@ -4150,8 +3926,7 @@ } }, "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4165,7 +3940,7 @@ "cp311_windows_x86_64" ], "filename": "twine-5.1.1-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "twine==5.1.1", "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", @@ -4175,8 +3950,7 @@ } }, "rules_python_publish_deps_311_twine_sdist_9aa08251": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4194,7 +3968,7 @@ "https://pypi.org/simple" ], "filename": "twine-5.1.1.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "twine==5.1.1", "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", @@ -4204,8 +3978,7 @@ } }, "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4219,7 +3992,7 @@ "cp311_windows_x86_64" ], "filename": "urllib3-2.2.3-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "urllib3==2.2.3", "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", @@ -4229,8 +4002,7 @@ } }, "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4248,7 +4020,7 @@ "https://pypi.org/simple" ], "filename": "urllib3-2.2.3.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "urllib3==2.2.3", "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", @@ -4258,8 +4030,7 @@ } }, "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4273,7 +4044,7 @@ "cp311_windows_x86_64" ], "filename": "zipp-3.20.2-py3-none-any.whl", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "zipp==3.20.2", "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", @@ -4283,8 +4054,7 @@ } }, "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { - "bzlFile": "@@rules_python~//python/private/pypi:whl_library.bzl", - "ruleClassName": "whl_library", + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { "dep_template": "@rules_python_publish_deps//{name}:{target}", "experimental_target_platforms": [ @@ -4302,7 +4072,7 @@ "https://pypi.org/simple" ], "filename": "zipp-3.20.2.tar.gz", - "python_interpreter_target": "@@rules_python~~python~python_3_11_host//:python", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", "repo": "rules_python_publish_deps_311", "requirement": "zipp==3.20.2", "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", @@ -4312,8 +4082,7 @@ } }, "pip_deps": { - "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", - "ruleClassName": "hub_repository", + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", "attributes": { "repo_name": "pip_deps", "extra_hub_aliases": {}, @@ -4329,8 +4098,7 @@ } }, "rules_fuzzing_py_deps": { - "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", - "ruleClassName": "hub_repository", + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", "attributes": { "repo_name": "rules_fuzzing_py_deps", "extra_hub_aliases": {}, @@ -4346,8 +4114,7 @@ } }, "rules_python_publish_deps": { - "bzlFile": "@@rules_python~//python/private/pypi:hub_repository.bzl", - "ruleClassName": "hub_repository", + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", "attributes": { "repo_name": "rules_python_publish_deps", "extra_hub_aliases": {}, @@ -4419,149 +4186,148 @@ }, "recordedRepoMappingEntries": [ [ - "bazel_features~", + "bazel_features+", "bazel_features_globals", - "bazel_features~~version_extension~bazel_features_globals" + "bazel_features++version_extension+bazel_features_globals" ], [ - "bazel_features~", + "bazel_features+", "bazel_features_version", - "bazel_features~~version_extension~bazel_features_version" + "bazel_features++version_extension+bazel_features_version" ], [ - "rules_python~", + "rules_python+", "bazel_features", - "bazel_features~" + "bazel_features+" ], [ - "rules_python~", + "rules_python+", "bazel_skylib", - "bazel_skylib~" + "bazel_skylib+" ], [ - "rules_python~", + "rules_python+", "bazel_tools", "bazel_tools" ], [ - "rules_python~", + "rules_python+", "pypi__build", - "rules_python~~internal_deps~pypi__build" + "rules_python++internal_deps+pypi__build" ], [ - "rules_python~", + "rules_python+", "pypi__click", - "rules_python~~internal_deps~pypi__click" + "rules_python++internal_deps+pypi__click" ], [ - "rules_python~", + "rules_python+", "pypi__colorama", - "rules_python~~internal_deps~pypi__colorama" + "rules_python++internal_deps+pypi__colorama" ], [ - "rules_python~", + "rules_python+", "pypi__importlib_metadata", - "rules_python~~internal_deps~pypi__importlib_metadata" + "rules_python++internal_deps+pypi__importlib_metadata" ], [ - "rules_python~", + "rules_python+", "pypi__installer", - "rules_python~~internal_deps~pypi__installer" + "rules_python++internal_deps+pypi__installer" ], [ - "rules_python~", + "rules_python+", "pypi__more_itertools", - "rules_python~~internal_deps~pypi__more_itertools" + "rules_python++internal_deps+pypi__more_itertools" ], [ - "rules_python~", + "rules_python+", "pypi__packaging", - "rules_python~~internal_deps~pypi__packaging" + "rules_python++internal_deps+pypi__packaging" ], [ - "rules_python~", + "rules_python+", "pypi__pep517", - "rules_python~~internal_deps~pypi__pep517" + "rules_python++internal_deps+pypi__pep517" ], [ - "rules_python~", + "rules_python+", "pypi__pip", - "rules_python~~internal_deps~pypi__pip" + "rules_python++internal_deps+pypi__pip" ], [ - "rules_python~", + "rules_python+", "pypi__pip_tools", - "rules_python~~internal_deps~pypi__pip_tools" + "rules_python++internal_deps+pypi__pip_tools" ], [ - "rules_python~", + "rules_python+", "pypi__pyproject_hooks", - "rules_python~~internal_deps~pypi__pyproject_hooks" + "rules_python++internal_deps+pypi__pyproject_hooks" ], [ - "rules_python~", + "rules_python+", "pypi__setuptools", - "rules_python~~internal_deps~pypi__setuptools" + "rules_python++internal_deps+pypi__setuptools" ], [ - "rules_python~", + "rules_python+", "pypi__tomli", - "rules_python~~internal_deps~pypi__tomli" + "rules_python++internal_deps+pypi__tomli" ], [ - "rules_python~", + "rules_python+", "pypi__wheel", - "rules_python~~internal_deps~pypi__wheel" + "rules_python++internal_deps+pypi__wheel" ], [ - "rules_python~", + "rules_python+", "pypi__zipp", - "rules_python~~internal_deps~pypi__zipp" + "rules_python++internal_deps+pypi__zipp" ], [ - "rules_python~", + "rules_python+", "pythons_hub", - "rules_python~~python~pythons_hub" + "rules_python++python+pythons_hub" ], [ - "rules_python~~python~pythons_hub", + "rules_python++python+pythons_hub", "python_3_10_host", - "rules_python~~python~python_3_10_host" + "rules_python++python+python_3_10_host" ], [ - "rules_python~~python~pythons_hub", + "rules_python++python+pythons_hub", "python_3_11_host", - "rules_python~~python~python_3_11_host" + "rules_python++python+python_3_11_host" ], [ - "rules_python~~python~pythons_hub", + "rules_python++python+pythons_hub", "python_3_12_host", - "rules_python~~python~python_3_12_host" + "rules_python++python+python_3_12_host" ], [ - "rules_python~~python~pythons_hub", + "rules_python++python+pythons_hub", "python_3_8_host", - "rules_python~~python~python_3_8_host" + "rules_python++python+python_3_8_host" ], [ - "rules_python~~python~pythons_hub", + "rules_python++python+pythons_hub", "python_3_9_host", - "rules_python~~python~python_3_9_host" + "rules_python++python+python_3_9_host" ] ] } }, - "@@rules_sass~//src/toolchain:extensions.bzl%sass": { + "@@rules_sass+//src/toolchain:extensions.bzl%sass": { "general": { "bzlTransitiveDigest": "RA58Nyrsn03Z5YmQnpmBw3mqlVck++XIrx34amsqU/E=", - "usagesDigest": "FPXQ5+6+DFGdSdCMXLwFaruzstMFlLH6N0TRxi0sSH8=", + "usagesDigest": "R0KshhzIouLWuexMUCrl4HY+FUDwlVVgF9Z7UnwyUWA=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "linux_amd64_sass": { - "bzlFile": "@@rules_sass~//src/toolchain:configure_sass.bzl", - "ruleClassName": "configure_sass", + "repoRuleId": "@@rules_sass+//src/toolchain:configure_sass.bzl%configure_sass", "attributes": { "file": "@rules_sass//src/compiler/built:sass_linux_x64", "sha256": "", @@ -4572,8 +4338,7 @@ } }, "linux_arm64_sass": { - "bzlFile": "@@rules_sass~//src/toolchain:configure_sass.bzl", - "ruleClassName": "configure_sass", + "repoRuleId": "@@rules_sass+//src/toolchain:configure_sass.bzl%configure_sass", "attributes": { "file": "@rules_sass//src/compiler/built:sass_linux_arm", "sha256": "", @@ -4584,8 +4349,7 @@ } }, "darwin_amd64_sass": { - "bzlFile": "@@rules_sass~//src/toolchain:configure_sass.bzl", - "ruleClassName": "configure_sass", + "repoRuleId": "@@rules_sass+//src/toolchain:configure_sass.bzl%configure_sass", "attributes": { "file": "@rules_sass//src/compiler/built:sass_mac_x64", "sha256": "", @@ -4596,8 +4360,7 @@ } }, "darwin_arm64_sass": { - "bzlFile": "@@rules_sass~//src/toolchain:configure_sass.bzl", - "ruleClassName": "configure_sass", + "repoRuleId": "@@rules_sass+//src/toolchain:configure_sass.bzl%configure_sass", "attributes": { "file": "@rules_sass//src/compiler/built:sass_mac_arm", "sha256": "", @@ -4611,81 +4374,72 @@ "recordedRepoMappingEntries": [] } }, - "@@yq.bzl~//yq:extensions.bzl%yq": { + "@@yq.bzl+//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", - "usagesDigest": "iaUQ8Qw3jEPbSuD0+Sq/7rnxBky70UQGNJbXnlCid+Q=", + "usagesDigest": "iZPDKVC6SAQMLLGWulzoS8hhxbx9Eh5DsJBUjn69u2Q=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { "yq_darwin_amd64": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "darwin_amd64", "version": "4.45.1" } }, "yq_darwin_arm64": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "darwin_arm64", "version": "4.45.1" } }, "yq_linux_amd64": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_amd64", "version": "4.45.1" } }, "yq_linux_arm64": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_arm64", "version": "4.45.1" } }, "yq_linux_s390x": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_s390x", "version": "4.45.1" } }, "yq_linux_riscv64": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_riscv64", "version": "4.45.1" } }, "yq_linux_ppc64le": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_ppc64le", "version": "4.45.1" } }, "yq_windows_amd64": { - "bzlFile": "@@yq.bzl~//yq/toolchain:platforms.bzl", - "ruleClassName": "yq_platform_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "windows_amd64", "version": "4.45.1" } }, "yq_toolchains": { - "bzlFile": "@@yq.bzl~//yq/toolchain:toolchain.bzl", - "ruleClassName": "yq_toolchains_repo", + "repoRuleId": "@@yq.bzl+//yq/toolchain:toolchain.bzl%yq_toolchains_repo", "attributes": { "user_repository_name": "yq" } diff --git a/packages/angular/ssr/BUILD.bazel b/packages/angular/ssr/BUILD.bazel index 2fd35cf8adc3..16498600f603 100644 --- a/packages/angular/ssr/BUILD.bazel +++ b/packages/angular/ssr/BUILD.bazel @@ -81,7 +81,6 @@ pkg_tar( name = "npm_package_archive", srcs = [":npm_package"], extension = "tgz", - strip_prefix = "./npm_package", # should not be built unless it is a dependency of another rule tags = ["manual"], ) diff --git a/scripts/build-packages-dist.mts b/scripts/build-packages-dist.mts index 9a4fa1c764b9..a63b1e8c1de2 100644 --- a/scripts/build-packages-dist.mts +++ b/scripts/build-packages-dist.mts @@ -75,7 +75,7 @@ function buildReleasePackages( // List of targets to build. e.g. "packages/angular/cli:npm_package" const targets = exec(queryPackagesCmd, true).split(/\r?\n/); const packageNames = getPackageNamesOfTargets(targets); - const bazelBinPath = exec(`${bazelCmd} info bazel-bin`, true); + const bazelBinPath = join(import.meta.dirname, '../dist/bin'); const getBazelOutputPath = (pkgName: string) => join(bazelBinPath, 'packages', pkgName, 'npm_package'); const getDistPath = (pkgName: string) => join(distPath, pkgName); diff --git a/scripts/build.mts b/scripts/build.mts index b78df0d6b904..9f100b513352 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -122,8 +122,7 @@ export default async function ( argv: { local?: boolean; snapshot?: boolean } = {}, ): Promise<{ name: string; outputPath: string; tarPath: string }[]> { const logger = globalThis.console; - - const bazelBin = await _exec(`${bazelCmd} info bazel-bin`, true, logger); + const bazelBin = join(import.meta.dirname, '../dist/bin'); await _clean(logger); diff --git a/scripts/diff-release-package.mts b/scripts/diff-release-package.mts index 8ec6b6df48db..ae2d4ec2e87b 100644 --- a/scripts/diff-release-package.mts +++ b/scripts/diff-release-package.mts @@ -62,17 +62,7 @@ async function main(packageName: string) { git.run(['clone', `https://github.com/${snapshotRepoName}.git`, tmpDir]); console.log(`--> Cloned snapshot repo.`); - const bazelBinDir = childProcess - .spawnSync(`${bazel} info bazel-bin`, { - shell: true, - encoding: 'utf8', - stdio: ['pipe', 'pipe', 'inherit'], - }) - .stdout.trim(); - if (bazelBinDir === '') { - throw new Error('Could not determine bazel-bin directory.'); - } - + const bazelBinDir = join(import.meta.dirname, '../dist/bin'); const outputPath = path.join(bazelBinDir, 'packages/', targetDir, 'npm_package'); // Delete old directory to avoid surprises, or stamping being outdated. diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/legacy-cli/e2e_runner.ts index b1b5ef60e890..571f7dea5363 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/legacy-cli/e2e_runner.ts @@ -403,7 +403,7 @@ async function findPackageTars(): Promise<{ [pkg: string]: PkgInfo }> { ); const pkgJsons = await Promise.all( - pkgs.map((pkg) => realpathSync(pkg)).map((pkg) => extractFile(pkg, './package.json')), + pkgs.map((pkg) => realpathSync(pkg)).map((pkg) => extractFile(pkg, 'npm_package/package.json')), ); return pkgs.reduce( diff --git a/tools/bazel/npm_package.bzl b/tools/bazel/npm_package.bzl index d38cebef4579..c6ce650d3971 100644 --- a/tools/bazel/npm_package.bzl +++ b/tools/bazel/npm_package.bzl @@ -119,6 +119,7 @@ def npm_package( name = "npm_package_archive", srcs = [":pkg"], extension = "tgz", - strip_prefix = "./npm_package", + # should not be built unless it is a dependency of another rule + tags = ["manual"], visibility = visibility, ) diff --git a/tools/toolchains/BUILD.bazel b/tools/toolchains/BUILD.bazel new file mode 100644 index 000000000000..1abb54e5faa7 --- /dev/null +++ b/tools/toolchains/BUILD.bazel @@ -0,0 +1,44 @@ +load("@rules_cc//cc:defs.bzl", "cc_toolchain") +load(":dummy_cc_toolchain.bzl", "dummy_cc_toolchain_config") + +# This is needed following https://github.com/bazel-contrib/rules_nodejs/pull/3859 +toolchain( + name = "node22_windows_no_exec_toolchain", + exec_compatible_with = [], + target_compatible_with = [ + "@platforms//os:windows", + "@platforms//cpu:x86_64", + ], + toolchain = "@node22_windows_amd64//:toolchain", + toolchain_type = "@rules_nodejs//nodejs:toolchain_type", +) + +# This defines a dummy C++ toolchain for Windows. +# Without this, the build fails with "Unable to find a CC toolchain using toolchain resolution". +dummy_cc_toolchain_config(name = "dummy_cc_toolchain_config") + +filegroup(name = "empty") + +cc_toolchain( + name = "dummy_cc_toolchain", + all_files = ":empty", + compiler_files = ":empty", + dwp_files = ":empty", + linker_files = ":empty", + objcopy_files = ":empty", + strip_files = ":empty", + supports_param_files = 0, + toolchain_config = ":dummy_cc_toolchain_config", + toolchain_identifier = "dummy_cc_toolchain", +) + +toolchain( + name = "dummy_cc_windows_no_exec_toolchain", + exec_compatible_with = [], + target_compatible_with = [ + "@platforms//os:windows", + "@platforms//cpu:x86_64", + ], + toolchain = ":dummy_cc_toolchain", + toolchain_type = "@rules_cc//cc:toolchain_type", +) diff --git a/tools/toolchains/dummy_cc_toolchain.bzl b/tools/toolchains/dummy_cc_toolchain.bzl new file mode 100644 index 000000000000..a18a9c780915 --- /dev/null +++ b/tools/toolchains/dummy_cc_toolchain.bzl @@ -0,0 +1,28 @@ +""" +This file defines a dummy C++ toolchain for Windows. +It is needed to satisfy Bazel's toolchain resolution when cross-compiling for Windows on Linux. +Some rules (e.g. rules_nodejs, js_test) or their dependencies may trigger C++ toolchain resolution +even if no actual C++ compilation is performed for the target platform. +Without this, the build fails with "Unable to find a CC toolchain using toolchain resolution". +""" + +load("@rules_cc//cc:defs.bzl", "cc_common") + +def _impl(ctx): + return cc_common.create_cc_toolchain_config_info( + ctx = ctx, + toolchain_identifier = "dummy-toolchain", + host_system_name = "local", + target_system_name = "local", + target_cpu = "x64_windows", + target_libc = "unknown", + compiler = "dummy", + abi_version = "unknown", + abi_libc_version = "unknown", + ) + +dummy_cc_toolchain_config = rule( + implementation = _impl, + attrs = {}, + provides = [CcToolchainConfigInfo], +) From bf990dc65de8e978dd0c1060e10d62157d373a4e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 9 Dec 2025 22:36:59 +0000 Subject: [PATCH 1954/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 1 - package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 ++++++------ 11 files changed, 79 insertions(+), 80 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index dbc5d1503874..bae4972aace8 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@73051ae248ba64911a8e7e66536d8c99ba07ef2a + - uses: angular/dev-infra/github-actions/branch-manager@4ec84059f295affa82fe766682981b8b838a057b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 842f021615c8..518ec01bdef8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - 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 706db95c91af..ba4a03290374 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@73051ae248ba64911a8e7e66536d8c99ba07ef2a + - uses: angular/dev-infra/github-actions/pull-request-labeling@4ec84059f295affa82fe766682981b8b838a057b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@73051ae248ba64911a8e7e66536d8c99ba07ef2a + - uses: angular/dev-infra/github-actions/post-approval-changes@4ec84059f295affa82fe766682981b8b838a057b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 2e9d0c2ded1a..6f4ef3b0d173 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@73051ae248ba64911a8e7e66536d8c99ba07ef2a + - uses: angular/dev-infra/github-actions/feature-request@4ec84059f295affa82fe766682981b8b838a057b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 9217660d4389..d8a2416e01a0 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@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - 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@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - 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 d372b118b5ac..0eb505035268 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/linting/licenses@4ec84059f295affa82fe766682981b8b838a057b build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b - 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 }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b - 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 }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@73051ae248ba64911a8e7e66536d8c99ba07ef2a + uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b - 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/MODULE.bazel b/MODULE.bazel index 653a1b89dfed..e0c78c532930 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "73051ae248ba64911a8e7e66536d8c99ba07ef2a", + commit = "4ec84059f295affa82fe766682981b8b838a057b", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 62ee1d86f412..b2e2fec351c1 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -14,7 +14,6 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.21.2/MODULE.bazel": "276347663a25b0d5bd6cad869252bea3e160c4d980e764b15f3bae7f80b30624", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "7fe0191f047d4fe4a4a46c1107e2350cbb58a8fc2e10913aa4322d3190dec0bf", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/source.json": "369df5b7f2eae82f200fff95cf1425f90dee90a0d0948122060b48150ff0e224", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", diff --git a/package.json b/package.json index bea1e2a75718..81388f281c2d 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@angular/forms": "21.1.0-next.1", "@angular/localize": "21.1.0-next.1", "@angular/material": "21.1.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9037bb2813539aab76b41abd85ea690e0d839e4a", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9eb95b33207c15948038e76862ed856c1ef44eb6", "@angular/platform-browser": "21.1.0-next.1", "@angular/platform-server": "21.1.0-next.1", "@angular/router": "21.1.0-next.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c5e12e1ce7a..d4c7a2a15e0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.1 version: 21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9037bb2813539aab76b41abd85ea690e0d839e4a - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9eb95b33207c15948038e76862ed856c1ef44eb6 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9eb95b33207c15948038e76862ed856c1ef44eb6(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)) '@angular/platform-browser': specifier: 21.1.0-next.1 version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1048,9 +1048,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/9037bb2813539aab76b41abd85ea690e0d839e4a': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9037bb2813539aab76b41abd85ea690e0d839e4a} - version: 0.0.0-a88cb5b721f1547ed5cbdcc5779cade25500f575 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9eb95b33207c15948038e76862ed856c1ef44eb6': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9eb95b33207c15948038e76862ed856c1ef44eb6} + version: 0.0.0-4ec84059f295affa82fe766682981b8b838a057b hasBin: true '@angular/platform-browser@21.1.0-next.1': @@ -9519,7 +9519,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/9037bb2813539aab76b41abd85ea690e0d839e4a(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9eb95b33207c15948038e76862ed856c1ef44eb6(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 226faf24e7b5..3e2a11894b08 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#4fd25b7828b8d0c351cea22d6166e9070e594d98", - "@angular/cdk": "github:angular/cdk-builds#0f465cd702d2c2342030ddc1c9bdad1df221f615", - "@angular/common": "github:angular/common-builds#fae67d42313e092eea59e0ce01b73e6769d29391", - "@angular/compiler": "github:angular/compiler-builds#18facb646514574861b4d9e303b8868f11994fca", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#a948fb2abd45f8906066aa57b5d6ab7f88fd7b23", - "@angular/core": "github:angular/core-builds#58f3209f55fe8ff45d1b895c4cc10db6f982cd6a", - "@angular/forms": "github:angular/forms-builds#a95b5f65c9527211be4f8432b93d3e4f7856f9ab", - "@angular/language-service": "github:angular/language-service-builds#df1494bf50466ea9ce6c76f595986b436980f412", - "@angular/localize": "github:angular/localize-builds#7e1806664c408c5e8a706ee8e343d2cdefe826a4", - "@angular/material": "github:angular/material-builds#fcd2548e2705cea722bb75644ab4eb5b544e4fd4", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#ed266ac485067d6581382e6a9d9aa757d0714568", - "@angular/platform-browser": "github:angular/platform-browser-builds#b2c5e171c4186567d9012fd10868e6a2b7baf0ba", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#f3ecea1be0115c84afdcbcfcbad77ddddb3a7bcb", - "@angular/platform-server": "github:angular/platform-server-builds#2cb5daf2ce11c4f71586f3d832b1e56f8f06fc18", - "@angular/router": "github:angular/router-builds#258969801d17effcf4387e815926ca6bca32588d", - "@angular/service-worker": "github:angular/service-worker-builds#fc1c504dfdf32395b7916a86c7a5827f86e70eda" + "@angular/animations": "github:angular/animations-builds#114cbaa14ec144a1ef79997821610c3116dd7d10", + "@angular/cdk": "github:angular/cdk-builds#d21ef92e0f537f6b34741fa22b556c8142786bc6", + "@angular/common": "github:angular/common-builds#eee6b9832f404d602e3c916fc1a911dda1bed315", + "@angular/compiler": "github:angular/compiler-builds#a580959173a4ee9436344247423189ea4fb4b1bd", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#310a0d19272ab712f2456d992ee3438986c3625d", + "@angular/core": "github:angular/core-builds#b72daba9c50c4685ff625ed986aeff4d19274f82", + "@angular/forms": "github:angular/forms-builds#eda3dc9cafcca1f5448a227f92b391a9510230c4", + "@angular/language-service": "github:angular/language-service-builds#2ff28b9209fe628b90eb202dd8f50b2fe07b1c7d", + "@angular/localize": "github:angular/localize-builds#c7dad3439ffd40a0392f6668923e06be3511443f", + "@angular/material": "github:angular/material-builds#c6d95a6d4605f6c794ff1ef95f916f07c347b845", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a2dc4fb26548a327b969d9d38cdb582142319121", + "@angular/platform-browser": "github:angular/platform-browser-builds#8479cd74367f43e352387de864ab61890d259b0d", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a5c31785e26faac20720794b2ed52ed3e0b5f169", + "@angular/platform-server": "github:angular/platform-server-builds#a021e6a13ea152b86e24ea47d032d9f9ea0cc14b", + "@angular/router": "github:angular/router-builds#a1f0b9811db3ac96146b8d95d2b6735981e3cc44", + "@angular/service-worker": "github:angular/service-worker-builds#9be6f521a82ef4d0fcae89d8c391669ccb4aa749" } } From 9c1d9a8fc28ff148de73a110760f44bf04f58afd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 10 Dec 2025 05:07:07 +0000 Subject: [PATCH 1955/2162] build: update pnpm to v10.25.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 81388f281c2d..0a123aa7681e 100644 --- a/package.json +++ b/package.json @@ -29,12 +29,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.24.0", + "packageManager": "pnpm@10.25.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.24.0" + "pnpm": "10.25.0" }, "author": "Angular Authors", "license": "MIT", From c4af1932c3e8e94022237ea8e56adb19bf338978 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 10 Dec 2025 05:07:00 +0000 Subject: [PATCH 1956/2162] build: update dependency rules_cc to v0.2.14 See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index e0c78c532930..cac105eec377 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -10,7 +10,7 @@ bazel_dep(name = "rules_nodejs", version = "6.6.2") bazel_dep(name = "aspect_rules_js", version = "2.8.3") bazel_dep(name = "aspect_rules_ts", version = "3.7.1") bazel_dep(name = "rules_pkg", version = "1.1.0") -bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "rules_cc", version = "0.2.14") bazel_dep(name = "aspect_bazel_lib", version = "2.22.0") bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "aspect_rules_esbuild", version = "0.24.0") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index b2e2fec351c1..5fb82d4787d2 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -44,6 +44,7 @@ "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", @@ -118,7 +119,8 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", From 489cacaeef1c2ca6ff1201955f3b4d159e56fca9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 9 Dec 2025 04:10:17 +0000 Subject: [PATCH 1957/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 272 +++++++++++++++++++++++++++++++------------------ 1 file changed, 174 insertions(+), 98 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d4c7a2a15e0e..68291e74838a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,7 +105,7 @@ importers: version: 2.29.1 '@types/express': specifier: ~5.0.1 - version: 5.0.5 + version: 5.0.6 '@types/http-proxy': specifier: ^1.17.4 version: 1.17.17 @@ -249,7 +249,7 @@ importers: version: 0.30.21 prettier: specifier: ^3.0.0 - version: 3.7.3 + version: 3.7.4 protractor: specifier: ~7.0.0 version: 7.0.0 @@ -360,7 +360,7 @@ importers: version: 0.3.5 browserslist: specifier: ^4.26.0 - version: 4.28.0 + version: 4.28.1 esbuild: specifier: 0.27.1 version: 0.27.1 @@ -643,7 +643,7 @@ importers: version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1)) browserslist: specifier: ^4.26.0 - version: 4.28.0 + version: 4.28.1 copy-webpack-plugin: specifier: 13.0.1 version: 13.0.1(webpack@5.103.0(esbuild@0.27.1)) @@ -897,8 +897,8 @@ importers: packages: - '@acemir/cssom@0.9.24': - resolution: {integrity: sha512-5YjgMmAiT2rjJZU7XK1SNI7iqTy92DpaYVgG6x63FxkJ11UpYfLndHJATtinWJClAXiOlW9XWaUyAQf8pMrQPg==} + '@acemir/cssom@0.9.28': + resolution: {integrity: sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -1094,8 +1094,8 @@ packages: '@asamuzakjp/css-color@4.1.0': resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} - '@asamuzakjp/dom-selector@6.7.5': - resolution: {integrity: sha512-Eks6dY8zau4m4wNRQjRVaKQRTalNcPcBvU1ZQ35w5kKRk1gUeNCkVLsRiATurjASTp3TKM4H10wsI50nx3NZdw==} + '@asamuzakjp/dom-selector@6.7.6': + resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -2303,8 +2303,8 @@ packages: '@modelcontextprotocol/sdk': optional: true - '@grpc/grpc-js@1.14.1': - resolution: {integrity: sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==} + '@grpc/grpc-js@1.14.2': + resolution: {integrity: sha512-QzVUtEFyu05UNx2xr0fCQmStUO17uVQhGNowtxs00IgTZT6/W2PBLfUkj30s0FKJ29VtTa3ArVNIhNP6akQhqA==} engines: {node: '>=12.10.0'} '@grpc/grpc-js@1.9.15': @@ -3199,8 +3199,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.10.13': - resolution: {integrity: sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==} + '@puppeteer/browsers@2.11.0': + resolution: {integrity: sha512-n6oQX6mYkG8TRPuPXmbPidkUbsSRalhmaaVAQxvH1IkQy63cwsH+kOjB3e4cpCDHg0aSvsiX9bQ4s2VB6mGWUQ==} engines: {node: '>=18'} hasBin: true @@ -3647,8 +3647,8 @@ packages: '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - '@types/express@5.0.5': - resolution: {integrity: sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==} + '@types/express@5.0.6': + resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} '@types/folder-hash@4.0.4': resolution: {integrity: sha512-c+PwHm51Dw3fXM8SDK+93PO3oXdk4XNouCCvV67lj4aijRkZz5g67myk+9wqWWnyv3go6q96hT6ywcd3XtoZiQ==} @@ -3874,10 +3874,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.48.0': - resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.48.1': resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4472,8 +4468,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.32: - resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==} + baseline-browser-mapping@2.9.4: + resolution: {integrity: sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA==} hasBin: true basic-ftp@5.0.5: @@ -4524,6 +4520,10 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.2.1: resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} engines: {node: '>=18'} @@ -4562,8 +4562,8 @@ packages: browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4640,8 +4640,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001757: - resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} + caniuse-lite@1.0.30001759: + resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4868,6 +4868,9 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} @@ -5173,8 +5176,8 @@ packages: devtools-protocol@0.0.1045489: resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} - devtools-protocol@0.0.1521046: - resolution: {integrity: sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==} + devtools-protocol@0.0.1534754: + resolution: {integrity: sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==} di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} @@ -5250,8 +5253,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.262: - resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==} + electron-to-chromium@1.5.266: + resolution: {integrity: sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5571,6 +5574,10 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} + engines: {node: '>= 0.10.0'} + express@5.2.1: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} @@ -5655,10 +5662,14 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - finalhandler@2.1.0: - resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + find-cache-directory@6.0.0: resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} engines: {node: '>=20'} @@ -6648,11 +6659,11 @@ packages: jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + jws@3.2.3: + resolution: {integrity: sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==} - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} karma-chrome-launcher@3.2.0: resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} @@ -7196,8 +7207,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.2: - resolution: {integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==} + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} engines: {node: '>= 6.13.0'} node-gyp-build-optional-packages@5.2.2: @@ -7657,8 +7668,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.7.3: - resolution: {integrity: sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true @@ -7746,8 +7757,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.31.0: - resolution: {integrity: sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==} + puppeteer-core@24.32.0: + resolution: {integrity: sha512-MqzLLeJjqjtHK9J44+KE3kjtXXhFpPvg+AvXl/oy/jB8MeeNH66/4MNotOTqGZ6MPaxWi51YJ1ASga6OIff6xw==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8497,8 +8508,8 @@ packages: resolution: {integrity: sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==} engines: {node: '>=18'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + terser-webpack-plugin@5.3.15: + resolution: {integrity: sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -8814,8 +8825,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.2: + resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -9335,7 +9346,7 @@ packages: snapshots: - '@acemir/cssom@0.9.24': {} + '@acemir/cssom@0.9.28': {} '@actions/core@1.11.1': dependencies: @@ -9619,7 +9630,7 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.4 - '@asamuzakjp/dom-selector@6.7.5': + '@asamuzakjp/dom-selector@6.7.6': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -9673,7 +9684,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.0 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -10984,7 +10995,7 @@ snapshots: - supports-color - utf-8-validate - '@grpc/grpc-js@1.14.1': + '@grpc/grpc-js@1.14.2': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -11823,7 +11834,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.10.13': + '@puppeteer/browsers@2.11.0': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -12054,7 +12065,7 @@ snapshots: '@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/types': 8.48.1 eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12166,7 +12177,7 @@ snapshots: '@types/cookies@0.9.2': dependencies: '@types/connect': 3.4.38 - '@types/express': 5.0.5 + '@types/express': 5.0.6 '@types/keygrip': 1.0.6 '@types/node': 22.19.1 @@ -12219,11 +12230,11 @@ snapshots: '@types/qs': 6.14.0 '@types/serve-static': 1.15.10 - '@types/express@5.0.5': + '@types/express@5.0.6': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 5.1.0 - '@types/serve-static': 1.15.10 + '@types/serve-static': 2.2.0 '@types/folder-hash@4.0.4': {} @@ -12393,7 +12404,7 @@ snapshots: '@types/serve-index@1.9.4': dependencies: - '@types/express': 5.0.5 + '@types/express': 5.0.6 '@types/serve-static@1.15.10': dependencies: @@ -12507,8 +12518,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.48.0': {} - '@typescript-eslint/types@8.48.1': {} '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': @@ -12834,7 +12843,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.31.0(bufferutil@4.0.9) + puppeteer-core: 24.32.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13258,8 +13267,8 @@ snapshots: autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.28.0 - caniuse-lite: 1.0.30001757 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001759 fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13349,7 +13358,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.32: {} + baseline-browser-mapping@2.9.4: {} basic-ftp@5.0.5: {} @@ -13413,6 +13422,23 @@ snapshots: transitivePeerDependencies: - supports-color + body-parser@1.20.4: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 2.5.3 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + body-parser@2.2.1: dependencies: bytes: 3.1.2 @@ -13509,13 +13535,13 @@ snapshots: dependencies: pako: 0.2.9 - browserslist@4.28.0: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.32 - caniuse-lite: 1.0.30001757 - electron-to-chromium: 1.5.262 + baseline-browser-mapping: 2.9.4 + caniuse-lite: 1.0.30001759 + electron-to-chromium: 1.5.266 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) + update-browserslist-db: 1.2.2(browserslist@4.28.1) browserstack@1.6.1: dependencies: @@ -13605,7 +13631,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001757: {} + caniuse-lite@1.0.30001759: {} caseless@0.12.0: {} @@ -13675,9 +13701,9 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@11.0.0(devtools-protocol@0.0.1521046): + chromium-bidi@11.0.0(devtools-protocol@0.0.1534754): dependencies: - devtools-protocol: 0.0.1521046 + devtools-protocol: 0.0.1534754 mitt: 3.0.1 zod: 3.25.76 @@ -13852,6 +13878,8 @@ snapshots: cookie-signature@1.0.6: {} + cookie-signature@1.0.7: {} + cookie-signature@1.2.2: {} cookie@0.7.1: {} @@ -13878,7 +13906,7 @@ snapshots: core-js-compat@3.47.0: dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 core-util-is@1.0.2: {} @@ -14112,7 +14140,7 @@ snapshots: devtools-protocol@0.0.1045489: {} - devtools-protocol@0.0.1521046: {} + devtools-protocol@0.0.1534754: {} di@0.0.1: {} @@ -14202,7 +14230,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.262: {} + electron-to-chromium@1.5.266: {} emoji-regex@10.6.0: {} @@ -14677,6 +14705,42 @@ snapshots: transitivePeerDependencies: - supports-color + express@4.22.1: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.4 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.2 + fresh: 0.5.2 + http-errors: 2.0.1 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.1 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.2 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + express@5.2.1: dependencies: accepts: 2.0.0 @@ -14690,7 +14754,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.0 + finalhandler: 2.1.1 fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -14714,7 +14778,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14813,7 +14877,19 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.0: + finalhandler@1.3.2: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@2.1.1: dependencies: debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 @@ -15127,13 +15203,13 @@ snapshots: gcp-metadata: 8.1.2(supports-color@10.2.2) google-logging-utils: 1.1.3 gtoken: 8.0.0(supports-color@10.2.2) - jws: 4.0.0 + jws: 4.0.1 transitivePeerDependencies: - supports-color google-gax@5.0.6(supports-color@10.2.2): dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.2 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 google-auth-library: 10.5.0(supports-color@10.2.2) @@ -15179,13 +15255,13 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.5.4): dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.2 protobufjs: 7.5.4 gtoken@8.0.0(supports-color@10.2.2): dependencies: gaxios: 7.1.3(supports-color@10.2.2) - jws: 4.0.0 + jws: 4.0.1 transitivePeerDependencies: - supports-color @@ -15817,8 +15893,8 @@ snapshots: jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.24 - '@asamuzakjp/dom-selector': 6.7.5 + '@acemir/cssom': 0.9.28 + '@asamuzakjp/dom-selector': 6.7.6 cssstyle: 5.3.3 data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15884,7 +15960,7 @@ snapshots: jsonwebtoken@9.0.2: dependencies: - jws: 3.2.2 + jws: 3.2.3 lodash.includes: 4.3.0 lodash.isboolean: 3.0.3 lodash.isinteger: 4.0.4 @@ -15928,12 +16004,12 @@ snapshots: ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - jws@3.2.2: + jws@3.2.3: dependencies: jwa: 1.4.2 safe-buffer: 5.2.1 - jws@4.0.0: + jws@4.0.1: dependencies: jwa: 2.0.1 safe-buffer: 5.2.1 @@ -15971,7 +16047,7 @@ snapshots: karma@6.4.4(bufferutil@4.0.9): dependencies: '@colors/colors': 1.5.0 - body-parser: 1.20.3 + body-parser: 1.20.4 braces: 3.0.3 chokidar: 3.6.0 connect: 3.7.0 @@ -16489,7 +16565,7 @@ snapshots: '@rollup/wasm-node': 4.53.3 ajv: 8.17.1 ansi-colors: 4.1.3 - browserslist: 4.28.0 + browserslist: 4.28.1 chokidar: 4.0.3 commander: 14.0.2 dependency-graph: 1.0.0 @@ -16544,7 +16620,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.2: {} + node-forge@1.3.3: {} node-gyp-build-optional-packages@5.2.2: dependencies: @@ -17040,7 +17116,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.7.3: {} + prettier@3.7.4: {} proc-log@5.0.0: {} @@ -17167,12 +17243,12 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.31.0(bufferutil@4.0.9): + puppeteer-core@24.32.0(bufferutil@4.0.9): dependencies: - '@puppeteer/browsers': 2.10.13 - chromium-bidi: 11.0.0(devtools-protocol@0.0.1521046) + '@puppeteer/browsers': 2.11.0 + chromium-bidi: 11.0.0(devtools-protocol@0.0.1534754) debug: 4.4.3(supports-color@10.2.2) - devtools-protocol: 0.0.1521046 + devtools-protocol: 0.0.1534754 typed-query-selector: 2.12.0 webdriver-bidi-protocol: 0.3.9 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -17617,7 +17693,7 @@ snapshots: selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.14 - node-forge: 1.3.2 + node-forge: 1.3.3 semver@5.7.2: {} @@ -18183,7 +18259,7 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)): + terser-webpack-plugin@5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 @@ -18490,9 +18566,9 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.4(browserslist@4.28.0): + update-browserslist-db@1.2.2(browserslist@4.28.1): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -18740,7 +18816,7 @@ snapshots: colorette: 2.0.20 compression: 1.8.1 connect-history-api-fallback: 2.0.0 - express: 4.21.2 + express: 4.22.1 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.3.0 @@ -18785,7 +18861,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.28.0 + browserslist: 4.28.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -18799,7 +18875,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)) + terser-webpack-plugin: 5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From eab705fc54d6897cefa662085d395a733c45d496 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 10 Dec 2025 05:06:03 +0000 Subject: [PATCH 1958/2162] build: update github/codeql-action action to v4.31.7 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f22527a4d9b1..2a922e78a6b7 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@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/init@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3c01f90238fb..81d60689b9fc 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@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 + uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 with: sarif_file: results.sarif From 149834d34d1e46d8e9f18de6bb164082084aee3d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:18:05 -0500 Subject: [PATCH 1959/2162] refactor(@angular/cli): integrate new package manager abstraction in update command Integrates the new `PackageManager` abstraction into the `ng update` command. This refactoring replaces the direct `pacote` package calls with the unified `PackageManager` API, improving consistency and maintainability. This does not yet change the internal update schematic which still does use the `pacote` package. --- .../angular/cli/src/commands/update/cli.ts | 106 +++++--------- .../commands/update/utilities/cli-version.ts | 133 +++++++++--------- 2 files changed, 96 insertions(+), 143 deletions(-) diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 2ce76d30fece..3de979b481e6 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -12,7 +12,6 @@ import { existsSync, promises as fs } from 'node:fs'; import { createRequire } from 'node:module'; import * as path from 'node:path'; import npa from 'npm-package-arg'; -import * as semver from 'semver'; import { Argv } from 'yargs'; import { CommandModule, @@ -21,14 +20,10 @@ import { Options, } from '../../command-builder/command-module'; import { SchematicEngineHost } from '../../command-builder/utilities/schematic-engine-host'; +import { PackageManager, PackageManifest, createPackageManager } from '../../package-managers'; import { colors } from '../../utilities/color'; import { disableVersionCheck } from '../../utilities/environment-options'; import { assertIsError } from '../../utilities/error'; -import { - PackageIdentifier, - PackageManifest, - fetchPackageMetadata, -} from '../../utilities/package-metadata'; import { PackageTreeNode, findPackageJson, @@ -174,7 +169,13 @@ export default class UpdateCommandModule extends CommandModule): Promise { - const { logger, packageManager } = this.context; + const { logger } = this.context; + // Instantiate the package manager + const packageManager = await createPackageManager({ + cwd: this.context.root, + logger, + configuredPackageManager: this.context.packageManager.name, + }); // Check if the current installed CLI version is older than the latest compatible version. // Skip when running `ng update` without a package name as this will not trigger an actual update. @@ -183,7 +184,6 @@ export default class UpdateCommandModule extends CommandModule favor @schematics/update from this package // Otherwise, use packages from the active workspace (migrations) resolvePaths: this.resolvePaths, @@ -276,7 +276,13 @@ export default class UpdateCommandModule extends CommandModule, options: Options, - packages: PackageIdentifier[], + packages: npa.Result[], + packageManager: PackageManager, ): Promise { const { logger } = this.context; @@ -406,13 +413,14 @@ export default class UpdateCommandModule extends CommandModule { - const { version } = await fetchPackageManifest( - `@angular/cli@${getCLIUpdateRunnerVersion(packagesToUpdate, next)}`, - logger, - { - verbose, - usingYarn: packageManager.name === PackageManager.Yarn, - }, - ); + const runnerVersion = getCLIUpdateRunnerVersion(packagesToUpdate, next); + const manifest = await packageManager.getManifest(`@angular/cli@${runnerVersion}`); + + if (!manifest) { + logger.warn(`Could not find @angular/cli version '${runnerVersion}'.`); + + return null; + } + + const version = manifest.version; return VERSION.full === version ? null : version; } @@ -120,52 +119,53 @@ export function getCLIUpdateRunnerVersion( */ export async function runTempBinary( packageName: string, - packageManager: PackageManagerUtils, + packageManager: PackageManager, args: string[] = [], ): Promise { - const { success, tempNodeModules } = await packageManager.installTemp(packageName); - if (!success) { - return 1; - } - - // Remove version/tag etc... from package name - // Ex: @angular/cli@latest -> @angular/cli - const packageNameNoVersion = packageName.substring(0, packageName.lastIndexOf('@')); - const pkgLocation = join(tempNodeModules, packageNameNoVersion); - const packageJsonPath = join(pkgLocation, 'package.json'); - - // Get a binary location for this package - let binPath: string | undefined; - if (existsSync(packageJsonPath)) { - const content = await fs.readFile(packageJsonPath, 'utf-8'); - if (content) { - const { bin = {} } = JSON.parse(content) as { bin: Record }; - const binKeys = Object.keys(bin); - - if (binKeys.length) { - binPath = resolve(pkgLocation, bin[binKeys[0]]); + const { workingDirectory, cleanup } = await packageManager.acquireTempPackage(packageName); + + try { + // Remove version/tag etc... from package name + // Ex: @angular/cli@latest -> @angular/cli + const packageNameNoVersion = packageName.substring(0, packageName.lastIndexOf('@')); + const pkgLocation = join(workingDirectory, 'node_modules', packageNameNoVersion); + const packageJsonPath = join(pkgLocation, 'package.json'); + + // Get a binary location for this package + let binPath: string | undefined; + if (existsSync(packageJsonPath)) { + const content = await fs.readFile(packageJsonPath, 'utf-8'); + if (content) { + const { bin = {} } = JSON.parse(content) as { bin: Record }; + const binKeys = Object.keys(bin); + + if (binKeys.length) { + binPath = resolve(pkgLocation, bin[binKeys[0]]); + } } } - } - if (!binPath) { - throw new Error(`Cannot locate bin for temporary package: ${packageNameNoVersion}.`); - } + if (!binPath) { + throw new Error(`Cannot locate bin for temporary package: ${packageNameNoVersion}.`); + } - const { status, error } = spawnSync(process.execPath, [binPath, ...args], { - stdio: 'inherit', - env: { - ...process.env, - NG_DISABLE_VERSION_CHECK: 'true', - NG_CLI_ANALYTICS: 'false', - }, - }); - - if (status === null && error) { - throw error; - } + const { status, error } = spawnSync(process.execPath, [binPath, ...args], { + stdio: 'inherit', + env: { + ...process.env, + NG_DISABLE_VERSION_CHECK: 'true', + NG_CLI_ANALYTICS: 'false', + }, + }); + + if (status === null && error) { + throw error; + } - return status ?? 0; + return status ?? 0; + } finally { + await cleanup(); + } } /** @@ -175,30 +175,23 @@ export async function runTempBinary( * @param verbose Whether to log verbose output. * @returns True if the package manager should be forced, false otherwise. */ -export function shouldForcePackageManager( - packageManager: PackageManagerUtils, +export async function shouldForcePackageManager( + packageManager: PackageManager, logger: logging.LoggerApi, verbose: boolean, -): boolean { +): Promise { // npm 7+ can fail due to it incorrectly resolving peer dependencies that have valid SemVer // ranges during an update. Update will set correct versions of dependencies within the // package.json file. The force option is set to workaround these errors. - // Example error: - // npm ERR! Conflicting peer dependency: @angular/compiler-cli@14.0.0-rc.0 - // npm ERR! node_modules/@angular/compiler-cli - // npm ERR! peer @angular/compiler-cli@"^14.0.0 || ^14.0.0-rc" from @angular-devkit/build-angular@14.0.0-rc.0 - // npm ERR! node_modules/@angular-devkit/build-angular - // npm ERR! dev @angular-devkit/build-angular@"~14.0.0-rc.0" from the root project - if ( - packageManager.name === PackageManager.Npm && - packageManager.version && - semver.gte(packageManager.version, '7.0.0') - ) { - if (verbose) { - logger.info('NPM 7+ detected -- enabling force option for package installation'); - } + if (packageManager.name === 'npm') { + const version = await packageManager.getVersion(); + if (semver.gte(version, '7.0.0')) { + if (verbose) { + logger.info('NPM 7+ detected -- enabling force option for package installation'); + } - return true; + return true; + } } return false; From 2e7227b8dc04d4b2ca20e18baaeebaa65d3c2aac Mon Sep 17 00:00:00 2001 From: Aukevanoost Date: Wed, 10 Dec 2025 13:53:55 +0100 Subject: [PATCH 1960/2162] fix(@angular/build): Ensure disposal of close-javascript-transformer The onDispose callback doesn't close the javascriptTransformer correctly yet. This ensures that all worker pools are cleaned after a disposal. --- .../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 95e6694b728b..af4dcaea01fb 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -591,6 +591,7 @@ export function createCompilerPlugin( build.onDispose(() => { sharedTSCompilationState?.dispose(); void compilation.close?.(); + void javascriptTransformer.close(); void cacheStore?.close(); }); From f17bc5931ffccd1094112ea7538ee61b7dadf320 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 10 Dec 2025 13:17:02 +0000 Subject: [PATCH 1961/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 2 +- package.json | 4 +- packages/angular/build/package.json | 6 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 291 +++++++++++------- 5 files changed, 185 insertions(+), 120 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index d45f22f1c42f..fe92f53c0725 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -6,7 +6,7 @@ "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", "@vitest/coverage-v8": "4.0.15", - "jsdom": "27.2.0", + "jsdom": "27.3.0", "rxjs": "7.8.2", "vitest": "4.0.15" } diff --git a/package.json b/package.json index 0a123aa7681e..ab62f3b09b09 100644 --- a/package.json +++ b/package.json @@ -91,8 +91,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.48.1", - "@typescript-eslint/parser": "8.48.1", + "@typescript-eslint/eslint-plugin": "8.49.0", + "@typescript-eslint/parser": "8.49.0", "ajv": "8.17.1", "buffer": "6.0.3", "esbuild": "0.27.1", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 934f349cb309..4e53cb890c00 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,12 +38,12 @@ "picomatch": "4.0.3", "piscina": "5.1.4", "rolldown": "1.0.0-beta.53", - "sass": "1.94.2", + "sass": "1.95.0", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", "undici": "7.16.0", - "vite": "7.2.6", + "vite": "7.2.7", "watchpack": "2.4.4" }, "optionalDependencies": { @@ -52,7 +52,7 @@ "devDependencies": { "@angular-devkit/core": "workspace:*", "@angular/ssr": "workspace:*", - "jsdom": "27.2.0", + "jsdom": "27.3.0", "less": "4.4.2", "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 3cd0481dc7c5..8d0bd2227e35 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.94.2", + "sass": "1.95.0", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68291e74838a..8f4924368aed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.48.1 - version: 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.49.0 + version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.48.1 - version: 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.49.0 + version: 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -192,7 +192,7 @@ importers: version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) express: specifier: 5.2.1 version: 5.2.1 @@ -318,19 +318,19 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: - specifier: 27.2.0 - version: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 27.3.0 + version: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -354,7 +354,7 @@ importers: version: 5.1.21(@types/node@24.10.1) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -395,8 +395,8 @@ importers: specifier: 1.0.0-beta.53 version: 1.0.0-beta.53 sass: - specifier: 1.94.2 - version: 1.94.2 + specifier: 1.95.0 + version: 1.95.0 semver: specifier: 7.7.3 version: 7.7.3 @@ -410,8 +410,8 @@ importers: specifier: 7.16.0 version: 7.16.0 vite: - specifier: 7.2.6 - version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 7.2.7 + version: 7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -423,8 +423,8 @@ importers: specifier: workspace:* version: link:../ssr jsdom: - specifier: 27.2.0 - version: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 27.3.0 + version: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -705,11 +705,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.94.2 - version: 1.94.2 + specifier: 1.95.0 + version: 1.95.0 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.1)) + version: 16.0.6(sass@1.95.0)(webpack@5.103.0(esbuild@0.27.1)) semver: specifier: 7.7.3 version: 7.7.3 @@ -1661,9 +1661,11 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.20': - resolution: {integrity: sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==} + '@csstools/css-syntax-patches-for-csstree@1.0.14': + resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} @@ -3836,39 +3838,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.48.1': - resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==} + '@typescript-eslint/eslint-plugin@8.49.0': + resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.48.1 + '@typescript-eslint/parser': ^8.49.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.48.1': - resolution: {integrity: sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==} + '@typescript-eslint/parser@8.49.0': + resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.48.1': - resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==} + '@typescript-eslint/project-service@8.49.0': + resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.48.1': - resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==} + '@typescript-eslint/scope-manager@8.49.0': + resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.48.1': - resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==} + '@typescript-eslint/tsconfig-utils@8.49.0': + resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.48.1': - resolution: {integrity: sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==} + '@typescript-eslint/type-utils@8.49.0': + resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3878,21 +3880,25 @@ packages: resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.48.1': - resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==} + '@typescript-eslint/types@8.49.0': + resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.49.0': + resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.48.1': - resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==} + '@typescript-eslint/utils@8.49.0': + resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.48.1': - resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==} + '@typescript-eslint/visitor-keys@8.49.0': + resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.28': @@ -4959,8 +4965,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.3: - resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} + cssstyle@5.3.4: + resolution: {integrity: sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==} engines: {node: '>=20'} custom-event@1.0.1: @@ -5926,9 +5932,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-tag@2.12.6: resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -6574,8 +6577,8 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdom@27.2.0: - resolution: {integrity: sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==} + jsdom@27.3.0: + resolution: {integrity: sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -8069,8 +8072,8 @@ packages: webpack: optional: true - sass@1.94.2: - resolution: {integrity: sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==} + sass@1.95.0: + resolution: {integrity: sha512-9QMjhLq+UkOg/4bb8Lt8A+hJZvY3t+9xeZMKSBtBEgxrXA3ed5Ts4NDreUkYgJP1BTmrscQE/xYhf7iShow6lw==} engines: {node: '>=14.0.0'} hasBin: true @@ -8940,6 +8943,46 @@ packages: yaml: optional: true + vite@7.2.7: + resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@4.0.15: resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -10348,7 +10391,9 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.20': {} + '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 '@csstools/css-tokenizer@3.0.4': {} @@ -12459,16 +12504,15 @@ snapshots: '@types/node': 22.19.1 optional: true - '@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.48.1 - '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.48.1 + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 eslint: 9.39.1(jiti@2.6.1) - graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12476,41 +12520,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.48.1 - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.48.1 + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) - '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.48.1': + '@typescript-eslint/scope-manager@8.49.0': dependencies: - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/visitor-keys': 8.48.1 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12520,12 +12564,14 @@ snapshots: '@typescript-eslint/types@8.48.1': {} - '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': + '@typescript-eslint/types@8.49.0': {} + + '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/visitor-keys': 8.48.1 + '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3(supports-color@10.2.2) minimatch: 9.0.5 semver: 7.7.3 @@ -12535,20 +12581,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.48.1 - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.48.1': + '@typescript-eslint/visitor-keys@8.49.0': dependencies: - '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.28': @@ -12708,11 +12754,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -12725,7 +12771,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12738,13 +12784,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -13976,11 +14022,13 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.3: + cssstyle@5.3.4(postcss@8.5.6): dependencies: '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.20 + '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) css-tree: 3.1.0 + transitivePeerDependencies: + - postcss custom-event@1.0.1: {} @@ -14495,11 +14543,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14509,7 +14557,7 @@ snapshots: dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14520,7 +14568,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14532,7 +14580,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14778,7 +14826,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15244,8 +15292,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - graphql-tag@2.12.6(graphql@16.12.0): dependencies: graphql: 16.12.0 @@ -15891,11 +15937,11 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: '@acemir/cssom': 0.9.28 '@asamuzakjp/dom-selector': 6.7.6 - cssstyle: 5.3.3 + cssstyle: 5.3.4(postcss@8.5.6) data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -15915,6 +15961,7 @@ snapshots: xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil + - postcss - supports-color - utf-8-validate @@ -16579,7 +16626,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.3.0(rollup@4.53.3)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.94.2 + sass: 1.95.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -17647,14 +17694,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.27.1)): + sass-loader@16.0.6(sass@1.95.0)(webpack@5.103.0(esbuild@0.27.1)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.94.2 + sass: 1.95.0 webpack: 5.103.0(esbuild@0.27.1) - sass@1.94.2: + sass@1.95.0: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -18683,7 +18730,25 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.1 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.95.0 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18696,15 +18761,15 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.94.2 + sass: 1.95.0 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -18721,12 +18786,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.94.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.1 - jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + jsdom: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less From a8b62a0b535562482fa14bbd75875c71b94f7c50 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 10 Dec 2025 13:16:36 +0000 Subject: [PATCH 1962/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- tests/legacy-cli/e2e/ng-snapshot/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 3e2a11894b08..6605698211c3 100644 --- a/tests/legacy-cli/e2e/ng-snapshot/package.json +++ b/tests/legacy-cli/e2e/ng-snapshot/package.json @@ -3,7 +3,7 @@ "private": true, "dependencies": { "@angular/animations": "github:angular/animations-builds#114cbaa14ec144a1ef79997821610c3116dd7d10", - "@angular/cdk": "github:angular/cdk-builds#d21ef92e0f537f6b34741fa22b556c8142786bc6", + "@angular/cdk": "github:angular/cdk-builds#6b32d96851ee03dcb819f2ef7e4e444b2b7d148b", "@angular/common": "github:angular/common-builds#eee6b9832f404d602e3c916fc1a911dda1bed315", "@angular/compiler": "github:angular/compiler-builds#a580959173a4ee9436344247423189ea4fb4b1bd", "@angular/compiler-cli": "github:angular/compiler-cli-builds#310a0d19272ab712f2456d992ee3438986c3625d", @@ -11,8 +11,8 @@ "@angular/forms": "github:angular/forms-builds#eda3dc9cafcca1f5448a227f92b391a9510230c4", "@angular/language-service": "github:angular/language-service-builds#2ff28b9209fe628b90eb202dd8f50b2fe07b1c7d", "@angular/localize": "github:angular/localize-builds#c7dad3439ffd40a0392f6668923e06be3511443f", - "@angular/material": "github:angular/material-builds#c6d95a6d4605f6c794ff1ef95f916f07c347b845", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#a2dc4fb26548a327b969d9d38cdb582142319121", + "@angular/material": "github:angular/material-builds#299b1996c8c162745f116b71b58509ae79c83a67", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#30528264048f6282aec171023484a46015500062", "@angular/platform-browser": "github:angular/platform-browser-builds#8479cd74367f43e352387de864ab61890d259b0d", "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a5c31785e26faac20720794b2ed52ed3e0b5f169", "@angular/platform-server": "github:angular/platform-server-builds#a021e6a13ea152b86e24ea47d032d9f9ea0cc14b", From 43dd1ff9f269f7a7729019f630b30ade0cb4cd5a Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 10 Dec 2025 08:37:52 -0800 Subject: [PATCH 1963/2162] release: cut the v21.0.3 release --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 632933540a9d..d8e8a6764e28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,25 @@ + + +# 21.0.3 (2025-12-10) + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------- | +| [5d85f416f](https://github.com/angular/angular-cli/commit/5d85f416f43b6bcd07b28ab920cb40c61a83ebdd) | fix | conditionally provide Zone.js change detection in the built-in test main file | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | +| [778b4cffc](https://github.com/angular/angular-cli/commit/778b4cffc03e7c137940e3b8c89f290fd226cf17) | fix | Add custom middleware for to present an Angular-tailored message | +| [9b02ab2ee](https://github.com/angular/angular-cli/commit/9b02ab2ee0a36aa6aafd94ea8059b48679845860) | fix | Ensure disposal of close-javascript-transformer | +| [0fc7d576e](https://github.com/angular/angular-cli/commit/0fc7d576e53f45601fdbeb95f4a853ebceae4fad) | fix | ensure locale base href retains leading slash ([#32040](https://github.com/angular/angular-cli/pull/32040)) | +| [b141670a2](https://github.com/angular/angular-cli/commit/b141670a2453dd0ea5fe6aa22ddae7175893d813) | fix | inject testing polyfills in Karma unit-test executor | +| [88c18ce68](https://github.com/angular/angular-cli/commit/88c18ce68585726652b88b10ce090039fbe1829f) | fix | support NODE_EXTRA_CA_CERTS in SSR SSL plugin | + + + # 21.1.0-next.1 (2025-12-03) From c1f9b7f7daa57b6c9c60a891402e4bc6fca55554 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 10 Dec 2025 10:47:23 -0800 Subject: [PATCH 1964/2162] release: cut the v21.1.0-next.2 release --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8e8a6764e28..3c8cb5e24869 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,33 @@ + + +# 21.1.0-next.2 (2025-12-10) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | +| [d8b76e93d](https://github.com/angular/angular-cli/commit/d8b76e93d3e9e4e7bd7ad6e12fdf59cd663cbb8e) | fix | correctly handle yarn classic tag manifest fetching | +| [7ab5c0b0a](https://github.com/angular/angular-cli/commit/7ab5c0b0a1c637f3e0adb71486e5e7e8716561e4) | fix | correctly spawn package managers on Windows in new abstraction | +| [240588b7e](https://github.com/angular/angular-cli/commit/240588b7e3c8698c83110793ab98d20caee4e1a4) | perf | optimize `ng add` version discovery | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------- | +| [985aa18d0](https://github.com/angular/angular-cli/commit/985aa18d0b6cf728c498c0873793e131a4c416c1) | fix | conditionally provide Zone.js change detection in the built-in test main file | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | +| [30b5d81b4](https://github.com/angular/angular-cli/commit/30b5d81b4adafca32c94672a39574daa2e3fc8b7) | fix | Add custom middleware for to present an Angular-tailored message | +| [2e7227b8d](https://github.com/angular/angular-cli/commit/2e7227b8dc04d4b2ca20e18baaeebaa65d3c2aac) | fix | Ensure disposal of close-javascript-transformer | +| [38b16ea01](https://github.com/angular/angular-cli/commit/38b16ea0108c48835dc0d81863eca84f7b8cea6e) | fix | ensure locale base href retains leading slash ([#32040](https://github.com/angular/angular-cli/pull/32040)) | +| [385165cbc](https://github.com/angular/angular-cli/commit/385165cbc6ff087e6bc1fb6f686d4929e83a075a) | fix | inject testing polyfills in Karma unit-test executor | +| [6d212206f](https://github.com/angular/angular-cli/commit/6d212206fdfc94e661a25bed1287c0bc15219b63) | fix | support NODE_EXTRA_CA_CERTS in SSR SSL plugin | + + + # 21.0.3 (2025-12-10) diff --git a/package.json b/package.json index ab62f3b09b09..e9c19b926687 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.1.0-next.1", + "version": "21.1.0-next.2", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From 85c6e39458d0f68d6125c9d45376c9d6bfe58762 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 10 Dec 2025 10:35:26 -0500 Subject: [PATCH 1965/2162] build: use Node.js built-in TypeScript support for dev-infra scripts This change removes the use of `ts-node` to execute both `ng-dev` and the repo dev scripts. Due to the use of enums imports from `@angular/cli` package code for the analytics validation, the `admin` package script currently requires the `--experimental-transform-types` option. --- .ng-dev/commit-message.mjs | 2 +- .ng-dev/release.mjs | 9 ++++----- .ng-dev/tsconfig.json | 3 +++ package.json | 7 +++---- scripts/build-packages-dist.mts | 2 +- scripts/circular-deps-test.conf.mjs | 2 +- scripts/create.mts | 4 ++-- scripts/devkit-admin.mts | 2 +- scripts/json-help.mts | 2 +- scripts/release-checks/dependency-ranges/index.mts | 4 ++-- scripts/snapshots.mts | 4 ++-- scripts/templates.mts | 2 +- scripts/tsconfig.json | 3 +++ scripts/validate-user-analytics.mts | 4 ++-- scripts/validate.mts | 6 +++--- 15 files changed, 30 insertions(+), 26 deletions(-) diff --git a/.ng-dev/commit-message.mjs b/.ng-dev/commit-message.mjs index 4a3b270ce0a7..d30060674355 100644 --- a/.ng-dev/commit-message.mjs +++ b/.ng-dev/commit-message.mjs @@ -1,4 +1,4 @@ -import { packages } from '../scripts/packages.mjs'; +import { packages } from '../scripts/packages.mts'; /** * The configuration for `ng-dev commit-message` commands. diff --git a/.ng-dev/release.mjs b/.ng-dev/release.mjs index 3d097ea80b11..2aadf9db122c 100644 --- a/.ng-dev/release.mjs +++ b/.ng-dev/release.mjs @@ -1,5 +1,5 @@ import semver from 'semver'; -import { releasePackages } from '../scripts/packages.mjs'; +import { releasePackages } from '../scripts/packages.mts'; /** * Configuration for the `ng-dev release` command. @@ -12,14 +12,13 @@ export const release = { buildPackages: async () => { // The `performNpmReleaseBuild` function is loaded at runtime to avoid loading additional // files and dependencies unless a build is required. - const { performNpmReleaseBuild } = await import('../scripts/build-packages-dist.mjs'); + const { performNpmReleaseBuild } = await import('../scripts/build-packages-dist.mts'); return performNpmReleaseBuild(); }, prereleaseCheck: async (newVersionStr) => { const newVersion = new semver.SemVer(newVersionStr); - const { assertValidDependencyRanges } = await import( - '../scripts/release-checks/dependency-ranges/index.mjs' - ); + const { assertValidDependencyRanges } = + await import('../scripts/release-checks/dependency-ranges/index.mts'); await assertValidDependencyRanges(newVersion, releasePackages); }, diff --git a/.ng-dev/tsconfig.json b/.ng-dev/tsconfig.json index 9f0a0f84be18..a250849eb673 100644 --- a/.ng-dev/tsconfig.json +++ b/.ng-dev/tsconfig.json @@ -3,6 +3,9 @@ "compilerOptions": { "resolveJsonModule": true, "allowJs": true, + "rewriteRelativeImportExtensions": true, + "erasableSyntaxOnly": true, + "verbatimModuleSyntax": true, "module": "Node16", "moduleResolution": "Node16", "checkJs": true, diff --git a/package.json b/package.json index e9c19b926687..675b857fc357 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "Angular DevKit" ], "scripts": { - "admin": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only ./scripts/devkit-admin.mjs", + "admin": "node --no-warnings=ExperimentalWarning --experimental-transform-types ./scripts/devkit-admin.mts", "bazel": "bazelisk", "test": "bazel test //packages/...", "build": "pnpm -s admin build", @@ -20,10 +20,9 @@ "templates": "pnpm -s admin templates", "validate": "pnpm -s admin validate", "postinstall": "husky", - "ng-dev": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only node_modules/@angular/ng-dev/bundles/cli.mjs", - "ts-circular-deps": "pnpm -s ng-dev ts-circular-deps --config ./scripts/circular-deps-test.conf.mjs", + "ts-circular-deps": "ng-dev ts-circular-deps --config ./scripts/circular-deps-test.conf.mjs", "check-tooling-setup": "tsc --project .ng-dev/tsconfig.json", - "diff-release-package": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/diff-release-package.mts" + "diff-release-package": "node scripts/diff-release-package.mts" }, "repository": { "type": "git", diff --git a/scripts/build-packages-dist.mts b/scripts/build-packages-dist.mts index a63b1e8c1de2..2a424d68aea7 100644 --- a/scripts/build-packages-dist.mts +++ b/scripts/build-packages-dist.mts @@ -12,7 +12,7 @@ * distribution folder within the project. */ -import { BuiltPackage } from '@angular/ng-dev'; +import type { BuiltPackage } from '@angular/ng-dev'; import { execSync } from 'node:child_process'; import { chmodSync, diff --git a/scripts/circular-deps-test.conf.mjs b/scripts/circular-deps-test.conf.mjs index 790be477858d..1505630371b0 100644 --- a/scripts/circular-deps-test.conf.mjs +++ b/scripts/circular-deps-test.conf.mjs @@ -9,7 +9,7 @@ import { statSync } from 'node:fs'; import { join } from 'node:path'; -import { packages } from './packages.mjs'; +import { packages } from './packages.mts'; export const baseDir = '../'; export const goldenFile = '../goldens/circular-deps/packages.json'; diff --git a/scripts/create.mts b/scripts/create.mts index 9ed02a64b316..56e125da46f2 100644 --- a/scripts/create.mts +++ b/scripts/create.mts @@ -11,8 +11,8 @@ import * as child_process from 'node:child_process'; import { copyFile, readFile, rm, writeFile } from 'node:fs/promises'; import * as path from 'node:path'; import { pathToFileURL } from 'node:url'; -import build from './build.mjs'; -import { packages } from './packages.mjs'; +import build from './build.mts'; +import { packages } from './packages.mts'; export interface CreateOptions extends Record { _: string[]; diff --git a/scripts/devkit-admin.mts b/scripts/devkit-admin.mts index 93f3356438e8..0a17df9f45a1 100644 --- a/scripts/devkit-admin.mts +++ b/scripts/devkit-admin.mts @@ -42,7 +42,7 @@ console.error = function (...args) { }; try { - const script = await import(`./${scriptName}.mjs`); + const script = await import(`./${scriptName}.mts`); const exitCode = await script.default(args, cwd); process.exitCode = typeof exitCode === 'number' ? exitCode : 0; // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/scripts/json-help.mts b/scripts/json-help.mts index 34271a8925bc..739c79463484 100644 --- a/scripts/json-help.mts +++ b/scripts/json-help.mts @@ -10,7 +10,7 @@ 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 create from './create.mjs'; +import create from './create.mts'; const __dirname = import.meta.dirname; diff --git a/scripts/release-checks/dependency-ranges/index.mts b/scripts/release-checks/dependency-ranges/index.mts index 9f507a8b4425..cc163fbd7377 100644 --- a/scripts/release-checks/dependency-ranges/index.mts +++ b/scripts/release-checks/dependency-ranges/index.mts @@ -8,8 +8,8 @@ import { Log, ReleasePrecheckError, bold } from '@angular/ng-dev'; import semver from 'semver'; -import { checkSchematicsAngularLatestVersion } from './latest-versions-check.mjs'; -import { PackageJson, checkPeerDependencies } from './peer-deps-check.mjs'; +import { checkSchematicsAngularLatestVersion } from './latest-versions-check.mts'; +import { type PackageJson, checkPeerDependencies } from './peer-deps-check.mts'; /** Environment variable that can be used to skip this pre-check. */ const skipEnvVar = 'SKIP_DEPENDENCY_RANGE_PRECHECK'; diff --git a/scripts/snapshots.mts b/scripts/snapshots.mts index 1e7a751aeab2..cefb8badaabc 100644 --- a/scripts/snapshots.mts +++ b/scripts/snapshots.mts @@ -11,8 +11,8 @@ import * as fs from 'node:fs'; import * as os from 'node:os'; import * as path from 'node:path'; import build from './build.mjs'; -import jsonHelp, { createTemporaryProject } from './json-help.mjs'; -import { PackageInfo, packages } from './packages.mjs'; +import jsonHelp, { createTemporaryProject } from './json-help.mts'; +import { type PackageInfo, packages } from './packages.mts'; const __dirname = import.meta.dirname; diff --git a/scripts/templates.mts b/scripts/templates.mts index 1a43b9e68cac..c36ec8aea364 100644 --- a/scripts/templates.mts +++ b/scripts/templates.mts @@ -9,7 +9,7 @@ import lodash from 'lodash'; import { readFile, writeFile } from 'node:fs/promises'; import * as path from 'node:path'; -import { releasePackages } from './packages.mjs'; +import { releasePackages } from './packages.mts'; const __dirname = import.meta.dirname; diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 2a26627bc905..4b4f57994123 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -3,6 +3,9 @@ "compilerOptions": { "module": "Node16", "moduleResolution": "Node16", + "erasableSyntaxOnly": true, + "verbatimModuleSyntax": true, + "rewriteRelativeImportExtensions": true, "noEmit": true, "types": [] }, diff --git a/scripts/validate-user-analytics.mts b/scripts/validate-user-analytics.mts index 521e17bbf924..d66d84dee809 100644 --- a/scripts/validate-user-analytics.mts +++ b/scripts/validate-user-analytics.mts @@ -15,7 +15,7 @@ import { EventCustomDimension, EventCustomMetric, UserCustomDimension, -} from '../packages/angular/cli/src/analytics/analytics-parameters.mjs'; +} from '../packages/angular/cli/src/analytics/analytics-parameters.ts'; const __dirname = import.meta.dirname; const userAnalyticsTable = lodash.template( @@ -82,7 +82,7 @@ async function _checkDimensions(dimensionsTable: string) { }; // Find all the schemas - const { packages } = await import('./packages.mjs'); + const { packages } = await import('./packages.mts'); const packagesPaths = packages.map(({ root }) => root); for (const packagePath of packagesPaths) { const schemasPaths = await glob('**/schema.json', { cwd: packagePath }); diff --git a/scripts/validate.mts b/scripts/validate.mts index 1de28c3e5de2..70d0f27a31d1 100644 --- a/scripts/validate.mts +++ b/scripts/validate.mts @@ -7,8 +7,8 @@ */ import { execSync } from 'node:child_process'; -import templates from './templates.mjs'; -import validateUserAnalytics from './validate-user-analytics.mjs'; +import templates from './templates.mts'; +import validateUserAnalytics from './validate-user-analytics.mts'; export default async function (options: { verbose: boolean }) { let error = false; @@ -24,7 +24,7 @@ export default async function (options: { verbose: boolean }) { } console.info('Running templates validation...'); - await templates({}); + await templates(); if (execSync(`git status --porcelain`).toString()) { console.error( 'Running templates updated files... Please run "devkit-admin templates" before submitting a PR.', From e6eddd4b7d70e7b5392d3344ab8ce9c625a6c3b9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:21:54 -0500 Subject: [PATCH 1966/2162] ci: correct snapshots script import extension --- scripts/snapshots.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/snapshots.mts b/scripts/snapshots.mts index cefb8badaabc..5ab1e161492b 100644 --- a/scripts/snapshots.mts +++ b/scripts/snapshots.mts @@ -10,7 +10,7 @@ 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 build from './build.mjs'; +import build from './build.mts'; import jsonHelp, { createTemporaryProject } from './json-help.mts'; import { type PackageInfo, packages } from './packages.mts'; From 98c207bc0e44caccd6fffa5b8d3a013a2a3a871a Mon Sep 17 00:00:00 2001 From: Jeremias Peier Date: Mon, 8 Dec 2025 16:21:43 +0100 Subject: [PATCH 1967/2162] fix(@angular/build): add browser condition to resolver for vitest --- .../build/src/builders/unit-test/runners/vitest/plugins.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 102b6a6101fa..b92c6e7f872d 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -128,7 +128,7 @@ export async function createVitestConfigPlugin( }, resolve: { mainFields: ['es2020', 'module', 'main'], - conditions: ['es2015', 'es2020', 'module'], + conditions: ['es2015', 'es2020', 'module', ...(browser ? ['browser'] : [])], }, }; From 288a9225c83edec9560e2b39901740e792c54d27 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 11 Dec 2025 09:55:22 +0000 Subject: [PATCH 1968/2162] fix(@schematics/angular): remove `inlineSources` from library tsconfig template This is redundant as sourcemaps are enabled internally in ng-packagr. Closes #31665 --- .../schematics/angular/library/files/tsconfig.lib.json.template | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/schematics/angular/library/files/tsconfig.lib.json.template b/packages/schematics/angular/library/files/tsconfig.lib.json.template index 79a2168d3492..779ab5549814 100644 --- a/packages/schematics/angular/library/files/tsconfig.lib.json.template +++ b/packages/schematics/angular/library/files/tsconfig.lib.json.template @@ -6,7 +6,6 @@ "outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/lib", "declaration": true, "declarationMap": true, - "inlineSources": true, "types": [] }, "include": [ From 6bef168edc07e4afe7581bc357c629773d2b2200 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 11 Dec 2025 15:07:20 +0000 Subject: [PATCH 1969/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 618 +++++++++--------- tests/legacy-cli/e2e/ng-snapshot/package.json | 32 +- 12 files changed, 404 insertions(+), 402 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index bae4972aace8..cc0aae0a00f7 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@4ec84059f295affa82fe766682981b8b838a057b + - uses: angular/dev-infra/github-actions/branch-manager@2562f2bd84bf2b992d4742d2f36895fd904d696a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 518ec01bdef8..0e74b2bc7a95 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 ba4a03290374..09eae16116ee 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@4ec84059f295affa82fe766682981b8b838a057b + - uses: angular/dev-infra/github-actions/pull-request-labeling@2562f2bd84bf2b992d4742d2f36895fd904d696a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@4ec84059f295affa82fe766682981b8b838a057b + - uses: angular/dev-infra/github-actions/post-approval-changes@2562f2bd84bf2b992d4742d2f36895fd904d696a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 6f4ef3b0d173..b34a16f2e337 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@4ec84059f295affa82fe766682981b8b838a057b + - uses: angular/dev-infra/github-actions/feature-request@2562f2bd84bf2b992d4742d2f36895fd904d696a with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index d8a2416e01a0..70fb642b9eac 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@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 0eb505035268..9bced41243a7 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup ESLint Caching uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/linting/licenses@2562f2bd84bf2b992d4742d2f36895fd904d696a build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4ec84059f295affa82fe766682981b8b838a057b + uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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/MODULE.bazel b/MODULE.bazel index cac105eec377..44279b56d3bf 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "4ec84059f295affa82fe766682981b8b838a057b", + commit = "2562f2bd84bf2b992d4742d2f36895fd904d696a", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 675b857fc357..150fb43aea1f 100644 --- a/package.json +++ b/package.json @@ -42,20 +42,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.1.0-next.1", - "@angular/cdk": "21.1.0-next.1", - "@angular/common": "21.1.0-next.1", - "@angular/compiler": "21.1.0-next.1", - "@angular/compiler-cli": "21.1.0-next.1", - "@angular/core": "21.1.0-next.1", - "@angular/forms": "21.1.0-next.1", - "@angular/localize": "21.1.0-next.1", - "@angular/material": "21.1.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#9eb95b33207c15948038e76862ed856c1ef44eb6", - "@angular/platform-browser": "21.1.0-next.1", - "@angular/platform-server": "21.1.0-next.1", - "@angular/router": "21.1.0-next.1", - "@angular/service-worker": "21.1.0-next.1", + "@angular/animations": "21.1.0-next.2", + "@angular/cdk": "21.1.0-next.2", + "@angular/common": "21.1.0-next.2", + "@angular/compiler": "21.1.0-next.2", + "@angular/compiler-cli": "21.1.0-next.2", + "@angular/core": "21.1.0-next.2", + "@angular/forms": "21.1.0-next.2", + "@angular/localize": "21.1.0-next.2", + "@angular/material": "21.1.0-next.2", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#d01dccf28bf240ced7828fe93c65eda247b24dec", + "@angular/platform-browser": "21.1.0-next.2", + "@angular/platform-server": "21.1.0-next.2", + "@angular/router": "21.1.0-next.2", + "@angular/service-worker": "21.1.0-next.2", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index bc8447ef40af..08efe3240eb2 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.1.0-next.1", - "@angular/compiler": "21.1.0-next.1", - "@angular/core": "21.1.0-next.1", - "@angular/platform-browser": "21.1.0-next.1", - "@angular/platform-server": "21.1.0-next.1", - "@angular/router": "21.1.0-next.1", + "@angular/common": "21.1.0-next.2", + "@angular/compiler": "21.1.0-next.2", + "@angular/core": "21.1.0-next.2", + "@angular/platform-browser": "21.1.0-next.2", + "@angular/platform-server": "21.1.0-next.2", + "@angular/router": "21.1.0-next.2", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 409279d28958..ca7cb0885d0e 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": "21.1.0-next.1", - "@angular/compiler-cli": "21.1.0-next.1", + "@angular/compiler": "21.1.0-next.2", + "@angular/compiler-cli": "21.1.0-next.2", "typescript": "5.9.3", "webpack": "5.103.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f4924368aed..d38683373504 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1 + specifier: 21.1.0-next.2 + version: 21.1.0-next.2 '@angular/compiler-cli': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) '@angular/core': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) '@angular/localize': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(@angular/compiler@21.1.0-next.1) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(@angular/compiler@21.1.0-next.2) '@angular/material': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(87a11e855d816a433d9af16d2a3d86fc) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#9eb95b33207c15948038e76862ed856c1ef44eb6 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9eb95b33207c15948038e76862ed856c1ef44eb6(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#d01dccf28bf240ced7828fe93c65eda247b24dec + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)) '@angular/platform-browser': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.1)(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.2)(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -318,7 +318,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -330,7 +330,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -351,10 +351,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.21 - version: 5.1.21(@types/node@24.10.1) + version: 5.1.21(@types/node@24.10.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -411,7 +411,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.7 - version: 7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -430,7 +430,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -458,10 +458,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.1) + version: 7.10.1(@types/node@24.10.2) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.2))(@types/node@24.10.2)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.24.3 version: 1.24.3(zod@4.1.13) @@ -527,23 +527,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1 + specifier: 21.1.0-next.2 + version: 21.1.0-next.2 '@angular/core': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.1)(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.2)(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -758,7 +758,7 @@ importers: version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -842,7 +842,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.1) + version: 7.10.1(@types/node@24.10.2) ansi-colors: specifier: 4.1.3 version: 4.1.3 @@ -856,11 +856,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1 + specifier: 21.1.0-next.2 + version: 21.1.0-next.2 '@angular/compiler-cli': - specifier: 21.1.0-next.1 - version: 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) + specifier: 21.1.0-next.2 + version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -972,46 +972,47 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.1.0-next.1': - resolution: {integrity: sha512-1LsMG9OewoAtDvOGtrdsacbCcbnb7QmMwsoaxeF16X4ITfa0rWjAfsB8Aj/Pp1CNs4E4pX+RCzTx3DUs4hgqkA==} + '@angular/animations@21.1.0-next.2': + resolution: {integrity: sha512-xj1T9KiICeFldeM5h2H5VdUBnhZO0zCEjYGWSP3ahmXaCrvFwbb0td5m0vxfyOk+96graq+8F1ny4xqCHQORDA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.1 + '@angular/core': 21.1.0-next.2 - '@angular/cdk@21.1.0-next.1': - resolution: {integrity: sha512-rd9hrsKc77s+EOuN+qPGpTpbTgSio6TLm25ZkVr9i/nAkqowxbTNOHdkA8kyLLqdkhKrz1Xf+ziyc6Al0m/caQ==} + '@angular/cdk@21.1.0-next.2': + resolution: {integrity: sha512-NRP8AFflcgEPHKptHdL6sljGPLkcXy/EWUr9X0+rE1fERy2z+w56D2dF+9TcYTRCC46MEgQWNyvq/2ragNmf8Q==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 + '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.1.0-next.1': - resolution: {integrity: sha512-8PeshaDEzCo7GNCa64NSnf8yc+eCId4po/iWeOp+gddKHC/Vaksbz3bJBi6EWpaPKIGixjYfQlfhcoXz0+XXyg==} + '@angular/common@21.1.0-next.2': + resolution: {integrity: sha512-9PiRwgkL60cHplUjeVe6/KHqi5xwxHm8QpKN2ghVCQ4MrGpnZ+CsAvXqE5r+lh85B3EVjexTXUiv8DFCczhKyg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.1 + '@angular/core': 21.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.1.0-next.1': - resolution: {integrity: sha512-FATOxDvH5bkTcVkPIdahA3xHbhZvPy70gXcBRedSlMwNq2ubRfxB4hLTGS0BmrAKcVUeZPabCWABymOWqTKtUQ==} + '@angular/compiler-cli@21.1.0-next.2': + resolution: {integrity: sha512-LXRMjzaebjJkOdCrV7bnoLqu+bHeiqdENQIV5S4E+1Lur0lH3AOaKa2OZsf+PoXJm6wgJJmTtk/PI4gSbP0i/w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.1 + '@angular/compiler': 21.1.0-next.2 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.1.0-next.1': - resolution: {integrity: sha512-sKA7XwvXj5pgzDab49u6p2srtiOWRE3dvJeHl0iOgttKIYSF+ot2e6ulzha7CtP5qQ78cpUWb9Ih0O5KJhKjMQ==} + '@angular/compiler@21.1.0-next.2': + resolution: {integrity: sha512-uAO89RVh0Jpx5bmIoYerh8cCYLZPhDgZVPKYxi6D6/f5aBxIwGywJyFQdyi6CP4NLe98motnOnGbpHwWyGb9Ww==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.1.0-next.1': - resolution: {integrity: sha512-sgOEuLiSNkaID24w62u3qlD4TzCcUC1mIG8RT8nwbEK5XsjrbgaxZQYqTYJWJpwSTSynbi2qQTQzJNn0vfNJnw==} + '@angular/core@21.1.0-next.2': + resolution: {integrity: sha512-8BToH02UlLjhJBDkchUkMsGNOXOQcZXfv++B8Ej+Biv+Oe38F6Nn7vO4etIof301YKP4ZCJpJsaLumhBXgf/rg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.1.0-next.1 + '@angular/compiler': 21.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -1020,75 +1021,75 @@ packages: zone.js: optional: true - '@angular/forms@21.1.0-next.1': - resolution: {integrity: sha512-zx/oms9ul3EIJczIDZwnHZRpQy0Ysq7NHCCSa/07zBPfjbc8brU6cfoCWnqYMRkavuocG0q3VWmlJuLghD0oYg==} + '@angular/forms@21.1.0-next.2': + resolution: {integrity: sha512-acAgPnuMpAYuTEw6/DdjD16LBX7VV2zX6jH/PnEcUblXWj97DmKuQVy1+twTMo3+adS3mdBCaNO+VNC1gAfTiA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.1 - '@angular/core': 21.1.0-next.1 - '@angular/platform-browser': 21.1.0-next.1 + '@angular/common': 21.1.0-next.2 + '@angular/core': 21.1.0-next.2 + '@angular/platform-browser': 21.1.0-next.2 '@standard-schema/spec': ^1.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.1.0-next.1': - resolution: {integrity: sha512-v7tnLvujrP490kZUHUGtUbd9ByDQLFK93OUPhFtoj5WKlrGlfSwESU029D8tnoE2IyzIBxKnNRbGMm734fY9bA==} + '@angular/localize@21.1.0-next.2': + resolution: {integrity: sha512-+bLxDhJxYyICGoLPxFDW8jB7FViOOTki+kAqB7TG2wfFK+o2sEPmHLAbWlER8E5yyT5xZrkbvYgUFn0TG+pEwA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.1 - '@angular/compiler-cli': 21.1.0-next.1 + '@angular/compiler': 21.1.0-next.2 + '@angular/compiler-cli': 21.1.0-next.2 - '@angular/material@21.1.0-next.1': - resolution: {integrity: sha512-wsu8s0RqIvamIJabDA2ikVGdbyQE4LQ1omNPjswjo+87WVFN51dOWO8K3KjbcEeKu8DMs2ksqSuESOggLZty7Q==} + '@angular/material@21.1.0-next.2': + resolution: {integrity: sha512-3Ays0ZqR5BNErNi5+5gTWzUhejyI3emZ/Dvhjh41ajwdYbtAi7rN4fYUVUR+CZSF5c4u56lESLzZhHcdke/XzQ==} peerDependencies: - '@angular/cdk': 21.1.0-next.1 + '@angular/cdk': 21.1.0-next.2 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/9eb95b33207c15948038e76862ed856c1ef44eb6': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/9eb95b33207c15948038e76862ed856c1ef44eb6} - version: 0.0.0-4ec84059f295affa82fe766682981b8b838a057b + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec} + version: 0.0.0-2562f2bd84bf2b992d4742d2f36895fd904d696a hasBin: true - '@angular/platform-browser@21.1.0-next.1': - resolution: {integrity: sha512-dZF5PemHmXaw78PRFFRaVrW3SHvtK3lVe1NuQEqp+Qiv5vn/YOfCBGL/U7NcXprB24kXPpaoBp0NsO2KXDA4hw==} + '@angular/platform-browser@21.1.0-next.2': + resolution: {integrity: sha512-YjQwEwQBnJ3l7DX16q2zbV8r97PaPjsd5vF2tlYNqQyd9r4FY7GMCCU2A/pWNPLvHHJZ4LRCLoeobsUjy3d13A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.1.0-next.1 - '@angular/common': 21.1.0-next.1 - '@angular/core': 21.1.0-next.1 + '@angular/animations': 21.1.0-next.2 + '@angular/common': 21.1.0-next.2 + '@angular/core': 21.1.0-next.2 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.1.0-next.1': - resolution: {integrity: sha512-nlnKp10oLNqg18zqf79ymY4LLarhmBF7+ldO9c1Xqe4iNu7BsF536H93hy0MAnEtVN5zGX6whySTVNRavbyIvw==} + '@angular/platform-server@21.1.0-next.2': + resolution: {integrity: sha512-7h58lL1TzH71cm0Pefp3j044WLAIlXOkjPDVc+19lGTYyfkZkyfRlkm+frGm+qGEJEBFrLTZv5HEMu3P13jDVw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.1 - '@angular/compiler': 21.1.0-next.1 - '@angular/core': 21.1.0-next.1 - '@angular/platform-browser': 21.1.0-next.1 + '@angular/common': 21.1.0-next.2 + '@angular/compiler': 21.1.0-next.2 + '@angular/core': 21.1.0-next.2 + '@angular/platform-browser': 21.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.1.0-next.1': - resolution: {integrity: sha512-gVzyePS5GeDpgBWyAiikE9iQYS+2HrrS4xkz8DuOG5DNF0d/lkz/f4jpKc/4KfV3Y0mqst2KOFr/xRC60PYmfw==} + '@angular/router@21.1.0-next.2': + resolution: {integrity: sha512-ZPIt2Bopusit2iax99fYjspA/3lBKAl6NRTg6MDnOkUhq5jpck0SRkzswQ5OxSCLLbu9I0BPzc6+yp5lyauHEQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.1 - '@angular/core': 21.1.0-next.1 - '@angular/platform-browser': 21.1.0-next.1 + '@angular/common': 21.1.0-next.2 + '@angular/core': 21.1.0-next.2 + '@angular/platform-browser': 21.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.1.0-next.1': - resolution: {integrity: sha512-zwut8bSDbKIxkq4Tcb7OJEonuqt6aG8EVF3YxHsmjo995qcdKZan/xnWD+aXVRylHAOq8DNXrUIkxuN7GGCJTg==} + '@angular/service-worker@21.1.0-next.2': + resolution: {integrity: sha512-kst4ogtrZzt9M87vK/vOFI1UxCTXEFFwDTN7J78ahcSc0yKTZO3nCFyy/zTulAqWUiTItN82bF6MQEYt95mo2g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.1.0-next.1 + '@angular/core': 21.1.0-next.2 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.1.0': @@ -2296,11 +2297,11 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.31.0': - resolution: {integrity: sha512-rK0RKXxNkbK35eDl+G651SxtxwHNEOogjyeZJUJe+Ed4yxu3xy5ufCiU0+QLT7xo4M9Spey8OAYfD8LPRlYBKw==} + '@google/genai@1.32.0': + resolution: {integrity: sha512-46vaEaHAThIBlqWFTti1fo3xYU6DwCOwnIIotLhYUbNha90wk5cZL79zdf+NoAfKVsx4DPmjCtXvbQNNVPl5ZQ==} engines: {node: '>=20.0.0'} peerDependencies: - '@modelcontextprotocol/sdk': ^1.20.1 + '@modelcontextprotocol/sdk': ^1.24.0 peerDependenciesMeta: '@modelcontextprotocol/sdk': optional: true @@ -3159,16 +3160,16 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.6': - resolution: {integrity: sha512-MQ0l7p0xTNsobggVsT3zXed677WvlDQ25wt0rTQv54Z6fLS/B89pwemUMNhWIKR4q+5WHJjkSlVN2t+W4um+7Q==} + '@pnpm/dependency-path@1001.1.7': + resolution: {integrity: sha512-7XPsLscJuNYJr+1RVVGi7ul4GRoNV9Uq6PR04VkFteFgc+LmvBoyq1lQq1dDw+MUwjG2KHhsVtQVooRVpd0niQ==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} - '@pnpm/types@1001.0.1': - resolution: {integrity: sha512-v5X09E6LkJFOOw9FgGITpAs7nQJtx6u3N0SNtyIC5mSeIC5SebMrrelpCz6QUTJvyXBEa1AWj2dZhYfLj59xhA==} + '@pnpm/types@1001.1.0': + resolution: {integrity: sha512-HaGoB+TIJ3aWLM1lLUKQmh1K4bjz16VJ9+mJcp3nf1RQm/lZFhkyjGW2D44Zf3M8c1tlyTsczIDQR4K2OSvaaQ==} engines: {node: '>=18.12'} '@protobufjs/aspromise@1.1.2': @@ -3730,8 +3731,8 @@ packages: '@types/node@22.19.1': resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} - '@types/node@24.10.1': - resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/node@24.10.2': + resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -9496,28 +9497,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/cdk@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3)': + '@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.1.0-next.1 + '@angular/compiler': 21.1.0-next.2 '@babel/core': 7.28.5 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 @@ -9531,31 +9533,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.1.0-next.1': + '@angular/compiler@21.1.0-next.2': dependencies: tslib: 2.8.1 - '@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.1.0-next.1 + '@angular/compiler': 21.1.0-next.2 zone.js: 0.16.0 - '@angular/forms@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.1.0-next.1(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(@angular/compiler@21.1.0-next.1)': + '@angular/localize@21.1.0-next.2(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(@angular/compiler@21.1.0-next.2)': dependencies: - '@angular/compiler': 21.1.0-next.1 - '@angular/compiler-cli': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) + '@angular/compiler': 21.1.0-next.2 + '@angular/compiler-cli': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9563,23 +9565,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.1.0-next.1(ccb492dd96d90eab040ed852f8404aa4)': + '@angular/material@21.1.0-next.2(87a11e855d816a433d9af16d2a3d86fc)': dependencies: - '@angular/cdk': 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.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/9eb95b33207c15948038e76862ed856c1ef44eb6(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.31.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 8.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@google/genai': 1.32.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 8.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -9590,14 +9592,14 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 - '@pnpm/dependency-path': 1001.1.6 + '@pnpm/dependency-path': 1001.1.7 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 '@types/jasmine': 5.1.13 - '@types/node': 24.10.1 + '@types/node': 24.10.2 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.35 @@ -9633,35 +9635,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.1)(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.2)(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.1.0-next.1 - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.1.0-next.2 + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.1.0-next.1(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.1(@angular/animations@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.1.0-next.1(@angular/core@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -11029,7 +11031,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.31.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.32.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -11081,245 +11083,245 @@ snapshots: '@inquirer/ansi@2.0.2': {} - '@inquirer/checkbox@4.3.2(@types/node@24.10.1)': + '@inquirer/checkbox@4.3.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/checkbox@5.0.2(@types/node@24.10.1)': + '@inquirer/checkbox@5.0.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/confirm@5.1.21(@types/node@24.10.1)': + '@inquirer/confirm@5.1.21(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/confirm@6.0.2(@types/node@24.10.1)': + '@inquirer/confirm@6.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/core@10.3.2(@types/node@24.10.1)': + '@inquirer/core@10.3.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/core@11.0.2(@types/node@24.10.1)': + '@inquirer/core@11.0.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.2) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 wrap-ansi: 9.0.2 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/editor@4.2.23(@types/node@24.10.1)': + '@inquirer/editor@4.2.23(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/editor@5.0.2(@types/node@24.10.1)': + '@inquirer/editor@5.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/external-editor': 2.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/external-editor': 2.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/expand@4.0.23(@types/node@24.10.1)': + '@inquirer/expand@4.0.23(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/expand@5.0.2(@types/node@24.10.1)': + '@inquirer/expand@5.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/external-editor@1.0.3(@types/node@24.10.1)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.2)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/external-editor@2.0.2(@types/node@24.10.1)': + '@inquirer/external-editor@2.0.2(@types/node@24.10.2)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 '@inquirer/figures@1.0.15': {} '@inquirer/figures@2.0.2': {} - '@inquirer/input@4.3.1(@types/node@24.10.1)': + '@inquirer/input@4.3.1(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/input@5.0.2(@types/node@24.10.1)': + '@inquirer/input@5.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/number@3.0.23(@types/node@24.10.1)': + '@inquirer/number@3.0.23(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/number@4.0.2(@types/node@24.10.1)': + '@inquirer/number@4.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/password@4.0.23(@types/node@24.10.1)': + '@inquirer/password@4.0.23(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/password@5.0.2(@types/node@24.10.1)': + '@inquirer/password@5.0.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 - - '@inquirer/prompts@7.10.1(@types/node@24.10.1)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.1) - '@inquirer/confirm': 5.1.21(@types/node@24.10.1) - '@inquirer/editor': 4.2.23(@types/node@24.10.1) - '@inquirer/expand': 4.0.23(@types/node@24.10.1) - '@inquirer/input': 4.3.1(@types/node@24.10.1) - '@inquirer/number': 3.0.23(@types/node@24.10.1) - '@inquirer/password': 4.0.23(@types/node@24.10.1) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.1) - '@inquirer/search': 3.2.2(@types/node@24.10.1) - '@inquirer/select': 4.4.2(@types/node@24.10.1) + '@types/node': 24.10.2 + + '@inquirer/prompts@7.10.1(@types/node@24.10.2)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.2) + '@inquirer/confirm': 5.1.21(@types/node@24.10.2) + '@inquirer/editor': 4.2.23(@types/node@24.10.2) + '@inquirer/expand': 4.0.23(@types/node@24.10.2) + '@inquirer/input': 4.3.1(@types/node@24.10.2) + '@inquirer/number': 3.0.23(@types/node@24.10.2) + '@inquirer/password': 4.0.23(@types/node@24.10.2) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.2) + '@inquirer/search': 3.2.2(@types/node@24.10.2) + '@inquirer/select': 4.4.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 - - '@inquirer/prompts@8.0.2(@types/node@24.10.1)': - dependencies: - '@inquirer/checkbox': 5.0.2(@types/node@24.10.1) - '@inquirer/confirm': 6.0.2(@types/node@24.10.1) - '@inquirer/editor': 5.0.2(@types/node@24.10.1) - '@inquirer/expand': 5.0.2(@types/node@24.10.1) - '@inquirer/input': 5.0.2(@types/node@24.10.1) - '@inquirer/number': 4.0.2(@types/node@24.10.1) - '@inquirer/password': 5.0.2(@types/node@24.10.1) - '@inquirer/rawlist': 5.0.2(@types/node@24.10.1) - '@inquirer/search': 4.0.2(@types/node@24.10.1) - '@inquirer/select': 5.0.2(@types/node@24.10.1) + '@types/node': 24.10.2 + + '@inquirer/prompts@8.0.2(@types/node@24.10.2)': + dependencies: + '@inquirer/checkbox': 5.0.2(@types/node@24.10.2) + '@inquirer/confirm': 6.0.2(@types/node@24.10.2) + '@inquirer/editor': 5.0.2(@types/node@24.10.2) + '@inquirer/expand': 5.0.2(@types/node@24.10.2) + '@inquirer/input': 5.0.2(@types/node@24.10.2) + '@inquirer/number': 4.0.2(@types/node@24.10.2) + '@inquirer/password': 5.0.2(@types/node@24.10.2) + '@inquirer/rawlist': 5.0.2(@types/node@24.10.2) + '@inquirer/search': 4.0.2(@types/node@24.10.2) + '@inquirer/select': 5.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/rawlist@4.1.11(@types/node@24.10.1)': + '@inquirer/rawlist@4.1.11(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/rawlist@5.0.2(@types/node@24.10.1)': + '@inquirer/rawlist@5.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/search@3.2.2(@types/node@24.10.1)': + '@inquirer/search@3.2.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/search@4.0.2(@types/node@24.10.1)': + '@inquirer/search@4.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/select@4.4.2(@types/node@24.10.1)': + '@inquirer/select@4.4.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/core': 10.3.2(@types/node@24.10.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/select@5.0.2(@types/node@24.10.1)': + '@inquirer/select@5.0.2(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.0.2(@types/node@24.10.1) + '@inquirer/core': 11.0.2(@types/node@24.10.2) '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.1) + '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/type@3.0.10(@types/node@24.10.1)': + '@inquirer/type@3.0.10(@types/node@24.10.2)': optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 - '@inquirer/type@4.0.2(@types/node@24.10.1)': + '@inquirer/type@4.0.2(@types/node@24.10.2)': optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 '@isaacs/balanced-match@4.0.1': {} @@ -11411,10 +11413,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.1))(@types/node@24.10.1)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.2))(@types/node@24.10.2)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@24.10.1) - '@inquirer/type': 3.0.10(@types/node@24.10.1) + '@inquirer/prompts': 7.10.1(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.2) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11844,17 +11846,17 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.6': + '@pnpm/dependency-path@1001.1.7': dependencies: '@pnpm/crypto.hash': 1000.2.1 - '@pnpm/types': 1001.0.1 + '@pnpm/types': 1001.1.0 semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 - '@pnpm/types@1001.0.1': {} + '@pnpm/types@1001.1.0': {} '@protobufjs/aspromise@1.1.2': {} @@ -12378,7 +12380,7 @@ snapshots: dependencies: undici-types: 7.16.0 - '@types/node@24.10.1': + '@types/node@24.10.2': dependencies: undici-types: 7.16.0 @@ -12754,11 +12756,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -12771,7 +12773,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12784,13 +12786,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -16604,10 +16606,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.1.0-next.1(@angular/compiler@21.1.0-next.1)(typescript@5.9.3) + '@angular/compiler-cli': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.53.3) '@rollup/wasm-node': 4.53.3 ajv: 8.17.1 @@ -18730,7 +18732,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18739,7 +18741,7 @@ snapshots: rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18748,7 +18750,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vite@7.2.7(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18757,7 +18759,7 @@ snapshots: rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18766,10 +18768,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -18786,11 +18788,11 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 - '@types/node': 24.10.1 + '@types/node': 24.10.2 jsdom: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/legacy-cli/e2e/ng-snapshot/package.json index 6605698211c3..98d3bdca9030 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#114cbaa14ec144a1ef79997821610c3116dd7d10", - "@angular/cdk": "github:angular/cdk-builds#6b32d96851ee03dcb819f2ef7e4e444b2b7d148b", - "@angular/common": "github:angular/common-builds#eee6b9832f404d602e3c916fc1a911dda1bed315", - "@angular/compiler": "github:angular/compiler-builds#a580959173a4ee9436344247423189ea4fb4b1bd", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#310a0d19272ab712f2456d992ee3438986c3625d", - "@angular/core": "github:angular/core-builds#b72daba9c50c4685ff625ed986aeff4d19274f82", - "@angular/forms": "github:angular/forms-builds#eda3dc9cafcca1f5448a227f92b391a9510230c4", - "@angular/language-service": "github:angular/language-service-builds#2ff28b9209fe628b90eb202dd8f50b2fe07b1c7d", - "@angular/localize": "github:angular/localize-builds#c7dad3439ffd40a0392f6668923e06be3511443f", - "@angular/material": "github:angular/material-builds#299b1996c8c162745f116b71b58509ae79c83a67", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#30528264048f6282aec171023484a46015500062", - "@angular/platform-browser": "github:angular/platform-browser-builds#8479cd74367f43e352387de864ab61890d259b0d", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a5c31785e26faac20720794b2ed52ed3e0b5f169", - "@angular/platform-server": "github:angular/platform-server-builds#a021e6a13ea152b86e24ea47d032d9f9ea0cc14b", - "@angular/router": "github:angular/router-builds#a1f0b9811db3ac96146b8d95d2b6735981e3cc44", - "@angular/service-worker": "github:angular/service-worker-builds#9be6f521a82ef4d0fcae89d8c391669ccb4aa749" + "@angular/animations": "github:angular/animations-builds#7e7e3320f37ae5d28a84384446e72da0c455da0d", + "@angular/cdk": "github:angular/cdk-builds#c48b0ff8f2852c2bedadd8da14dabddeced0177f", + "@angular/common": "github:angular/common-builds#308794449bf21de5d869876f340fe8dbdf483ff7", + "@angular/compiler": "github:angular/compiler-builds#bb8f2c047302a274304f24488ae059b549bb3e26", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#e8a81a6fa6ce24e497c7ddb28df3480fe7ada7ee", + "@angular/core": "github:angular/core-builds#7e76b3d11f149611c72a09a2eb151fbae3239729", + "@angular/forms": "github:angular/forms-builds#795092de2b304d895abb5a5db0c473138b7b1f63", + "@angular/language-service": "github:angular/language-service-builds#5f1827224d51814ee60d4de80e22eb9a569ca40d", + "@angular/localize": "github:angular/localize-builds#97fb7851928efb4f1b87c12a7990005dd4a5764b", + "@angular/material": "github:angular/material-builds#41e8468f597e5202f86bc6ffb939ca98de95c70a", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9bb39db28e49a8a3a62de55616122084834c61b6", + "@angular/platform-browser": "github:angular/platform-browser-builds#2fcfc53406862767b4aa8535ef895976abd4f7ba", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a9e9b52c3f52e4929393fbfc357c60351eee0135", + "@angular/platform-server": "github:angular/platform-server-builds#8b292924c8b580e51359d417b05cf6855d21092f", + "@angular/router": "github:angular/router-builds#ab9cf134d9727c6aa1002625e871748be5a76385", + "@angular/service-worker": "github:angular/service-worker-builds#142b75954eb86a4064b93c59d74d3b6fb06c97ba" } } From a15db28b29f6f43bef1ed1ca7c6a963d9943f801 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:30:31 -0500 Subject: [PATCH 1970/2162] perf(@angular/cli): cache resolved specific version in package manager abstraction When fetching a package manifest for a tag or range, also cache the result using the resolved specific version. This avoids redundant lookups if the specific version is requested subsequently. Also removes an unused import. --- .../cli/src/package-managers/package-manager.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 7a012a3e544c..b76831be109c 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -15,7 +15,7 @@ import { join } from 'node:path'; import npa from 'npm-package-arg'; import { maxSatisfying } from 'semver'; -import { ErrorInfo, PackageManagerError } from './error'; +import { PackageManagerError } from './error'; import { Host } from './host'; import { Logger } from './logger'; import { PackageManagerDescriptor } from './package-manager-descriptor'; @@ -407,11 +407,22 @@ export class PackageManager { const cacheKey = options.registry ? `${specifier}|${options.registry}` : specifier; - return this.#fetchAndParse( + const manifest = await this.#fetchAndParse( commandArgs, (stdout, logger) => this.descriptor.outputParsers.getRegistryManifest(stdout, logger), { ...options, cache: this.#manifestCache, cacheKey }, ); + + // If the provided version was not a specific version, also cache the specific fetched version + if (manifest && manifest.version !== version) { + const manifestSpecifier = `${manifest.name}@${manifest.version}`; + const manifestCacheKey = options.registry + ? `${manifestSpecifier}|${options.registry}` + : manifestSpecifier; + this.#manifestCache.set(manifestCacheKey, manifest); + } + + return manifest; } /** From efd1180d7bf80471f729e6122b180a895faa13b0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:54:51 -0500 Subject: [PATCH 1971/2162] refactor(@angular/cli): remove unused update requirements metadata field The internal `update` schematic was attempting to parse a `requirements` field on the `ng-update` package.json metadata. This field is otherwise unused and can be safely removed. --- .../cli/src/commands/update/schematic/index.ts | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/packages/angular/cli/src/commands/update/schematic/index.ts b/packages/angular/cli/src/commands/update/schematic/index.ts index 26d2d06836b4..86bfe92deca1 100644 --- a/packages/angular/cli/src/commands/update/schematic/index.ts +++ b/packages/angular/cli/src/commands/update/schematic/index.ts @@ -389,20 +389,6 @@ function _getUpdateMetadata( result.packageGroupName = metadata['packageGroupName']; } - if (metadata['requirements']) { - const requirements = metadata['requirements']; - // Verify that requirements are - if ( - typeof requirements != 'object' || - Array.isArray(requirements) || - Object.keys(requirements).some((name) => typeof requirements[name] != 'string') - ) { - logger.warn(`requirements metadata of package ${packageJson.name} is malformed. Ignoring.`); - } else { - result.requirements = requirements; - } - } - if (metadata['migrations']) { const migrations = metadata['migrations']; if (typeof migrations != 'string') { From 095c1f4195cabfac9f5ac0cd6ee739a58f26957c Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Fri, 12 Dec 2025 17:17:08 +0100 Subject: [PATCH 1972/2162] build: disable assistant_to_the_branch_manager on forks It currently fails as it is triggered on push, but requires an angular-robot-key that forks don't have. --- .github/workflows/assistant-to-the-branch-manager.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index cc0aae0a00f7..07b6372a8348 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -12,6 +12,7 @@ permissions: jobs: assistant_to_the_branch_manager: runs-on: ubuntu-latest + if: github.event.repository.fork == false steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: From 7c7e6a6142a9d294e04c612463449d2a4360e692 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:36:56 -0500 Subject: [PATCH 1973/2162] fix(@angular/build): conditionally manage Vitest UI option This change improves the handling of the Vitest UI option in the unit test builder. The `ui` option is now automatically disabled when running in a CI environment to prevent issues with automated pipelines. Additionally, the `ui` property is only included in the Vitest configuration if it's explicitly a boolean, making the option handling more robust. Removing the default value for `ui` from the schema allows the option to be overridden by custom runner configuration files when not explicitly defined in `angular.json` or via the command line. --- packages/angular/build/src/builders/unit-test/options.ts | 2 +- .../build/src/builders/unit-test/runners/vitest/executor.ts | 2 +- packages/angular/build/src/builders/unit-test/schema.json | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/options.ts b/packages/angular/build/src/builders/unit-test/options.ts index 8fa5b14eda59..7f8f8db182fe 100644 --- a/packages/angular/build/src/builders/unit-test/options.ts +++ b/packages/angular/build/src/builders/unit-test/options.ts @@ -119,7 +119,7 @@ export async function normalizeOptions( browserViewport: width && height ? { width, height } : undefined, watch, debug: options.debug ?? false, - ui: options.ui ?? false, + ui: process.env['CI'] ? false : ui, providersFile: options.providersFile && path.join(workspaceRoot, options.providersFile), setupFiles: options.setupFiles ? options.setupFiles.map((setupFile) => path.join(workspaceRoot, setupFile)) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index bac8e389c4c5..244e5f6719b6 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -220,7 +220,7 @@ export class VitestExecutor implements TestExecutor { cache: cacheOptions.enabled ? undefined : false, testNamePattern: this.options.filter, watch, - ui, + ...(typeof ui === 'boolean' ? { ui } : {}), ...debugOptions, }, { diff --git a/packages/angular/build/src/builders/unit-test/schema.json b/packages/angular/build/src/builders/unit-test/schema.json index 3b92d31a4cde..2a3cf27719e8 100644 --- a/packages/angular/build/src/builders/unit-test/schema.json +++ b/packages/angular/build/src/builders/unit-test/schema.json @@ -67,8 +67,7 @@ }, "ui": { "type": "boolean", - "description": "Enables the Vitest UI for interactive test execution. This option is only available for the Vitest runner.", - "default": false + "description": "Enables the Vitest UI for interactive test execution. This option is only available for the Vitest runner." }, "coverage": { "type": "boolean", From fab1a9b5144f948b6630dd0ec8f9f9b5f7c20cf2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:17:43 -0500 Subject: [PATCH 1974/2162] refactor(@angular/ssr): update type usage to support isolated declarations This commit addresses various TypeScript compilation errors that arise when the 'isolatedDeclarations' option is enabled. --- packages/angular/ssr/src/app-engine.ts | 2 +- packages/angular/ssr/src/routes/route-tree.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/angular/ssr/src/app-engine.ts b/packages/angular/ssr/src/app-engine.ts index dd204a4b595f..0cb728e8535d 100644 --- a/packages/angular/ssr/src/app-engine.ts +++ b/packages/angular/ssr/src/app-engine.ts @@ -38,7 +38,7 @@ export class AngularAppEngine { * * @private */ - static ɵhooks = /* #__PURE__*/ new Hooks(); + static ɵhooks: Hooks = /* #__PURE__*/ new Hooks(); /** * The manifest for the server application. diff --git a/packages/angular/ssr/src/routes/route-tree.ts b/packages/angular/ssr/src/routes/route-tree.ts index 64d9a0fdfef2..68287de7f521 100644 --- a/packages/angular/ssr/src/routes/route-tree.ts +++ b/packages/angular/ssr/src/routes/route-tree.ts @@ -188,7 +188,9 @@ export class RouteTree = {}> * * @param node - The current node to start the traversal from. Defaults to the root node of the tree. */ - *traverse(node = this.root): Generator { + *traverse( + node: RouteTreeNode = this.root, + ): Generator { if (node.metadata) { yield node.metadata; } From e4eee62ccb7898d5726fe4b37b90b7602de9dca0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:39:39 -0500 Subject: [PATCH 1975/2162] refactor(@schematics/angular): update type usage to support isolated declarations This commit addresses various TypeScript compilation errors that arise when the 'isolatedDeclarations' option is enabled. --- .../schematics/angular/app-shell/index.ts | 45 +++-- .../schematics/angular/component/index.ts | 109 ++++++----- packages/schematics/angular/config/index.ts | 29 +-- .../schematics/angular/directive/index.ts | 64 +++--- packages/schematics/angular/module/index.ts | 115 +++++------ packages/schematics/angular/pipe/index.ts | 36 ++-- .../jasmine-vitest/utils/todo-notes.ts | 10 +- packages/schematics/angular/server/index.ts | 183 +++++++++--------- .../angular/service-worker/index.ts | 5 +- packages/schematics/angular/service/index.ts | 38 ++-- packages/schematics/angular/ssr/index.ts | 53 ++--- packages/schematics/angular/tailwind/index.ts | 31 +-- packages/schematics/angular/utility/change.ts | 6 +- .../angular/utility/dependencies.ts | 6 +- .../angular/utility/standalone/code_block.ts | 5 +- .../angular/utility/standalone/util.ts | 2 +- .../schematics/angular/utility/validation.ts | 2 +- .../schematics/angular/utility/workspace.ts | 2 +- .../schematics/angular/web-worker/index.ts | 97 +++++----- 19 files changed, 452 insertions(+), 386 deletions(-) diff --git a/packages/schematics/angular/app-shell/index.ts b/packages/schematics/angular/app-shell/index.ts index 13905359d16c..2bae5e4bef14 100644 --- a/packages/schematics/angular/app-shell/index.ts +++ b/packages/schematics/angular/app-shell/index.ts @@ -6,7 +6,14 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Rule, SchematicsException, Tree, chain, schematic } from '@angular-devkit/schematics'; +import { + Rule, + RuleFactory, + 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 { @@ -190,19 +197,23 @@ function addServerRoutingConfig(options: AppShellOptions, isStandalone: boolean) }; } -export default createProjectSchematic(async (options, { tree }) => { - const browserEntryPoint = await getMainFilePath(tree, options.project); - const isStandalone = isStandaloneApp(tree, browserEntryPoint); - - return chain([ - validateProject(browserEntryPoint), - schematic('server', options), - addServerRoutingConfig(options, isStandalone), - schematic('component', { - name: 'app-shell', - module: 'app.module.server.ts', - project: options.project, - standalone: isStandalone, - }), - ]); -}); +const appShellSchematic: RuleFactory = createProjectSchematic( + async (options, { tree }) => { + const browserEntryPoint = await getMainFilePath(tree, options.project); + const isStandalone = isStandaloneApp(tree, browserEntryPoint); + + return chain([ + validateProject(browserEntryPoint), + schematic('server', options), + addServerRoutingConfig(options, isStandalone), + schematic('component', { + name: 'app-shell', + module: 'app.module.server.ts', + project: options.project, + standalone: isStandalone, + }), + ]); + }, +); + +export default appShellSchematic; diff --git a/packages/schematics/angular/component/index.ts b/packages/schematics/angular/component/index.ts index c3c4fe1c3448..1a07f69d1a15 100644 --- a/packages/schematics/angular/component/index.ts +++ b/packages/schematics/angular/component/index.ts @@ -8,7 +8,7 @@ import { FileOperator, - Rule, + RuleFactory, apply, applyTemplates, chain, @@ -40,60 +40,65 @@ function buildSelector(options: ComponentOptions, projectPrefix: string) { return selector; } -export default createProjectSchematic((options, { project, tree }) => { - if (options.path === undefined) { - options.path = buildDefaultPath(project); - } +const componentSchematic: RuleFactory = createProjectSchematic( + (options, { project, tree }) => { + if (options.path === undefined) { + options.path = buildDefaultPath(project); + } + + options.module = findModuleFromOptions(tree, options); + // Schematic templates require a defined type value + options.type ??= ''; - options.module = findModuleFromOptions(tree, 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; + options.selector = + options.selector || buildSelector(options, (project && project.prefix) || ''); - const parsedPath = parseName(options.path, options.name); - options.name = parsedPath.name; - options.path = parsedPath.path; - options.selector = options.selector || buildSelector(options, (project && project.prefix) || ''); + validateHtmlSelector(options.selector); - validateHtmlSelector(options.selector); + const classifiedName = + strings.classify(options.name) + + (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); + validateClassName(classifiedName); + const zoneless = isZonelessApp(project); - const classifiedName = - strings.classify(options.name) + - (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); - validateClassName(classifiedName); - const zoneless = isZonelessApp(project); + const skipStyleFile = options.inlineStyle || options.style === Style.None; + const templateSource = apply(url('./files'), [ + options.skipTests ? filter((path) => !path.endsWith('.spec.ts.template')) : noop(), + skipStyleFile ? filter((path) => !path.endsWith('.__style__.template')) : noop(), + options.inlineTemplate ? filter((path) => !path.endsWith('.html.template')) : noop(), + applyTemplates({ + ...strings, + 'if-flat': (s: string) => (options.flat ? '' : s), + 'ngext': options.ngHtml ? '.ng' : '', + ...options, + // Add a new variable for the classified name, conditionally including the type + classifiedName, + zoneless, + }), + !options.type + ? forEach(((file) => { + return file.path.includes('..') + ? { + content: file.content, + path: file.path.replace('..', '.'), + } + : file; + }) as FileOperator) + : noop(), + move(parsedPath.path), + ]); - const skipStyleFile = options.inlineStyle || options.style === Style.None; - const templateSource = apply(url('./files'), [ - options.skipTests ? filter((path) => !path.endsWith('.spec.ts.template')) : noop(), - skipStyleFile ? filter((path) => !path.endsWith('.__style__.template')) : noop(), - options.inlineTemplate ? filter((path) => !path.endsWith('.html.template')) : noop(), - applyTemplates({ - ...strings, - 'if-flat': (s: string) => (options.flat ? '' : s), - 'ngext': options.ngHtml ? '.ng' : '', - ...options, - // Add a new variable for the classified name, conditionally including the type - classifiedName, - zoneless, - }), - !options.type - ? forEach(((file) => { - return file.path.includes('..') - ? { - content: file.content, - path: file.path.replace('..', '.'), - } - : file; - }) as FileOperator) - : noop(), - move(parsedPath.path), - ]); + return chain([ + addDeclarationToNgModule({ + type: 'component', + ...options, + }), + mergeWith(templateSource), + ]); + }, +); - return chain([ - addDeclarationToNgModule({ - type: 'component', - ...options, - }), - mergeWith(templateSource), - ]); -}); +export default componentSchematic; diff --git a/packages/schematics/angular/config/index.ts b/packages/schematics/angular/config/index.ts index c4bafc39657e..73818699a134 100644 --- a/packages/schematics/angular/config/index.ts +++ b/packages/schematics/angular/config/index.ts @@ -8,6 +8,7 @@ import { Rule, + RuleFactory, SchematicsException, apply, applyTemplates, @@ -24,18 +25,22 @@ import { updateWorkspace } from '../utility/workspace'; import { Builders as AngularBuilder } from '../utility/workspace-models'; import { Schema as ConfigOptions, Type as ConfigType } from './schema'; -export default createProjectSchematic((options, { project }) => { - switch (options.type) { - case ConfigType.Karma: - return addKarmaConfig(options); - case ConfigType.Browserslist: - return addBrowserslistConfig(project.root); - case ConfigType.Vitest: - return addVitestConfig(options); - default: - throw new SchematicsException(`"${options.type}" is an unknown configuration file type.`); - } -}); +const configSchematic: RuleFactory = createProjectSchematic( + (options, { project }) => { + switch (options.type) { + case ConfigType.Karma: + return addKarmaConfig(options); + case ConfigType.Browserslist: + return addBrowserslistConfig(project.root); + case ConfigType.Vitest: + return addVitestConfig(options); + default: + throw new SchematicsException(`"${options.type}" is an unknown configuration file type.`); + } + }, +); + +export default configSchematic; function addVitestConfig(options: ConfigOptions): Rule { return (tree, context) => diff --git a/packages/schematics/angular/directive/index.ts b/packages/schematics/angular/directive/index.ts index bfe87129bb79..72aa73b6a219 100644 --- a/packages/schematics/angular/directive/index.ts +++ b/packages/schematics/angular/directive/index.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Rule, chain, strings } from '@angular-devkit/schematics'; +import { RuleFactory, 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'; @@ -27,32 +27,36 @@ function buildSelector(options: DirectiveOptions, projectPrefix: string) { return strings.camelize(selector); } -export default createProjectSchematic((options, { project, tree }) => { - if (options.path === undefined) { - options.path = buildDefaultPath(project); - } - - options.module = findModuleFromOptions(tree, options); - const parsedPath = parseName(options.path, options.name); - options.name = parsedPath.name; - options.path = parsedPath.path; - options.selector = options.selector || buildSelector(options, project.prefix || ''); - - validateHtmlSelector(options.selector); - const classifiedName = - strings.classify(options.name) + - (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); - validateClassName(classifiedName); - - return chain([ - addDeclarationToNgModule({ - type: 'directive', - - ...options, - }), - generateFromFiles({ - ...options, - classifiedName, - }), - ]); -}); +const directiveSchematic: RuleFactory = createProjectSchematic( + (options, { project, tree }) => { + if (options.path === undefined) { + options.path = buildDefaultPath(project); + } + + options.module = findModuleFromOptions(tree, options); + const parsedPath = parseName(options.path, options.name); + options.name = parsedPath.name; + options.path = parsedPath.path; + options.selector = options.selector || buildSelector(options, project.prefix || ''); + + validateHtmlSelector(options.selector); + const classifiedName = + strings.classify(options.name) + + (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); + validateClassName(classifiedName); + + return chain([ + addDeclarationToNgModule({ + type: 'directive', + + ...options, + }), + generateFromFiles({ + ...options, + classifiedName, + }), + ]); + }, +); + +export default directiveSchematic; diff --git a/packages/schematics/angular/module/index.ts b/packages/schematics/angular/module/index.ts index 6a40ddf89eb2..6811ab55f3f1 100644 --- a/packages/schematics/angular/module/index.ts +++ b/packages/schematics/angular/module/index.ts @@ -8,6 +8,7 @@ import { Rule, + RuleFactory, Tree, apply, applyTemplates, @@ -134,59 +135,63 @@ function buildRoute(options: ModuleOptions, modulePath: string) { return `{ path: '${options.route}', loadChildren: ${loadChildren} }`; } -export default createProjectSchematic(async (options, { tree }) => { - if (options.path === undefined) { - options.path = await createDefaultPath(tree, options.project); - } - - if (options.module) { - options.module = findModuleFromOptions(tree, options); - } - - let routingModulePath; - const isLazyLoadedModuleGen = !!(options.route && options.module); - if (isLazyLoadedModuleGen) { - options.routingScope = RoutingScope.Child; - routingModulePath = getRoutingModulePath(tree, options.module as string); - } - - const parsedPath = parseName(options.path, options.name); - options.name = parsedPath.name; - options.path = parsedPath.path; - validateClassName(strings.classify(options.name)); - - const templateSource = apply(url('./files'), [ - options.routing || (isLazyLoadedModuleGen && routingModulePath) - ? noop() - : filter((path) => !path.includes('-routing')), - applyTemplates({ - ...strings, - 'if-flat': (s: string) => (options.flat ? '' : s), - lazyRoute: isLazyLoadedModuleGen, - lazyRouteWithoutRouteModule: isLazyLoadedModuleGen && !routingModulePath, - lazyRouteWithRouteModule: isLazyLoadedModuleGen && !!routingModulePath, - ...options, - }), - move(parsedPath.path), - ]); - const moduleDasherized = strings.dasherize(options.name); - const modulePath = `${ - !options.flat ? moduleDasherized + '/' : '' - }${moduleDasherized}${options.typeSeparator}module.ts`; - - const componentOptions: ComponentOptions = { - module: modulePath, - flat: options.flat, - name: options.name, - path: options.path, - project: options.project, - standalone: false, - }; +const moduleSchematic: RuleFactory = createProjectSchematic( + async (options, { tree }) => { + if (options.path === undefined) { + options.path = await createDefaultPath(tree, options.project); + } + + if (options.module) { + options.module = findModuleFromOptions(tree, options); + } + + let routingModulePath; + const isLazyLoadedModuleGen = !!(options.route && options.module); + if (isLazyLoadedModuleGen) { + options.routingScope = RoutingScope.Child; + routingModulePath = getRoutingModulePath(tree, options.module as string); + } - return chain([ - !isLazyLoadedModuleGen ? addImportToNgModule(options) : noop(), - addRouteDeclarationToNgModule(options, routingModulePath), - mergeWith(templateSource), - isLazyLoadedModuleGen ? schematic('component', componentOptions) : noop(), - ]); -}); + const parsedPath = parseName(options.path, options.name); + options.name = parsedPath.name; + options.path = parsedPath.path; + validateClassName(strings.classify(options.name)); + + const templateSource = apply(url('./files'), [ + options.routing || (isLazyLoadedModuleGen && routingModulePath) + ? noop() + : filter((path) => !path.includes('-routing')), + applyTemplates({ + ...strings, + 'if-flat': (s: string) => (options.flat ? '' : s), + lazyRoute: isLazyLoadedModuleGen, + lazyRouteWithoutRouteModule: isLazyLoadedModuleGen && !routingModulePath, + lazyRouteWithRouteModule: isLazyLoadedModuleGen && !!routingModulePath, + ...options, + }), + move(parsedPath.path), + ]); + const moduleDasherized = strings.dasherize(options.name); + const modulePath = `${ + !options.flat ? moduleDasherized + '/' : '' + }${moduleDasherized}${options.typeSeparator}module.ts`; + + const componentOptions: ComponentOptions = { + module: modulePath, + flat: options.flat, + name: options.name, + path: options.path, + project: options.project, + standalone: false, + }; + + return chain([ + !isLazyLoadedModuleGen ? addImportToNgModule(options) : noop(), + addRouteDeclarationToNgModule(options, routingModulePath), + mergeWith(templateSource), + isLazyLoadedModuleGen ? schematic('component', componentOptions) : noop(), + ]); + }, +); + +export default moduleSchematic; diff --git a/packages/schematics/angular/pipe/index.ts b/packages/schematics/angular/pipe/index.ts index 8333d0c4b1ee..c74307b1c6df 100644 --- a/packages/schematics/angular/pipe/index.ts +++ b/packages/schematics/angular/pipe/index.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { chain, strings } from '@angular-devkit/schematics'; +import { RuleFactory, 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'; @@ -16,19 +16,23 @@ import { validateClassName } from '../utility/validation'; import { createDefaultPath } from '../utility/workspace'; import { Schema as PipeOptions } from './schema'; -export default createProjectSchematic(async (options, { tree }) => { - options.path ??= await createDefaultPath(tree, options.project); - options.module = findModuleFromOptions(tree, options); - const parsedPath = parseName(options.path, options.name); - options.name = parsedPath.name; - options.path = parsedPath.path; - validateClassName(strings.classify(options.name)); +const pipeSchematic: RuleFactory = createProjectSchematic( + async (options, { tree }) => { + options.path ??= await createDefaultPath(tree, options.project); + options.module = findModuleFromOptions(tree, options); + const parsedPath = parseName(options.path, options.name); + options.name = parsedPath.name; + options.path = parsedPath.path; + validateClassName(strings.classify(options.name)); - return chain([ - addDeclarationToNgModule({ - type: 'pipe', - ...options, - }), - generateFromFiles(options), - ]); -}); + return chain([ + addDeclarationToNgModule({ + type: 'pipe', + ...options, + }), + generateFromFiles(options), + ]); + }, +); + +export default pipeSchematic; diff --git a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts index a4964b1e456b..8a9d888a0298 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/utils/todo-notes.ts @@ -39,7 +39,7 @@ export const TODO_NOTES = { 'Please migrate this manually by checking the `mock.calls.length` of the individual spies.', }, 'toThrowMatching': { - message: (context: { name: string }) => + message: (context: { name: string }): string => `Unsupported matcher ".${context.name}()" found. Please migrate this manually.`, url: 'https://vitest.dev/api/expect.html#tothrowerror', }, @@ -49,7 +49,7 @@ export const TODO_NOTES = { 'Please migrate this manually, for example by using `Promise.race` to check if the promise settles within a short timeout.', }, 'unsupported-expect-async-matcher': { - message: (context: { name: string }) => + message: (context: { name: string }): string => `Unsupported expectAsync matcher ".${context.name}()" found. Please migrate this manually.`, }, 'arrayWithExactContents-dynamic-variable': { @@ -65,7 +65,7 @@ export const TODO_NOTES = { 'expect().nothing() has been removed because it is redundant in Vitest. Tests without assertions pass by default.', }, 'unsupported-global-function': { - message: (context: { name: string }) => + message: (context: { name: string }): string => `Unsupported global function \`${context.name}\` found. This function is used for custom reporters in Jasmine ` + 'and has no direct equivalent in Vitest.', }, @@ -89,7 +89,7 @@ export const TODO_NOTES = { ' Please manually assert the contents of the Set.', }, 'unknown-jasmine-property': { - message: (context: { name: string }) => + message: (context: { name: string }): string => `Unsupported jasmine property "${context.name}" found. Please migrate this manually.`, }, 'spyOnAllFunctions': { @@ -114,7 +114,7 @@ export const TODO_NOTES = { url: 'https://vitest.dev/api/vi.html#vi-fn', }, 'unsupported-spy-strategy': { - message: (context: { name: string }) => + message: (context: { name: string }): string => `Unsupported spy strategy ".and.${context.name}()" found. Please migrate this manually.`, url: 'https://vitest.dev/api/mocked.html#mock', }, diff --git a/packages/schematics/angular/server/index.ts b/packages/schematics/angular/server/index.ts index 00448bfbfb1e..077114e9027d 100644 --- a/packages/schematics/angular/server/index.ts +++ b/packages/schematics/angular/server/index.ts @@ -9,6 +9,7 @@ import { JsonValue, Path, basename, dirname, join, normalize } from '@angular-devkit/core'; import { Rule, + RuleFactory, SchematicsException, Tree, apply, @@ -163,91 +164,97 @@ function addDependencies(skipInstall: boolean | undefined): Rule { }; } -export default createProjectSchematic(async (options, { project, tree }) => { - if (project?.extensions.projectType !== 'application') { - throw new SchematicsException(`Server schematic requires a project type of "application".`); - } - - const clientBuildTarget = project.targets.get('build'); - if (!clientBuildTarget) { - throw targetBuildNotFoundError(); - } - - const usingApplicationBuilder = isUsingApplicationBuilder(project); - - if ( - project.targets.has('server') || - (usingApplicationBuilder && clientBuildTarget.options?.server !== undefined) - ) { - // Server has already been added. - return noop(); - } - - const clientBuildOptions = clientBuildTarget.options as Record; - const browserEntryPoint = await getMainFilePath(tree, options.project); - const isStandalone = isStandaloneApp(tree, browserEntryPoint); - const sourceRoot = project.sourceRoot ?? join(normalize(project.root), 'src'); - - let filesUrl = `./files/${usingApplicationBuilder ? 'application-builder/' : 'server-builder/'}`; - filesUrl += isStandalone ? 'standalone-src' : 'ngmodule-src'; - - const { componentName, componentImportPathInSameFile, moduleName, moduleImportPathInSameFile } = - resolveBootstrappedComponentData(tree, 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), - ]); - - const clientTsConfig = normalize(clientBuildOptions.tsConfig); - const tsConfigExtends = basename(clientTsConfig); - const tsConfigDirectory = dirname(clientTsConfig); - - return chain([ - mergeWith(templateSource), - ...(usingApplicationBuilder - ? [ - updateConfigFileApplicationBuilder(options), - updateTsConfigFile(clientBuildOptions.tsConfig), - ] - : [ - mergeWith( - apply(url('./files/server-builder/root'), [ - applyTemplates({ - ...strings, - ...options, - stripTsExtension: (s: string) => s.replace(/\.ts$/, ''), - tsConfigExtends, - hasLocalizePackage: !!getPackageJsonDependency(tree, '@angular/localize'), - relativePathToWorkspaceRoot: relativePathToWorkspaceRoot(tsConfigDirectory), - }), - move(tsConfigDirectory), - ]), - ), - updateConfigFileBrowserBuilder(options, tsConfigDirectory), - ]), - addDependencies(options.skipInstall), - addRootProvider( - options.project, - ({ code, external }) => - code`${external('provideClientHydration', '@angular/platform-browser')}(${external( - 'withEventReplay', - '@angular/platform-browser', - )}())`, - ), - ]); -}); +const serverSchematic: RuleFactory = createProjectSchematic( + async (options, { project, tree }) => { + if (project?.extensions.projectType !== 'application') { + throw new SchematicsException(`Server schematic requires a project type of "application".`); + } + + const clientBuildTarget = project.targets.get('build'); + if (!clientBuildTarget) { + throw targetBuildNotFoundError(); + } + + const usingApplicationBuilder = isUsingApplicationBuilder(project); + + if ( + project.targets.has('server') || + (usingApplicationBuilder && clientBuildTarget.options?.server !== undefined) + ) { + // Server has already been added. + return noop(); + } + + const clientBuildOptions = clientBuildTarget.options as Record; + const browserEntryPoint = await getMainFilePath(tree, options.project); + const isStandalone = isStandaloneApp(tree, browserEntryPoint); + const sourceRoot = project.sourceRoot ?? join(normalize(project.root), 'src'); + + let filesUrl = `./files/${ + usingApplicationBuilder ? 'application-builder/' : 'server-builder/' + }`; + filesUrl += isStandalone ? 'standalone-src' : 'ngmodule-src'; + + const { componentName, componentImportPathInSameFile, moduleName, moduleImportPathInSameFile } = + resolveBootstrappedComponentData(tree, 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), + ]); + + const clientTsConfig = normalize(clientBuildOptions.tsConfig); + const tsConfigExtends = basename(clientTsConfig); + const tsConfigDirectory = dirname(clientTsConfig); + + return chain([ + mergeWith(templateSource), + ...(usingApplicationBuilder + ? [ + updateConfigFileApplicationBuilder(options), + updateTsConfigFile(clientBuildOptions.tsConfig), + ] + : [ + mergeWith( + apply(url('./files/server-builder/root'), [ + applyTemplates({ + ...strings, + ...options, + stripTsExtension: (s: string) => s.replace(/\.ts$/, ''), + tsConfigExtends, + hasLocalizePackage: !!getPackageJsonDependency(tree, '@angular/localize'), + relativePathToWorkspaceRoot: relativePathToWorkspaceRoot(tsConfigDirectory), + }), + move(tsConfigDirectory), + ]), + ), + updateConfigFileBrowserBuilder(options, tsConfigDirectory), + ]), + addDependencies(options.skipInstall), + addRootProvider( + options.project, + ({ code, external }) => + code`${external('provideClientHydration', '@angular/platform-browser')}(${external( + 'withEventReplay', + '@angular/platform-browser', + )}())`, + ), + ]); + }, +); + +export default serverSchematic; diff --git a/packages/schematics/angular/service-worker/index.ts b/packages/schematics/angular/service-worker/index.ts index c357e5b9187d..4ef2c9839def 100644 --- a/packages/schematics/angular/service-worker/index.ts +++ b/packages/schematics/angular/service-worker/index.ts @@ -8,6 +8,7 @@ import { Rule, + RuleFactory, SchematicContext, SchematicsException, Tree, @@ -104,7 +105,7 @@ function getTsSourceFile(host: Tree, path: string): ts.SourceFile { return source; } -export default createProjectSchematic( +const serviceWorkerSchematic: RuleFactory = createProjectSchematic( async (options, { project, workspace, tree }) => { if (project.extensions.projectType !== 'application') { throw new SchematicsException(`Service worker requires a project type of "application".`); @@ -151,6 +152,8 @@ export default createProjectSchematic( }, ); +export default serviceWorkerSchematic; + function addImport(host: Tree, filePath: string, symbolName: string, moduleName: string): void { const moduleSource = getTsSourceFile(host, filePath); const change = insertImport(moduleSource, filePath, symbolName, moduleName); diff --git a/packages/schematics/angular/service/index.ts b/packages/schematics/angular/service/index.ts index 48558dcc0d3a..7805e78cc823 100644 --- a/packages/schematics/angular/service/index.ts +++ b/packages/schematics/angular/service/index.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Rule, strings } from '@angular-devkit/schematics'; +import { RuleFactory, strings } from '@angular-devkit/schematics'; import { generateFromFiles } from '../utility/generate-from-files'; import { parseName } from '../utility/parse-name'; import { createProjectSchematic } from '../utility/project'; @@ -14,22 +14,26 @@ import { validateClassName } from '../utility/validation'; import { buildDefaultPath } from '../utility/workspace'; import { Schema as ServiceOptions } from './schema'; -export default createProjectSchematic((options, { project, tree }) => { - if (options.path === undefined) { - options.path = buildDefaultPath(project); - } +const serviceSchematic: RuleFactory = createProjectSchematic( + (options, { project, tree }) => { + if (options.path === undefined) { + options.path = buildDefaultPath(project); + } - const parsedPath = parseName(options.path, options.name); - options.name = parsedPath.name; - options.path = parsedPath.path; + const parsedPath = parseName(options.path, options.name); + options.name = parsedPath.name; + options.path = parsedPath.path; - const classifiedName = - strings.classify(options.name) + - (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); - validateClassName(classifiedName); + const classifiedName = + strings.classify(options.name) + + (options.addTypeToClassName && options.type ? strings.classify(options.type) : ''); + validateClassName(classifiedName); - return generateFromFiles({ - ...options, - classifiedName, - }); -}); + return generateFromFiles({ + ...options, + classifiedName, + }); + }, +); + +export default serviceSchematic; diff --git a/packages/schematics/angular/ssr/index.ts b/packages/schematics/angular/ssr/index.ts index 8d3132228f24..6e27eab47cd5 100644 --- a/packages/schematics/angular/ssr/index.ts +++ b/packages/schematics/angular/ssr/index.ts @@ -9,6 +9,7 @@ import { isJsonObject } from '@angular-devkit/core'; import { Rule, + RuleFactory, SchematicContext, SchematicsException, Tree, @@ -360,29 +361,33 @@ function addServerFile( }; } -export default createProjectSchematic(async (options, { project, tree, context }) => { - const browserEntryPoint = await getMainFilePath(tree, options.project); - const isStandalone = isStandaloneApp(tree, browserEntryPoint); +const ssrSchematic: RuleFactory = createProjectSchematic( + async (options, { project, tree, context }) => { + const browserEntryPoint = await getMainFilePath(tree, options.project); + const isStandalone = isStandaloneApp(tree, browserEntryPoint); - const usingApplicationBuilder = isUsingApplicationBuilder(project); - const sourceRoot = project.sourceRoot ?? join(project.root, 'src'); + const usingApplicationBuilder = isUsingApplicationBuilder(project); + const sourceRoot = project.sourceRoot ?? join(project.root, 'src'); - return chain([ - schematic('server', { - ...options, - skipInstall: true, - }), - ...(usingApplicationBuilder - ? [ - updateApplicationBuilderWorkspaceConfigRule(sourceRoot, options, context), - updateApplicationBuilderTsConfigRule(options), - ] - : [ - updateWebpackBuilderServerTsConfigRule(options), - updateWebpackBuilderWorkspaceConfigRule(sourceRoot, options), - ]), - addServerFile(sourceRoot, options, isStandalone), - addScriptsRule(options, usingApplicationBuilder), - addDependencies(options, usingApplicationBuilder), - ]); -}); + return chain([ + schematic('server', { + ...options, + skipInstall: true, + }), + ...(usingApplicationBuilder + ? [ + updateApplicationBuilderWorkspaceConfigRule(sourceRoot, options, context), + updateApplicationBuilderTsConfigRule(options), + ] + : [ + updateWebpackBuilderServerTsConfigRule(options), + updateWebpackBuilderWorkspaceConfigRule(sourceRoot, options), + ]), + addServerFile(sourceRoot, options, isStandalone), + addScriptsRule(options, usingApplicationBuilder), + addDependencies(options, usingApplicationBuilder), + ]); + }, +); + +export default ssrSchematic; diff --git a/packages/schematics/angular/tailwind/index.ts b/packages/schematics/angular/tailwind/index.ts index 152399deee5b..e246e5f55bfe 100644 --- a/packages/schematics/angular/tailwind/index.ts +++ b/packages/schematics/angular/tailwind/index.ts @@ -8,6 +8,7 @@ import { type Rule, + RuleFactory, SchematicsException, apply, applyTemplates, @@ -122,16 +123,20 @@ function managePostCssConfiguration(project: ProjectDefinition): Rule { }; } -export default createProjectSchematic((options, { project }) => { - return chain([ - addTailwindStyles(options, project), - managePostCssConfiguration(project), - ...TAILWIND_DEPENDENCIES.map((name) => - addDependency(name, latestVersions[name], { - type: DependencyType.Dev, - existing: ExistingBehavior.Skip, - install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, - }), - ), - ]); -}); +const tailwindSchematic: RuleFactory = createProjectSchematic( + (options, { project }) => { + return chain([ + addTailwindStyles(options, project), + managePostCssConfiguration(project), + ...TAILWIND_DEPENDENCIES.map((name) => + addDependency(name, latestVersions[name], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + ), + ]); + }, +); + +export default tailwindSchematic; diff --git a/packages/schematics/angular/utility/change.ts b/packages/schematics/angular/utility/change.ts index e4055620258c..6736b29e594b 100644 --- a/packages/schematics/angular/utility/change.ts +++ b/packages/schematics/angular/utility/change.ts @@ -33,9 +33,9 @@ export interface Change { */ export class NoopChange implements Change { description = 'No operation.'; - order = Infinity; + order: number = Infinity; path = null; - apply() { + apply(): Promise { return Promise.resolve(); } } @@ -62,7 +62,7 @@ export class InsertChange implements Change { /** * This method does not insert spaces if there is none in the original string. */ - apply(host: Host) { + apply(host: Host): Promise { return host.read(this.path).then((content) => { const prefix = content.substring(0, this.pos); const suffix = content.substring(this.pos); diff --git a/packages/schematics/angular/utility/dependencies.ts b/packages/schematics/angular/utility/dependencies.ts index deb78ca9c0e2..b90ba8796975 100644 --- a/packages/schematics/angular/utility/dependencies.ts +++ b/packages/schematics/angular/utility/dependencies.ts @@ -37,7 +37,7 @@ const ALL_DEPENDENCY_TYPE = [ export function addPackageJsonDependency( tree: Tree, dependency: NodeDependency, - pkgJsonPath = PKG_JSON_PATH, + pkgJsonPath: string = PKG_JSON_PATH, ): void { const json = new JSONFile(tree, pkgJsonPath); @@ -51,7 +51,7 @@ export function addPackageJsonDependency( export function removePackageJsonDependency( tree: Tree, name: string, - pkgJsonPath = PKG_JSON_PATH, + pkgJsonPath: string = PKG_JSON_PATH, ): void { const json = new JSONFile(tree, pkgJsonPath); @@ -63,7 +63,7 @@ export function removePackageJsonDependency( export function getPackageJsonDependency( tree: Tree, name: string, - pkgJsonPath = PKG_JSON_PATH, + pkgJsonPath: string = PKG_JSON_PATH, ): NodeDependency | null { const json = new JSONFile(tree, pkgJsonPath); diff --git a/packages/schematics/angular/utility/standalone/code_block.ts b/packages/schematics/angular/utility/standalone/code_block.ts index 128c6076a41b..439699718cb9 100644 --- a/packages/schematics/angular/utility/standalone/code_block.ts +++ b/packages/schematics/angular/utility/standalone/code_block.ts @@ -75,7 +75,10 @@ export class CodeBlock { * @param initialCode Code pending transformed. * @param filePath Path of the file in which the code will be inserted. */ - static transformPendingCode(initialCode: PendingCode, filePath: string) { + static transformPendingCode( + initialCode: PendingCode, + filePath: string, + ): { code: PendingCode; rules: Rule[] } { const code = { ...initialCode }; const rules: Rule[] = []; diff --git a/packages/schematics/angular/utility/standalone/util.ts b/packages/schematics/angular/utility/standalone/util.ts index 4c64e68ad559..433967bce172 100644 --- a/packages/schematics/angular/utility/standalone/util.ts +++ b/packages/schematics/angular/utility/standalone/util.ts @@ -137,7 +137,7 @@ function findImportLocalName( * @param path Path to the file that is being changed. * @param changes Changes that should be applied to the file. */ -export function applyChangesToFile(tree: Tree, path: string, changes: Change[]) { +export function applyChangesToFile(tree: Tree, path: string, changes: Change[]): void { if (changes.length > 0) { const recorder = tree.beginUpdate(path); applyToUpdateRecorder(recorder, changes); diff --git a/packages/schematics/angular/utility/validation.ts b/packages/schematics/angular/utility/validation.ts index 8b380d1b8262..54c3fddb815d 100644 --- a/packages/schematics/angular/utility/validation.ts +++ b/packages/schematics/angular/utility/validation.ts @@ -10,7 +10,7 @@ import { SchematicsException } from '@angular-devkit/schematics'; // Must start with a letter, and must contain only alphanumeric characters or dashes. // When adding a dash the segment after the dash must also start with a letter. -export const htmlSelectorRe = +export const htmlSelectorRe: RegExp = /^[a-zA-Z][.0-9a-zA-Z]*((:?-[0-9]+)*|(:?-[a-zA-Z][.0-9a-zA-Z]*(:?-[0-9]+)*)*)$/; // See: https://github.com/tc39/proposal-regexp-unicode-property-escapes/blob/fe6d07fad74cd0192d154966baa1e95e7cda78a1/README.md#other-examples diff --git a/packages/schematics/angular/utility/workspace.ts b/packages/schematics/angular/utility/workspace.ts index b831458edf40..f8567fc534a3 100644 --- a/packages/schematics/angular/utility/workspace.ts +++ b/packages/schematics/angular/utility/workspace.ts @@ -81,7 +81,7 @@ export function updateWorkspace( */ export async function getWorkspace( tree: Tree, - path = DEFAULT_WORKSPACE_PATH, + path: string = DEFAULT_WORKSPACE_PATH, ): Promise { const host = new TreeWorkspaceHost(tree); diff --git a/packages/schematics/angular/web-worker/index.ts b/packages/schematics/angular/web-worker/index.ts index c9b5da381cbb..a19e2b714174 100644 --- a/packages/schematics/angular/web-worker/index.ts +++ b/packages/schematics/angular/web-worker/index.ts @@ -8,6 +8,7 @@ import { Rule, + RuleFactory, SchematicContext, SchematicsException, Tree, @@ -73,54 +74,58 @@ if (typeof Worker !== 'undefined') { }; } -export default createProjectSchematic((options, { project }) => { - const projectType = project.extensions['projectType']; - if (projectType !== 'application') { - throw new SchematicsException(`Web Worker requires a project type of "application".`); - } +const webWorkerSchematic: RuleFactory = createProjectSchematic( + (options, { project }) => { + const projectType = project.extensions['projectType']; + if (projectType !== 'application') { + throw new SchematicsException(`Web Worker requires a project type of "application".`); + } + + if (options.path === undefined) { + options.path = buildDefaultPath(project); + } + const parsedPath = parseName(options.path, options.name); + options.name = parsedPath.name; + options.path = parsedPath.path; - if (options.path === undefined) { - options.path = buildDefaultPath(project); - } - const parsedPath = parseName(options.path, options.name); - options.name = parsedPath.name; - options.path = parsedPath.path; + const templateSourceWorkerCode = apply(url('./files/worker'), [ + applyTemplates({ ...options, ...strings }), + move(parsedPath.path), + ]); - const templateSourceWorkerCode = apply(url('./files/worker'), [ - applyTemplates({ ...options, ...strings }), - move(parsedPath.path), - ]); + const root = project.root || ''; + const templateSourceWorkerConfig = apply(url('./files/worker-tsconfig'), [ + applyTemplates({ + ...options, + relativePathToWorkspaceRoot: relativePathToWorkspaceRoot(root), + }), + move(root), + ]); - const root = project.root || ''; - const templateSourceWorkerConfig = apply(url('./files/worker-tsconfig'), [ - applyTemplates({ - ...options, - relativePathToWorkspaceRoot: relativePathToWorkspaceRoot(root), - }), - move(root), - ]); + return chain([ + // Add project configuration. + updateWorkspace((workspace) => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const project = workspace.projects.get(options.project)!; + const buildTarget = project.targets.get('build'); + const testTarget = project.targets.get('test'); + if (!buildTarget) { + throw new Error(`Build target is not defined for this project.`); + } - return chain([ - // Add project configuration. - updateWorkspace((workspace) => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const project = workspace.projects.get(options.project)!; - const buildTarget = project.targets.get('build'); - const testTarget = project.targets.get('test'); - if (!buildTarget) { - throw new Error(`Build target is not defined for this project.`); - } + const workerConfigPath = join(root, 'tsconfig.worker.json'); + (buildTarget.options ??= {}).webWorkerTsConfig ??= workerConfigPath; + if (testTarget) { + (testTarget.options ??= {}).webWorkerTsConfig ??= workerConfigPath; + } + }), + // Create the worker in a sibling module. + options.snippet ? addSnippet(options) : noop(), + // Add the worker. + mergeWith(templateSourceWorkerCode), + mergeWith(templateSourceWorkerConfig), + ]); + }, +); - const workerConfigPath = join(root, 'tsconfig.worker.json'); - (buildTarget.options ??= {}).webWorkerTsConfig ??= workerConfigPath; - if (testTarget) { - (testTarget.options ??= {}).webWorkerTsConfig ??= workerConfigPath; - } - }), - // Create the worker in a sibling module. - options.snippet ? addSnippet(options) : noop(), - // Add the worker. - mergeWith(templateSourceWorkerCode), - mergeWith(templateSourceWorkerConfig), - ]); -}); +export default webWorkerSchematic; From 032257a6d00360d2c4e6d5406409dcfa5b27d1d5 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Fri, 12 Dec 2025 17:01:49 +0100 Subject: [PATCH 1976/2162] fix(@angular/cli): improve signal forms lesson examples in AI tutor - Use error.kind for tracking in @for loops instead of $index - Use form submit event instead of button click for better semantics - Add type="submit" to submit buttons - Update Module 19 and 20 exercises to reflect best practices - Remove disabled button pattern --- .../src/commands/mcp/resources/ai-tutor.md | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md b/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md index 0e92502e913e..cbe6437e44ac 100644 --- a/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md +++ b/packages/angular/cli/src/commands/mcp/resources/ai-tutor.md @@ -327,8 +327,9 @@ When teaching or generating code for Phase 5 (Signal Forms), you **must** strict - Use the `[field]` directive to bind a form control to an input. - **Correct Syntax**: `` (Note: `field` is lowercase here). - **Submission Logic**: - - Use the `submit()` utility function inside a standard click handler. - - **Syntax**: `submit(this.myForm, async () => { /* logic */ })`. + - Use the `submit()` utility function inside the form's `(submit)` event handler. + - **Syntax**: Add `(submit)="save($event)"` to the `
` element and use `submit(this.myForm, async () => { /* logic */ })` in the handler. + - The handler must call `event.preventDefault()` to prevent the default form submission behavior. - **Resetting Logic**: - To reset the form, you must perform two actions: 1. **Clear Interaction State**: Call `.reset()` on the form signal's value: `this.myForm().reset()`. @@ -344,7 +345,7 @@ When teaching or generating code for Phase 5 (Signal Forms), you **must** strict ```html @if (myForm.email().invalid()) {
    - @for (error of myForm.email().errors(); track error) { + @for (error of myForm.email().errors(); track error.kind) {
  • {{ error.message }}
  • }
@@ -363,14 +364,14 @@ When teaching or generating code for Phase 5 (Signal Forms), you **must** strict standalone: true, imports: [Field], template: ` - + @if (loginForm.email().touched() && loginForm.email().invalid()) {

- @for (error of loginForm.email().errors(); track $index) { + @for (error of loginForm.email().errors(); track error.kind) { {{ error.message }} }

@@ -378,7 +379,7 @@ When teaching or generating code for Phase 5 (Signal Forms), you **must** strict - +
`, }) @@ -553,7 +554,6 @@ _(The LLM will need to interpret "project-specific" or "app-themed" below based - **Module 20 (Validation in Signal Forms)** - **20a**: The component imports validator functions (e.g., `required`, `email`) from `@angular/forms/signals`. `description`: "importing functional validators." - **20b**: The `form()` definition uses a validation callback. `description`: "defining the validation schema." - - **20c**: The button uses `[disabled]` bound to `myForm.invalid()`. `description`: "disabling the button for invalid forms." - **Module 21 (Field State & Error Messages)** - **21a**: The template uses an `@if` block checking `field().invalid()` (e.g., `myForm.name().invalid()`). `description`: "checking field invalidity." - **21b**: Inside the check, an `@for` loop iterates over `field().errors()`. `description`: "iterating over validation errors." @@ -804,20 +804,21 @@ touch src/app/mock-recipes.ts **Exercise**: Your goal is to create a new `AddRecipe` component that uses the modern `Signal Forms` API. Import `form` and `Field` from `@angular/forms/signals`. Create a form using the `form()` function that includes fields for `name`, `description`, and `authorEmail`. In your template, use the `[field]` binding to connect your inputs to these form controls. -- **Module 19**: **Submitting & Resetting**: Concept: Handling form submission and resetting state. **Exercise**: Inject the service into your `AddRecipe` component. Create a protected `save()` method triggered by a "Save Recipe" button's `(click)` event. Inside this method: - 1. Use the `submit(this.myForm, ...)` utility. - 2. Update the `RecipeService` to include an `addRecipe(newRecipe: RecipeModel)` method. - 3. Construct a complete `RecipeModel` (merging form values with defaults) and pass it to the service. - 4. **Reset the form**: Call `this.myForm().reset()` to clear interaction flags. - 5. **Clear the values**: Call `this.myModel.set(...)` to reset the inputs. +- **Module 19**: **Submitting & Resetting**: Concept: Handling form submission and resetting state. **Exercise**: Inject the service into your `AddRecipe` component. Create a protected `save()` method triggered by the form's `(submit)` event. Inside this method: + 1. Call `event.preventDefault()` to prevent the default form submission. + 2. Use the `submit(this.myForm, ...)` utility. + 3. Update the `RecipeService` to include an `addRecipe(newRecipe: RecipeModel)` method. + 4. Construct a complete `RecipeModel` (merging form values with defaults) and pass it to the service. + 5. **Reset the form**: Call `this.myForm().reset()` to clear interaction flags. + 6. **Clear the values**: Call `this.myModel.set(...)` to reset the inputs. - **Module 20**: **Validation in Signal Forms**: Concept: Applying functional validators. **Exercise**: Import `required` and `email` from `@angular/forms/signals`. Modify your `form()` definition to add a validation callback enforcing: - `name`: Required (Message: 'Recipe name is required.'). - `description`: Required (Message: 'Description is required.'). - `authorEmail`: Required (Message: 'Author email is required.') AND Email format (Message: 'Please enter a valid email address.'). - **Finally, bind the `[disabled]` property of your button to `myForm.invalid()` so users cannot submit invalid data.** + **Finally, ensure your submit button has `type="submit"`. Note: the `submit()` utility automatically handles validation by marking all fields as touched when submission is attempted.** - **Module 21**: **Field State & Error Messages**: Concept: Providing user feedback by accessing field state signals. **Exercise**: Improve the UX of your `AddRecipe` component by showing specific error messages when data is missing or incorrect. In your template, for the `name`, `description`, and `authorEmail` inputs: 1. Create an `@if` block that checks if the field is `invalid()` (e.g., `myForm.name().invalid()`). - 2. Inside the block, use `@for` to iterate over the field's `.errors()`. + 2. Inside the block, use `@for` to iterate over the field's `.errors()` (use `track error.kind` to identify each error by its type). 3. Display the `error.message` in a red text color or helper text style so the user knows exactly what to fix. From da05121c21f75d08ded30159c83f51b6974a33c8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 12 Dec 2025 19:05:19 +0000 Subject: [PATCH 1977/2162] build: update all github actions See associated pull request for more information. --- .github/workflows/ci.yml | 6 +++--- .github/workflows/pr.yml | 8 ++++---- .github/workflows/scorecard.yml | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e74b2bc7a95..0c0fc8ccca3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,7 @@ jobs: //tests/legacy-cli:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: win-e2e-build-artifacts path: | @@ -141,7 +141,7 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: win-e2e-build-artifacts path: dist/bin/tests/legacy-cli/ @@ -231,7 +231,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@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: ${{ failure() }} with: name: sauce-connect-log diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 9bced41243a7..7962dda3c8fb 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Bazel uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a - name: Setup ESLint Caching - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: path: .eslintcache key: ${{ runner.os }}-${{ hashFiles('.eslintrc.json') }} @@ -82,7 +82,7 @@ jobs: - name: Build release targets run: pnpm ng-dev release build - name: Store PR release packages - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: packages path: dist/releases/*.tgz @@ -142,7 +142,7 @@ jobs: //tests/legacy-cli:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: win-e2e-build-artifacts path: | @@ -160,7 +160,7 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: win-e2e-build-artifacts path: dist/bin/tests/legacy-cli/ diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 81d60689b9fc..1a673d9b94ac 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@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: SARIF file path: results.sarif From 5f190eb2003e76fb34c9cbbbeee0390bd7d7f040 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 12 Dec 2025 11:37:34 +0000 Subject: [PATCH 1978/2162] build: update all non-major dependencies See associated pull request for more information. --- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 188 +++++++++--------- 3 files changed, 97 insertions(+), 97 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 4e53cb890c00..c03bb6a6aa58 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,8 +37,8 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.53", - "sass": "1.95.0", + "rolldown": "1.0.0-beta.54", + "sass": "1.96.0", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 8d0bd2227e35..a8f301b998ba 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.95.0", + "sass": "1.96.0", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d38683373504..91e9a39bc216 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -318,7 +318,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -330,7 +330,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -354,7 +354,7 @@ importers: version: 5.1.21(@types/node@24.10.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -392,11 +392,11 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.53 - version: 1.0.0-beta.53 + specifier: 1.0.0-beta.54 + version: 1.0.0-beta.54 sass: - specifier: 1.95.0 - version: 1.95.0 + specifier: 1.96.0 + version: 1.96.0 semver: specifier: 7.7.3 version: 7.7.3 @@ -411,7 +411,7 @@ importers: version: 7.16.0 vite: specifier: 7.2.7 - version: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -705,11 +705,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.95.0 - version: 1.95.0 + specifier: 1.96.0 + version: 1.96.0 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.95.0)(webpack@5.103.0(esbuild@0.27.1)) + version: 16.0.6(sass@1.96.0)(webpack@5.103.0(esbuild@0.27.1)) semver: specifier: 7.7.3 version: 7.7.3 @@ -3054,8 +3054,8 @@ packages: resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} - '@oxc-project/types@0.101.0': - resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} + '@oxc-project/types@0.102.0': + resolution: {integrity: sha512-8Skrw405g+/UJPKWJ1twIk3BIH2nXdiVlVNtYT23AXVwpsd79es4K+KYt06Fbnkc5BaTvk/COT2JuCLYdwnCdA==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3207,89 +3207,89 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} + '@rolldown/binding-android-arm64@1.0.0-beta.54': + resolution: {integrity: sha512-zZRx/ur3Fai3fxiEmVp48+6GCBR48PRWJR1X3TTMn9yiq2bBHlYPgBaQtDOYWXv5H3J5dXujeTyGnuoY+kdGCg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.54': + resolution: {integrity: sha512-zMyFEJmbIs91x22HAA/eUvmZHgjX8tGsD3TJ+WC9aY4bCdl3w84H9vMZmChSHAF1dYvGNH4KQDI2IubeZaCYtg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.53': - resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} + '@rolldown/binding-darwin-x64@1.0.0-beta.54': + resolution: {integrity: sha512-Ex7QttdaVnEpmE/zroUT5Qm10e2+Vjd9q0LX9eXm59SitxDODMpC8GI1Rct5RrLf4GLU4DzdXBj6DGzuR+6g6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.53': - resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.54': + resolution: {integrity: sha512-E1XO10ryM/Vxw3Q1wvs9s2mSpVBfbHtzkbJcdu26qh17ZmVwNWLiIoqEcbkXm028YwkReG4Gd2gCZ3NxgTQ28Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': - resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.54': + resolution: {integrity: sha512-oS73Uks8jczQR9pg0Bj718vap/x71exyJ5yuxu4X5V4MhwRQnky7ANSPm6ARUfraxOqt49IBfcMeGnw2rTSqdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': - resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.54': + resolution: {integrity: sha512-pY8N2X5C+/ZQcy0eRdfOzOP//OFngP1TaIqDjFwfBPws2UNavKS8SpxhPEgUaYIaT0keVBd/TB+eVy9z+CIOtw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': - resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.54': + resolution: {integrity: sha512-cgTooAFm2MUmFriB7IYaWBNyqrGlRPKG+yaK2rGFl2rcdOcO24urY4p3eyB0ogqsRLvJbIxwjjYiWiIP7Eo1Cw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': - resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.54': + resolution: {integrity: sha512-nGyLT1Qau0W+kEL44V2jhHmvfS3wyJW08E4WEu2E6NuIy+uChKN1X0aoxzFIDi2owDsYaZYez/98/f268EupIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': - resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.54': + resolution: {integrity: sha512-KH374P0TUjDXssROT/orvzaWrzGOptD13PTrltgKwbDprJTMknoLiYsOD6Ttz92O2VuAcCtFuJ1xbyFM2Uo/Xg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.54': + resolution: {integrity: sha512-oMAVO4wbfAbhpBxPsSp8R7ntL2DchpNfO+tGhN8/sI9jsbYwOv78uIW1fTwOBslhjTVFltGJ+l23mubNQcYNaQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': - resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.54': + resolution: {integrity: sha512-MYY/FmY+HehHiQkNx04W5oLy/Fqd1hXYqZmmorSDXvAHnxMbSgmdFicKsSYOg/sVGHBMEP1tTn6kV5sWrS45rA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': - resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.54': + resolution: {integrity: sha512-66o3uKxUmcYskT9exskxs3OVduXf5x0ndlMkYOjSpBgqzhLtkub136yDvZkNT1OkNDET0odSwcU7aWdpnwzAyg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': - resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.54': + resolution: {integrity: sha512-FbbbrboChLBXfeEsOfaypBGqzbdJ/CcSA2BPLCggojnIHy58Jo+AXV7HATY8opZk7194rRbokIT8AfPJtZAWtg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.53': - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rolldown/pluginutils@1.0.0-beta.54': + resolution: {integrity: sha512-AHgcZ+w7RIRZ65ihSQL8YuoKcpD9Scew4sEeP1BBUT9QdTo6KjwHrZZXjID6nL10fhKessCH6OPany2QKwAwTQ==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -7979,8 +7979,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.53: - resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} + rolldown@1.0.0-beta.54: + resolution: {integrity: sha512-3lIvjCWgjPL3gmiATUdV1NeVBGJZy6FdtwgLPol25tAkn46Q/MsVGfCSNswXwFOxGrxglPaN20IeALSIFuFyEg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8073,8 +8073,8 @@ packages: webpack: optional: true - sass@1.95.0: - resolution: {integrity: sha512-9QMjhLq+UkOg/4bb8Lt8A+hJZvY3t+9xeZMKSBtBEgxrXA3ed5Ts4NDreUkYgJP1BTmrscQE/xYhf7iShow6lw==} + sass@1.96.0: + resolution: {integrity: sha512-8u4xqqUeugGNCYwr9ARNtQKTOj4KmYiJAVKXf2CTIivTCR51j96htbMKWDru8H5SaQWpyVgTfOF8Ylyf5pun1Q==} engines: {node: '>=14.0.0'} hasBin: true @@ -11770,7 +11770,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.38.0': {} - '@oxc-project/types@0.101.0': {} + '@oxc-project/types@0.102.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11896,48 +11896,48 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.53': + '@rolldown/binding-android-arm64@1.0.0-beta.54': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + '@rolldown/binding-darwin-arm64@1.0.0-beta.54': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.53': + '@rolldown/binding-darwin-x64@1.0.0-beta.54': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + '@rolldown/binding-freebsd-x64@1.0.0-beta.54': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.54': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.54': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.54': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.54': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.54': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.54': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.54': dependencies: '@napi-rs/wasm-runtime': 1.1.0 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.54': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.54': optional: true - '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rolldown/pluginutils@1.0.0-beta.54': {} '@rollup/plugin-alias@6.0.0(rollup@4.53.3)': optionalDependencies: @@ -12756,11 +12756,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -12773,7 +12773,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12786,13 +12786,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -16628,7 +16628,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.3.0(rollup@4.53.3)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.95.0 + sass: 1.96.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -17578,24 +17578,24 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-beta.53: + rolldown@1.0.0-beta.54: dependencies: - '@oxc-project/types': 0.101.0 - '@rolldown/pluginutils': 1.0.0-beta.53 + '@oxc-project/types': 0.102.0 + '@rolldown/pluginutils': 1.0.0-beta.54 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.53 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 - '@rolldown/binding-darwin-x64': 1.0.0-beta.53 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 + '@rolldown/binding-android-arm64': 1.0.0-beta.54 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.54 + '@rolldown/binding-darwin-x64': 1.0.0-beta.54 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.54 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.54 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.54 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.54 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.54 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.54 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.54 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.54 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.54 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.54 rollup-license-plugin@3.1.0: dependencies: @@ -17696,14 +17696,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.95.0)(webpack@5.103.0(esbuild@0.27.1)): + sass-loader@16.0.6(sass@1.96.0)(webpack@5.103.0(esbuild@0.27.1)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.95.0 + sass: 1.96.0 webpack: 5.103.0(esbuild@0.27.1) - sass@1.95.0: + sass@1.96.0: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -18732,7 +18732,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18745,12 +18745,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.95.0 + sass: 1.96.0 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18763,15 +18763,15 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.95.0 + sass: 1.96.0 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -18788,7 +18788,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.95.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 From 2d0dc74db1194ba11cd4c97a224fa43fcdd757c9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 12 Dec 2025 05:06:28 +0000 Subject: [PATCH 1979/2162] build: update dependency bazel to v8.5.0 See associated pull request for more information. --- .bazelversion | 2 +- MODULE.bazel.lock | 23 ++++++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/.bazelversion b/.bazelversion index e7fdef7e2e63..6d2890793d47 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -8.4.2 +8.5.0 diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 5fb82d4787d2..1d03a5ac032d 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1,5 +1,5 @@ { - "lockFileVersion": 18, + "lockFileVersion": 24, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", @@ -208,7 +208,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "YwJI8DvcTdDNYeYL/QHwByfLcjJYUIqkjOIS7wZufyE=", + "bzlTransitiveDigest": "qIceBkct3WPS1PBc9/o0WM4MdEUfL+g7yqP1xDXe7SY=", "usagesDigest": "86SYlNcUMJASgUMqvnMJEEnJPg8LQekpDutWxwIGptI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -404,7 +404,7 @@ }, "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "fFcLmS3p3sFcn/GGOh4LxupnmV3++FYtXPG7KyQUZx4=", + "bzlTransitiveDigest": "tQ+7EwLfQwqi/T4v5/N3NNHTmP6Wu/FqXxRDndEB2OU=", "usagesDigest": "Tr4lh/DJy/YCO5nByO5cQarJwc2X2Vqej4F+rmkNim0=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -553,7 +553,7 @@ }, "@@aspect_rules_ts+//ts:extensions.bzl%ext": { "general": { - "bzlTransitiveDigest": "I+tE9vGTL3Se93kLUNxPQQZiIfYBgupRtrzLY383/Wk=", + "bzlTransitiveDigest": "KKmTLMqJpxtytjzEaoMHVzKFueOTktdf74M6J9hm9xM=", "usagesDigest": "aaqqxEFKCRGFkeAf0pKmXvZZTLGYIk3pQsDFG28ZbNg=", "recordedFileInputs": { "@@rules_browsers+//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" @@ -653,7 +653,7 @@ }, "@@pybind11_bazel+//:python_configure.bzl%extension": { "general": { - "bzlTransitiveDigest": "4rSUGWibZDYLhHR+8eMwTNwAwdIv+xjVrtQ+gHtWHq4=", + "bzlTransitiveDigest": "c9ZWWeXeu6bctL4/SsY2otFWyeFN0JJ20+ymGyJZtWk=", "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", "recordedFileInputs": { "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" @@ -932,7 +932,7 @@ }, "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { "general": { - "bzlTransitiveDigest": "v2H25KPHEkN56IHR41S67Kzp5Xjxd75GBiazhON8jzc=", + "bzlTransitiveDigest": "WHRlQQnxW7e7XMRBhq7SARkDarLDOAbg6iLaJpk5QYM=", "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1015,7 +1015,7 @@ }, "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "OlvsB0HsvxbR8ZN+J9Vf00X/+WVz/Y/5Xrq2LgcVfdo=", + "bzlTransitiveDigest": "rL/34P1aFDq2GqVC2zCFgQ8nTuOC6ziogocpvG50Qz8=", "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1579,7 +1579,7 @@ }, "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "k4yH+pmbTp1up4vf3Ew6RCqsUBcBaBznUiFqEh8KtZ4=", + "bzlTransitiveDigest": "39J6fxZx6VyebAMZs6LDsQSGw91SROMECqQx77bSJqE=", "usagesDigest": "AK1R124YPWwAs8z1CQYyjYuci8RO5Ofot+EP5ZCNQDc=", "recordedFileInputs": { "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", @@ -4181,10 +4181,6 @@ } } }, - "moduleExtensionMetadata": { - "useAllRepos": "NO", - "reproducible": false - }, "recordedRepoMappingEntries": [ [ "bazel_features+", @@ -4449,5 +4445,6 @@ "recordedRepoMappingEntries": [] } } - } + }, + "facts": {} } From fd8b4c8ea0a7aca8b2073acf7dc31c9c58cf4951 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 14:11:29 -0500 Subject: [PATCH 1980/2162] refactor(@angular-devkit/schematics): update type usage to support isolated declarations This commit addresses various TypeScript compilation errors that arise when the 'isolatedDeclarations' option is enabled. --- .../angular_devkit/schematics/tools/index.api.md | 2 +- .../schematics/tasks/repo-init/init-task.ts | 8 +++----- .../schematics/testing/schematic-test-runner.ts | 6 +++--- packages/angular_devkit/schematics/tools/export-ref.ts | 6 +++--- .../schematics/tools/fallback-engine-host.ts | 2 +- .../schematics/tools/file-system-engine-host-base.ts | 8 +++++--- .../schematics/tools/file-system-engine-host.ts | 5 ++++- .../schematics/tools/node-module-engine-host.ts | 2 +- .../schematics/tools/node-modules-test-engine-host.ts | 6 +++--- 9 files changed, 24 insertions(+), 21 deletions(-) diff --git a/goldens/public-api/angular_devkit/schematics/tools/index.api.md b/goldens/public-api/angular_devkit/schematics/tools/index.api.md index 6a32d88e9ec0..c93e3ec27762 100644 --- a/goldens/public-api/angular_devkit/schematics/tools/index.api.md +++ b/goldens/public-api/angular_devkit/schematics/tools/index.api.md @@ -203,7 +203,7 @@ export class NodeModulesTestEngineHost extends NodeModulesEngineHost { // (undocumented) protected _resolveCollectionPath(name: string, requester?: string): string; // (undocumented) - get tasks(): TaskConfiguration<{}>[]; + get tasks(): TaskConfiguration[]; // (undocumented) transformContext(context: FileSystemSchematicContext): FileSystemSchematicContext; } diff --git a/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts b/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts index ed875df2bf69..8e8e8498704b 100644 --- a/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts +++ b/packages/angular_devkit/schematics/tasks/repo-init/init-task.ts @@ -15,12 +15,10 @@ export interface CommitOptions { email?: string; } -export class RepositoryInitializerTask - implements TaskConfigurationGenerator -{ +export class RepositoryInitializerTask implements TaskConfigurationGenerator { constructor( - public workingDirectory?: string, - public commitOptions?: CommitOptions, + public workingDirectory?: string | undefined, + public commitOptions?: CommitOptions | undefined, ) {} toConfiguration(): TaskConfiguration { diff --git a/packages/angular_devkit/schematics/testing/schematic-test-runner.ts b/packages/angular_devkit/schematics/testing/schematic-test-runner.ts index a37a2ed6921b..5ebff7108253 100644 --- a/packages/angular_devkit/schematics/testing/schematic-test-runner.ts +++ b/packages/angular_devkit/schematics/testing/schematic-test-runner.ts @@ -25,7 +25,7 @@ import { BuiltinTaskExecutor } from '../tasks/node'; import { NodeModulesTestEngineHost, validateOptionsWithSchema } from '../tools'; export class UnitTestTree extends DelegateTree { - get files() { + get files(): string[] { const result: string[] = []; this.visit((path) => result.push(path)); @@ -74,7 +74,7 @@ export class SchematicTestRunner { this._collection = this._engine.createCollection(this._collectionName); } - get engine() { + get engine(): SchematicEngine<{}, {}> { return this._engine; } get logger(): logging.Logger { @@ -84,7 +84,7 @@ export class SchematicTestRunner { return [...this._engineHost.tasks]; } - registerCollection(collectionName: string, collectionPath: string) { + registerCollection(collectionName: string, collectionPath: string): void { this._engineHost.registerCollection(collectionName, collectionPath); } diff --git a/packages/angular_devkit/schematics/tools/export-ref.ts b/packages/angular_devkit/schematics/tools/export-ref.ts index aa5a71f10af7..8c9c459382f2 100644 --- a/packages/angular_devkit/schematics/tools/export-ref.ts +++ b/packages/angular_devkit/schematics/tools/export-ref.ts @@ -26,13 +26,13 @@ export class ExportStringRef { } } - get ref() { + get ref(): T | undefined { return this._ref; } - get module() { + get module(): string { return this._module; } - get path() { + get path(): string { return this._path; } } diff --git a/packages/angular_devkit/schematics/tools/fallback-engine-host.ts b/packages/angular_devkit/schematics/tools/fallback-engine-host.ts index 97bfbba5c26d..f8790f00784d 100644 --- a/packages/angular_devkit/schematics/tools/fallback-engine-host.ts +++ b/packages/angular_devkit/schematics/tools/fallback-engine-host.ts @@ -41,7 +41,7 @@ export class FallbackEngineHost implements EngineHost<{}, {}> { addHost( host: EngineHost, - ) { + ): void { this._hosts.push(host); } diff --git a/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts b/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts index 7ce607a50431..cf788851b14c 100644 --- a/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts +++ b/packages/angular_devkit/schematics/tools/file-system-engine-host-base.ts @@ -119,7 +119,7 @@ export abstract class FileSystemEngineHostBase implements FileSystemEngineHost { private _contextTransforms: ContextTransform[] = []; private _taskFactories = new Map Observable>(); - listSchematicNames(collection: FileSystemCollectionDesc, includeHidden?: boolean) { + listSchematicNames(collection: FileSystemCollectionDesc, includeHidden?: boolean): string[] { const schematics: string[] = []; for (const key of Object.keys(collection.schematics)) { const schematic = collection.schematics[key]; @@ -140,11 +140,13 @@ export abstract class FileSystemEngineHostBase implements FileSystemEngineHost { return schematics; } - registerOptionsTransform(t: OptionTransform) { + registerOptionsTransform( + t: OptionTransform, + ): void { this._transforms.push(t); } - registerContextTransform(t: ContextTransform) { + registerContextTransform(t: ContextTransform): void { this._contextTransforms.push(t); } diff --git a/packages/angular_devkit/schematics/tools/file-system-engine-host.ts b/packages/angular_devkit/schematics/tools/file-system-engine-host.ts index bd24f8808d77..67b98276528a 100644 --- a/packages/angular_devkit/schematics/tools/file-system-engine-host.ts +++ b/packages/angular_devkit/schematics/tools/file-system-engine-host.ts @@ -48,7 +48,10 @@ export class FileSystemEngineHost extends FileSystemEngineHostBase { throw new CollectionCannotBeResolvedException(name); } - protected _resolveReferenceString(refString: string, parentPath: string) { + protected _resolveReferenceString( + refString: string, + parentPath: string, + ): { ref: RuleFactory<{}>; path: string } | null { // Use the same kind of export strings as NodeModule. const ref = new ExportStringRef>(refString, parentPath); if (!ref.ref) { 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 0bc269840c18..c7f72aa68650 100644 --- a/packages/angular_devkit/schematics/tools/node-module-engine-host.ts +++ b/packages/angular_devkit/schematics/tools/node-module-engine-host.ts @@ -106,7 +106,7 @@ export class NodeModulesEngineHost extends FileSystemEngineHostBase { refString: string, parentPath: string, collectionDescription?: FileSystemCollectionDesc, - ) { + ): { ref: RuleFactory<{}>; path: string } | null { const ref = new ExportStringRef>(refString, parentPath); if (!ref.ref) { return null; diff --git a/packages/angular_devkit/schematics/tools/node-modules-test-engine-host.ts b/packages/angular_devkit/schematics/tools/node-modules-test-engine-host.ts index c15fd18d12a9..701e99af781f 100644 --- a/packages/angular_devkit/schematics/tools/node-modules-test-engine-host.ts +++ b/packages/angular_devkit/schematics/tools/node-modules-test-engine-host.ts @@ -18,15 +18,15 @@ export class NodeModulesTestEngineHost extends NodeModulesEngineHost { #collections = new Map(); #tasks: TaskConfiguration[] = []; - get tasks() { + get tasks(): TaskConfiguration[] { return this.#tasks; } - clearTasks() { + clearTasks(): void { this.#tasks = []; } - registerCollection(name: string, path: string) { + registerCollection(name: string, path: string): void { this.#collections.set(name, path); } From 52ace04a7ca1c102fdf1addf5ab6fe400c0eab0e Mon Sep 17 00:00:00 2001 From: Michael Karcher Date: Fri, 12 Dec 2025 11:18:40 +0100 Subject: [PATCH 1981/2162] fix(@schematics/angular): improve VS Code background compilation start/end detection The task is initially "active", and should be considered "completed" when the bundle generation result is displayed, even if the generation failed. The task should only switch back to "active" when changes are detected, not on any arbitrary output by `ng watch`. This change enables proper handling of re-attaching the debugger while the background task is already running. Fixes #32111 --- .../workspace/files/__dot__vscode/tasks.json.template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template b/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template index f3125a95b776..96e9e1c26833 100644 --- a/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template +++ b/packages/schematics/angular/workspace/files/__dot__vscode/tasks.json.template @@ -12,10 +12,10 @@ "background": { "activeOnStart": true, "beginsPattern": { - "regexp": "(.*?)" + "regexp": "Changes detected" }, "endsPattern": { - "regexp": "bundle generation complete" + "regexp": "bundle generation (complete|failed)" } } } @@ -30,10 +30,10 @@ "background": { "activeOnStart": true, "beginsPattern": { - "regexp": "(.*?)" + "regexp": "Changes detected" }, "endsPattern": { - "regexp": "bundle generation complete" + "regexp": "bundle generation (complete|failed)" } } } From 3a00a55f6ba740ca9e208f8eded5600bd7671ce8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 14:34:58 -0500 Subject: [PATCH 1982/2162] refactor(@angular-devkit/architect-cli): remove unused progress bar functionality The progress bar functionality within the Angular builders was not utilized, making the 'progress' dependency unnecessary. Furthermore, the 'progress' dependency has not been updated in approximately 7 years, indicating it may no longer be actively maintained. --- .../angular_devkit/architect_cli/BUILD.bazel | 4 +- .../architect_cli/bin/architect.ts | 55 +--------- .../angular_devkit/architect_cli/package.json | 4 - .../architect_cli/src/progress.ts | 102 ------------------ pnpm-lock.yaml | 7 -- 5 files changed, 2 insertions(+), 170 deletions(-) delete mode 100644 packages/angular_devkit/architect_cli/src/progress.ts diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 463753173ad3..f07822157ac8 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -15,15 +15,13 @@ ts_project( name = "architect_cli", srcs = [ "bin/architect.ts", - ] + glob(["src/**/*.ts"]), + ], deps = [ ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", ":node_modules/ansi-colors", - ":node_modules/progress", ":node_modules/yargs-parser", "//:node_modules/@types/node", - "//:node_modules/@types/progress", "//:node_modules/@types/yargs-parser", ], ) diff --git a/packages/angular_devkit/architect_cli/bin/architect.ts b/packages/angular_devkit/architect_cli/bin/architect.ts index 8cba7b4c11a7..e2c8a6731f29 100644 --- a/packages/angular_devkit/architect_cli/bin/architect.ts +++ b/packages/angular_devkit/architect_cli/bin/architect.ts @@ -7,7 +7,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Architect, BuilderInfo, BuilderProgressState, Target } from '@angular-devkit/architect'; +import { Architect } from '@angular-devkit/architect'; import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node'; import { JsonValue, json, logging, schema, tags, workspaces } from '@angular-devkit/core'; import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node'; @@ -15,7 +15,6 @@ import * as ansiColors from 'ansi-colors'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; import yargsParser, { camelCase, decamelize } from 'yargs-parser'; -import { MultiProgressBar } from '../src/progress'; function findUp(names: string | string[], from: string) { if (!Array.isArray(names)) { @@ -59,16 +58,6 @@ function usage(logger: logging.Logger, exitCode = 0): never { return process.exit(exitCode); } -function _targetStringFromTarget({ project, target, configuration }: Target) { - return `${project}:${target}${configuration !== undefined ? ':' + configuration : ''}`; -} - -interface BarInfo { - status?: string; - builder: BuilderInfo; - target?: Target; -} - // Create a separate instance to prevent unintended global changes to the color configuration const colors = ansiColors.create(); @@ -106,47 +95,6 @@ async function _executeTarget( } const run = await architect.scheduleTarget(targetSpec, camelCasedOptions, { logger }); - const bars = new MultiProgressBar(':name :bar (:current/:total) :status'); - - run.progress.subscribe((update) => { - const data = bars.get(update.id) || { - id: update.id, - builder: update.builder, - target: update.target, - status: update.status || '', - name: ( - (update.target ? _targetStringFromTarget(update.target) : update.builder.name) + - ' '.repeat(80) - ).substring(0, 40), - }; - - if (update.status !== undefined) { - data.status = update.status; - } - - switch (update.state) { - case BuilderProgressState.Error: - data.status = 'Error: ' + update.error; - bars.update(update.id, data); - break; - - case BuilderProgressState.Stopped: - data.status = 'Done.'; - bars.complete(update.id); - bars.update(update.id, data, update.total, update.total); - break; - - case BuilderProgressState.Waiting: - bars.update(update.id, data); - break; - - case BuilderProgressState.Running: - bars.update(update.id, data, update.current, update.total); - break; - } - - bars.render(); - }); // Wait for full completion of the builder. try { @@ -163,7 +111,6 @@ async function _executeTarget( logs.splice(0); await run.stop(); - bars.terminate(); return result.success ? 0 : 1; } catch (err) { diff --git a/packages/angular_devkit/architect_cli/package.json b/packages/angular_devkit/architect_cli/package.json index 4d9174dd8716..02fbcb57c4cb 100644 --- a/packages/angular_devkit/architect_cli/package.json +++ b/packages/angular_devkit/architect_cli/package.json @@ -17,10 +17,6 @@ "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "ansi-colors": "4.1.3", - "progress": "2.0.3", "yargs-parser": "22.0.0" - }, - "devDependencies": { - "@types/progress": "2.0.7" } } diff --git a/packages/angular_devkit/architect_cli/src/progress.ts b/packages/angular_devkit/architect_cli/src/progress.ts deleted file mode 100644 index e8c74353eb4b..000000000000 --- a/packages/angular_devkit/architect_cli/src/progress.ts +++ /dev/null @@ -1,102 +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 * as readline from 'node:readline'; -import ProgressBar from 'progress'; - -export class MultiProgressBar { - private _bars = new Map(); - - constructor( - private _status: string, - private _stream = process.stderr, - ) {} - private _add(id: Key, data: T): { data: T; bar: ProgressBar } { - const width = Math.min(80, this._stream.columns || 80); - const value = { - data, - bar: new ProgressBar(this._status, { - renderThrottle: 0, - clear: true, - total: 1, - width: width, - complete: '#', - incomplete: '.', - stream: this._stream, - }), - }; - this._bars.set(id, value); - readline.moveCursor(this._stream, 0, 1); - - return value; - } - - complete(id: Key) { - const maybeBar = this._bars.get(id); - if (maybeBar) { - maybeBar.bar.complete = true; - } - } - - add(id: Key, data: T) { - this._add(id, data); - } - - get(key: Key): T | undefined { - const maybeValue = this._bars.get(key); - - return maybeValue && maybeValue.data; - } - has(key: Key) { - return this._bars.has(key); - } - update(key: Key, data: T, current?: number, total?: number) { - let maybeBar = this._bars.get(key); - - if (!maybeBar) { - maybeBar = this._add(key, data); - } - - maybeBar.data = data; - if (total !== undefined) { - maybeBar.bar.total = total; - } - if (current !== undefined) { - maybeBar.bar.curr = Math.max(0, Math.min(current, maybeBar.bar.total)); - } - } - - render(max = Infinity, sort?: (a: T, b: T) => number) { - const stream = this._stream; - - readline.moveCursor(stream, 0, -this._bars.size); - readline.cursorTo(stream, 0); - - let values: Iterable<{ data: T; bar: ProgressBar }> = this._bars.values(); - if (sort) { - values = [...values].sort((a, b) => sort(a.data, b.data)); - } - - for (const { data, bar } of values) { - if (max-- == 0) { - return; - } - - bar.render(data); - readline.moveCursor(stream, 0, 1); - readline.cursorTo(stream, 0); - } - } - - terminate() { - for (const { bar } of this._bars.values()) { - bar.terminate(); - } - this._bars.clear(); - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91e9a39bc216..caa624f8e36a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -571,16 +571,9 @@ importers: ansi-colors: specifier: 4.1.3 version: 4.1.3 - progress: - specifier: 2.0.3 - version: 2.0.3 yargs-parser: specifier: 22.0.0 version: 22.0.0 - devDependencies: - '@types/progress': - specifier: 2.0.7 - version: 2.0.7 packages/angular_devkit/build_angular: dependencies: From 2d56a319d8d45f36d9e5d958cbbd96e195c2c15e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:17:08 +0000 Subject: [PATCH 1983/2162] fix(@angular/ssr): skip SSR processing for well-known non-Angular URLs like favicon.ico Skip processing of well known non Angular files. Closes: #32125 --- packages/angular/ssr/src/app.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index ee14f8a26105..83b18a25ef72 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -27,6 +27,17 @@ import { AngularBootstrap, renderAngular } from './utils/ng'; import { promiseWithAbort } from './utils/promise'; import { buildPathWithParams, joinUrlParts, stripLeadingSlash } from './utils/url'; +/** + * A set of well-known URLs that are not handled by Angular. + * + * These URLs are typically for static assets or endpoints that should + * bypass the Angular routing and rendering process. + */ +const WELL_KNOWN_NON_ANGULAR_URLS: ReadonlySet = new Set([ + 'favicon.ico', + '.well-known/appspecific/com.chrome.devtools.json', +]); + /** * Maximum number of critical CSS entries the cache can store. * This value determines the capacity of the LRU (Least Recently Used) cache, which stores critical CSS for pages. @@ -166,6 +177,10 @@ export class AngularServerApp { */ async handle(request: Request, requestContext?: unknown): Promise { const url = new URL(request.url); + if (WELL_KNOWN_NON_ANGULAR_URLS.has(url.pathname)) { + return null; + } + this.router ??= await ServerRouter.from(this.manifest, url); const matchedRoute = this.router.match(url); From 9744af1f82a8e9c2816adf636e4e8a1a8be06c60 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:26:36 +0000 Subject: [PATCH 1984/2162] fix(@angular/build): remove LmdbCacheStore export from private API This is needed as otherwise LMDB would be considered as a non optional dependency. Closes #32110 --- packages/angular/build/src/private.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/angular/build/src/private.ts b/packages/angular/build/src/private.ts index 175dd39530ae..c55d7482bb2c 100644 --- a/packages/angular/build/src/private.ts +++ b/packages/angular/build/src/private.ts @@ -36,7 +36,6 @@ export { SassWorkerImplementation } from './tools/sass/sass-service'; export { SourceFileCache } from './tools/esbuild/angular/source-file-cache'; export { Cache } from './tools/esbuild/cache'; -export { LmdbCacheStore } from './tools/esbuild/lmdb-cache-store'; export { createJitResourceTransformer } from './tools/angular/transformers/jit-resource-transformer'; export { JavaScriptTransformer } from './tools/esbuild/javascript-transformer'; From eb48d71782084c12c0e950ddcd923920dde001ae Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:05:43 -0500 Subject: [PATCH 1985/2162] refactor(@angular-devkit/schematics-cli): migrate argument parsing to node:util.parseArgs This commit migrates the command-line argument parsing in the `@angular-devkit/schematics-cli` package from the external `yargs-parser` library to Node.js's native `node:util.parseArgs` API. The updated parsing logic includes explicit definition of known CLI options, correct handling of camel-casing for schematic options, processing of `--no-` prefixes, and support for collecting multiple values for a single option. --- .../angular_devkit/schematics_cli/BUILD.bazel | 2 - .../schematics_cli/bin/schematics.ts | 135 +++++++++++------- .../schematics_cli/package.json | 3 +- pnpm-lock.yaml | 3 - 4 files changed, 86 insertions(+), 57 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index f6f26dd249fb..2f0b8c826de1 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -49,9 +49,7 @@ ts_project( ":node_modules/@angular-devkit/schematics", ":node_modules/@inquirer/prompts", ":node_modules/ansi-colors", - ":node_modules/yargs-parser", "//:node_modules/@types/node", - "//:node_modules/@types/yargs-parser", ], ) diff --git a/packages/angular_devkit/schematics_cli/bin/schematics.ts b/packages/angular_devkit/schematics_cli/bin/schematics.ts index 0905f347d4cc..220a6fd6b82c 100644 --- a/packages/angular_devkit/schematics_cli/bin/schematics.ts +++ b/packages/angular_devkit/schematics_cli/bin/schematics.ts @@ -9,12 +9,12 @@ import { JsonValue, logging, schema } from '@angular-devkit/core'; import { ProcessOutput, createConsoleLogger } from '@angular-devkit/core/node'; -import { UnsuccessfulWorkflowExecution } from '@angular-devkit/schematics'; +import { UnsuccessfulWorkflowExecution, strings } from '@angular-devkit/schematics'; import { NodeWorkflow } from '@angular-devkit/schematics/tools'; import ansiColors from 'ansi-colors'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; -import yargsParser, { camelCase, decamelize } from 'yargs-parser'; +import { parseArgs } from 'node:util'; /** * Parse the name of schematic passed in argument, and return a {collection, schematic} named @@ -221,7 +221,7 @@ export async function main({ stdout = process.stdout, stderr = process.stderr, }: MainOptions): Promise<0 | 1> { - const { cliOptions, schematicOptions, _ } = parseArgs(args); + const { cliOptions, schematicOptions, _ } = parseOptions(args); // Create a separate instance to prevent unintended global changes to the color configuration const colors = ansiColors.create(); @@ -249,10 +249,9 @@ export async function main({ const isLocalCollection = collectionName.startsWith('.') || collectionName.startsWith('/'); /** Gather the arguments for later use. */ - const debugPresent = cliOptions.debug !== null; - const debug = debugPresent ? !!cliOptions.debug : isLocalCollection; - const dryRunPresent = cliOptions['dry-run'] !== null; - const dryRun = dryRunPresent ? !!cliOptions['dry-run'] : debug; + const debug = cliOptions.debug ?? isLocalCollection; + const dryRunPresent = cliOptions['dry-run'] != null; + const dryRun = cliOptions['dry-run'] ?? debug; const force = !!cliOptions.force; const allowPrivate = !!cliOptions['allow-private']; @@ -446,69 +445,105 @@ Any additional option is passed to the Schematics depending on its schema. `; } -/** Parse the command line. */ -const booleanArgs = [ - 'allow-private', - 'debug', - 'dry-run', - 'force', - 'help', - 'list-schematics', - 'verbose', - 'interactive', -] as const; - -type ElementType> = - T extends ReadonlyArray ? ElementType : never; +const CLI_OPTION_DEFINITIONS = { + 'allow-private': { type: 'boolean' }, + 'debug': { type: 'boolean' }, + 'dry-run': { type: 'boolean' }, + 'force': { type: 'boolean' }, + 'help': { type: 'boolean' }, + 'list-schematics': { type: 'boolean' }, + 'verbose': { type: 'boolean' }, + 'interactive': { type: 'boolean', default: true }, +} as const; interface Options { _: string[]; schematicOptions: Record; - cliOptions: Partial, boolean | null>>; + cliOptions: Partial>; } /** Parse the command line. */ -function parseArgs(args: string[]): Options { - const { _, ...options } = yargsParser(args, { - boolean: booleanArgs as unknown as string[], - default: { - 'interactive': true, - 'debug': null, - 'dry-run': null, - }, - configuration: { - 'dot-notation': false, - 'boolean-negation': true, - 'strip-aliased': true, - 'camel-case-expansion': false, - }, +function parseOptions(args: string[]): Options { + const { values, tokens } = parseArgs({ + args, + strict: false, + tokens: true, + allowPositionals: true, + allowNegative: true, + options: CLI_OPTION_DEFINITIONS, }); - // Camelize options as yargs will return the object in kebab-case when camel casing is disabled. const schematicOptions: Options['schematicOptions'] = {}; - const cliOptions: Options['cliOptions'] = {}; + const positionals: string[] = []; + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; - const isCliOptions = ( - key: ElementType | string, - ): key is ElementType => - booleanArgs.includes(key as ElementType); + if (token.kind === 'positional') { + positionals.push(token.value); + continue; + } + + if (token.kind !== 'option') { + continue; + } - for (const [key, value] of Object.entries(options)) { - if (/[A-Z]/.test(key)) { - throw new Error(`Unknown argument ${key}. Did you mean ${decamelize(key)}?`); + const name = token.name; + let value: string | number | boolean = token.value ?? true; + + // `parseArgs` already handled known boolean args and their --no- forms. + // Only process options not in CLI_OPTION_DEFINITIONS here. + if (name in CLI_OPTION_DEFINITIONS) { + continue; + } + + if (/[A-Z]/.test(name)) { + throw new Error( + `Unknown argument ${name}. Did you mean ${strings.decamelize(name).replaceAll('_', '-')}?`, + ); } - if (isCliOptions(key)) { - cliOptions[key] = value; + // Handle --no-flag for unknown options, treating it as false + if (name.startsWith('no-')) { + const realName = name.slice(3); + schematicOptions[strings.camelize(realName)] = false; + continue; + } + + // Handle value for unknown options + if (token.inlineValue === undefined) { + // Look ahead + const nextToken = tokens[i + 1]; + if (nextToken?.kind === 'positional') { + value = nextToken.value; + i++; // Consume next token + } else { + value = true; // Treat as boolean if no value follows + } + } + + // Type inference for numbers + if (typeof value === 'string' && !isNaN(Number(value))) { + value = Number(value); + } + + const camelName = strings.camelize(name); + if (Object.prototype.hasOwnProperty.call(schematicOptions, camelName)) { + const existing = schematicOptions[camelName]; + if (Array.isArray(existing)) { + existing.push(value); + } else { + schematicOptions[camelName] = [existing, value]; + } } else { - schematicOptions[camelCase(key)] = value; + schematicOptions[camelName] = value; } } return { - _: _.map((v) => v.toString()), + _: positionals, schematicOptions, - cliOptions, + cliOptions: values as Options['cliOptions'], }; } diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index c48815b3cb52..18be739af1b3 100644 --- a/packages/angular_devkit/schematics_cli/package.json +++ b/packages/angular_devkit/schematics_cli/package.json @@ -19,7 +19,6 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", - "ansi-colors": "4.1.3", - "yargs-parser": "22.0.0" + "ansi-colors": "4.1.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index caa624f8e36a..6df31e7090c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -839,9 +839,6 @@ importers: ansi-colors: specifier: 4.1.3 version: 4.1.3 - yargs-parser: - specifier: 22.0.0 - version: 22.0.0 packages/ngtools/webpack: devDependencies: From f1ab1d3385a64dac6e73055bccf4ddbeed0ce4fd Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Dec 2025 09:47:35 -0500 Subject: [PATCH 1986/2162] refactor(@angular-devkit/architect-cli): replace ansi-colors with node:util.styleText This commit removes the external dependency 'ansi-colors' from the @angular-devkit/architect-cli package and replaces its usage with the native 'node:util.styleText' function for console output styling. This change reduces the project's dependency footprint and leverages built-in Node.js functionality. --- .../angular_devkit/architect_cli/BUILD.bazel | 1 - .../architect_cli/bin/architect.ts | 17 +++++++---------- .../angular_devkit/architect_cli/package.json | 1 - pnpm-lock.yaml | 3 --- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index f07822157ac8..a3287048ad48 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -19,7 +19,6 @@ ts_project( deps = [ ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", - ":node_modules/ansi-colors", ":node_modules/yargs-parser", "//:node_modules/@types/node", "//:node_modules/@types/yargs-parser", diff --git a/packages/angular_devkit/architect_cli/bin/architect.ts b/packages/angular_devkit/architect_cli/bin/architect.ts index e2c8a6731f29..2ceed489fa5f 100644 --- a/packages/angular_devkit/architect_cli/bin/architect.ts +++ b/packages/angular_devkit/architect_cli/bin/architect.ts @@ -11,9 +11,9 @@ import { Architect } from '@angular-devkit/architect'; import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node'; import { JsonValue, json, logging, schema, tags, workspaces } from '@angular-devkit/core'; import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node'; -import * as ansiColors from 'ansi-colors'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; +import { styleText } from 'node:util'; import yargsParser, { camelCase, decamelize } from 'yargs-parser'; function findUp(names: string | string[], from: string) { @@ -58,9 +58,6 @@ function usage(logger: logging.Logger, exitCode = 0): never { return process.exit(exitCode); } -// Create a separate instance to prevent unintended global changes to the color configuration -const colors = ansiColors.create(); - async function _executeTarget( parentLogger: logging.Logger, workspace: workspaces.WorkspaceDefinition, @@ -100,9 +97,9 @@ async function _executeTarget( try { const result = await run.lastOutput; if (result.success) { - parentLogger.info(colors.green('SUCCESS')); + parentLogger.info(styleText(['green'], 'SUCCESS')); } else { - parentLogger.info(colors.red('FAILURE')); + parentLogger.info(styleText(['red'], 'FAILURE')); } parentLogger.info('Result: ' + JSON.stringify({ ...result, info: undefined }, null, 4)); @@ -114,7 +111,7 @@ async function _executeTarget( return result.success ? 0 : 1; } catch (err) { - parentLogger.info(colors.red('ERROR')); + parentLogger.info(styleText(['red'], 'ERROR')); parentLogger.info('\nLogs:'); logs.forEach((l) => parentLogger.next(l)); @@ -141,9 +138,9 @@ async function main(args: string[]): Promise { const logger = createConsoleLogger(argv['verbose'], process.stdout, process.stderr, { info: (s) => s, debug: (s) => s, - warn: (s) => colors.bold.yellow(s), - error: (s) => colors.bold.red(s), - fatal: (s) => colors.bold.red(s), + warn: (s) => styleText(['yellow', 'bold'], s), + error: (s) => styleText(['red', 'bold'], s), + fatal: (s) => styleText(['red', 'bold'], s), }); // Check the target. diff --git a/packages/angular_devkit/architect_cli/package.json b/packages/angular_devkit/architect_cli/package.json index 02fbcb57c4cb..9017a667dfff 100644 --- a/packages/angular_devkit/architect_cli/package.json +++ b/packages/angular_devkit/architect_cli/package.json @@ -16,7 +16,6 @@ "dependencies": { "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", - "ansi-colors": "4.1.3", "yargs-parser": "22.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6df31e7090c6..c6f5f408872a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -568,9 +568,6 @@ importers: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER version: link:../core - ansi-colors: - specifier: 4.1.3 - version: 4.1.3 yargs-parser: specifier: 22.0.0 version: 22.0.0 From 1b12967541228c893fab2b4c36df4747daea8eae Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:33:36 -0500 Subject: [PATCH 1987/2162] refactor(@angular-devkit/build-angular): remove redundant spinner coloring This commit refactors the usage of the `Spinner` class in `@angular-devkit/build-angular` builders by removing explicit `colors.redBright` calls when invoking `spinner.fail()`. The `Spinner.fail()` method already applies red bright coloring internally. This change centralizes the styling logic within the `Spinner` class and prevents redundant coloring or unnecessary dependency usage at the call site. --- .../angular_devkit/build_angular/src/builders/browser/index.ts | 3 +-- .../angular_devkit/build_angular/src/builders/server/index.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser/index.ts b/packages/angular_devkit/build_angular/src/builders/browser/index.ts index 1052e2165587..9c1576251d74 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/index.ts @@ -43,7 +43,6 @@ import { normalizeOptimization, urlJoin, } from '../../utils'; -import { colors } from '../../utils/color'; import { copyAssets } from '../../utils/copy-assets'; import { assertIsError } from '../../utils/error'; import { i18nInlineEmittedFiles } from '../../utils/i18n-inlining'; @@ -280,7 +279,7 @@ export function buildWebpackBrowser( ); spinner.succeed('Copying assets complete.'); } catch (err) { - spinner.fail(colors.redBright('Copying of assets failed.')); + spinner.fail('Copying of assets failed.'); assertIsError(err); return { diff --git a/packages/angular_devkit/build_angular/src/builders/server/index.ts b/packages/angular_devkit/build_angular/src/builders/server/index.ts index 5a246178d10c..4903fe8e2403 100644 --- a/packages/angular_devkit/build_angular/src/builders/server/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/server/index.ts @@ -28,7 +28,6 @@ import { deleteOutputDir, normalizeAssetPatterns, } from '../../utils'; -import { colors } from '../../utils/color'; import { copyAssets } from '../../utils/copy-assets'; import { assertIsError } from '../../utils/error'; import { i18nInlineEmittedFiles } from '../../utils/i18n-inlining'; @@ -121,7 +120,7 @@ export function execute( ); spinner.succeed('Copying assets complete.'); } catch (err) { - spinner.fail(colors.redBright('Copying of assets failed.')); + spinner.fail('Copying of assets failed.'); assertIsError(err); return { From f7a435425ac497f981836a4fd33f33a5d614e139 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:14:29 -0500 Subject: [PATCH 1988/2162] refactor(@angular-devkit/schematics-cli): replace ansi-colors with node:util.styleText This commit removes the external dependency 'ansi-colors' from the `@angular-devkit/schematics-cli` package and replaces its usage with the native 'node:util.styleText' function for console output styling. This change reduces the project's dependency footprint and leverages built-in Node.js functionality. --- .../angular_devkit/schematics_cli/BUILD.bazel | 1 - .../schematics_cli/bin/schematics.ts | 20 ++++++++----------- .../schematics_cli/package.json | 3 +-- pnpm-lock.yaml | 3 --- 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index 2f0b8c826de1..9952e8cf0857 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -48,7 +48,6 @@ ts_project( ":node_modules/@angular-devkit/core", ":node_modules/@angular-devkit/schematics", ":node_modules/@inquirer/prompts", - ":node_modules/ansi-colors", "//:node_modules/@types/node", ], ) diff --git a/packages/angular_devkit/schematics_cli/bin/schematics.ts b/packages/angular_devkit/schematics_cli/bin/schematics.ts index 220a6fd6b82c..8dc64ff5eae0 100644 --- a/packages/angular_devkit/schematics_cli/bin/schematics.ts +++ b/packages/angular_devkit/schematics_cli/bin/schematics.ts @@ -11,10 +11,9 @@ import { JsonValue, logging, schema } from '@angular-devkit/core'; import { ProcessOutput, createConsoleLogger } from '@angular-devkit/core/node'; import { UnsuccessfulWorkflowExecution, strings } from '@angular-devkit/schematics'; import { NodeWorkflow } from '@angular-devkit/schematics/tools'; -import ansiColors from 'ansi-colors'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; -import { parseArgs } from 'node:util'; +import { parseArgs, styleText } from 'node:util'; /** * Parse the name of schematic passed in argument, and return a {collection, schematic} named @@ -223,16 +222,13 @@ export async function main({ }: MainOptions): Promise<0 | 1> { const { cliOptions, schematicOptions, _ } = parseOptions(args); - // Create a separate instance to prevent unintended global changes to the color configuration - const colors = ansiColors.create(); - /** Create the DevKit Logger used through the CLI. */ const logger = createConsoleLogger(!!cliOptions.verbose, stdout, stderr, { info: (s) => s, debug: (s) => s, - warn: (s) => colors.bold.yellow(s), - error: (s) => colors.bold.red(s), - fatal: (s) => colors.bold.red(s), + warn: (s) => styleText(['bold', 'yellow'], s), + error: (s) => styleText(['bold', 'red'], s), + fatal: (s) => styleText(['bold', 'red'], s), }); if (cliOptions.help) { @@ -315,21 +311,21 @@ export async function main({ case 'update': loggingQueue.push( // TODO: `as unknown` was necessary during TS 5.9 update. Figure out a long-term solution. - `${colors.cyan('UPDATE')} ${eventPath} (${(event.content as unknown as Buffer).length} bytes)`, + `${styleText(['cyan'], 'UPDATE')} ${eventPath} (${(event.content as unknown as Buffer).length} bytes)`, ); break; case 'create': loggingQueue.push( // TODO: `as unknown` was necessary during TS 5.9 update. Figure out a long-term solution. - `${colors.green('CREATE')} ${eventPath} (${(event.content as unknown as Buffer).length} bytes)`, + `${styleText(['green'], 'CREATE')} ${eventPath} (${(event.content as unknown as Buffer).length} bytes)`, ); break; case 'delete': - loggingQueue.push(`${colors.yellow('DELETE')} ${eventPath}`); + loggingQueue.push(`${styleText(['yellow'], 'DELETE')} ${eventPath}`); break; case 'rename': loggingQueue.push( - `${colors.blue('RENAME')} ${eventPath} => ${removeLeadingSlash(event.to)}`, + `${styleText(['blue'], 'RENAME')} ${eventPath} => ${removeLeadingSlash(event.to)}`, ); break; } diff --git a/packages/angular_devkit/schematics_cli/package.json b/packages/angular_devkit/schematics_cli/package.json index 18be739af1b3..0b49edc35c55 100644 --- a/packages/angular_devkit/schematics_cli/package.json +++ b/packages/angular_devkit/schematics_cli/package.json @@ -18,7 +18,6 @@ "dependencies": { "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", - "@inquirer/prompts": "7.10.1", - "ansi-colors": "4.1.3" + "@inquirer/prompts": "7.10.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6f5f408872a..78faf972b74e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -833,9 +833,6 @@ importers: '@inquirer/prompts': specifier: 7.10.1 version: 7.10.1(@types/node@24.10.2) - ansi-colors: - specifier: 4.1.3 - version: 4.1.3 packages/ngtools/webpack: devDependencies: From b103f3b2d363e38474050de3fefb05042b834e4a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Dec 2025 19:12:11 -0500 Subject: [PATCH 1989/2162] refactor(@angular/cli): standardize update command git utility execution All `git` commands now use `execFileSync` instead of `execSync` to prevent shell injection vulnerabilities and provide more predictable execution. `checkCleanGit` now utilizes `git status --porcelain -z` for NUL-terminated output, ensuring correct handling of filenames with spaces or special characters, and preventing potential path trimming bugs. An `execGit` helper function was introduced to reduce code duplication and standardize `git` command execution options. `hasChangesToCommit` now gracefully handles non-Git repositories by returning `false` instead of throwing. --- .../cli/src/commands/update/utilities/git.ts | 85 +++++++++++++------ 1 file changed, 59 insertions(+), 26 deletions(-) diff --git a/packages/angular/cli/src/commands/update/utilities/git.ts b/packages/angular/cli/src/commands/update/utilities/git.ts index 631e5b9bb99e..0998c9c61fff 100644 --- a/packages/angular/cli/src/commands/update/utilities/git.ts +++ b/packages/angular/cli/src/commands/update/utilities/git.ts @@ -6,33 +6,57 @@ * found in the LICENSE file at https://angular.dev/license */ -import { execSync } from 'node:child_process'; +import { execFileSync } from 'node:child_process'; import * as path from 'node:path'; +/** + * Execute a git command. + * @param args Arguments to pass to the git command. + * @param input Optional input to pass to the command via stdin. + * @returns The output of the command. + */ +function execGit(args: string[], input?: string): string { + return execFileSync('git', args, { encoding: 'utf8', stdio: 'pipe', input }); +} + /** * Checks if the git repository is clean. - * @param root The root directory of the project. - * @returns True if the repository is clean, false otherwise. + * This function only checks for changes that are within the specified root directory. + * Changes outside the root directory are ignored. + * @param root The root directory of the project to check. + * @returns True if the repository is clean within the root, false otherwise. */ export function checkCleanGit(root: string): boolean { try { - const topLevel = execSync('git rev-parse --show-toplevel', { - encoding: 'utf8', - stdio: 'pipe', - }); - const result = execSync('git status --porcelain', { encoding: 'utf8', stdio: 'pipe' }); - if (result.trim().length === 0) { + const topLevel = execGit(['rev-parse', '--show-toplevel']); + const result = execGit(['status', '--porcelain', '-z']); + if (result.length === 0) { return true; } - // Only files inside the workspace root are relevant - for (const entry of result.split('\n')) { - const relativeEntry = path.relative( - path.resolve(root), - path.resolve(topLevel.trim(), entry.slice(3).trim()), - ); + const entries = result.split('\0'); + for (let i = 0; i < entries.length; i++) { + const line = entries[i]; + if (!line) { + continue; + } + + // Status is the first 2 characters. + // If the status is a rename ('R'), the next entry in the split array is the target path. + let filePath = line.slice(3); + const status = line.slice(0, 2); + if (status[0] === 'R') { + // Check the source path (filePath) + if (isPathInsideRoot(filePath, root, topLevel.trim())) { + return false; + } + + // The next entry is the target path of the rename. + i++; + filePath = entries[i]; + } - if (!relativeEntry.startsWith('..') && !path.isAbsolute(relativeEntry)) { + if (isPathInsideRoot(filePath, root, topLevel.trim())) { return false; } } @@ -41,15 +65,24 @@ export function checkCleanGit(root: string): boolean { return true; } +function isPathInsideRoot(filePath: string, root: string, topLevel: string): boolean { + const relativeEntry = path.relative(path.resolve(root), path.resolve(topLevel, filePath)); + + return !relativeEntry.startsWith('..') && !path.isAbsolute(relativeEntry); +} + /** * Checks if the working directory has pending changes to commit. - * @returns Whether or not the working directory has Git changes to commit. + * @returns Whether or not the working directory has Git changes to commit. Returns false if not in a Git repository. */ export function hasChangesToCommit(): boolean { - // List all modified files not covered by .gitignore. - // If any files are returned, then there must be something to commit. - - return execSync('git ls-files -m -d -o --exclude-standard').toString() !== ''; + try { + // List all modified files not covered by .gitignore. + // If any files are returned, then there must be something to commit. + return execGit(['ls-files', '-m', '-d', '-o', '--exclude-standard']).trim() !== ''; + } catch { + return false; + } } /** @@ -58,19 +91,19 @@ export function hasChangesToCommit(): boolean { */ export function createCommit(message: string) { // Stage entire working tree for commit. - execSync('git add -A', { encoding: 'utf8', stdio: 'pipe' }); + execGit(['add', '-A']); // Commit with the message passed via stdin to avoid bash escaping issues. - execSync('git commit --no-verify -F -', { encoding: 'utf8', stdio: 'pipe', input: message }); + execGit(['commit', '--no-verify', '-F', '-'], message); } /** - * Finds the Git SHA hash of the HEAD commit. - * @returns The Git SHA hash of the HEAD commit. Returns null if unable to retrieve the hash. + * Finds the full Git SHA hash of the HEAD commit. + * @returns The full Git SHA hash of the HEAD commit. Returns null if unable to retrieve the hash. */ export function findCurrentGitSha(): string | null { try { - return execSync('git rev-parse HEAD', { encoding: 'utf8', stdio: 'pipe' }).trim(); + return execGit(['rev-parse', 'HEAD']).trim(); } catch { return null; } From ca0d4e655d971d73dc4024a67b0edf40144df1d5 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 16 Dec 2025 14:07:24 +0000 Subject: [PATCH 1990/2162] ci: add 'less' to Renovate's ignored dependencies It seems that the recent less releases are unintended. See: https://github.com/less/less.js/issues/4394 --- renovate.json | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/renovate.json b/renovate.json index d1885952a2bd..4ffcf9c252d6 100644 --- a/renovate.json +++ b/renovate.json @@ -1,25 +1,14 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "baseBranchPatterns": [ - "main", - "21.0.x" - ], - "extends": [ - "github>angular/dev-infra//renovate-presets/default.json5" - ], - "ignorePaths": [ - "tests/legacy-cli/e2e/assets/**", - "tests/schematics/update/packages/**" - ], + "baseBranchPatterns": ["main", "21.0.x"], + "extends": ["github>angular/dev-infra//renovate-presets/default.json5"], + "ignoreDeps": ["less"], + "ignorePaths": ["tests/legacy-cli/e2e/assets/**", "tests/schematics/update/packages/**"], "packageRules": [ { "enabled": false, - "matchFileNames": [ - "tests/legacy-cli/e2e/ng-snapshot/package.json" - ], - "matchBaseBranches": [ - "!main" - ] + "matchFileNames": ["tests/legacy-cli/e2e/ng-snapshot/package.json"], + "matchBaseBranches": ["!main"] }, { "matchFileNames": [ @@ -27,13 +16,11 @@ "packages/angular_devkit/schematics_cli/schematic/files/package.json", "packages/schematics/angular/utility/latest-versions/package.json" ], - "matchPackageNames": [ - "*" - ], + "matchPackageNames": ["*"], "groupName": "schematics dependencies", "lockFileMaintenance": { "enabled": false } } ] -} \ No newline at end of file +} From 13e1881ecda536ddddf3758697aa8ca7bd97f569 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 16 Dec 2025 11:37:30 +0000 Subject: [PATCH 1991/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 8 ++++---- MODULE.bazel.lock | 25 +++++++++++++++---------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 44279b56d3bf..370347dafa49 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,13 +8,13 @@ bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "yq.bzl", version = "0.3.2") bazel_dep(name = "rules_nodejs", version = "6.6.2") bazel_dep(name = "aspect_rules_js", version = "2.8.3") -bazel_dep(name = "aspect_rules_ts", version = "3.7.1") +bazel_dep(name = "aspect_rules_ts", version = "3.8.1") bazel_dep(name = "rules_pkg", version = "1.1.0") bazel_dep(name = "rules_cc", version = "0.2.14") bazel_dep(name = "aspect_bazel_lib", version = "2.22.0") -bazel_dep(name = "bazel_skylib", version = "1.8.2") -bazel_dep(name = "aspect_rules_esbuild", version = "0.24.0") -bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") +bazel_dep(name = "bazel_skylib", version = "1.9.0") +bazel_dep(name = "aspect_rules_esbuild", version = "0.25.0") +bazel_dep(name = "aspect_rules_jasmine", version = "2.0.2") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 1d03a5ac032d..643a31b0c1f1 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -20,9 +20,11 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/MODULE.bazel": "15d19e46ec74e9e49ddf3c335e7a91b0657571654b0960bdcd10b771eeb4f7cb", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/source.json": "6cc8c0ba6c623527e383acfe4ee73f290eeead2431093668db3b7a579a948deb", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.25.0/MODULE.bazel": "5fef5ec709c837312823f9bcf0f276661e2cb48ad52f17c4e01176bbf1e9bf58", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.25.0/source.json": "5e42968c6d23ab8bd95c02634b16864d866334347827cb6a8425b86c11cc4363", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", - "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/source.json": "45fa9603cdfe100575a12d8b65fa425fe8713dd8c9f0cdf802168b670bc0e299", + "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.2/MODULE.bazel": "45f054400ff242c4433f6d7f20f6123a9a72739cb7a1f44247d738db1644f46c", + "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.2/source.json": "3ed399a5654259a822448f9cdbf21f6c738f16ccd7f89249c7507e374cbdd1e3", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", @@ -31,7 +33,8 @@ "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", - "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/source.json": "7914a860fdf6ac399a3142fee2579184f0810fe0b7dee2eb9216ab72e6d8864e", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/MODULE.bazel": "796622c65ae3008374fc2d77c32ddb4ef6da9fe891826ce648f70033a48b3667", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/source.json": "a7c4f332f5c21f4e63d073f8dda40bf278d5307499fb307b35058dba558f417a", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.3/MODULE.bazel": "20f53b145f40957a51077ae90b37b7ce83582a1daf9350349f0f86179e19dd0d", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.6/MODULE.bazel": "cafb8781ad591bc57cc765dca5fefab08cf9f65af363d162b79d49205c7f8af7", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", @@ -68,7 +71,8 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", - "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", + "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/MODULE.bazel": "72997b29dfd95c3fa0d0c48322d05590418edef451f8db8db5509c57875fb4b7", + "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/source.json": "7ad77c1e8c1b84222d9b3f3cae016a76639435744c19330b0b37c0a3c9da7dc0", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "cdf8cbe5ee750db04b78878c9633cc76e80dcf4416cbe982ac3a9222f80713c8", @@ -208,8 +212,8 @@ "moduleExtensions": { "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "qIceBkct3WPS1PBc9/o0WM4MdEUfL+g7yqP1xDXe7SY=", - "usagesDigest": "86SYlNcUMJASgUMqvnMJEEnJPg8LQekpDutWxwIGptI=", + "bzlTransitiveDigest": "0aod3RK04ALA/OKTExzd7QqyeqcC4O2GWuDwUxhQHp4=", + "usagesDigest": "ToTaCONCN/E05krnHXLM1kpV1zrHNxHrGpUip973II4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -553,7 +557,7 @@ }, "@@aspect_rules_ts+//ts:extensions.bzl%ext": { "general": { - "bzlTransitiveDigest": "KKmTLMqJpxtytjzEaoMHVzKFueOTktdf74M6J9hm9xM=", + "bzlTransitiveDigest": "7k3bewVApw4Kc6Rpho1Rrs1nrW/5jphUA5Mh1iHE2U4=", "usagesDigest": "aaqqxEFKCRGFkeAf0pKmXvZZTLGYIk3pQsDFG28ZbNg=", "recordedFileInputs": { "@@rules_browsers+//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" @@ -620,7 +624,7 @@ "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=", - "usagesDigest": "Zv1e82KAhTeVpSLFVowQBovmAl3TulEXhTXUWLFY9TU=", + "usagesDigest": "jHASCmhI+ziv94KZ5hlx6t1ixFDdVXFm2VnOVVbAqww=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -630,8 +634,9 @@ "attributes": { "deps": { "aspect_rules_js": "2.8.3", - "aspect_rules_ts": "3.7.1", - "aspect_rules_esbuild": "0.24.0", + "aspect_rules_ts": "3.8.1", + "aspect_rules_esbuild": "0.25.0", + "aspect_rules_jasmine": "2.0.2", "aspect_tools_telemetry": "0.3.3" } } From 348096623326857a5d8cf77d56712776e1190180 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Dec 2025 14:40:26 -0500 Subject: [PATCH 1992/2162] fix(@angular/cli): enhance list_projects MCP tool file system traversal and symlink handling This commit introduces several improvements to the `findAngularJsonFiles` function within the `list_projects` tool. An `isIgnorableFileError` helper was introduced to consistently handle file system errors (EACCES, EPERM, ENOENT, EBUSY) across `stat` and `readdir` calls, making the traversal more resilient to transient issues and unavailable directories. A check was implemented to ensure that symbolic links are only traversed if their resolved target paths are valid and remain within the defined search roots. --- .../cli/src/commands/mcp/tools/projects.ts | 63 ++++++++++++++++--- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts index e6abff0ca418..8c6eb5d332f6 100644 --- a/packages/angular/cli/src/commands/mcp/tools/projects.ts +++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts @@ -6,8 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ +import { realpathSync } from 'node:fs'; import { readFile, readdir, stat } from 'node:fs/promises'; -import { dirname, extname, join, normalize, posix, resolve } from 'node:path'; +import { dirname, extname, isAbsolute, join, normalize, posix, relative, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; import semver from 'semver'; import { z } from 'zod'; @@ -148,15 +149,24 @@ their types, and their locations. }); const EXCLUDED_DIRS = new Set(['node_modules', 'dist', 'out', 'coverage']); +const IGNORED_FILE_SYSTEM_ERRORS = new Set(['EACCES', 'EPERM', 'ENOENT', 'EBUSY']); + +function isIgnorableFileError(error: Error & { code?: string }): boolean { + return !!error.code && IGNORED_FILE_SYSTEM_ERRORS.has(error.code); +} /** * Iteratively finds all 'angular.json' files with controlled concurrency and directory exclusions. * This non-recursive implementation is suitable for very large directory trees, * prevents file descriptor exhaustion (`EMFILE` errors), and handles symbolic link loops. * @param rootDir The directory to start the search from. + * @param allowedRealRoots A list of allowed real root directories (resolved paths) to restrict symbolic link traversal. * @returns An async generator that yields the full path of each found 'angular.json' file. */ -async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { +async function* findAngularJsonFiles( + rootDir: string, + allowedRealRoots: ReadonlyArray, +): AsyncGenerator { const CONCURRENCY_LIMIT = 50; const queue: string[] = [rootDir]; const seenInodes = new Set(); @@ -166,7 +176,7 @@ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { seenInodes.add(rootStats.ino); } catch (error) { assertIsError(error); - if (error.code === 'EACCES' || error.code === 'EPERM' || error.code === 'ENOENT') { + if (isIgnorableFileError(error)) { return; // Cannot access root, so there's nothing to do. } throw error; @@ -182,24 +192,47 @@ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { const subdirectories: string[] = []; for (const entry of entries) { const fullPath = join(dir, entry.name); - if (entry.isDirectory()) { + if (entry.isDirectory() || entry.isSymbolicLink()) { // Exclude dot-directories, build/cache directories, and node_modules if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name)) { continue; } - // Check for symbolic link loops + let entryStats; try { - const entryStats = await stat(fullPath); + entryStats = await stat(fullPath); if (seenInodes.has(entryStats.ino)) { continue; // Already visited this directory (symlink loop), skip. } - seenInodes.add(entryStats.ino); + // Only process actual directories or symlinks to directories. + if (!entryStats.isDirectory()) { + continue; + } } catch { // Ignore errors from stat (e.g., broken symlinks) continue; } + if (entry.isSymbolicLink()) { + try { + const targetPath = realpathSync(fullPath); + // Ensure the link target is within one of the allowed roots. + const isAllowed = allowedRealRoots.some((root) => { + const rel = relative(root, targetPath); + + return !rel.startsWith('..') && !isAbsolute(rel); + }); + + if (!isAllowed) { + continue; + } + } catch { + // Ignore broken links. + continue; + } + } + + seenInodes.add(entryStats.ino); subdirectories.push(fullPath); } else if (entry.name === 'angular.json') { foundFilesInBatch.push(fullPath); @@ -209,7 +242,7 @@ async function* findAngularJsonFiles(rootDir: string): AsyncGenerator { return subdirectories; } catch (error) { assertIsError(error); - if (error.code === 'EACCES' || error.code === 'EPERM') { + if (isIgnorableFileError(error)) { return []; // Silently ignore permission errors. } throw error; @@ -529,8 +562,20 @@ async function createListProjectsHandler({ server }: McpToolContext) { searchRoots = [process.cwd()]; } + // Pre-resolve allowed roots to handle their own symlinks or normalizations. + // We ignore failures here; if a root is broken, we simply won't match against it. + const realAllowedRoots = searchRoots + .map((r) => { + try { + return realpathSync(r); + } catch { + return null; + } + }) + .filter((r): r is string => r !== null); + for (const root of searchRoots) { - for await (const configFile of findAngularJsonFiles(root)) { + for await (const configFile of findAngularJsonFiles(root, realAllowedRoots)) { const { workspace, parsingError, versioningError } = await processConfigFile( configFile, root, From 5119d75b89de0b086f32139a59bd0be02c6b2224 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 16 Dec 2025 04:15:48 +0000 Subject: [PATCH 1993/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 402 +++++++++++++++++++++---------------------------- 1 file changed, 169 insertions(+), 233 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78faf972b74e..eee2b906fee7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,7 +132,7 @@ importers: version: 4.17.21 '@types/node': specifier: ^22.12.0 - version: 22.19.1 + version: 22.19.3 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -270,7 +270,7 @@ importers: version: 6.3.0(rollup@4.53.3)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.1)(rollup@4.53.3) + version: 0.5.4(@types/node@22.19.3)(rollup@4.53.3) semver: specifier: 7.7.3 version: 7.7.3 @@ -279,7 +279,7 @@ importers: version: 0.5.21 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) + version: 10.9.2(@types/node@22.19.3)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -881,8 +881,8 @@ importers: packages: - '@acemir/cssom@0.9.28': - resolution: {integrity: sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==} + '@acemir/cssom@0.9.29': + resolution: {integrity: sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -2290,8 +2290,8 @@ packages: '@modelcontextprotocol/sdk': optional: true - '@grpc/grpc-js@1.14.2': - resolution: {integrity: sha512-QzVUtEFyu05UNx2xr0fCQmStUO17uVQhGNowtxs00IgTZT6/W2PBLfUkj30s0FKJ29VtTa3ArVNIhNP6akQhqA==} + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} '@grpc/grpc-js@1.9.15': @@ -2344,8 +2344,8 @@ packages: '@types/node': optional: true - '@inquirer/checkbox@5.0.2': - resolution: {integrity: sha512-iTPV4tMMct7iOpwer5qmTP7gjnk1VQJjsNfAaC2b8Q3qiuHM3K2yjjDr5u1MKfkrvp2JD4Flf8sIPpF21pmZmw==} + '@inquirer/checkbox@5.0.3': + resolution: {integrity: sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2362,8 +2362,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@6.0.2': - resolution: {integrity: sha512-A0/13Wyi+8iFeNDX6D4zZYKPoBLIEbE4K/219qHcnpXMer2weWvaTo63+2c7mQPPA206DEMSYVOPnEw3meOlCw==} + '@inquirer/confirm@6.0.3': + resolution: {integrity: sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2380,8 +2380,8 @@ packages: '@types/node': optional: true - '@inquirer/core@11.0.2': - resolution: {integrity: sha512-lgMRx/n02ciiNELBvFLHtmcjbV5tf5D/I0UYfCg2YbTZWmBZ10/niLd3IjWBxz8LtM27xP+4oLEa06Slmb7p7A==} + '@inquirer/core@11.1.0': + resolution: {integrity: sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2398,8 +2398,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@5.0.2': - resolution: {integrity: sha512-pXQ4Nf0qmFcJuYB6NlcIIxH6l6zKOwNg1Jh/ZRdKd2dTqBB4OXKUFbFwR2K4LVXVtq15ZFFatBVT+rerYR8hWQ==} + '@inquirer/editor@5.0.3': + resolution: {integrity: sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2416,8 +2416,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@5.0.2': - resolution: {integrity: sha512-siFG1swxfjFIOxIcehtZkh+KUNB/YCpyfHNEGu+nC/SBXIbgUWibvThLn/WesSxLRGOeSKdNKoTm+GQCKFm6Ww==} + '@inquirer/expand@5.0.3': + resolution: {integrity: sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2460,8 +2460,8 @@ packages: '@types/node': optional: true - '@inquirer/input@5.0.2': - resolution: {integrity: sha512-hN2YRo1QiEc9lD3mK+CPnTS4TK2RhCMmMmP4nCWwTkmQL2vx9jPJWYk+rbUZpwR1D583ZJk1FI3i9JZXIpi/qg==} + '@inquirer/input@5.0.3': + resolution: {integrity: sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2478,8 +2478,8 @@ packages: '@types/node': optional: true - '@inquirer/number@4.0.2': - resolution: {integrity: sha512-4McnjTSYrlthNW1ojkkmP75WLRYhQs7GXm6pDDoIrHqJuV5uUYwfdbB0geHdaKMarAqJQgoOVjzIT0jdWCsKew==} + '@inquirer/number@4.0.3': + resolution: {integrity: sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2496,8 +2496,8 @@ packages: '@types/node': optional: true - '@inquirer/password@5.0.2': - resolution: {integrity: sha512-oSDziMKiw4G2e4zS+0JRfxuPFFGh6N/9yUaluMgEHp2/Yyj2JGwfDO7XbwtOrxVrz+XsP/iaGyWXdQb9d8A0+g==} + '@inquirer/password@5.0.3': + resolution: {integrity: sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2532,8 +2532,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@5.0.2': - resolution: {integrity: sha512-AcNALEdQKUQDeJcpC1a3YC53m1MLv+sMUS+vRZ8Qigs1Yg3Dcdtmi82rscJplogKOY8CXkKW4wvVwHS2ZjCIBQ==} + '@inquirer/rawlist@5.1.0': + resolution: {integrity: sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2550,8 +2550,8 @@ packages: '@types/node': optional: true - '@inquirer/search@4.0.2': - resolution: {integrity: sha512-hg63w5toohdzE65S3LiGhdfIL0kT+yisbZARf7zw65PvyMUTutTN3eMAvD/B6y/25z88vTrB7kSB45Vz5CbrXg==} + '@inquirer/search@4.0.3': + resolution: {integrity: sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2568,8 +2568,8 @@ packages: '@types/node': optional: true - '@inquirer/select@5.0.2': - resolution: {integrity: sha512-JygTohvQxSNnvt7IKANVlg/eds+yN5sLRilYeGc4ri/9Aqi/2QPoXBMV5Cz/L1VtQv63SnTbPXJZeCK2pSwsOA==} + '@inquirer/select@5.0.3': + resolution: {integrity: sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -3712,8 +3712,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.19.1': - resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} '@types/node@24.10.2': resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==} @@ -3861,10 +3861,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.48.1': - resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.49.0': resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4459,8 +4455,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.9.4: - resolution: {integrity: sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA==} + baseline-browser-mapping@2.9.7: + resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} hasBin: true basic-ftp@5.0.5: @@ -4631,8 +4627,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001759: - resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==} + caniuse-lite@1.0.30001760: + resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -5244,8 +5240,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.266: - resolution: {integrity: sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5285,8 +5281,8 @@ packages: resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.18.4: + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} engines: {node: '>=10.13.0'} ent@2.2.2: @@ -5327,8 +5323,8 @@ packages: errorstacks@2.4.1: resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -5545,8 +5541,8 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} exponential-backoff@3.1.3: @@ -6111,8 +6107,8 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + iconv-lite@0.7.1: + resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==} engines: {node: '>=0.10.0'} icss-utils@5.1.0: @@ -7745,8 +7741,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.32.0: - resolution: {integrity: sha512-MqzLLeJjqjtHK9J44+KE3kjtXXhFpPvg+AvXl/oy/jB8MeeNH66/4MNotOTqGZ6MPaxWi51YJ1ASga6OIff6xw==} + puppeteer-core@24.33.0: + resolution: {integrity: sha512-tPTxVg+Qdj/8av4cy6szv3GlhxeOoNhiiMZ955fjxQyvPQE/6DjCa6ZyF/x0WJrlgBZtaLSP8TQgJb7FdLDXXA==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8496,8 +8492,8 @@ packages: resolution: {integrity: sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==} engines: {node: '>=18'} - terser-webpack-plugin@5.3.15: - resolution: {integrity: sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==} + terser-webpack-plugin@5.3.16: + resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -8888,46 +8884,6 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.2.6: - resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.2.7: resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9374,7 +9330,7 @@ packages: snapshots: - '@acemir/cssom@0.9.28': {} + '@acemir/cssom@0.9.29': {} '@actions/core@1.11.1': dependencies: @@ -11026,7 +10982,7 @@ snapshots: - supports-color - utf-8-validate - '@grpc/grpc-js@1.14.2': + '@grpc/grpc-js@1.14.3': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -11034,7 +10990,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@grpc/proto-loader@0.7.15': dependencies: @@ -11077,10 +11033,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/checkbox@5.0.2(@types/node@24.10.2)': + '@inquirer/checkbox@5.0.3(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/figures': 2.0.2 '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: @@ -11093,9 +11049,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/confirm@6.0.2(@types/node@24.10.2)': + '@inquirer/confirm@6.0.3(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11113,7 +11069,7 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/core@11.0.2(@types/node@24.10.2)': + '@inquirer/core@11.1.0(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 '@inquirer/figures': 2.0.2 @@ -11133,9 +11089,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/editor@5.0.2(@types/node@24.10.2)': + '@inquirer/editor@5.0.3(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/external-editor': 2.0.2(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: @@ -11149,9 +11105,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/expand@5.0.2(@types/node@24.10.2)': + '@inquirer/expand@5.0.3(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11159,14 +11115,14 @@ snapshots: '@inquirer/external-editor@1.0.3(@types/node@24.10.2)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.1 optionalDependencies: '@types/node': 24.10.2 '@inquirer/external-editor@2.0.2(@types/node@24.10.2)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.1 optionalDependencies: '@types/node': 24.10.2 @@ -11181,9 +11137,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/input@5.0.2(@types/node@24.10.2)': + '@inquirer/input@5.0.3(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11195,9 +11151,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/number@4.0.2(@types/node@24.10.2)': + '@inquirer/number@4.0.3(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11210,10 +11166,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/password@5.0.2(@types/node@24.10.2)': + '@inquirer/password@5.0.3(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11235,16 +11191,16 @@ snapshots: '@inquirer/prompts@8.0.2(@types/node@24.10.2)': dependencies: - '@inquirer/checkbox': 5.0.2(@types/node@24.10.2) - '@inquirer/confirm': 6.0.2(@types/node@24.10.2) - '@inquirer/editor': 5.0.2(@types/node@24.10.2) - '@inquirer/expand': 5.0.2(@types/node@24.10.2) - '@inquirer/input': 5.0.2(@types/node@24.10.2) - '@inquirer/number': 4.0.2(@types/node@24.10.2) - '@inquirer/password': 5.0.2(@types/node@24.10.2) - '@inquirer/rawlist': 5.0.2(@types/node@24.10.2) - '@inquirer/search': 4.0.2(@types/node@24.10.2) - '@inquirer/select': 5.0.2(@types/node@24.10.2) + '@inquirer/checkbox': 5.0.3(@types/node@24.10.2) + '@inquirer/confirm': 6.0.3(@types/node@24.10.2) + '@inquirer/editor': 5.0.3(@types/node@24.10.2) + '@inquirer/expand': 5.0.3(@types/node@24.10.2) + '@inquirer/input': 5.0.3(@types/node@24.10.2) + '@inquirer/number': 4.0.3(@types/node@24.10.2) + '@inquirer/password': 5.0.3(@types/node@24.10.2) + '@inquirer/rawlist': 5.1.0(@types/node@24.10.2) + '@inquirer/search': 4.0.3(@types/node@24.10.2) + '@inquirer/select': 5.0.3(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11256,9 +11212,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/rawlist@5.0.2(@types/node@24.10.2)': + '@inquirer/rawlist@5.1.0(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: '@types/node': 24.10.2 @@ -11272,9 +11228,9 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/search@4.0.2(@types/node@24.10.2)': + '@inquirer/search@4.0.3(@types/node@24.10.2)': dependencies: - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/figures': 2.0.2 '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: @@ -11290,10 +11246,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.2 - '@inquirer/select@5.0.2(@types/node@24.10.2)': + '@inquirer/select@5.0.3(@types/node@24.10.2)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.2) '@inquirer/figures': 2.0.2 '@inquirer/type': 4.0.2(@types/node@24.10.2) optionalDependencies: @@ -12096,7 +12052,7 @@ snapshots: '@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/types': 8.49.0 eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12133,7 +12089,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/babel__code-frame@7.0.6': {} @@ -12163,16 +12119,16 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/browser-sync@2.29.1': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/serve-static': 2.2.0 chokidar: 3.6.0 @@ -12183,11 +12139,11 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -12195,11 +12151,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.7 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/connect@3.4.38': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/content-disposition@0.5.9': {} @@ -12210,11 +12166,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.6 '@types/keygrip': 1.0.6 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/cors@2.8.19': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/debounce@1.2.4': {} @@ -12222,7 +12178,7 @@ snapshots: '@types/duplexify@3.6.5': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/ejs@3.1.5': {} @@ -12242,14 +12198,14 @@ snapshots: '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -12271,11 +12227,11 @@ snapshots: '@types/git-raw-commits@5.0.1': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/http-assert@1.5.6': {} @@ -12283,7 +12239,7 @@ snapshots: '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/ini@4.1.1': {} @@ -12309,7 +12265,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -12329,13 +12285,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.9 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.27.1)': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 webpack: 5.103.0(esbuild@0.27.1) transitivePeerDependencies: - '@swc/core' @@ -12353,14 +12309,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 form-data: 4.0.5 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 - '@types/node@22.19.1': + '@types/node@22.19.3': dependencies: undici-types: 7.16.0 @@ -12372,7 +12328,7 @@ snapshots: '@types/npm-registry-fetch@8.0.9': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12380,11 +12336,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/npm-registry-fetch': 8.0.9 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12397,12 +12353,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/pumpify@1.4.5': dependencies: '@types/duplexify': 3.6.5 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/q@0.0.32': {} @@ -12416,7 +12372,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/retry@0.12.2': {} @@ -12427,11 +12383,11 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/send@1.2.1': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/serve-index@1.9.4': dependencies: @@ -12440,42 +12396,42 @@ snapshots: '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/send': 0.17.6 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/stack-trace@0.0.33': {} '@types/tar-stream@3.1.4': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/watchpack@2.4.5': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/ws@8.18.1': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 '@types/yargs-parser@21.0.3': {} @@ -12487,7 +12443,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 optional: true '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': @@ -12548,8 +12504,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.48.1': {} - '@typescript-eslint/types@8.49.0': {} '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': @@ -12770,13 +12724,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -12875,7 +12829,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.32.0(bufferutil@4.0.9) + puppeteer-core: 24.33.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13209,7 +13163,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -13230,7 +13184,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -13239,14 +13193,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: @@ -13254,7 +13208,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -13300,7 +13254,7 @@ snapshots: autoprefixer@10.4.22(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001759 + caniuse-lite: 1.0.30001760 fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -13390,7 +13344,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.9.4: {} + baseline-browser-mapping@2.9.7: {} basic-ftp@5.0.5: {} @@ -13477,7 +13431,7 @@ snapshots: content-type: 1.0.5 debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.1 on-finished: 2.4.1 qs: 6.14.0 raw-body: 3.0.2 @@ -13569,9 +13523,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.4 - caniuse-lite: 1.0.30001759 - electron-to-chromium: 1.5.266 + baseline-browser-mapping: 2.9.7 + caniuse-lite: 1.0.30001760 + electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.2(browserslist@4.28.1) @@ -13663,7 +13617,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001759: {} + caniuse-lite@1.0.30001760: {} caseless@0.12.0: {} @@ -13724,7 +13678,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -14264,7 +14218,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.266: {} + electron-to-chromium@1.5.267: {} emoji-regex@10.6.0: {} @@ -14303,7 +14257,7 @@ snapshots: engine.io@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.19.1 + '@types/node': 22.19.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14316,7 +14270,7 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.18.3: + enhanced-resolve@5.18.4: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -14351,7 +14305,7 @@ snapshots: errorstacks@2.4.1: {} - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -14693,7 +14647,7 @@ snapshots: exit@0.1.2: {} - expect-type@1.2.2: {} + expect-type@1.3.0: {} exponential-backoff@3.1.3: {} @@ -14812,7 +14766,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15243,7 +15197,7 @@ snapshots: google-gax@5.0.6(supports-color@10.2.2): dependencies: - '@grpc/grpc-js': 1.14.2 + '@grpc/grpc-js': 1.14.3 '@grpc/proto-loader': 0.8.0 duplexify: 4.1.3 google-auth-library: 10.5.0(supports-color@10.2.2) @@ -15287,7 +15241,7 @@ snapshots: grpc-gcp@1.0.1(protobufjs@7.5.4): dependencies: - '@grpc/grpc-js': 1.14.2 + '@grpc/grpc-js': 1.14.3 protobufjs: 7.5.4 gtoken@8.0.0(supports-color@10.2.2): @@ -15518,7 +15472,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.0: + iconv-lite@0.7.1: dependencies: safer-buffer: 2.1.2 @@ -15903,7 +15857,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15925,7 +15879,7 @@ snapshots: jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.28 + '@acemir/cssom': 0.9.29 '@asamuzakjp/dom-selector': 6.7.6 cssstyle: 5.3.4(postcss@8.5.6) data-urls: 6.0.0 @@ -16762,14 +16716,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 object.values@1.2.1: dependencies: @@ -17188,7 +17142,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.19.1 + '@types/node': 22.19.3 long: 5.3.2 protractor@7.0.0: @@ -17276,7 +17230,7 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.32.0(bufferutil@4.0.9): + puppeteer-core@24.33.0(bufferutil@4.0.9): dependencies: '@puppeteer/browsers': 2.11.0 chromium-bidi: 11.0.0(devtools-protocol@0.0.1534754) @@ -17368,7 +17322,7 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.1 unpipe: 1.0.0 readable-stream@2.3.8: @@ -17419,7 +17373,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -17596,12 +17550,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.1)(rollup@4.53.3): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.3)(rollup@4.53.3): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.53.3) rollup: 4.53.3 optionalDependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.3 rollup@4.53.3: dependencies: @@ -18171,7 +18125,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -18292,7 +18246,7 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)): + terser-webpack-plugin@5.3.16(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 @@ -18409,14 +18363,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.19.1 + '@types/node': 22.19.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18716,24 +18670,6 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.2 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.96.0 - terser: 5.44.1 - tsx: 4.21.0 - yaml: 2.8.2 - vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 @@ -18755,14 +18691,14 @@ snapshots: vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 '@vitest/spy': 4.0.15 '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 - expect-type: 1.2.2 + expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 @@ -18772,7 +18708,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.6(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18914,7 +18850,7 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.15.0) browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.18.4 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -18926,7 +18862,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)) + terser-webpack-plugin: 5.3.16(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: From edeb41c0e01881c21dec4d7f63fe8d302ce0521d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 16 Dec 2025 12:50:50 -0500 Subject: [PATCH 1994/2162] fix(@angular/build): ensure tests run when compilation error is resolved This commit fixes an issue in the Vitest unit test runner where tests would sometimes fail to re-run after a compilation error was resolved in watch mode. The issue occurred because the incremental build result's `added` files were not being included in the list of modified files passed to the test runner. When a file had a compilation error, it might be treated as "added" in the subsequent successful build, and previously it was ignored. A new regression test has been added to `packages/angular/build/src/builders/unit-test/tests/behavior/watch_rebuild_spec.ts` to verify that tests are correctly re-run when a compilation error is fixed, even if a test failure is introduced simultaneously. --- .../unit-test/runners/vitest/executor.ts | 2 +- .../tests/behavior/watch_rebuild_spec.ts | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 packages/angular/build/src/builders/unit-test/tests/behavior/watch_rebuild_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 244e5f6719b6..00782d1704cf 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -90,7 +90,7 @@ export class VitestExecutor implements TestExecutor { if (buildResult.kind === ResultKind.Incremental) { // To rerun tests, Vitest needs the original test file paths, not the output paths. const modifiedSourceFiles = new Set(); - for (const modifiedFile of buildResult.modified) { + for (const modifiedFile of [...buildResult.modified, ...buildResult.added]) { // The `modified` files in the build result are the output paths. // We need to find the original source file path to pass to Vitest. const source = this.entryPointToTestFile.get(modifiedFile); diff --git a/packages/angular/build/src/builders/unit-test/tests/behavior/watch_rebuild_spec.ts b/packages/angular/build/src/builders/unit-test/tests/behavior/watch_rebuild_spec.ts new file mode 100644 index 000000000000..6ff753c7eac7 --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/tests/behavior/watch_rebuild_spec.ts @@ -0,0 +1,68 @@ +/** + * @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, + describeBuilder, + UNIT_TEST_BUILDER_INFO, + setupApplicationTarget, +} from '../setup'; + +describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { + describe('Watch Mode Behavior', () => { + beforeEach(async () => { + setupApplicationTarget(harness); + }); + + it('should run tests when a compilation error is fixed and a test failure is introduced simultaneously', async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + watch: true, + }); + + await harness.executeWithCases([ + // 1. Initial success + ({ result }) => { + expect(result?.success).toBeTrue(); + + // 2. Introduce compilation error + harness.writeFiles({ + 'src/app/app.component.spec.ts': ` + import { describe, expect, test } from 'vitest' + describe('AppComponent', () => { + test('should create the app', () => { + expect(true).toBe(true); // Syntax error incoming + const x: string = 1; // Type error + }); + });`, + }); + }, + // 3. Expect compilation error + ({ result }) => { + expect(result?.success).toBeFalse(); + + // 4. Fix compilation error BUT introduce test failure + harness.writeFiles({ + 'src/app/app.component.spec.ts': ` + import { describe, expect, test } from 'vitest' + describe('AppComponent', () => { + test('should create the app', () => { + expect(true).toBe(false); // Logic failure + }); + });`, + }); + }, + // 5. Expect test failure (NOT success, which would happen if the test was skipped) + ({ result }) => { + expect(result?.success).toBeFalse(); + }, + ]); + }); + }); +}); From de3563294a33760a8a0d555f7feeabc7f8113f56 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 17 Dec 2025 12:31:31 +0000 Subject: [PATCH 1995/2162] test: update e2e test assets from Angular 18.0 to 19.0 Version 18 is no longer supported. --- .../e2e/assets/18.0-project/README.md | 27 -------- .../e2e/assets/18.0-project/package.json | 38 ----------- .../.editorconfig | 0 .../{18.0-project => 19.0-project}/.gitignore | 0 .../e2e/assets/19.0-project/README.md | 59 ++++++++++++++++++ .../angular.json | 12 ++-- .../e2e/assets/19.0-project/package.json | 37 +++++++++++ .../public/favicon.ico | Bin .../src/app/app.component.css | 0 .../src/app/app.component.html | 0 .../src/app/app.component.spec.ts | 6 +- .../src/app/app.component.ts | 3 +- .../src/app/app.config.ts | 0 .../src/app/app.routes.ts | 0 .../src/index.html | 2 +- .../src/main.ts | 0 .../src/styles.css | 0 .../tsconfig.app.json | 0 .../tsconfig.json | 8 +-- .../tsconfig.spec.json | 0 .../tests/update/update-multiple-versions.ts | 2 +- tests/legacy-cli/e2e/tests/update/update.ts | 14 ++--- 22 files changed, 116 insertions(+), 92 deletions(-) delete mode 100644 tests/legacy-cli/e2e/assets/18.0-project/README.md delete mode 100644 tests/legacy-cli/e2e/assets/18.0-project/package.json rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/.editorconfig (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/.gitignore (100%) create mode 100644 tests/legacy-cli/e2e/assets/19.0-project/README.md rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/angular.json (89%) create mode 100644 tests/legacy-cli/e2e/assets/19.0-project/package.json rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/public/favicon.ico (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/app/app.component.css (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/app/app.component.html (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/app/app.component.spec.ts (85%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/app/app.component.ts (83%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/app/app.config.ts (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/app/app.routes.ts (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/index.html (89%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/main.ts (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/src/styles.css (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/tsconfig.app.json (100%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/tsconfig.json (88%) rename tests/legacy-cli/e2e/assets/{18.0-project => 19.0-project}/tsconfig.spec.json (100%) diff --git a/tests/legacy-cli/e2e/assets/18.0-project/README.md b/tests/legacy-cli/e2e/assets/18.0-project/README.md deleted file mode 100644 index 60097ece05c4..000000000000 --- a/tests/legacy-cli/e2e/assets/18.0-project/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# EighteenProject - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.20. - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. diff --git a/tests/legacy-cli/e2e/assets/18.0-project/package.json b/tests/legacy-cli/e2e/assets/18.0-project/package.json deleted file mode 100644 index 8b05bf229739..000000000000 --- a/tests/legacy-cli/e2e/assets/18.0-project/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "eighteen-project", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test" - }, - "private": true, - "dependencies": { - "@angular/animations": "^18.2.0", - "@angular/common": "^18.2.0", - "@angular/compiler": "^18.2.0", - "@angular/core": "^18.2.0", - "@angular/forms": "^18.2.0", - "@angular/platform-browser": "^18.2.0", - "@angular/platform-browser-dynamic": "^18.2.0", - "@angular/router": "^18.2.0", - "rxjs": "~7.8.0", - "tslib": "^2.3.0", - "zone.js": "~0.14.10" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^18.2.20", - "@angular/cli": "^18.2.20", - "@angular/compiler-cli": "^18.2.0", - "@types/jasmine": "~5.1.0", - "jasmine-core": "~5.2.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.2.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.5.2" - } -} diff --git a/tests/legacy-cli/e2e/assets/18.0-project/.editorconfig b/tests/legacy-cli/e2e/assets/19.0-project/.editorconfig similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/.editorconfig rename to tests/legacy-cli/e2e/assets/19.0-project/.editorconfig diff --git a/tests/legacy-cli/e2e/assets/18.0-project/.gitignore b/tests/legacy-cli/e2e/assets/19.0-project/.gitignore similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/.gitignore rename to tests/legacy-cli/e2e/assets/19.0-project/.gitignore diff --git a/tests/legacy-cli/e2e/assets/19.0-project/README.md b/tests/legacy-cli/e2e/assets/19.0-project/README.md new file mode 100644 index 000000000000..80d80f5a3f1f --- /dev/null +++ b/tests/legacy-cli/e2e/assets/19.0-project/README.md @@ -0,0 +1,59 @@ +# NineteenProject + +This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.2.13. + +## Development server + +To start a local development server, run: + +```bash +ng serve +``` + +Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. + +## Code scaffolding + +Angular CLI includes powerful code scaffolding tools. To generate a new component, run: + +```bash +ng generate component component-name +``` + +For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run: + +```bash +ng generate --help +``` + +## Building + +To build the project run: + +```bash +ng build +``` + +This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed. + +## Running unit tests + +To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command: + +```bash +ng test +``` + +## Running end-to-end tests + +For end-to-end (e2e) testing, run: + +```bash +ng e2e +``` + +Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs. + +## Additional Resources + +For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. diff --git a/tests/legacy-cli/e2e/assets/18.0-project/angular.json b/tests/legacy-cli/e2e/assets/19.0-project/angular.json similarity index 89% rename from tests/legacy-cli/e2e/assets/18.0-project/angular.json rename to tests/legacy-cli/e2e/assets/19.0-project/angular.json index 70c98c792416..328a028d1ddc 100644 --- a/tests/legacy-cli/e2e/assets/18.0-project/angular.json +++ b/tests/legacy-cli/e2e/assets/19.0-project/angular.json @@ -3,7 +3,7 @@ "version": 1, "newProjectRoot": "projects", "projects": { - "eighteen-project": { + "nineteen-project": { "projectType": "application", "schematics": {}, "root": "", @@ -13,7 +13,7 @@ "build": { "builder": "@angular-devkit/build-angular:application", "options": { - "outputPath": "dist/eighteen-project", + "outputPath": "dist/nineteen-project", "index": "src/index.html", "browser": "src/main.ts", "polyfills": [ @@ -41,8 +41,8 @@ }, { "type": "anyComponentStyle", - "maximumWarning": "2kB", - "maximumError": "4kB" + "maximumWarning": "4kB", + "maximumError": "8kB" } ], "outputHashing": "all" @@ -59,10 +59,10 @@ "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { - "buildTarget": "eighteen-project:build:production" + "buildTarget": "nineteen-project:build:production" }, "development": { - "buildTarget": "eighteen-project:build:development" + "buildTarget": "nineteen-project:build:development" } }, "defaultConfiguration": "development" diff --git a/tests/legacy-cli/e2e/assets/19.0-project/package.json b/tests/legacy-cli/e2e/assets/19.0-project/package.json new file mode 100644 index 000000000000..7b65d66807a2 --- /dev/null +++ b/tests/legacy-cli/e2e/assets/19.0-project/package.json @@ -0,0 +1,37 @@ +{ + "name": "nineteen-project", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/common": "^19.2.0", + "@angular/compiler": "^19.2.0", + "@angular/core": "^19.2.0", + "@angular/forms": "^19.2.0", + "@angular/platform-browser": "^19.2.0", + "@angular/platform-browser-dynamic": "^19.2.0", + "@angular/router": "^19.2.0", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.15.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^19.2.13", + "@angular/cli": "^19.2.13", + "@angular/compiler-cli": "^19.2.0", + "@types/jasmine": "~5.1.0", + "jasmine-core": "~5.6.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.7.2" + } +} diff --git a/tests/legacy-cli/e2e/assets/18.0-project/public/favicon.ico b/tests/legacy-cli/e2e/assets/19.0-project/public/favicon.ico similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/public/favicon.ico rename to tests/legacy-cli/e2e/assets/19.0-project/public/favicon.ico diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.css b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.css similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.css rename to tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.css diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.html b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.html similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.html rename to tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.html diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.spec.ts b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.spec.ts similarity index 85% rename from tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.spec.ts rename to tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.spec.ts index 6e84e2cd2b04..e390fd7bd137 100644 --- a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.spec.ts +++ b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.spec.ts @@ -14,16 +14,16 @@ describe('AppComponent', () => { expect(app).toBeTruthy(); }); - it(`should have the 'eighteen-project' title`, () => { + it(`should have the 'nineteen-project' title`, () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; - expect(app.title).toEqual('eighteen-project'); + expect(app.title).toEqual('nineteen-project'); }); it('should render title', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector('h1')?.textContent).toContain('Hello, eighteen-project'); + expect(compiled.querySelector('h1')?.textContent).toContain('Hello, nineteen-project'); }); }); diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.ts b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.ts similarity index 83% rename from tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.ts rename to tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.ts index 9b1edc2b9399..09e443c2ae9e 100644 --- a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.component.ts +++ b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.ts @@ -3,11 +3,10 @@ import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', - standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { - title = 'eighteen-project'; + title = 'nineteen-project'; } diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.config.ts b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.config.ts similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/src/app/app.config.ts rename to tests/legacy-cli/e2e/assets/19.0-project/src/app/app.config.ts diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/app/app.routes.ts b/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.routes.ts similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/src/app/app.routes.ts rename to tests/legacy-cli/e2e/assets/19.0-project/src/app/app.routes.ts diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/index.html b/tests/legacy-cli/e2e/assets/19.0-project/src/index.html similarity index 89% rename from tests/legacy-cli/e2e/assets/18.0-project/src/index.html rename to tests/legacy-cli/e2e/assets/19.0-project/src/index.html index ff4948e77fd2..a78f28c335bf 100644 --- a/tests/legacy-cli/e2e/assets/18.0-project/src/index.html +++ b/tests/legacy-cli/e2e/assets/19.0-project/src/index.html @@ -2,7 +2,7 @@ - EighteenProject + NineteenProject diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/main.ts b/tests/legacy-cli/e2e/assets/19.0-project/src/main.ts similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/src/main.ts rename to tests/legacy-cli/e2e/assets/19.0-project/src/main.ts diff --git a/tests/legacy-cli/e2e/assets/18.0-project/src/styles.css b/tests/legacy-cli/e2e/assets/19.0-project/src/styles.css similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/src/styles.css rename to tests/legacy-cli/e2e/assets/19.0-project/src/styles.css diff --git a/tests/legacy-cli/e2e/assets/18.0-project/tsconfig.app.json b/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.app.json similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/tsconfig.app.json rename to tests/legacy-cli/e2e/assets/19.0-project/tsconfig.app.json diff --git a/tests/legacy-cli/e2e/assets/18.0-project/tsconfig.json b/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.json similarity index 88% rename from tests/legacy-cli/e2e/assets/18.0-project/tsconfig.json rename to tests/legacy-cli/e2e/assets/19.0-project/tsconfig.json index a8bb65b6e220..5525117c6744 100644 --- a/tests/legacy-cli/e2e/assets/18.0-project/tsconfig.json +++ b/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.json @@ -12,17 +12,11 @@ "skipLibCheck": true, "isolatedModules": true, "esModuleInterop": true, - "sourceMap": true, - "declaration": false, "experimentalDecorators": true, "moduleResolution": "bundler", "importHelpers": true, "target": "ES2022", - "module": "ES2022", - "lib": [ - "ES2022", - "dom" - ] + "module": "ES2022" }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, diff --git a/tests/legacy-cli/e2e/assets/18.0-project/tsconfig.spec.json b/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.spec.json similarity index 100% rename from tests/legacy-cli/e2e/assets/18.0-project/tsconfig.spec.json rename to tests/legacy-cli/e2e/assets/19.0-project/tsconfig.spec.json diff --git a/tests/legacy-cli/e2e/tests/update/update-multiple-versions.ts b/tests/legacy-cli/e2e/tests/update/update-multiple-versions.ts index ce343df77d29..6fecb7b15b58 100644 --- a/tests/legacy-cli/e2e/tests/update/update-multiple-versions.ts +++ b/tests/legacy-cli/e2e/tests/update/update-multiple-versions.ts @@ -7,7 +7,7 @@ import { expectToFail } from '../../utils/utils'; export default async function () { let restoreRegistry: (() => Promise) | undefined; try { - restoreRegistry = await createProjectFromAsset('18.0-project', true); + restoreRegistry = await createProjectFromAsset('19.0-project', true); await setRegistry(true); const extraArgs = ['--force']; diff --git a/tests/legacy-cli/e2e/tests/update/update.ts b/tests/legacy-cli/e2e/tests/update/update.ts index 3ab99bb0d7b6..d50e4bc51e3a 100644 --- a/tests/legacy-cli/e2e/tests/update/update.ts +++ b/tests/legacy-cli/e2e/tests/update/update.ts @@ -11,10 +11,10 @@ export default async function () { try { // We need to use the public registry because in the local NPM server we don't have // older versions @angular/cli packages which would cause `npm install` during `ng update` to fail. - restoreRegistry = await createProjectFromAsset('18.0-project', true); + restoreRegistry = await createProjectFromAsset('19.0-project', true); // CLI project version - const cliMajorProjectVersion = 18; + const cliMajorProjectVersion = 19; // If using npm, enable legacy peer deps mode to avoid defects in npm 7+'s peer dependency resolution // Example error where 11.2.14 satisfies the SemVer range ^11.0.0 but still fails: @@ -71,12 +71,12 @@ export default async function () { await ng('update', '@angular/cli', ...extraUpdateArgs); // Generate E2E setup - await ng('generate', 'private-e2e', '--related-app-name=eighteen-project'); + await ng('generate', 'private-e2e', '--related-app-name=nineteen-project'); // Setup testing to use CI Chrome. - await useCIChrome('eighteen-project', './'); - await useCIChrome('eighteen-project', './e2e/'); - await useCIDefaults('eighteen-project'); + await useCIChrome('nineteen-project', './'); + await useCIChrome('nineteen-project', './e2e/'); + await useCIDefaults('nineteen-project'); // Run CLI commands. await ng('generate', 'component', 'my-comp'); @@ -87,5 +87,5 @@ export default async function () { // Verify project now creates bundles await noSilentNg('build', '--configuration=production'); - await expectFileMatchToExist('dist/eighteen-project/browser', /main-[a-zA-Z0-9]{8}\.js/); + await expectFileMatchToExist('dist/nineteen-project/browser', /main-[a-zA-Z0-9]{8}\.js/); } From fc1aee393b882bca96761eb7652a3a44a10cb1d6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 17 Dec 2025 05:07:05 +0000 Subject: [PATCH 1996/2162] build: update dependency rules_cc to v0.2.15 See associated pull request for more information. --- MODULE.bazel | 2 +- MODULE.bazel.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 370347dafa49..b90dcf707cde 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -10,7 +10,7 @@ bazel_dep(name = "rules_nodejs", version = "6.6.2") bazel_dep(name = "aspect_rules_js", version = "2.8.3") bazel_dep(name = "aspect_rules_ts", version = "3.8.1") bazel_dep(name = "rules_pkg", version = "1.1.0") -bazel_dep(name = "rules_cc", version = "0.2.14") +bazel_dep(name = "rules_cc", version = "0.2.15") bazel_dep(name = "aspect_bazel_lib", version = "2.22.0") bazel_dep(name = "bazel_skylib", version = "1.9.0") bazel_dep(name = "aspect_rules_esbuild", version = "0.25.0") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 643a31b0c1f1..6c9f842df579 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -123,8 +123,8 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", - "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54", + "https://bcr.bazel.build/modules/rules_cc/0.2.15/MODULE.bazel": "6a0a4a75a57aa6dc888300d848053a58c6b12a29f89d4304e1c41448514ec6e8", + "https://bcr.bazel.build/modules/rules_cc/0.2.15/source.json": "197965c6dcca5c98a9288f93849e2e1c69d622e71b0be8deb524e22d48c88e32", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", From 60aded8f2bc684d5c6c4c1f996a1a56ecfa9c5dd Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 17 Dec 2025 13:45:44 +0000 Subject: [PATCH 1997/2162] build: migrate Bazel ignore rules from .bazelignore to REPO.bazel See: https://bazel.build/rules/lib/globals/repo and https://github.com/aspect-build/rules_js/blob/092dd7892b816f899c7ab5b794fdb6236abb6939/docs/pnpm.md?plain=1#L77 --- .bazelignore | 19 ------------------- MODULE.bazel | 1 - REPO.bazel | 5 +++++ 3 files changed, 5 insertions(+), 20 deletions(-) delete mode 100644 .bazelignore create mode 100644 REPO.bazel diff --git a/.bazelignore b/.bazelignore deleted file mode 100644 index 9ca3992b8666..000000000000 --- a/.bazelignore +++ /dev/null @@ -1,19 +0,0 @@ -.git -dist -node_modules -packages/angular/cli/node_modules -packages/angular/create/node_modules -packages/angular/pwa/node_modules -packages/angular/build/node_modules -packages/angular/ssr/node_modules -packages/angular_devkit/architect/node_modules -packages/angular_devkit/architect_cli/node_modules -packages/angular_devkit/build_angular/node_modules -packages/angular_devkit/build_webpack/node_modules -packages/angular_devkit/core/node_modules -packages/angular_devkit/schematics/node_modules -packages/angular_devkit/schematics_cli/node_modules -packages/ngtools/webpack/node_modules -packages/schematics/angular/node_modules -modules/testing/builder/node_modules -tests/node_modules diff --git a/MODULE.bazel b/MODULE.bazel index b90dcf707cde..a8a4b4a27f92 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -135,7 +135,6 @@ npm.npm_translate_lock( }, npmrc = "//:.npmrc", pnpm_lock = "//:pnpm-lock.yaml", - verify_node_modules_ignored = "//:.bazelignore", ) use_repo(npm, "npm") diff --git a/REPO.bazel b/REPO.bazel new file mode 100644 index 000000000000..9eb8128879bd --- /dev/null +++ b/REPO.bazel @@ -0,0 +1,5 @@ +ignore_directories([ + ".git", + "dist", + "**/node_modules/**", +]) From 430d1891192a7fb8c6071f8dc8f43bcaaf6898da Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 16 Dec 2025 15:02:07 -0500 Subject: [PATCH 1998/2162] refactor(@angular-devkit/architect-cli): remove yargs-parser dependency Replaces `yargs-parser` with `node:util` `parseArgs` in the architect CLI binary. This aligns the argument parsing logic with other CLI tools in the repo and removes an external dependency. --- .../angular_devkit/architect_cli/BUILD.bazel | 2 - .../architect_cli/bin/architect.ts | 141 +++++++++++++----- .../angular_devkit/architect_cli/package.json | 3 +- pnpm-lock.yaml | 3 - 4 files changed, 108 insertions(+), 41 deletions(-) diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index a3287048ad48..75cfe3a320e0 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -19,9 +19,7 @@ ts_project( deps = [ ":node_modules/@angular-devkit/architect", ":node_modules/@angular-devkit/core", - ":node_modules/yargs-parser", "//:node_modules/@types/node", - "//:node_modules/@types/yargs-parser", ], ) diff --git a/packages/angular_devkit/architect_cli/bin/architect.ts b/packages/angular_devkit/architect_cli/bin/architect.ts index 2ceed489fa5f..05045da094e7 100644 --- a/packages/angular_devkit/architect_cli/bin/architect.ts +++ b/packages/angular_devkit/architect_cli/bin/architect.ts @@ -9,12 +9,11 @@ import { Architect } from '@angular-devkit/architect'; import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node'; -import { JsonValue, json, logging, schema, tags, workspaces } from '@angular-devkit/core'; +import { JsonValue, json, logging, schema, strings, tags, workspaces } from '@angular-devkit/core'; import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; -import { styleText } from 'node:util'; -import yargsParser, { camelCase, decamelize } from 'yargs-parser'; +import { parseArgs, styleText } from 'node:util'; function findUp(names: string | string[], from: string) { if (!Array.isArray(names)) { @@ -62,36 +61,22 @@ async function _executeTarget( parentLogger: logging.Logger, workspace: workspaces.WorkspaceDefinition, root: string, - argv: ReturnType, + targetStr: string, + options: json.JsonObject, registry: schema.SchemaRegistry, ) { const architectHost = new WorkspaceNodeModulesArchitectHost(workspace, root); const architect = new Architect(architectHost, registry); // Split a target into its parts. - const { - _: [targetStr = ''], - help, - ...options - } = argv; - const [project, target, configuration] = targetStr.toString().split(':'); + const [project, target, configuration] = targetStr.split(':'); const targetSpec = { project, target, configuration }; const logger = new logging.Logger('jobs'); const logs: logging.LogEntry[] = []; logger.subscribe((entry) => logs.push({ ...entry, message: `${entry.name}: ` + entry.message })); - // Camelize options as yargs will return the object in kebab-case when camel casing is disabled. - const camelCasedOptions: json.JsonObject = {}; - for (const [key, value] of Object.entries(options)) { - if (/[A-Z]/.test(key)) { - throw new Error(`Unknown argument ${key}. Did you mean ${decamelize(key)}?`); - } - - camelCasedOptions[camelCase(key)] = value as JsonValue; - } - - const run = await architect.scheduleTarget(targetSpec, camelCasedOptions, { logger }); + const run = await architect.scheduleTarget(targetSpec, options, { logger }); // Wait for full completion of the builder. try { @@ -122,20 +107,108 @@ async function _executeTarget( } } +const CLI_OPTION_DEFINITIONS = { + 'help': { type: 'boolean' }, + 'verbose': { type: 'boolean' }, +} as const; + +interface Options { + positionals: string[]; + builderOptions: json.JsonObject; + cliOptions: Partial>; +} + +/** Parse the command line. */ +function parseOptions(args: string[]): Options { + const { values, tokens } = parseArgs({ + args, + strict: false, + tokens: true, + allowPositionals: true, + allowNegative: true, + options: CLI_OPTION_DEFINITIONS, + }); + + const builderOptions: json.JsonObject = {}; + const positionals: string[] = []; + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + + if (token.kind === 'positional') { + positionals.push(token.value); + continue; + } + + if (token.kind !== 'option') { + continue; + } + + const name = token.name; + let value: JsonValue = token.value ?? true; + + // `parseArgs` already handled known boolean args and their --no- forms. + // Only process options not in CLI_OPTION_DEFINITIONS here. + if (name in CLI_OPTION_DEFINITIONS) { + continue; + } + + if (/[A-Z]/.test(name)) { + throw new Error( + `Unknown argument ${name}. Did you mean ${strings.decamelize(name).replaceAll('_', '-')}?`, + ); + } + + // Handle --no-flag for unknown options, treating it as false + if (name.startsWith('no-')) { + const realName = name.slice(3); + builderOptions[strings.camelize(realName)] = false; + continue; + } + + // Handle value for unknown options + if (token.inlineValue === undefined) { + // Look ahead + const nextToken = tokens[i + 1]; + if (nextToken?.kind === 'positional') { + value = nextToken.value; + i++; // Consume next token + } else { + value = true; // Treat as boolean if no value follows + } + } + + // Type inference for numbers + if (typeof value === 'string' && !isNaN(Number(value))) { + value = Number(value); + } + + const camelName = strings.camelize(name); + if (Object.prototype.hasOwnProperty.call(builderOptions, camelName)) { + const existing = builderOptions[camelName]; + if (Array.isArray(existing)) { + existing.push(value); + } else { + builderOptions[camelName] = [existing, value] as JsonValue; + } + } else { + builderOptions[camelName] = value; + } + } + + return { + positionals, + builderOptions, + cliOptions: values as Options['cliOptions'], + }; +} + async function main(args: string[]): Promise { /** Parse the command line. */ - const argv = yargsParser(args, { - boolean: ['help'], - configuration: { - 'dot-notation': false, - 'boolean-negation': true, - 'strip-aliased': true, - 'camel-case-expansion': false, - }, - }); + const { positionals, cliOptions, builderOptions } = parseOptions(args); /** Create the DevKit Logger used through the CLI. */ - const logger = createConsoleLogger(argv['verbose'], process.stdout, process.stderr, { + const logger = createConsoleLogger(!!cliOptions['verbose'], process.stdout, process.stderr, { info: (s) => s, debug: (s) => s, warn: (s) => styleText(['yellow', 'bold'], s), @@ -144,8 +217,8 @@ async function main(args: string[]): Promise { }); // Check the target. - const targetStr = argv._[0] || ''; - if (!targetStr || argv.help) { + const targetStr = positionals[0]; + if (!targetStr || cliOptions.help) { // Show architect usage if there's no target. usage(logger); } @@ -181,7 +254,7 @@ async function main(args: string[]): Promise { // Clear the console. process.stdout.write('\u001Bc'); - return await _executeTarget(logger, workspace, root, argv, registry); + return await _executeTarget(logger, workspace, root, targetStr, builderOptions, registry); } main(process.argv.slice(2)).then( diff --git a/packages/angular_devkit/architect_cli/package.json b/packages/angular_devkit/architect_cli/package.json index 9017a667dfff..ab452501a009 100644 --- a/packages/angular_devkit/architect_cli/package.json +++ b/packages/angular_devkit/architect_cli/package.json @@ -15,7 +15,6 @@ ], "dependencies": { "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", - "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", - "yargs-parser": "22.0.0" + "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eee2b906fee7..257c31e1ac33 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -568,9 +568,6 @@ importers: '@angular-devkit/core': specifier: workspace:0.0.0-PLACEHOLDER version: link:../core - yargs-parser: - specifier: 22.0.0 - version: 22.0.0 packages/angular_devkit/build_angular: dependencies: From e5651224b5086335d48b133e1d0b9c8536c22e5f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:43:43 +0000 Subject: [PATCH 1999/2162] fix(@angular/ssr): add leading slash to well-known non-Angular URLs Pathnames always start with slash. --- packages/angular/ssr/src/app.ts | 4 ++-- packages/angular/ssr/test/app_spec.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 83b18a25ef72..77fd471270e7 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -34,8 +34,8 @@ import { buildPathWithParams, joinUrlParts, stripLeadingSlash } from './utils/ur * bypass the Angular routing and rendering process. */ const WELL_KNOWN_NON_ANGULAR_URLS: ReadonlySet = new Set([ - 'favicon.ico', - '.well-known/appspecific/com.chrome.devtools.json', + '/favicon.ico', + '/.well-known/appspecific/com.chrome.devtools.json', ]); /** diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index 46b7cebc4e8a..5116b9426a09 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -139,6 +139,14 @@ describe('AngularServerApp', () => { }); describe('handle', () => { + it('should return null for well-known non-angular URLs', async () => { + const response = await app.handle( + new Request('http://localhost/.well-known/appspecific/com.chrome.devtools.json'), + ); + + expect(response).toBeNull(); + }); + describe('CSR and SSG pages', () => { it('should correctly render the content for the requested page', async () => { const response = await app.handle(new Request('http://localhost/home')); From 081e3133764c9a23f70969bfd182259be34a411e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 17 Dec 2025 09:29:30 +0000 Subject: [PATCH 2000/2162] fix(@angular/ssr): propagate status code to redirect This commit ensures that status codes set in code are propagated to the redirect when using `Router.navigate`. --- packages/angular/ssr/src/app.ts | 20 +-------- packages/angular/ssr/src/routes/ng-routes.ts | 8 +--- packages/angular/ssr/src/utils/redirect.ts | 46 ++++++++++++++++++++ packages/angular/ssr/test/app_spec.ts | 10 ++++- 4 files changed, 58 insertions(+), 26 deletions(-) create mode 100644 packages/angular/ssr/src/utils/redirect.ts diff --git a/packages/angular/ssr/src/app.ts b/packages/angular/ssr/src/app.ts index 77fd471270e7..96afaa44c8d6 100644 --- a/packages/angular/ssr/src/app.ts +++ b/packages/angular/ssr/src/app.ts @@ -25,6 +25,7 @@ import { InlineCriticalCssProcessor } from './utils/inline-critical-css'; import { LRUCache } from './utils/lru-cache'; import { AngularBootstrap, renderAngular } from './utils/ng'; import { promiseWithAbort } from './utils/promise'; +import { createRedirectResponse } from './utils/redirect'; import { buildPathWithParams, joinUrlParts, stripLeadingSlash } from './utils/url'; /** @@ -351,7 +352,7 @@ export class AngularServerApp { } if (result.redirectTo) { - return createRedirectResponse(result.redirectTo, status); + return createRedirectResponse(result.redirectTo, responseInit.status); } if (renderMode === RenderMode.Prerender) { @@ -546,20 +547,3 @@ function appendPreloadHintsToHtml(html: string, preload: readonly string[]): str html.slice(bodyCloseIdx), ].join('\n'); } - -/** - * Creates an HTTP redirect response with a specified location and status code. - * - * @param location - The URL to which the response should redirect. - * @param status - The HTTP status code for the redirection. Defaults to 302 (Found). - * See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status - * @returns A `Response` object representing the HTTP redirect. - */ -function createRedirectResponse(location: string, status = 302): Response { - return new Response(null, { - status, - headers: { - 'Location': location, - }, - }); -} diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index e46dd685511a..b60e704371a4 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -28,6 +28,7 @@ import { Console } from '../console'; import { AngularAppManifest, getAngularAppManifest } from '../manifest'; import { AngularBootstrap, isNgModule } from '../utils/ng'; import { promiseWithAbort } from '../utils/promise'; +import { VALID_REDIRECT_RESPONSE_CODES, isValidRedirectResponseCode } from '../utils/redirect'; import { addTrailingSlash, joinUrlParts, stripLeadingSlash } from '../utils/url'; import { PrerenderFallback, @@ -59,11 +60,6 @@ const CATCH_ALL_REGEXP = /\/(\*\*)$/; */ const URL_PARAMETER_REGEXP = /(? { }) class RedirectComponent { constructor() { + const responseInit = inject(RESPONSE_INIT); + if (responseInit) { + // TODO(alanagius): Remove once https://github.com/angular/angular/pull/66126 is merged and released. + (responseInit as { status: number }).status = 308; + } + void inject(Router).navigate([], { queryParams: { filter: 'test' }, }); @@ -318,7 +324,7 @@ describe('AngularServerApp', () => { it('returns a 302 status and redirects to the correct location when `router.navigate` is used', async () => { const response = await app.handle(new Request('http://localhost/redirect-via-navigate')); expect(response?.headers.get('location')).toBe('/redirect-via-navigate?filter=test'); - expect(response?.status).toBe(302); + expect(response?.status).toBe(308); }); it('returns a 302 status and redirects to the correct location when `urlTree` is updated in a guard', async () => { From b76ae9fcb998a5119251df997c8446b5104bc6d5 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 17 Dec 2025 05:07:15 +0000 Subject: [PATCH 2001/2162] build: update pnpm to v10.26.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 150fb43aea1f..b66f61440256 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.25.0", + "packageManager": "pnpm@10.26.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.25.0" + "pnpm": "10.26.0" }, "author": "Angular Authors", "license": "MIT", From 6e5cca7dfd7e42c9fa3cd5778904efde64078e4c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 17 Dec 2025 13:43:20 +0000 Subject: [PATCH 2002/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 10 +- packages/angular/build/package.json | 4 +- packages/angular/cli/package.json | 4 +- .../angular_devkit/build_angular/package.json | 6 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 786 ++++++++++++------ 7 files changed, 567 insertions(+), 247 deletions(-) diff --git a/package.json b/package.json index b66f61440256..d453e8849e8c 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@bazel/buildifier": "8.2.1", "@eslint/compat": "2.0.0", "@eslint/eslintrc": "3.3.3", - "@eslint/js": "9.39.1", + "@eslint/js": "9.39.2", "@rollup/plugin-alias": "^6.0.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", @@ -90,13 +90,13 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.49.0", - "@typescript-eslint/parser": "8.49.0", + "@typescript-eslint/eslint-plugin": "8.50.0", + "@typescript-eslint/parser": "8.50.0", "ajv": "8.17.1", "buffer": "6.0.3", "esbuild": "0.27.1", "esbuild-wasm": "0.27.1", - "eslint": "9.39.1", + "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", @@ -122,7 +122,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.53.3", + "rollup": "4.53.5", "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.3.0", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index c03bb6a6aa58..22e5e6b4b1be 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -38,12 +38,12 @@ "picomatch": "4.0.3", "piscina": "5.1.4", "rolldown": "1.0.0-beta.54", - "sass": "1.96.0", + "sass": "1.97.0", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", "undici": "7.16.0", - "vite": "7.2.7", + "vite": "7.3.0", "watchpack": "2.4.4" }, "optionalDependencies": { diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 786815f3c982..1fb8b671f261 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.24.3", + "@modelcontextprotocol/sdk": "1.25.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.46.0", @@ -40,7 +40,7 @@ "resolve": "1.22.11", "semver": "7.7.3", "yargs": "18.0.0", - "zod": "4.1.13" + "zod": "4.2.1" }, "ng-update": { "migrations": "@schematics/angular/migrations/migration-collection.json", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index a8f301b998ba..35dff92b9d8b 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -23,7 +23,7 @@ "@discoveryjs/json-ext": "0.6.3", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.22", + "autoprefixer": "10.4.23", "babel-loader": "10.0.0", "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.96.0", + "sass": "1.97.0", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -55,7 +55,7 @@ "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.103.0", + "webpack": "5.104.0", "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index be237f6b4023..5b1d83e5fa20 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.103.0", + "webpack": "5.104.0", "webpack-dev-server": "5.2.2" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index ca7cb0885d0e..a212c7c80117 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "21.1.0-next.2", "@angular/compiler-cli": "21.1.0-next.2", "typescript": "5.9.3", - "webpack": "5.103.0" + "webpack": "5.104.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 257c31e1ac33..692b94ea74e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.1.0-next.2(87a11e855d816a433d9af16d2a3d86fc) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#d01dccf28bf240ced7828fe93c65eda247b24dec - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) '@angular/platform-browser': specifier: 21.1.0-next.2 version: 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -72,28 +72,28 @@ importers: version: 8.2.1 '@eslint/compat': specifier: 2.0.0 - version: 2.0.0(eslint@9.39.1(jiti@2.6.1)) + version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.3 version: 3.3.3 '@eslint/js': - specifier: 9.39.1 - version: 9.39.1 + specifier: 9.39.2 + version: 9.39.2 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.53.3) + version: 6.0.0(rollup@4.53.5) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.53.3) + version: 29.0.0(rollup@4.53.5) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.53.3) + version: 6.1.0(rollup@4.53.5) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.53.3) + version: 16.0.3(rollup@4.53.5) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.6.1(eslint@9.39.1(jiti@2.6.1)) + version: 5.6.1(eslint@9.39.2(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.49.0 - version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.0 + version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.49.0 - version: 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.0 + version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -182,17 +182,17 @@ importers: specifier: 0.27.1 version: 0.27.1 eslint: - specifier: 9.39.1 - version: 9.39.1(jiti@2.6.1) + specifier: 9.39.2 + version: 9.39.2(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.39.1(jiti@2.6.1)) + version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-header: specifier: 3.1.1 - version: 3.1.1(eslint@9.39.1(jiti@2.6.1)) + version: 3.1.1(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) express: specifier: 5.2.1 version: 5.2.1 @@ -260,17 +260,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.53.3 - version: 4.53.3 + specifier: 4.53.5 + version: 4.53.5 rollup-license-plugin: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: specifier: 6.3.0 - version: 6.3.0(rollup@4.53.3)(typescript@5.9.3) + version: 6.3.0(rollup@4.53.5)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.3)(rollup@4.53.3) + version: 0.5.4(@types/node@22.19.3)(rollup@4.53.5) semver: specifier: 7.7.3 version: 7.7.3 @@ -318,7 +318,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -330,7 +330,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -354,7 +354,7 @@ importers: version: 5.1.21(@types/node@24.10.2) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -395,8 +395,8 @@ importers: specifier: 1.0.0-beta.54 version: 1.0.0-beta.54 sass: - specifier: 1.96.0 - version: 1.96.0 + specifier: 1.97.0 + version: 1.97.0 semver: specifier: 7.7.3 version: 7.7.3 @@ -410,8 +410,8 @@ importers: specifier: 7.16.0 version: 7.16.0 vite: - specifier: 7.2.7 - version: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 7.3.0 + version: 7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -463,8 +463,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.2))(@types/node@24.10.2)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.24.3 - version: 1.24.3(zod@4.1.13) + specifier: 1.25.0 + version: 1.25.0(zod@4.2.1) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -502,8 +502,8 @@ importers: specifier: 18.0.0 version: 18.0.0 zod: - specifier: 4.1.13 - version: 4.1.13 + specifier: 4.2.1 + version: 4.2.1 packages/angular/pwa: dependencies: @@ -623,20 +623,20 @@ importers: specifier: 4.1.3 version: 4.1.3 autoprefixer: - specifier: 10.4.22 - version: 10.4.22(postcss@8.5.6) + specifier: 10.4.23 + version: 10.4.23(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.104.0(esbuild@0.27.1)) browserslist: specifier: ^4.26.0 version: 4.28.1 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.103.0(esbuild@0.27.1)) + version: 13.0.1(webpack@5.104.0(esbuild@0.27.1)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.103.0(esbuild@0.27.1)) + version: 7.1.2(webpack@5.104.0(esbuild@0.27.1)) esbuild-wasm: specifier: 0.27.1 version: 0.27.1 @@ -657,16 +657,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.1)) + version: 12.3.0(less@4.4.2)(webpack@5.104.0(esbuild@0.27.1)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.103.0(esbuild@0.27.1)) + version: 4.0.2(webpack@5.104.0(esbuild@0.27.1)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.103.0(esbuild@0.27.1)) + version: 2.9.4(webpack@5.104.0(esbuild@0.27.1)) open: specifier: 11.0.0 version: 11.0.0 @@ -684,7 +684,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.1)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.0(esbuild@0.27.1)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -692,17 +692,17 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.96.0 - version: 1.96.0 + specifier: 1.97.0 + version: 1.97.0 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.96.0)(webpack@5.103.0(esbuild@0.27.1)) + version: 16.0.6(sass@1.97.0)(webpack@5.104.0(esbuild@0.27.1)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.103.0(esbuild@0.27.1)) + version: 5.0.0(webpack@5.104.0(esbuild@0.27.1)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -719,20 +719,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.103.0 - version: 5.103.0(esbuild@0.27.1) + specifier: 5.104.0 + version: 5.104.0(esbuild@0.27.1) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.103.0(esbuild@0.27.1)) + version: 7.4.5(webpack@5.104.0(esbuild@0.27.1)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.1)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.0(esbuild@0.27.1)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.103.0(esbuild@0.27.1)) + version: 5.1.0(webpack@5.104.0(esbuild@0.27.1)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -770,11 +770,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.103.0 - version: 5.103.0(esbuild@0.27.1) + specifier: 5.104.0 + version: 5.104.0(esbuild@0.27.1) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.1)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.0(esbuild@0.27.1)) packages/angular_devkit/core: dependencies: @@ -846,8 +846,8 @@ importers: specifier: 5.9.3 version: 5.9.3 webpack: - specifier: 5.103.0 - version: 5.103.0(esbuild@0.27.1) + specifier: 5.104.0 + version: 5.104.0(esbuild@0.27.1) packages/schematics/angular: dependencies: @@ -2021,8 +2021,8 @@ packages: resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.1': - resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -2308,6 +2308,12 @@ packages: '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} + '@hono/node-server@1.19.7': + resolution: {integrity: sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -2718,8 +2724,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.24.3': - resolution: {integrity: sha512-YgSHW29fuzKKAHTGe9zjNoo+yF8KaQPzDC2W9Pv41E7/57IfY+AMGJ/aDFlgTLcVVELoggKE4syABCE75u3NCw==} + '@modelcontextprotocol/sdk@1.25.0': + resolution: {integrity: sha512-z0Zhn/LmQ3yz91dEfd5QgS7DpSjA4pk+3z2++zKgn5L6iDFM9QapsVoAQSbKLvlrFsZk9+ru6yHHWNq2lCYJKQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -3340,122 +3346,243 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.53.5': + resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.53.3': resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.53.5': + resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.53.3': resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.53.5': + resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.53.3': resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.53.5': + resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.53.3': resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.53.5': + resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.3': resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.5': + resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.53.3': resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.53.5': + resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.53.3': resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.53.5': + resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.53.3': resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.53.5': + resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.53.3': resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.53.5': + resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.53.3': resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.53.5': + resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.53.3': resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.53.5': + resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.53.3': resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.53.5': + resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.53.3': resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.53.5': + resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.53.3': resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.53.5': + resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.53.3': resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.53.5': + resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openharmony-arm64@4.53.3': resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.53.5': + resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.53.3': resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.53.5': + resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.3': resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.5': + resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.53.3': resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.53.5': + resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.3': resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.5': + resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.53.3': resolution: {integrity: sha512-mB8z32H6kz4kVjn+tfTGcrXBae7rIeAvm/g6itsE3IqcXpjSRRvk1/EOWDEi5wL8NNmxXiH71t4jtNfr128zpw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3820,39 +3947,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.49.0': - resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} + '@typescript-eslint/eslint-plugin@8.50.0': + resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.49.0 + '@typescript-eslint/parser': ^8.50.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.49.0': - resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} + '@typescript-eslint/parser@8.50.0': + resolution: {integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.49.0': - resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} + '@typescript-eslint/project-service@8.50.0': + resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.49.0': - resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} + '@typescript-eslint/scope-manager@8.50.0': + resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.49.0': - resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} + '@typescript-eslint/tsconfig-utils@8.50.0': + resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.49.0': - resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} + '@typescript-eslint/type-utils@8.50.0': + resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3862,21 +3989,25 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.49.0': - resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} + '@typescript-eslint/types@8.50.0': + resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.50.0': + resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.49.0': - resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} + '@typescript-eslint/utils@8.50.0': + resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.49.0': - resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} + '@typescript-eslint/visitor-keys@8.50.0': + resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.28': @@ -4357,8 +4488,8 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - autoprefixer@10.4.22: - resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} + autoprefixer@10.4.23: + resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -5335,6 +5466,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -5453,8 +5587,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.1: - resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6588,6 +6722,9 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} @@ -7217,10 +7354,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} @@ -7987,6 +8120,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.53.5: + resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + 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'} @@ -8050,8 +8188,8 @@ packages: webpack: optional: true - sass@1.96.0: - resolution: {integrity: sha512-8u4xqqUeugGNCYwr9ARNtQKTOj4KmYiJAVKXf2CTIivTCR51j96htbMKWDru8H5SaQWpyVgTfOF8Ylyf5pun1Q==} + sass@1.97.0: + resolution: {integrity: sha512-KR0igP1z4avUJetEuIeOdDlwaUDvkH8wSx7FdSjyYBS3dpyX3TzHfAMO0G1Q4/3cdjcmi3r7idh+KCmKqS+KeQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -8921,6 +9059,46 @@ packages: yaml: optional: true + vite@7.3.0: + resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@4.0.15: resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -9043,8 +9221,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.103.0: - resolution: {integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==} + webpack@5.104.0: + resolution: {integrity: sha512-5DeICTX8BVgNp6afSPYXAFjskIgWGlygQH58bcozPOXgo2r/6xx39Y1+cULZ3gTxUYQP88jmwLj2anu4Xaq84g==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -9319,8 +9497,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.13: - resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + zod@4.2.1: + resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} zone.js@0.16.0: resolution: {integrity: sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==} @@ -9512,11 +9690,11 @@ 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/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': dependencies: '@actions/core': 1.11.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.32.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.32.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.0.2(@types/node@24.10.2) '@inquirer/type': 4.0.2(@types/node@24.10.2) '@octokit/auth-app': 8.1.2 @@ -10531,18 +10709,18 @@ snapshots: '@esbuild/win32-x64@0.27.1': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.0.0(eslint@9.39.1(jiti@2.6.1))': + '@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint/core': 1.0.0 optionalDependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) '@eslint/config-array@0.21.1': dependencies: @@ -10578,7 +10756,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.39.1': {} + '@eslint/js@9.39.2': {} '@eslint/object-schema@2.1.7': {} @@ -10968,12 +11146,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.32.0(@modelcontextprotocol/sdk@1.24.3(zod@4.1.13))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.32.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.24.3(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.25.0(zod@4.2.1) transitivePeerDependencies: - bufferutil - supports-color @@ -11005,6 +11183,8 @@ snapshots: '@hapi/bourne@3.0.0': {} + '@hono/node-server@1.19.7': {} + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -11379,8 +11559,9 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.24.3(zod@4.1.13)': + '@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)': dependencies: + '@hono/node-server': 1.19.7 ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 @@ -11391,11 +11572,13 @@ snapshots: express: 5.2.1 express-rate-limit: 7.5.1(express@5.2.1) jose: 6.1.3 + json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 4.1.13 - zod-to-json-schema: 3.25.0(zod@4.1.13) + zod: 4.2.1 + zod-to-json-schema: 3.25.0(zod@4.2.1) transitivePeerDependencies: + - hono - supports-color '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -11876,13 +12059,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.54': {} - '@rollup/plugin-alias@6.0.0(rollup@4.53.3)': + '@rollup/plugin-alias@6.0.0(rollup@4.53.5)': optionalDependencies: - rollup: 4.53.3 + rollup: 4.53.5 - '@rollup/plugin-commonjs@29.0.0(rollup@4.53.3)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.53.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@rollup/pluginutils': 5.3.0(rollup@4.53.5) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11890,7 +12073,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.3 + rollup: 4.53.5 '@rollup/plugin-json@6.1.0(rollup@4.53.3)': dependencies: @@ -11898,33 +12081,39 @@ snapshots: optionalDependencies: rollup: 4.53.3 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.3)': + '@rollup/plugin-json@6.1.0(rollup@4.53.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + optionalDependencies: + rollup: 4.53.5 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.5)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.53.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.3 + rollup: 4.53.5 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.3)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@rollup/pluginutils': 5.3.0(rollup@4.53.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.3 + rollup: 4.53.5 - '@rollup/pluginutils@5.2.0(rollup@4.53.3)': + '@rollup/pluginutils@5.2.0(rollup@4.53.5)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.3 + rollup: 4.53.5 '@rollup/pluginutils@5.3.0(rollup@4.53.3)': dependencies: @@ -11934,72 +12123,146 @@ snapshots: optionalDependencies: rollup: 4.53.3 + '@rollup/pluginutils@5.3.0(rollup@4.53.5)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.53.5 + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true + '@rollup/rollup-android-arm-eabi@4.53.5': + optional: true + '@rollup/rollup-android-arm64@4.53.3': optional: true + '@rollup/rollup-android-arm64@4.53.5': + optional: true + '@rollup/rollup-darwin-arm64@4.53.3': optional: true + '@rollup/rollup-darwin-arm64@4.53.5': + optional: true + '@rollup/rollup-darwin-x64@4.53.3': optional: true + '@rollup/rollup-darwin-x64@4.53.5': + optional: true + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true + '@rollup/rollup-freebsd-arm64@4.53.5': + optional: true + '@rollup/rollup-freebsd-x64@4.53.3': optional: true + '@rollup/rollup-freebsd-x64@4.53.5': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.5': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true + '@rollup/rollup-linux-arm64-musl@4.53.5': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true + '@rollup/rollup-linux-loong64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true + '@rollup/rollup-linux-riscv64-musl@4.53.5': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true + '@rollup/rollup-linux-x64-gnu@4.53.5': + optional: true + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true + '@rollup/rollup-linux-x64-musl@4.53.5': + optional: true + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true + '@rollup/rollup-openharmony-arm64@4.53.5': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.5': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.5': + optional: true + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true + '@rollup/rollup-win32-x64-gnu@4.53.5': + optional: true + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true + '@rollup/rollup-win32-x64-msvc@4.53.5': + optional: true + '@rollup/wasm-node@4.53.3': dependencies: '@types/estree': 1.0.8 @@ -12046,11 +12309,11 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) '@typescript-eslint/types': 8.49.0 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -12289,7 +12552,7 @@ snapshots: '@types/loader-utils@3.0.0(esbuild@0.27.1)': dependencies: '@types/node': 22.19.3 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12443,15 +12706,15 @@ snapshots: '@types/node': 22.19.3 optional: true - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.49.0 - eslint: 9.39.1(jiti@2.6.1) + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.0 + eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.9.3) @@ -12459,43 +12722,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.0 debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) + '@typescript-eslint/types': 8.50.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.49.0': + '@typescript-eslint/scope-manager@8.50.0': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/visitor-keys': 8.50.0 - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -12503,12 +12766,14 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': + '@typescript-eslint/types@8.50.0': {} + + '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/visitor-keys': 8.50.0 debug: 4.4.3(supports-color@10.2.2) minimatch: 9.0.5 semver: 7.7.3 @@ -12518,20 +12783,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - eslint: 9.39.1(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.49.0': + '@typescript-eslint/visitor-keys@8.50.0': dependencies: - '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/types': 8.50.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.28': @@ -12691,11 +12956,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -12708,7 +12973,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12721,13 +12986,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -12784,11 +13049,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.3) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.5) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.53.3 + rollup: 4.53.5 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -13248,12 +13513,11 @@ snapshots: atomic-sleep@1.0.0: {} - autoprefixer@10.4.22(postcss@8.5.6): + autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 caniuse-lite: 1.0.30001760 fraction.js: 5.3.4 - normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13268,11 +13532,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.0(esbuild@0.27.1)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13878,14 +14142,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.103.0(esbuild@0.27.1)): + copy-webpack-plugin@13.0.1(webpack@5.104.0(esbuild@0.27.1)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) core-js-compat@3.47.0: dependencies: @@ -13929,7 +14193,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.103.0(esbuild@0.27.1)): + css-loader@7.1.2(webpack@5.104.0(esbuild@0.27.1)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13940,7 +14204,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) css-select@6.0.0: dependencies: @@ -14365,6 +14629,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -14468,9 +14734,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -14480,21 +14746,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.1(jiti@2.6.1) + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-header@3.1.1(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-header@3.1.1(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14503,9 +14769,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14517,7 +14783,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14537,15 +14803,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.1(jiti@2.6.1): + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.1 + '@eslint/js': 9.39.2 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 @@ -14763,7 +15029,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15918,6 +16184,8 @@ snapshots: json-schema-traverse@1.0.0: {} + json-schema-typed@8.0.2: {} + json-schema@0.4.0: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -16129,11 +16397,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.103.0(esbuild@0.27.1)): + less-loader@12.3.0(less@4.4.2)(webpack@5.104.0(esbuild@0.27.1)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) less@4.4.2: dependencies: @@ -16154,11 +16422,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.103.0(esbuild@0.27.1)): + license-webpack-plugin@4.0.2(webpack@5.104.0(esbuild@0.27.1)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) lie@3.3.0: dependencies: @@ -16403,11 +16671,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.103.0(esbuild@0.27.1)): + mini-css-extract-plugin@2.9.4(webpack@5.104.0(esbuild@0.27.1)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) minimalistic-assert@1.0.1: {} @@ -16563,7 +16831,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.3.0(rollup@4.53.3)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.96.0 + sass: 1.97.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -16636,8 +16904,6 @@ snapshots: normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - normalize-url@6.1.0: {} npm-bundled@5.0.0: @@ -17049,14 +17315,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.27.1)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.0(esbuild@0.27.1)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) transitivePeerDependencies: - typescript @@ -17547,10 +17813,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.3)(rollup@4.53.3): + rollup-plugin-dts@6.3.0(rollup@4.53.5)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) - rollup: 4.53.3 + magic-string: 0.30.21 + rollup: 4.53.5 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.3)(rollup@4.53.5): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.53.5) + rollup: 4.53.5 optionalDependencies: '@types/node': 22.19.3 @@ -17582,6 +17856,34 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 + rollup@4.53.5: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.5 + '@rollup/rollup-android-arm64': 4.53.5 + '@rollup/rollup-darwin-arm64': 4.53.5 + '@rollup/rollup-darwin-x64': 4.53.5 + '@rollup/rollup-freebsd-arm64': 4.53.5 + '@rollup/rollup-freebsd-x64': 4.53.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 + '@rollup/rollup-linux-arm-musleabihf': 4.53.5 + '@rollup/rollup-linux-arm64-gnu': 4.53.5 + '@rollup/rollup-linux-arm64-musl': 4.53.5 + '@rollup/rollup-linux-loong64-gnu': 4.53.5 + '@rollup/rollup-linux-ppc64-gnu': 4.53.5 + '@rollup/rollup-linux-riscv64-gnu': 4.53.5 + '@rollup/rollup-linux-riscv64-musl': 4.53.5 + '@rollup/rollup-linux-s390x-gnu': 4.53.5 + '@rollup/rollup-linux-x64-gnu': 4.53.5 + '@rollup/rollup-linux-x64-musl': 4.53.5 + '@rollup/rollup-openharmony-arm64': 4.53.5 + '@rollup/rollup-win32-arm64-msvc': 4.53.5 + '@rollup/rollup-win32-ia32-msvc': 4.53.5 + '@rollup/rollup-win32-x64-gnu': 4.53.5 + '@rollup/rollup-win32-x64-msvc': 4.53.5 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -17631,14 +17933,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.96.0)(webpack@5.103.0(esbuild@0.27.1)): + sass-loader@16.0.6(sass@1.97.0)(webpack@5.104.0(esbuild@0.27.1)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.96.0 - webpack: 5.103.0(esbuild@0.27.1) + sass: 1.97.0 + webpack: 5.104.0(esbuild@0.27.1) - sass@1.96.0: + sass@1.97.0: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -17947,11 +18249,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.103.0(esbuild@0.27.1)): + source-map-loader@5.0.0(webpack@5.104.0(esbuild@0.27.1)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) source-map-support@0.4.18: dependencies: @@ -18243,14 +18545,14 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.16(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)): + terser-webpack-plugin@5.3.16(esbuild@0.27.1)(webpack@5.104.0(esbuild@0.27.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) optionalDependencies: esbuild: 0.27.1 @@ -18667,28 +18969,46 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.3 + rollup: 4.53.5 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.2 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.97.0 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.27.1 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.5 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.96.0 + sass: 1.97.0 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -18705,7 +19025,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.96.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18773,7 +19093,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.103.0(esbuild@0.27.1)): + webpack-dev-middleware@7.4.5(webpack@5.104.0(esbuild@0.27.1)): dependencies: colorette: 2.0.20 memfs: 4.51.1 @@ -18782,9 +19102,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.103.0(esbuild@0.27.1)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.0(esbuild@0.27.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18812,10 +19132,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.103.0(esbuild@0.27.1)) + webpack-dev-middleware: 7.4.5(webpack@5.104.0(esbuild@0.27.1)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) transitivePeerDependencies: - bufferutil - debug @@ -18830,12 +19150,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.103.0(esbuild@0.27.1)): + webpack-subresource-integrity@5.1.0(webpack@5.104.0(esbuild@0.27.1)): dependencies: typed-assert: 1.0.9 - webpack: 5.103.0(esbuild@0.27.1) + webpack: 5.104.0(esbuild@0.27.1) - webpack@5.103.0(esbuild@0.27.1): + webpack@5.104.0(esbuild@0.27.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18848,7 +19168,7 @@ snapshots: browserslist: 4.28.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.4 - es-module-lexer: 1.7.0 + es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -18859,7 +19179,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)) + terser-webpack-plugin: 5.3.16(esbuild@0.27.1)(webpack@5.104.0(esbuild@0.27.1)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -19115,12 +19435,12 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.0(zod@4.1.13): + zod-to-json-schema@3.25.0(zod@4.2.1): dependencies: - zod: 4.1.13 + zod: 4.2.1 zod@3.25.76: {} - zod@4.1.13: {} + zod@4.2.1: {} zone.js@0.16.0: {} From f39f7ee9529113f7c75d0e0e3ffa628fed9ce92f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 16 Dec 2025 10:43:13 +0000 Subject: [PATCH 2003/2162] fix(@angular/build): allow non-prefixed requests when using SSR and base href When using SSR with a configured baseHref, the Vite dev server's default base middleware would intercept and reject requests that did not start with the base path. This created a mismatch with production behavior, where such requests (e.g., health check endpoints or custom routes defined in server.ts) could be handled correctly without the base prefix. This change patches the Vite base middleware to allow requests that do not match the base path to proceed, enabling them to be handled by subsequent middlewares like the Angular SSR middleware. Fixes #31896 --- .../tools/vite/middlewares/base-middleware.ts | 56 +++++++++++++++++++ .../build/src/tools/vite/middlewares/index.ts | 1 + .../vite/plugins/setup-middlewares-plugin.ts | 26 ++++----- .../e2e/tests/vite/ssr-base-href.ts | 48 ++++++++++++++++ 4 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 packages/angular/build/src/tools/vite/middlewares/base-middleware.ts create mode 100644 tests/legacy-cli/e2e/tests/vite/ssr-base-href.ts diff --git a/packages/angular/build/src/tools/vite/middlewares/base-middleware.ts b/packages/angular/build/src/tools/vite/middlewares/base-middleware.ts new file mode 100644 index 000000000000..00198e03061a --- /dev/null +++ b/packages/angular/build/src/tools/vite/middlewares/base-middleware.ts @@ -0,0 +1,56 @@ +/** + * @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 { IncomingMessage, ServerResponse } from 'node:http'; +import type { Connect } from 'vite'; +import { addLeadingSlash } from '../../../utils/url'; + +/** + * Patches the Vite base middleware to correctly handle the Angular application's base href. + * This is necessary because Vite's default base middleware might not align with Angular's + * expected path handling when using SSR, especially when a base href is configured. + * + * @param middlewares The Connect server instance containing the middleware stack. + * @param base The base URL path to be handled by the middleware. + */ +export function patchBaseMiddleware(middlewares: Connect.Server, base: string): void { + const entry = middlewares.stack.find( + ({ handle }) => typeof handle === 'function' && handle.name.startsWith('viteBaseMiddleware'), + ); + + if (typeof entry?.handle !== 'function') { + return; + } + + entry.handle = function angularBaseMiddleware( + req: IncomingMessage, + res: ServerResponse, + next: (err?: unknown) => void, + ) { + const url = req.url || '/'; + if (url.startsWith(base)) { + // Rewrite the URL to remove the base prefix before passing it to the next middleware. + // If the URL is exactly the base, it becomes '/'. + // Otherwise, we slice off the base and ensure there's a leading slash. + // See: https://github.com/vitejs/vite/blob/e81c183f8c8ccaf7774ef0d0ee125bf63dbf30b4/packages/vite/src/node/server/middlewares/base.ts#L12 + req.url = url === base ? '/' : addLeadingSlash(url.slice(base.length - 1)); + + return next(); + } + + const { pathname, hash, search } = new URL(url, 'http://localhost'); + if (pathname === '/' || pathname === '/index.html') { + res.writeHead(302, { Location: `${base}${search}${hash}` }); + res.end(); + + return; + } + + next(); + }; +} diff --git a/packages/angular/build/src/tools/vite/middlewares/index.ts b/packages/angular/build/src/tools/vite/middlewares/index.ts index 1816fe26265c..807e739eed59 100644 --- a/packages/angular/build/src/tools/vite/middlewares/index.ts +++ b/packages/angular/build/src/tools/vite/middlewares/index.ts @@ -17,3 +17,4 @@ export { createAngularHeadersMiddleware } from './headers-middleware'; export { createAngularComponentMiddleware } from './component-middleware'; export { createChromeDevtoolsMiddleware } from './chrome-devtools-middleware'; export { patchHostValidationMiddleware } from './host-check-middleware'; +export { patchBaseMiddleware } from './base-middleware'; diff --git a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts index b14c2b409012..5d20d5c705ac 100644 --- a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts @@ -17,6 +17,7 @@ import { createAngularSsrExternalMiddleware, createAngularSsrInternalMiddleware, createChromeDevtoolsMiddleware, + patchBaseMiddleware, patchHostValidationMiddleware, } from '../middlewares'; import { AngularMemoryOutputFiles, AngularOutputAssets } from '../utils'; @@ -87,10 +88,12 @@ export function createAngularSetupMiddlewaresPlugin( resetComponentUpdates, } = options; + const middlewares = server.middlewares; + // Headers, assets and resources get handled first - server.middlewares.use(createAngularHeadersMiddleware(server)); - server.middlewares.use(createAngularComponentMiddleware(server, templateUpdates)); - server.middlewares.use( + middlewares.use(createAngularHeadersMiddleware(server)); + middlewares.use(createAngularComponentMiddleware(server, templateUpdates)); + middlewares.use( createAngularAssetsMiddleware( server, assets, @@ -100,11 +103,9 @@ export function createAngularSetupMiddlewaresPlugin( ), ); - server.middlewares.use( - createChromeDevtoolsMiddleware(server.config.cacheDir, options.projectRoot), - ); + middlewares.use(createChromeDevtoolsMiddleware(server.config.cacheDir, options.projectRoot)); - extensionMiddleware?.forEach((middleware) => server.middlewares.use(middleware)); + extensionMiddleware?.forEach((middleware) => middlewares.use(middleware)); // Returning a function, installs middleware after the main transform middleware but // before the built-in HTML middleware @@ -113,19 +114,18 @@ export function createAngularSetupMiddlewaresPlugin( patchHostValidationMiddleware(server.middlewares); if (ssrMode === ServerSsrMode.ExternalSsrMiddleware) { - server.middlewares.use( - await createAngularSsrExternalMiddleware(server, indexHtmlTransformer), - ); + patchBaseMiddleware(server.middlewares, server.config.base); + middlewares.use(await createAngularSsrExternalMiddleware(server, indexHtmlTransformer)); return; } if (ssrMode === ServerSsrMode.InternalSsrMiddleware) { - server.middlewares.use(createAngularSsrInternalMiddleware(server, indexHtmlTransformer)); + middlewares.use(createAngularSsrInternalMiddleware(server, indexHtmlTransformer)); } - server.middlewares.use(angularHtmlFallbackMiddleware); - server.middlewares.use( + middlewares.use(angularHtmlFallbackMiddleware); + middlewares.use( createAngularIndexHtmlMiddleware( server, outputFiles, diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-base-href.ts b/tests/legacy-cli/e2e/tests/vite/ssr-base-href.ts new file mode 100644 index 000000000000..140f2582689a --- /dev/null +++ b/tests/legacy-cli/e2e/tests/vite/ssr-base-href.ts @@ -0,0 +1,48 @@ +import assert from 'node:assert'; +import { ng } from '../../utils/process'; +import { replaceInFile } from '../../utils/fs'; +import { installWorkspacePackages, uninstallPackage } from '../../utils/packages'; +import { ngServe, updateJsonFile, useSha } from '../../utils/project'; +import { getGlobalVariable } from '../../utils/env'; + +export default async function () { + assert( + getGlobalVariable('argv')['esbuild'], + 'This test should not be called in the Webpack suite.', + ); + + await uninstallPackage('@angular/ssr'); + await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); + await useSha(); + await installWorkspacePackages(); + + await updateJsonFile('angular.json', (json) => { + json.projects['test-project'].architect.build.options['baseHref'] = '/base'; + }); + + await replaceInFile( + 'src/server.ts', + /express\(\);/, + `express(); + + app.use('/ping', (req, res) => { + return res.json({ pong: true }); + });`, + ); + + const port = await ngServe(); + + // Angular application and bundled should be affected by baseHref + await matchResponse(`http://localhost:${port}/base`, /ng-server-context/); + await matchResponse(`http://localhost:${port}/base/main.js`, /App/); + + // Server endpoint should not be affected by baseHref + await matchResponse(`http://localhost:${port}/ping`, /pong/); +} + +async function matchResponse(url: string, match: RegExp): Promise { + const response = await fetch(url); + const text = await response.text(); + + assert.match(text, match); +} From 7d3e0ad125467640460801b2f830483b8238a34d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:31:39 +0000 Subject: [PATCH 2004/2162] test: migrate legacy CLI tests to e2e directory Remove an extra level. --- .../windows-bazel-test/action.yml | 4 +- .github/workflows/ci.yml | 18 +- .github/workflows/pr.yml | 16 +- .prettierignore | 3 +- docs/DEVELOPER.md | 4 +- renovate.json | 4 +- tests/BUILD.bazel | 75 +- tests/README.md | 11 - tests/{legacy-cli => }/e2e.bzl | 0 .../e2e/assets/19.0-project/.editorconfig | 0 .../e2e/assets/19.0-project/.gitignore | 0 .../e2e/assets/19.0-project/README.md | 0 .../e2e/assets/19.0-project/angular.json | 17 +- .../e2e/assets/19.0-project/package.json | 0 .../assets/19.0-project/public/favicon.ico | Bin .../19.0-project/src/app/app.component.css | 0 .../19.0-project/src/app/app.component.html | 74 +- .../src/app/app.component.spec.ts | 0 .../19.0-project/src/app/app.component.ts | 2 +- .../assets/19.0-project/src/app/app.config.ts | 2 +- .../assets/19.0-project/src/app/app.routes.ts | 0 tests/e2e/assets/19.0-project/src/index.html | 13 + .../e2e/assets/19.0-project/src/main.ts | 3 +- .../e2e/assets/19.0-project/src/styles.css | 0 .../e2e/assets/19.0-project/tsconfig.app.json | 8 +- .../e2e/assets/19.0-project/tsconfig.json | 0 .../assets/19.0-project/tsconfig.spec.json | 9 +- tests/{legacy-cli => }/e2e/assets/BUILD.bazel | 0 .../assets/add-collection-dir/collection.json | 0 tests/e2e/assets/add-collection-dir/index.js | 1 + .../assets/add-collection-dir/package.json | 0 .../add-collection-peer-bad/collection.json | 0 .../assets/add-collection-peer-bad/index.js | 1 + .../add-collection-peer-bad/package.json | 0 .../add-collection-peer-good/collection.json | 0 .../assets/add-collection-peer-good/index.js | 1 + .../add-collection-peer-good/package.json | 0 .../e2e/assets/add-collection.tgz | Bin .../e2e/assets/images/spectrum.png | Bin .../collection.json | 0 .../nested-schematic-dependency/index.js | 1 + .../nested-schematic-dependency/package.json | 0 .../nested-schematic-main/collection.json | 0 .../e2e/assets/nested-schematic-main/index.js | 2 + .../assets/nested-schematic-main/package.json | 0 .../e2e/assets/protractor-saucelabs.conf.js | 0 .../schematic-allow-scripts/collection.json | 0 .../assets/schematic-allow-scripts/index.js | 24 + .../schematic-allow-scripts/package.json | 0 .../schematic-allow-scripts/schema.json | 13 + .../collection.json | 0 .../schematic-boolean-option-negated/index.js | 0 .../package.json | 0 .../schema.json | 0 .../e2e/assets/ssr-project-webpack/.gitignore | 0 .../e2e/assets/ssr-project-webpack/README.md | 0 .../assets/ssr-project-webpack/angular.json | 31 +- .../assets/ssr-project-webpack/package.json | 0 .../e2e/assets/ssr-project-webpack/server.ts | 11 +- .../src/app/app-routing.module.ts | 4 +- .../src/app/app.component.css | 0 .../src/app/app.component.html | 770 ++++++++++++++++++ .../src/app/app.component.spec.ts | 14 +- .../src/app/app.component.ts | 2 +- .../src/app/app.module.server.ts | 5 +- .../ssr-project-webpack/src/app/app.module.ts | 17 +- .../ssr-project-webpack/src/assets/.gitkeep | 0 .../ssr-project-webpack/src/favicon.ico | Bin .../assets/ssr-project-webpack/src/index.html | 13 + .../ssr-project-webpack/src/main.server.ts | 0 .../assets/ssr-project-webpack/src/main.ts | 5 +- .../assets/ssr-project-webpack/src/styles.css | 0 .../ssr-project-webpack/tsconfig.app.json | 8 +- .../assets/ssr-project-webpack/tsconfig.json | 5 +- .../ssr-project-webpack/tsconfig.server.json | 9 +- .../ssr-project-webpack/tsconfig.spec.json | 9 +- .../e2e/initialize/300-log-environment.ts | 0 .../e2e/initialize/500-create-project.ts | 0 .../e2e/initialize/BUILD.bazel | 2 +- .../e2e/ng-snapshot/BUILD.bazel | 0 .../e2e/ng-snapshot/package.json | 0 .../e2e/setup/001-npm-sandbox.ts | 0 .../e2e/setup/010-local-publish.ts | 0 .../e2e/setup/100-global-cli.ts | 0 .../e2e/setup/200-create-project-dir.ts | 0 tests/{legacy-cli => }/e2e/setup/BUILD.bazel | 2 +- tests/{legacy-cli => }/e2e/tests/BUILD.bazel | 2 +- tests/{legacy-cli => }/e2e/tests/basic/aot.ts | 0 .../{legacy-cli => }/e2e/tests/basic/build.ts | 0 .../e2e/tests/basic/command-scope.ts | 0 .../e2e/tests/basic/rebuild.ts | 0 tests/{legacy-cli => }/e2e/tests/basic/run.ts | 0 .../e2e/tests/basic/scripts-array.ts | 0 .../{legacy-cli => }/e2e/tests/basic/serve.ts | 0 .../e2e/tests/basic/styles-array.ts | 0 .../{legacy-cli => }/e2e/tests/basic/test.ts | 0 .../build/app-shell/app-shell-ngmodule.ts | 0 .../app-shell/app-shell-with-schematic.ts | 0 .../app-shell-with-service-worker.ts | 0 .../e2e/tests/build/assets.ts | 0 .../e2e/tests/build/auto-csp.ts | 0 .../e2e/tests/build/bundle-budgets.ts | 0 .../e2e/tests/build/chunk-optimizer-lazy.ts | 0 .../e2e/tests/build/chunk-optimizer.ts | 0 .../e2e/tests/build/config-file-fallback.ts | 0 .../e2e/tests/build/css-urls.ts | 0 .../e2e/tests/build/disk-cache-purge.ts | 0 .../e2e/tests/build/disk-cache.ts | 0 .../e2e/tests/build/esbuild-unsupported.ts | 0 .../e2e/tests/build/extract-licenses.ts | 0 .../e2e/tests/build/incremental-watch.ts | 0 .../e2e/tests/build/jit-ngmodule.ts | 0 .../e2e/tests/build/jit-prod.ts | 0 .../e2e/tests/build/lazy-load-syntax.ts | 0 .../e2e/tests/build/library-with-demo-app.ts | 0 .../build/library/lib-consumption-full-aot.ts | 0 .../build/library/lib-consumption-full-jit.ts | 0 .../library/lib-consumption-partial-aot.ts | 0 .../library/lib-consumption-partial-jit.ts | 0 .../library/lib-consumption-sourcemaps.ts | 0 .../lib-unused-decorated-class-treeshake.ts | 0 .../e2e/tests/build/library/setup.ts | 0 .../e2e/tests/build/material.ts | 0 .../e2e/tests/build/multiple-configs.ts | 0 .../e2e/tests/build/output-dir.ts | 0 .../{legacy-cli => }/e2e/tests/build/poll.ts | 0 .../prerender/discover-routes-ngmodule.ts | 0 .../prerender/discover-routes-standalone.ts | 0 .../build/prerender/error-with-sourcemaps.ts | 0 .../build/prerender/http-requests-assets.ts | 0 .../e2e/tests/build/prod-build.ts | 0 .../e2e/tests/build/progress-and-stats.ts | 0 .../e2e/tests/build/project-name.ts | 0 .../tests/build/rebuild-deps-type-check.ts | 0 .../e2e/tests/build/rebuild-dot-dirname.ts | 0 .../e2e/tests/build/rebuild-replacements.ts | 0 .../e2e/tests/build/rebuild-symlink.ts | 0 .../e2e/tests/build/relative-sourcemap.ts | 0 .../e2e/tests/build/scripts-output-hashing.ts | 0 .../express-engine-csp-nonce.ts | 0 .../express-engine-ngmodule.ts | 0 .../express-engine-standalone.ts | 0 ...utput-mode-server-external-dependencies.ts | 0 ...outes-output-mode-server-i18n-base-href.ts | 0 ...routes-output-mode-server-i18n-sub-path.ts | 0 .../server-routes-output-mode-server-i18n.ts | 0 ...tes-output-mode-server-platform-neutral.ts | 0 .../server-routes-output-mode-server.ts | 0 ...er-routes-output-mode-static-http-calls.ts | 0 ...s-output-mode-static-i18n_APP_BASE_HREF.ts | 0 .../server-routes-output-mode-static.ts | 0 .../server-routes-preload-links.ts | 0 .../e2e/tests/build/sourcemap.ts | 0 .../e2e/tests/build/styles/bootstrap.ts | 0 .../e2e/tests/build/styles/include-paths.ts | 0 .../e2e/tests/build/styles/less.ts | 0 .../e2e/tests/build/styles/loaders.ts | 0 .../tests/build/styles/sass-pkg-importer.ts | 0 .../e2e/tests/build/styles/sass.ts | 0 .../build/styles/scss-partial-resolution.ts | 0 .../e2e/tests/build/styles/scss.ts | 0 .../tests/build/styles/symlinked-global.ts | 0 .../e2e/tests/build/styles/tailwind-v2.ts | 0 .../e2e/tests/build/styles/tailwind-v3-cjs.ts | 0 .../e2e/tests/build/styles/tailwind-v3.ts | 0 .../e2e/tests/build/ts-paths.ts | 0 .../e2e/tests/build/ts-standard-decorators.ts | 0 .../e2e/tests/build/wasm-esm.ts | 0 .../e2e/tests/build/worker.ts | 0 .../e2e/tests/commands/add/add-material.ts | 0 .../e2e/tests/commands/add/add-pwa.ts | 0 .../e2e/tests/commands/add/add-tailwindcss.ts | 0 .../e2e/tests/commands/add/add-version.ts | 0 .../e2e/tests/commands/add/add.ts | 0 .../e2e/tests/commands/add/base.ts | 0 .../e2e/tests/commands/add/dir.ts | 0 .../e2e/tests/commands/add/file.ts | 0 .../e2e/tests/commands/add/npm-config.ts | 0 .../e2e/tests/commands/add/peer.ts | 0 .../e2e/tests/commands/add/registry-option.ts | 0 .../e2e/tests/commands/add/secure-registry.ts | 0 .../tests/commands/add/version-specifier.ts | 0 .../e2e/tests/commands/add/yarn-env-vars.ts | 0 .../tests/commands/additional-properties.ts | 0 .../analytics/analytics-enable-disable.ts | 0 .../commands/analytics/analytics-info.ts | 0 .../analytics/ask-analytics-command.ts | 0 .../e2e/tests/commands/builder-not-found.ts | 0 .../tests/commands/builder-project-by-cwd.ts | 0 .../e2e/tests/commands/cache/cache-clean.ts | 0 .../commands/cache/cache-enable-disable.ts | 0 .../e2e/tests/commands/cache/cache-info.ts | 0 .../commands/completion/completion-prompt.ts | 0 .../commands/completion/completion-script.ts | 0 .../tests/commands/completion/completion.ts | 0 .../e2e/tests/commands/config/config-get.ts | 0 .../config/config-global-validation.ts | 0 .../tests/commands/config/config-global.ts | 0 .../commands/config/config-set-enum-check.ts | 0 .../commands/config/config-set-prefix.ts | 0 .../commands/config/config-set-serve-port.ts | 0 .../e2e/tests/commands/config/config-set.ts | 0 .../e2e/tests/commands/help/help-hidden.ts | 0 .../e2e/tests/commands/help/help-json.ts | 0 .../e2e/tests/commands/ng-new-collection.ts | 0 .../project-cannot-be-determined-by-cwd.ts | 0 .../commands/run-configuration-option.ts | 0 .../e2e/tests/commands/serve/assets.ts | 0 .../e2e/tests/commands/serve/head-request.ts | 0 .../tests/commands/serve/preflight-request.ts | 0 .../e2e/tests/commands/serve/reload-shims.ts | 0 .../e2e/tests/commands/serve/serve-path.ts | 0 .../serve/ssr-http-requests-assets.ts | 0 .../tests/commands/unknown-configuration.ts | 0 .../e2e/tests/commands/unknown-option.ts | 0 .../application-no-zoneless-ng-module.ts | 0 .../application-no-zoneless-standalone.ts | 0 .../application-zoneless-ng-module.ts | 0 .../application-zoneless-standalone.ts | 0 .../generate/component/component-basic.ts | 0 .../generate/component/component-child-dir.ts | 0 .../generate/component/component-flat.ts | 0 .../component/component-inline-template.ts | 0 .../generate/component/component-not-flat.ts | 0 .../generate/component/component-path-case.ts | 0 .../generate/component/component-prefix.ts | 0 .../generate/config/type-browserslist.ts | 0 .../e2e/tests/generate/config/type-karma.ts | 0 .../generate/directive/directive-basic.ts | 0 .../generate/directive/directive-prefix.ts | 0 .../e2e/tests/generate/generate-error.ts | 0 .../e2e/tests/generate/generate-name-check.ts | 0 .../e2e/tests/generate/guard/guard-basic.ts | 0 .../tests/generate/guard/guard-implements.ts | 0 .../guard/guard-multiple-implements.ts | 0 .../generate/help-output-no-duplicates.ts | 0 .../e2e/tests/generate/help-output.ts | 0 .../tests/generate/install-allow-scripts.ts | 0 .../generate/interceptor/interceptor-basic.ts | 0 .../tests/generate/library/library-basic.ts | 0 .../generate/library/library-standalone.ts | 0 .../e2e/tests/generate/module/module-basic.ts | 0 .../tests/generate/module/module-import.ts | 0 .../module/module-routing-child-folder.ts | 0 .../e2e/tests/generate/pipe/pipe-basic.ts | 0 .../e2e/tests/generate/schematic-aliases.ts | 0 .../e2e/tests/generate/schematic-defaults.ts | 0 .../generate/schematic-force-override.ts | 0 .../schematics-collections-relative.ts | 0 .../tests/generate/schematics-collections.ts | 0 .../tests/generate/service/service-basic.ts | 0 .../e2e/tests/i18n/extract-ivy-disk-cache.ts | 0 .../e2e/tests/i18n/extract-ivy-libraries.ts | 0 .../e2e/tests/i18n/extract-ivy.ts | 0 .../ivy-localize-app-shell-service-worker.ts | 0 .../e2e/tests/i18n/ivy-localize-app-shell.ts | 0 .../i18n/ivy-localize-basehref-absolute.ts | 0 .../e2e/tests/i18n/ivy-localize-basehref.ts | 0 .../e2e/tests/i18n/ivy-localize-es2015-e2e.ts | 0 .../e2e/tests/i18n/ivy-localize-es2015.ts | 0 .../e2e/tests/i18n/ivy-localize-hashes.ts | 0 .../i18n/ivy-localize-locale-data-augment.ts | 0 .../tests/i18n/ivy-localize-locale-data.ts | 0 .../e2e/tests/i18n/ivy-localize-merging.ts | 0 .../tests/i18n/ivy-localize-sourcelocale.ts | 0 .../e2e/tests/i18n/ivy-localize-sourcemaps.ts | 0 .../e2e/tests/i18n/ivy-localize-ssr.ts | 0 .../e2e/tests/i18n/ivy-localize-sub-path.ts | 0 .../{legacy-cli => }/e2e/tests/i18n/setup.ts | 0 tests/{legacy-cli => }/e2e/tests/jest/aot.ts | 0 .../{legacy-cli => }/e2e/tests/jest/basic.ts | 0 .../e2e/tests/jest/custom-config.ts | 0 .../e2e/tests/jest/no-zoneless.ts | 0 .../e2e/tests/mcp/ai-tutor.ts | 0 .../e2e/tests/mcp/best-practices.ts | 0 .../e2e/tests/mcp/find-examples-basic.ts | 0 .../e2e/tests/mcp/registers-tools.ts | 0 .../e2e/tests/misc/ask-missing-builder.ts | 0 .../e2e/tests/misc/browsers.ts | 0 .../e2e/tests/misc/check-postinstalls.ts | 0 .../e2e/tests/misc/create-angular.ts | 0 .../tests/misc/dedupe-duplicate-modules.ts | 0 .../misc/duplicate-command-line-option.ts | 0 .../e2e/tests/misc/es2015-nometa.ts | 0 .../e2e/tests/misc/forwardref-es2015.ts | 0 .../misc/invalid-schematic-dependencies.ts | 0 .../e2e/tests/misc/loaders-resolution.ts | 0 .../module-resolution-core-mapping.ts | 0 .../e2e/tests/misc/multiple-targets.ts | 0 .../e2e/tests/misc/negated-boolean-options.ts | 0 .../tests/misc/nested-schematic-packages.ts | 0 .../e2e/tests/misc/supported-angular.ts | 0 .../misc/target-default-configuration.ts | 0 .../e2e/tests/misc/trace-resolution.ts | 0 .../e2e/tests/misc/trusted-types.ts | 0 .../misc/update-git-clean-subdirectory.ts | 0 .../e2e/tests/misc/update-git-clean.ts | 0 .../e2e/tests/misc/version.ts | 0 .../e2e/tests/misc/workspace-verification.ts | 0 .../e2e/tests/protractor/test-fails.ts | 0 .../e2e/tests/schematics_cli/basic.ts | 0 .../e2e/tests/schematics_cli/blank-test.ts | 0 .../tests/schematics_cli/schematic-test.ts | 0 .../e2e/tests/test/karma-junit-output.ts | 0 .../tests/test/test-code-coverage-exclude.ts | 0 .../e2e/tests/test/test-environment.ts | 0 .../e2e/tests/test/test-fail-single-run.ts | 0 .../e2e/tests/test/test-include-glob.ts | 0 .../e2e/tests/test/test-jasmine-clock.ts | 0 .../e2e/tests/test/test-scripts.ts | 0 .../e2e/tests/test/test-sourcemap.ts | 0 .../update/update-application-builder.ts | 0 .../tests/update/update-multiple-versions.ts | 0 .../tests/update/update-secure-registry.ts | 0 .../e2e/tests/update/update.ts | 0 .../vite/reuse-dep-optimization-cache.ts | 0 .../e2e/tests/vite/ssr-base-href.ts | 0 .../e2e/tests/vite/ssr-default.ts | 0 .../e2e/tests/vite/ssr-entry-express.ts | 0 .../e2e/tests/vite/ssr-entry-fastify.ts | 0 .../e2e/tests/vite/ssr-entry-h3.ts | 0 .../e2e/tests/vite/ssr-entry-hono.ts | 0 .../e2e/tests/vite/ssr-error-stack.ts | 0 .../tests/vite/ssr-new-dep-optimization.ts | 0 .../e2e/tests/vite/ssr-with-ssl.ts | 0 .../e2e/tests/vitest/browser-no-globals.ts | 0 .../e2e/tests/vitest/browser-playwright.ts | 0 .../e2e/tests/vitest/browser-webdriverio.ts | 0 .../e2e/tests/vitest/component.ts | 0 .../e2e/tests/vitest/include.ts | 0 .../tests/vitest/larger-project-coverage.ts | 0 .../e2e/tests/vitest/larger-project.ts | 0 .../e2e/tests/vitest/runner-config-path.ts | 0 .../e2e/tests/vitest/snapshot.ts | 0 .../e2e/tests/vitest/tslib-resolution.ts | 0 .../e2e/tests/web-test-runner/basic.ts | 0 tests/{legacy-cli => }/e2e/utils/BUILD.bazel | 2 +- tests/{legacy-cli => }/e2e/utils/assets.ts | 0 tests/{legacy-cli => }/e2e/utils/env.ts | 0 tests/{legacy-cli => }/e2e/utils/fs.ts | 0 tests/{legacy-cli => }/e2e/utils/git.ts | 0 tests/{legacy-cli => }/e2e/utils/jest.ts | 0 tests/{legacy-cli => }/e2e/utils/network.ts | 0 tests/{legacy-cli => }/e2e/utils/packages.ts | 0 tests/{legacy-cli => }/e2e/utils/process.ts | 0 tests/{legacy-cli => }/e2e/utils/project.ts | 2 +- tests/{legacy-cli => }/e2e/utils/registry.ts | 0 tests/{legacy-cli => }/e2e/utils/tar.ts | 0 .../e2e/utils/test_process.ts | 0 tests/{legacy-cli => }/e2e/utils/utils.ts | 0 tests/{legacy-cli => }/e2e/utils/version.ts | 0 tests/{legacy-cli => }/e2e/utils/vitest.ts | 0 .../e2e/utils/web-test-runner.ts | 0 tests/{legacy-cli => }/e2e_runner.ts | 2 +- tests/legacy-cli/BUILD.bazel | 73 -- .../e2e/assets/19.0-project/src/index.html | 13 - .../e2e/assets/add-collection-dir/index.js | 1 - .../assets/add-collection-peer-bad/index.js | 1 - .../assets/add-collection-peer-good/index.js | 1 - .../nested-schematic-dependency/index.js | 1 - .../e2e/assets/nested-schematic-main/index.js | 1 - .../assets/schematic-allow-scripts/index.js | 16 - .../schematic-allow-scripts/schema.json | 14 - .../src/app/app.component.html | 483 ----------- .../assets/ssr-project-webpack/src/index.html | 13 - tests/{legacy-cli => }/rollup.config.mjs | 0 tests/{legacy-cli => }/tsconfig.json | 0 tests/{legacy-cli => }/verdaccio.yaml | 0 tests/{legacy-cli => }/verdaccio_auth.yaml | 0 369 files changed, 1033 insertions(+), 805 deletions(-) delete mode 100644 tests/README.md rename tests/{legacy-cli => }/e2e.bzl (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/.editorconfig (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/.gitignore (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/README.md (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/angular.json (88%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/public/favicon.ico (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/app/app.component.css (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/app/app.component.html (93%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/app/app.component.spec.ts (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/app/app.component.ts (88%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/app/app.config.ts (90%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/app/app.routes.ts (100%) create mode 100644 tests/e2e/assets/19.0-project/src/index.html rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/main.ts (66%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/src/styles.css (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/tsconfig.app.json (82%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/tsconfig.json (100%) rename tests/{legacy-cli => }/e2e/assets/19.0-project/tsconfig.spec.json (76%) rename tests/{legacy-cli => }/e2e/assets/BUILD.bazel (100%) rename tests/{legacy-cli => }/e2e/assets/add-collection-dir/collection.json (100%) create mode 100644 tests/e2e/assets/add-collection-dir/index.js rename tests/{legacy-cli => }/e2e/assets/add-collection-dir/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/add-collection-peer-bad/collection.json (100%) create mode 100644 tests/e2e/assets/add-collection-peer-bad/index.js rename tests/{legacy-cli => }/e2e/assets/add-collection-peer-bad/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/add-collection-peer-good/collection.json (100%) create mode 100644 tests/e2e/assets/add-collection-peer-good/index.js rename tests/{legacy-cli => }/e2e/assets/add-collection-peer-good/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/add-collection.tgz (100%) rename tests/{legacy-cli => }/e2e/assets/images/spectrum.png (100%) rename tests/{legacy-cli => }/e2e/assets/nested-schematic-dependency/collection.json (100%) create mode 100644 tests/e2e/assets/nested-schematic-dependency/index.js rename tests/{legacy-cli => }/e2e/assets/nested-schematic-dependency/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/nested-schematic-main/collection.json (100%) create mode 100644 tests/e2e/assets/nested-schematic-main/index.js rename tests/{legacy-cli => }/e2e/assets/nested-schematic-main/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/protractor-saucelabs.conf.js (100%) rename tests/{legacy-cli => }/e2e/assets/schematic-allow-scripts/collection.json (100%) create mode 100644 tests/e2e/assets/schematic-allow-scripts/index.js rename tests/{legacy-cli => }/e2e/assets/schematic-allow-scripts/package.json (100%) create mode 100644 tests/e2e/assets/schematic-allow-scripts/schema.json rename tests/{legacy-cli => }/e2e/assets/schematic-boolean-option-negated/collection.json (100%) rename tests/{legacy-cli => }/e2e/assets/schematic-boolean-option-negated/index.js (100%) rename tests/{legacy-cli => }/e2e/assets/schematic-boolean-option-negated/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/schematic-boolean-option-negated/schema.json (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/.gitignore (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/README.md (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/angular.json (87%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/package.json (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/server.ts (93%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts (75%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/app/app.component.css (100%) create mode 100644 tests/e2e/assets/ssr-project-webpack/src/app/app.component.html rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts (79%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/app/app.component.ts (84%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts (83%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/app/app.module.ts (55%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/assets/.gitkeep (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/favicon.ico (100%) create mode 100644 tests/e2e/assets/ssr-project-webpack/src/index.html rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/main.server.ts (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/main.ts (55%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/src/styles.css (100%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/tsconfig.app.json (71%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/tsconfig.json (94%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/tsconfig.server.json (65%) rename tests/{legacy-cli => }/e2e/assets/ssr-project-webpack/tsconfig.spec.json (63%) rename tests/{legacy-cli => }/e2e/initialize/300-log-environment.ts (100%) rename tests/{legacy-cli => }/e2e/initialize/500-create-project.ts (100%) rename tests/{legacy-cli => }/e2e/initialize/BUILD.bazel (88%) rename tests/{legacy-cli => }/e2e/ng-snapshot/BUILD.bazel (100%) rename tests/{legacy-cli => }/e2e/ng-snapshot/package.json (100%) rename tests/{legacy-cli => }/e2e/setup/001-npm-sandbox.ts (100%) rename tests/{legacy-cli => }/e2e/setup/010-local-publish.ts (100%) rename tests/{legacy-cli => }/e2e/setup/100-global-cli.ts (100%) rename tests/{legacy-cli => }/e2e/setup/200-create-project-dir.ts (100%) rename tests/{legacy-cli => }/e2e/setup/BUILD.bazel (85%) rename tests/{legacy-cli => }/e2e/tests/BUILD.bazel (92%) rename tests/{legacy-cli => }/e2e/tests/basic/aot.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/build.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/command-scope.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/rebuild.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/run.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/scripts-array.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/serve.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/styles-array.ts (100%) rename tests/{legacy-cli => }/e2e/tests/basic/test.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/app-shell/app-shell-ngmodule.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/app-shell/app-shell-with-schematic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/app-shell/app-shell-with-service-worker.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/assets.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/auto-csp.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/bundle-budgets.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/chunk-optimizer-lazy.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/chunk-optimizer.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/config-file-fallback.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/css-urls.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/disk-cache-purge.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/disk-cache.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/esbuild-unsupported.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/extract-licenses.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/incremental-watch.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/jit-ngmodule.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/jit-prod.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/lazy-load-syntax.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library-with-demo-app.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/lib-consumption-full-aot.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/lib-consumption-full-jit.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/lib-consumption-partial-aot.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/lib-consumption-partial-jit.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/lib-consumption-sourcemaps.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/library/setup.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/material.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/multiple-configs.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/output-dir.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/poll.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/prerender/discover-routes-ngmodule.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/prerender/discover-routes-standalone.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/prerender/error-with-sourcemaps.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/prerender/http-requests-assets.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/prod-build.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/progress-and-stats.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/project-name.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/rebuild-deps-type-check.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/rebuild-dot-dirname.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/rebuild-replacements.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/rebuild-symlink.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/relative-sourcemap.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/scripts-output-hashing.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/express-engine-ngmodule.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/express-engine-standalone.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/server-rendering/server-routes-preload-links.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/sourcemap.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/bootstrap.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/include-paths.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/less.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/loaders.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/sass-pkg-importer.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/sass.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/scss-partial-resolution.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/scss.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/symlinked-global.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/tailwind-v2.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/tailwind-v3-cjs.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/styles/tailwind-v3.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/ts-paths.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/ts-standard-decorators.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/wasm-esm.ts (100%) rename tests/{legacy-cli => }/e2e/tests/build/worker.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/add-material.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/add-pwa.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/add-tailwindcss.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/add-version.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/add.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/base.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/dir.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/file.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/npm-config.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/peer.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/registry-option.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/secure-registry.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/version-specifier.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/add/yarn-env-vars.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/additional-properties.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/analytics/analytics-enable-disable.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/analytics/analytics-info.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/analytics/ask-analytics-command.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/builder-not-found.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/builder-project-by-cwd.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/cache/cache-clean.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/cache/cache-enable-disable.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/cache/cache-info.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/completion/completion-prompt.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/completion/completion-script.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/completion/completion.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-get.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-global-validation.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-global.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-set-enum-check.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-set-prefix.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-set-serve-port.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/config/config-set.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/help/help-hidden.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/help/help-json.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/ng-new-collection.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/run-configuration-option.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/serve/assets.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/serve/head-request.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/serve/preflight-request.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/serve/reload-shims.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/serve/serve-path.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/serve/ssr-http-requests-assets.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/unknown-configuration.ts (100%) rename tests/{legacy-cli => }/e2e/tests/commands/unknown-option.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/application/application-no-zoneless-ng-module.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/application/application-no-zoneless-standalone.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/application/application-zoneless-ng-module.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/application/application-zoneless-standalone.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-child-dir.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-flat.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-inline-template.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-not-flat.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-path-case.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/component/component-prefix.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/config/type-browserslist.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/config/type-karma.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/directive/directive-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/directive/directive-prefix.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/generate-error.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/generate-name-check.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/guard/guard-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/guard/guard-implements.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/guard/guard-multiple-implements.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/help-output-no-duplicates.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/help-output.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/install-allow-scripts.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/interceptor/interceptor-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/library/library-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/library/library-standalone.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/module/module-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/module/module-import.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/module/module-routing-child-folder.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/pipe/pipe-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/schematic-aliases.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/schematic-defaults.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/schematic-force-override.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/schematics-collections-relative.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/schematics-collections.ts (100%) rename tests/{legacy-cli => }/e2e/tests/generate/service/service-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/extract-ivy-disk-cache.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/extract-ivy-libraries.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/extract-ivy.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-app-shell.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-basehref-absolute.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-basehref.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-es2015-e2e.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-es2015.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-hashes.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-locale-data-augment.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-locale-data.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-merging.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-sourcelocale.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-sourcemaps.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-ssr.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/ivy-localize-sub-path.ts (100%) rename tests/{legacy-cli => }/e2e/tests/i18n/setup.ts (100%) rename tests/{legacy-cli => }/e2e/tests/jest/aot.ts (100%) rename tests/{legacy-cli => }/e2e/tests/jest/basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/jest/custom-config.ts (100%) rename tests/{legacy-cli => }/e2e/tests/jest/no-zoneless.ts (100%) rename tests/{legacy-cli => }/e2e/tests/mcp/ai-tutor.ts (100%) rename tests/{legacy-cli => }/e2e/tests/mcp/best-practices.ts (100%) rename tests/{legacy-cli => }/e2e/tests/mcp/find-examples-basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/mcp/registers-tools.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/ask-missing-builder.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/browsers.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/check-postinstalls.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/create-angular.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/dedupe-duplicate-modules.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/duplicate-command-line-option.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/es2015-nometa.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/forwardref-es2015.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/invalid-schematic-dependencies.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/loaders-resolution.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/module-resolution/module-resolution-core-mapping.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/multiple-targets.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/negated-boolean-options.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/nested-schematic-packages.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/supported-angular.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/target-default-configuration.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/trace-resolution.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/trusted-types.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/update-git-clean-subdirectory.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/update-git-clean.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/version.ts (100%) rename tests/{legacy-cli => }/e2e/tests/misc/workspace-verification.ts (100%) rename tests/{legacy-cli => }/e2e/tests/protractor/test-fails.ts (100%) rename tests/{legacy-cli => }/e2e/tests/schematics_cli/basic.ts (100%) rename tests/{legacy-cli => }/e2e/tests/schematics_cli/blank-test.ts (100%) rename tests/{legacy-cli => }/e2e/tests/schematics_cli/schematic-test.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/karma-junit-output.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-code-coverage-exclude.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-environment.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-fail-single-run.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-include-glob.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-jasmine-clock.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-scripts.ts (100%) rename tests/{legacy-cli => }/e2e/tests/test/test-sourcemap.ts (100%) rename tests/{legacy-cli => }/e2e/tests/update/update-application-builder.ts (100%) rename tests/{legacy-cli => }/e2e/tests/update/update-multiple-versions.ts (100%) rename tests/{legacy-cli => }/e2e/tests/update/update-secure-registry.ts (100%) rename tests/{legacy-cli => }/e2e/tests/update/update.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/reuse-dep-optimization-cache.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-base-href.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-default.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-entry-express.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-entry-fastify.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-entry-h3.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-entry-hono.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-error-stack.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-new-dep-optimization.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vite/ssr-with-ssl.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/browser-no-globals.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/browser-playwright.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/browser-webdriverio.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/component.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/include.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/larger-project-coverage.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/larger-project.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/runner-config-path.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/snapshot.ts (100%) rename tests/{legacy-cli => }/e2e/tests/vitest/tslib-resolution.ts (100%) rename tests/{legacy-cli => }/e2e/tests/web-test-runner/basic.ts (100%) rename tests/{legacy-cli => }/e2e/utils/BUILD.bazel (93%) rename tests/{legacy-cli => }/e2e/utils/assets.ts (100%) rename tests/{legacy-cli => }/e2e/utils/env.ts (100%) rename tests/{legacy-cli => }/e2e/utils/fs.ts (100%) rename tests/{legacy-cli => }/e2e/utils/git.ts (100%) rename tests/{legacy-cli => }/e2e/utils/jest.ts (100%) rename tests/{legacy-cli => }/e2e/utils/network.ts (100%) rename tests/{legacy-cli => }/e2e/utils/packages.ts (100%) rename tests/{legacy-cli => }/e2e/utils/process.ts (100%) rename tests/{legacy-cli => }/e2e/utils/project.ts (99%) rename tests/{legacy-cli => }/e2e/utils/registry.ts (100%) rename tests/{legacy-cli => }/e2e/utils/tar.ts (100%) rename tests/{legacy-cli => }/e2e/utils/test_process.ts (100%) rename tests/{legacy-cli => }/e2e/utils/utils.ts (100%) rename tests/{legacy-cli => }/e2e/utils/version.ts (100%) rename tests/{legacy-cli => }/e2e/utils/vitest.ts (100%) rename tests/{legacy-cli => }/e2e/utils/web-test-runner.ts (100%) rename tests/{legacy-cli => }/e2e_runner.ts (99%) delete mode 100644 tests/legacy-cli/BUILD.bazel delete mode 100644 tests/legacy-cli/e2e/assets/19.0-project/src/index.html delete mode 100644 tests/legacy-cli/e2e/assets/add-collection-dir/index.js delete mode 100644 tests/legacy-cli/e2e/assets/add-collection-peer-bad/index.js delete mode 100644 tests/legacy-cli/e2e/assets/add-collection-peer-good/index.js delete mode 100644 tests/legacy-cli/e2e/assets/nested-schematic-dependency/index.js delete mode 100644 tests/legacy-cli/e2e/assets/nested-schematic-main/index.js delete mode 100644 tests/legacy-cli/e2e/assets/schematic-allow-scripts/index.js delete mode 100644 tests/legacy-cli/e2e/assets/schematic-allow-scripts/schema.json delete mode 100644 tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.html delete mode 100644 tests/legacy-cli/e2e/assets/ssr-project-webpack/src/index.html rename tests/{legacy-cli => }/rollup.config.mjs (100%) rename tests/{legacy-cli => }/tsconfig.json (100%) rename tests/{legacy-cli => }/verdaccio.yaml (100%) rename tests/{legacy-cli => }/verdaccio_auth.yaml (100%) diff --git a/.github/shared-actions/windows-bazel-test/action.yml b/.github/shared-actions/windows-bazel-test/action.yml index 5e2ec1777892..7a5cf7c0297b 100644 --- a/.github/shared-actions/windows-bazel-test/action.yml +++ b/.github/shared-actions/windows-bazel-test/action.yml @@ -24,7 +24,7 @@ runs: - name: Convert symlinks for Windows host shell: pwsh run: | - $runfiles_dir = "./dist/bin/tests/legacy-cli/${{inputs.test_target_name}}_/${{inputs.test_target_name}}.bat.runfiles" + $runfiles_dir = "./dist/bin/tests/${{inputs.test_target_name}}_/${{inputs.test_target_name}}.bat.runfiles" # Needed for resolution because Aspect/Bazel looks for repositories at `/external`. # TODO(devversion): consult with Aspect on why this is needed. @@ -38,5 +38,5 @@ runs: E2E_TEMP: ${{ inputs.e2e_temp_dir }} run: | node ./scripts/windows-testing/parallel-executor.mjs \ - "./dist/bin/tests/legacy-cli/${{ inputs.test_target_name }}_/${{ inputs.test_target_name }}.bat.runfiles" \ + "./dist/bin/tests/${{ inputs.test_target_name }}_/${{ inputs.test_target_name }}.bat.runfiles" \ ${{ inputs.test_target_name }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c0fc8ccca3f..5c4efa8f3a86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests - run: pnpm bazel test -- //... -//tests/legacy-cli/... + run: pnpm bazel test -- //... -//tests/... e2e: needs: test @@ -94,7 +94,7 @@ jobs: 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 }} + run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.${{ matrix.subset }}_node${{ matrix.node }} build-e2e-windows: runs-on: ubuntu-latest @@ -113,15 +113,15 @@ jobs: run: | pnpm bazel build \ --config=e2e \ - //tests/legacy-cli:e2e.webpack_node22 \ - //tests/legacy-cli:e2e.esbuild_node22 \ + //tests:e2e.webpack_node22 \ + //tests:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: win-e2e-build-artifacts path: | - dist/bin/tests/legacy-cli/** + dist/bin/tests/** !**/node_modules/** retention-days: 1 if-no-files-found: 'error' @@ -144,7 +144,7 @@ jobs: uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: win-e2e-build-artifacts - path: dist/bin/tests/legacy-cli/ + path: dist/bin/tests/ - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -174,7 +174,7 @@ jobs: 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 }} + run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-snapshots: needs: test @@ -198,7 +198,7 @@ jobs: 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 }} + run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} browsers: needs: build @@ -229,7 +229,7 @@ jobs: run: | ./scripts/saucelabs/start-tunnel.sh & ./scripts/saucelabs/wait-for-tunnel.sh - pnpm bazel test --config=saucelabs //tests/legacy-cli:e2e.saucelabs + pnpm bazel test --config=saucelabs //tests:e2e.saucelabs ./scripts/saucelabs/stop-tunnel.sh - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 if: ${{ failure() }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 7962dda3c8fb..dc7c21d3b0a6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -28,7 +28,7 @@ jobs: with: filters: | snapshots: - - 'tests/legacy-cli/e2e/ng-snapshot/package.json' + - 'tests/e2e/ng-snapshot/package.json' lint: runs-on: ubuntu-latest @@ -101,7 +101,7 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests - run: pnpm bazel test -- //... -//tests/legacy-cli/... + run: pnpm bazel test -- //... -//tests/... e2e: needs: build @@ -122,7 +122,7 @@ jobs: - name: Setup Bazel RBE uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 }} + run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.${{ matrix.subset }}_node${{ matrix.node }} build-e2e-windows-subset: runs-on: ubuntu-latest @@ -139,14 +139,14 @@ jobs: run: | pnpm bazel build \ --config=e2e \ - //tests/legacy-cli:e2e.esbuild_node22 \ + //tests:e2e.esbuild_node22 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: win-e2e-build-artifacts path: | - dist/bin/tests/legacy-cli/** + dist/bin/tests/** !**/node_modules/** retention-days: 1 if-no-files-found: 'error' @@ -163,7 +163,7 @@ jobs: uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: win-e2e-build-artifacts - path: dist/bin/tests/legacy-cli/ + path: dist/bin/tests/ - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: @@ -191,7 +191,7 @@ jobs: - name: Setup Bazel RBE uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 }} + run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=3 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.${{ matrix.subset }}_node${{ matrix.node }} e2e-snapshots: needs: [analyze, build] @@ -213,4 +213,4 @@ jobs: - name: Setup Bazel RBE uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a - 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 }} + run: pnpm bazel test --test_env=E2E_SHARD_TOTAL=6 --test_env=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/.prettierignore b/.prettierignore index b0b71acaf241..1adbf7759080 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,8 +11,7 @@ /packages/schematics/angular/third_party/ /README.md /CONTRIBUTING.md -.yarn/ dist/ -/tests/legacy-cli/e2e/assets/ +/tests/e2e/assets/ /tools/test/*.json pnpm-lock.yaml diff --git a/docs/DEVELOPER.md b/docs/DEVELOPER.md index bd0c9bdf1ee3..8204bd7dcbce 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_node22 --config=e2e --test_filter="tests/i18n/ivy-localize-*"` -- Use `bazel run` to debug failing tests debugging: `pnpm bazel run //tests/legacy-cli:e2e_node22 --config=e2e --test_arg="--glob=tests/basic/aot.ts"` +- Run a subset of the tests: `pnpm bazel test //tests:e2e_node22 --config=e2e --test_filter="tests/i18n/ivy-localize-*"` +- Use `bazel run` to debug failing tests debugging: `pnpm bazel run //tests: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. diff --git a/renovate.json b/renovate.json index 4ffcf9c252d6..3b2c5ab2f6a6 100644 --- a/renovate.json +++ b/renovate.json @@ -3,11 +3,11 @@ "baseBranchPatterns": ["main", "21.0.x"], "extends": ["github>angular/dev-infra//renovate-presets/default.json5"], "ignoreDeps": ["less"], - "ignorePaths": ["tests/legacy-cli/e2e/assets/**", "tests/schematics/update/packages/**"], + "ignorePaths": ["tests/e2e/assets/**", "tests/schematics/update/packages/**"], "packageRules": [ { "enabled": false, - "matchFileNames": ["tests/legacy-cli/e2e/ng-snapshot/package.json"], + "matchFileNames": ["tests/e2e/ng-snapshot/package.json"], "matchBaseBranches": ["!main"] }, { diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index 2c0b57b1fe3e..c93ffba8b5da 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -1,11 +1,78 @@ +load("@aspect_bazel_lib//lib:directory_path.bzl", "directory_path") load("@npm//:defs.bzl", "npm_link_all_packages") +load("@npm//:rollup/package_json.bzl", rollup = "bin") +load("//tools:defaults.bzl", "ts_project") +load(":e2e.bzl", "e2e_suites") -# Copyright Google Inc. 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 package(default_visibility = ["//visibility:public"]) licenses(["notice"]) npm_link_all_packages() + +ts_project( + name = "runner", + testonly = True, + srcs = [ + "e2e_runner.ts", + ], + deps = [ + "//:node_modules/@types/node", + "//:node_modules/fast-glob", + "//packages/angular_devkit/core", + "//packages/angular_devkit/core/node", + "//tests/e2e/utils", + ], +) + +rollup.rollup( + name = "runner_bundled", + testonly = True, + srcs = [ + "rollup.config.mjs", + ":runner", + "//:node_modules/@rollup/plugin-alias", + "//:node_modules/@rollup/plugin-commonjs", + "//:node_modules/@rollup/plugin-json", + "//:node_modules/@rollup/plugin-node-resolve", + "//:node_modules/fast-glob", + "//tests/e2e/initialize", + "//tests/e2e/ng-snapshot", + "//tests/e2e/setup", + "//tests/e2e/tests", + ], + args = [ + "--format=cjs", + "--config=./rollup.config.mjs", + ], + chdir = package_name(), + out_dirs = ["runner_bundled_out"], + progress_message = "Bundling e2e test runner", +) + +directory_path( + name = "runner_entrypoint", + testonly = True, + directory = ":runner_bundled", + path = "./e2e_runner.js", +) + +e2e_suites( + name = "e2e", + data = [ + ":runner_bundled", + "verdaccio.yaml", + "verdaccio_auth.yaml", + + # Dynamically loaded. + "//tests/e2e/assets", + "//:node_modules/verdaccio", + "//:node_modules/verdaccio-auth-memory", + + # Extra runtime deps due to bundling issues. + # TODO: Clean this up. + "//:node_modules/express", + "//:node_modules/undici", + ], + runner = ":runner_entrypoint", +) diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index e507add2cea7..000000000000 --- a/tests/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# `/tests` Folder - -Contains all e2e tests and test assets. - -## `legacy-cli/` - -Contains all assets and all e2e tests from the legacy CLI repo. - -## Others - -Other folders contain test assets related to the Package namespace folders matching their name. diff --git a/tests/legacy-cli/e2e.bzl b/tests/e2e.bzl similarity index 100% rename from tests/legacy-cli/e2e.bzl rename to tests/e2e.bzl diff --git a/tests/legacy-cli/e2e/assets/19.0-project/.editorconfig b/tests/e2e/assets/19.0-project/.editorconfig similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/.editorconfig rename to tests/e2e/assets/19.0-project/.editorconfig diff --git a/tests/legacy-cli/e2e/assets/19.0-project/.gitignore b/tests/e2e/assets/19.0-project/.gitignore similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/.gitignore rename to tests/e2e/assets/19.0-project/.gitignore diff --git a/tests/legacy-cli/e2e/assets/19.0-project/README.md b/tests/e2e/assets/19.0-project/README.md similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/README.md rename to tests/e2e/assets/19.0-project/README.md diff --git a/tests/legacy-cli/e2e/assets/19.0-project/angular.json b/tests/e2e/assets/19.0-project/angular.json similarity index 88% rename from tests/legacy-cli/e2e/assets/19.0-project/angular.json rename to tests/e2e/assets/19.0-project/angular.json index 328a028d1ddc..b435223e9930 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/angular.json +++ b/tests/e2e/assets/19.0-project/angular.json @@ -16,9 +16,7 @@ "outputPath": "dist/nineteen-project", "index": "src/index.html", "browser": "src/main.ts", - "polyfills": [ - "zone.js" - ], + "polyfills": ["zone.js"], "tsConfig": "tsconfig.app.json", "assets": [ { @@ -26,9 +24,7 @@ "input": "public" } ], - "styles": [ - "src/styles.css" - ], + "styles": ["src/styles.css"], "scripts": [] }, "configurations": { @@ -73,10 +69,7 @@ "test": { "builder": "@angular-devkit/build-angular:karma", "options": { - "polyfills": [ - "zone.js", - "zone.js/testing" - ], + "polyfills": ["zone.js", "zone.js/testing"], "tsConfig": "tsconfig.spec.json", "assets": [ { @@ -84,9 +77,7 @@ "input": "public" } ], - "styles": [ - "src/styles.css" - ], + "styles": ["src/styles.css"], "scripts": [] } } diff --git a/tests/legacy-cli/e2e/assets/19.0-project/package.json b/tests/e2e/assets/19.0-project/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/package.json rename to tests/e2e/assets/19.0-project/package.json diff --git a/tests/legacy-cli/e2e/assets/19.0-project/public/favicon.ico b/tests/e2e/assets/19.0-project/public/favicon.ico similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/public/favicon.ico rename to tests/e2e/assets/19.0-project/public/favicon.ico diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.css b/tests/e2e/assets/19.0-project/src/app/app.component.css similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.css rename to tests/e2e/assets/19.0-project/src/app/app.component.css diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.html b/tests/e2e/assets/19.0-project/src/app/app.component.html similarity index 93% rename from tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.html rename to tests/e2e/assets/19.0-project/src/app/app.component.html index 36093e187977..f8135391366c 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.html +++ b/tests/e2e/assets/19.0-project/src/app/app.component.html @@ -36,9 +36,18 @@ --pill-accent: var(--bright-blue); - font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", - "Segoe UI Symbol"; + font-family: + 'Inter', + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Helvetica, + Arial, + sans-serif, + 'Apple Color Emoji', + 'Segoe UI Emoji', + 'Segoe UI Symbol'; box-sizing: border-box; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -51,9 +60,18 @@ line-height: 100%; letter-spacing: -0.125rem; margin: 0; - font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", - "Segoe UI Symbol"; + font-family: + 'Inter Tight', + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Helvetica, + Arial, + sans-serif, + 'Apple Color Emoji', + 'Segoe UI Emoji', + 'Segoe UI Symbol'; } p { @@ -209,14 +227,7 @@ - + @@ -231,19 +242,20 @@

Hello, {{ title }}

- @for (item of [ - { title: 'Explore the Docs', link: 'https://angular.dev' }, - { title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' }, - { title: 'CLI Docs', link: 'https://angular.dev/tools/cli' }, - { title: 'Angular Language Service', link: 'https://angular.dev/tools/language-service' }, - { title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' }, - ]; track item.title) { - + @for ( + item of [ + { title: 'Explore the Docs', link: 'https://angular.dev' }, + { title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' }, + { title: 'CLI Docs', link: 'https://angular.dev/tools/cli' }, + { + title: 'Angular Language Service', + link: 'https://angular.dev/tools/language-service', + }, + { title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' }, + ]; + track item.title + ) { + {{ item.title }} Hello, {{ title }} /> - + Hello, {{ title }} - diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.spec.ts b/tests/e2e/assets/19.0-project/src/app/app.component.spec.ts similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.spec.ts rename to tests/e2e/assets/19.0-project/src/app/app.component.spec.ts diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.ts b/tests/e2e/assets/19.0-project/src/app/app.component.ts similarity index 88% rename from tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.ts rename to tests/e2e/assets/19.0-project/src/app/app.component.ts index 09e443c2ae9e..620c8a058372 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.component.ts +++ b/tests/e2e/assets/19.0-project/src/app/app.component.ts @@ -5,7 +5,7 @@ import { RouterOutlet } from '@angular/router'; selector: 'app-root', imports: [RouterOutlet], templateUrl: './app.component.html', - styleUrl: './app.component.css' + styleUrl: './app.component.css', }) export class AppComponent { title = 'nineteen-project'; diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.config.ts b/tests/e2e/assets/19.0-project/src/app/app.config.ts similarity index 90% rename from tests/legacy-cli/e2e/assets/19.0-project/src/app/app.config.ts rename to tests/e2e/assets/19.0-project/src/app/app.config.ts index a1e7d6f864c1..7afc797fbab7 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.config.ts +++ b/tests/e2e/assets/19.0-project/src/app/app.config.ts @@ -4,5 +4,5 @@ import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { - providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)] + providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)], }; diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/app/app.routes.ts b/tests/e2e/assets/19.0-project/src/app/app.routes.ts similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/src/app/app.routes.ts rename to tests/e2e/assets/19.0-project/src/app/app.routes.ts diff --git a/tests/e2e/assets/19.0-project/src/index.html b/tests/e2e/assets/19.0-project/src/index.html new file mode 100644 index 000000000000..f374b0fe3d5e --- /dev/null +++ b/tests/e2e/assets/19.0-project/src/index.html @@ -0,0 +1,13 @@ + + + + + NineteenProject + + + + + + + + diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/main.ts b/tests/e2e/assets/19.0-project/src/main.ts similarity index 66% rename from tests/legacy-cli/e2e/assets/19.0-project/src/main.ts rename to tests/e2e/assets/19.0-project/src/main.ts index 35b00f346331..17447a5dce2c 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/src/main.ts +++ b/tests/e2e/assets/19.0-project/src/main.ts @@ -2,5 +2,4 @@ import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; -bootstrapApplication(AppComponent, appConfig) - .catch((err) => console.error(err)); +bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err)); diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/styles.css b/tests/e2e/assets/19.0-project/src/styles.css similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/src/styles.css rename to tests/e2e/assets/19.0-project/src/styles.css diff --git a/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.app.json b/tests/e2e/assets/19.0-project/tsconfig.app.json similarity index 82% rename from tests/legacy-cli/e2e/assets/19.0-project/tsconfig.app.json rename to tests/e2e/assets/19.0-project/tsconfig.app.json index 3775b37e3bbc..8886e903f8d0 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.app.json +++ b/tests/e2e/assets/19.0-project/tsconfig.app.json @@ -6,10 +6,6 @@ "outDir": "./out-tsc/app", "types": [] }, - "files": [ - "src/main.ts" - ], - "include": [ - "src/**/*.d.ts" - ] + "files": ["src/main.ts"], + "include": ["src/**/*.d.ts"] } diff --git a/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.json b/tests/e2e/assets/19.0-project/tsconfig.json similarity index 100% rename from tests/legacy-cli/e2e/assets/19.0-project/tsconfig.json rename to tests/e2e/assets/19.0-project/tsconfig.json diff --git a/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.spec.json b/tests/e2e/assets/19.0-project/tsconfig.spec.json similarity index 76% rename from tests/legacy-cli/e2e/assets/19.0-project/tsconfig.spec.json rename to tests/e2e/assets/19.0-project/tsconfig.spec.json index 5fb748d9207a..e00e30e6d4fb 100644 --- a/tests/legacy-cli/e2e/assets/19.0-project/tsconfig.spec.json +++ b/tests/e2e/assets/19.0-project/tsconfig.spec.json @@ -4,12 +4,7 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] + "types": ["jasmine"] }, - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] } diff --git a/tests/legacy-cli/e2e/assets/BUILD.bazel b/tests/e2e/assets/BUILD.bazel similarity index 100% rename from tests/legacy-cli/e2e/assets/BUILD.bazel rename to tests/e2e/assets/BUILD.bazel diff --git a/tests/legacy-cli/e2e/assets/add-collection-dir/collection.json b/tests/e2e/assets/add-collection-dir/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection-dir/collection.json rename to tests/e2e/assets/add-collection-dir/collection.json diff --git a/tests/e2e/assets/add-collection-dir/index.js b/tests/e2e/assets/add-collection-dir/index.js new file mode 100644 index 000000000000..0c38ee4e9fd9 --- /dev/null +++ b/tests/e2e/assets/add-collection-dir/index.js @@ -0,0 +1 @@ +exports.default = (options) => (tree) => tree.create(options.name || 'empty-file', ''); diff --git a/tests/legacy-cli/e2e/assets/add-collection-dir/package.json b/tests/e2e/assets/add-collection-dir/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection-dir/package.json rename to tests/e2e/assets/add-collection-dir/package.json diff --git a/tests/legacy-cli/e2e/assets/add-collection-peer-bad/collection.json b/tests/e2e/assets/add-collection-peer-bad/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection-peer-bad/collection.json rename to tests/e2e/assets/add-collection-peer-bad/collection.json diff --git a/tests/e2e/assets/add-collection-peer-bad/index.js b/tests/e2e/assets/add-collection-peer-bad/index.js new file mode 100644 index 000000000000..df08babad74f --- /dev/null +++ b/tests/e2e/assets/add-collection-peer-bad/index.js @@ -0,0 +1 @@ +exports.default = (options) => (tree) => tree.create(options.name || 'empty-file-peer-bad', ''); diff --git a/tests/legacy-cli/e2e/assets/add-collection-peer-bad/package.json b/tests/e2e/assets/add-collection-peer-bad/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection-peer-bad/package.json rename to tests/e2e/assets/add-collection-peer-bad/package.json diff --git a/tests/legacy-cli/e2e/assets/add-collection-peer-good/collection.json b/tests/e2e/assets/add-collection-peer-good/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection-peer-good/collection.json rename to tests/e2e/assets/add-collection-peer-good/collection.json diff --git a/tests/e2e/assets/add-collection-peer-good/index.js b/tests/e2e/assets/add-collection-peer-good/index.js new file mode 100644 index 000000000000..bddee127cebf --- /dev/null +++ b/tests/e2e/assets/add-collection-peer-good/index.js @@ -0,0 +1 @@ +exports.default = (options) => (tree) => tree.create(options.name || 'empty-file-peer-good', ''); diff --git a/tests/legacy-cli/e2e/assets/add-collection-peer-good/package.json b/tests/e2e/assets/add-collection-peer-good/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection-peer-good/package.json rename to tests/e2e/assets/add-collection-peer-good/package.json diff --git a/tests/legacy-cli/e2e/assets/add-collection.tgz b/tests/e2e/assets/add-collection.tgz similarity index 100% rename from tests/legacy-cli/e2e/assets/add-collection.tgz rename to tests/e2e/assets/add-collection.tgz diff --git a/tests/legacy-cli/e2e/assets/images/spectrum.png b/tests/e2e/assets/images/spectrum.png similarity index 100% rename from tests/legacy-cli/e2e/assets/images/spectrum.png rename to tests/e2e/assets/images/spectrum.png diff --git a/tests/legacy-cli/e2e/assets/nested-schematic-dependency/collection.json b/tests/e2e/assets/nested-schematic-dependency/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/nested-schematic-dependency/collection.json rename to tests/e2e/assets/nested-schematic-dependency/collection.json diff --git a/tests/e2e/assets/nested-schematic-dependency/index.js b/tests/e2e/assets/nested-schematic-dependency/index.js new file mode 100644 index 000000000000..0c38ee4e9fd9 --- /dev/null +++ b/tests/e2e/assets/nested-schematic-dependency/index.js @@ -0,0 +1 @@ +exports.default = (options) => (tree) => tree.create(options.name || 'empty-file', ''); diff --git a/tests/legacy-cli/e2e/assets/nested-schematic-dependency/package.json b/tests/e2e/assets/nested-schematic-dependency/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/nested-schematic-dependency/package.json rename to tests/e2e/assets/nested-schematic-dependency/package.json diff --git a/tests/legacy-cli/e2e/assets/nested-schematic-main/collection.json b/tests/e2e/assets/nested-schematic-main/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/nested-schematic-main/collection.json rename to tests/e2e/assets/nested-schematic-main/collection.json diff --git a/tests/e2e/assets/nested-schematic-main/index.js b/tests/e2e/assets/nested-schematic-main/index.js new file mode 100644 index 000000000000..1894dbd19b88 --- /dev/null +++ b/tests/e2e/assets/nested-schematic-main/index.js @@ -0,0 +1,2 @@ +exports.default = (options) => + require('@angular-devkit/schematics').externalSchematic('empty-app-nested', 'nested', {}); diff --git a/tests/legacy-cli/e2e/assets/nested-schematic-main/package.json b/tests/e2e/assets/nested-schematic-main/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/nested-schematic-main/package.json rename to tests/e2e/assets/nested-schematic-main/package.json diff --git a/tests/legacy-cli/e2e/assets/protractor-saucelabs.conf.js b/tests/e2e/assets/protractor-saucelabs.conf.js similarity index 100% rename from tests/legacy-cli/e2e/assets/protractor-saucelabs.conf.js rename to tests/e2e/assets/protractor-saucelabs.conf.js diff --git a/tests/legacy-cli/e2e/assets/schematic-allow-scripts/collection.json b/tests/e2e/assets/schematic-allow-scripts/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/schematic-allow-scripts/collection.json rename to tests/e2e/assets/schematic-allow-scripts/collection.json diff --git a/tests/e2e/assets/schematic-allow-scripts/index.js b/tests/e2e/assets/schematic-allow-scripts/index.js new file mode 100644 index 000000000000..b4a44b829a15 --- /dev/null +++ b/tests/e2e/assets/schematic-allow-scripts/index.js @@ -0,0 +1,24 @@ +const tasks = require('@angular-devkit/schematics/tasks'); + +exports.default = ({ allowScripts, ignoreScripts = false }) => { + return (tree, context) => { + tree.create( + '/install-test/package.json', + JSON.stringify({ + name: 'install-test', + version: '0.0.0', + scripts: { + postinstall: `node run-post.js`, + }, + }), + ); + tree.create('/install-test/.npmrc', `ignore-scripts=${ignoreScripts}`); + tree.create( + '/install-test/run-post.js', + 'require("fs").writeFileSync(__dirname + "/post-script-ran", "12345");', + ); + context.addTask( + new tasks.NodePackageInstallTask({ workingDirectory: 'install-test', allowScripts }), + ); + }; +}; diff --git a/tests/legacy-cli/e2e/assets/schematic-allow-scripts/package.json b/tests/e2e/assets/schematic-allow-scripts/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/schematic-allow-scripts/package.json rename to tests/e2e/assets/schematic-allow-scripts/package.json diff --git a/tests/e2e/assets/schematic-allow-scripts/schema.json b/tests/e2e/assets/schematic-allow-scripts/schema.json new file mode 100644 index 000000000000..3dc7b38c6f8d --- /dev/null +++ b/tests/e2e/assets/schematic-allow-scripts/schema.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "type": "object", + "additionalProperties": false, + "properties": { + "allowScripts": { + "type": "boolean" + }, + "ignoreScripts": { + "type": "boolean" + } + } +} diff --git a/tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/collection.json b/tests/e2e/assets/schematic-boolean-option-negated/collection.json similarity index 100% rename from tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/collection.json rename to tests/e2e/assets/schematic-boolean-option-negated/collection.json diff --git a/tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/index.js b/tests/e2e/assets/schematic-boolean-option-negated/index.js similarity index 100% rename from tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/index.js rename to tests/e2e/assets/schematic-boolean-option-negated/index.js diff --git a/tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/package.json b/tests/e2e/assets/schematic-boolean-option-negated/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/package.json rename to tests/e2e/assets/schematic-boolean-option-negated/package.json diff --git a/tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/schema.json b/tests/e2e/assets/schematic-boolean-option-negated/schema.json similarity index 100% rename from tests/legacy-cli/e2e/assets/schematic-boolean-option-negated/schema.json rename to tests/e2e/assets/schematic-boolean-option-negated/schema.json diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/.gitignore b/tests/e2e/assets/ssr-project-webpack/.gitignore similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/.gitignore rename to tests/e2e/assets/ssr-project-webpack/.gitignore diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/README.md b/tests/e2e/assets/ssr-project-webpack/README.md similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/README.md rename to tests/e2e/assets/ssr-project-webpack/README.md diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/angular.json b/tests/e2e/assets/ssr-project-webpack/angular.json similarity index 87% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/angular.json rename to tests/e2e/assets/ssr-project-webpack/angular.json index 9a26600b1843..5637f8e484a2 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/angular.json +++ b/tests/e2e/assets/ssr-project-webpack/angular.json @@ -16,17 +16,10 @@ "outputPath": "dist/ssr-project-webpack/browser", "index": "src/index.html", "main": "src/main.ts", - "polyfills": [ - "zone.js" - ], + "polyfills": ["zone.js"], "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.css"], "scripts": [] }, "configurations": { @@ -77,18 +70,10 @@ "test": { "builder": "@angular-devkit/build-angular:karma", "options": { - "polyfills": [ - "zone.js", - "zone.js/testing" - ], + "polyfills": ["zone.js", "zone.js/testing"], "tsConfig": "tsconfig.spec.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.css"], "scripts": [] } }, @@ -130,9 +115,7 @@ "prerender": { "builder": "@angular-devkit/build-angular:prerender", "options": { - "routes": [ - "/" - ] + "routes": ["/"] }, "configurations": { "production": { diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json b/tests/e2e/assets/ssr-project-webpack/package.json similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/package.json rename to tests/e2e/assets/ssr-project-webpack/package.json diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/server.ts b/tests/e2e/assets/ssr-project-webpack/server.ts similarity index 93% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/server.ts rename to tests/e2e/assets/ssr-project-webpack/server.ts index c0db431c8657..59f788024bb6 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/server.ts +++ b/tests/e2e/assets/ssr-project-webpack/server.ts @@ -23,9 +23,12 @@ export function app(): express.Express { // Example Express Rest API endpoints // server.get('/api/**', (req, res) => { }); // Serve static files from /browser - server.get('*.*', express.static(distFolder, { - maxAge: '1y' - })); + server.get( + '*.*', + express.static(distFolder, { + maxAge: '1y', + }), + ); // All regular routes use the Angular engine server.get('*', (req, res, next) => { @@ -61,7 +64,7 @@ function run(): void { // The below code is to ensure that the server is run only when not requiring the bundle. declare const __non_webpack_require__: NodeRequire; const mainModule = __non_webpack_require__.main; -const moduleFilename = mainModule && mainModule.filename || ''; +const moduleFilename = (mainModule && mainModule.filename) || ''; if (moduleFilename === __filename || moduleFilename.includes('iisnode')) { run(); } diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts b/tests/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts similarity index 75% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts rename to tests/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts index 02972627f8df..f3daf250ad25 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app-routing.module.ts @@ -5,6 +5,6 @@ const routes: Routes = []; @NgModule({ imports: [RouterModule.forRoot(routes)], - exports: [RouterModule] + exports: [RouterModule], }) -export class AppRoutingModule { } +export class AppRoutingModule {} diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.css b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.css similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.css rename to tests/e2e/assets/ssr-project-webpack/src/app/app.component.css diff --git a/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html new file mode 100644 index 000000000000..e99c7ea22c86 --- /dev/null +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html @@ -0,0 +1,770 @@ + + + + + + + + + + + + + + +
+ +
+ + Rocket Ship + + + + + + + + + + {{ title }} app is running! + + + Rocket Ship Smoke + + +
+ + +

Resources

+

Here are some links to help you get started:

+ + + + +

Next Steps

+

What do you want to do next with your app?

+ + + +
+ + + + + + + + + + + +
+ + +
+
ng generate component xyz
+
ng add @angular/material
+
ng add @angular/pwa
+
ng add _____
+
ng test
+
ng build
+
+ + + + + + + + + Gray Clouds Background + + +
+ + + + + + + + + + diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts similarity index 79% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts rename to tests/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts index 7dfb0b7df47c..c3fc75313bcc 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.spec.ts @@ -3,10 +3,12 @@ import { RouterModule } from '@angular/router'; import { AppComponent } from './app.component'; describe('AppComponent', () => { - beforeEach(() => TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([])], - declarations: [AppComponent] - })); + beforeEach(() => + TestBed.configureTestingModule({ + imports: [RouterModule.forRoot([])], + declarations: [AppComponent], + }), + ); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); @@ -24,6 +26,8 @@ describe('AppComponent', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector('.content span')?.textContent).toContain('20-ssr-project-webpack app is running!'); + expect(compiled.querySelector('.content span')?.textContent).toContain( + '20-ssr-project-webpack app is running!', + ); }); }); diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.ts b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.ts similarity index 84% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.ts rename to tests/e2e/assets/ssr-project-webpack/src/app/app.component.ts index f643fddc3586..20b0fef78f45 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.ts +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.ts @@ -4,7 +4,7 @@ import { Component } from '@angular/core'; selector: 'app-root', standalone: false, templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] + styleUrls: ['./app.component.css'], }) export class AppComponent { title = '20-ssr-project-webpack'; diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts b/tests/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts similarity index 83% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts rename to tests/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts index 795380cd2294..d182a9f3e994 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app.module.server.ts @@ -5,10 +5,7 @@ import { AppModule } from './app.module'; import { AppComponent } from './app.component'; @NgModule({ - imports: [ - AppModule, - ServerModule, - ], + imports: [AppModule, ServerModule], bootstrap: [AppComponent], }) export class AppServerModule {} diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.module.ts b/tests/e2e/assets/ssr-project-webpack/src/app/app.module.ts similarity index 55% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.module.ts rename to tests/e2e/assets/ssr-project-webpack/src/app/app.module.ts index a06d9e8b06b4..700cb243fffa 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.module.ts +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app.module.ts @@ -5,16 +5,9 @@ import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @NgModule({ - declarations: [ - AppComponent - ], - imports: [ - BrowserModule, - AppRoutingModule - ], - providers: [ - provideClientHydration() - ], - bootstrap: [AppComponent] + declarations: [AppComponent], + imports: [BrowserModule, AppRoutingModule], + providers: [provideClientHydration()], + bootstrap: [AppComponent], }) -export class AppModule { } +export class AppModule {} diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/assets/.gitkeep b/tests/e2e/assets/ssr-project-webpack/src/assets/.gitkeep similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/assets/.gitkeep rename to tests/e2e/assets/ssr-project-webpack/src/assets/.gitkeep diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/favicon.ico b/tests/e2e/assets/ssr-project-webpack/src/favicon.ico similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/favicon.ico rename to tests/e2e/assets/ssr-project-webpack/src/favicon.ico diff --git a/tests/e2e/assets/ssr-project-webpack/src/index.html b/tests/e2e/assets/ssr-project-webpack/src/index.html new file mode 100644 index 000000000000..28adeacc85ed --- /dev/null +++ b/tests/e2e/assets/ssr-project-webpack/src/index.html @@ -0,0 +1,13 @@ + + + + + 17SsrProjectWebpack + + + + + + + + diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.server.ts b/tests/e2e/assets/ssr-project-webpack/src/main.server.ts similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.server.ts rename to tests/e2e/assets/ssr-project-webpack/src/main.server.ts diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts b/tests/e2e/assets/ssr-project-webpack/src/main.ts similarity index 55% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts rename to tests/e2e/assets/ssr-project-webpack/src/main.ts index f3a8a045a0a7..55b91297823b 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/main.ts +++ b/tests/e2e/assets/ssr-project-webpack/src/main.ts @@ -1,5 +1,6 @@ import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app.module'; -platformBrowser().bootstrapModule(AppModule) - .catch(err => console.error(err)); +platformBrowser() + .bootstrapModule(AppModule) + .catch((err) => console.error(err)); diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/styles.css b/tests/e2e/assets/ssr-project-webpack/src/styles.css similarity index 100% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/src/styles.css rename to tests/e2e/assets/ssr-project-webpack/src/styles.css diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.app.json b/tests/e2e/assets/ssr-project-webpack/tsconfig.app.json similarity index 71% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.app.json rename to tests/e2e/assets/ssr-project-webpack/tsconfig.app.json index 374cc9d294aa..84f1f992d275 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.app.json +++ b/tests/e2e/assets/ssr-project-webpack/tsconfig.app.json @@ -5,10 +5,6 @@ "outDir": "./out-tsc/app", "types": [] }, - "files": [ - "src/main.ts" - ], - "include": [ - "src/**/*.d.ts" - ] + "files": ["src/main.ts"], + "include": ["src/**/*.d.ts"] } diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.json b/tests/e2e/assets/ssr-project-webpack/tsconfig.json similarity index 94% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.json rename to tests/e2e/assets/ssr-project-webpack/tsconfig.json index 532ea4d30a62..bbc051d01524 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.json +++ b/tests/e2e/assets/ssr-project-webpack/tsconfig.json @@ -17,10 +17,7 @@ "importHelpers": true, "target": "ES2022", "module": "ES2022", - "lib": [ - "ES2022", - "dom" - ] + "lib": ["ES2022", "dom"] }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.server.json b/tests/e2e/assets/ssr-project-webpack/tsconfig.server.json similarity index 65% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.server.json rename to tests/e2e/assets/ssr-project-webpack/tsconfig.server.json index e2ebe5a729be..3b9de71a23f6 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.server.json +++ b/tests/e2e/assets/ssr-project-webpack/tsconfig.server.json @@ -3,12 +3,7 @@ "extends": "./tsconfig.app.json", "compilerOptions": { "outDir": "./out-tsc/server", - "types": [ - "node" - ] + "types": ["node"] }, - "files": [ - "src/main.server.ts", - "server.ts" - ] + "files": ["src/main.server.ts", "server.ts"] } diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.spec.json b/tests/e2e/assets/ssr-project-webpack/tsconfig.spec.json similarity index 63% rename from tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.spec.json rename to tests/e2e/assets/ssr-project-webpack/tsconfig.spec.json index be7e9da76f7b..47e3dd755170 100644 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/tsconfig.spec.json +++ b/tests/e2e/assets/ssr-project-webpack/tsconfig.spec.json @@ -3,12 +3,7 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] + "types": ["jasmine"] }, - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] } diff --git a/tests/legacy-cli/e2e/initialize/300-log-environment.ts b/tests/e2e/initialize/300-log-environment.ts similarity index 100% rename from tests/legacy-cli/e2e/initialize/300-log-environment.ts rename to tests/e2e/initialize/300-log-environment.ts diff --git a/tests/legacy-cli/e2e/initialize/500-create-project.ts b/tests/e2e/initialize/500-create-project.ts similarity index 100% rename from tests/legacy-cli/e2e/initialize/500-create-project.ts rename to tests/e2e/initialize/500-create-project.ts diff --git a/tests/legacy-cli/e2e/initialize/BUILD.bazel b/tests/e2e/initialize/BUILD.bazel similarity index 88% rename from tests/legacy-cli/e2e/initialize/BUILD.bazel rename to tests/e2e/initialize/BUILD.bazel index da2466d90621..2ab5b570925f 100644 --- a/tests/legacy-cli/e2e/initialize/BUILD.bazel +++ b/tests/e2e/initialize/BUILD.bazel @@ -11,6 +11,6 @@ ts_project( ], deps = [ "//:node_modules/@types/node", - "//tests/legacy-cli/e2e/utils", + "//tests/e2e/utils", ], ) diff --git a/tests/legacy-cli/e2e/ng-snapshot/BUILD.bazel b/tests/e2e/ng-snapshot/BUILD.bazel similarity index 100% rename from tests/legacy-cli/e2e/ng-snapshot/BUILD.bazel rename to tests/e2e/ng-snapshot/BUILD.bazel diff --git a/tests/legacy-cli/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json similarity index 100% rename from tests/legacy-cli/e2e/ng-snapshot/package.json rename to tests/e2e/ng-snapshot/package.json diff --git a/tests/legacy-cli/e2e/setup/001-npm-sandbox.ts b/tests/e2e/setup/001-npm-sandbox.ts similarity index 100% rename from tests/legacy-cli/e2e/setup/001-npm-sandbox.ts rename to tests/e2e/setup/001-npm-sandbox.ts diff --git a/tests/legacy-cli/e2e/setup/010-local-publish.ts b/tests/e2e/setup/010-local-publish.ts similarity index 100% rename from tests/legacy-cli/e2e/setup/010-local-publish.ts rename to tests/e2e/setup/010-local-publish.ts diff --git a/tests/legacy-cli/e2e/setup/100-global-cli.ts b/tests/e2e/setup/100-global-cli.ts similarity index 100% rename from tests/legacy-cli/e2e/setup/100-global-cli.ts rename to tests/e2e/setup/100-global-cli.ts diff --git a/tests/legacy-cli/e2e/setup/200-create-project-dir.ts b/tests/e2e/setup/200-create-project-dir.ts similarity index 100% rename from tests/legacy-cli/e2e/setup/200-create-project-dir.ts rename to tests/e2e/setup/200-create-project-dir.ts diff --git a/tests/legacy-cli/e2e/setup/BUILD.bazel b/tests/e2e/setup/BUILD.bazel similarity index 85% rename from tests/legacy-cli/e2e/setup/BUILD.bazel rename to tests/e2e/setup/BUILD.bazel index 0b83d8f92d7f..36fe39fa3409 100644 --- a/tests/legacy-cli/e2e/setup/BUILD.bazel +++ b/tests/e2e/setup/BUILD.bazel @@ -8,6 +8,6 @@ ts_project( srcs = glob(["**/*.ts"]), deps = [ "//:node_modules/@types/node", - "//tests/legacy-cli/e2e/utils", + "//tests/e2e/utils", ], ) diff --git a/tests/legacy-cli/e2e/tests/BUILD.bazel b/tests/e2e/tests/BUILD.bazel similarity index 92% rename from tests/legacy-cli/e2e/tests/BUILD.bazel rename to tests/e2e/tests/BUILD.bazel index 0ed3f83428f7..33ced88bca3a 100644 --- a/tests/legacy-cli/e2e/tests/BUILD.bazel +++ b/tests/e2e/tests/BUILD.bazel @@ -14,6 +14,6 @@ ts_project( "//:node_modules/fast-glob", "//:node_modules/semver", "//:node_modules/undici", - "//tests/legacy-cli/e2e/utils", + "//tests/e2e/utils", ], ) diff --git a/tests/legacy-cli/e2e/tests/basic/aot.ts b/tests/e2e/tests/basic/aot.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/aot.ts rename to tests/e2e/tests/basic/aot.ts diff --git a/tests/legacy-cli/e2e/tests/basic/build.ts b/tests/e2e/tests/basic/build.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/build.ts rename to tests/e2e/tests/basic/build.ts diff --git a/tests/legacy-cli/e2e/tests/basic/command-scope.ts b/tests/e2e/tests/basic/command-scope.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/command-scope.ts rename to tests/e2e/tests/basic/command-scope.ts diff --git a/tests/legacy-cli/e2e/tests/basic/rebuild.ts b/tests/e2e/tests/basic/rebuild.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/rebuild.ts rename to tests/e2e/tests/basic/rebuild.ts diff --git a/tests/legacy-cli/e2e/tests/basic/run.ts b/tests/e2e/tests/basic/run.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/run.ts rename to tests/e2e/tests/basic/run.ts diff --git a/tests/legacy-cli/e2e/tests/basic/scripts-array.ts b/tests/e2e/tests/basic/scripts-array.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/scripts-array.ts rename to tests/e2e/tests/basic/scripts-array.ts diff --git a/tests/legacy-cli/e2e/tests/basic/serve.ts b/tests/e2e/tests/basic/serve.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/serve.ts rename to tests/e2e/tests/basic/serve.ts diff --git a/tests/legacy-cli/e2e/tests/basic/styles-array.ts b/tests/e2e/tests/basic/styles-array.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/styles-array.ts rename to tests/e2e/tests/basic/styles-array.ts diff --git a/tests/legacy-cli/e2e/tests/basic/test.ts b/tests/e2e/tests/basic/test.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/basic/test.ts rename to tests/e2e/tests/basic/test.ts diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-ngmodule.ts b/tests/e2e/tests/build/app-shell/app-shell-ngmodule.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/app-shell/app-shell-ngmodule.ts rename to tests/e2e/tests/build/app-shell/app-shell-ngmodule.ts diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts b/tests/e2e/tests/build/app-shell/app-shell-with-schematic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-schematic.ts rename to tests/e2e/tests/build/app-shell/app-shell-with-schematic.ts diff --git a/tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts b/tests/e2e/tests/build/app-shell/app-shell-with-service-worker.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/app-shell/app-shell-with-service-worker.ts rename to tests/e2e/tests/build/app-shell/app-shell-with-service-worker.ts diff --git a/tests/legacy-cli/e2e/tests/build/assets.ts b/tests/e2e/tests/build/assets.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/assets.ts rename to tests/e2e/tests/build/assets.ts diff --git a/tests/legacy-cli/e2e/tests/build/auto-csp.ts b/tests/e2e/tests/build/auto-csp.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/auto-csp.ts rename to tests/e2e/tests/build/auto-csp.ts diff --git a/tests/legacy-cli/e2e/tests/build/bundle-budgets.ts b/tests/e2e/tests/build/bundle-budgets.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/bundle-budgets.ts rename to tests/e2e/tests/build/bundle-budgets.ts diff --git a/tests/legacy-cli/e2e/tests/build/chunk-optimizer-lazy.ts b/tests/e2e/tests/build/chunk-optimizer-lazy.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/chunk-optimizer-lazy.ts rename to tests/e2e/tests/build/chunk-optimizer-lazy.ts diff --git a/tests/legacy-cli/e2e/tests/build/chunk-optimizer.ts b/tests/e2e/tests/build/chunk-optimizer.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/chunk-optimizer.ts rename to tests/e2e/tests/build/chunk-optimizer.ts diff --git a/tests/legacy-cli/e2e/tests/build/config-file-fallback.ts b/tests/e2e/tests/build/config-file-fallback.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/config-file-fallback.ts rename to tests/e2e/tests/build/config-file-fallback.ts diff --git a/tests/legacy-cli/e2e/tests/build/css-urls.ts b/tests/e2e/tests/build/css-urls.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/css-urls.ts rename to tests/e2e/tests/build/css-urls.ts diff --git a/tests/legacy-cli/e2e/tests/build/disk-cache-purge.ts b/tests/e2e/tests/build/disk-cache-purge.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/disk-cache-purge.ts rename to tests/e2e/tests/build/disk-cache-purge.ts diff --git a/tests/legacy-cli/e2e/tests/build/disk-cache.ts b/tests/e2e/tests/build/disk-cache.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/disk-cache.ts rename to tests/e2e/tests/build/disk-cache.ts diff --git a/tests/legacy-cli/e2e/tests/build/esbuild-unsupported.ts b/tests/e2e/tests/build/esbuild-unsupported.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/esbuild-unsupported.ts rename to tests/e2e/tests/build/esbuild-unsupported.ts diff --git a/tests/legacy-cli/e2e/tests/build/extract-licenses.ts b/tests/e2e/tests/build/extract-licenses.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/extract-licenses.ts rename to tests/e2e/tests/build/extract-licenses.ts diff --git a/tests/legacy-cli/e2e/tests/build/incremental-watch.ts b/tests/e2e/tests/build/incremental-watch.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/incremental-watch.ts rename to tests/e2e/tests/build/incremental-watch.ts diff --git a/tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts b/tests/e2e/tests/build/jit-ngmodule.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/jit-ngmodule.ts rename to tests/e2e/tests/build/jit-ngmodule.ts diff --git a/tests/legacy-cli/e2e/tests/build/jit-prod.ts b/tests/e2e/tests/build/jit-prod.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/jit-prod.ts rename to tests/e2e/tests/build/jit-prod.ts diff --git a/tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts b/tests/e2e/tests/build/lazy-load-syntax.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts rename to tests/e2e/tests/build/lazy-load-syntax.ts diff --git a/tests/legacy-cli/e2e/tests/build/library-with-demo-app.ts b/tests/e2e/tests/build/library-with-demo-app.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library-with-demo-app.ts rename to tests/e2e/tests/build/library-with-demo-app.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-aot.ts b/tests/e2e/tests/build/library/lib-consumption-full-aot.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-aot.ts rename to tests/e2e/tests/build/library/lib-consumption-full-aot.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-jit.ts b/tests/e2e/tests/build/library/lib-consumption-full-jit.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/lib-consumption-full-jit.ts rename to tests/e2e/tests/build/library/lib-consumption-full-jit.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-partial-aot.ts b/tests/e2e/tests/build/library/lib-consumption-partial-aot.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/lib-consumption-partial-aot.ts rename to tests/e2e/tests/build/library/lib-consumption-partial-aot.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-partial-jit.ts b/tests/e2e/tests/build/library/lib-consumption-partial-jit.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/lib-consumption-partial-jit.ts rename to tests/e2e/tests/build/library/lib-consumption-partial-jit.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-consumption-sourcemaps.ts b/tests/e2e/tests/build/library/lib-consumption-sourcemaps.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/lib-consumption-sourcemaps.ts rename to tests/e2e/tests/build/library/lib-consumption-sourcemaps.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts b/tests/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts rename to tests/e2e/tests/build/library/lib-unused-decorated-class-treeshake.ts diff --git a/tests/legacy-cli/e2e/tests/build/library/setup.ts b/tests/e2e/tests/build/library/setup.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/library/setup.ts rename to tests/e2e/tests/build/library/setup.ts diff --git a/tests/legacy-cli/e2e/tests/build/material.ts b/tests/e2e/tests/build/material.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/material.ts rename to tests/e2e/tests/build/material.ts diff --git a/tests/legacy-cli/e2e/tests/build/multiple-configs.ts b/tests/e2e/tests/build/multiple-configs.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/multiple-configs.ts rename to tests/e2e/tests/build/multiple-configs.ts diff --git a/tests/legacy-cli/e2e/tests/build/output-dir.ts b/tests/e2e/tests/build/output-dir.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/output-dir.ts rename to tests/e2e/tests/build/output-dir.ts diff --git a/tests/legacy-cli/e2e/tests/build/poll.ts b/tests/e2e/tests/build/poll.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/poll.ts rename to tests/e2e/tests/build/poll.ts diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts b/tests/e2e/tests/build/prerender/discover-routes-ngmodule.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/prerender/discover-routes-ngmodule.ts rename to tests/e2e/tests/build/prerender/discover-routes-ngmodule.ts diff --git a/tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts b/tests/e2e/tests/build/prerender/discover-routes-standalone.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/prerender/discover-routes-standalone.ts rename to tests/e2e/tests/build/prerender/discover-routes-standalone.ts diff --git a/tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts b/tests/e2e/tests/build/prerender/error-with-sourcemaps.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/prerender/error-with-sourcemaps.ts rename to tests/e2e/tests/build/prerender/error-with-sourcemaps.ts diff --git a/tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts b/tests/e2e/tests/build/prerender/http-requests-assets.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/prerender/http-requests-assets.ts rename to tests/e2e/tests/build/prerender/http-requests-assets.ts diff --git a/tests/legacy-cli/e2e/tests/build/prod-build.ts b/tests/e2e/tests/build/prod-build.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/prod-build.ts rename to tests/e2e/tests/build/prod-build.ts diff --git a/tests/legacy-cli/e2e/tests/build/progress-and-stats.ts b/tests/e2e/tests/build/progress-and-stats.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/progress-and-stats.ts rename to tests/e2e/tests/build/progress-and-stats.ts diff --git a/tests/legacy-cli/e2e/tests/build/project-name.ts b/tests/e2e/tests/build/project-name.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/project-name.ts rename to tests/e2e/tests/build/project-name.ts diff --git a/tests/legacy-cli/e2e/tests/build/rebuild-deps-type-check.ts b/tests/e2e/tests/build/rebuild-deps-type-check.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/rebuild-deps-type-check.ts rename to tests/e2e/tests/build/rebuild-deps-type-check.ts diff --git a/tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts b/tests/e2e/tests/build/rebuild-dot-dirname.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/rebuild-dot-dirname.ts rename to tests/e2e/tests/build/rebuild-dot-dirname.ts diff --git a/tests/legacy-cli/e2e/tests/build/rebuild-replacements.ts b/tests/e2e/tests/build/rebuild-replacements.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/rebuild-replacements.ts rename to tests/e2e/tests/build/rebuild-replacements.ts diff --git a/tests/legacy-cli/e2e/tests/build/rebuild-symlink.ts b/tests/e2e/tests/build/rebuild-symlink.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/rebuild-symlink.ts rename to tests/e2e/tests/build/rebuild-symlink.ts diff --git a/tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts b/tests/e2e/tests/build/relative-sourcemap.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/relative-sourcemap.ts rename to tests/e2e/tests/build/relative-sourcemap.ts diff --git a/tests/legacy-cli/e2e/tests/build/scripts-output-hashing.ts b/tests/e2e/tests/build/scripts-output-hashing.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/scripts-output-hashing.ts rename to tests/e2e/tests/build/scripts-output-hashing.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts b/tests/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts rename to tests/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts b/tests/e2e/tests/build/server-rendering/express-engine-ngmodule.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-ngmodule.ts rename to tests/e2e/tests/build/server-rendering/express-engine-ngmodule.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts b/tests/e2e/tests/build/server-rendering/express-engine-standalone.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/express-engine-standalone.ts rename to tests/e2e/tests/build/server-rendering/express-engine-standalone.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-external-dependencies.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-base-href.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n-sub-path.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-i18n.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-server-platform-neutral.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-server.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-static-http-calls.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-static-i18n_APP_BASE_HREF.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts b/tests/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts rename to tests/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts b/tests/e2e/tests/build/server-rendering/server-routes-preload-links.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-preload-links.ts rename to tests/e2e/tests/build/server-rendering/server-routes-preload-links.ts diff --git a/tests/legacy-cli/e2e/tests/build/sourcemap.ts b/tests/e2e/tests/build/sourcemap.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/sourcemap.ts rename to tests/e2e/tests/build/sourcemap.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/bootstrap.ts b/tests/e2e/tests/build/styles/bootstrap.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/bootstrap.ts rename to tests/e2e/tests/build/styles/bootstrap.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/include-paths.ts b/tests/e2e/tests/build/styles/include-paths.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/include-paths.ts rename to tests/e2e/tests/build/styles/include-paths.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/less.ts b/tests/e2e/tests/build/styles/less.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/less.ts rename to tests/e2e/tests/build/styles/less.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/loaders.ts b/tests/e2e/tests/build/styles/loaders.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/loaders.ts rename to tests/e2e/tests/build/styles/loaders.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/sass-pkg-importer.ts b/tests/e2e/tests/build/styles/sass-pkg-importer.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/sass-pkg-importer.ts rename to tests/e2e/tests/build/styles/sass-pkg-importer.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/sass.ts b/tests/e2e/tests/build/styles/sass.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/sass.ts rename to tests/e2e/tests/build/styles/sass.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/scss-partial-resolution.ts b/tests/e2e/tests/build/styles/scss-partial-resolution.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/scss-partial-resolution.ts rename to tests/e2e/tests/build/styles/scss-partial-resolution.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/scss.ts b/tests/e2e/tests/build/styles/scss.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/scss.ts rename to tests/e2e/tests/build/styles/scss.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/symlinked-global.ts b/tests/e2e/tests/build/styles/symlinked-global.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/symlinked-global.ts rename to tests/e2e/tests/build/styles/symlinked-global.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v2.ts b/tests/e2e/tests/build/styles/tailwind-v2.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/tailwind-v2.ts rename to tests/e2e/tests/build/styles/tailwind-v2.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v3-cjs.ts b/tests/e2e/tests/build/styles/tailwind-v3-cjs.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/tailwind-v3-cjs.ts rename to tests/e2e/tests/build/styles/tailwind-v3-cjs.ts diff --git a/tests/legacy-cli/e2e/tests/build/styles/tailwind-v3.ts b/tests/e2e/tests/build/styles/tailwind-v3.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/styles/tailwind-v3.ts rename to tests/e2e/tests/build/styles/tailwind-v3.ts diff --git a/tests/legacy-cli/e2e/tests/build/ts-paths.ts b/tests/e2e/tests/build/ts-paths.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/ts-paths.ts rename to tests/e2e/tests/build/ts-paths.ts diff --git a/tests/legacy-cli/e2e/tests/build/ts-standard-decorators.ts b/tests/e2e/tests/build/ts-standard-decorators.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/ts-standard-decorators.ts rename to tests/e2e/tests/build/ts-standard-decorators.ts diff --git a/tests/legacy-cli/e2e/tests/build/wasm-esm.ts b/tests/e2e/tests/build/wasm-esm.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/wasm-esm.ts rename to tests/e2e/tests/build/wasm-esm.ts diff --git a/tests/legacy-cli/e2e/tests/build/worker.ts b/tests/e2e/tests/build/worker.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/build/worker.ts rename to tests/e2e/tests/build/worker.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/add-material.ts b/tests/e2e/tests/commands/add/add-material.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/add-material.ts rename to tests/e2e/tests/commands/add/add-material.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/add-pwa.ts b/tests/e2e/tests/commands/add/add-pwa.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/add-pwa.ts rename to tests/e2e/tests/commands/add/add-pwa.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/add-tailwindcss.ts b/tests/e2e/tests/commands/add/add-tailwindcss.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/add-tailwindcss.ts rename to tests/e2e/tests/commands/add/add-tailwindcss.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/add-version.ts b/tests/e2e/tests/commands/add/add-version.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/add-version.ts rename to tests/e2e/tests/commands/add/add-version.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/add.ts b/tests/e2e/tests/commands/add/add.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/add.ts rename to tests/e2e/tests/commands/add/add.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/base.ts b/tests/e2e/tests/commands/add/base.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/base.ts rename to tests/e2e/tests/commands/add/base.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/dir.ts b/tests/e2e/tests/commands/add/dir.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/dir.ts rename to tests/e2e/tests/commands/add/dir.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/file.ts b/tests/e2e/tests/commands/add/file.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/file.ts rename to tests/e2e/tests/commands/add/file.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/npm-config.ts b/tests/e2e/tests/commands/add/npm-config.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/npm-config.ts rename to tests/e2e/tests/commands/add/npm-config.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/peer.ts b/tests/e2e/tests/commands/add/peer.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/peer.ts rename to tests/e2e/tests/commands/add/peer.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/registry-option.ts b/tests/e2e/tests/commands/add/registry-option.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/registry-option.ts rename to tests/e2e/tests/commands/add/registry-option.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts b/tests/e2e/tests/commands/add/secure-registry.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/secure-registry.ts rename to tests/e2e/tests/commands/add/secure-registry.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/version-specifier.ts b/tests/e2e/tests/commands/add/version-specifier.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/version-specifier.ts rename to tests/e2e/tests/commands/add/version-specifier.ts diff --git a/tests/legacy-cli/e2e/tests/commands/add/yarn-env-vars.ts b/tests/e2e/tests/commands/add/yarn-env-vars.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/add/yarn-env-vars.ts rename to tests/e2e/tests/commands/add/yarn-env-vars.ts diff --git a/tests/legacy-cli/e2e/tests/commands/additional-properties.ts b/tests/e2e/tests/commands/additional-properties.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/additional-properties.ts rename to tests/e2e/tests/commands/additional-properties.ts diff --git a/tests/legacy-cli/e2e/tests/commands/analytics/analytics-enable-disable.ts b/tests/e2e/tests/commands/analytics/analytics-enable-disable.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/analytics/analytics-enable-disable.ts rename to tests/e2e/tests/commands/analytics/analytics-enable-disable.ts diff --git a/tests/legacy-cli/e2e/tests/commands/analytics/analytics-info.ts b/tests/e2e/tests/commands/analytics/analytics-info.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/analytics/analytics-info.ts rename to tests/e2e/tests/commands/analytics/analytics-info.ts diff --git a/tests/legacy-cli/e2e/tests/commands/analytics/ask-analytics-command.ts b/tests/e2e/tests/commands/analytics/ask-analytics-command.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/analytics/ask-analytics-command.ts rename to tests/e2e/tests/commands/analytics/ask-analytics-command.ts diff --git a/tests/legacy-cli/e2e/tests/commands/builder-not-found.ts b/tests/e2e/tests/commands/builder-not-found.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/builder-not-found.ts rename to tests/e2e/tests/commands/builder-not-found.ts diff --git a/tests/legacy-cli/e2e/tests/commands/builder-project-by-cwd.ts b/tests/e2e/tests/commands/builder-project-by-cwd.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/builder-project-by-cwd.ts rename to tests/e2e/tests/commands/builder-project-by-cwd.ts diff --git a/tests/legacy-cli/e2e/tests/commands/cache/cache-clean.ts b/tests/e2e/tests/commands/cache/cache-clean.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/cache/cache-clean.ts rename to tests/e2e/tests/commands/cache/cache-clean.ts diff --git a/tests/legacy-cli/e2e/tests/commands/cache/cache-enable-disable.ts b/tests/e2e/tests/commands/cache/cache-enable-disable.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/cache/cache-enable-disable.ts rename to tests/e2e/tests/commands/cache/cache-enable-disable.ts diff --git a/tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts b/tests/e2e/tests/commands/cache/cache-info.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/cache/cache-info.ts rename to tests/e2e/tests/commands/cache/cache-info.ts diff --git a/tests/legacy-cli/e2e/tests/commands/completion/completion-prompt.ts b/tests/e2e/tests/commands/completion/completion-prompt.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/completion/completion-prompt.ts rename to tests/e2e/tests/commands/completion/completion-prompt.ts diff --git a/tests/legacy-cli/e2e/tests/commands/completion/completion-script.ts b/tests/e2e/tests/commands/completion/completion-script.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/completion/completion-script.ts rename to tests/e2e/tests/commands/completion/completion-script.ts diff --git a/tests/legacy-cli/e2e/tests/commands/completion/completion.ts b/tests/e2e/tests/commands/completion/completion.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/completion/completion.ts rename to tests/e2e/tests/commands/completion/completion.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-get.ts b/tests/e2e/tests/commands/config/config-get.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-get.ts rename to tests/e2e/tests/commands/config/config-get.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-global-validation.ts b/tests/e2e/tests/commands/config/config-global-validation.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-global-validation.ts rename to tests/e2e/tests/commands/config/config-global-validation.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-global.ts b/tests/e2e/tests/commands/config/config-global.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-global.ts rename to tests/e2e/tests/commands/config/config-global.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-set-enum-check.ts b/tests/e2e/tests/commands/config/config-set-enum-check.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-set-enum-check.ts rename to tests/e2e/tests/commands/config/config-set-enum-check.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-set-prefix.ts b/tests/e2e/tests/commands/config/config-set-prefix.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-set-prefix.ts rename to tests/e2e/tests/commands/config/config-set-prefix.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-set-serve-port.ts b/tests/e2e/tests/commands/config/config-set-serve-port.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-set-serve-port.ts rename to tests/e2e/tests/commands/config/config-set-serve-port.ts diff --git a/tests/legacy-cli/e2e/tests/commands/config/config-set.ts b/tests/e2e/tests/commands/config/config-set.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/config/config-set.ts rename to tests/e2e/tests/commands/config/config-set.ts diff --git a/tests/legacy-cli/e2e/tests/commands/help/help-hidden.ts b/tests/e2e/tests/commands/help/help-hidden.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/help/help-hidden.ts rename to tests/e2e/tests/commands/help/help-hidden.ts diff --git a/tests/legacy-cli/e2e/tests/commands/help/help-json.ts b/tests/e2e/tests/commands/help/help-json.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/help/help-json.ts rename to tests/e2e/tests/commands/help/help-json.ts diff --git a/tests/legacy-cli/e2e/tests/commands/ng-new-collection.ts b/tests/e2e/tests/commands/ng-new-collection.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/ng-new-collection.ts rename to tests/e2e/tests/commands/ng-new-collection.ts diff --git a/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts b/tests/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts rename to tests/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts diff --git a/tests/legacy-cli/e2e/tests/commands/run-configuration-option.ts b/tests/e2e/tests/commands/run-configuration-option.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/run-configuration-option.ts rename to tests/e2e/tests/commands/run-configuration-option.ts diff --git a/tests/legacy-cli/e2e/tests/commands/serve/assets.ts b/tests/e2e/tests/commands/serve/assets.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/serve/assets.ts rename to tests/e2e/tests/commands/serve/assets.ts diff --git a/tests/legacy-cli/e2e/tests/commands/serve/head-request.ts b/tests/e2e/tests/commands/serve/head-request.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/serve/head-request.ts rename to tests/e2e/tests/commands/serve/head-request.ts diff --git a/tests/legacy-cli/e2e/tests/commands/serve/preflight-request.ts b/tests/e2e/tests/commands/serve/preflight-request.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/serve/preflight-request.ts rename to tests/e2e/tests/commands/serve/preflight-request.ts diff --git a/tests/legacy-cli/e2e/tests/commands/serve/reload-shims.ts b/tests/e2e/tests/commands/serve/reload-shims.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/serve/reload-shims.ts rename to tests/e2e/tests/commands/serve/reload-shims.ts diff --git a/tests/legacy-cli/e2e/tests/commands/serve/serve-path.ts b/tests/e2e/tests/commands/serve/serve-path.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/serve/serve-path.ts rename to tests/e2e/tests/commands/serve/serve-path.ts diff --git a/tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts b/tests/e2e/tests/commands/serve/ssr-http-requests-assets.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/serve/ssr-http-requests-assets.ts rename to tests/e2e/tests/commands/serve/ssr-http-requests-assets.ts diff --git a/tests/legacy-cli/e2e/tests/commands/unknown-configuration.ts b/tests/e2e/tests/commands/unknown-configuration.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/unknown-configuration.ts rename to tests/e2e/tests/commands/unknown-configuration.ts diff --git a/tests/legacy-cli/e2e/tests/commands/unknown-option.ts b/tests/e2e/tests/commands/unknown-option.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/commands/unknown-option.ts rename to tests/e2e/tests/commands/unknown-option.ts diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-ng-module.ts b/tests/e2e/tests/generate/application/application-no-zoneless-ng-module.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-ng-module.ts rename to tests/e2e/tests/generate/application/application-no-zoneless-ng-module.ts diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-standalone.ts b/tests/e2e/tests/generate/application/application-no-zoneless-standalone.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/application/application-no-zoneless-standalone.ts rename to tests/e2e/tests/generate/application/application-no-zoneless-standalone.ts diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-ng-module.ts b/tests/e2e/tests/generate/application/application-zoneless-ng-module.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/application/application-zoneless-ng-module.ts rename to tests/e2e/tests/generate/application/application-zoneless-ng-module.ts diff --git a/tests/legacy-cli/e2e/tests/generate/application/application-zoneless-standalone.ts b/tests/e2e/tests/generate/application/application-zoneless-standalone.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/application/application-zoneless-standalone.ts rename to tests/e2e/tests/generate/application/application-zoneless-standalone.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-basic.ts b/tests/e2e/tests/generate/component/component-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-basic.ts rename to tests/e2e/tests/generate/component/component-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts b/tests/e2e/tests/generate/component/component-child-dir.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-child-dir.ts rename to tests/e2e/tests/generate/component/component-child-dir.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-flat.ts b/tests/e2e/tests/generate/component/component-flat.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-flat.ts rename to tests/e2e/tests/generate/component/component-flat.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts b/tests/e2e/tests/generate/component/component-inline-template.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-inline-template.ts rename to tests/e2e/tests/generate/component/component-inline-template.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts b/tests/e2e/tests/generate/component/component-not-flat.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-not-flat.ts rename to tests/e2e/tests/generate/component/component-not-flat.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts b/tests/e2e/tests/generate/component/component-path-case.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-path-case.ts rename to tests/e2e/tests/generate/component/component-path-case.ts diff --git a/tests/legacy-cli/e2e/tests/generate/component/component-prefix.ts b/tests/e2e/tests/generate/component/component-prefix.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/component/component-prefix.ts rename to tests/e2e/tests/generate/component/component-prefix.ts diff --git a/tests/legacy-cli/e2e/tests/generate/config/type-browserslist.ts b/tests/e2e/tests/generate/config/type-browserslist.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/config/type-browserslist.ts rename to tests/e2e/tests/generate/config/type-browserslist.ts diff --git a/tests/legacy-cli/e2e/tests/generate/config/type-karma.ts b/tests/e2e/tests/generate/config/type-karma.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/config/type-karma.ts rename to tests/e2e/tests/generate/config/type-karma.ts diff --git a/tests/legacy-cli/e2e/tests/generate/directive/directive-basic.ts b/tests/e2e/tests/generate/directive/directive-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/directive/directive-basic.ts rename to tests/e2e/tests/generate/directive/directive-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts b/tests/e2e/tests/generate/directive/directive-prefix.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/directive/directive-prefix.ts rename to tests/e2e/tests/generate/directive/directive-prefix.ts diff --git a/tests/legacy-cli/e2e/tests/generate/generate-error.ts b/tests/e2e/tests/generate/generate-error.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/generate-error.ts rename to tests/e2e/tests/generate/generate-error.ts diff --git a/tests/legacy-cli/e2e/tests/generate/generate-name-check.ts b/tests/e2e/tests/generate/generate-name-check.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/generate-name-check.ts rename to tests/e2e/tests/generate/generate-name-check.ts diff --git a/tests/legacy-cli/e2e/tests/generate/guard/guard-basic.ts b/tests/e2e/tests/generate/guard/guard-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/guard/guard-basic.ts rename to tests/e2e/tests/generate/guard/guard-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/guard/guard-implements.ts b/tests/e2e/tests/generate/guard/guard-implements.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/guard/guard-implements.ts rename to tests/e2e/tests/generate/guard/guard-implements.ts diff --git a/tests/legacy-cli/e2e/tests/generate/guard/guard-multiple-implements.ts b/tests/e2e/tests/generate/guard/guard-multiple-implements.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/guard/guard-multiple-implements.ts rename to tests/e2e/tests/generate/guard/guard-multiple-implements.ts diff --git a/tests/legacy-cli/e2e/tests/generate/help-output-no-duplicates.ts b/tests/e2e/tests/generate/help-output-no-duplicates.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/help-output-no-duplicates.ts rename to tests/e2e/tests/generate/help-output-no-duplicates.ts diff --git a/tests/legacy-cli/e2e/tests/generate/help-output.ts b/tests/e2e/tests/generate/help-output.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/help-output.ts rename to tests/e2e/tests/generate/help-output.ts diff --git a/tests/legacy-cli/e2e/tests/generate/install-allow-scripts.ts b/tests/e2e/tests/generate/install-allow-scripts.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/install-allow-scripts.ts rename to tests/e2e/tests/generate/install-allow-scripts.ts diff --git a/tests/legacy-cli/e2e/tests/generate/interceptor/interceptor-basic.ts b/tests/e2e/tests/generate/interceptor/interceptor-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/interceptor/interceptor-basic.ts rename to tests/e2e/tests/generate/interceptor/interceptor-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/library/library-basic.ts b/tests/e2e/tests/generate/library/library-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/library/library-basic.ts rename to tests/e2e/tests/generate/library/library-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/library/library-standalone.ts b/tests/e2e/tests/generate/library/library-standalone.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/library/library-standalone.ts rename to tests/e2e/tests/generate/library/library-standalone.ts diff --git a/tests/legacy-cli/e2e/tests/generate/module/module-basic.ts b/tests/e2e/tests/generate/module/module-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/module/module-basic.ts rename to tests/e2e/tests/generate/module/module-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/module/module-import.ts b/tests/e2e/tests/generate/module/module-import.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/module/module-import.ts rename to tests/e2e/tests/generate/module/module-import.ts diff --git a/tests/legacy-cli/e2e/tests/generate/module/module-routing-child-folder.ts b/tests/e2e/tests/generate/module/module-routing-child-folder.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/module/module-routing-child-folder.ts rename to tests/e2e/tests/generate/module/module-routing-child-folder.ts diff --git a/tests/legacy-cli/e2e/tests/generate/pipe/pipe-basic.ts b/tests/e2e/tests/generate/pipe/pipe-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/pipe/pipe-basic.ts rename to tests/e2e/tests/generate/pipe/pipe-basic.ts diff --git a/tests/legacy-cli/e2e/tests/generate/schematic-aliases.ts b/tests/e2e/tests/generate/schematic-aliases.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/schematic-aliases.ts rename to tests/e2e/tests/generate/schematic-aliases.ts diff --git a/tests/legacy-cli/e2e/tests/generate/schematic-defaults.ts b/tests/e2e/tests/generate/schematic-defaults.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/schematic-defaults.ts rename to tests/e2e/tests/generate/schematic-defaults.ts diff --git a/tests/legacy-cli/e2e/tests/generate/schematic-force-override.ts b/tests/e2e/tests/generate/schematic-force-override.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/schematic-force-override.ts rename to tests/e2e/tests/generate/schematic-force-override.ts diff --git a/tests/legacy-cli/e2e/tests/generate/schematics-collections-relative.ts b/tests/e2e/tests/generate/schematics-collections-relative.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/schematics-collections-relative.ts rename to tests/e2e/tests/generate/schematics-collections-relative.ts diff --git a/tests/legacy-cli/e2e/tests/generate/schematics-collections.ts b/tests/e2e/tests/generate/schematics-collections.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/schematics-collections.ts rename to tests/e2e/tests/generate/schematics-collections.ts diff --git a/tests/legacy-cli/e2e/tests/generate/service/service-basic.ts b/tests/e2e/tests/generate/service/service-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/generate/service/service-basic.ts rename to tests/e2e/tests/generate/service/service-basic.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts b/tests/e2e/tests/i18n/extract-ivy-disk-cache.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/extract-ivy-disk-cache.ts rename to tests/e2e/tests/i18n/extract-ivy-disk-cache.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts b/tests/e2e/tests/i18n/extract-ivy-libraries.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/extract-ivy-libraries.ts rename to tests/e2e/tests/i18n/extract-ivy-libraries.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts b/tests/e2e/tests/i18n/extract-ivy.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/extract-ivy.ts rename to tests/e2e/tests/i18n/extract-ivy.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts b/tests/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts rename to tests/e2e/tests/i18n/ivy-localize-app-shell-service-worker.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts b/tests/e2e/tests/i18n/ivy-localize-app-shell.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-app-shell.ts rename to tests/e2e/tests/i18n/ivy-localize-app-shell.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-basehref-absolute.ts b/tests/e2e/tests/i18n/ivy-localize-basehref-absolute.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-basehref-absolute.ts rename to tests/e2e/tests/i18n/ivy-localize-basehref-absolute.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-basehref.ts b/tests/e2e/tests/i18n/ivy-localize-basehref.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-basehref.ts rename to tests/e2e/tests/i18n/ivy-localize-basehref.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015-e2e.ts b/tests/e2e/tests/i18n/ivy-localize-es2015-e2e.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015-e2e.ts rename to tests/e2e/tests/i18n/ivy-localize-es2015-e2e.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts b/tests/e2e/tests/i18n/ivy-localize-es2015.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-es2015.ts rename to tests/e2e/tests/i18n/ivy-localize-es2015.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-hashes.ts b/tests/e2e/tests/i18n/ivy-localize-hashes.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-hashes.ts rename to tests/e2e/tests/i18n/ivy-localize-hashes.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data-augment.ts b/tests/e2e/tests/i18n/ivy-localize-locale-data-augment.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data-augment.ts rename to tests/e2e/tests/i18n/ivy-localize-locale-data-augment.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data.ts b/tests/e2e/tests/i18n/ivy-localize-locale-data.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-locale-data.ts rename to tests/e2e/tests/i18n/ivy-localize-locale-data.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-merging.ts b/tests/e2e/tests/i18n/ivy-localize-merging.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-merging.ts rename to tests/e2e/tests/i18n/ivy-localize-merging.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-sourcelocale.ts b/tests/e2e/tests/i18n/ivy-localize-sourcelocale.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-sourcelocale.ts rename to tests/e2e/tests/i18n/ivy-localize-sourcelocale.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-sourcemaps.ts b/tests/e2e/tests/i18n/ivy-localize-sourcemaps.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-sourcemaps.ts rename to tests/e2e/tests/i18n/ivy-localize-sourcemaps.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-ssr.ts b/tests/e2e/tests/i18n/ivy-localize-ssr.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-ssr.ts rename to tests/e2e/tests/i18n/ivy-localize-ssr.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/ivy-localize-sub-path.ts b/tests/e2e/tests/i18n/ivy-localize-sub-path.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/ivy-localize-sub-path.ts rename to tests/e2e/tests/i18n/ivy-localize-sub-path.ts diff --git a/tests/legacy-cli/e2e/tests/i18n/setup.ts b/tests/e2e/tests/i18n/setup.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/i18n/setup.ts rename to tests/e2e/tests/i18n/setup.ts diff --git a/tests/legacy-cli/e2e/tests/jest/aot.ts b/tests/e2e/tests/jest/aot.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/jest/aot.ts rename to tests/e2e/tests/jest/aot.ts diff --git a/tests/legacy-cli/e2e/tests/jest/basic.ts b/tests/e2e/tests/jest/basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/jest/basic.ts rename to tests/e2e/tests/jest/basic.ts diff --git a/tests/legacy-cli/e2e/tests/jest/custom-config.ts b/tests/e2e/tests/jest/custom-config.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/jest/custom-config.ts rename to tests/e2e/tests/jest/custom-config.ts diff --git a/tests/legacy-cli/e2e/tests/jest/no-zoneless.ts b/tests/e2e/tests/jest/no-zoneless.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/jest/no-zoneless.ts rename to tests/e2e/tests/jest/no-zoneless.ts diff --git a/tests/legacy-cli/e2e/tests/mcp/ai-tutor.ts b/tests/e2e/tests/mcp/ai-tutor.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/mcp/ai-tutor.ts rename to tests/e2e/tests/mcp/ai-tutor.ts diff --git a/tests/legacy-cli/e2e/tests/mcp/best-practices.ts b/tests/e2e/tests/mcp/best-practices.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/mcp/best-practices.ts rename to tests/e2e/tests/mcp/best-practices.ts diff --git a/tests/legacy-cli/e2e/tests/mcp/find-examples-basic.ts b/tests/e2e/tests/mcp/find-examples-basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/mcp/find-examples-basic.ts rename to tests/e2e/tests/mcp/find-examples-basic.ts diff --git a/tests/legacy-cli/e2e/tests/mcp/registers-tools.ts b/tests/e2e/tests/mcp/registers-tools.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/mcp/registers-tools.ts rename to tests/e2e/tests/mcp/registers-tools.ts diff --git a/tests/legacy-cli/e2e/tests/misc/ask-missing-builder.ts b/tests/e2e/tests/misc/ask-missing-builder.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/ask-missing-builder.ts rename to tests/e2e/tests/misc/ask-missing-builder.ts diff --git a/tests/legacy-cli/e2e/tests/misc/browsers.ts b/tests/e2e/tests/misc/browsers.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/browsers.ts rename to tests/e2e/tests/misc/browsers.ts diff --git a/tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts b/tests/e2e/tests/misc/check-postinstalls.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/check-postinstalls.ts rename to tests/e2e/tests/misc/check-postinstalls.ts diff --git a/tests/legacy-cli/e2e/tests/misc/create-angular.ts b/tests/e2e/tests/misc/create-angular.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/create-angular.ts rename to tests/e2e/tests/misc/create-angular.ts diff --git a/tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts b/tests/e2e/tests/misc/dedupe-duplicate-modules.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/dedupe-duplicate-modules.ts rename to tests/e2e/tests/misc/dedupe-duplicate-modules.ts diff --git a/tests/legacy-cli/e2e/tests/misc/duplicate-command-line-option.ts b/tests/e2e/tests/misc/duplicate-command-line-option.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/duplicate-command-line-option.ts rename to tests/e2e/tests/misc/duplicate-command-line-option.ts diff --git a/tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts b/tests/e2e/tests/misc/es2015-nometa.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/es2015-nometa.ts rename to tests/e2e/tests/misc/es2015-nometa.ts diff --git a/tests/legacy-cli/e2e/tests/misc/forwardref-es2015.ts b/tests/e2e/tests/misc/forwardref-es2015.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/forwardref-es2015.ts rename to tests/e2e/tests/misc/forwardref-es2015.ts diff --git a/tests/legacy-cli/e2e/tests/misc/invalid-schematic-dependencies.ts b/tests/e2e/tests/misc/invalid-schematic-dependencies.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/invalid-schematic-dependencies.ts rename to tests/e2e/tests/misc/invalid-schematic-dependencies.ts diff --git a/tests/legacy-cli/e2e/tests/misc/loaders-resolution.ts b/tests/e2e/tests/misc/loaders-resolution.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/loaders-resolution.ts rename to tests/e2e/tests/misc/loaders-resolution.ts diff --git a/tests/legacy-cli/e2e/tests/misc/module-resolution/module-resolution-core-mapping.ts b/tests/e2e/tests/misc/module-resolution/module-resolution-core-mapping.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/module-resolution/module-resolution-core-mapping.ts rename to tests/e2e/tests/misc/module-resolution/module-resolution-core-mapping.ts diff --git a/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts b/tests/e2e/tests/misc/multiple-targets.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/multiple-targets.ts rename to tests/e2e/tests/misc/multiple-targets.ts diff --git a/tests/legacy-cli/e2e/tests/misc/negated-boolean-options.ts b/tests/e2e/tests/misc/negated-boolean-options.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/negated-boolean-options.ts rename to tests/e2e/tests/misc/negated-boolean-options.ts diff --git a/tests/legacy-cli/e2e/tests/misc/nested-schematic-packages.ts b/tests/e2e/tests/misc/nested-schematic-packages.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/nested-schematic-packages.ts rename to tests/e2e/tests/misc/nested-schematic-packages.ts diff --git a/tests/legacy-cli/e2e/tests/misc/supported-angular.ts b/tests/e2e/tests/misc/supported-angular.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/supported-angular.ts rename to tests/e2e/tests/misc/supported-angular.ts diff --git a/tests/legacy-cli/e2e/tests/misc/target-default-configuration.ts b/tests/e2e/tests/misc/target-default-configuration.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/target-default-configuration.ts rename to tests/e2e/tests/misc/target-default-configuration.ts diff --git a/tests/legacy-cli/e2e/tests/misc/trace-resolution.ts b/tests/e2e/tests/misc/trace-resolution.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/trace-resolution.ts rename to tests/e2e/tests/misc/trace-resolution.ts diff --git a/tests/legacy-cli/e2e/tests/misc/trusted-types.ts b/tests/e2e/tests/misc/trusted-types.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/trusted-types.ts rename to tests/e2e/tests/misc/trusted-types.ts diff --git a/tests/legacy-cli/e2e/tests/misc/update-git-clean-subdirectory.ts b/tests/e2e/tests/misc/update-git-clean-subdirectory.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/update-git-clean-subdirectory.ts rename to tests/e2e/tests/misc/update-git-clean-subdirectory.ts diff --git a/tests/legacy-cli/e2e/tests/misc/update-git-clean.ts b/tests/e2e/tests/misc/update-git-clean.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/update-git-clean.ts rename to tests/e2e/tests/misc/update-git-clean.ts diff --git a/tests/legacy-cli/e2e/tests/misc/version.ts b/tests/e2e/tests/misc/version.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/version.ts rename to tests/e2e/tests/misc/version.ts diff --git a/tests/legacy-cli/e2e/tests/misc/workspace-verification.ts b/tests/e2e/tests/misc/workspace-verification.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/misc/workspace-verification.ts rename to tests/e2e/tests/misc/workspace-verification.ts diff --git a/tests/legacy-cli/e2e/tests/protractor/test-fails.ts b/tests/e2e/tests/protractor/test-fails.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/protractor/test-fails.ts rename to tests/e2e/tests/protractor/test-fails.ts diff --git a/tests/legacy-cli/e2e/tests/schematics_cli/basic.ts b/tests/e2e/tests/schematics_cli/basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/schematics_cli/basic.ts rename to tests/e2e/tests/schematics_cli/basic.ts diff --git a/tests/legacy-cli/e2e/tests/schematics_cli/blank-test.ts b/tests/e2e/tests/schematics_cli/blank-test.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/schematics_cli/blank-test.ts rename to tests/e2e/tests/schematics_cli/blank-test.ts diff --git a/tests/legacy-cli/e2e/tests/schematics_cli/schematic-test.ts b/tests/e2e/tests/schematics_cli/schematic-test.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/schematics_cli/schematic-test.ts rename to tests/e2e/tests/schematics_cli/schematic-test.ts diff --git a/tests/legacy-cli/e2e/tests/test/karma-junit-output.ts b/tests/e2e/tests/test/karma-junit-output.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/karma-junit-output.ts rename to tests/e2e/tests/test/karma-junit-output.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-code-coverage-exclude.ts b/tests/e2e/tests/test/test-code-coverage-exclude.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-code-coverage-exclude.ts rename to tests/e2e/tests/test/test-code-coverage-exclude.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-environment.ts b/tests/e2e/tests/test/test-environment.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-environment.ts rename to tests/e2e/tests/test/test-environment.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-fail-single-run.ts b/tests/e2e/tests/test/test-fail-single-run.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-fail-single-run.ts rename to tests/e2e/tests/test/test-fail-single-run.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-include-glob.ts b/tests/e2e/tests/test/test-include-glob.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-include-glob.ts rename to tests/e2e/tests/test/test-include-glob.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-jasmine-clock.ts b/tests/e2e/tests/test/test-jasmine-clock.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-jasmine-clock.ts rename to tests/e2e/tests/test/test-jasmine-clock.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-scripts.ts b/tests/e2e/tests/test/test-scripts.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-scripts.ts rename to tests/e2e/tests/test/test-scripts.ts diff --git a/tests/legacy-cli/e2e/tests/test/test-sourcemap.ts b/tests/e2e/tests/test/test-sourcemap.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/test/test-sourcemap.ts rename to tests/e2e/tests/test/test-sourcemap.ts diff --git a/tests/legacy-cli/e2e/tests/update/update-application-builder.ts b/tests/e2e/tests/update/update-application-builder.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/update/update-application-builder.ts rename to tests/e2e/tests/update/update-application-builder.ts diff --git a/tests/legacy-cli/e2e/tests/update/update-multiple-versions.ts b/tests/e2e/tests/update/update-multiple-versions.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/update/update-multiple-versions.ts rename to tests/e2e/tests/update/update-multiple-versions.ts diff --git a/tests/legacy-cli/e2e/tests/update/update-secure-registry.ts b/tests/e2e/tests/update/update-secure-registry.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/update/update-secure-registry.ts rename to tests/e2e/tests/update/update-secure-registry.ts diff --git a/tests/legacy-cli/e2e/tests/update/update.ts b/tests/e2e/tests/update/update.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/update/update.ts rename to tests/e2e/tests/update/update.ts diff --git a/tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts b/tests/e2e/tests/vite/reuse-dep-optimization-cache.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/reuse-dep-optimization-cache.ts rename to tests/e2e/tests/vite/reuse-dep-optimization-cache.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-base-href.ts b/tests/e2e/tests/vite/ssr-base-href.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-base-href.ts rename to tests/e2e/tests/vite/ssr-base-href.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-default.ts b/tests/e2e/tests/vite/ssr-default.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-default.ts rename to tests/e2e/tests/vite/ssr-default.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts b/tests/e2e/tests/vite/ssr-entry-express.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-entry-express.ts rename to tests/e2e/tests/vite/ssr-entry-express.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts b/tests/e2e/tests/vite/ssr-entry-fastify.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-entry-fastify.ts rename to tests/e2e/tests/vite/ssr-entry-fastify.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts b/tests/e2e/tests/vite/ssr-entry-h3.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-entry-h3.ts rename to tests/e2e/tests/vite/ssr-entry-h3.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts b/tests/e2e/tests/vite/ssr-entry-hono.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-entry-hono.ts rename to tests/e2e/tests/vite/ssr-entry-hono.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts b/tests/e2e/tests/vite/ssr-error-stack.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-error-stack.ts rename to tests/e2e/tests/vite/ssr-error-stack.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts b/tests/e2e/tests/vite/ssr-new-dep-optimization.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-new-dep-optimization.ts rename to tests/e2e/tests/vite/ssr-new-dep-optimization.ts diff --git a/tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts b/tests/e2e/tests/vite/ssr-with-ssl.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vite/ssr-with-ssl.ts rename to tests/e2e/tests/vite/ssr-with-ssl.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts b/tests/e2e/tests/vitest/browser-no-globals.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/browser-no-globals.ts rename to tests/e2e/tests/vitest/browser-no-globals.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts b/tests/e2e/tests/vitest/browser-playwright.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/browser-playwright.ts rename to tests/e2e/tests/vitest/browser-playwright.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/browser-webdriverio.ts b/tests/e2e/tests/vitest/browser-webdriverio.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/browser-webdriverio.ts rename to tests/e2e/tests/vitest/browser-webdriverio.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/component.ts b/tests/e2e/tests/vitest/component.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/component.ts rename to tests/e2e/tests/vitest/component.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/include.ts b/tests/e2e/tests/vitest/include.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/include.ts rename to tests/e2e/tests/vitest/include.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts b/tests/e2e/tests/vitest/larger-project-coverage.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/larger-project-coverage.ts rename to tests/e2e/tests/vitest/larger-project-coverage.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/larger-project.ts b/tests/e2e/tests/vitest/larger-project.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/larger-project.ts rename to tests/e2e/tests/vitest/larger-project.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/runner-config-path.ts b/tests/e2e/tests/vitest/runner-config-path.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/runner-config-path.ts rename to tests/e2e/tests/vitest/runner-config-path.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/snapshot.ts b/tests/e2e/tests/vitest/snapshot.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/snapshot.ts rename to tests/e2e/tests/vitest/snapshot.ts diff --git a/tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts b/tests/e2e/tests/vitest/tslib-resolution.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/vitest/tslib-resolution.ts rename to tests/e2e/tests/vitest/tslib-resolution.ts diff --git a/tests/legacy-cli/e2e/tests/web-test-runner/basic.ts b/tests/e2e/tests/web-test-runner/basic.ts similarity index 100% rename from tests/legacy-cli/e2e/tests/web-test-runner/basic.ts rename to tests/e2e/tests/web-test-runner/basic.ts diff --git a/tests/legacy-cli/e2e/utils/BUILD.bazel b/tests/e2e/utils/BUILD.bazel similarity index 93% rename from tests/legacy-cli/e2e/utils/BUILD.bazel rename to tests/e2e/utils/BUILD.bazel index 093a4f832092..b3de5c29f9b5 100644 --- a/tests/legacy-cli/e2e/utils/BUILD.bazel +++ b/tests/e2e/utils/BUILD.bazel @@ -7,7 +7,7 @@ ts_project( testonly = True, srcs = glob(["**/*.ts"]), data = [ - "//tests/legacy-cli/e2e/ng-snapshot", + "//tests/e2e/ng-snapshot", ], deps = [ "//:node_modules/@types/jasmine", diff --git a/tests/legacy-cli/e2e/utils/assets.ts b/tests/e2e/utils/assets.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/assets.ts rename to tests/e2e/utils/assets.ts diff --git a/tests/legacy-cli/e2e/utils/env.ts b/tests/e2e/utils/env.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/env.ts rename to tests/e2e/utils/env.ts diff --git a/tests/legacy-cli/e2e/utils/fs.ts b/tests/e2e/utils/fs.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/fs.ts rename to tests/e2e/utils/fs.ts diff --git a/tests/legacy-cli/e2e/utils/git.ts b/tests/e2e/utils/git.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/git.ts rename to tests/e2e/utils/git.ts diff --git a/tests/legacy-cli/e2e/utils/jest.ts b/tests/e2e/utils/jest.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/jest.ts rename to tests/e2e/utils/jest.ts diff --git a/tests/legacy-cli/e2e/utils/network.ts b/tests/e2e/utils/network.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/network.ts rename to tests/e2e/utils/network.ts diff --git a/tests/legacy-cli/e2e/utils/packages.ts b/tests/e2e/utils/packages.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/packages.ts rename to tests/e2e/utils/packages.ts diff --git a/tests/legacy-cli/e2e/utils/process.ts b/tests/e2e/utils/process.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/process.ts rename to tests/e2e/utils/process.ts diff --git a/tests/legacy-cli/e2e/utils/project.ts b/tests/e2e/utils/project.ts similarity index 99% rename from tests/legacy-cli/e2e/utils/project.ts rename to tests/e2e/utils/project.ts index fe9cfd8a0e04..58e249d19895 100644 --- a/tests/legacy-cli/e2e/utils/project.ts +++ b/tests/e2e/utils/project.ts @@ -119,7 +119,7 @@ export async function useSha(): Promise { if (missingSnapshots.length > 0) { throw new Error( 'e2e test with --ng-snapshots requires all angular packages be ' + - 'listed in tests/legacy-cli/e2e/ng-snapshot/package.json.\nErrors:\n' + + 'listed in tests/e2e/ng-snapshot/package.json.\nErrors:\n' + missingSnapshots.join('\n '), ); } diff --git a/tests/legacy-cli/e2e/utils/registry.ts b/tests/e2e/utils/registry.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/registry.ts rename to tests/e2e/utils/registry.ts diff --git a/tests/legacy-cli/e2e/utils/tar.ts b/tests/e2e/utils/tar.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/tar.ts rename to tests/e2e/utils/tar.ts diff --git a/tests/legacy-cli/e2e/utils/test_process.ts b/tests/e2e/utils/test_process.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/test_process.ts rename to tests/e2e/utils/test_process.ts diff --git a/tests/legacy-cli/e2e/utils/utils.ts b/tests/e2e/utils/utils.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/utils.ts rename to tests/e2e/utils/utils.ts diff --git a/tests/legacy-cli/e2e/utils/version.ts b/tests/e2e/utils/version.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/version.ts rename to tests/e2e/utils/version.ts diff --git a/tests/legacy-cli/e2e/utils/vitest.ts b/tests/e2e/utils/vitest.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/vitest.ts rename to tests/e2e/utils/vitest.ts diff --git a/tests/legacy-cli/e2e/utils/web-test-runner.ts b/tests/e2e/utils/web-test-runner.ts similarity index 100% rename from tests/legacy-cli/e2e/utils/web-test-runner.ts rename to tests/e2e/utils/web-test-runner.ts diff --git a/tests/legacy-cli/e2e_runner.ts b/tests/e2e_runner.ts similarity index 99% rename from tests/legacy-cli/e2e_runner.ts rename to tests/e2e_runner.ts index 571f7dea5363..c7a672161b7a 100644 --- a/tests/legacy-cli/e2e_runner.ts +++ b/tests/e2e_runner.ts @@ -1,5 +1,5 @@ import { parseArgs, styleText } from 'node:util'; -import { createConsoleLogger } from '../../packages/angular_devkit/core/node'; +import { createConsoleLogger } from '../packages/angular_devkit/core/node'; import glob from 'fast-glob'; import * as path from 'node:path'; import * as fs from 'node:fs'; diff --git a/tests/legacy-cli/BUILD.bazel b/tests/legacy-cli/BUILD.bazel deleted file mode 100644 index 23acd2ddd3ff..000000000000 --- a/tests/legacy-cli/BUILD.bazel +++ /dev/null @@ -1,73 +0,0 @@ -load("@aspect_bazel_lib//lib:directory_path.bzl", "directory_path") -load("@npm//:rollup/package_json.bzl", rollup = "bin") -load("//tools:defaults.bzl", "ts_project") -load(":e2e.bzl", "e2e_suites") - -package(default_visibility = ["//visibility:public"]) - -ts_project( - name = "runner", - testonly = True, - srcs = [ - "e2e_runner.ts", - ], - deps = [ - "//:node_modules/@types/node", - "//:node_modules/fast-glob", - "//packages/angular_devkit/core", - "//packages/angular_devkit/core/node", - "//tests/legacy-cli/e2e/utils", - ], -) - -rollup.rollup( - name = "runner_bundled", - testonly = True, - srcs = [ - "rollup.config.mjs", - ":runner", - "//:node_modules/@rollup/plugin-alias", - "//:node_modules/@rollup/plugin-commonjs", - "//:node_modules/@rollup/plugin-json", - "//:node_modules/@rollup/plugin-node-resolve", - "//:node_modules/fast-glob", - "//tests/legacy-cli/e2e/initialize", - "//tests/legacy-cli/e2e/ng-snapshot", - "//tests/legacy-cli/e2e/setup", - "//tests/legacy-cli/e2e/tests", - ], - args = [ - "--format=cjs", - "--config=./rollup.config.mjs", - ], - chdir = package_name(), - out_dirs = ["runner_bundled_out"], - progress_message = "Bundling e2e test runner", -) - -directory_path( - name = "runner_entrypoint", - testonly = True, - directory = ":runner_bundled", - path = "./e2e_runner.js", -) - -e2e_suites( - name = "e2e", - data = [ - ":runner_bundled", - "verdaccio.yaml", - "verdaccio_auth.yaml", - - # Dynamically loaded. - "//tests/legacy-cli/e2e/assets", - "//:node_modules/verdaccio", - "//:node_modules/verdaccio-auth-memory", - - # Extra runtime deps due to bundling issues. - # TODO: Clean this up. - "//:node_modules/express", - "//:node_modules/undici", - ], - runner = ":runner_entrypoint", -) diff --git a/tests/legacy-cli/e2e/assets/19.0-project/src/index.html b/tests/legacy-cli/e2e/assets/19.0-project/src/index.html deleted file mode 100644 index a78f28c335bf..000000000000 --- a/tests/legacy-cli/e2e/assets/19.0-project/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - NineteenProject - - - - - - - - diff --git a/tests/legacy-cli/e2e/assets/add-collection-dir/index.js b/tests/legacy-cli/e2e/assets/add-collection-dir/index.js deleted file mode 100644 index cf404a768650..000000000000 --- a/tests/legacy-cli/e2e/assets/add-collection-dir/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.default = (options) => tree => tree.create(options.name || 'empty-file', ''); diff --git a/tests/legacy-cli/e2e/assets/add-collection-peer-bad/index.js b/tests/legacy-cli/e2e/assets/add-collection-peer-bad/index.js deleted file mode 100644 index 867b3a4eb6fd..000000000000 --- a/tests/legacy-cli/e2e/assets/add-collection-peer-bad/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.default = (options) => tree => tree.create(options.name || 'empty-file-peer-bad', ''); diff --git a/tests/legacy-cli/e2e/assets/add-collection-peer-good/index.js b/tests/legacy-cli/e2e/assets/add-collection-peer-good/index.js deleted file mode 100644 index 4d5dbdca2f69..000000000000 --- a/tests/legacy-cli/e2e/assets/add-collection-peer-good/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.default = (options) => tree => tree.create(options.name || 'empty-file-peer-good', ''); diff --git a/tests/legacy-cli/e2e/assets/nested-schematic-dependency/index.js b/tests/legacy-cli/e2e/assets/nested-schematic-dependency/index.js deleted file mode 100644 index cf404a768650..000000000000 --- a/tests/legacy-cli/e2e/assets/nested-schematic-dependency/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.default = (options) => tree => tree.create(options.name || 'empty-file', ''); diff --git a/tests/legacy-cli/e2e/assets/nested-schematic-main/index.js b/tests/legacy-cli/e2e/assets/nested-schematic-main/index.js deleted file mode 100644 index 9763f96fbb58..000000000000 --- a/tests/legacy-cli/e2e/assets/nested-schematic-main/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.default = (options) => require("@angular-devkit/schematics").externalSchematic('empty-app-nested', 'nested', {}); diff --git a/tests/legacy-cli/e2e/assets/schematic-allow-scripts/index.js b/tests/legacy-cli/e2e/assets/schematic-allow-scripts/index.js deleted file mode 100644 index 20fb52c65137..000000000000 --- a/tests/legacy-cli/e2e/assets/schematic-allow-scripts/index.js +++ /dev/null @@ -1,16 +0,0 @@ -const tasks = require("@angular-devkit/schematics/tasks"); - -exports.default = ({ allowScripts, ignoreScripts = false }) => { - return (tree, context) => { - tree.create('/install-test/package.json', JSON.stringify({ - name: 'install-test', - version: '0.0.0', - scripts: { - postinstall: `node run-post.js`, - } - })); - tree.create('/install-test/.npmrc', `ignore-scripts=${ignoreScripts}`); - tree.create('/install-test/run-post.js', 'require("fs").writeFileSync(__dirname + "/post-script-ran", "12345");') - context.addTask(new tasks.NodePackageInstallTask({ workingDirectory: 'install-test', allowScripts })); - }; -}; diff --git a/tests/legacy-cli/e2e/assets/schematic-allow-scripts/schema.json b/tests/legacy-cli/e2e/assets/schematic-allow-scripts/schema.json deleted file mode 100644 index 099432e4063a..000000000000 --- a/tests/legacy-cli/e2e/assets/schematic-allow-scripts/schema.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "type": "object", - "additionalProperties": false, - "properties": { - "allowScripts": { - "type": "boolean" - }, - "ignoreScripts": { - "type": "boolean" - } - } -} - \ No newline at end of file diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.html b/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.html deleted file mode 100644 index a1ab9650d463..000000000000 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/app/app.component.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - - - - - - - - - - - -
- - -
- - - Rocket Ship - - - - - - - - - - {{ title }} app is running! - - - Rocket Ship Smoke - - - -
- - -

Resources

-

Here are some links to help you get started:

- - - - -

Next Steps

-

What do you want to do next with your app?

- - - -
- - - - - - - - - - - -
- - -
-
ng generate component xyz
-
ng add @angular/material
-
ng add @angular/pwa
-
ng add _____
-
ng test
-
ng build
-
- - - - - - - - - Gray Clouds Background - - - -
- - - - - - - - - - diff --git a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/index.html b/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/index.html deleted file mode 100644 index ca14f8bfb86f..000000000000 --- a/tests/legacy-cli/e2e/assets/ssr-project-webpack/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - 17SsrProjectWebpack - - - - - - - - diff --git a/tests/legacy-cli/rollup.config.mjs b/tests/rollup.config.mjs similarity index 100% rename from tests/legacy-cli/rollup.config.mjs rename to tests/rollup.config.mjs diff --git a/tests/legacy-cli/tsconfig.json b/tests/tsconfig.json similarity index 100% rename from tests/legacy-cli/tsconfig.json rename to tests/tsconfig.json diff --git a/tests/legacy-cli/verdaccio.yaml b/tests/verdaccio.yaml similarity index 100% rename from tests/legacy-cli/verdaccio.yaml rename to tests/verdaccio.yaml diff --git a/tests/legacy-cli/verdaccio_auth.yaml b/tests/verdaccio_auth.yaml similarity index 100% rename from tests/legacy-cli/verdaccio_auth.yaml rename to tests/verdaccio_auth.yaml From 18d74dde8938dbe566df80753d5c148c19040179 Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Wed, 17 Dec 2025 16:47:21 +0100 Subject: [PATCH 2005/2162] fix(@angular/cli): rename mcp devserver tools to comply with naming spec This change renames `devserver/start`, `devserver/stop`, and `devserver/wait_for_build` to `devserver.start`, `devserver.stop`, and `devserver.wait_for_build` respectively. This fixes a warning about invalid characters in tool names as per the spec: https://modelcontextprotocol.io/specification/draft/server/tools#tool-names ``` 2025-12-17 16:32:44.992 [warning] [server stderr] Tool name validation warning for "devserver/wait_for_build": 2025-12-17 16:32:44.992 [warning] [server stderr] - Tool name contains invalid characters: "/" ``` --- .../angular/cli/src/commands/mcp/tools/build.ts | 2 +- .../mcp/tools/devserver/devserver-start.ts | 14 +++++++------- .../commands/mcp/tools/devserver/devserver-stop.ts | 4 ++-- .../tools/devserver/devserver-wait-for-build.ts | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index 5f3500d609ec..7984fc864dc6 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -97,7 +97,7 @@ Perform a one-off, non-watched build using "ng build". Use this tool whenever th * This tool runs "ng build" so it expects to run within an Angular workspace. -* If you want a watched build which updates as files are changed, use "devserver/start" instead, which also serves the app. +* If you want a watched build which updates as files are changed, use "devserver.start" instead, which also serves the app. * You can provide a project instead of building the root one. The "list_projects" MCP tool could be used to obtain the list of projects. * This tool defaults to a development environment while a regular "ng build" defaults to a production environment. An unexpected build failure might suggest the project is not configured for the requested environment. diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts index 831cc5488e56..574a937fe073 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts @@ -66,26 +66,26 @@ export const DEVSERVER_START_TOOL: McpToolDeclaration< typeof devserverStartToolInputSchema.shape, typeof devserverStartToolOutputSchema.shape > = declareTool({ - name: 'devserver/start', + name: 'devserver.start', title: 'Start Development Server', description: ` -Starts the Angular development server ("ng serve") as a background process. Follow this up with "devserver/wait_for_build" to wait until +Starts the Angular development server ("ng serve") as a background process. Follow this up with "devserver.wait_for_build" to wait until the first build completes. * **Starting the Server:** Use this tool to begin serving the application. The tool will return immediately while the server runs in the background. -* **Get Initial Build Logs:** Once a dev server has started, use the "devserver/wait_for_build" tool to ensure it's alive. If there are any - build errors, "devserver/wait_for_build" would provide them back and you can give them to the user or rely on them to propose a fix. -* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver/stop" wasn't called), after every time you make a - change to the workspace, re-run "devserver/wait_for_build" to see whether the change was successfully built and wait for the devserver to +* **Get Initial Build Logs:** Once a dev server has started, use the "devserver.wait_for_build" tool to ensure it's alive. If there are any + build errors, "devserver.wait_for_build" would provide them back and you can give them to the user or rely on them to propose a fix. +* **Get Updated Build Logs:** Important: as long as a devserver is alive (i.e. "devserver.stop" wasn't called), after every time you make a + change to the workspace, re-run "devserver.wait_for_build" to see whether the change was successfully built and wait for the devserver to be updated. * This tool manages development servers by itself. It maintains at most a single dev server instance for each project in the monorepo. * This is an asynchronous operation. Subsequent commands can be ran while the server is active. -* Use 'devserver/stop' to gracefully shut down the server and access the full log output. +* Use 'devserver.stop' to gracefully shut down the server and access the full log output. `, isReadOnly: true, diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts index faefbae3b73f..203cd1770a7d 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts @@ -53,11 +53,11 @@ export const DEVSERVER_STOP_TOOL: McpToolDeclaration< typeof devserverStopToolInputSchema.shape, typeof devserverStopToolOutputSchema.shape > = declareTool({ - name: 'devserver/stop', + name: 'devserver.stop', title: 'Stop Development Server', description: ` -Stops a running Angular development server ("ng serve") that was started with the "devserver/start" tool. +Stops a running Angular development server ("ng serve") that was started with the "devserver.start" tool. * **Stopping the Server:** Use this tool to terminate a running development server and retrieve the logs. diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts index 38e162123428..945c38f0c30e 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts @@ -89,26 +89,26 @@ export const DEVSERVER_WAIT_FOR_BUILD_TOOL: McpToolDeclaration< typeof devserverWaitForBuildToolInputSchema.shape, typeof devserverWaitForBuildToolOutputSchema.shape > = declareTool({ - name: 'devserver/wait_for_build', + name: 'devserver.wait_for_build', title: 'Wait for Devserver Build', description: ` -Waits for a dev server that was started with the "devserver/start" tool to complete its build, then reports the build logs from its most +Waits for a dev server that was started with the "devserver.start" tool to complete its build, then reports the build logs from its most recent build. -* **Waiting for a build:** As long as a devserver is alive ("devserver/start" was called for this project and "devserver_stop" wasn't +* **Waiting for a build:** As long as a devserver is alive ("devserver.start" was called for this project and "devserver.stop" wasn't called yet), then if you're making a file change and want to ensure it was successfully built, call this tool instead of any other build tool or command. When it retuns you'll get build logs back **and** you'll know the user's devserver is up-to-date with the latest changes. -* This tool expects that a dev server was launched on the same project with the "devserver/start" tool, otherwise a "no_devserver_found" +* This tool expects that a dev server was launched on the same project with the "devserver.start" tool, otherwise a "no_devserver_found" status will be returned. * This tool will block until the build is complete or the timeout is reached. If you expect a long build process, consider increasing the - timeout. Timeouts on initial run (right after "devserver/start" calls) or after a big change are not necessarily indicative of an error. + timeout. Timeouts on initial run (right after "devserver.start" calls) or after a big change are not necessarily indicative of an error. * If you encountered a timeout and it might be reasonable, just call this tool again. * If the dev server is not building, it will return quickly, with the logs from the last build. -* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "devserver/start" +* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "devserver.start" tool again, before giving up. `, From 9c9d7c5cb333bea3a9da70da964d1546c4f863a2 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 17 Dec 2025 16:48:41 +0000 Subject: [PATCH 2006/2162] refactor: correct tsconfig.json extends path Correct the path. --- tests/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tsconfig.json b/tests/tsconfig.json index 235d85b0bb7c..5070cc5b6927 100644 --- a/tests/tsconfig.json +++ b/tests/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig-test.json", + "extends": "../tsconfig-test.json", "compilerOptions": { "paths": {} }, "exclude": ["e2e/assets/**"] } From 8a295444cdb2bc4985a757d3ca62bcd94d0aa1ed Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 17 Dec 2025 05:07:09 +0000 Subject: [PATCH 2007/2162] build: update github/codeql-action action to v4.31.9 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 2a922e78a6b7..3932ccf6a3b8 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@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1a673d9b94ac..63ad55057037 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@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7 + uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 with: sarif_file: results.sarif From cf0512d5ddd86e09567583a3c21f1213fce40928 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:39:29 -0500 Subject: [PATCH 2008/2162] refactor(@angular-devkit/architect): consolidate architect cli into core package Moves the `architect` CLI implementation from `@angular-devkit/architect-cli` into the `@angular-devkit/architect` package itself. This change aims to make the `@angular-devkit/architect` package more self-contained by hosting its own CLI entry point. The `@angular-devkit/architect-cli` package now serves as a lightweight wrapper, importing the `architect` binary directly from the core package. --- packages/angular_devkit/architect/BUILD.bazel | 2 ++ .../angular_devkit/architect/bin/BUILD.bazel | 28 +++++++++++++++++++ .../bin/architect.ts | 4 +-- packages/angular_devkit/architect/bin/cli.js | 10 +++++++ .../angular_devkit/architect/package.json | 3 ++ .../angular_devkit/architect_cli/BUILD.bazel | 17 ++--------- .../angular_devkit/architect_cli/bin/cli.js | 10 +++++++ .../angular_devkit/architect_cli/package.json | 6 ++-- pnpm-lock.yaml | 3 -- .../tests/architect_cli/direct_execution.ts | 14 ++++++++++ .../tests/architect_cli/package_execution.ts | 22 +++++++++++++++ 11 files changed, 96 insertions(+), 23 deletions(-) create mode 100644 packages/angular_devkit/architect/bin/BUILD.bazel rename packages/angular_devkit/{architect_cli => architect}/bin/architect.ts (98%) create mode 100755 packages/angular_devkit/architect/bin/cli.js create mode 100644 packages/angular_devkit/architect_cli/bin/cli.js create mode 100644 tests/e2e/tests/architect_cli/direct_execution.ts create mode 100644 tests/e2e/tests/architect_cli/package_execution.ts diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 1c550d124e84..92fce0d2bfb3 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -110,6 +110,8 @@ npm_package( "README.md", ":architect", ":license", + "//packages/angular_devkit/architect/bin", + "//packages/angular_devkit/architect/bin:cli.js", "//packages/angular_devkit/architect/node", "//packages/angular_devkit/architect/testing", ], diff --git a/packages/angular_devkit/architect/bin/BUILD.bazel b/packages/angular_devkit/architect/bin/BUILD.bazel new file mode 100644 index 000000000000..cb7d761ac84d --- /dev/null +++ b/packages/angular_devkit/architect/bin/BUILD.bazel @@ -0,0 +1,28 @@ +# Copyright Google Inc. 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 + +load("//tools:defaults.bzl", "ts_project") + +licenses(["notice"]) + +package(default_visibility = ["//visibility:public"]) + +exports_files([ + "cli.js", +]) + +ts_project( + name = "bin", + srcs = glob( + include = ["**/*.ts"], + exclude = ["**/*_spec.ts"], + ), + deps = [ + "//:node_modules/@types/node", + "//packages/angular_devkit/architect", + "//packages/angular_devkit/architect:node_modules/@angular-devkit/core", + "//packages/angular_devkit/architect/node", + ], +) diff --git a/packages/angular_devkit/architect_cli/bin/architect.ts b/packages/angular_devkit/architect/bin/architect.ts similarity index 98% rename from packages/angular_devkit/architect_cli/bin/architect.ts rename to packages/angular_devkit/architect/bin/architect.ts index 05045da094e7..acfd798b89a2 100644 --- a/packages/angular_devkit/architect_cli/bin/architect.ts +++ b/packages/angular_devkit/architect/bin/architect.ts @@ -7,13 +7,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Architect } from '@angular-devkit/architect'; -import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node'; import { JsonValue, json, logging, schema, strings, tags, workspaces } from '@angular-devkit/core'; import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node'; import { existsSync } from 'node:fs'; import * as path from 'node:path'; import { parseArgs, styleText } from 'node:util'; +import { Architect } from '../index'; +import { WorkspaceNodeModulesArchitectHost } from '../node/index'; function findUp(names: string | string[], from: string) { if (!Array.isArray(names)) { diff --git a/packages/angular_devkit/architect/bin/cli.js b/packages/angular_devkit/architect/bin/cli.js new file mode 100755 index 000000000000..be5ba36279df --- /dev/null +++ b/packages/angular_devkit/architect/bin/cli.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +/** + * @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 + */ + +require('./architect'); diff --git a/packages/angular_devkit/architect/package.json b/packages/angular_devkit/architect/package.json index 0080d4654372..c3f51752bc0c 100644 --- a/packages/angular_devkit/architect/package.json +++ b/packages/angular_devkit/architect/package.json @@ -3,6 +3,9 @@ "version": "0.0.0-EXPERIMENTAL-PLACEHOLDER", "description": "Angular Build Facade", "experimental": true, + "bin": { + "architect": "./bin/cli.js" + }, "main": "src/index.js", "typings": "src/index.d.ts", "dependencies": { diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 75cfe3a320e0..291238b8d897 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -1,5 +1,5 @@ load("@npm//:defs.bzl", "npm_link_all_packages") -load("//tools:defaults.bzl", "npm_package", "ts_project") +load("//tools:defaults.bzl", "npm_package") # Copyright Google Inc. All Rights Reserved. # @@ -11,18 +11,6 @@ package(default_visibility = ["//visibility:public"]) npm_link_all_packages() -ts_project( - name = "architect_cli", - srcs = [ - "bin/architect.ts", - ], - deps = [ - ":node_modules/@angular-devkit/architect", - ":node_modules/@angular-devkit/core", - "//:node_modules/@types/node", - ], -) - genrule( name = "license", srcs = ["//:LICENSE"], @@ -34,12 +22,11 @@ npm_package( name = "pkg", pkg_deps = [ "//packages/angular_devkit/architect:package.json", - "//packages/angular_devkit/core:package.json", ], tags = ["release-package"], deps = [ ":README.md", - ":architect_cli", + ":bin/cli.js", ":license", ], ) diff --git a/packages/angular_devkit/architect_cli/bin/cli.js b/packages/angular_devkit/architect_cli/bin/cli.js new file mode 100644 index 000000000000..c1988e048dec --- /dev/null +++ b/packages/angular_devkit/architect_cli/bin/cli.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +/** + * @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 '@angular-devkit/architect/bin/architect.js'; diff --git a/packages/angular_devkit/architect_cli/package.json b/packages/angular_devkit/architect_cli/package.json index ab452501a009..bf1ba1d2debb 100644 --- a/packages/angular_devkit/architect_cli/package.json +++ b/packages/angular_devkit/architect_cli/package.json @@ -1,11 +1,12 @@ { "name": "@angular-devkit/architect-cli", "version": "0.0.0-EXPERIMENTAL-PLACEHOLDER", + "type": "module", "description": "Angular Architect CLI", "homepage": "https://github.com/angular/angular-cli", "experimental": true, "bin": { - "architect": "./bin/architect.js" + "architect": "./bin/cli.js" }, "keywords": [ "build system", @@ -14,7 +15,6 @@ "tooling" ], "dependencies": { - "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", - "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER" + "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 692b94ea74e0..bd45d4feafc8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -565,9 +565,6 @@ importers: '@angular-devkit/architect': specifier: workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER version: link:../architect - '@angular-devkit/core': - specifier: workspace:0.0.0-PLACEHOLDER - version: link:../core packages/angular_devkit/build_angular: dependencies: diff --git a/tests/e2e/tests/architect_cli/direct_execution.ts b/tests/e2e/tests/architect_cli/direct_execution.ts new file mode 100644 index 000000000000..b91010d46283 --- /dev/null +++ b/tests/e2e/tests/architect_cli/direct_execution.ts @@ -0,0 +1,14 @@ +import * as assert from 'node:assert/strict'; +import { exec } from '../../utils/process'; +import { join } from 'node:path'; + +export default async function () { + // Run help command + const binPath = join('node_modules', '.bin', 'architect'); + const { stdout } = await exec(binPath, '--help'); + + assert.ok( + stdout.includes('architect [project][:target][:configuration] [options, ...]'), + 'Expected stdout to contain usage information.', + ); +} diff --git a/tests/e2e/tests/architect_cli/package_execution.ts b/tests/e2e/tests/architect_cli/package_execution.ts new file mode 100644 index 000000000000..494c017586a8 --- /dev/null +++ b/tests/e2e/tests/architect_cli/package_execution.ts @@ -0,0 +1,22 @@ +import * as assert from 'node:assert/strict'; +import { exec } from '../../utils/process'; +import { installPackage, uninstallPackage } from '../../utils/packages'; +import { join } from 'node:path'; + +export default async function () { + // Install CLI package + installPackage('@angular-devkit/architect-cli'); + + try { + // Run help command + const binPath = join('node_modules', '.bin', 'architect'); + const { stdout } = await exec(binPath, '--help'); + + assert.ok( + stdout.includes('architect [project][:target][:configuration] [options, ...]'), + 'Expected stdout to contain usage information.', + ); + } finally { + uninstallPackage('@angular-devkit/architect-cli'); + } +} From d76239a96f9ac71795f27c7be607b3ca7fda6adf Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 18 Dec 2025 14:06:14 +0000 Subject: [PATCH 2009/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 5 +- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 707 +++++++++--------- tests/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 448 insertions(+), 452 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 07b6372a8348..30ef371eab5c 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@2562f2bd84bf2b992d4742d2f36895fd904d696a + - uses: angular/dev-infra/github-actions/branch-manager@dd5658bd720370542913e23b21d80450bac94b60 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c4efa8f3a86..82bf67b8d4ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - 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 09eae16116ee..fa6a8bc2dd67 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@2562f2bd84bf2b992d4742d2f36895fd904d696a + - uses: angular/dev-infra/github-actions/pull-request-labeling@dd5658bd720370542913e23b21d80450bac94b60 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@2562f2bd84bf2b992d4742d2f36895fd904d696a + - uses: angular/dev-infra/github-actions/post-approval-changes@dd5658bd720370542913e23b21d80450bac94b60 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index b34a16f2e337..ee8c53353792 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@2562f2bd84bf2b992d4742d2f36895fd904d696a + - uses: angular/dev-infra/github-actions/feature-request@dd5658bd720370542913e23b21d80450bac94b60 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 70fb642b9eac..47f045d6287c 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@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - 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@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - 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 dc7c21d3b0a6..5adafe0f79d9 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/linting/licenses@dd5658bd720370542913e23b21d80450bac94b60 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2562f2bd84bf2b992d4742d2f36895fd904d696a + uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index a8a4b4a27f92..5dd7f5cffc2c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "2562f2bd84bf2b992d4742d2f36895fd904d696a", + commit = "dd5658bd720370542913e23b21d80450bac94b60", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 6c9f842df579..74b11823db98 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -19,10 +19,8 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", - "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.24.0/MODULE.bazel": "15d19e46ec74e9e49ddf3c335e7a91b0657571654b0960bdcd10b771eeb4f7cb", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.25.0/MODULE.bazel": "5fef5ec709c837312823f9bcf0f276661e2cb48ad52f17c4e01176bbf1e9bf58", "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.25.0/source.json": "5e42968c6d23ab8bd95c02634b16864d866334347827cb6a8425b86c11cc4363", - "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.0/MODULE.bazel": "071d1952527721bf8b180e1299def24edaece9d7466e31a311981640da82c6be", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.2/MODULE.bazel": "45f054400ff242c4433f6d7f20f6123a9a72739cb7a1f44247d738db1644f46c", "https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.2/source.json": "3ed399a5654259a822448f9cdbf21f6c738f16ccd7f89249c7507e374cbdd1e3", "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", @@ -32,7 +30,6 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/source.json": "c35cb4e04f61a09c17f8c569894b80de884b1e3dee2d33829704786e3f778037", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", - "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.1/MODULE.bazel": "cbed416847e2c46c4c0fe275e3a3c8e302d236d0fb04a094e9af82d14e7c5040", "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/MODULE.bazel": "796622c65ae3008374fc2d77c32ddb4ef6da9fe891826ce648f70033a48b3667", "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/source.json": "a7c4f332f5c21f4e63d073f8dda40bf278d5307499fb307b35058dba558f417a", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.3/MODULE.bazel": "20f53b145f40957a51077ae90b37b7ce83582a1daf9350349f0f86179e19dd0d", @@ -1085,7 +1082,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "/b/T+Q3LJcpInmNhx8xutZ9Uf0JlyC5a0jCoKFvtDS0=", + "usagesDigest": "ZSt0AxY3kRT/zQJ27ICWoD1gmFMpe+5ci/pvnm3dECE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index d453e8849e8c..646d78e41987 100644 --- a/package.json +++ b/package.json @@ -42,20 +42,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.1.0-next.2", - "@angular/cdk": "21.1.0-next.2", - "@angular/common": "21.1.0-next.2", - "@angular/compiler": "21.1.0-next.2", - "@angular/compiler-cli": "21.1.0-next.2", - "@angular/core": "21.1.0-next.2", - "@angular/forms": "21.1.0-next.2", - "@angular/localize": "21.1.0-next.2", - "@angular/material": "21.1.0-next.2", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#d01dccf28bf240ced7828fe93c65eda247b24dec", - "@angular/platform-browser": "21.1.0-next.2", - "@angular/platform-server": "21.1.0-next.2", - "@angular/router": "21.1.0-next.2", - "@angular/service-worker": "21.1.0-next.2", + "@angular/animations": "21.1.0-next.4", + "@angular/cdk": "21.1.0-next.3", + "@angular/common": "21.1.0-next.4", + "@angular/compiler": "21.1.0-next.4", + "@angular/compiler-cli": "21.1.0-next.4", + "@angular/core": "21.1.0-next.4", + "@angular/forms": "21.1.0-next.4", + "@angular/localize": "21.1.0-next.4", + "@angular/material": "21.1.0-next.3", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#24c98502339594196a800db33dd4294e359ea952", + "@angular/platform-browser": "21.1.0-next.4", + "@angular/platform-server": "21.1.0-next.4", + "@angular/router": "21.1.0-next.4", + "@angular/service-worker": "21.1.0-next.4", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 08efe3240eb2..b3ca917e1b08 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.1.0-next.2", - "@angular/compiler": "21.1.0-next.2", - "@angular/core": "21.1.0-next.2", - "@angular/platform-browser": "21.1.0-next.2", - "@angular/platform-server": "21.1.0-next.2", - "@angular/router": "21.1.0-next.2", + "@angular/common": "21.1.0-next.4", + "@angular/compiler": "21.1.0-next.4", + "@angular/core": "21.1.0-next.4", + "@angular/platform-browser": "21.1.0-next.4", + "@angular/platform-server": "21.1.0-next.4", + "@angular/router": "21.1.0-next.4", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index a212c7c80117..daeacb77baba 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": "21.1.0-next.2", - "@angular/compiler-cli": "21.1.0-next.2", + "@angular/compiler": "21.1.0-next.4", + "@angular/compiler-cli": "21.1.0-next.4", "typescript": "5.9.3", "webpack": "5.104.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd45d4feafc8..004133d1427c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.3 + version: 21.1.0-next.3(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2 + specifier: 21.1.0-next.4 + version: 21.1.0-next.4 '@angular/compiler-cli': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) '@angular/core': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(@angular/compiler@21.1.0-next.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(@angular/compiler@21.1.0-next.4) '@angular/material': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(87a11e855d816a433d9af16d2a3d86fc) + specifier: 21.1.0-next.3 + version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#d01dccf28bf240ced7828fe93c65eda247b24dec - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#24c98502339594196a800db33dd4294e359ea952 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/24c98502339594196a800db33dd4294e359ea952(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) '@angular/platform-browser': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.2)(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.4)(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -318,7 +318,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -330,7 +330,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -351,10 +351,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.21 - version: 5.1.21(@types/node@24.10.2) + version: 5.1.21(@types/node@24.10.4) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -411,7 +411,7 @@ importers: version: 7.16.0 vite: specifier: 7.3.0 - version: 7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.4.4 version: 2.4.4 @@ -430,7 +430,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -458,10 +458,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.2) + version: 7.10.1(@types/node@24.10.4) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.2))(@types/node@24.10.2)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.4))(@types/node@24.10.4)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.25.0 version: 1.25.0(zod@4.2.1) @@ -527,23 +527,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2 + specifier: 21.1.0-next.4 + version: 21.1.0-next.4 '@angular/core': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.2)(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.4)(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -742,7 +742,7 @@ importers: version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) ng-packagr: specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.16.0 version: 7.16.0 @@ -826,7 +826,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.2) + version: 7.10.1(@types/node@24.10.4) packages/ngtools/webpack: devDependencies: @@ -834,11 +834,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2 + specifier: 21.1.0-next.4 + version: 21.1.0-next.4 '@angular/compiler-cli': - specifier: 21.1.0-next.2 - version: 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -878,17 +878,17 @@ packages: '@acemir/cssom@0.9.29': resolution: {integrity: sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA==} - '@actions/core@1.11.1': - resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} + '@actions/core@2.0.1': + resolution: {integrity: sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==} - '@actions/exec@1.1.1': - resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} + '@actions/exec@2.0.0': + resolution: {integrity: sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==} - '@actions/http-client@2.2.3': - resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} + '@actions/http-client@3.0.0': + resolution: {integrity: sha512-1s3tXAfVMSz9a4ZEBkXXRQD4QhY3+GAsWSbaYpeknPOKEeyRiU3lH+bHiLMZdo2x/fIeQ/hscL1wCkDLVM2DZQ==} - '@actions/io@1.1.3': - resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} + '@actions/io@2.0.0': + resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} '@algolia/abtesting@1.12.0': resolution: {integrity: sha512-EfW0bfxjPs+C7ANkJDw2TATntfBKsFiy7APh+KO0pQ8A6HYa5I0NjFuCGCXWfzzzLXNZta3QUl3n5Kmm6aJo9Q==} @@ -950,47 +950,47 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.1.0-next.2': - resolution: {integrity: sha512-xj1T9KiICeFldeM5h2H5VdUBnhZO0zCEjYGWSP3ahmXaCrvFwbb0td5m0vxfyOk+96graq+8F1ny4xqCHQORDA==} + '@angular/animations@21.1.0-next.4': + resolution: {integrity: sha512-GtbawUvSBiUX5/DPLJh0iQcsdqLaNhrs0X7XET/6DyKDK39dlWjOLc/etBPQc7RlbP1QzlbpsISb/Gu0rcbv5A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.2 + '@angular/core': 21.1.0-next.4 - '@angular/cdk@21.1.0-next.2': - resolution: {integrity: sha512-NRP8AFflcgEPHKptHdL6sljGPLkcXy/EWUr9X0+rE1fERy2z+w56D2dF+9TcYTRCC46MEgQWNyvq/2ragNmf8Q==} + '@angular/cdk@21.1.0-next.3': + resolution: {integrity: sha512-1NxzybXwBefUdOX5HzffjgZg4AwYuogDfRDgViTSzM4yZsVPup5+dDafwZAjYu90qdjriH5d/Lf6PUxhp2rLtA==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.1.0-next.2': - resolution: {integrity: sha512-9PiRwgkL60cHplUjeVe6/KHqi5xwxHm8QpKN2ghVCQ4MrGpnZ+CsAvXqE5r+lh85B3EVjexTXUiv8DFCczhKyg==} + '@angular/common@21.1.0-next.4': + resolution: {integrity: sha512-HNM0eaZ86pXQZnmI6MlVj0FvvI3wF5mBkGyMN8Ktuswf9DUq04xBkliLiMwkb5UFmeSibxE3mUaMymw92Nn4fA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.2 + '@angular/core': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.1.0-next.2': - resolution: {integrity: sha512-LXRMjzaebjJkOdCrV7bnoLqu+bHeiqdENQIV5S4E+1Lur0lH3AOaKa2OZsf+PoXJm6wgJJmTtk/PI4gSbP0i/w==} + '@angular/compiler-cli@21.1.0-next.4': + resolution: {integrity: sha512-iW+8gnGSUqCv4WdN3LMv9ikh9vHfKnbfaG01Hvzxs+q4tL3xVRDezeL+EnpaIdmKsCOIfsYrWwAXNfMd48S4Lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.2 + '@angular/compiler': 21.1.0-next.4 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.1.0-next.2': - resolution: {integrity: sha512-uAO89RVh0Jpx5bmIoYerh8cCYLZPhDgZVPKYxi6D6/f5aBxIwGywJyFQdyi6CP4NLe98motnOnGbpHwWyGb9Ww==} + '@angular/compiler@21.1.0-next.4': + resolution: {integrity: sha512-uY4Yg3OJ/DL6AlqMjO8VXgKiFHJK3QspFJzslkJKys2d8I7a7YIoWxYRJ9ZUfWW++8Swig17pL9NOrRLXx+iQg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.1.0-next.2': - resolution: {integrity: sha512-8BToH02UlLjhJBDkchUkMsGNOXOQcZXfv++B8Ej+Biv+Oe38F6Nn7vO4etIof301YKP4ZCJpJsaLumhBXgf/rg==} + '@angular/core@21.1.0-next.4': + resolution: {integrity: sha512-aJAGd+8o/8vle68hAJGah/DMQVD4/vFf/lDhnqe69sFLY7HLeq5UdBjIu00nZ1DUVeL0n/QOA97bLRICINhVrg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.1.0-next.2 + '@angular/compiler': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -999,75 +999,74 @@ packages: zone.js: optional: true - '@angular/forms@21.1.0-next.2': - resolution: {integrity: sha512-acAgPnuMpAYuTEw6/DdjD16LBX7VV2zX6jH/PnEcUblXWj97DmKuQVy1+twTMo3+adS3mdBCaNO+VNC1gAfTiA==} + '@angular/forms@21.1.0-next.4': + resolution: {integrity: sha512-GluP6ZCId5DSukrgx/RlJX2CsVwHsRTSO8wAdYsqk2JIQpSPDtJk14RzvdHnMGeuBHrWn2dy88hq8G6W0SlQDA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.2 - '@angular/core': 21.1.0-next.2 - '@angular/platform-browser': 21.1.0-next.2 - '@standard-schema/spec': ^1.0.0 + '@angular/common': 21.1.0-next.4 + '@angular/core': 21.1.0-next.4 + '@angular/platform-browser': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.1.0-next.2': - resolution: {integrity: sha512-+bLxDhJxYyICGoLPxFDW8jB7FViOOTki+kAqB7TG2wfFK+o2sEPmHLAbWlER8E5yyT5xZrkbvYgUFn0TG+pEwA==} + '@angular/localize@21.1.0-next.4': + resolution: {integrity: sha512-awaQi5ib3UteQrIpxZmVrPBLnpAiPFeqVaogj0+hbn5dIvcQ4qbnjq3aTT/eR64aDGL6hByJ2e0Ac5fmVKUAEw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.2 - '@angular/compiler-cli': 21.1.0-next.2 + '@angular/compiler': 21.1.0-next.4 + '@angular/compiler-cli': 21.1.0-next.4 - '@angular/material@21.1.0-next.2': - resolution: {integrity: sha512-3Ays0ZqR5BNErNi5+5gTWzUhejyI3emZ/Dvhjh41ajwdYbtAi7rN4fYUVUR+CZSF5c4u56lESLzZhHcdke/XzQ==} + '@angular/material@21.1.0-next.3': + resolution: {integrity: sha512-m59JnFOUpTk5yLAYpJnk+nfvhzUO7tIG/WHFFOD2VmqWuadyZ+k6M4bQPy0ereumUcLue1QN7ZM6UpJWlgRqVQ==} peerDependencies: - '@angular/cdk': 21.1.0-next.2 + '@angular/cdk': 21.1.0-next.3 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/d01dccf28bf240ced7828fe93c65eda247b24dec': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/d01dccf28bf240ced7828fe93c65eda247b24dec} - version: 0.0.0-2562f2bd84bf2b992d4742d2f36895fd904d696a + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/24c98502339594196a800db33dd4294e359ea952': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/24c98502339594196a800db33dd4294e359ea952} + version: 0.0.0-dd5658bd720370542913e23b21d80450bac94b60 hasBin: true - '@angular/platform-browser@21.1.0-next.2': - resolution: {integrity: sha512-YjQwEwQBnJ3l7DX16q2zbV8r97PaPjsd5vF2tlYNqQyd9r4FY7GMCCU2A/pWNPLvHHJZ4LRCLoeobsUjy3d13A==} + '@angular/platform-browser@21.1.0-next.4': + resolution: {integrity: sha512-3Tntq39GTw6wWsp92FZ438mz0eILW+9aXh/r0BzRTFnr2QtDrpEOnLqTNfdxJlS/NEYyrSmP7XzkmAlt13zu2g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.1.0-next.2 - '@angular/common': 21.1.0-next.2 - '@angular/core': 21.1.0-next.2 + '@angular/animations': 21.1.0-next.4 + '@angular/common': 21.1.0-next.4 + '@angular/core': 21.1.0-next.4 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.1.0-next.2': - resolution: {integrity: sha512-7h58lL1TzH71cm0Pefp3j044WLAIlXOkjPDVc+19lGTYyfkZkyfRlkm+frGm+qGEJEBFrLTZv5HEMu3P13jDVw==} + '@angular/platform-server@21.1.0-next.4': + resolution: {integrity: sha512-R+FzXYCjNV6T7iMDPZ18FrSsTBZx200DU+ivKCMwUR9nwPYnA4oD+YwZKd+OgZrQqo4p5T/seXWScnqROopvQg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.2 - '@angular/compiler': 21.1.0-next.2 - '@angular/core': 21.1.0-next.2 - '@angular/platform-browser': 21.1.0-next.2 + '@angular/common': 21.1.0-next.4 + '@angular/compiler': 21.1.0-next.4 + '@angular/core': 21.1.0-next.4 + '@angular/platform-browser': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.1.0-next.2': - resolution: {integrity: sha512-ZPIt2Bopusit2iax99fYjspA/3lBKAl6NRTg6MDnOkUhq5jpck0SRkzswQ5OxSCLLbu9I0BPzc6+yp5lyauHEQ==} + '@angular/router@21.1.0-next.4': + resolution: {integrity: sha512-2ZLGbA57w9zA+yO6iXMuSaORJbD2jMoFRrKcMHamDhw81rpbJ3zcBjQ+I8GeAVgus5irWRr/6dYOmgy9kSldkg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.2 - '@angular/core': 21.1.0-next.2 - '@angular/platform-browser': 21.1.0-next.2 + '@angular/common': 21.1.0-next.4 + '@angular/core': 21.1.0-next.4 + '@angular/platform-browser': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.1.0-next.2': - resolution: {integrity: sha512-kst4ogtrZzt9M87vK/vOFI1UxCTXEFFwDTN7J78ahcSc0yKTZO3nCFyy/zTulAqWUiTItN82bF6MQEYt95mo2g==} + '@angular/service-worker@21.1.0-next.4': + resolution: {integrity: sha512-RadEpo+xp7hzv2qgpNRmsFsILX5ZY7AYGLHTVvEu4j5DUI9LUJllnmlEz/U5HHz/99h8eEPZPlUZ/H0OMMmUfw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.1.0-next.2 + '@angular/core': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.1.0': @@ -2034,8 +2033,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.6.0': - resolution: {integrity: sha512-NGyE7NQDFznOv683Xk4+WoUv39iipa9lEfrwvvPz33ChzVbCCiB69FJQTK2BI/11pRtzYGbHo1/xMz7gxWWhJw==} + '@firebase/ai@2.6.1': + resolution: {integrity: sha512-qJd9bpABqsanFnwdbjZEDbKKr1jRtuUZ+cHyNBLWsxobH4pd73QncvuO3XlMq4eKBLlg1f5jNdFpJ3G3ABu2Tg==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -2083,8 +2082,8 @@ packages: resolution: {integrity: sha512-4uyt8BOrBsSq6i4yiOV/gG6BnnrvTeyymlNcaN/dKvyU1GoolxAafvIvaNP1RCGPlNab3OuE4MKUQuv2lH+PLQ==} engines: {node: '>=20.0.0'} - '@firebase/auth-compat@0.6.1': - resolution: {integrity: sha512-I0o2ZiZMnMTOQfqT22ur+zcGDVSAfdNZBHo26/Tfi8EllfR1BO7aTVo2rt/ts8o/FWsK8pOALLeVBGhZt8w/vg==} + '@firebase/auth-compat@0.6.2': + resolution: {integrity: sha512-8UhCzF6pav9bw/eXA8Zy1QAKssPRYEYXaWagie1ewLTwHkXv6bKp/j6/IwzSYQP67sy/BMFXIFaCCsoXzFLr7A==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app-compat': 0.x @@ -2098,12 +2097,12 @@ packages: '@firebase/app-types': 0.x '@firebase/util': 1.x - '@firebase/auth@1.11.1': - resolution: {integrity: sha512-Mea0G/BwC1D0voSG+60Ylu3KZchXAFilXQ/hJXWCw3gebAu+RDINZA0dJMNeym7HFxBaBaByX8jSa7ys5+F2VA==} + '@firebase/auth@1.12.0': + resolution: {integrity: sha512-zkvLpsrxynWHk07qGrUDfCSqKf4AvfZGEqJ7mVCtYGjNNDbGE71k0Yn84rg8QEZu4hQw1BC0qDEHzpNVBcSVmA==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x - '@react-native-async-storage/async-storage': ^1.18.1 + '@react-native-async-storage/async-storage': ^2.2.0 peerDependenciesMeta: '@react-native-async-storage/async-storage': optional: true @@ -2128,8 +2127,8 @@ packages: resolution: {integrity: sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==} engines: {node: '>=20.0.0'} - '@firebase/firestore-compat@0.4.2': - resolution: {integrity: sha512-cy7ov6SpFBx+PHwFdOOjbI7kH00uNKmIFurAn560WiPCZXy9EMnil1SOG7VF4hHZKdenC+AHtL4r3fNpirpm0w==} + '@firebase/firestore-compat@0.4.3': + resolution: {integrity: sha512-1ylF/njF68Pmb6p0erP0U78XQv1w77Wap4bUmqZ7ZVkmN1oMgplyu0TyirWtCBoKFRV2+SUZfWXvIij/z39LYg==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app-compat': 0.x @@ -2140,8 +2139,8 @@ packages: '@firebase/app-types': 0.x '@firebase/util': 1.x - '@firebase/firestore@4.9.2': - resolution: {integrity: sha512-iuA5+nVr/IV/Thm0Luoqf2mERUvK9g791FZpUJV1ZGXO6RL2/i/WFJUj5ZTVXy5pRjpWYO+ZzPcReNrlilmztA==} + '@firebase/firestore@4.9.3': + resolution: {integrity: sha512-RVuvhcQzs1sD5Osr2naQS71H0bQMbSnib16uOWAKk3GaKb/WBPyCYSr2Ry7MqlxDP/YhwknUxECL07lw9Rq1nA==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -2275,8 +2274,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.32.0': - resolution: {integrity: sha512-46vaEaHAThIBlqWFTti1fo3xYU6DwCOwnIIotLhYUbNha90wk5cZL79zdf+NoAfKVsx4DPmjCtXvbQNNVPl5ZQ==} + '@google/genai@1.33.0': + resolution: {integrity: sha512-ThUjFZ1N0DU88peFjnQkb8K198EWaW2RmmnDShFQ+O+xkIH9itjpRe358x3L/b4X/A7dimkvq63oz49Vbh7Cog==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.24.0 @@ -2514,8 +2513,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@8.0.2': - resolution: {integrity: sha512-2zK5zY48fZcl6+gG4eqOC/UzZsJckHCRvjXoLuW4D8LKOCVGdcJiSKkLnumSZjR/6PXPINDGOrGHqNxb+sxJDg==} + '@inquirer/prompts@8.1.0': + resolution: {integrity: sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -3144,16 +3143,16 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.7': - resolution: {integrity: sha512-7XPsLscJuNYJr+1RVVGi7ul4GRoNV9Uq6PR04VkFteFgc+LmvBoyq1lQq1dDw+MUwjG2KHhsVtQVooRVpd0niQ==} + '@pnpm/dependency-path@1001.1.8': + resolution: {integrity: sha512-+/SabdOsq4ycO/s1F82mUTmYb9KTE7e74qbXE9caM6slbaJesVqQOKDxSP4RqCy5jkjDz26kpkWzxeNJLowdNQ==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} - '@pnpm/types@1001.1.0': - resolution: {integrity: sha512-HaGoB+TIJ3aWLM1lLUKQmh1K4bjz16VJ9+mJcp3nf1RQm/lZFhkyjGW2D44Zf3M8c1tlyTsczIDQR4K2OSvaaQ==} + '@pnpm/types@1001.2.0': + resolution: {integrity: sha512-UIju+OadUVS0q5q/MbRAzMS5M9HZcZyT6evyrgPUH0DV9przkcW7/LH1Sj33Q2MpJO9Nzqw4b4w72x8mvtUAew==} engines: {node: '>=18.12'} '@protobufjs/aspromise@1.1.2': @@ -3836,8 +3835,8 @@ packages: '@types/node@22.19.3': resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} - '@types/node@24.10.2': - resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==} + '@types/node@24.10.4': + resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -5805,8 +5804,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase@12.6.0: - resolution: {integrity: sha512-8ZD1Gcv916Qp8/nsFH2+QMIrfX/76ti6cJwxQUENLXXnKlOX/IJZaU2Y3bdYf5r1mbownrQKfnWtrt+MVgdwLA==} + firebase@12.7.0: + resolution: {integrity: sha512-ZBZg9jFo8uH4Emd7caOqtalKJfDGHnHQSrCPiqRAdTFQd0wL3ERilUBfhnhBLnlernugkN/o7nJa0p+sE71Izg==} flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} @@ -9504,21 +9503,21 @@ snapshots: '@acemir/cssom@0.9.29': {} - '@actions/core@1.11.1': + '@actions/core@2.0.1': dependencies: - '@actions/exec': 1.1.1 - '@actions/http-client': 2.2.3 + '@actions/exec': 2.0.0 + '@actions/http-client': 3.0.0 - '@actions/exec@1.1.1': + '@actions/exec@2.0.0': dependencies: - '@actions/io': 1.1.3 + '@actions/io': 2.0.0 - '@actions/http-client@2.2.3': + '@actions/http-client@3.0.0': dependencies: tunnel: 0.0.6 undici: 5.29.0 - '@actions/io@1.1.3': {} + '@actions/io@2.0.0': {} '@algolia/abtesting@1.12.0': dependencies: @@ -9609,29 +9608,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/cdk@21.1.0-next.3(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3)': + '@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.1.0-next.2 + '@angular/compiler': 21.1.0-next.4 '@babel/core': 7.28.5 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 @@ -9645,31 +9644,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.1.0-next.2': + '@angular/compiler@21.1.0-next.4': dependencies: tslib: 2.8.1 - '@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.1.0-next.2 + '@angular/compiler': 21.1.0-next.4 zone.js: 0.16.0 - '@angular/forms@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2)': + '@angular/forms@21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.1.0-next.2(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(@angular/compiler@21.1.0-next.2)': + '@angular/localize@21.1.0-next.4(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(@angular/compiler@21.1.0-next.4)': dependencies: - '@angular/compiler': 21.1.0-next.2 - '@angular/compiler-cli': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) + '@angular/compiler': 21.1.0-next.4 + '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9677,23 +9676,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.1.0-next.2(87a11e855d816a433d9af16d2a3d86fc)': + '@angular/material@21.1.0-next.3(5911ac44acdb5e81564606f5886cc827)': dependencies: - '@angular/cdk': 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@standard-schema/spec@1.0.0)(rxjs@7.8.2) - '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.1.0-next.3(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.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/d01dccf28bf240ced7828fe93c65eda247b24dec(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/24c98502339594196a800db33dd4294e359ea952(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': dependencies: - '@actions/core': 1.11.1 + '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.32.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) - '@inquirer/prompts': 8.0.2(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@google/genai': 1.33.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@inquirer/prompts': 8.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -9704,14 +9703,14 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 - '@pnpm/dependency-path': 1001.1.7 + '@pnpm/dependency-path': 1001.1.8 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 '@types/jasmine': 5.1.13 - '@types/node': 24.10.2 + '@types/node': 24.10.4 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.35 @@ -9724,7 +9723,7 @@ snapshots: ejs: 3.1.10 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.6.0 + firebase: 12.7.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) jasmine: 5.13.0 @@ -9747,35 +9746,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.2)(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.4)(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.1.0-next.2 - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.1.0-next.4 + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.1.0-next.2(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.2(@angular/animations@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.1.0-next.2(@angular/core@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -10764,7 +10763,7 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.6.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/ai@2.6.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: '@firebase/app': 0.14.6 '@firebase/app-check-interop-types': 0.3.3 @@ -10838,10 +10837,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.1(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/auth-compat@0.6.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: '@firebase/app-compat': 0.5.6 - '@firebase/auth': 1.11.1(@firebase/app@0.14.6) + '@firebase/auth': 1.12.0(@firebase/app@0.14.6) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -10858,7 +10857,7 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.11.1(@firebase/app@0.14.6)': + '@firebase/auth@1.12.0(@firebase/app@0.14.6)': dependencies: '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 @@ -10904,11 +10903,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/firestore-compat@0.4.3(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': dependencies: '@firebase/app-compat': 0.5.6 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.6) + '@firebase/firestore': 4.9.3(@firebase/app@0.14.6) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10921,7 +10920,7 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.2(@firebase/app@0.14.6)': + '@firebase/firestore@4.9.3(@firebase/app@0.14.6)': dependencies: '@firebase/app': 0.14.6 '@firebase/component': 0.7.0 @@ -11143,7 +11142,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.32.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.33.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -11197,245 +11196,245 @@ snapshots: '@inquirer/ansi@2.0.2': {} - '@inquirer/checkbox@4.3.2(@types/node@24.10.2)': + '@inquirer/checkbox@4.3.2(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.4) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/checkbox@5.0.3(@types/node@24.10.2)': + '@inquirer/checkbox@5.0.3(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.1.0(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/confirm@5.1.21(@types/node@24.10.2)': + '@inquirer/confirm@5.1.21(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/confirm@6.0.3(@types/node@24.10.2)': + '@inquirer/confirm@6.0.3(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/core@10.3.2(@types/node@24.10.2)': + '@inquirer/core@10.3.2(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.4) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/core@11.1.0(@types/node@24.10.2)': + '@inquirer/core@11.1.0(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 2.0.2 '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.4) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 wrap-ansi: 9.0.2 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/editor@4.2.23(@types/node@24.10.2)': + '@inquirer/editor@4.2.23(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/editor@5.0.3(@types/node@24.10.2)': + '@inquirer/editor@5.0.3(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/external-editor': 2.0.2(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/external-editor': 2.0.2(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/expand@4.0.23(@types/node@24.10.2)': + '@inquirer/expand@4.0.23(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/expand@5.0.3(@types/node@24.10.2)': + '@inquirer/expand@5.0.3(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/external-editor@1.0.3(@types/node@24.10.2)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.4)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.1 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/external-editor@2.0.2(@types/node@24.10.2)': + '@inquirer/external-editor@2.0.2(@types/node@24.10.4)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.1 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 '@inquirer/figures@1.0.15': {} '@inquirer/figures@2.0.2': {} - '@inquirer/input@4.3.1(@types/node@24.10.2)': + '@inquirer/input@4.3.1(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/input@5.0.3(@types/node@24.10.2)': + '@inquirer/input@5.0.3(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/number@3.0.23(@types/node@24.10.2)': + '@inquirer/number@3.0.23(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/number@4.0.3(@types/node@24.10.2)': + '@inquirer/number@4.0.3(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/password@4.0.23(@types/node@24.10.2)': + '@inquirer/password@4.0.23(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/password@5.0.3(@types/node@24.10.2)': + '@inquirer/password@5.0.3(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 - - '@inquirer/prompts@7.10.1(@types/node@24.10.2)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.2) - '@inquirer/confirm': 5.1.21(@types/node@24.10.2) - '@inquirer/editor': 4.2.23(@types/node@24.10.2) - '@inquirer/expand': 4.0.23(@types/node@24.10.2) - '@inquirer/input': 4.3.1(@types/node@24.10.2) - '@inquirer/number': 3.0.23(@types/node@24.10.2) - '@inquirer/password': 4.0.23(@types/node@24.10.2) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.2) - '@inquirer/search': 3.2.2(@types/node@24.10.2) - '@inquirer/select': 4.4.2(@types/node@24.10.2) + '@types/node': 24.10.4 + + '@inquirer/prompts@7.10.1(@types/node@24.10.4)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.4) + '@inquirer/confirm': 5.1.21(@types/node@24.10.4) + '@inquirer/editor': 4.2.23(@types/node@24.10.4) + '@inquirer/expand': 4.0.23(@types/node@24.10.4) + '@inquirer/input': 4.3.1(@types/node@24.10.4) + '@inquirer/number': 3.0.23(@types/node@24.10.4) + '@inquirer/password': 4.0.23(@types/node@24.10.4) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.4) + '@inquirer/search': 3.2.2(@types/node@24.10.4) + '@inquirer/select': 4.4.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 - - '@inquirer/prompts@8.0.2(@types/node@24.10.2)': - dependencies: - '@inquirer/checkbox': 5.0.3(@types/node@24.10.2) - '@inquirer/confirm': 6.0.3(@types/node@24.10.2) - '@inquirer/editor': 5.0.3(@types/node@24.10.2) - '@inquirer/expand': 5.0.3(@types/node@24.10.2) - '@inquirer/input': 5.0.3(@types/node@24.10.2) - '@inquirer/number': 4.0.3(@types/node@24.10.2) - '@inquirer/password': 5.0.3(@types/node@24.10.2) - '@inquirer/rawlist': 5.1.0(@types/node@24.10.2) - '@inquirer/search': 4.0.3(@types/node@24.10.2) - '@inquirer/select': 5.0.3(@types/node@24.10.2) + '@types/node': 24.10.4 + + '@inquirer/prompts@8.1.0(@types/node@24.10.4)': + dependencies: + '@inquirer/checkbox': 5.0.3(@types/node@24.10.4) + '@inquirer/confirm': 6.0.3(@types/node@24.10.4) + '@inquirer/editor': 5.0.3(@types/node@24.10.4) + '@inquirer/expand': 5.0.3(@types/node@24.10.4) + '@inquirer/input': 5.0.3(@types/node@24.10.4) + '@inquirer/number': 4.0.3(@types/node@24.10.4) + '@inquirer/password': 5.0.3(@types/node@24.10.4) + '@inquirer/rawlist': 5.1.0(@types/node@24.10.4) + '@inquirer/search': 4.0.3(@types/node@24.10.4) + '@inquirer/select': 5.0.3(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/rawlist@4.1.11(@types/node@24.10.2)': + '@inquirer/rawlist@4.1.11(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/rawlist@5.1.0(@types/node@24.10.2)': + '@inquirer/rawlist@5.1.0(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/search@3.2.2(@types/node@24.10.2)': + '@inquirer/search@3.2.2(@types/node@24.10.4)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.4) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/search@4.0.3(@types/node@24.10.2)': + '@inquirer/search@4.0.3(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/select@4.4.2(@types/node@24.10.2)': + '@inquirer/select@4.4.2(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.4) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.4) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/select@5.0.3(@types/node@24.10.2)': + '@inquirer/select@5.0.3(@types/node@24.10.4)': dependencies: '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.1.0(@types/node@24.10.2) + '@inquirer/core': 11.1.0(@types/node@24.10.4) '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.2) + '@inquirer/type': 4.0.2(@types/node@24.10.4) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/type@3.0.10(@types/node@24.10.2)': + '@inquirer/type@3.0.10(@types/node@24.10.4)': optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 - '@inquirer/type@4.0.2(@types/node@24.10.2)': + '@inquirer/type@4.0.2(@types/node@24.10.4)': optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 '@isaacs/balanced-match@4.0.1': {} @@ -11527,10 +11526,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.2))(@types/node@24.10.2)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.4))(@types/node@24.10.4)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/prompts': 7.10.1(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.4) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11963,17 +11962,17 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.7': + '@pnpm/dependency-path@1001.1.8': dependencies: '@pnpm/crypto.hash': 1000.2.1 - '@pnpm/types': 1001.1.0 + '@pnpm/types': 1001.2.0 semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 - '@pnpm/types@1001.1.0': {} + '@pnpm/types@1001.2.0': {} '@protobufjs/aspromise@1.1.2': {} @@ -12577,7 +12576,7 @@ snapshots: dependencies: undici-types: 7.16.0 - '@types/node@24.10.2': + '@types/node@24.10.4': dependencies: undici-types: 7.16.0 @@ -12953,11 +12952,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -12970,7 +12969,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12983,13 +12982,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -15169,9 +15168,9 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase@12.6.0: + firebase@12.7.0: dependencies: - '@firebase/ai': 2.6.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/ai': 2.6.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) '@firebase/app': 0.14.6 @@ -15179,13 +15178,13 @@ snapshots: '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) '@firebase/app-compat': 0.5.6 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.11.1(@firebase/app@0.14.6) - '@firebase/auth-compat': 0.6.1(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/auth': 1.12.0(@firebase/app@0.14.6) + '@firebase/auth-compat': 0.6.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) '@firebase/data-connect': 0.3.12(@firebase/app@0.14.6) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.2(@firebase/app@0.14.6) - '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/firestore': 4.9.3(@firebase/app@0.14.6) + '@firebase/firestore-compat': 0.4.3(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) '@firebase/functions': 0.13.1(@firebase/app@0.14.6) '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) '@firebase/installations': 0.6.19(@firebase/app@0.14.6) @@ -16806,10 +16805,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.1.0-next.2(@angular/compiler@21.1.0-next.2)(typescript@5.9.3) + '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.53.3) '@rollup/wasm-node': 4.53.3 ajv: 8.17.1 @@ -18966,7 +18965,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18975,7 +18974,7 @@ snapshots: rollup: 4.53.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18984,7 +18983,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.0(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.1 fdir: 6.5.0(picomatch@4.0.3) @@ -18993,7 +18992,7 @@ snapshots: rollup: 4.53.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.4 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -19002,10 +19001,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -19022,11 +19021,11 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.7(@types/node@24.10.2)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 - '@types/node': 24.10.2 + '@types/node': 24.10.4 jsdom: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 98d3bdca9030..28275a217e4f 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#7e7e3320f37ae5d28a84384446e72da0c455da0d", - "@angular/cdk": "github:angular/cdk-builds#c48b0ff8f2852c2bedadd8da14dabddeced0177f", - "@angular/common": "github:angular/common-builds#308794449bf21de5d869876f340fe8dbdf483ff7", - "@angular/compiler": "github:angular/compiler-builds#bb8f2c047302a274304f24488ae059b549bb3e26", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#e8a81a6fa6ce24e497c7ddb28df3480fe7ada7ee", - "@angular/core": "github:angular/core-builds#7e76b3d11f149611c72a09a2eb151fbae3239729", - "@angular/forms": "github:angular/forms-builds#795092de2b304d895abb5a5db0c473138b7b1f63", - "@angular/language-service": "github:angular/language-service-builds#5f1827224d51814ee60d4de80e22eb9a569ca40d", - "@angular/localize": "github:angular/localize-builds#97fb7851928efb4f1b87c12a7990005dd4a5764b", - "@angular/material": "github:angular/material-builds#41e8468f597e5202f86bc6ffb939ca98de95c70a", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#9bb39db28e49a8a3a62de55616122084834c61b6", - "@angular/platform-browser": "github:angular/platform-browser-builds#2fcfc53406862767b4aa8535ef895976abd4f7ba", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#a9e9b52c3f52e4929393fbfc357c60351eee0135", - "@angular/platform-server": "github:angular/platform-server-builds#8b292924c8b580e51359d417b05cf6855d21092f", - "@angular/router": "github:angular/router-builds#ab9cf134d9727c6aa1002625e871748be5a76385", - "@angular/service-worker": "github:angular/service-worker-builds#142b75954eb86a4064b93c59d74d3b6fb06c97ba" + "@angular/animations": "github:angular/animations-builds#e5d29380f64a0ab55e198833b9b263766284dacc", + "@angular/cdk": "github:angular/cdk-builds#45735507b4eef5107d4f3415348bf153325e0dbd", + "@angular/common": "github:angular/common-builds#7fb2afb52522bd3c1c1b45de9d521269acaf7a07", + "@angular/compiler": "github:angular/compiler-builds#53e0baa76df57afceb171a33e7a7d7b0f97fb787", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#a7f593299599093c908ea2d99373e8c77458ef2c", + "@angular/core": "github:angular/core-builds#258818ee94b7aa97ee47d4d1c878aed2c283c025", + "@angular/forms": "github:angular/forms-builds#9654caa42ffa6d985c0640f41bc4fa2a5b48049d", + "@angular/language-service": "github:angular/language-service-builds#1d87361d9a0e6b3940442f78644048ebda4fa7cd", + "@angular/localize": "github:angular/localize-builds#04237db953587fb2065c8c7730ad881f2f41e92c", + "@angular/material": "github:angular/material-builds#ed164993ccb225b5472552674ddaf44987cd36eb", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#56676f38985f390aa835871503a385a639509a04", + "@angular/platform-browser": "github:angular/platform-browser-builds#63fbd6946f478b54e5faadcb2c658a5f35afeef7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b02dd9bad1af59a121b094278043664074601253", + "@angular/platform-server": "github:angular/platform-server-builds#2f06ef4b4e4ce996b8f8bf9156bde8d70a0d5cdd", + "@angular/router": "github:angular/router-builds#300b2aecc342f730a580701c2300ae21ffd26306", + "@angular/service-worker": "github:angular/service-worker-builds#12d8bcccda6e2551f1f680852819d45f584c8da6" } } From 03123d58bf00a9ec10c4708c52a933355d93a801 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:31:47 +0000 Subject: [PATCH 2010/2162] refactor: directly set `responseInit.status` by removing type assertion and TODO comment This is no longer needed. --- packages/angular/ssr/test/app_spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index 2851e6f24bb8..9584feafeb72 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -35,8 +35,7 @@ describe('AngularServerApp', () => { constructor() { const responseInit = inject(RESPONSE_INIT); if (responseInit) { - // TODO(alanagius): Remove once https://github.com/angular/angular/pull/66126 is merged and released. - (responseInit as { status: number }).status = 308; + responseInit.status = 308; } void inject(Router).navigate([], { From 64be6359befa73a27b94f9ed82b2b0b92e981853 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 18 Dec 2025 09:31:57 -0500 Subject: [PATCH 2011/2162] test: await package install in architect CLI E2E --- tests/e2e/tests/architect_cli/package_execution.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/tests/architect_cli/package_execution.ts b/tests/e2e/tests/architect_cli/package_execution.ts index 494c017586a8..60b3964b7521 100644 --- a/tests/e2e/tests/architect_cli/package_execution.ts +++ b/tests/e2e/tests/architect_cli/package_execution.ts @@ -5,7 +5,7 @@ import { join } from 'node:path'; export default async function () { // Install CLI package - installPackage('@angular-devkit/architect-cli'); + await installPackage('@angular-devkit/architect-cli'); try { // Run help command @@ -17,6 +17,6 @@ export default async function () { 'Expected stdout to contain usage information.', ); } finally { - uninstallPackage('@angular-devkit/architect-cli'); + await uninstallPackage('@angular-devkit/architect-cli'); } } From f97d30ccf15752f1515b8e748cdf3f1d949b35f2 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 18 Dec 2025 17:09:29 +0000 Subject: [PATCH 2012/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/e2e/ng-snapshot/package.json | 6 +-- 10 files changed, 66 insertions(+), 66 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 30ef371eab5c..27d5a03b5b2b 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@dd5658bd720370542913e23b21d80450bac94b60 + - uses: angular/dev-infra/github-actions/branch-manager@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 82bf67b8d4ea..aa4c9038cca2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - 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 fa6a8bc2dd67..7ebf460a4d4a 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@dd5658bd720370542913e23b21d80450bac94b60 + - uses: angular/dev-infra/github-actions/pull-request-labeling@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@dd5658bd720370542913e23b21d80450bac94b60 + - uses: angular/dev-infra/github-actions/post-approval-changes@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index ee8c53353792..249ff7735981 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@dd5658bd720370542913e23b21d80450bac94b60 + - uses: angular/dev-infra/github-actions/feature-request@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 47f045d6287c..9a0388f69c4a 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@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - 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@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - 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 5adafe0f79d9..11e212489892 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/linting/licenses@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@dd5658bd720370542913e23b21d80450bac94b60 + uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 5dd7f5cffc2c..28dd147db361 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "dd5658bd720370542913e23b21d80450bac94b60", + commit = "2b0a3018401da50c0b34a4dedde2a6fdb9e90394", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 646d78e41987..d56aba6c82e3 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@angular/forms": "21.1.0-next.4", "@angular/localize": "21.1.0-next.4", "@angular/material": "21.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#24c98502339594196a800db33dd4294e359ea952", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#732af8115cf207c0a6c851592cd60562b2ab463b", "@angular/platform-browser": "21.1.0-next.4", "@angular/platform-server": "21.1.0-next.4", "@angular/router": "21.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 004133d1427c..0262ff8b5c16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.3 version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#24c98502339594196a800db33dd4294e359ea952 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/24c98502339594196a800db33dd4294e359ea952(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#732af8115cf207c0a6c851592cd60562b2ab463b + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/732af8115cf207c0a6c851592cd60562b2ab463b(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) '@angular/platform-browser': specifier: 21.1.0-next.4 version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1026,9 +1026,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/24c98502339594196a800db33dd4294e359ea952': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/24c98502339594196a800db33dd4294e359ea952} - version: 0.0.0-dd5658bd720370542913e23b21d80450bac94b60 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/732af8115cf207c0a6c851592cd60562b2ab463b': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/732af8115cf207c0a6c851592cd60562b2ab463b} + version: 0.0.0-2b0a3018401da50c0b34a4dedde2a6fdb9e90394 hasBin: true '@angular/platform-browser@21.1.0-next.4': @@ -9686,7 +9686,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/24c98502339594196a800db33dd4294e359ea952(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/732af8115cf207c0a6c851592cd60562b2ab463b(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 28275a217e4f..3b6e0f721afe 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/e2e/ng-snapshot/package.json @@ -3,7 +3,7 @@ "private": true, "dependencies": { "@angular/animations": "github:angular/animations-builds#e5d29380f64a0ab55e198833b9b263766284dacc", - "@angular/cdk": "github:angular/cdk-builds#45735507b4eef5107d4f3415348bf153325e0dbd", + "@angular/cdk": "github:angular/cdk-builds#b199fa90c9f09e45a697c7d019cd871ed77dfb30", "@angular/common": "github:angular/common-builds#7fb2afb52522bd3c1c1b45de9d521269acaf7a07", "@angular/compiler": "github:angular/compiler-builds#53e0baa76df57afceb171a33e7a7d7b0f97fb787", "@angular/compiler-cli": "github:angular/compiler-cli-builds#a7f593299599093c908ea2d99373e8c77458ef2c", @@ -11,8 +11,8 @@ "@angular/forms": "github:angular/forms-builds#9654caa42ffa6d985c0640f41bc4fa2a5b48049d", "@angular/language-service": "github:angular/language-service-builds#1d87361d9a0e6b3940442f78644048ebda4fa7cd", "@angular/localize": "github:angular/localize-builds#04237db953587fb2065c8c7730ad881f2f41e92c", - "@angular/material": "github:angular/material-builds#ed164993ccb225b5472552674ddaf44987cd36eb", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#56676f38985f390aa835871503a385a639509a04", + "@angular/material": "github:angular/material-builds#803f89824f1a38e26e4046e07d421afd6e3ccd1c", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2dede4c21db49dd5c4b2033dfadd126aba97954a", "@angular/platform-browser": "github:angular/platform-browser-builds#63fbd6946f478b54e5faadcb2c658a5f35afeef7", "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b02dd9bad1af59a121b094278043664074601253", "@angular/platform-server": "github:angular/platform-server-builds#2f06ef4b4e4ce996b8f8bf9156bde8d70a0d5cdd", From 70bc0f6d286910de43f03658872da00b282b2b55 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Thu, 18 Dec 2025 11:32:35 -0800 Subject: [PATCH 2013/2162] build: restore `ng-dev` script This got dropped in https://github.com/angular/angular-cli/pull/32088/, but is needed because the release process calls `pnpm run ng-dev`, which requires a script to exist. Meanwhile `pnpm ng-dev` does not. --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index d56aba6c82e3..d23e949c593d 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "postinstall": "husky", "ts-circular-deps": "ng-dev ts-circular-deps --config ./scripts/circular-deps-test.conf.mjs", "check-tooling-setup": "tsc --project .ng-dev/tsconfig.json", - "diff-release-package": "node scripts/diff-release-package.mts" + "diff-release-package": "node scripts/diff-release-package.mts", + "ng-dev": "ng-dev" }, "repository": { "type": "git", From ed3c3686a7c49817c45f9058fcb61bb3602fd9b5 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Thu, 18 Dec 2025 12:45:25 -0800 Subject: [PATCH 2014/2162] docs: release notes for the v21.0.4 release --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c8cb5e24869..896755d1ae4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ + + +# 21.0.4 (2025-12-18) + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | +| [b671245b9](https://github.com/angular/angular-cli/commit/b671245b9d3ba98ac0f66dbd34f272539113be61) | fix | improve VS Code background compilation start/end detection | +| [85a28dec7](https://github.com/angular/angular-cli/commit/85a28dec771cce77a3ffee35f419b5fedca807b8) | fix | remove `inlineSources` from library tsconfig template | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [deb4fff61](https://github.com/angular/angular-cli/commit/deb4fff6196d2eb147e358a7143e2ada2b6114c9) | fix | add browser condition to resolver for vitest | +| [570ce8d3e](https://github.com/angular/angular-cli/commit/570ce8d3eeb280eeb6dca6ba54593c9325674741) | fix | allow non-prefixed requests when using SSR and base href | +| [4dd3c1a32](https://github.com/angular/angular-cli/commit/4dd3c1a324c8e90808cc1c5febf65c8fa49dd3b9) | fix | conditionally manage Vitest UI option | +| [4b8b7caec](https://github.com/angular/angular-cli/commit/4b8b7caece41f86746321a98786dfdff499582b6) | fix | ensure tests run when compilation error is resolved | +| [bef4fcecb](https://github.com/angular/angular-cli/commit/bef4fcecb6d116f9f022da845f06708cf29be02a) | fix | remove LmdbCacheStore export from private API | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | +| [bb54747da](https://github.com/angular/angular-cli/commit/bb54747da69fb15b6c2ebb52b45a83cbff3231c8) | fix | add leading slash to well-known non-Angular URLs | +| [0cfe2e749](https://github.com/angular/angular-cli/commit/0cfe2e749f50b832c64bbba322eb0cef7ad40365) | fix | propagate status code to redirect | +| [eadadb848](https://github.com/angular/angular-cli/commit/eadadb848ca7fa45c4dda835af39400e017bbe1c) | fix | skip SSR processing for well-known non-Angular URLs like favicon.ico | + + + # 21.1.0-next.2 (2025-12-10) From aef7d65438306911b59d3cb16c74a2bd0567bd77 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Thu, 18 Dec 2025 12:48:18 -0800 Subject: [PATCH 2015/2162] release: cut the v21.1.0-next.3 release --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 896755d1ae4c..c9760339d143 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ + + +# 21.1.0-next.3 (2025-12-18) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------- | +| [348096623](https://github.com/angular/angular-cli/commit/348096623326857a5d8cf77d56712776e1190180) | fix | enhance list_projects MCP tool file system traversal and symlink handling | +| [032257a6d](https://github.com/angular/angular-cli/commit/032257a6d00360d2c4e6d5406409dcfa5b27d1d5) | fix | improve signal forms lesson examples in AI tutor | +| [18d74dde8](https://github.com/angular/angular-cli/commit/18d74dde8938dbe566df80753d5c148c19040179) | fix | rename mcp devserver tools to comply with naming spec | +| [a15db28b2](https://github.com/angular/angular-cli/commit/a15db28b29f6f43bef1ed1ca7c6a963d9943f801) | perf | cache resolved specific version in package manager abstraction | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | +| [52ace04a7](https://github.com/angular/angular-cli/commit/52ace04a7ca1c102fdf1addf5ab6fe400c0eab0e) | fix | improve VS Code background compilation start/end detection | +| [288a9225c](https://github.com/angular/angular-cli/commit/288a9225c83edec9560e2b39901740e792c54d27) | fix | remove `inlineSources` from library tsconfig template | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [98c207bc0](https://github.com/angular/angular-cli/commit/98c207bc0e44caccd6fffa5b8d3a013a2a3a871a) | fix | add browser condition to resolver for vitest | +| [f39f7ee95](https://github.com/angular/angular-cli/commit/f39f7ee9529113f7c75d0e0e3ffa628fed9ce92f) | fix | allow non-prefixed requests when using SSR and base href | +| [7c7e6a614](https://github.com/angular/angular-cli/commit/7c7e6a6142a9d294e04c612463449d2a4360e692) | fix | conditionally manage Vitest UI option | +| [edeb41c0e](https://github.com/angular/angular-cli/commit/edeb41c0e01881c21dec4d7f63fe8d302ce0521d) | fix | ensure tests run when compilation error is resolved | +| [9744af1f8](https://github.com/angular/angular-cli/commit/9744af1f82a8e9c2816adf636e4e8a1a8be06c60) | fix | remove LmdbCacheStore export from private API | + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | +| [e5651224b](https://github.com/angular/angular-cli/commit/e5651224b5086335d48b133e1d0b9c8536c22e5f) | fix | add leading slash to well-known non-Angular URLs | +| [081e31337](https://github.com/angular/angular-cli/commit/081e3133764c9a23f70969bfd182259be34a411e) | fix | propagate status code to redirect | +| [2d56a319d](https://github.com/angular/angular-cli/commit/2d56a319d8d45f36d9e5d958cbbd96e195c2c15e) | fix | skip SSR processing for well-known non-Angular URLs like favicon.ico | + + + # 21.0.4 (2025-12-18) diff --git a/package.json b/package.json index d23e949c593d..1e8b1891c3c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.1.0-next.2", + "version": "21.1.0-next.3", "private": true, "description": "Software Development Kit for Angular", "keywords": [ From e9be53f6a3bdad6a7233b086a48303c03bac03b1 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 17 Dec 2025 13:39:39 -0500 Subject: [PATCH 2016/2162] test: introduce Puppeteer infrastructure for E2E tests Add a new `executeBrowserTest` utility in `tests/e2e/utils/puppeteer.ts` to manage the Puppeteer browser lifecycle. This utility handles `ng serve` output parsing for both Webpack and Vite, captures browser console errors, and provides default assertions for page content to reduce test boilerplate. Migrate the `jit-prod` E2E test to use this new utility as an initial validation of the new infrastructure. --- tests/BUILD.bazel | 1 + tests/e2e/tests/BUILD.bazel | 1 + tests/e2e/tests/build/jit-prod.ts | 4 +- tests/e2e/utils/BUILD.bazel | 1 + tests/e2e/utils/puppeteer.ts | 86 +++++++++++++++++++++++++++++++ tests/rollup.config.mjs | 2 +- 6 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 tests/e2e/utils/puppeteer.ts diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index c93ffba8b5da..318bf3b965e4 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -73,6 +73,7 @@ e2e_suites( # TODO: Clean this up. "//:node_modules/express", "//:node_modules/undici", + "//:node_modules/puppeteer", ], runner = ":runner_entrypoint", ) diff --git a/tests/e2e/tests/BUILD.bazel b/tests/e2e/tests/BUILD.bazel index 33ced88bca3a..891814cb24eb 100644 --- a/tests/e2e/tests/BUILD.bazel +++ b/tests/e2e/tests/BUILD.bazel @@ -12,6 +12,7 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/express", "//:node_modules/fast-glob", + "//:node_modules/puppeteer", "//:node_modules/semver", "//:node_modules/undici", "//tests/e2e/utils", diff --git a/tests/e2e/tests/build/jit-prod.ts b/tests/e2e/tests/build/jit-prod.ts index 2042b0a8c93d..b2dc9d0bdddc 100644 --- a/tests/e2e/tests/build/jit-prod.ts +++ b/tests/e2e/tests/build/jit-prod.ts @@ -1,6 +1,6 @@ import { getGlobalVariable } from '../../utils/env'; -import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { // Make prod use JIT. @@ -18,5 +18,5 @@ export default async function () { }); // Test it works - await ng('e2e', '--configuration=production'); + await executeBrowserTest({ configuration: 'production' }); } diff --git a/tests/e2e/utils/BUILD.bazel b/tests/e2e/utils/BUILD.bazel index b3de5c29f9b5..8082ab9d97c4 100644 --- a/tests/e2e/utils/BUILD.bazel +++ b/tests/e2e/utils/BUILD.bazel @@ -15,6 +15,7 @@ ts_project( "//:node_modules/@types/semver", "//:node_modules/fast-glob", "//:node_modules/protractor", + "//:node_modules/puppeteer", "//:node_modules/semver", "//:node_modules/verdaccio", "//:node_modules/verdaccio-auth-memory", diff --git a/tests/e2e/utils/puppeteer.ts b/tests/e2e/utils/puppeteer.ts new file mode 100644 index 000000000000..af6b18278c3c --- /dev/null +++ b/tests/e2e/utils/puppeteer.ts @@ -0,0 +1,86 @@ +import { type Page, launch } from 'puppeteer'; +import { execAndWaitForOutputToMatch, killAllProcesses } from './process'; + +export interface BrowserTestOptions { + project?: string; + configuration?: string; + baseUrl?: string; + checkFn?: (page: Page) => Promise; + expectedTitleText?: string; +} + +export async function executeBrowserTest(options: BrowserTestOptions = {}) { + let url = options.baseUrl; + let hasStartedServer = false; + + try { + if (!url) { + // Start serving and find address (1 - Webpack; 2 - Vite) + const match = /(?:open your browser on|Local:)\s+(http:\/\/localhost:\d+\/)/; + const serveArgs = ['serve', '--port=0']; + if (options.project) { + serveArgs.push(options.project); + } + if (options.configuration) { + serveArgs.push(`--configuration=${options.configuration}`); + } + + const { stdout } = await execAndWaitForOutputToMatch('ng', serveArgs, match); + url = stdout.match(match)?.[1]; + if (!url) { + throw new Error('Could not find serving URL'); + } + hasStartedServer = true; + } + + const browser = await launch({ + executablePath: process.env['CHROME_BIN'], + headless: true, + args: ['--no-sandbox'], + }); + try { + const page = await browser.newPage(); + + // Capture errors + const errors: string[] = []; + page.on('console', (msg) => { + if (msg.type() === 'error') { + errors.push(msg.text()); + } + }); + page.on('pageerror', (err) => { + errors.push(err.toString()); + }); + + await page.goto(url); + + if (options.checkFn) { + await options.checkFn(page); + } else { + // Default check: verify h1 content and no browser errors + const expectedText = options.expectedTitleText || 'Hello, test-project'; + + // Wait for the h1 element to appear and contain the expected text + await page.waitForFunction( + (selector: string, text: string) => { + const doc = (globalThis as any).document; + return doc.querySelector(selector)?.textContent?.includes(text); + }, + { timeout: 10000 }, // Max 10 seconds wait time + 'h1', + expectedText, + ); + } + + if (errors.length > 0) { + throw new Error(`Browser console errors detected:\n${errors.join('\n')}`); + } + } finally { + await browser.close(); + } + } finally { + if (hasStartedServer) { + await killAllProcesses(); + } + } +} diff --git a/tests/rollup.config.mjs b/tests/rollup.config.mjs index 208e4cc78c42..c48299094fef 100644 --- a/tests/rollup.config.mjs +++ b/tests/rollup.config.mjs @@ -25,7 +25,7 @@ for (const file of testFiles) { export default { input: chunks, - external: ['undici'], // This cannot be bundled as `node:sqlite` is experimental in node.js 22. Remove once this feature is no longer behind a flag + external: ['undici', 'puppeteer'], // This cannot be bundled as `node:sqlite` is experimental in node.js 22. Remove once this feature is no longer behind a flag plugins: [ nodeResolve({ preferBuiltins: true, From 9b34c628c61992c668df6a0f23c6174951e3ba34 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:16:56 -0500 Subject: [PATCH 2017/2162] test: verify Puppeteer E2E infrastructure on Windows CI Integrates `executeBrowserTest` into the `basic/serve` E2E test to verify browser connectivity against a running HMR server. Additionally, enables the `basic/serve` test in the Windows CI workflow to ensure Puppeteer infrastructure stability on Windows. --- .github/workflows/pr.yml | 2 +- tests/e2e/tests/basic/serve.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 11e212489892..7f24117ba691 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -170,7 +170,7 @@ jobs: test_target_name: e2e.esbuild_node22 env: E2E_SHARD_TOTAL: 1 - TESTBRIDGE_TEST_ONLY: tests/basic/{build,rebuild}.ts + TESTBRIDGE_TEST_ONLY: tests/basic/{build,rebuild,serve}.ts e2e-package-managers: needs: build diff --git a/tests/e2e/tests/basic/serve.ts b/tests/e2e/tests/basic/serve.ts index 7623cc3a6afc..eac4823a3126 100644 --- a/tests/e2e/tests/basic/serve.ts +++ b/tests/e2e/tests/basic/serve.ts @@ -1,6 +1,7 @@ import assert from 'node:assert/strict'; import { killAllProcesses } from '../../utils/process'; import { ngServe } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { // Serve works without HMR @@ -11,6 +12,8 @@ export default async function () { // Serve works with HMR const hmrPort = await ngServe('--hmr'); await verifyResponse(hmrPort); + + await executeBrowserTest({ baseUrl: `http://localhost:${hmrPort}/` }); } async function verifyResponse(port: number): Promise { From 54f0eb6759d3b52d9240ca62822f8257d343956f Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:52:04 +0000 Subject: [PATCH 2018/2162] build: remove tools/baseline_browserslist from pnpm workspace This directory no longer exists. --- pnpm-workspace.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d1752e85bda6..ecfbec6f3cb9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,7 +15,6 @@ packages: - packages/ngtools/webpack - modules/testing/builder - tests - - tools/baseline_browserslist # The minimum age of a release to be considered for dependency installation. # The value is in minutes (1440 minutes = 1 day). minimumReleaseAge: 1440 From 424a465df7fa131803de4184f787ad9573a65090 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:06:35 +0000 Subject: [PATCH 2019/2162] fix(@schematics/angular): update default app component welcome message Aligns the inline welcome message with the external template for consistency. Closes #32176 --- .../files/module-files/src/app/app__suffix__.ts.template | 2 +- .../files/standalone-files/src/app/app__suffix__.ts.template | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template index cbc072878c68..5679c852f173 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template @@ -3,7 +3,7 @@ import { Component, signal } from '@angular/core'; @Component({ selector: '<%= selector %>',<% if(inlineTemplate) { %> template: ` -

Welcome to {{ title() }}!

+

Hello, {{ title() }}

<% if (routing) { %><% diff --git a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template index 0e6ebd5930a7..ce8010ecfbce 100644 --- a/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template +++ b/packages/schematics/angular/application/files/standalone-files/src/app/app__suffix__.ts.template @@ -5,7 +5,7 @@ import { RouterOutlet } from '@angular/router';<% } %> selector: '<%= selector %>', imports: [<% if(routing) { %>RouterOutlet<% } %>],<% if(inlineTemplate) { %> template: ` -

Welcome to {{ title() }}!

+

Hello, {{ title() }}

<% if (routing) { %><% From 716ef9d78812cad0f4c136dfb6ceb1fdb5dba04f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:14:34 -0500 Subject: [PATCH 2020/2162] test: remove control characters from puppeteer serve output in E2E tests Ensures that ANSI color codes do not interfere with URL matching in the Puppeteer E2E utility by using 'NO_COLOR' and removing control characters from the stdout. --- tests/e2e/utils/puppeteer.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/e2e/utils/puppeteer.ts b/tests/e2e/utils/puppeteer.ts index af6b18278c3c..8cab9f2ddef6 100644 --- a/tests/e2e/utils/puppeteer.ts +++ b/tests/e2e/utils/puppeteer.ts @@ -1,5 +1,6 @@ import { type Page, launch } from 'puppeteer'; import { execAndWaitForOutputToMatch, killAllProcesses } from './process'; +import { stripVTControlCharacters } from 'node:util'; export interface BrowserTestOptions { project?: string; @@ -25,8 +26,11 @@ export async function executeBrowserTest(options: BrowserTestOptions = {}) { serveArgs.push(`--configuration=${options.configuration}`); } - const { stdout } = await execAndWaitForOutputToMatch('ng', serveArgs, match); - url = stdout.match(match)?.[1]; + const { stdout } = await execAndWaitForOutputToMatch('ng', serveArgs, match, { + ...process.env, + 'NO_COLOR': '1', + }); + url = stripVTControlCharacters(stdout).match(match)?.[1]; if (!url) { throw new Error('Could not find serving URL'); } From 2ed38fb8554187dfc109f8aadf58938bef56c845 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 19 Dec 2025 09:17:09 +0000 Subject: [PATCH 2021/2162] build: switch Node.js toolchain to derive version from .nvmrc. Remove hardcoded node.js version --- MODULE.bazel | 2 +- MODULE.bazel.lock | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 28dd147db361..96260c10e76e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -44,7 +44,7 @@ git_override( ) node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") -node.toolchain(node_version = "24.0.0") +node.toolchain(node_version_from_nvmrc = "//:.nvmrc") use_repo( node, "nodejs_darwin_amd64", diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 74b11823db98..c0a0c2778368 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1082,7 +1082,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "ZSt0AxY3kRT/zQJ27ICWoD1gmFMpe+5ci/pvnm3dECE=", + "usagesDigest": "cCP9GoeRVRClxUD7sx+fiP6ynkjVfNk3ITZzbY7HmqU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1095,7 +1095,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "linux_amd64" } @@ -1108,7 +1109,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "linux_arm64" } @@ -1121,7 +1123,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "linux_s390x" } @@ -1134,7 +1137,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "linux_ppc64le" } @@ -1147,7 +1151,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "darwin_amd64" } @@ -1160,7 +1165,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "darwin_arm64" } @@ -1173,7 +1179,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "windows_amd64" } @@ -1186,7 +1193,8 @@ "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "24.0.0", + "node_version": "20.19.5", + "node_version_from_nvmrc": "@@//:.nvmrc", "include_headers": false, "platform": "windows_arm64" } From 95e35e537477445ac91276f521c33279994d3c1d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:54:53 +0000 Subject: [PATCH 2022/2162] build: add pnpm extension with specified version and integrity Ensure that the same version of pnpm is used. --- MODULE.bazel | 8 ++++++++ MODULE.bazel.lock | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 96260c10e76e..4444c98e73c6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -96,6 +96,14 @@ use_repo( "node24_windows_amd64", ) +pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm") +pnpm.pnpm( + name = "pnpm", + pnpm_version = "10.26.0", + pnpm_version_integrity = "sha512-Oz9scl6+cSUGwKsa1BM8+GsfS2h+/85iqbOLTXLjlUJC5kMZD8UfoWQpScc19APevUT1yw7dZXq+Y6i2p+HkAg==", +) +use_repo(pnpm, "pnpm") + npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") npm.npm_translate_lock( name = "npm", diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c0a0c2778368..abffed3dc5b2 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -406,7 +406,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "tQ+7EwLfQwqi/T4v5/N3NNHTmP6Wu/FqXxRDndEB2OU=", - "usagesDigest": "Tr4lh/DJy/YCO5nByO5cQarJwc2X2Vqej4F+rmkNim0=", + "usagesDigest": "fkR8y929BQ1GFezNYBR/HXJUcMa3NtJvhzsZrG8I9vI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -415,11 +415,11 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", "attributes": { "package": "pnpm", - "version": "8.15.9", + "version": "10.26.0", "root_package": "", "link_workspace": "", "link_packages": {}, - "integrity": "sha512-SZQ0ydj90aJ5Tr9FUrOyXApjOrzuW7Fee13pDzL0e1E6ypjNXP0AHDHw20VLw4BO3M1XhQHkyik6aBYWa72fgQ==", + "integrity": "sha512-Oz9scl6+cSUGwKsa1BM8+GsfS2h+/85iqbOLTXLjlUJC5kMZD8UfoWQpScc19APevUT1yw7dZXq+Y6i2p+HkAg==", "url": "", "commit": "", "patch_args": [ @@ -442,7 +442,7 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", "attributes": { "package": "pnpm", - "version": "8.15.9", + "version": "10.26.0", "dev": false, "root_package": "", "link_packages": {}, From ca84b29d59c441143d7aef110c14dbaa1987158a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 18 Dec 2025 16:20:30 -0500 Subject: [PATCH 2023/2162] test: initial protractor to puppeteer E2E conversion This change converts 10 of the E2E tests to use the new puppeteer infrastructure instead of protractor. --- tests/e2e/tests/build/jit-ngmodule.ts | 11 ++--- tests/e2e/tests/build/lazy-load-syntax.ts | 44 +++++++------------ .../build/library/lib-consumption-full-aot.ts | 9 ++-- .../build/library/lib-consumption-full-jit.ts | 11 +++-- .../library/lib-consumption-partial-aot.ts | 9 ++-- .../library/lib-consumption-partial-jit.ts | 9 ++-- tests/e2e/tests/build/library/setup.ts | 36 +++++---------- tests/e2e/tests/build/material.ts | 8 ++-- .../e2e/tests/build/ts-standard-decorators.ts | 5 ++- tests/e2e/tests/build/wasm-esm.ts | 18 +------- tests/e2e/tests/update/update.ts | 15 ++++--- 11 files changed, 66 insertions(+), 109 deletions(-) diff --git a/tests/e2e/tests/build/jit-ngmodule.ts b/tests/e2e/tests/build/jit-ngmodule.ts index 910f8993a16d..aa6b3fda86bb 100644 --- a/tests/e2e/tests/build/jit-ngmodule.ts +++ b/tests/e2e/tests/build/jit-ngmodule.ts @@ -1,13 +1,10 @@ import { getGlobalVariable } from '../../utils/env'; import { ng } from '../../utils/process'; -import { updateJsonFile, useCIChrome, useCIDefaults } from '../../utils/project'; +import { updateJsonFile, useCIDefaults } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { await ng('generate', 'app', 'test-project-two', '--no-standalone', '--skip-install'); - await ng('generate', 'private-e2e', '--related-app-name=test-project-two'); - - // Setup testing to use CI Chrome. - await useCIChrome('test-project-two', './projects/test-project-two/e2e'); await useCIDefaults('test-project-two'); // Make prod use JIT. @@ -46,6 +43,6 @@ export default async function () { serve.builder = '@angular-devkit/build-angular:dev-server'; }); // Test it works - await ng('e2e', 'test-project-two', '--configuration=production'); - await ng('e2e', 'test-project-two', '--configuration=development'); + await executeBrowserTest({ project: 'test-project-two', configuration: 'production' }); + await executeBrowserTest({ project: 'test-project-two', configuration: 'development' }); } diff --git a/tests/e2e/tests/build/lazy-load-syntax.ts b/tests/e2e/tests/build/lazy-load-syntax.ts index 2b91b3f63b45..bc0a375673dc 100644 --- a/tests/e2e/tests/build/lazy-load-syntax.ts +++ b/tests/e2e/tests/build/lazy-load-syntax.ts @@ -5,10 +5,11 @@ * 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 { setTimeout } from 'node:timers/promises'; -import { replaceInFile, writeFile } from '../../utils/fs'; + +import { replaceInFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { // Add lazy route. @@ -22,29 +23,6 @@ export default async function () { }];`, ); - // Add lazy route e2e - await writeFile( - 'e2e/src/app.e2e-spec.ts', - ` - import { browser, logging, element, by } from 'protractor'; - - describe('workspace-project App', () => { - it('should display lazy route', async () => { - await browser.get(browser.baseUrl + '/lazy'); - expect(await element(by.css('app-lazy-comp p')).getText()).toEqual('lazy-comp works!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - })); - }); - }); - `, - ); - // Convert the default config to use JIT and prod to just do AOT. // This way we can use `ng e2e` to test JIT and `ng e2e --configuration=production` to test AOT. await updateJsonFile('angular.json', (json) => { @@ -53,7 +31,17 @@ export default async function () { buildTarget['configurations']['development']['aot'] = false; }); - await ng('e2e'); - await setTimeout(500); - await ng('e2e', '--configuration=production'); + const checkFn = async (page: any) => { + await page.goto(page.url() + 'lazy'); + await page.waitForFunction( + () => + !!(globalThis as any).document + .querySelector('app-lazy-comp p') + ?.textContent?.includes('lazy-comp works!'), + { timeout: 10000 }, + ); + }; + + await executeBrowserTest({ checkFn }); + await executeBrowserTest({ configuration: 'production', checkFn }); } diff --git a/tests/e2e/tests/build/library/lib-consumption-full-aot.ts b/tests/e2e/tests/build/library/lib-consumption-full-aot.ts index 88c80ac61629..08d114f1de4a 100644 --- a/tests/e2e/tests/build/library/lib-consumption-full-aot.ts +++ b/tests/e2e/tests/build/library/lib-consumption-full-aot.ts @@ -1,6 +1,6 @@ -import { setTimeout } from 'node:timers/promises'; import { ng } from '../../../utils/process'; -import { libraryConsumptionSetup } from './setup'; +import { executeBrowserTest } from '../../../utils/puppeteer'; +import { browserCheck, libraryConsumptionSetup } from './setup'; export default async function () { await libraryConsumptionSetup(); @@ -9,7 +9,6 @@ export default async function () { await ng('build', 'my-lib', '--configuration=development'); // Check that the e2e succeeds prod and non prod mode - await ng('e2e', '--configuration=production'); - await setTimeout(500); - await ng('e2e', '--configuration=development'); + await executeBrowserTest({ configuration: 'production', checkFn: browserCheck }); + await executeBrowserTest({ configuration: 'development', checkFn: browserCheck }); } diff --git a/tests/e2e/tests/build/library/lib-consumption-full-jit.ts b/tests/e2e/tests/build/library/lib-consumption-full-jit.ts index e63130e77c86..906a920dba44 100644 --- a/tests/e2e/tests/build/library/lib-consumption-full-jit.ts +++ b/tests/e2e/tests/build/library/lib-consumption-full-jit.ts @@ -1,8 +1,8 @@ -import { setTimeout } from 'node:timers/promises'; import { updateJsonFile } from '../../../utils/project'; import { expectFileToMatch } from '../../../utils/fs'; import { ng } from '../../../utils/process'; -import { libraryConsumptionSetup } from './setup'; +import { executeBrowserTest } from '../../../utils/puppeteer'; +import { browserCheck, libraryConsumptionSetup } from './setup'; import { getGlobalVariable } from '../../../utils/env'; export default async function () { @@ -21,10 +21,9 @@ export default async function () { } }); - // Check that the e2e succeeds prod and non prod mode - await ng('e2e', '--configuration=production'); - await setTimeout(500); - await ng('e2e', '--configuration=development'); + // Ensure app works in prod and non prod mode + await executeBrowserTest({ configuration: 'production', checkFn: browserCheck }); + await executeBrowserTest({ configuration: 'development', checkFn: browserCheck }); // Validate that sourcemaps for the library exists. await ng('build', '--configuration=development'); diff --git a/tests/e2e/tests/build/library/lib-consumption-partial-aot.ts b/tests/e2e/tests/build/library/lib-consumption-partial-aot.ts index 5b45a8372f68..f906be54b0e6 100644 --- a/tests/e2e/tests/build/library/lib-consumption-partial-aot.ts +++ b/tests/e2e/tests/build/library/lib-consumption-partial-aot.ts @@ -1,6 +1,6 @@ -import { setTimeout } from 'node:timers/promises'; import { ng } from '../../../utils/process'; -import { libraryConsumptionSetup } from './setup'; +import { executeBrowserTest } from '../../../utils/puppeteer'; +import { browserCheck, libraryConsumptionSetup } from './setup'; export default async function () { await libraryConsumptionSetup(); @@ -9,7 +9,6 @@ export default async function () { await ng('build', 'my-lib', '--configuration=production'); // Check that the e2e succeeds prod and non prod mode - await ng('e2e', '--configuration=production'); - await setTimeout(500); - await ng('e2e', '--configuration=development'); + await executeBrowserTest({ configuration: 'production', checkFn: browserCheck }); + await executeBrowserTest({ configuration: 'development', checkFn: browserCheck }); } diff --git a/tests/e2e/tests/build/library/lib-consumption-partial-jit.ts b/tests/e2e/tests/build/library/lib-consumption-partial-jit.ts index 9abb8a7e7b2f..503c09e525e9 100644 --- a/tests/e2e/tests/build/library/lib-consumption-partial-jit.ts +++ b/tests/e2e/tests/build/library/lib-consumption-partial-jit.ts @@ -1,7 +1,7 @@ -import { setTimeout } from 'node:timers/promises'; import { updateJsonFile } from '../../../utils/project'; import { ng } from '../../../utils/process'; -import { libraryConsumptionSetup } from './setup'; +import { executeBrowserTest } from '../../../utils/puppeteer'; +import { browserCheck, libraryConsumptionSetup } from './setup'; import { getGlobalVariable } from '../../../utils/env'; export default async function () { @@ -22,7 +22,6 @@ export default async function () { }); // Check that the e2e succeeds prod and non prod mode - await ng('e2e', '--configuration=production'); - await setTimeout(500); - await ng('e2e', '--configuration=development'); + await executeBrowserTest({ configuration: 'production', checkFn: browserCheck }); + await executeBrowserTest({ configuration: 'development', checkFn: browserCheck }); } diff --git a/tests/e2e/tests/build/library/setup.ts b/tests/e2e/tests/build/library/setup.ts index 9e05cab551a4..621b740cf4bc 100644 --- a/tests/e2e/tests/build/library/setup.ts +++ b/tests/e2e/tests/build/library/setup.ts @@ -1,3 +1,4 @@ +import type { Page } from 'puppeteer'; import { writeMultipleFiles } from '../../../utils/fs'; import { silentNg } from '../../../utils/process'; @@ -30,30 +31,15 @@ export async function libraryConsumptionSetup(): Promise { } } `, - 'e2e/src/app.e2e-spec.ts': ` - import { browser, logging, element, by } from 'protractor'; - import { AppPage } from './app.po'; - - describe('workspace-project App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display text from library component', async () => { - await page.navigateTo(); - expect(await element(by.css('lib-my-lib p')).getText()).toEqual('my-lib works!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - })); - }); - }); -`, }); } + +export async function browserCheck(page: Page): Promise { + await page.waitForFunction( + () => + !!(globalThis as any).document + .querySelector('lib-my-lib p') + ?.textContent?.includes('my-lib works!'), + { timeout: 10000 }, + ); +} diff --git a/tests/e2e/tests/build/material.ts b/tests/e2e/tests/build/material.ts index 3fd41f712a30..bc4862f735fc 100644 --- a/tests/e2e/tests/build/material.ts +++ b/tests/e2e/tests/build/material.ts @@ -1,5 +1,4 @@ -import assert from 'node:assert/strict'; -import { appendFile, readdir } from 'node:fs/promises'; +import { appendFile } from 'node:fs/promises'; import { getGlobalVariable } from '../../utils/env'; import { readFile, replaceInFile } from '../../utils/fs'; import { @@ -7,8 +6,9 @@ import { installPackage, installWorkspacePackages, } from '../../utils/packages'; -import { execWithEnv, ng } from '../../utils/process'; +import { ng } from '../../utils/process'; import { isPrereleaseCli, updateJsonFile } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; const snapshots = require('../../ng-snapshot/package.json'); @@ -85,5 +85,5 @@ export default async function () { }`, ); - await ng('e2e', '--configuration=production'); + await executeBrowserTest({ configuration: 'production' }); } diff --git a/tests/e2e/tests/build/ts-standard-decorators.ts b/tests/e2e/tests/build/ts-standard-decorators.ts index 07bf93e3b545..05d056675d3b 100644 --- a/tests/e2e/tests/build/ts-standard-decorators.ts +++ b/tests/e2e/tests/build/ts-standard-decorators.ts @@ -1,6 +1,7 @@ import { getGlobalVariable } from '../../utils/env'; import { ng } from '../../utils/process'; import { updateJsonFile, updateTsConfig } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { // Update project to disable experimental decorators @@ -31,6 +32,6 @@ export default async function () { // Unit tests (JIT only) await ng('test', '--no-watch'); - // E2E tests to ensure application functions in a browser - await ng('e2e'); + // Ensure application functions in a browser + await executeBrowserTest(); } diff --git a/tests/e2e/tests/build/wasm-esm.ts b/tests/e2e/tests/build/wasm-esm.ts index 8a9735172f1b..70633a1021c1 100644 --- a/tests/e2e/tests/build/wasm-esm.ts +++ b/tests/e2e/tests/build/wasm-esm.ts @@ -11,6 +11,7 @@ import { ng } from '../../utils/process'; import { prependToFile, replaceInFile } from '../../utils/fs'; import { updateJsonFile, useSha } from '../../utils/project'; import { installWorkspacePackages } from '../../utils/packages'; +import { executeBrowserTest } from '../../utils/puppeteer'; /** * Compiled and base64 encoded WASM file for the following WAT: @@ -66,22 +67,7 @@ export default async function () { await ng('build'); // Update E2E test to check for WASM execution - await writeFile( - 'e2e/src/app.e2e-spec.ts', - ` - import { AppPage } from './app.po'; - import { browser, logging } from 'protractor'; - describe('WASM execution', () => { - it('should log WASM result messages', async () => { - const page = new AppPage(); - await page.navigateTo(); - expect(await page.getTitleText()).toEqual('Hello, 32'); - }); - }); - `, - ); - - await ng('e2e'); + await executeBrowserTest({ expectedTitleText: 'Hello, 32' }); // Setup prerendering and build to test Node.js functionality await ng('add', '@angular/ssr', '--skip-confirmation', '--skip-install'); diff --git a/tests/e2e/tests/update/update.ts b/tests/e2e/tests/update/update.ts index d50e4bc51e3a..ae941762d6ca 100644 --- a/tests/e2e/tests/update/update.ts +++ b/tests/e2e/tests/update/update.ts @@ -4,6 +4,7 @@ import { expectFileMatchToExist } from '../../utils/fs'; import { getActivePackageManager } from '../../utils/packages'; import { ng, noSilentNg } from '../../utils/process'; import { isPrereleaseCli, useCIChrome, useCIDefaults, getNgCLIVersion } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { let restoreRegistry: (() => Promise) | undefined; @@ -70,20 +71,22 @@ export default async function () { await ng('update', '@angular/cli', ...extraUpdateArgs); - // Generate E2E setup - await ng('generate', 'private-e2e', '--related-app-name=nineteen-project'); - // Setup testing to use CI Chrome. await useCIChrome('nineteen-project', './'); - await useCIChrome('nineteen-project', './e2e/'); await useCIDefaults('nineteen-project'); // Run CLI commands. await ng('generate', 'component', 'my-comp'); await ng('test', '--watch=false'); - await ng('e2e'); - await ng('e2e', '--configuration=production'); + await executeBrowserTest({ + configuration: 'production', + expectedTitleText: 'Hello, nineteen-project', + }); + await executeBrowserTest({ + configuration: 'development', + expectedTitleText: 'Hello, nineteen-project', + }); // Verify project now creates bundles await noSilentNg('build', '--configuration=production'); From 5f1f0d1f3cc20a6c80d86d846dcfa4e1beffa448 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 19 Dec 2025 13:11:30 -0500 Subject: [PATCH 2024/2162] test: migrate i18n E2E tests to Puppeteer Replaces the Protractor-based `ng e2e` execution with the new Puppeteer `executeBrowserTest` utility in the i18n E2E test suite. Refactors `setup.ts` to export a `browserCheck` helper function for verifying translated content, and removes the legacy Protractor spec file generation and configuration. Updates the following tests to use the new infrastructure: - ivy-localize-es2015-e2e - ivy-localize-basehref - ivy-localize-es2015 - ivy-localize-locale-data-augment - ivy-localize-sub-path --- tests/e2e/tests/i18n/ivy-localize-basehref.ts | 41 +++++------ .../e2e/tests/i18n/ivy-localize-es2015-e2e.ts | 11 +-- tests/e2e/tests/i18n/ivy-localize-es2015.ts | 16 ++--- .../i18n/ivy-localize-locale-data-augment.ts | 37 ++++++---- tests/e2e/tests/i18n/ivy-localize-sub-path.ts | 16 ++--- tests/e2e/tests/i18n/setup.ts | 69 ++++++++----------- 6 files changed, 93 insertions(+), 97 deletions(-) diff --git a/tests/e2e/tests/i18n/ivy-localize-basehref.ts b/tests/e2e/tests/i18n/ivy-localize-basehref.ts index d14c14307ab1..4bbd7dece3ee 100644 --- a/tests/e2e/tests/i18n/ivy-localize-basehref.ts +++ b/tests/e2e/tests/i18n/ivy-localize-basehref.ts @@ -9,7 +9,14 @@ import { expectFileToMatch } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; -import { baseHrefs, externalServer, langTranslations, setupI18nConfig } from './setup'; +import { executeBrowserTest } from '../../utils/puppeteer'; +import { + baseHrefs, + browserCheck, + externalServer, + langTranslations, + setupI18nConfig, +} from './setup'; export default async function () { // Setup i18n tests and config. @@ -50,18 +57,12 @@ export default async function () { await expectFileToMatch(`${outputPath}/index.html`, `href="${baseHrefs[lang] || '/'}"`); // Execute Application E2E tests for a production build without dev server - const { server, port, url } = await externalServer( - outputPath, - (baseHrefs[lang] as string) || '/', - ); + const { server, url } = await externalServer(outputPath, (baseHrefs[lang] as string) || '/'); try { - await ng( - 'e2e', - `--port=${port}`, - `--configuration=${lang}`, - '--dev-server-target=', - `--base-url=${url}`, - ); + await executeBrowserTest({ + baseUrl: url, + checkFn: (page) => browserCheck(page, lang), + }); } finally { server.close(); } @@ -81,18 +82,12 @@ export default async function () { await expectFileToMatch(`${outputPath}/index.html`, `href="/test${baseHrefs[lang] || '/'}"`); // Execute Application E2E tests for a production build without dev server - const { server, port, url } = await externalServer( - outputPath, - '/test' + (baseHrefs[lang] || '/'), - ); + const { server, url } = await externalServer(outputPath, '/test' + (baseHrefs[lang] || '/')); try { - await ng( - 'e2e', - `--port=${port}`, - `--configuration=${lang}`, - '--dev-server-target=', - `--base-url=${url}`, - ); + await executeBrowserTest({ + baseUrl: url, + checkFn: (page) => browserCheck(page, lang), + }); } finally { server.close(); } diff --git a/tests/e2e/tests/i18n/ivy-localize-es2015-e2e.ts b/tests/e2e/tests/i18n/ivy-localize-es2015-e2e.ts index 3fe337c4c90f..d1f7ac8e28b8 100644 --- a/tests/e2e/tests/i18n/ivy-localize-es2015-e2e.ts +++ b/tests/e2e/tests/i18n/ivy-localize-es2015-e2e.ts @@ -1,13 +1,14 @@ -import { getGlobalVariable } from '../../utils/env'; -import { ng } from '../../utils/process'; -import { langTranslations, setupI18nConfig } from './setup'; +import { executeBrowserTest } from '../../utils/puppeteer'; +import { browserCheck, langTranslations, setupI18nConfig } from './setup'; export default async function () { // Setup i18n tests and config. await setupI18nConfig(); for (const { lang } of langTranslations) { - // Execute Application E2E tests with dev server - await ng('e2e', `--configuration=${lang}`, '--port=0'); + await executeBrowserTest({ + configuration: lang, + checkFn: (page) => browserCheck(page, lang), + }); } } diff --git a/tests/e2e/tests/i18n/ivy-localize-es2015.ts b/tests/e2e/tests/i18n/ivy-localize-es2015.ts index b8425795cab4..cea87a75f2b8 100644 --- a/tests/e2e/tests/i18n/ivy-localize-es2015.ts +++ b/tests/e2e/tests/i18n/ivy-localize-es2015.ts @@ -1,8 +1,9 @@ import { getGlobalVariable } from '../../utils/env'; import { expectFileToMatch } from '../../utils/fs'; import { ng } from '../../utils/process'; +import { executeBrowserTest } from '../../utils/puppeteer'; import { expectToFail } from '../../utils/utils'; -import { externalServer, langTranslations, setupI18nConfig } from './setup'; +import { browserCheck, externalServer, langTranslations, setupI18nConfig } from './setup'; export default async function () { // Setup i18n tests and config. @@ -32,15 +33,12 @@ export default async function () { await expectFileToMatch(`${outputPath}/index.html`, `lang="${lang}"`); // Execute Application E2E tests for a production build without dev server - const { server, port, url } = await externalServer(outputPath, `/${lang}/`); + const { server, url } = await externalServer(outputPath, `/${lang}/`); try { - await ng( - 'e2e', - `--port=${port}`, - `--configuration=${lang}`, - '--dev-server-target=', - `--base-url=${url}`, - ); + await executeBrowserTest({ + baseUrl: url, + checkFn: (page) => browserCheck(page, lang), + }); } finally { server.close(); } diff --git a/tests/e2e/tests/i18n/ivy-localize-locale-data-augment.ts b/tests/e2e/tests/i18n/ivy-localize-locale-data-augment.ts index e2c408a74c69..b4c0ae72ced4 100644 --- a/tests/e2e/tests/i18n/ivy-localize-locale-data-augment.ts +++ b/tests/e2e/tests/i18n/ivy-localize-locale-data-augment.ts @@ -1,14 +1,9 @@ import { getGlobalVariable } from '../../utils/env'; -import { - expectFileToMatch, - prependToFile, - readFile, - replaceInFile, - writeFile, -} from '../../utils/fs'; +import { expectFileToMatch, prependToFile, readFile, writeFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; -import { langTranslations, setupI18nConfig } from './setup'; +import { executeBrowserTest } from '../../utils/puppeteer'; +import { browserCheck, langTranslations, setupI18nConfig } from './setup'; export default async function () { // Setup i18n tests and config. @@ -20,9 +15,6 @@ export default async function () { appProject.architect['build'].options.localize = ['fr']; }); - // Update E2E test to look for augmented locale data - await replaceInFile('./e2e/src/app.fr.e2e-spec.ts', 'janvier', 'changed-janvier'); - // Augment the locale data and import into the main application file const localeData = await readFile('node_modules/@angular/common/locales/global/fr.js'); await writeFile('src/fr-changed.js', localeData.replace('janvier', 'changed-janvier')); @@ -45,6 +37,27 @@ export default async function () { } // Execute Application E2E tests with dev server - await ng('e2e', `--configuration=${lang}`, '--port=0'); + await executeBrowserTest({ + configuration: lang, + checkFn: async (page) => { + // Run standard checks but expect failure on date + try { + await browserCheck(page, lang); + throw new Error('Expected browserCheck to fail due to modified locale data'); + } catch (e) { + if (!(e instanceof Error) || !e.message.includes("Expected 'date' to be")) { + throw e; + } + } + + // Verify the modified date + const getParagraph = async (id: string) => + page.$eval(`p#${id}`, (el) => el.textContent?.trim()); + const date = await getParagraph('date'); + if (date !== 'changed-janvier') { + throw new Error(`Expected 'date' to be 'changed-janvier', but got '${date}'.`); + } + }, + }); } } diff --git a/tests/e2e/tests/i18n/ivy-localize-sub-path.ts b/tests/e2e/tests/i18n/ivy-localize-sub-path.ts index d6640534c45f..6116c438a49f 100644 --- a/tests/e2e/tests/i18n/ivy-localize-sub-path.ts +++ b/tests/e2e/tests/i18n/ivy-localize-sub-path.ts @@ -10,7 +10,8 @@ import { join } from 'node:path'; import { expectFileToMatch } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; -import { baseDir, baseHrefs, externalServer, langTranslations, setupI18nConfig } from './setup'; +import { executeBrowserTest } from '../../utils/puppeteer'; +import { baseDir, browserCheck, externalServer, langTranslations, setupI18nConfig } from './setup'; export default async function () { // Setup i18n tests and config. @@ -56,16 +57,13 @@ export default async function () { await expectFileToMatch(`${outputPath}/index.html`, `href="${baseHref}"`); // Execute Application E2E tests for a production build without dev server - const { server, port, url } = await externalServer(outputPath, baseHref); + const { server, url } = await externalServer(outputPath, baseHref); try { - await ng( - 'e2e', - `--port=${port}`, - `--configuration=${lang}`, - '--dev-server-target=', - `--base-url=${url}`, - ); + await executeBrowserTest({ + baseUrl: url, + checkFn: (page) => browserCheck(page, lang), + }); } finally { server.close(); } diff --git a/tests/e2e/tests/i18n/setup.ts b/tests/e2e/tests/i18n/setup.ts index 99d71f9bbe4b..8eade4e2783c 100644 --- a/tests/e2e/tests/i18n/setup.ts +++ b/tests/e2e/tests/i18n/setup.ts @@ -7,6 +7,7 @@ import { updateJsonFile } from '../../utils/project'; import { readNgVersion } from '../../utils/version'; import { Server } from 'node:http'; import { AddressInfo } from 'node:net'; +import type { Page } from 'puppeteer'; // Configurations for each locale. const translationFile = 'src/locale/messages.xlf'; @@ -61,6 +62,35 @@ export const langTranslations = [ ]; export const sourceLocale = langTranslations[0].lang; +export async function browserCheck(page: Page, lang: string) { + const translation = langTranslations.find((t) => t.lang === lang)?.translation; + if (!translation) { + throw new Error(`Could not find translation for language '${lang}'`); + } + + const getParagraph = async (id: string) => page.$eval(`p#${id}`, (el) => el.textContent?.trim()); + + const hello = await getParagraph('hello'); + if (hello !== translation.hello) { + throw new Error(`Expected 'hello' to be '${translation.hello}', but got '${hello}'.`); + } + + const locale = await getParagraph('locale'); + if (locale !== lang) { + throw new Error(`Expected 'locale' to be '${lang}', but got '${locale}'.`); + } + + const date = await getParagraph('date'); + if (date !== translation.date) { + throw new Error(`Expected 'date' to be '${translation.date}', but got '${date}'.`); + } + + const plural = await getParagraph('plural'); + if (plural !== translation.plural) { + throw new Error(`Expected 'plural' to be '${translation.plural}', but got '${plural}'.`); + } +} + export interface ExternalServer { readonly server: Server; readonly port: number; @@ -173,47 +203,12 @@ export async function setupI18nConfig() { `, ); - // Add e2e specs for each lang. - for (const { lang, translation } of langTranslations) { - await writeFile( - `./e2e/src/app.${lang}.e2e-spec.ts`, - ` - import { browser, logging, element, by } from 'protractor'; - - describe('workspace-project App', () => { - const getParagraph = async (name: string) => element(by.css('app-root p#' + name)).getText(); - beforeEach(() => browser.get(browser.baseUrl)); - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry)); - }); - - it('should display welcome message', async () => - expect(await getParagraph('hello')).toEqual('${translation.hello}')); - - it('should display locale', async () => - expect(await getParagraph('locale')).toEqual('${lang}')); - - it('should display localized date', async () => - expect(await getParagraph('date')).toEqual('${translation.date}')); - - it('should display pluralized message', async () => - expect(await getParagraph('plural')).toEqual('${translation.plural}')); - }); - `, - ); - } - // Update angular.json to build, serve, and test each locale. await updateJsonFile('angular.json', (workspaceJson) => { const appProject = workspaceJson.projects['test-project']; const appArchitect = workspaceJson.projects['test-project'].architect; const buildConfigs = appArchitect['build'].configurations; const serveConfigs = appArchitect['serve'].configurations; - const e2eConfigs = appArchitect['e2e'].configurations; appArchitect['build'].defaultConfiguration = undefined; @@ -245,10 +240,6 @@ export async function setupI18nConfig() { buildConfigs[lang] = { localize: [lang] }; serveConfigs[lang] = { buildTarget: `test-project:build:${lang}` }; - e2eConfigs[lang] = { - specs: [`./src/app.${lang}.e2e-spec.ts`], - devServerTarget: `test-project:serve:${lang}`, - }; } }); From 8e315edb1f11c9b2d8330bd54a299a38d0bc0a5b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 19 Dec 2025 18:09:16 +0000 Subject: [PATCH 2025/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/e2e/ng-snapshot/package.json | 32 ++++++------ 11 files changed, 80 insertions(+), 80 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 27d5a03b5b2b..a30031ce31fd 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + - uses: angular/dev-infra/github-actions/branch-manager@942d738d8f4d65b161d06e6c399fefec318cdbfe with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa4c9038cca2..000b239cd7a0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - 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 7ebf460a4d4a..23811dc9f573 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + - uses: angular/dev-infra/github-actions/pull-request-labeling@942d738d8f4d65b161d06e6c399fefec318cdbfe with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + - uses: angular/dev-infra/github-actions/post-approval-changes@942d738d8f4d65b161d06e6c399fefec318cdbfe with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 249ff7735981..fae7787a6dff 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@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + - uses: angular/dev-infra/github-actions/feature-request@942d738d8f4d65b161d06e6c399fefec318cdbfe with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 9a0388f69c4a..abe20d3f3921 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@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - 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@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - 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 7f24117ba691..d103d3f2edcd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/linting/licenses@942d738d8f4d65b161d06e6c399fefec318cdbfe build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 4444c98e73c6..b4bf8a27a1aa 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "2b0a3018401da50c0b34a4dedde2a6fdb9e90394", + commit = "942d738d8f4d65b161d06e6c399fefec318cdbfe", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index abffed3dc5b2..1f9bb1615d4e 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1082,7 +1082,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "cCP9GoeRVRClxUD7sx+fiP6ynkjVfNk3ITZzbY7HmqU=", + "usagesDigest": "S8pbOD3W4rSYjK/dNi5FSVLmT25mLbwVs9g/9fC2SN8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index 1e8b1891c3c7..3719275d25e1 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@angular/forms": "21.1.0-next.4", "@angular/localize": "21.1.0-next.4", "@angular/material": "21.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#732af8115cf207c0a6c851592cd60562b2ab463b", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ddc3809c1993612732eaae62d28e828b2ed789e5", "@angular/platform-browser": "21.1.0-next.4", "@angular/platform-server": "21.1.0-next.4", "@angular/router": "21.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0262ff8b5c16..19011d2b7ab5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.3 version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#732af8115cf207c0a6c851592cd60562b2ab463b - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/732af8115cf207c0a6c851592cd60562b2ab463b(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ddc3809c1993612732eaae62d28e828b2ed789e5 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) '@angular/platform-browser': specifier: 21.1.0-next.4 version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1026,9 +1026,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/732af8115cf207c0a6c851592cd60562b2ab463b': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/732af8115cf207c0a6c851592cd60562b2ab463b} - version: 0.0.0-2b0a3018401da50c0b34a4dedde2a6fdb9e90394 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5} + version: 0.0.0-942d738d8f4d65b161d06e6c399fefec318cdbfe hasBin: true '@angular/platform-browser@21.1.0-next.4': @@ -9686,7 +9686,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/732af8115cf207c0a6c851592cd60562b2ab463b(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 3b6e0f721afe..a8565caab740 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#e5d29380f64a0ab55e198833b9b263766284dacc", - "@angular/cdk": "github:angular/cdk-builds#b199fa90c9f09e45a697c7d019cd871ed77dfb30", - "@angular/common": "github:angular/common-builds#7fb2afb52522bd3c1c1b45de9d521269acaf7a07", - "@angular/compiler": "github:angular/compiler-builds#53e0baa76df57afceb171a33e7a7d7b0f97fb787", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#a7f593299599093c908ea2d99373e8c77458ef2c", - "@angular/core": "github:angular/core-builds#258818ee94b7aa97ee47d4d1c878aed2c283c025", - "@angular/forms": "github:angular/forms-builds#9654caa42ffa6d985c0640f41bc4fa2a5b48049d", - "@angular/language-service": "github:angular/language-service-builds#1d87361d9a0e6b3940442f78644048ebda4fa7cd", - "@angular/localize": "github:angular/localize-builds#04237db953587fb2065c8c7730ad881f2f41e92c", - "@angular/material": "github:angular/material-builds#803f89824f1a38e26e4046e07d421afd6e3ccd1c", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2dede4c21db49dd5c4b2033dfadd126aba97954a", - "@angular/platform-browser": "github:angular/platform-browser-builds#63fbd6946f478b54e5faadcb2c658a5f35afeef7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b02dd9bad1af59a121b094278043664074601253", - "@angular/platform-server": "github:angular/platform-server-builds#2f06ef4b4e4ce996b8f8bf9156bde8d70a0d5cdd", - "@angular/router": "github:angular/router-builds#300b2aecc342f730a580701c2300ae21ffd26306", - "@angular/service-worker": "github:angular/service-worker-builds#12d8bcccda6e2551f1f680852819d45f584c8da6" + "@angular/animations": "github:angular/animations-builds#80524f5d854b7fdb33104e629ca5e1102255f6f5", + "@angular/cdk": "github:angular/cdk-builds#475fd8d473ba20045b3393423d8a14d93a2da938", + "@angular/common": "github:angular/common-builds#8aafef4ce946a2f96a0203c9b9623c29998995bb", + "@angular/compiler": "github:angular/compiler-builds#205d342032c053a41088e14de00ff14e28e56fce", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#110918badaf4f73a2d20eb58f185fb6c1f8ae54a", + "@angular/core": "github:angular/core-builds#969d56512e639d39092dd3edf736bd7ba19a4c7d", + "@angular/forms": "github:angular/forms-builds#fafffa726c829fd644957e6c76bb5e42f09cbed7", + "@angular/language-service": "github:angular/language-service-builds#41e0bb51496678a972f37cb973ece48e40bc5cd1", + "@angular/localize": "github:angular/localize-builds#ef4c1e3562f99602b38312aabccb4cb5fb6bb53f", + "@angular/material": "github:angular/material-builds#998cd492b05bf024e5bb7a9a21e52a94dec740ef", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f173ac254a842de20a90694e34628c165989e9b6", + "@angular/platform-browser": "github:angular/platform-browser-builds#90c22fc35fde1feb2bc28435d23062443ddaae68", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#fbb14077cfb88dcdb4e5d1b7a177b3d127e9f8be", + "@angular/platform-server": "github:angular/platform-server-builds#0e40e41e36ffd1d1aa740438f11262542da4cd7e", + "@angular/router": "github:angular/router-builds#ac4ab9493afbfbcb3cb457682d651113938d490b", + "@angular/service-worker": "github:angular/service-worker-builds#4ffbe09669ce6958a3ffb669fa7a059aa9e735c6" } } From b969432066e5889f81d7fd1bd2f03213e6eb6b7d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 19 Dec 2025 06:45:27 +0000 Subject: [PATCH 2026/2162] Revert "build: restore `ng-dev` script" This reverts commit 70bc0f6d286910de43f03658872da00b282b2b55. --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 3719275d25e1..078280506462 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,7 @@ "postinstall": "husky", "ts-circular-deps": "ng-dev ts-circular-deps --config ./scripts/circular-deps-test.conf.mjs", "check-tooling-setup": "tsc --project .ng-dev/tsconfig.json", - "diff-release-package": "node scripts/diff-release-package.mts", - "ng-dev": "ng-dev" + "diff-release-package": "node scripts/diff-release-package.mts" }, "repository": { "type": "git", From 72032713596b0ab962a3ed23fb041d4d155ed865 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 22 Dec 2025 06:06:58 +0000 Subject: [PATCH 2027/2162] build: update pnpm to v10.26.1 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 078280506462..5f862d813789 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.26.0", + "packageManager": "pnpm@10.26.1", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.26.0" + "pnpm": "10.26.1" }, "author": "Angular Authors", "license": "MIT", From cb24c24fa281f52921df9f55c8d0b4ac92dacb33 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 23 Dec 2025 08:07:26 +0000 Subject: [PATCH 2028/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 854 ++++++++----------------------------------------- 1 file changed, 140 insertions(+), 714 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19011d2b7ab5..836c840b056a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -318,19 +318,19 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: specifier: 27.3.0 - version: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + version: 27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -424,7 +424,7 @@ importers: version: link:../ssr jsdom: specifier: 27.3.0 - version: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + version: 27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -1069,8 +1069,8 @@ packages: '@angular/core': 21.1.0-next.4 rxjs: ^6.5.3 || ^7.4.0 - '@asamuzakjp/css-color@4.1.0': - resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} + '@asamuzakjp/css-color@4.1.1': + resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} '@asamuzakjp/dom-selector@6.7.6': resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} @@ -1639,11 +1639,9 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.14': - resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} + '@csstools/css-syntax-patches-for-csstree@1.0.22': + resolution: {integrity: sha512-qBcx6zYlhleiFfdtzkRgwNC7VVoAwfK76Vmsw5t+PbvtdknO9StgRk7ROvq9so1iqbdW4uLIDAsXRsTfUrIoOw==} engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} @@ -1666,312 +1664,156 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.1': resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.1': resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.1': resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.1': resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.1': resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.1': resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.1': resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.1': resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.1': resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.1': resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.1': resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.1': resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.1': resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.1': resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.1': resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.1': resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.1': resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.1': resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.1': resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.1': resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.1': resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.1': resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.1': resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} engines: {node: '>=18'} @@ -3337,250 +3179,129 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.3': - resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.53.5': resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.3': - resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.53.5': resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.3': - resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.53.5': resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': - resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.3': - resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.53.5': resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': - resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.3': - resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.53.5': resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.3': - resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.53.5': resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.53.3': - resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.53.5': resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.3': - resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.53.5': resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.3': - resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.53.5': resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.5': resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.3': - resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.53.5': resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.53.3': - resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.53.5': resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.3': - resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.53.5': resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': - resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': - resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': - resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.53.3': - resolution: {integrity: sha512-mB8z32H6kz4kVjn+tfTGcrXBae7rIeAvm/g6itsE3IqcXpjSRRvk1/EOWDEi5wL8NNmxXiH71t4jtNfr128zpw==} + '@rollup/wasm-node@4.54.0': + resolution: {integrity: sha512-CeEdHzNY+ZIR6NWpIOiJuCrr6tTK7cRGeOf6GYg5f73+UwJLqn5a4d5Ovf/hOWDyHM1KcySbxHQESJ9krhe0+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3591,24 +3312,24 @@ packages: resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/core@3.0.0': - resolution: {integrity: sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==} + '@sigstore/core@3.1.0': + resolution: {integrity: sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==} engines: {node: ^20.17.0 || >=22.9.0} '@sigstore/protobuf-specs@0.5.0': resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} engines: {node: ^18.17.0 || >=20.5.0} - '@sigstore/sign@4.0.1': - resolution: {integrity: sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==} + '@sigstore/sign@4.1.0': + resolution: {integrity: sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==} engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/tuf@4.0.0': - resolution: {integrity: sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==} + '@sigstore/tuf@4.0.1': + resolution: {integrity: sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==} engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/verify@3.0.0': - resolution: {integrity: sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==} + '@sigstore/verify@3.1.0': + resolution: {integrity: sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==} engines: {node: ^20.17.0 || >=22.9.0} '@sindresorhus/is@4.6.0': @@ -3618,8 +3339,8 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@stylistic/eslint-plugin@5.6.1': resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==} @@ -3654,8 +3375,8 @@ packages: resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} - '@tufjs/models@4.0.0': - resolution: {integrity: sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==} + '@tufjs/models@4.1.0': + resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} engines: {node: ^20.17.0 || >=22.9.0} '@tybys/wasm-util@0.10.1': @@ -3981,10 +3702,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.49.0': - resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.50.0': resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4456,8 +4173,8 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.8: - resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} + ast-v8-to-istanbul@0.3.9: + resolution: {integrity: sha512-dSC6tJeOJxbZrPzPbv5mMd6CMiQ1ugaVXXPRad2fXUSsy1kstFn9XQWemV9VW7Y7kpxgQ/4WMoZfwdH8XSU48w==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -4579,8 +4296,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.9.7: - resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} + baseline-browser-mapping@2.9.11: + resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} hasBin: true basic-ftp@5.0.5: @@ -4751,8 +4468,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001760: - resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + caniuse-lite@1.0.30001761: + resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4811,8 +4528,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@11.0.0: - resolution: {integrity: sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==} + chromium-bidi@12.0.1: + resolution: {integrity: sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==} peerDependencies: devtools-protocol: '*' @@ -5070,8 +4787,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.4: - resolution: {integrity: sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==} + cssstyle@5.3.5: + resolution: {integrity: sha512-GlsEptulso7Jg0VaOZ8BXQi3AkYM5BOJKEO/rjMidSCq70FkIC5y0eawrCXeYzxgt3OCf4Ls+eoxN+/05vN0Ag==} engines: {node: '>=20'} custom-event@1.0.1: @@ -5492,11 +5209,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.1: resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} engines: {node: '>=18'} @@ -7214,8 +6926,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.5: - resolution: {integrity: sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==} + msgpackr@1.11.8: + resolution: {integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==} multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} @@ -7783,10 +7495,6 @@ packages: engines: {node: '>=14'} hasBin: true - proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} - proc-log@6.1.0: resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -7867,8 +7575,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.33.0: - resolution: {integrity: sha512-tPTxVg+Qdj/8av4cy6szv3GlhxeOoNhiiMZ955fjxQyvPQE/6DjCa6ZyF/x0WJrlgBZtaLSP8TQgJb7FdLDXXA==} + puppeteer-core@24.34.0: + resolution: {integrity: sha512-24evawO+mUGW4mvS2a2ivwLdX3gk8zRLZr9HP+7+VT2vBQnm0oh9jJEZmUE3ePJhRkYlZ93i7OMpdcoi2qNCLg==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8111,11 +7819,6 @@ packages: '@types/node': optional: true - rollup@4.53.3: - resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.53.5: resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8236,12 +7939,12 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} - send@0.19.1: - resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} serialize-javascript@6.0.2: @@ -8255,8 +7958,12 @@ 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==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} server-destroy@1.0.1: @@ -8328,8 +8035,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sigstore@4.0.0: - resolution: {integrity: sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==} + sigstore@4.1.0: + resolution: {integrity: sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==} engines: {node: ^20.17.0 || >=22.9.0} slash@3.0.0: @@ -8788,8 +8495,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - tuf-js@4.0.0: - resolution: {integrity: sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==} + tuf-js@4.1.0: + resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} engines: {node: ^20.17.0 || >=22.9.0} tunnel-agent@0.6.0: @@ -8940,8 +8647,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.2.2: - resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -8982,8 +8689,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@7.0.0: - resolution: {integrity: sha512-bwVk/OK+Qu108aJcMAEiU4yavHUI7aN20TgZNBj9MR2iU1zPUl1Z1Otr7771ExfYTPTvfN8ZJ1pbr5Iklgt4xg==} + validate-npm-package-name@7.0.1: + resolution: {integrity: sha512-BM0Upcemlce8/9+HE+/VpWqn3u3mYh6Om/FEC8yPMnEHwf710fW5Q6fhjT1SQyRlZD1G9CJbgfH+rWgAcIvjlQ==} engines: {node: ^20.17.0 || >=22.9.0} validator@13.15.23: @@ -9015,46 +8722,6 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.2.7: - resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.3.0: resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9154,8 +8821,8 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-bidi-protocol@0.3.9: - resolution: {integrity: sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==} + webdriver-bidi-protocol@0.3.10: + resolution: {integrity: sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==} webdriver-js-extender@2.1.0: resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} @@ -9661,7 +9328,7 @@ snapshots: '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 @@ -9778,7 +9445,7 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@asamuzakjp/css-color@4.1.0': + '@asamuzakjp/css-color@4.1.1': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -10504,9 +10171,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': - dependencies: - postcss: 8.5.6 + '@csstools/css-syntax-patches-for-csstree@1.0.22': {} '@csstools/css-tokenizer@3.0.4': {} @@ -10549,159 +10214,81 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.12': - optional: true - '@esbuild/aix-ppc64@0.27.1': optional: true - '@esbuild/android-arm64@0.25.12': - optional: true - '@esbuild/android-arm64@0.27.1': optional: true - '@esbuild/android-arm@0.25.12': - optional: true - '@esbuild/android-arm@0.27.1': optional: true - '@esbuild/android-x64@0.25.12': - optional: true - '@esbuild/android-x64@0.27.1': optional: true - '@esbuild/darwin-arm64@0.25.12': - optional: true - '@esbuild/darwin-arm64@0.27.1': optional: true - '@esbuild/darwin-x64@0.25.12': - optional: true - '@esbuild/darwin-x64@0.27.1': optional: true - '@esbuild/freebsd-arm64@0.25.12': - optional: true - '@esbuild/freebsd-arm64@0.27.1': optional: true - '@esbuild/freebsd-x64@0.25.12': - optional: true - '@esbuild/freebsd-x64@0.27.1': optional: true - '@esbuild/linux-arm64@0.25.12': - optional: true - '@esbuild/linux-arm64@0.27.1': optional: true - '@esbuild/linux-arm@0.25.12': - optional: true - '@esbuild/linux-arm@0.27.1': optional: true - '@esbuild/linux-ia32@0.25.12': - optional: true - '@esbuild/linux-ia32@0.27.1': optional: true - '@esbuild/linux-loong64@0.25.12': - optional: true - '@esbuild/linux-loong64@0.27.1': optional: true - '@esbuild/linux-mips64el@0.25.12': - optional: true - '@esbuild/linux-mips64el@0.27.1': optional: true - '@esbuild/linux-ppc64@0.25.12': - optional: true - '@esbuild/linux-ppc64@0.27.1': optional: true - '@esbuild/linux-riscv64@0.25.12': - optional: true - '@esbuild/linux-riscv64@0.27.1': optional: true - '@esbuild/linux-s390x@0.25.12': - optional: true - '@esbuild/linux-s390x@0.27.1': optional: true - '@esbuild/linux-x64@0.25.12': - optional: true - '@esbuild/linux-x64@0.27.1': optional: true - '@esbuild/netbsd-arm64@0.25.12': - optional: true - '@esbuild/netbsd-arm64@0.27.1': optional: true - '@esbuild/netbsd-x64@0.25.12': - optional: true - '@esbuild/netbsd-x64@0.27.1': optional: true - '@esbuild/openbsd-arm64@0.25.12': - optional: true - '@esbuild/openbsd-arm64@0.27.1': optional: true - '@esbuild/openbsd-x64@0.25.12': - optional: true - '@esbuild/openbsd-x64@0.27.1': optional: true - '@esbuild/openharmony-arm64@0.25.12': - optional: true - '@esbuild/openharmony-arm64@0.27.1': optional: true - '@esbuild/sunos-x64@0.25.12': - optional: true - '@esbuild/sunos-x64@0.27.1': optional: true - '@esbuild/win32-arm64@0.25.12': - optional: true - '@esbuild/win32-arm64@0.27.1': optional: true - '@esbuild/win32-ia32@0.25.12': - optional: true - '@esbuild/win32-ia32@0.27.1': optional: true - '@esbuild/win32-x64@0.25.12': - optional: true - '@esbuild/win32-x64@0.27.1': optional: true @@ -12071,12 +11658,6 @@ snapshots: optionalDependencies: rollup: 4.53.5 - '@rollup/plugin-json@6.1.0(rollup@4.53.3)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) - optionalDependencies: - rollup: 4.53.3 - '@rollup/plugin-json@6.1.0(rollup@4.53.5)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.53.5) @@ -12111,14 +11692,6 @@ snapshots: optionalDependencies: rollup: 4.53.5 - '@rollup/pluginutils@5.3.0(rollup@4.53.3)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.53.3 - '@rollup/pluginutils@5.3.0(rollup@4.53.5)': dependencies: '@types/estree': 1.0.8 @@ -12127,139 +11700,73 @@ snapshots: optionalDependencies: rollup: 4.53.5 - '@rollup/rollup-android-arm-eabi@4.53.3': - optional: true - '@rollup/rollup-android-arm-eabi@4.53.5': optional: true - '@rollup/rollup-android-arm64@4.53.3': - optional: true - '@rollup/rollup-android-arm64@4.53.5': optional: true - '@rollup/rollup-darwin-arm64@4.53.3': - optional: true - '@rollup/rollup-darwin-arm64@4.53.5': optional: true - '@rollup/rollup-darwin-x64@4.53.3': - optional: true - '@rollup/rollup-darwin-x64@4.53.5': optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': - optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': optional: true - '@rollup/rollup-freebsd-x64@4.53.3': - optional: true - '@rollup/rollup-freebsd-x64@4.53.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': - optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.3': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': - optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': - optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': - optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.3': - optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': optional: true - '@rollup/wasm-node@4.53.3': + '@rollup/wasm-node@4.54.0': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -12271,44 +11778,44 @@ snapshots: dependencies: '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/core@3.0.0': {} + '@sigstore/core@3.1.0': {} '@sigstore/protobuf-specs@0.5.0': {} - '@sigstore/sign@4.0.1': + '@sigstore/sign@4.1.0': dependencies: '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 + '@sigstore/core': 3.1.0 '@sigstore/protobuf-specs': 0.5.0 make-fetch-happen: 15.0.3 - proc-log: 5.0.0 + proc-log: 6.1.0 promise-retry: 2.0.1 transitivePeerDependencies: - supports-color - '@sigstore/tuf@4.0.0': + '@sigstore/tuf@4.0.1': dependencies: '@sigstore/protobuf-specs': 0.5.0 - tuf-js: 4.0.0 + tuf-js: 4.1.0 transitivePeerDependencies: - supports-color - '@sigstore/verify@3.0.0': + '@sigstore/verify@3.1.0': dependencies: '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 + '@sigstore/core': 3.1.0 '@sigstore/protobuf-specs': 0.5.0 '@sindresorhus/is@4.6.0': {} '@socket.io/component-emitter@3.1.2': {} - '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/types': 8.50.0 eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12333,10 +11840,10 @@ snapshots: '@tufjs/canonical-json@2.0.0': {} - '@tufjs/models@4.0.0': + '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.5 + minimatch: 10.1.1 '@tybys/wasm-util@0.10.1': dependencies: @@ -12760,8 +12267,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.50.0': {} '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': @@ -12956,11 +12461,11 @@ snapshots: dependencies: vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 - ast-v8-to-istanbul: 0.3.8 + ast-v8-to-istanbul: 0.3.9 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -12969,26 +12474,26 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color '@vitest/expect@4.0.15': dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 '@vitest/spy': 4.0.15 '@vitest/utils': 4.0.15 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.15': dependencies: @@ -13087,7 +12592,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) chrome-launcher: 0.15.2 - puppeteer-core: 24.33.0(bufferutil@4.0.9) + puppeteer-core: 24.34.0(bufferutil@4.0.9) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13487,7 +12992,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.8: + ast-v8-to-istanbul@0.3.9: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -13512,7 +13017,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001760 + caniuse-lite: 1.0.30001761 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -13601,7 +13106,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.9.7: {} + baseline-browser-mapping@2.9.11: {} basic-ftp@5.0.5: {} @@ -13761,9 +13266,9 @@ snapshots: raw-body: 2.5.3 resp-modifier: 6.0.2 rx: 4.1.0 - send: 0.19.1 + send: 0.19.2 serve-index: 1.9.1 - serve-static: 1.16.2 + serve-static: 1.16.3 server-destroy: 1.0.1 socket.io: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) ua-parser-js: 1.0.41 @@ -13780,11 +13285,11 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.7 - caniuse-lite: 1.0.30001760 + baseline-browser-mapping: 2.9.11 + caniuse-lite: 1.0.30001761 electron-to-chromium: 1.5.267 node-releases: 2.0.27 - update-browserslist-db: 1.2.2(browserslist@4.28.1) + update-browserslist-db: 1.2.3(browserslist@4.28.1) browserstack@1.6.1: dependencies: @@ -13874,7 +13379,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001760: {} + caniuse-lite@1.0.30001761: {} caseless@0.12.0: {} @@ -13944,7 +13449,7 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@11.0.0(devtools-protocol@0.0.1534754): + chromium-bidi@12.0.1(devtools-protocol@0.0.1534754): dependencies: devtools-protocol: 0.0.1534754 mitt: 3.0.1 @@ -14219,13 +13724,11 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.4(postcss@8.5.6): + cssstyle@5.3.5: dependencies: - '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) + '@asamuzakjp/css-color': 4.1.1 + '@csstools/css-syntax-patches-for-csstree': 1.0.22 css-tree: 3.1.0 - transitivePeerDependencies: - - postcss custom-event@1.0.1: {} @@ -14656,35 +14159,6 @@ snapshots: esbuild-wasm@0.27.1: {} - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.1: optionalDependencies: '@esbuild/aix-ppc64': 0.27.1 @@ -14978,8 +14452,8 @@ snapshots: qs: 6.14.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.1 - serve-static: 1.16.2 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 statuses: 2.0.2 type-is: 1.6.18 @@ -15013,8 +14487,8 @@ snapshots: qs: 6.14.0 range-parser: 1.2.1 router: 2.2.0 - send: 1.2.0 - serve-static: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 @@ -15025,7 +14499,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -16136,11 +15610,11 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5): + jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@acemir/cssom': 0.9.29 '@asamuzakjp/dom-selector': 6.7.6 - cssstyle: 5.3.4(postcss@8.5.6) + cssstyle: 5.3.5 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 @@ -16160,7 +15634,6 @@ snapshots: xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - - postcss - supports-color - utf-8-validate @@ -16450,7 +15923,7 @@ snapshots: lmdb@3.4.4: dependencies: - msgpackr: 1.11.5 + msgpackr: 1.11.8 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.2.2 ordered-binary: 1.6.0 @@ -16763,7 +16236,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.5: + msgpackr@1.11.8: optionalDependencies: msgpackr-extract: 3.0.3 optional: true @@ -16809,8 +16282,8 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.53.3) - '@rollup/wasm-node': 4.53.3 + '@rollup/plugin-json': 6.1.0(rollup@4.53.5) + '@rollup/wasm-node': 4.54.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.28.1 @@ -16825,14 +16298,14 @@ snapshots: ora: 9.0.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.3.0(rollup@4.53.3)(typescript@5.9.3) + rollup-plugin-dts: 6.3.0(rollup@4.53.5)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.97.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.53.3 + rollup: 4.53.5 nock@14.0.10: dependencies: @@ -16917,7 +16390,7 @@ snapshots: hosted-git-info: 9.0.2 proc-log: 6.1.0 semver: 7.7.3 - validate-npm-package-name: 7.0.0 + validate-npm-package-name: 7.0.1 npm-packlist@10.0.3: dependencies: @@ -17160,7 +16633,7 @@ snapshots: npm-registry-fetch: 19.1.1 proc-log: 6.1.0 promise-retry: 2.0.1 - sigstore: 4.0.0 + sigstore: 4.1.0 ssri: 13.0.0 tar: 7.5.2 transitivePeerDependencies: @@ -17364,8 +16837,6 @@ snapshots: prettier@3.7.4: {} - proc-log@5.0.0: {} - proc-log@6.1.0: {} process-nextick-args@2.0.1: {} @@ -17489,14 +16960,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.33.0(bufferutil@4.0.9): + puppeteer-core@24.34.0(bufferutil@4.0.9): dependencies: '@puppeteer/browsers': 2.11.0 - chromium-bidi: 11.0.0(devtools-protocol@0.0.1534754) + chromium-bidi: 12.0.1(devtools-protocol@0.0.1534754) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1534754 typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.3.9 + webdriver-bidi-protocol: 0.3.10 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-abort-controller @@ -17801,14 +17272,6 @@ snapshots: semver: 7.7.3 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.3.0(rollup@4.53.3)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.53.3 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.3.0(rollup@4.53.5)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17824,34 +17287,6 @@ snapshots: optionalDependencies: '@types/node': 22.19.3 - rollup@4.53.3: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.3 - '@rollup/rollup-android-arm64': 4.53.3 - '@rollup/rollup-darwin-arm64': 4.53.3 - '@rollup/rollup-darwin-x64': 4.53.3 - '@rollup/rollup-freebsd-arm64': 4.53.3 - '@rollup/rollup-freebsd-x64': 4.53.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 - '@rollup/rollup-linux-arm-musleabihf': 4.53.3 - '@rollup/rollup-linux-arm64-gnu': 4.53.3 - '@rollup/rollup-linux-arm64-musl': 4.53.3 - '@rollup/rollup-linux-loong64-gnu': 4.53.3 - '@rollup/rollup-linux-ppc64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-musl': 4.53.3 - '@rollup/rollup-linux-s390x-gnu': 4.53.3 - '@rollup/rollup-linux-x64-gnu': 4.53.3 - '@rollup/rollup-linux-x64-musl': 4.53.3 - '@rollup/rollup-openharmony-arm64': 4.53.3 - '@rollup/rollup-win32-arm64-msvc': 4.53.3 - '@rollup/rollup-win32-ia32-msvc': 4.53.3 - '@rollup/rollup-win32-x64-gnu': 4.53.3 - '@rollup/rollup-win32-x64-msvc': 4.53.3 - fsevents: 2.3.3 - rollup@4.53.5: dependencies: '@types/estree': 1.0.8 @@ -18003,7 +17438,7 @@ snapshots: transitivePeerDependencies: - supports-color - send@0.19.1: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -18012,16 +17447,16 @@ snapshots: escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color - send@1.2.0: + send@1.2.1: dependencies: debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 @@ -18062,12 +17497,21 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@2.2.0: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.0 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 transitivePeerDependencies: - supports-color @@ -18149,14 +17593,14 @@ snapshots: signal-exit@4.1.0: {} - sigstore@4.0.0: + sigstore@4.1.0: dependencies: '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 + '@sigstore/core': 3.1.0 '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/sign': 4.0.1 - '@sigstore/tuf': 4.0.0 - '@sigstore/verify': 3.0.0 + '@sigstore/sign': 4.1.0 + '@sigstore/tuf': 4.0.1 + '@sigstore/verify': 3.1.0 transitivePeerDependencies: - supports-color @@ -18694,9 +18138,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tuf-js@4.0.0: + tuf-js@4.1.0: dependencies: - '@tufjs/models': 4.0.0 + '@tufjs/models': 4.1.0 debug: 4.4.3(supports-color@10.2.2) make-fetch-happen: 15.0.3 transitivePeerDependencies: @@ -18848,7 +18292,7 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.2.2(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 escalade: 3.2.0 @@ -18885,7 +18329,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@7.0.0: {} + validate-npm-package-name@7.0.1: {} validator@13.15.23: {} @@ -18965,24 +18409,6 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.5 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.4 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.97.0 - terser: 5.44.1 - tsx: 4.21.0 - yaml: 2.8.2 - vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.1 @@ -19001,10 +18427,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -19021,12 +18447,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.7(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.4 - jsdom: 27.3.0(bufferutil@4.0.9)(postcss@8.5.6)(utf-8-validate@6.0.5) + jsdom: 27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less @@ -19062,7 +18488,7 @@ snapshots: web-vitals@4.2.4: {} - webdriver-bidi-protocol@0.3.9: {} + webdriver-bidi-protocol@0.3.10: {} webdriver-js-extender@2.1.0: dependencies: From d85d7689d7e6658fe3b3789bdba45fc77f90c357 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 10:04:20 -0500 Subject: [PATCH 2029/2162] refactor(@angular/build): export compiler plugin and stylesheet options types Exposes `CompilerPluginOptions` and `BundleStylesheetOptions` via the private API. These types are required for consumers of the `createCompilerPlugin` function to strictly type their configuration. --- packages/angular/build/src/private.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/angular/build/src/private.ts b/packages/angular/build/src/private.ts index c55d7482bb2c..4791a94a42d3 100644 --- a/packages/angular/build/src/private.ts +++ b/packages/angular/build/src/private.ts @@ -59,6 +59,7 @@ export function createCompilerPlugin( ); } +export type { CompilerPluginOptions, BundleStylesheetOptions }; export type { AngularCompilation } from './tools/angular/compilation'; export { DiagnosticModes } from './tools/angular/compilation'; export { createAngularCompilation }; From 092aadf44aa05ede53218ae5fd4e3ab1d101fa27 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 22 Dec 2025 12:21:39 -0500 Subject: [PATCH 2030/2162] test: migrate express engine E2E tests to Puppeteer Replaces the Protractor-based `ng e2e` execution with the new Puppeteer `executeBrowserTest` utility in the express-engine E2E test suite. --- .../express-engine-csp-nonce.ts | 133 +++++++----------- .../express-engine-ngmodule.ts | 122 +++++----------- .../express-engine-standalone.ts | 104 +++++--------- 3 files changed, 125 insertions(+), 234 deletions(-) diff --git a/tests/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts b/tests/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts index 19e7dcd28b60..3d6335b48465 100644 --- a/tests/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts +++ b/tests/e2e/tests/build/server-rendering/express-engine-csp-nonce.ts @@ -4,6 +4,7 @@ import { findFreePort } from '../../../utils/network'; import { installWorkspacePackages } from '../../../utils/packages'; import { execAndWaitForOutputToMatch, ng } from '../../../utils/process'; import { updateJsonFile, updateServerFileForEsbuild, useSha } from '../../../utils/project'; +import { executeBrowserTest } from '../../../utils/puppeteer'; export default async function () { const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; @@ -46,90 +47,6 @@ export default async function () { `, - 'e2e/src/app.e2e-spec.ts': ` - import { browser, by, element } from 'protractor'; - import * as webdriver from 'selenium-webdriver'; - - function verifyNoBrowserErrors() { - return browser - .manage() - .logs() - .get('browser') - .then(function (browserLog: any[]) { - const errors: any[] = []; - browserLog.filter((logEntry) => { - const msg = logEntry.message; - console.log('>> ' + msg); - if (logEntry.level.value >= webdriver.logging.Level.INFO.value) { - errors.push(msg); - } - }); - expect(errors).toEqual([]); - }); - } - - describe('Hello world E2E Tests', () => { - beforeAll(async () => { - await browser.waitForAngularEnabled(false); - }); - - it('should display: Welcome', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - expect( - await element(by.css('style[ng-app-id="ng"]')).getText() - ).not.toBeNull(); - - // Test the contents from the server. - expect(await element(by.css('h1')).getText()).toMatch('Hello'); - - // Bootstrap the client side app. - await browser.executeScript('doBootstrap()'); - - // Retest the contents after the client bootstraps. - expect(await element(by.css('h1')).getText()).toMatch('Hello'); - - // Make sure the server styles got replaced by client side ones. - expect( - await element(by.css('style[ng-app-id="ng"]')).isPresent() - ).toBeFalsy(); - expect(await element(by.css('style')).getText()).toMatch(''); - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - - it('stylesheets should be configured to load asynchronously', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - // Test the contents from the server. - const linkTag = await browser.driver.findElement( - by.css('link[rel="stylesheet"]') - ); - expect(await linkTag.getAttribute('media')).toMatch('all'); - expect(await linkTag.getAttribute('ngCspMedia')).toBeNull(); - expect(await linkTag.getAttribute('onload')).toBeNull(); - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - - it('style tags all have a nonce attribute', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - // Test the contents from the server. - for (const s of await browser.driver.findElements(by.css('style'))) { - expect(await s.getAttribute('nonce')).toBe('{% nonce %}'); - } - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - }); - `, }); async function spawnServer(): Promise { @@ -158,5 +75,51 @@ export default async function () { } const port = await spawnServer(); - await ng('e2e', `--base-url=http://localhost:${port}`, '--dev-server-target='); + await executeBrowserTest({ + baseUrl: `http://localhost:${port}/`, + checkFn: async (page) => { + // Test the contents from the server. + const h1Text = await page.$eval('h1', (el) => el.textContent); + if (!h1Text?.includes('Hello')) { + throw new Error(`Expected h1 to contain 'Hello', but got '${h1Text}'`); + } + + const serverStylePresent = await page.evaluate( + () => !!(globalThis as any).document.querySelector('style[ng-app-id="ng"]'), + ); + if (!serverStylePresent) { + throw new Error('Expected server-side style to be present'); + } + + // style tags all have a nonce attribute + const nonces = await page.$$eval('style', (styles) => + styles.map((s) => s.getAttribute('nonce')), + ); + for (const nonce of nonces) { + if (nonce !== '{% nonce %}') { + throw new Error(`Expected nonce to be '{% nonce %}', but got '${nonce}'`); + } + } + + // stylesheets should be configured to load asynchronously + const linkMedia = await page.$eval('link[rel="stylesheet"]', (el) => + el.getAttribute('media'), + ); + if (linkMedia !== 'all') { + throw new Error(`Expected link media to be 'all', but got '${linkMedia}'`); + } + + // Bootstrap the client side app. + await page.evaluate('window.doBootstrap()'); + + // Wait for server style to be removed by client + await page.waitForSelector('style[ng-app-id="ng"]', { hidden: true }); + + // Retest the contents after the client bootstraps. + const h1TextPost = await page.$eval('h1', (el) => el.textContent); + if (!h1TextPost?.includes('Hello')) { + throw new Error(`Expected h1 to contain 'Hello' after bootstrap, but got '${h1TextPost}'`); + } + }, + }); } diff --git a/tests/e2e/tests/build/server-rendering/express-engine-ngmodule.ts b/tests/e2e/tests/build/server-rendering/express-engine-ngmodule.ts index f05d2182bbd2..92e34f7ca3e8 100644 --- a/tests/e2e/tests/build/server-rendering/express-engine-ngmodule.ts +++ b/tests/e2e/tests/build/server-rendering/express-engine-ngmodule.ts @@ -3,24 +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, - updateServerFileForEsbuild, - useCIChrome, - useCIDefaults, - useSha, -} from '../../../utils/project'; +import { updateJsonFile, updateServerFileForEsbuild, useSha } from '../../../utils/project'; +import { executeBrowserTest } from '../../../utils/puppeteer'; export default async function () { // forcibly remove in case another test doesn't clean itself up await rimraf('node_modules/@angular/ssr'); await ng('generate', 'app', 'test-project-two', '--no-standalone', '--skip-install'); - await ng('generate', 'private-e2e', '--related-app-name=test-project-two'); - - // Setup testing to use CI Chrome. - await useCIChrome('test-project-two', 'projects/test-project-two/e2e/'); - await useCIDefaults('test-project-two'); const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; @@ -79,71 +69,6 @@ export default async function () { .catch((err) => console.error(err)); }; `, - 'projects/test-project-two/e2e/src/app.e2e-spec.ts': ` - import { browser, by, element } from 'protractor'; - import * as webdriver from 'selenium-webdriver'; - - function verifyNoBrowserErrors() { - return browser - .manage() - .logs() - .get('browser') - .then(function (browserLog: any[]) { - const errors: any[] = []; - browserLog.filter((logEntry) => { - const msg = logEntry.message; - console.log('>> ' + msg); - if (logEntry.level.value >= webdriver.logging.Level.INFO.value) { - errors.push(msg); - } - }); - expect(errors).toEqual([]); - }); - } - - describe('Hello world E2E Tests', () => { - beforeAll(async () => { - await browser.waitForAngularEnabled(false); - }); - - it('should display: Welcome', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - const style = await browser.driver.findElement(by.css('style[ng-app-id="ng"]')); - expect(await style.getText()).not.toBeNull(); - - // Test the contents from the server. - const serverDiv = await browser.driver.findElement(by.css('h1')); - expect(await serverDiv.getText()).toMatch('Hello'); - - // Bootstrap the client side app. - await browser.executeScript('doBootstrap()'); - - // Retest the contents after the client bootstraps. - expect(await element(by.css('h1')).getText()).toMatch('Hello'); - - // Make sure the server styles got replaced by client side ones. - expect(await element(by.css('style[ng-app-id="ng"]')).isPresent()).toBeFalsy(); - expect(await element(by.css('style')).getText()).toMatch(''); - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - - it('stylesheets should be configured to load asynchronously', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - // Test the contents from the server. - const styleTag = await browser.driver.findElement(by.css('link[rel="stylesheet"]')); - expect(await styleTag.getAttribute('media')).toMatch('all'); - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - }); - `, }); async function spawnServer(): Promise { @@ -172,10 +97,41 @@ export default async function () { } const port = await spawnServer(); - await ng( - 'e2e', - '--project=test-project-two', - `--base-url=http://localhost:${port}`, - '--dev-server-target=', - ); + await executeBrowserTest({ + baseUrl: `http://localhost:${port}/`, + checkFn: async (page) => { + // Test the contents from the server. + const h1Text = await page.$eval('h1', (el) => el.textContent); + if (!h1Text?.includes('Hello')) { + throw new Error(`Expected h1 to contain 'Hello', but got '${h1Text}'`); + } + + const serverStylePresent = await page.evaluate( + `!!document.querySelector('style[ng-app-id="ng"]')`, + ); + if (!serverStylePresent) { + throw new Error('Expected server-side style to be present'); + } + + // stylesheets should be configured to load asynchronously + const linkMedia = await page.$eval('link[rel="stylesheet"]', (el) => + el.getAttribute('media'), + ); + if (linkMedia !== 'all') { + throw new Error(`Expected link media to be 'all', but got '${linkMedia}'`); + } + + // Bootstrap the client side app. + await page.evaluate('window.doBootstrap()'); + + // Wait for server style to be removed by client + await page.waitForSelector('style[ng-app-id="ng"]', { hidden: true }); + + // Retest the contents after the client bootstraps. + const h1TextPost = await page.$eval('h1', (el) => el.textContent); + if (!h1TextPost?.includes('Hello')) { + throw new Error(`Expected h1 to contain 'Hello' after bootstrap, but got '${h1TextPost}'`); + } + }, + }); } diff --git a/tests/e2e/tests/build/server-rendering/express-engine-standalone.ts b/tests/e2e/tests/build/server-rendering/express-engine-standalone.ts index 7c819e67693a..18920e3a5893 100644 --- a/tests/e2e/tests/build/server-rendering/express-engine-standalone.ts +++ b/tests/e2e/tests/build/server-rendering/express-engine-standalone.ts @@ -4,6 +4,7 @@ import { findFreePort } from '../../../utils/network'; import { installWorkspacePackages } from '../../../utils/packages'; import { execAndWaitForOutputToMatch, ng } from '../../../utils/process'; import { updateJsonFile, updateServerFileForEsbuild, useSha } from '../../../utils/project'; +import { executeBrowserTest } from '../../../utils/puppeteer'; export default async function () { // forcibly remove in case another test doesn't clean itself up @@ -36,71 +37,6 @@ export default async function () { bootstrapApplication(App, appConfig).catch((err) => console.error(err)); }; `, - 'e2e/src/app.e2e-spec.ts': ` - import { browser, by, element } from 'protractor'; - import * as webdriver from 'selenium-webdriver'; - - function verifyNoBrowserErrors() { - return browser - .manage() - .logs() - .get('browser') - .then(function (browserLog: any[]) { - const errors: any[] = []; - browserLog.filter((logEntry) => { - const msg = logEntry.message; - console.log('>> ' + msg); - if (logEntry.level.value >= webdriver.logging.Level.INFO.value) { - errors.push(msg); - } - }); - expect(errors).toEqual([]); - }); - } - - describe('Hello world E2E Tests', () => { - beforeAll(async () => { - await browser.waitForAngularEnabled(false); - }); - - it('should display: Welcome', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - const style = await browser.driver.findElement(by.css('style[ng-app-id="ng"]')); - expect(await style.getText()).not.toBeNull(); - - // Test the contents from the server. - const serverDiv = await browser.driver.findElement(by.css('h1')); - expect(await serverDiv.getText()).toMatch('Hello'); - - // Bootstrap the client side app. - await browser.executeScript('doBootstrap()'); - - // Retest the contents after the client bootstraps. - expect(await element(by.css('h1')).getText()).toMatch('Hello'); - - // Make sure the server styles got replaced by client side ones. - expect(await element(by.css('style[ng-app-id="ng"]')).isPresent()).toBeFalsy(); - expect(await element(by.css('style')).getText()).toMatch(''); - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - - it('stylesheets should be configured to load asynchronously', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - // Test the contents from the server. - const styleTag = await browser.driver.findElement(by.css('link[rel="stylesheet"]')); - expect(await styleTag.getAttribute('media')).toMatch('all'); - - // Make sure there were no client side errors. - await verifyNoBrowserErrors(); - }); - }); - `, }); async function spawnServer(): Promise { @@ -127,5 +63,41 @@ export default async function () { } const port = await spawnServer(); - await ng('e2e', `--base-url=http://localhost:${port}`, '--dev-server-target='); + await executeBrowserTest({ + baseUrl: `http://localhost:${port}/`, + checkFn: async (page) => { + // Test the contents from the server. + const h1Text = await page.$eval('h1', (el) => el.textContent); + if (!h1Text?.includes('Hello')) { + throw new Error(`Expected h1 to contain 'Hello', but got '${h1Text}'`); + } + + const serverStylePresent = await page.evaluate( + `!!document.querySelector('style[ng-app-id="ng"]')`, + ); + if (!serverStylePresent) { + throw new Error('Expected server-side style to be present'); + } + + // stylesheets should be configured to load asynchronously + const linkMedia = await page.$eval('link[rel="stylesheet"]', (el) => + el.getAttribute('media'), + ); + if (linkMedia !== 'all') { + throw new Error(`Expected link media to be 'all', but got '${linkMedia}'`); + } + + // Bootstrap the client side app. + await page.evaluate('window.doBootstrap()'); + + // Wait for server style to be removed by client + await page.waitForSelector('style[ng-app-id="ng"]', { hidden: true }); + + // Retest the contents after the client bootstraps. + const h1TextPost = await page.$eval('h1', (el) => el.textContent); + if (!h1TextPost?.includes('Hello')) { + throw new Error(`Expected h1 to contain 'Hello' after bootstrap, but got '${h1TextPost}'`); + } + }, + }); } From 45d4f5668018362f90fcc4cdc487470286f03c02 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:04:48 -0500 Subject: [PATCH 2031/2162] fix(@angular/cli): update yarn berry package manager configuration This commit updates the package manager descriptor for modern Yarn (Berry) to align with its current CLI options and configuration mechanisms: - Removes `noLockfileFlag` as Yarn Berry does not support a direct `--no-lockfile` flag for adding packages. - Updates `ignoreScriptsFlag` to use `--mode=skip-build`, which is the modern equivalent for skipping build scripts during installation. - Changes `getRegistryOptions` to use `YARN_NPM_REGISTRY_SERVER` environment variable, which is the correct way to configure the registry in Yarn Berry. --- .../cli/src/package-managers/package-manager-descriptor.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index f48ed1e32ed7..bfcbb8bc4548 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -162,9 +162,9 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveExactFlag: '--exact', saveTildeFlag: '--tilde', saveDevFlag: '--dev', - noLockfileFlag: '--no-lockfile', - ignoreScriptsFlag: '--ignore-scripts', - getRegistryOptions: (registry: string) => ({ env: { NPM_CONFIG_REGISTRY: registry } }), + noLockfileFlag: '', + ignoreScriptsFlag: '--mode=skip-build', + getRegistryOptions: (registry: string) => ({ env: { YARN_NPM_REGISTRY_SERVER: registry } }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json', '--recursive=false'], getManifestCommand: ['npm', 'info', '--json'], From 316fca8626d51b28ea8cd840f3815b7c6dfcfffa Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:13:24 -0500 Subject: [PATCH 2032/2162] fix(@angular/cli): handle array output from npm view in manifest parser This commit updates `parseNpmLikeManifest` to correctly handle the output of `npm view` (and compatible commands) when a version range is specified. In such cases, `npm view --json` returns an array of manifests. The parser now returns the last element of the array, which corresponds to the latest version satisfying the range, preventing issues in `ng update` and other commands that rely on version checks. --- .../cli/src/package-managers/parsers.ts | 4 +++- .../cli/src/package-managers/parsers_spec.ts | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts index 0e12fd5f0cfb..ca52fd49d817 100644 --- a/packages/angular/cli/src/package-managers/parsers.ts +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -254,7 +254,9 @@ export function parseNpmLikeManifest(stdout: string, logger?: Logger): PackageMa return null; } - return JSON.parse(stdout); + const result = JSON.parse(stdout); + + return Array.isArray(result) ? result[result.length - 1] : result; } /** diff --git a/packages/angular/cli/src/package-managers/parsers_spec.ts b/packages/angular/cli/src/package-managers/parsers_spec.ts index 8717a6d1a5a1..3b831d71a286 100644 --- a/packages/angular/cli/src/package-managers/parsers_spec.ts +++ b/packages/angular/cli/src/package-managers/parsers_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import { parseNpmLikeError, parseYarnClassicError } from './parsers'; +import { parseNpmLikeError, parseNpmLikeManifest, parseYarnClassicError } from './parsers'; describe('parsers', () => { describe('parseNpmLikeError', () => { @@ -69,6 +69,25 @@ describe('parsers', () => { }); }); + describe('parseNpmLikeManifest', () => { + it('should parse a single manifest', () => { + const stdout = JSON.stringify({ name: 'foo', version: '1.0.0' }); + expect(parseNpmLikeManifest(stdout)).toEqual({ name: 'foo', version: '1.0.0' }); + }); + + it('should return the last manifest from an array', () => { + const stdout = JSON.stringify([ + { name: 'foo', version: '1.0.0' }, + { name: 'foo', version: '1.1.0' }, + ]); + expect(parseNpmLikeManifest(stdout)).toEqual({ name: 'foo', version: '1.1.0' }); + }); + + it('should return null for empty stdout', () => { + expect(parseNpmLikeManifest('')).toBeNull(); + }); + }); + describe('parseYarnClassicError', () => { it('should parse a 404 from verbose logs', () => { const stdout = From 3fd7dcd764be0d0afb9cd792d53268d6f314df83 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 10:44:08 -0500 Subject: [PATCH 2033/2162] fix(@angular/build): normalize roots to POSIX in test discovery for Windows compatibility Ensures that project and workspace root paths are converted to POSIX format before being used to determine relative test file paths. This fixes an issue on Windows where mixed path separators (backslashes in roots, forward slashes in file paths) caused test discovery to fail to correctly generate entry point names. --- packages/angular/build/src/builders/unit-test/test-discovery.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/test-discovery.ts b/packages/angular/build/src/builders/unit-test/test-discovery.ts index d4f097b388f7..64e9718e48ac 100644 --- a/packages/angular/build/src/builders/unit-test/test-discovery.ts +++ b/packages/angular/build/src/builders/unit-test/test-discovery.ts @@ -129,7 +129,7 @@ export function generateNameFromPath( roots: string[], removeTestExtension: boolean, ): string { - const relativePath = removeRoots(testFile, roots); + const relativePath = removeRoots(testFile, roots.map(toPosixPath)); let startIndex = 0; // Skip leading dots and slashes From 164e7dbbc2b06bbd5aab84937c903e0590591c60 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 10:57:24 -0500 Subject: [PATCH 2034/2162] fix(@angular/build): resolve test files correctly on Windows when using non-C drives Ensures that test files requested via root-relative paths (common on Windows with non-C drives or specific Vitest configurations) are correctly resolved to their absolute path entry points. This fix prevents 'Cannot find module' errors by explicitly checking the test entry point map after normalizing the path to an absolute POSIX path. --- .../unit-test/runners/vitest/plugins.ts | 4 ++ tests/e2e/tests/vitest/windows-subst-drive.ts | 64 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 tests/e2e/tests/vitest/windows-subst-drive.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index b92c6e7f872d..e4f3cfd5f810 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -229,6 +229,10 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins // Construct the full, absolute path and normalize it to POSIX format. const fullPath = toPosixPath(path.join(baseDir, id)); + if (testFileToEntryPoint.has(fullPath)) { + return fullPath; + } + // Check if the resolved path corresponds to a known build artifact. const relativePath = path.relative(workspaceRoot, fullPath); if (buildResultFiles.has(toPosixPath(relativePath))) { diff --git a/tests/e2e/tests/vitest/windows-subst-drive.ts b/tests/e2e/tests/vitest/windows-subst-drive.ts new file mode 100644 index 000000000000..de5237da14a8 --- /dev/null +++ b/tests/e2e/tests/vitest/windows-subst-drive.ts @@ -0,0 +1,64 @@ +import assert from 'node:assert/strict'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import { execAndCaptureError, silentExec } from '../../utils/process'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { stripVTControlCharacters } from 'node:util'; + +export default async function (): Promise { + // This test uses `subst` to map the project directory to a virtual drive letter + // to simulate running tests from a non-C drive on Windows. + if (process.platform !== 'win32') { + return; + } + + await applyVitestBuilder(); + + const originalCwd = process.cwd(); + const driveLetter = 'X:'; // Pick a drive letter that is unlikely to be in use. + + try { + // 1. Map the parent directory of the project to the virtual drive. + // This avoids running the project from the root of the drive (X:\), which can cause + // issues with workspace detection. + const projectParentDir = path.dirname(originalCwd); + const projectName = path.basename(originalCwd); + + await silentExec('subst', driveLetter, projectParentDir); + + // 2. Change the current process's working directory to the project folder on the virtual drive. + const newCwd = path.join(driveLetter + '\\', projectName); + process.chdir(newCwd); + + // Verify that the file system mapping is working as expected. + assert(fs.existsSync('angular.json'), 'angular.json should exist on the subst drive'); + + // 3. Run `ng test`. + // We expect this to fail with NG0203 in the subst environment due to dual-package hazards + // (Angular loading from both X: and D:) within bazel. However, the failure proves that the + // test file was discovered and loaded. + const error = await execAndCaptureError('ng', ['test', '--watch=false']); + const output = stripVTControlCharacters(error.message); + + // 4. Verify that Vitest found the test file and identified the tests within it. + assert.match( + output, + /src\/app\/app\.spec\.ts \(2 tests/, + 'Expected tests to be discovered and loaded, even if execution fails due to subst aliasing.', + ); + } finally { + // 5. Teardown: Restore CWD and remove the virtual drive mapping. + try { + process.chdir(originalCwd); + } catch (e) { + console.error('Failed to restore CWD:', e); + } + + try { + await silentExec('subst', driveLetter, '/d'); + } catch (e) { + // Ignore errors if the drive wasn't mounted or if unmount fails (best effort) + console.error(`Failed to unmount ${driveLetter}:`, e); + } + } +} From 5dfc0eea03c1faecd636fac775b0f5bc5f0ed430 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 5 Jan 2026 16:04:56 +0000 Subject: [PATCH 2035/2162] fix(@schematics/angular): update default app component message Aligns the inline welcome message with the external template for consistency. --- .../files/module-files/src/app/app__suffix__.ts.template | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template index 5679c852f173..055586955b75 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__suffix__.ts.template @@ -4,7 +4,8 @@ import { Component, signal } from '@angular/core'; selector: '<%= selector %>',<% if(inlineTemplate) { %> template: `

Hello, {{ title() }}

- +

Congratulations! Your app is running. 🎉

+ <% if (routing) { %><% } %> From ad4f8ea5ec3416a666b90d231e59a6768534f611 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 5 Jan 2026 06:09:45 +0000 Subject: [PATCH 2036/2162] build: update dependency globals to v17 See associated pull request for more information. --- package.json | 2 +- pnpm-lock.yaml | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 5f862d813789..710de1c9193b 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "eslint-plugin-import": "2.32.0", "express": "5.2.1", "fast-glob": "3.3.3", - "globals": "16.5.0", + "globals": "17.0.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 836c840b056a..33294bff3eca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -200,8 +200,8 @@ importers: specifier: 3.3.3 version: 3.3.3 globals: - specifier: 16.5.0 - version: 16.5.0 + specifier: 17.0.0 + version: 17.0.0 http-proxy: specifier: ^1.18.1 version: 1.18.1(debug@4.4.3) @@ -5713,8 +5713,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.5.0: - resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + globals@17.0.0: + resolution: {integrity: sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==} engines: {node: '>=18'} globalthis@1.0.4: @@ -8905,6 +8905,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} @@ -14891,7 +14892,7 @@ snapshots: globals@14.0.0: {} - globals@16.5.0: {} + globals@17.0.0: {} globalthis@1.0.4: dependencies: From 8729181a445b077450d265d48dcc423a086eb729 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:35:21 -0500 Subject: [PATCH 2037/2162] refactor(@angular/cli): add ignorePeerDependencies option to package manager This commit adds support for ignoring peer dependency warnings and errors during package installation. This is useful for commands like `ng update` where transient peer dependency conflicts may occur. - Added `ignorePeerDependenciesFlag` to the `PackageManagerDescriptor` interface. - Implemented the flag for `npm` (`--force`) and `pnpm` (`--strict-peer-dependencies=false`). - Updated `PackageManager.install` to accept and apply the `ignorePeerDependencies` option. --- .../cli/src/package-managers/package-manager-descriptor.ts | 5 +++++ packages/angular/cli/src/package-managers/package-manager.ts | 2 ++ 2 files changed, 7 insertions(+) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index bfcbb8bc4548..631d444db93d 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -62,6 +62,9 @@ export interface PackageManagerDescriptor { /** The flag to prevent lifecycle scripts from being executed. */ readonly ignoreScriptsFlag: string; + /** The flag to ignore peer dependency warnings/errors. */ + readonly ignorePeerDependenciesFlag?: string; + /** A function that returns the arguments and environment variables to use a custom registry. */ readonly getRegistryOptions?: (registry: string) => { args?: string[]; @@ -140,6 +143,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--save-dev', noLockfileFlag: '--no-package-lock', ignoreScriptsFlag: '--ignore-scripts', + ignorePeerDependenciesFlag: '--force', getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json=true', '--all=true'], @@ -215,6 +219,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--save-dev', noLockfileFlag: '--no-lockfile', ignoreScriptsFlag: '--ignore-scripts', + ignorePeerDependenciesFlag: '--strict-peer-dependencies=false', getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json'], diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index b76831be109c..57b521615273 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -308,11 +308,13 @@ export class PackageManager { force?: boolean; registry?: string; ignoreScripts?: boolean; + ignorePeerDependencies?: boolean; } = { ignoreScripts: true }, ): Promise { const flags = [ options.force ? this.descriptor.forceFlag : '', options.ignoreScripts ? this.descriptor.ignoreScriptsFlag : '', + options.ignorePeerDependencies ? (this.descriptor.ignorePeerDependenciesFlag ?? '') : '', ].filter((flag) => flag); const args = [...this.descriptor.installCommand, ...flags]; From eb3a850c29839b198cafc5bb8f57b254dab8377d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 29 Dec 2025 16:40:18 -0500 Subject: [PATCH 2038/2162] refactor(@angular/cli): use ignorePeerDependencies option in update command This commit updates the `ng update` command to utilize the `ignorePeerDependencies` abstraction option when installing packages. Previously, the command forced the installation (`--force`) when NPM 7+ was detected to workaround peer dependency issues. Now, it uses the more specific `ignorePeerDependencies` option (mapping to `--force` for NPM). --- packages/angular/cli/src/commands/update/cli.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 3de979b481e6..9b926cc079a2 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -521,7 +521,11 @@ export default class UpdateCommandModule extends CommandModule Date: Wed, 3 Dec 2025 11:02:03 -0800 Subject: [PATCH 2039/2162] feat(@angular/cli): Add "all" as an experimental tool group --- .../cli/src/commands/mcp/mcp-server.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index 512398876513..658ae6153151 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -31,15 +31,6 @@ import { type AnyMcpToolDeclaration, registerTools } from './tools/tool-registry */ const DEVSERVER_TOOLS = [DEVSERVER_START_TOOL, DEVSERVER_STOP_TOOL, DEVSERVER_WAIT_FOR_BUILD_TOOL]; -/** - * Experimental tools that are grouped together under a single name. - * - * Used for enabling them as a group. - */ -export const EXPERIMENTAL_TOOL_GROUPS = { - 'devserver': DEVSERVER_TOOLS, -}; - /** * The set of tools that are enabled by default for the MCP server. * These tools are considered stable and suitable for general use. @@ -59,6 +50,16 @@ const STABLE_TOOLS = [ */ export const EXPERIMENTAL_TOOLS = [BUILD_TOOL, MODERNIZE_TOOL, ...DEVSERVER_TOOLS] as const; +/** + * Experimental tools that are grouped together under a single name. + * + * Used for enabling them as a group. + */ +export const EXPERIMENTAL_TOOL_GROUPS = { + 'all': EXPERIMENTAL_TOOLS, + 'devserver': DEVSERVER_TOOLS, +}; + export async function createMcpServer( options: { workspace?: AngularWorkspace; From 772e6efe7acb2d2318a57ba77092a85fc286c51b Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Tue, 2 Dec 2025 16:20:48 -0800 Subject: [PATCH 2040/2162] feat(@angular/cli): add 'test' and 'e2e' MCP tools This adds new tools for running unit and end-to-end tests via the MCP server. --- .../cli/src/commands/mcp/mcp-server.ts | 10 +- .../angular/cli/src/commands/mcp/tools/e2e.ts | 121 ++++++++++++++++++ .../cli/src/commands/mcp/tools/e2e_spec.ts | 108 ++++++++++++++++ .../cli/src/commands/mcp/tools/test.ts | 97 ++++++++++++++ .../cli/src/commands/mcp/tools/test_spec.ts | 88 +++++++++++++ 5 files changed, 423 insertions(+), 1 deletion(-) create mode 100644 packages/angular/cli/src/commands/mcp/tools/e2e.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/test.ts create mode 100644 packages/angular/cli/src/commands/mcp/tools/test_spec.ts diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts index 658ae6153151..a2bc1b0f9aeb 100644 --- a/packages/angular/cli/src/commands/mcp/mcp-server.ts +++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts @@ -20,10 +20,12 @@ import { DEVSERVER_START_TOOL } from './tools/devserver/devserver-start'; import { DEVSERVER_STOP_TOOL } from './tools/devserver/devserver-stop'; import { DEVSERVER_WAIT_FOR_BUILD_TOOL } from './tools/devserver/devserver-wait-for-build'; import { DOC_SEARCH_TOOL } from './tools/doc-search'; +import { E2E_TOOL } from './tools/e2e'; import { FIND_EXAMPLE_TOOL } from './tools/examples/index'; import { MODERNIZE_TOOL } from './tools/modernize'; import { ZONELESS_MIGRATION_TOOL } from './tools/onpush-zoneless-migration/zoneless-migration'; import { LIST_PROJECTS_TOOL } from './tools/projects'; +import { TEST_TOOL } from './tools/test'; import { type AnyMcpToolDeclaration, registerTools } from './tools/tool-registry'; /** @@ -48,7 +50,13 @@ const STABLE_TOOLS = [ * The set of tools that are available but not enabled by default. * These tools are considered experimental and may have limitations. */ -export const EXPERIMENTAL_TOOLS = [BUILD_TOOL, MODERNIZE_TOOL, ...DEVSERVER_TOOLS] as const; +export const EXPERIMENTAL_TOOLS = [ + BUILD_TOOL, + E2E_TOOL, + MODERNIZE_TOOL, + TEST_TOOL, + ...DEVSERVER_TOOLS, +] as const; /** * Experimental tools that are grouped together under a single name. diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e.ts b/packages/angular/cli/src/commands/mcp/tools/e2e.ts new file mode 100644 index 000000000000..7e99d57cddce --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/e2e.ts @@ -0,0 +1,121 @@ +/** + * @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 { z } from 'zod'; +import { CommandError, type Host, LocalWorkspaceHost } from '../host'; +import { createStructuredContentOutput } from '../utils'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry'; + +const e2eStatusSchema = z.enum(['success', 'failure']); +type E2eStatus = z.infer; + +const e2eToolInputSchema = z.object({ + project: z + .string() + .optional() + .describe( + 'Which project to test in a monorepo context. If not provided, tests the default project.', + ), +}); + +export type E2eToolInput = z.infer; + +const e2eToolOutputSchema = z.object({ + status: e2eStatusSchema.describe('E2E execution status.'), + logs: z.array(z.string()).optional().describe('Output logs from `ng e2e`.'), +}); + +export type E2eToolOutput = z.infer; + +export async function runE2e(input: E2eToolInput, host: Host, context: McpToolContext) { + const projectName = input.project; + + if (context.workspace) { + let targetProject; + const projects = context.workspace.projects; + + if (projectName) { + targetProject = projects.get(projectName); + } else { + // Try to find default project + const defaultProjectName = context.workspace.extensions['defaultProject'] as + | string + | undefined; + if (defaultProjectName) { + targetProject = projects.get(defaultProjectName); + } else if (projects.size === 1) { + targetProject = Array.from(projects.values())[0]; + } + } + + if (targetProject) { + if (!targetProject.targets.has('e2e')) { + return createStructuredContentOutput({ + status: 'failure', + logs: [ + `No e2e target is defined for project '${projectName ?? 'default'}'. Please setup e2e testing first.`, + ], + }); + } + } + } + + // Build "ng"'s command line. + const args = ['e2e']; + if (input.project) { + args.push(input.project); + } + + let status: E2eStatus = 'success'; + let logs: string[] = []; + + try { + logs = (await host.runCommand('ng', args)).logs; + } catch (e) { + status = 'failure'; + if (e instanceof CommandError) { + logs = e.logs; + } else if (e instanceof Error) { + logs = [e.message]; + } else { + logs = [String(e)]; + } + } + + const structuredContent: E2eToolOutput = { + status, + logs, + }; + + return createStructuredContentOutput(structuredContent); +} + +export const E2E_TOOL: McpToolDeclaration< + typeof e2eToolInputSchema.shape, + typeof e2eToolOutputSchema.shape +> = declareTool({ + name: 'e2e', + title: 'E2E Tool', + description: ` + +Perform an end-to-end test with ng e2e. + + +* Running end-to-end tests for the project. + + +* This tool runs "ng e2e". +* It will error if no "e2e" target is defined in the project, to avoid interactive setup prompts. + +`, + isReadOnly: false, + isLocalOnly: true, + inputSchema: e2eToolInputSchema.shape, + outputSchema: e2eToolOutputSchema.shape, + factory: (context) => (input) => runE2e(input, LocalWorkspaceHost, context), +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts new file mode 100644 index 000000000000..f525e29f4773 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts @@ -0,0 +1,108 @@ +/** + * @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 { workspaces } from '@angular-devkit/core'; +import { AngularWorkspace } from '../../../utilities/config'; +import { CommandError, Host } from '../host'; +import type { MockHost } from '../testing/mock-host'; +import { runE2e } from './e2e'; +import type { McpToolContext } from './tool-registry'; + +describe('E2E Tool', () => { + let mockHost: MockHost; + let mockContext: McpToolContext; + let mockProjects: workspaces.ProjectDefinitionCollection; + let mockWorkspace: AngularWorkspace; + + beforeEach(() => { + mockHost = { + runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), + } as unknown as MockHost; + + mockProjects = new workspaces.ProjectDefinitionCollection(); + const mockWorkspaceDefinition: workspaces.WorkspaceDefinition = { + projects: mockProjects, + extensions: {}, + }; + + mockWorkspace = new AngularWorkspace(mockWorkspaceDefinition, '/test/angular.json'); + mockContext = { + workspace: mockWorkspace, + } as McpToolContext; + }); + + function addProject(name: string, targets: Record = {}) { + mockProjects.set(name, { + root: `projects/${name}`, + extensions: {}, + targets: new workspaces.TargetDefinitionCollection(targets), + }); + } + + it('should construct the command correctly with defaults', async () => { + await runE2e({}, mockHost, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); + }); + + it('should construct the command correctly with a specified project', async () => { + addProject('my-app', { e2e: { builder: 'mock-builder' } }); + + await runE2e({ project: 'my-app' }, mockHost, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app']); + }); + + it('should error if project does not have e2e target', async () => { + addProject('my-app', { build: { builder: 'mock-builder' } }); + + const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext); + + expect(structuredContent.status).toBe('failure'); + expect(structuredContent.logs?.[0]).toContain("No e2e target is defined for project 'my-app'"); + expect(mockHost.runCommand).not.toHaveBeenCalled(); + }); + + it('should error if default project does not have e2e target and no project specified', async () => { + mockWorkspace.extensions['defaultProject'] = 'my-app'; + addProject('my-app', { build: { builder: 'mock-builder' } }); + + const { structuredContent } = await runE2e({}, mockHost, mockContext); + + expect(structuredContent.status).toBe('failure'); + expect(structuredContent.logs?.[0]).toContain("No e2e target is defined for project 'default'"); + expect(mockHost.runCommand).not.toHaveBeenCalled(); + }); + + it('should proceed if no workspace context is available (fallback)', async () => { + // If context.workspace is undefined, it should try to run ng e2e (which might fail or prompt, but tool runs it) + const noWorkspaceContext = {} as McpToolContext; + await runE2e({}, mockHost, noWorkspaceContext); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); + }); + + it('should handle a successful e2e run', async () => { + addProject('my-app', { e2e: { builder: 'mock-builder' } }); + const e2eLogs = ['E2E passed']; + mockHost.runCommand.and.resolveTo({ logs: e2eLogs }); + + const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext); + + expect(structuredContent.status).toBe('success'); + expect(structuredContent.logs).toEqual(e2eLogs); + }); + + it('should handle a failed e2e run', async () => { + addProject('my-app', { e2e: { builder: 'mock-builder' } }); + const e2eLogs = ['E2E failed']; + mockHost.runCommand.and.rejectWith(new CommandError('Failed', e2eLogs, 1)); + + const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext); + + expect(structuredContent.status).toBe('failure'); + expect(structuredContent.logs).toEqual(e2eLogs); + }); +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/test.ts b/packages/angular/cli/src/commands/mcp/tools/test.ts new file mode 100644 index 000000000000..23a978b9d7dc --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/test.ts @@ -0,0 +1,97 @@ +/** + * @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 { z } from 'zod'; +import { CommandError, type Host, LocalWorkspaceHost } from '../host'; +import { createStructuredContentOutput } from '../utils'; +import { type McpToolDeclaration, declareTool } from './tool-registry'; + +const testStatusSchema = z.enum(['success', 'failure']); +type TestStatus = z.infer; + +const testToolInputSchema = z.object({ + project: z + .string() + .optional() + .describe('Which project to test in a monorepo context. If not provided, tests all projects.'), + filter: z.string().optional().describe('Filter the executed tests by spec name.'), +}); + +export type TestToolInput = z.infer; + +const testToolOutputSchema = z.object({ + status: testStatusSchema.describe('Test execution status.'), + logs: z.array(z.string()).optional().describe('Output logs from `ng test`.'), +}); + +export type TestToolOutput = z.infer; + +export async function runTest(input: TestToolInput, host: Host) { + // Build "ng"'s command line. + const args = ['test']; + if (input.project) { + args.push(input.project); + } + + // This is ran by the agent so we want a non-watched, headless test. + args.push('--browsers', 'ChromeHeadless'); + args.push('--watch', 'false'); + + if (input.filter) { + args.push('--filter', input.filter); + } + + let status: TestStatus = 'success'; + let logs: string[] = []; + + try { + logs = (await host.runCommand('ng', args)).logs; + } catch (e) { + status = 'failure'; + if (e instanceof CommandError) { + logs = e.logs; + } else if (e instanceof Error) { + logs = [e.message]; + } else { + logs = [String(e)]; + } + } + + const structuredContent: TestToolOutput = { + status, + logs, + }; + + return createStructuredContentOutput(structuredContent); +} + +export const TEST_TOOL: McpToolDeclaration< + typeof testToolInputSchema.shape, + typeof testToolOutputSchema.shape +> = declareTool({ + name: 'test', + title: 'Test Tool', + description: ` + +Perform a one-off, non-watched unit test execution with ng test. + + +* Running unit tests for the project. +* Verifying code changes with tests. + + +* This tool runs "ng test" with "--watch false". +* It supports filtering by spec name if the underlying builder supports it (e.g., 'unit-test' builder). + +`, + isReadOnly: false, + isLocalOnly: true, + inputSchema: testToolInputSchema.shape, + outputSchema: testToolOutputSchema.shape, + factory: () => (input) => runTest(input, LocalWorkspaceHost), +}); diff --git a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts new file mode 100644 index 000000000000..8c7429417612 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts @@ -0,0 +1,88 @@ +/** + * @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 { CommandError, Host } from '../host'; +import type { MockHost } from '../testing/mock-host'; +import { runTest } from './test'; + +describe('Test Tool', () => { + let mockHost: MockHost; + + beforeEach(() => { + mockHost = { + runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), + } as unknown as MockHost; + }); + + it('should construct the command correctly with defaults', async () => { + await runTest({}, mockHost); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'test', + '--browsers', + 'ChromeHeadless', + '--watch', + 'false', + ]); + }); + + it('should construct the command correctly with a specified project', async () => { + await runTest({ project: 'my-lib' }, mockHost); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'test', + 'my-lib', + '--browsers', + 'ChromeHeadless', + '--watch', + 'false', + ]); + }); + + it('should construct the command correctly with filter', async () => { + await runTest({ filter: 'AppComponent' }, mockHost); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'test', + '--browsers', + 'ChromeHeadless', + '--watch', + 'false', + '--filter', + 'AppComponent', + ]); + }); + + it('should handle a successful test run and capture logs', async () => { + const testLogs = ['Executed 10 of 10 SUCCESS', 'Total: 10 success']; + mockHost.runCommand.and.resolveTo({ + logs: testLogs, + }); + + const { structuredContent } = await runTest({ project: 'my-app' }, mockHost); + + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ + 'test', + 'my-app', + '--browsers', + 'ChromeHeadless', + '--watch', + 'false', + ]); + expect(structuredContent.status).toBe('success'); + expect(structuredContent.logs).toEqual(testLogs); + }); + + it('should handle a failed test run and capture logs', async () => { + const testLogs = ['Executed 10 of 10 FAILED', 'Error: Some test failed']; + const error = new CommandError('Test failed', testLogs, 1); + mockHost.runCommand.and.rejectWith(error); + + const { structuredContent } = await runTest({ project: 'my-failed-app' }, mockHost); + + expect(structuredContent.status).toBe('failure'); + expect(structuredContent.logs).toEqual(testLogs); + }); +}); From be31e7caf9c550323485a23a91353c4ee59d47ff Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Thu, 4 Dec 2025 13:55:49 -0800 Subject: [PATCH 2041/2162] refactor(@angular/cli): clean up MCP tests and use real project name for default projects --- .../angular/cli/src/commands/mcp/devserver.ts | 4 - .../src/commands/mcp/testing/test-utils.ts | 91 +++++++++++++ .../cli/src/commands/mcp/tools/build.ts | 10 +- .../cli/src/commands/mcp/tools/build_spec.ts | 11 +- .../mcp/tools/devserver/devserver-start.ts | 20 ++- .../mcp/tools/devserver/devserver-stop.ts | 33 ++++- .../devserver/devserver-wait-for-build.ts | 31 ++++- .../mcp/tools/devserver/devserver_spec.ts | 38 ++++-- .../angular/cli/src/commands/mcp/tools/e2e.ts | 49 +++---- .../cli/src/commands/mcp/tools/e2e_spec.ts | 66 +++++---- .../cli/src/commands/mcp/tools/modernize.ts | 7 +- .../cli/src/commands/mcp/tools/test.ts | 13 +- .../cli/src/commands/mcp/tools/test_spec.ts | 9 +- .../angular/cli/src/commands/mcp/utils.ts | 60 ++++++++- .../cli/src/commands/mcp/utils_spec.ts | 126 ++++++++++++++++++ 15 files changed, 432 insertions(+), 136 deletions(-) create mode 100644 packages/angular/cli/src/commands/mcp/testing/test-utils.ts create mode 100644 packages/angular/cli/src/commands/mcp/utils_spec.ts diff --git a/packages/angular/cli/src/commands/mcp/devserver.ts b/packages/angular/cli/src/commands/mcp/devserver.ts index cf8378294edd..6955f2d512e6 100644 --- a/packages/angular/cli/src/commands/mcp/devserver.ts +++ b/packages/angular/cli/src/commands/mcp/devserver.ts @@ -64,10 +64,6 @@ export interface Devserver { port: number; } -export function devserverKey(project?: string) { - return project ?? ''; -} - /** * A local Angular development server managed by the MCP server. */ diff --git a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts new file mode 100644 index 000000000000..888fe1d0463b --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts @@ -0,0 +1,91 @@ +/** + * @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 { workspaces } from '@angular-devkit/core'; +import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; +import { AngularWorkspace } from '../../../utilities/config'; +import { type Devserver } from '../devserver'; +import { Host } from '../host'; +import { McpToolContext } from '../tools/tool-registry'; +import { MockHost } from './mock-host'; + +/** + * Creates a mock implementation of the Host interface for testing purposes. + * Each method is a Jasmine spy that can be configured. + */ +export function createMockHost(): MockHost { + return { + runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), + stat: jasmine.createSpy('stat'), + existsSync: jasmine.createSpy('existsSync'), + spawn: jasmine.createSpy('spawn'), + getAvailablePort: jasmine + .createSpy('getAvailablePort') + .and.resolveTo(0), + } as unknown as MockHost; +} + +/** + * Options for configuring the mock MCP tool context. + */ +export interface MockContextOptions { + /** An optional pre-configured mock host. If not provided, a default mock host will be created. */ + host?: MockHost; + + /** Initial set of projects to populate the mock workspace with. */ + projects?: Record; +} + +/** + * Creates a comprehensive mock for the McpToolContext, including a mock Host, + * an AngularWorkspace, and a ProjectDefinitionCollection. This simplifies testing + * MCP tools by providing a consistent and configurable testing environment. + * @param options Configuration options for the mock context. + * @returns An object containing the mock host, context, projects collection, and workspace instance. + */ +export function createMockContext(options: MockContextOptions = {}): { + host: MockHost; + context: McpToolContext; + projects: workspaces.ProjectDefinitionCollection; + workspace: AngularWorkspace; +} { + const host = options.host ?? createMockHost(); + const projects = new workspaces.ProjectDefinitionCollection(options.projects); + const workspace = new AngularWorkspace({ projects, extensions: {} }, '/test/angular.json'); + + const context: McpToolContext = { + server: {} as unknown as McpServer, + workspace, + logger: { warn: () => {} }, + devservers: new Map(), + host, + }; + + return { host, context, projects, workspace }; +} + +/** + * Adds a project to the provided mock ProjectDefinitionCollection. + * This is a helper function to easily populate a mock Angular workspace. + * @param projects The ProjectDefinitionCollection to add the project to. + * @param name The name of the project. + * @param targets A record of target definitions for the project (e.g., build, test, e2e). + * @param root The root path of the project, relative to the workspace root. Defaults to `projects/${name}`. + */ +export function addProjectToWorkspace( + projects: workspaces.ProjectDefinitionCollection, + name: string, + targets: Record = {}, + root = `projects/${name}`, +) { + projects.set(name, { + root, + extensions: {}, + targets: new workspaces.TargetDefinitionCollection(targets), + }); +} diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index 7984fc864dc6..3faee85ebc90 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -8,7 +8,7 @@ import { z } from 'zod'; import { CommandError, type Host } from '../host'; -import { createStructuredContentOutput } from '../utils'; +import { createStructuredContentOutput, getCommandErrorLogs } from '../utils'; import { type McpToolDeclaration, declareTool } from './tool-registry'; const DEFAULT_CONFIGURATION = 'development'; @@ -55,13 +55,7 @@ export async function runBuild(input: BuildToolInput, host: Host) { logs = (await host.runCommand('ng', args)).logs; } catch (e) { status = 'failure'; - if (e instanceof CommandError) { - logs = e.logs; - } else if (e instanceof Error) { - logs = [e.message]; - } else { - logs = [String(e)]; - } + logs = getCommandErrorLogs(e); } for (const line of logs) { diff --git a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts index 4ad98e0456b9..387c415d5eb2 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts @@ -6,19 +6,16 @@ * found in the LICENSE file at https://angular.dev/license */ -import { CommandError, Host } from '../host'; +import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; +import { createMockHost } from '../testing/test-utils'; import { runBuild } from './build'; describe('Build Tool', () => { let mockHost: MockHost; beforeEach(() => { - mockHost = { - runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), - stat: jasmine.createSpy('stat'), - existsSync: jasmine.createSpy('existsSync'), - } as MockHost; + mockHost = createMockHost(); }); it('should construct the command correctly with default configuration', async () => { @@ -82,7 +79,7 @@ describe('Build Tool', () => { 'production', ]); expect(structuredContent.status).toBe('failure'); - expect(structuredContent.logs).toEqual(buildLogs); + expect(structuredContent.logs).toEqual([...buildLogs, 'Build failed']); expect(structuredContent.path).toBeUndefined(); }); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts index 574a937fe073..44917d612ef1 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts @@ -7,8 +7,8 @@ */ import { z } from 'zod'; -import { LocalDevserver, devserverKey } from '../../devserver'; -import { createStructuredContentOutput } from '../../utils'; +import { LocalDevserver } from '../../devserver'; +import { createStructuredContentOutput, getDefaultProjectName } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; const devserverStartToolInputSchema = z.object({ @@ -39,12 +39,18 @@ function localhostAddress(port: number) { } export async function startDevserver(input: DevserverStartToolInput, context: McpToolContext) { - const projectKey = devserverKey(input.project); + const projectName = input.project ?? getDefaultProjectName(context); - let devserver = context.devservers.get(projectKey); + if (!projectName) { + return createStructuredContentOutput({ + message: ['Project name not provided, and no default project found.'], + }); + } + + let devserver = context.devservers.get(projectName); if (devserver) { return createStructuredContentOutput({ - message: `Development server for project '${projectKey}' is already running.`, + message: `Development server for project '${projectName}' is already running.`, address: localhostAddress(devserver.port), }); } @@ -54,10 +60,10 @@ export async function startDevserver(input: DevserverStartToolInput, context: Mc devserver = new LocalDevserver({ host: context.host, project: input.project, port }); devserver.start(); - context.devservers.set(projectKey, devserver); + context.devservers.set(projectName, devserver); return createStructuredContentOutput({ - message: `Development server for project '${projectKey}' started and watching for workspace changes.`, + message: `Development server for project '${projectName}' started and watching for workspace changes.`, address: localhostAddress(port), }); } diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts index 203cd1770a7d..4342fafbfb20 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts @@ -7,8 +7,7 @@ */ import { z } from 'zod'; -import { devserverKey } from '../../devserver'; -import { createStructuredContentOutput } from '../../utils'; +import { createStructuredContentOutput, getDefaultProjectName } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; const devserverStopToolInputSchema = z.object({ @@ -30,21 +29,41 @@ const devserverStopToolOutputSchema = z.object({ export type DevserverStopToolOutput = z.infer; export function stopDevserver(input: DevserverStopToolInput, context: McpToolContext) { - const projectKey = devserverKey(input.project); - const devServer = context.devservers.get(projectKey); + if (context.devservers.size === 0) { + return createStructuredContentOutput({ + message: ['No development servers are currently running.'], + logs: undefined, + }); + } + + let projectName = input.project ?? getDefaultProjectName(context); + + if (!projectName) { + // This should not happen. But if there's just a single running devserver, stop it. + if (context.devservers.size === 1) { + projectName = Array.from(context.devservers.keys())[0]; + } else { + return createStructuredContentOutput({ + message: ['Project name not provided, and no default project found.'], + logs: undefined, + }); + } + } + + const devServer = context.devservers.get(projectName); if (!devServer) { return createStructuredContentOutput({ - message: `Development server for project '${projectKey}' was not running.`, + message: `Development server for project '${projectName}' was not running.`, logs: undefined, }); } devServer.stop(); - context.devservers.delete(projectKey); + context.devservers.delete(projectName); return createStructuredContentOutput({ - message: `Development server for project '${projectKey}' stopped.`, + message: `Development server for project '${projectName}' stopped.`, logs: devServer.getServerLogs(), }); } diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts index 945c38f0c30e..396ca451ba79 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts @@ -7,8 +7,7 @@ */ import { z } from 'zod'; -import { devserverKey } from '../../devserver'; -import { createStructuredContentOutput } from '../../utils'; +import { createStructuredContentOutput, getDefaultProjectName } from '../../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; /** @@ -60,21 +59,43 @@ export async function waitForDevserverBuild( input: DevserverWaitForBuildToolInput, context: McpToolContext, ) { - const projectKey = devserverKey(input.project); - const devServer = context.devservers.get(projectKey); - const deadline = Date.now() + input.timeout; + if (context.devservers.size === 0) { + return createStructuredContentOutput({ + status: 'no_devserver_found', + logs: undefined, + }); + } + + let projectName = input.project ?? getDefaultProjectName(context); + + if (!projectName) { + // This should not happen. But if there's just a single running devserver, wait for it. + if (context.devservers.size === 1) { + projectName = Array.from(context.devservers.keys())[0]; + } else { + return createStructuredContentOutput({ + status: 'no_devserver_found', + logs: undefined, + }); + } + } + + const devServer = context.devservers.get(projectName); if (!devServer) { return createStructuredContentOutput({ status: 'no_devserver_found', + logs: undefined, }); } + const deadline = Date.now() + input.timeout; await wait(WATCH_DELAY); while (devServer.isBuilding()) { if (Date.now() > deadline) { return createStructuredContentOutput({ status: 'timeout', + logs: undefined, }); } await wait(WATCH_DELAY); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts index ea6449ceeffa..f3b33af417bf 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts @@ -8,7 +8,9 @@ import { EventEmitter } from 'events'; import type { ChildProcess } from 'node:child_process'; +import { AngularWorkspace } from '../../../../utilities/config'; import type { MockHost } from '../../testing/mock-host'; +import { addProjectToWorkspace, createMockContext } from '../../testing/test-utils'; import type { McpToolContext } from '../tool-registry'; import { startDevserver } from './devserver-start'; import { stopDevserver } from './devserver-stop'; @@ -25,33 +27,36 @@ describe('Serve Tools', () => { let mockContext: McpToolContext; let mockProcess: MockChildProcess; let portCounter: number; + let mockWorkspace: AngularWorkspace; beforeEach(() => { portCounter = 12345; mockProcess = new MockChildProcess(); - mockHost = { - spawn: jasmine.createSpy('spawn').and.returnValue(mockProcess as unknown as ChildProcess), - getAvailablePort: jasmine.createSpy('getAvailablePort').and.callFake(() => { - return Promise.resolve(portCounter++); - }), - } as MockHost; - - mockContext = { - devservers: new Map(), - host: mockHost, - } as Partial as McpToolContext; + + const mock = createMockContext(); + mockHost = mock.host; + mockContext = mock.context; + mockWorkspace = mock.workspace; + + // Customize host spies + mockHost.spawn.and.returnValue(mockProcess as unknown as ChildProcess); + mockHost.getAvailablePort.and.callFake(() => Promise.resolve(portCounter++)); + + // Setup default project + addProjectToWorkspace(mock.projects, 'my-app'); + mockWorkspace.extensions['defaultProject'] = 'my-app'; }); it('should start and stop a dev server', async () => { const startResult = await startDevserver({}, mockContext); expect(startResult.structuredContent.message).toBe( - `Development server for project '' started and watching for workspace changes.`, + `Development server for project 'my-app' started and watching for workspace changes.`, ); expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', '--port=12345'], { stdio: 'pipe' }); const stopResult = stopDevserver({}, mockContext); expect(stopResult.structuredContent.message).toBe( - `Development server for project '' stopped.`, + `Development server for project 'my-app' stopped.`, ); expect(mockProcess.kill).toHaveBeenCalled(); }); @@ -78,6 +83,11 @@ describe('Serve Tools', () => { }); it('should handle multiple dev servers', async () => { + // Add extra projects + const projects = mockWorkspace.projects; + addProjectToWorkspace(projects, 'app-one'); + addProjectToWorkspace(projects, 'app-two'); + // Start server for project 1. This uses the basic mockProcess created for the tests. const startResult1 = await startDevserver({ project: 'app-one' }, mockContext); expect(startResult1.structuredContent.message).toBe( @@ -117,6 +127,7 @@ describe('Serve Tools', () => { }); it('should handle server crash', async () => { + addProjectToWorkspace(mockWorkspace.projects, 'crash-app'); await startDevserver({ project: 'crash-app' }, mockContext); // Simulate a crash with exit code 1 @@ -129,6 +140,7 @@ describe('Serve Tools', () => { }); it('wait should timeout if build takes too long', async () => { + addProjectToWorkspace(mockWorkspace.projects, 'timeout-app'); await startDevserver({ project: 'timeout-app' }, mockContext); const waitResult = await waitForDevserverBuild( { project: 'timeout-app', timeout: 10 }, diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e.ts b/packages/angular/cli/src/commands/mcp/tools/e2e.ts index 7e99d57cddce..86b1ee76f2e3 100644 --- a/packages/angular/cli/src/commands/mcp/tools/e2e.ts +++ b/packages/angular/cli/src/commands/mcp/tools/e2e.ts @@ -8,7 +8,12 @@ import { z } from 'zod'; import { CommandError, type Host, LocalWorkspaceHost } from '../host'; -import { createStructuredContentOutput } from '../utils'; +import { + createStructuredContentOutput, + getCommandErrorLogs, + getDefaultProjectName, + getProject, +} from '../utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry'; const e2eStatusSchema = z.enum(['success', 'failure']); @@ -33,32 +38,19 @@ const e2eToolOutputSchema = z.object({ export type E2eToolOutput = z.infer; export async function runE2e(input: E2eToolInput, host: Host, context: McpToolContext) { - const projectName = input.project; - - if (context.workspace) { - let targetProject; - const projects = context.workspace.projects; - - if (projectName) { - targetProject = projects.get(projectName); - } else { - // Try to find default project - const defaultProjectName = context.workspace.extensions['defaultProject'] as - | string - | undefined; - if (defaultProjectName) { - targetProject = projects.get(defaultProjectName); - } else if (projects.size === 1) { - targetProject = Array.from(projects.values())[0]; - } - } + const projectName = input.project ?? getDefaultProjectName(context); + if (context.workspace && projectName) { + // Verify that if a project can be found, it has an e2e testing already set up. + const targetProject = getProject(context, projectName); if (targetProject) { if (!targetProject.targets.has('e2e')) { return createStructuredContentOutput({ status: 'failure', logs: [ - `No e2e target is defined for project '${projectName ?? 'default'}'. Please setup e2e testing first.`, + `No e2e target is defined for project '${projectName}'. Please set up e2e testing` + + ' first by calling `ng e2e` in an interactive console.' + + ' See https://angular.dev/tools/cli/end-to-end.', ], }); } @@ -78,13 +70,7 @@ export async function runE2e(input: E2eToolInput, host: Host, context: McpToolCo logs = (await host.runCommand('ng', args)).logs; } catch (e) { status = 'failure'; - if (e instanceof CommandError) { - logs = e.logs; - } else if (e instanceof Error) { - logs = [e.message]; - } else { - logs = [String(e)]; - } + logs = getCommandErrorLogs(e); } const structuredContent: E2eToolOutput = { @@ -106,11 +92,12 @@ export const E2E_TOOL: McpToolDeclaration< Perform an end-to-end test with ng e2e. -* Running end-to-end tests for the project. +* When the user requests running end-to-end tests for the project. +* When verifying changes that cross unit boundaries, such as changes to both client and server, changes to shared data types, etc. -* This tool runs "ng e2e". -* It will error if no "e2e" target is defined in the project, to avoid interactive setup prompts. +* This tool uses "ng e2e". +* Important: this relies on e2e tests being already configured for this project. It will error out if no "e2e" target is defined. `, isReadOnly: false, diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts index f525e29f4773..852381fc6ee9 100644 --- a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts @@ -8,8 +8,9 @@ import { workspaces } from '@angular-devkit/core'; import { AngularWorkspace } from '../../../utilities/config'; -import { CommandError, Host } from '../host'; +import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; +import { addProjectToWorkspace, createMockContext } from '../testing/test-utils'; import { runE2e } from './e2e'; import type { McpToolContext } from './tool-registry'; @@ -20,44 +21,27 @@ describe('E2E Tool', () => { let mockWorkspace: AngularWorkspace; beforeEach(() => { - mockHost = { - runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), - } as unknown as MockHost; - - mockProjects = new workspaces.ProjectDefinitionCollection(); - const mockWorkspaceDefinition: workspaces.WorkspaceDefinition = { - projects: mockProjects, - extensions: {}, - }; - - mockWorkspace = new AngularWorkspace(mockWorkspaceDefinition, '/test/angular.json'); - mockContext = { - workspace: mockWorkspace, - } as McpToolContext; + const mock = createMockContext(); + mockHost = mock.host; + mockContext = mock.context; + mockProjects = mock.projects; + mockWorkspace = mock.workspace; }); - function addProject(name: string, targets: Record = {}) { - mockProjects.set(name, { - root: `projects/${name}`, - extensions: {}, - targets: new workspaces.TargetDefinitionCollection(targets), - }); - } - it('should construct the command correctly with defaults', async () => { await runE2e({}, mockHost, mockContext); expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); }); it('should construct the command correctly with a specified project', async () => { - addProject('my-app', { e2e: { builder: 'mock-builder' } }); + addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } }); await runE2e({ project: 'my-app' }, mockHost, mockContext); expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app']); }); it('should error if project does not have e2e target', async () => { - addProject('my-app', { build: { builder: 'mock-builder' } }); + addProjectToWorkspace(mockProjects, 'my-app', { build: { builder: 'mock-builder' } }); const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext); @@ -66,43 +50,57 @@ describe('E2E Tool', () => { expect(mockHost.runCommand).not.toHaveBeenCalled(); }); - it('should error if default project does not have e2e target and no project specified', async () => { + it('should error if no project was specified and the default project does not have e2e target', async () => { mockWorkspace.extensions['defaultProject'] = 'my-app'; - addProject('my-app', { build: { builder: 'mock-builder' } }); + addProjectToWorkspace(mockProjects, 'my-app', { build: { builder: 'mock-builder' } }); const { structuredContent } = await runE2e({}, mockHost, mockContext); expect(structuredContent.status).toBe('failure'); - expect(structuredContent.logs?.[0]).toContain("No e2e target is defined for project 'default'"); + expect(structuredContent.logs?.[0]).toContain("No e2e target is defined for project 'my-app'"); expect(mockHost.runCommand).not.toHaveBeenCalled(); }); it('should proceed if no workspace context is available (fallback)', async () => { - // If context.workspace is undefined, it should try to run ng e2e (which might fail or prompt, but tool runs it) + // If context.workspace is undefined, it should try to run ng e2e. const noWorkspaceContext = {} as McpToolContext; await runE2e({}, mockHost, noWorkspaceContext); expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); }); - it('should handle a successful e2e run', async () => { - addProject('my-app', { e2e: { builder: 'mock-builder' } }); - const e2eLogs = ['E2E passed']; + it('should handle a successful e2e run with a specified project', async () => { + addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } }); + const e2eLogs = ['E2E passed for my-app']; mockHost.runCommand.and.resolveTo({ logs: e2eLogs }); const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext); expect(structuredContent.status).toBe('success'); expect(structuredContent.logs).toEqual(e2eLogs); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app']); + }); + + it('should handle a successful e2e run with the default project', async () => { + mockWorkspace.extensions['defaultProject'] = 'default-app'; + addProjectToWorkspace(mockProjects, 'default-app', { e2e: { builder: 'mock-builder' } }); + const e2eLogs = ['E2E passed for default-app']; + mockHost.runCommand.and.resolveTo({ logs: e2eLogs }); + + const { structuredContent } = await runE2e({}, mockHost, mockContext); + + expect(structuredContent.status).toBe('success'); + expect(structuredContent.logs).toEqual(e2eLogs); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); }); it('should handle a failed e2e run', async () => { - addProject('my-app', { e2e: { builder: 'mock-builder' } }); + addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } }); const e2eLogs = ['E2E failed']; mockHost.runCommand.and.rejectWith(new CommandError('Failed', e2eLogs, 1)); const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext); expect(structuredContent.status).toBe('failure'); - expect(structuredContent.logs).toEqual(e2eLogs); + expect(structuredContent.logs).toEqual([...e2eLogs, 'Failed']); }); }); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 9e85c6f7246b..6864ba2a338c 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -9,7 +9,7 @@ import { dirname, join, relative } from 'path'; import { z } from 'zod'; import { CommandError, type Host } from '../host'; -import { createStructuredContentOutput, findAngularJsonDir } from '../utils'; +import { createStructuredContentOutput, findAngularJsonDir, getCommandErrorLogs } from '../utils'; import { type McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { @@ -152,10 +152,7 @@ export async function runModernization(input: ModernizeInput, host: Host) { `Migration ${transformation.name} on directory ${relativePath} completed successfully.`, ); } catch (e) { - if (e instanceof CommandError) { - logs = e.logs; - } - logs.push((e as Error).message); + logs = getCommandErrorLogs(e); instructions.push( `Migration ${transformation.name} on directory ${relativePath} failed.`, ); diff --git a/packages/angular/cli/src/commands/mcp/tools/test.ts b/packages/angular/cli/src/commands/mcp/tools/test.ts index 23a978b9d7dc..829296d815ad 100644 --- a/packages/angular/cli/src/commands/mcp/tools/test.ts +++ b/packages/angular/cli/src/commands/mcp/tools/test.ts @@ -8,7 +8,7 @@ import { z } from 'zod'; import { CommandError, type Host, LocalWorkspaceHost } from '../host'; -import { createStructuredContentOutput } from '../utils'; +import { createStructuredContentOutput, getCommandErrorLogs } from '../utils'; import { type McpToolDeclaration, declareTool } from './tool-registry'; const testStatusSchema = z.enum(['success', 'failure']); @@ -53,13 +53,7 @@ export async function runTest(input: TestToolInput, host: Host) { logs = (await host.runCommand('ng', args)).logs; } catch (e) { status = 'failure'; - if (e instanceof CommandError) { - logs = e.logs; - } else if (e instanceof Error) { - logs = [e.message]; - } else { - logs = [String(e)]; - } + logs = getCommandErrorLogs(e); } const structuredContent: TestToolOutput = { @@ -85,8 +79,9 @@ Perform a one-off, non-watched unit test execution with ng test. * Verifying code changes with tests.
-* This tool runs "ng test" with "--watch false". +* This tool uses "ng test". * It supports filtering by spec name if the underlying builder supports it (e.g., 'unit-test' builder). +* This runs a headless Chrome as a browser, so requires Chrome to be installed. `, isReadOnly: false, diff --git a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts index 8c7429417612..1049e705697d 100644 --- a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts @@ -6,17 +6,16 @@ * found in the LICENSE file at https://angular.dev/license */ -import { CommandError, Host } from '../host'; +import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; +import { createMockHost } from '../testing/test-utils'; import { runTest } from './test'; describe('Test Tool', () => { let mockHost: MockHost; beforeEach(() => { - mockHost = { - runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }), - } as unknown as MockHost; + mockHost = createMockHost(); }); it('should construct the command correctly with defaults', async () => { @@ -83,6 +82,6 @@ describe('Test Tool', () => { const { structuredContent } = await runTest({ project: 'my-failed-app' }, mockHost); expect(structuredContent.status).toBe('failure'); - expect(structuredContent.logs).toEqual(testLogs); + expect(structuredContent.logs).toEqual([...testLogs, 'Test failed']); }); }); diff --git a/packages/angular/cli/src/commands/mcp/utils.ts b/packages/angular/cli/src/commands/mcp/utils.ts index f5fdd70ef40e..7a505513341d 100644 --- a/packages/angular/cli/src/commands/mcp/utils.ts +++ b/packages/angular/cli/src/commands/mcp/utils.ts @@ -11,8 +11,10 @@ * Utility functions shared across MCP tools. */ +import { workspaces } from '@angular-devkit/core'; import { dirname, join } from 'node:path'; -import { LocalWorkspaceHost } from './host'; +import { CommandError, LocalWorkspaceHost } from './host'; +import { McpToolContext } from './tools/tool-registry'; /** * Returns simple structured content output from an MCP tool. @@ -52,3 +54,59 @@ export function findAngularJsonDir(startDir: string, host = LocalWorkspaceHost): currentDir = parentDir; } } + +/** + * Searches for a project in the current workspace, by name. + */ +export function getProject( + context: McpToolContext, + name: string, +): workspaces.ProjectDefinition | undefined { + const projects = context.workspace?.projects; + if (!projects) { + return undefined; + } + + return projects.get(name); +} + +/** + * Returns the name of the default project in the current workspace, or undefined if none exists. + * + * If no default project is defined but there's only a single project in the workspace, its name will + * be returned. + */ +export function getDefaultProjectName(context: McpToolContext): string | undefined { + const projects = context.workspace?.projects; + + if (!projects) { + return undefined; + } + + const defaultProjectName = context.workspace?.extensions['defaultProject'] as string | undefined; + if (defaultProjectName) { + return defaultProjectName; + } + + // No default project defined? This might still be salvageable if only a single project exists. + if (projects.size === 1) { + return Array.from(projects.keys())[0]; + } + + return undefined; +} + +/** + * Get the logs of a failing command. + * + * This call has fallbacks in case the exception was thrown from the command-calling code itself. + */ +export function getCommandErrorLogs(e: unknown): string[] { + if (e instanceof CommandError) { + return [...e.logs, e.message]; + } else if (e instanceof Error) { + return [e.message]; + } else { + return [String(e)]; + } +} diff --git a/packages/angular/cli/src/commands/mcp/utils_spec.ts b/packages/angular/cli/src/commands/mcp/utils_spec.ts new file mode 100644 index 000000000000..26dd0798e095 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/utils_spec.ts @@ -0,0 +1,126 @@ +/** + * @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 { join } from 'node:path'; +import { CommandError, LocalWorkspaceHost } from './host'; +import { addProjectToWorkspace, createMockContext } from './testing/test-utils'; +import { + createStructuredContentOutput, + findAngularJsonDir, + getCommandErrorLogs, + getDefaultProjectName, + getProject, +} from './utils'; + +describe('MCP Utils', () => { + describe('createStructuredContentOutput', () => { + it('should create valid structured content output', () => { + const data = { foo: 'bar' }; + const output = createStructuredContentOutput(data); + + expect(output.structuredContent).toEqual(data); + expect(output.content).toEqual([{ type: 'text', text: JSON.stringify(data, null, 2) }]); + }); + }); + + describe('findAngularJsonDir', () => { + let mockHost: typeof LocalWorkspaceHost; + + beforeEach(() => { + mockHost = { + existsSync: jasmine.createSpy('existsSync'), + } as unknown as typeof LocalWorkspaceHost; + }); + + it('should return dir if angular.json exists in it', () => { + (mockHost.existsSync as jasmine.Spy).and.callFake( + (path: string) => path === join('/app', 'angular.json'), + ); + expect(findAngularJsonDir('/app', mockHost)).toBe('/app'); + }); + + it('should traverse up directory tree', () => { + (mockHost.existsSync as jasmine.Spy).and.callFake( + (path: string) => path === join('/app', 'angular.json'), + ); + expect(findAngularJsonDir('/app/src/app', mockHost)).toBe('/app'); + }); + + it('should return null if not found', () => { + (mockHost.existsSync as jasmine.Spy).and.returnValue(false); + expect(findAngularJsonDir('/app', mockHost)).toBeNull(); + }); + }); + + describe('getProject', () => { + it('should return undefined if workspace has no projects', () => { + const { context } = createMockContext(); + const emptyContext = { ...context }; + expect(getProject(emptyContext, 'app')).toBeUndefined(); + }); + + it('should return undefined if project not found', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'existing-app', {}, 'root'); + expect(getProject(context, 'non-existent')).toBeUndefined(); + }); + + it('should return project definition if found', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'app', {}, 'root'); + + const project = getProject(context, 'app'); + expect(project).toBeDefined(); + expect(project?.root).toBe('root'); + }); + }); + + describe('getDefaultProjectName', () => { + it('should return undefined if workspace is missing', () => { + const { context } = createMockContext(); + const emptyContext = { ...context, workspace: undefined }; + expect(getDefaultProjectName(emptyContext)).toBeUndefined(); + }); + + it('should return defaultProject from extensions', () => { + const { context, workspace } = createMockContext(); + workspace.extensions['defaultProject'] = 'my-app'; + expect(getDefaultProjectName(context)).toBe('my-app'); + }); + + it('should return single project name if only one exists and no defaultProject', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'only-app', {}, ''); + expect(getDefaultProjectName(context)).toBe('only-app'); + }); + + it('should return undefined if multiple projects exist and no defaultProject', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'app1', {}, ''); + addProjectToWorkspace(projects, 'app2', {}, ''); + expect(getDefaultProjectName(context)).toBeUndefined(); + }); + }); + + describe('getCommandErrorLogs', () => { + it('should extract logs from CommandError', () => { + const logs = ['log1', 'log2']; + const err = new CommandError('failed', logs, 1); + expect(getCommandErrorLogs(err)).toEqual([...logs, 'failed']); + }); + + it('should extract message from Error', () => { + const err = new Error('oops'); + expect(getCommandErrorLogs(err)).toEqual(['oops']); + }); + + it('should stringify unknown error', () => { + expect(getCommandErrorLogs('weird error')).toEqual(['weird error']); + }); + }); +}); From d03fa449c1a586dd86c371f68e7b89e287ae0257 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 31 Dec 2025 21:36:20 +0000 Subject: [PATCH 2042/2162] build: update pnpm to v10.27.0 See associated pull request for more information. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 710de1c9193b..cee4873bb574 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.26.1", + "packageManager": "pnpm@10.27.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.26.1" + "pnpm": "10.27.0" }, "author": "Angular Authors", "license": "MIT", From 286199ba39e342c5df153b72537f458925503ef4 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 6 Jan 2026 17:40:55 +0000 Subject: [PATCH 2043/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 6 +- package.json | 12 +- packages/angular/build/package.json | 14 +- packages/angular/cli/package.json | 6 +- .../angular_devkit/build_angular/package.json | 10 +- .../angular_devkit/build_webpack/package.json | 2 +- packages/ngtools/webpack/package.json | 2 +- pnpm-lock.yaml | 1445 ++++++++++------- 8 files changed, 895 insertions(+), 602 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index fe92f53c0725..ec43c0d86eb7 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.15", - "jsdom": "27.3.0", + "@vitest/coverage-v8": "4.0.16", + "jsdom": "27.4.0", "rxjs": "7.8.2", - "vitest": "4.0.15" + "vitest": "4.0.16" } } diff --git a/package.json b/package.json index cee4873bb574..25cfd4d8a549 100644 --- a/package.json +++ b/package.json @@ -90,12 +90,12 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.50.0", - "@typescript-eslint/parser": "8.50.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "ajv": "8.17.1", "buffer": "6.0.3", - "esbuild": "0.27.1", - "esbuild-wasm": "0.27.1", + "esbuild": "0.27.2", + "esbuild-wasm": "0.27.2", "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", "eslint-plugin-header": "3.1.1", @@ -122,7 +122,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.53.5", + "rollup": "4.55.1", "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.3.0", "rollup-plugin-sourcemaps2": "0.5.4", @@ -131,7 +131,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.9.3", - "undici": "7.16.0", + "undici": "7.18.0", "unenv": "^1.10.0", "verdaccio": "6.2.4", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 22e5e6b4b1be..ad2ea1029b51 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -27,7 +27,7 @@ "@vitejs/plugin-basic-ssl": "2.1.0", "beasties": "0.3.5", "browserslist": "^4.26.0", - "esbuild": "0.27.1", + "esbuild": "0.27.2", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -37,14 +37,14 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.54", - "sass": "1.97.0", + "rolldown": "1.0.0-beta.58", + "sass": "1.97.1", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.16.0", + "undici": "7.18.0", "vite": "7.3.0", - "watchpack": "2.4.4" + "watchpack": "2.5.0" }, "optionalDependencies": { "lmdb": "3.4.4" @@ -52,12 +52,12 @@ "devDependencies": { "@angular-devkit/core": "workspace:*", "@angular/ssr": "workspace:*", - "jsdom": "27.3.0", + "jsdom": "27.4.0", "less": "4.4.2", "ng-packagr": "21.1.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.15" + "vitest": "4.0.16" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 1fb8b671f261..07829c24b4c2 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,10 +27,10 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.25.0", + "@modelcontextprotocol/sdk": "1.25.1", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.46.0", + "algoliasearch": "5.46.2", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", @@ -40,7 +40,7 @@ "resolve": "1.22.11", "semver": "7.7.3", "yargs": "18.0.0", - "zod": "4.2.1" + "zod": "4.3.5" }, "ng-update": { "migrations": "@schematics/angular/migrations/migration-collection.json", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 35dff92b9d8b..610d05c31c94 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -28,7 +28,7 @@ "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", "css-loader": "7.1.2", - "esbuild-wasm": "0.27.1", + "esbuild-wasm": "0.27.2", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.97.0", + "sass": "1.97.1", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -55,21 +55,21 @@ "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.104.0", + "webpack": "5.104.1", "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, "optionalDependencies": { - "esbuild": "0.27.1" + "esbuild": "0.27.2" }, "devDependencies": { "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", "ng-packagr": "21.1.0-next.0", - "undici": "7.16.0" + "undici": "7.18.0" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 5b1d83e5fa20..316b68533bf8 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.104.0", + "webpack": "5.104.1", "webpack-dev-server": "5.2.2" }, "peerDependencies": { diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index daeacb77baba..5947e89fe2b8 100644 --- a/packages/ngtools/webpack/package.json +++ b/packages/ngtools/webpack/package.json @@ -30,6 +30,6 @@ "@angular/compiler": "21.1.0-next.4", "@angular/compiler-cli": "21.1.0-next.4", "typescript": "5.9.3", - "webpack": "5.104.0" + "webpack": "5.104.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33294bff3eca..07db10eaa799 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ddc3809c1993612732eaae62d28e828b2ed789e5 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-next.4 version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -81,16 +81,16 @@ importers: version: 9.39.2 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.53.5) + version: 6.0.0(rollup@4.55.1) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.53.5) + version: 29.0.0(rollup@4.55.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.53.5) + version: 6.1.0(rollup@4.55.1) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.53.5) + version: 16.0.3(rollup@4.55.1) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.6.1(eslint@9.39.2(jiti@2.6.1)) @@ -126,7 +126,7 @@ importers: version: 3.0.8 '@types/loader-utils': specifier: ^3.0.0 - version: 3.0.0(esbuild@0.27.1) + version: 3.0.0(esbuild@0.27.2) '@types/lodash': specifier: ^4.17.0 version: 4.17.21 @@ -164,11 +164,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -176,11 +176,11 @@ importers: specifier: 6.0.3 version: 6.0.3 esbuild: - specifier: 0.27.1 - version: 0.27.1 + specifier: 0.27.2 + version: 0.27.2 esbuild-wasm: - specifier: 0.27.1 - version: 0.27.1 + specifier: 0.27.2 + version: 0.27.2 eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -192,7 +192,7 @@ importers: version: 3.1.1(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) express: specifier: 5.2.1 version: 5.2.1 @@ -260,17 +260,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.53.5 - version: 4.53.5 + specifier: 4.55.1 + version: 4.55.1 rollup-license-plugin: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: specifier: 6.3.0 - version: 6.3.0(rollup@4.53.5)(typescript@5.9.3) + version: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.3)(rollup@4.53.5) + version: 0.5.4(@types/node@22.19.3)(rollup@4.55.1) semver: specifier: 7.7.3 version: 7.7.3 @@ -287,8 +287,8 @@ importers: specifier: 5.9.3 version: 5.9.3 undici: - specifier: 7.16.0 - version: 7.16.0 + specifier: 7.18.0 + version: 7.18.0 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -317,20 +317,20 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.15 - version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 4.0.16 + version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) jsdom: - specifier: 27.3.0 - version: 27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 27.4.0 + version: 27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.16 + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -354,7 +354,7 @@ importers: version: 5.1.21(@types/node@24.10.4) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -362,8 +362,8 @@ importers: specifier: ^4.26.0 version: 4.28.1 esbuild: - specifier: 0.27.1 - version: 0.27.1 + specifier: 0.27.2 + version: 0.27.2 https-proxy-agent: specifier: 7.0.6 version: 7.0.6(supports-color@10.2.2) @@ -392,11 +392,11 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.54 - version: 1.0.0-beta.54 + specifier: 1.0.0-beta.58 + version: 1.0.0-beta.58 sass: - specifier: 1.97.0 - version: 1.97.0 + specifier: 1.97.1 + version: 1.97.1 semver: specifier: 7.7.3 version: 7.7.3 @@ -407,14 +407,14 @@ importers: specifier: 0.2.15 version: 0.2.15 undici: - specifier: 7.16.0 - version: 7.16.0 + specifier: 7.18.0 + version: 7.18.0 vite: specifier: 7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: - specifier: 2.4.4 - version: 2.4.4 + specifier: 2.5.0 + version: 2.5.0 devDependencies: '@angular-devkit/core': specifier: workspace:* @@ -423,8 +423,8 @@ importers: specifier: workspace:* version: link:../ssr jsdom: - specifier: 27.3.0 - version: 27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 27.4.0 + version: 27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) less: specifier: 4.4.2 version: 4.4.2 @@ -438,8 +438,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.15 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.16 + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -463,8 +463,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.4))(@types/node@24.10.4)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.25.0 - version: 1.25.0(zod@4.2.1) + specifier: 1.25.1 + version: 1.25.1(zod@4.3.5) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -472,8 +472,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.46.0 - version: 5.46.0 + specifier: 5.46.2 + version: 5.46.2 ini: specifier: 6.0.0 version: 6.0.0 @@ -502,8 +502,8 @@ importers: specifier: 18.0.0 version: 18.0.0 zod: - specifier: 4.2.1 - version: 4.2.1 + specifier: 4.3.5 + version: 4.3.5 packages/angular/pwa: dependencies: @@ -624,19 +624,19 @@ importers: version: 10.4.23(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.104.0(esbuild@0.27.1)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)) browserslist: specifier: ^4.26.0 version: 4.28.1 copy-webpack-plugin: specifier: 13.0.1 - version: 13.0.1(webpack@5.104.0(esbuild@0.27.1)) + version: 13.0.1(webpack@5.104.1(esbuild@0.27.2)) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.104.0(esbuild@0.27.1)) + version: 7.1.2(webpack@5.104.1(esbuild@0.27.2)) esbuild-wasm: - specifier: 0.27.1 - version: 0.27.1 + specifier: 0.27.2 + version: 0.27.2 http-proxy-middleware: specifier: 3.0.5 version: 3.0.5 @@ -654,16 +654,16 @@ importers: version: 4.4.2 less-loader: specifier: 12.3.0 - version: 12.3.0(less@4.4.2)(webpack@5.104.0(esbuild@0.27.1)) + version: 12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)) license-webpack-plugin: specifier: 4.0.2 - version: 4.0.2(webpack@5.104.0(esbuild@0.27.1)) + version: 4.0.2(webpack@5.104.1(esbuild@0.27.2)) loader-utils: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: specifier: 2.9.4 - version: 2.9.4(webpack@5.104.0(esbuild@0.27.1)) + version: 2.9.4(webpack@5.104.1(esbuild@0.27.2)) open: specifier: 11.0.0 version: 11.0.0 @@ -681,7 +681,7 @@ importers: version: 8.5.6 postcss-loader: specifier: 8.2.0 - version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.0(esbuild@0.27.1)) + version: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) resolve-url-loader: specifier: 5.0.0 version: 5.0.0 @@ -689,17 +689,17 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.97.0 - version: 1.97.0 + specifier: 1.97.1 + version: 1.97.1 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.97.0)(webpack@5.104.0(esbuild@0.27.1)) + version: 16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)) semver: specifier: 7.7.3 version: 7.7.3 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.104.0(esbuild@0.27.1)) + version: 5.0.0(webpack@5.104.1(esbuild@0.27.2)) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -716,20 +716,20 @@ importers: specifier: 2.8.1 version: 2.8.1 webpack: - specifier: 5.104.0 - version: 5.104.0(esbuild@0.27.1) + specifier: 5.104.1 + version: 5.104.1(esbuild@0.27.2) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.104.0(esbuild@0.27.1)) + version: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.0(esbuild@0.27.1)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.1(esbuild@0.27.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 webpack-subresource-integrity: specifier: 5.1.0 - version: 5.1.0(webpack@5.104.0(esbuild@0.27.1)) + version: 5.1.0(webpack@5.104.1(esbuild@0.27.2)) devDependencies: '@angular/ssr': specifier: workspace:* @@ -744,12 +744,12 @@ importers: specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: - specifier: 7.16.0 - version: 7.16.0 + specifier: 7.18.0 + version: 7.18.0 optionalDependencies: esbuild: - specifier: 0.27.1 - version: 0.27.1 + specifier: 0.27.2 + version: 0.27.2 packages/angular_devkit/build_webpack: dependencies: @@ -767,11 +767,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../ngtools/webpack webpack: - specifier: 5.104.0 - version: 5.104.0(esbuild@0.27.1) + specifier: 5.104.1 + version: 5.104.1(esbuild@0.27.2) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.0(esbuild@0.27.1)) + version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.1(esbuild@0.27.2)) packages/angular_devkit/core: dependencies: @@ -843,8 +843,8 @@ importers: specifier: 5.9.3 version: 5.9.3 webpack: - specifier: 5.104.0 - version: 5.104.0(esbuild@0.27.1) + specifier: 5.104.1 + version: 5.104.1(esbuild@0.27.2) packages/schematics/angular: dependencies: @@ -890,60 +890,60 @@ packages: '@actions/io@2.0.0': resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} - '@algolia/abtesting@1.12.0': - resolution: {integrity: sha512-EfW0bfxjPs+C7ANkJDw2TATntfBKsFiy7APh+KO0pQ8A6HYa5I0NjFuCGCXWfzzzLXNZta3QUl3n5Kmm6aJo9Q==} + '@algolia/abtesting@1.12.2': + resolution: {integrity: sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.46.0': - resolution: {integrity: sha512-eG5xV8rujK4ZIHXrRshvv9O13NmU/k42Rnd3w43iKH5RaQ2zWuZO6Q7XjaoJjAFVCsJWqRbXzbYyPGrbF3wGNg==} + '@algolia/client-abtesting@5.46.2': + resolution: {integrity: sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.46.0': - resolution: {integrity: sha512-AYh2uL8IUW9eZrbbT+wZElyb7QkkeV3US2NEKY7doqMlyPWE8lErNfkVN1NvZdVcY4/SVic5GDbeDz2ft8YIiQ==} + '@algolia/client-analytics@5.46.2': + resolution: {integrity: sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.46.0': - resolution: {integrity: sha512-0emZTaYOeI9WzJi0TcNd2k3SxiN6DZfdWc2x2gHt855Jl9jPUOzfVTL6gTvCCrOlT4McvpDGg5nGO+9doEjjig==} + '@algolia/client-common@5.46.2': + resolution: {integrity: sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.46.0': - resolution: {integrity: sha512-wrBJ8fE+M0TDG1As4DDmwPn2TXajrvmvAN72Qwpuv8e2JOKNohF7+JxBoF70ZLlvP1A1EiH8DBu+JpfhBbNphQ==} + '@algolia/client-insights@5.46.2': + resolution: {integrity: sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.46.0': - resolution: {integrity: sha512-LnkeX4p0ENt0DoftDJJDzQQJig/sFQmD1eQifl/iSjhUOGUIKC/7VTeXRcKtQB78naS8njUAwpzFvxy1CDDXDQ==} + '@algolia/client-personalization@5.46.2': + resolution: {integrity: sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.46.0': - resolution: {integrity: sha512-aF9tc4ex/smypXw+W3lBPB1jjKoaGHpZezTqofvDOI/oK1dR2sdTpFpK2Ru+7IRzYgwtRqHF3znmTlyoNs9dpA==} + '@algolia/client-query-suggestions@5.46.2': + resolution: {integrity: sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.46.0': - resolution: {integrity: sha512-22SHEEVNjZfFWkFks3P6HilkR3rS7a6GjnCIqR22Zz4HNxdfT0FG+RE7efTcFVfLUkTTMQQybvaUcwMrHXYa7Q==} + '@algolia/client-search@5.46.2': + resolution: {integrity: sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.46.0': - resolution: {integrity: sha512-2LT0/Z+/sFwEpZLH6V17WSZ81JX2uPjgvv5eNlxgU7rPyup4NXXfuMbtCJ+6uc4RO/LQpEJd3Li59ke3wtyAsA==} + '@algolia/ingestion@1.46.2': + resolution: {integrity: sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.46.0': - resolution: {integrity: sha512-uivZ9wSWZ8mz2ZU0dgDvQwvVZV8XBv6lYBXf8UtkQF3u7WeTqBPeU8ZoeTyLpf0jAXCYOvc1mAVmK0xPLuEwOQ==} + '@algolia/monitoring@1.46.2': + resolution: {integrity: sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.46.0': - resolution: {integrity: sha512-O2BB8DuySuddgOAbhyH4jsGbL+KyDGpzJRtkDZkv091OMomqIA78emhhMhX9d/nIRrzS1wNLWB/ix7Hb2eV5rg==} + '@algolia/recommend@5.46.2': + resolution: {integrity: sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.46.0': - resolution: {integrity: sha512-eW6xyHCyYrJD0Kjk9Mz33gQ40LfWiEA51JJTVfJy3yeoRSw/NXhAL81Pljpa0qslTs6+LO/5DYPZddct6HvISQ==} + '@algolia/requester-browser-xhr@5.46.2': + resolution: {integrity: sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.46.0': - resolution: {integrity: sha512-Vn2+TukMGHy4PIxmdvP667tN/MhS7MPT8EEvEhS6JyFLPx3weLcxSa1F9gVvrfHWCUJhLWoMVJVB2PT8YfRGcw==} + '@algolia/requester-fetch@5.46.2': + resolution: {integrity: sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.46.0': - resolution: {integrity: sha512-xaqXyna5yBZ+r1SJ9my/DM6vfTqJg9FJgVydRJ0lnO+D5NhqGW/qaRG/iBGKr/d4fho34el6WakV7BqJvrl/HQ==} + '@algolia/requester-node-http@5.46.2': + resolution: {integrity: sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -1664,158 +1664,158 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1826,6 +1826,12 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -1871,6 +1877,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.8.0': + resolution: {integrity: sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@exodus/crypto': ^1.0.0-rc.4 + peerDependenciesMeta: + '@exodus/crypto': + optional: true + '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} @@ -2562,8 +2577,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.25.0': - resolution: {integrity: sha512-z0Zhn/LmQ3yz91dEfd5QgS7DpSjA4pk+3z2++zKgn5L6iDFM9QapsVoAQSbKLvlrFsZk9+ru6yHHWNq2lCYJKQ==} + '@modelcontextprotocol/sdk@1.25.1': + resolution: {integrity: sha512-yO28oVFFC7EBoiKdAn+VqRm+plcfv4v0xp6osG/VsCB0NlPZWi87ajbCZZ8f/RvOFLEu7//rSRmuZZ7lMoe3gQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -2719,8 +2734,8 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.0': - resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2879,8 +2894,8 @@ packages: resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} - '@oxc-project/types@0.102.0': - resolution: {integrity: sha512-8Skrw405g+/UJPKWJ1twIk3BIH2nXdiVlVNtYT23AXVwpsd79es4K+KYt06Fbnkc5BaTvk/COT2JuCLYdwnCdA==} + '@oxc-project/types@0.106.0': + resolution: {integrity: sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3032,89 +3047,89 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.54': - resolution: {integrity: sha512-zZRx/ur3Fai3fxiEmVp48+6GCBR48PRWJR1X3TTMn9yiq2bBHlYPgBaQtDOYWXv5H3J5dXujeTyGnuoY+kdGCg==} + '@rolldown/binding-android-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.54': - resolution: {integrity: sha512-zMyFEJmbIs91x22HAA/eUvmZHgjX8tGsD3TJ+WC9aY4bCdl3w84H9vMZmChSHAF1dYvGNH4KQDI2IubeZaCYtg==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.54': - resolution: {integrity: sha512-Ex7QttdaVnEpmE/zroUT5Qm10e2+Vjd9q0LX9eXm59SitxDODMpC8GI1Rct5RrLf4GLU4DzdXBj6DGzuR+6g6w==} + '@rolldown/binding-darwin-x64@1.0.0-beta.58': + resolution: {integrity: sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.54': - resolution: {integrity: sha512-E1XO10ryM/Vxw3Q1wvs9s2mSpVBfbHtzkbJcdu26qh17ZmVwNWLiIoqEcbkXm028YwkReG4Gd2gCZ3NxgTQ28Q==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': + resolution: {integrity: sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.54': - resolution: {integrity: sha512-oS73Uks8jczQR9pg0Bj718vap/x71exyJ5yuxu4X5V4MhwRQnky7ANSPm6ARUfraxOqt49IBfcMeGnw2rTSqdA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': + resolution: {integrity: sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.54': - resolution: {integrity: sha512-pY8N2X5C+/ZQcy0eRdfOzOP//OFngP1TaIqDjFwfBPws2UNavKS8SpxhPEgUaYIaT0keVBd/TB+eVy9z+CIOtw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': + resolution: {integrity: sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.54': - resolution: {integrity: sha512-cgTooAFm2MUmFriB7IYaWBNyqrGlRPKG+yaK2rGFl2rcdOcO24urY4p3eyB0ogqsRLvJbIxwjjYiWiIP7Eo1Cw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': + resolution: {integrity: sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.54': - resolution: {integrity: sha512-nGyLT1Qau0W+kEL44V2jhHmvfS3wyJW08E4WEu2E6NuIy+uChKN1X0aoxzFIDi2owDsYaZYez/98/f268EupIQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': + resolution: {integrity: sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.54': - resolution: {integrity: sha512-KH374P0TUjDXssROT/orvzaWrzGOptD13PTrltgKwbDprJTMknoLiYsOD6Ttz92O2VuAcCtFuJ1xbyFM2Uo/Xg==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': + resolution: {integrity: sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.54': - resolution: {integrity: sha512-oMAVO4wbfAbhpBxPsSp8R7ntL2DchpNfO+tGhN8/sI9jsbYwOv78uIW1fTwOBslhjTVFltGJ+l23mubNQcYNaQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.54': - resolution: {integrity: sha512-MYY/FmY+HehHiQkNx04W5oLy/Fqd1hXYqZmmorSDXvAHnxMbSgmdFicKsSYOg/sVGHBMEP1tTn6kV5sWrS45rA==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': + resolution: {integrity: sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.54': - resolution: {integrity: sha512-66o3uKxUmcYskT9exskxs3OVduXf5x0ndlMkYOjSpBgqzhLtkub136yDvZkNT1OkNDET0odSwcU7aWdpnwzAyg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': + resolution: {integrity: sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.54': - resolution: {integrity: sha512-FbbbrboChLBXfeEsOfaypBGqzbdJ/CcSA2BPLCggojnIHy58Jo+AXV7HATY8opZk7194rRbokIT8AfPJtZAWtg==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': + resolution: {integrity: sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.54': - resolution: {integrity: sha512-AHgcZ+w7RIRZ65ihSQL8YuoKcpD9Scew4sEeP1BBUT9QdTo6KjwHrZZXjID6nL10fhKessCH6OPany2QKwAwTQ==} + '@rolldown/pluginutils@1.0.0-beta.58': + resolution: {integrity: sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3184,122 +3199,260 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.55.1': + resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.53.5': resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.55.1': + resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.53.5': resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.55.1': + resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.53.5': resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.55.1': + resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.53.5': resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.55.1': + resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.53.5': resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.55.1': + resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.53.5': resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.53.5': resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.53.5': resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.55.1': + resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.53.5': resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.55.1': + resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.53.5': resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.55.1': + resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.55.1': + resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + cpu: [loong64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-ppc64-gnu@4.53.5': resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.55.1': + resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + cpu: [ppc64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-riscv64-gnu@4.53.5': resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.53.5': resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.55.1': + resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.53.5': resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.55.1': + resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.53.5': resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.55.1': + resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.53.5': resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.55.1': + resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.55.1': + resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + cpu: [x64] + os: [openbsd] + '@rollup/rollup-openharmony-arm64@4.53.5': resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.55.1': + resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.53.5': resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.55.1': + resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.53.5': resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.55.1': + resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.53.5': resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.55.1': + resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.53.5': resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.55.1': + resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.54.0': resolution: {integrity: sha512-CeEdHzNY+ZIR6NWpIOiJuCrr6tTK7cRGeOf6GYg5f73+UwJLqn5a4d5Ovf/hOWDyHM1KcySbxHQESJ9krhe0+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3664,39 +3817,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.50.0': - resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} + '@typescript-eslint/eslint-plugin@8.52.0': + resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.0 + '@typescript-eslint/parser': ^8.52.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.0': - resolution: {integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==} + '@typescript-eslint/parser@8.52.0': + resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.0': - resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} + '@typescript-eslint/project-service@8.52.0': + resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.0': - resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} + '@typescript-eslint/scope-manager@8.52.0': + resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.0': - resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} + '@typescript-eslint/tsconfig-utils@8.52.0': + resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.0': - resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} + '@typescript-eslint/type-utils@8.52.0': + resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3706,21 +3859,25 @@ packages: resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.0': - resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} + '@typescript-eslint/types@8.52.0': + resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.52.0': + resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.0': - resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} + '@typescript-eslint/utils@8.52.0': + resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.0': - resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} + '@typescript-eslint/visitor-keys@8.52.0': + resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.28': @@ -3808,20 +3965,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.15': - resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} + '@vitest/coverage-v8@4.0.16': + resolution: {integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==} peerDependencies: - '@vitest/browser': 4.0.15 - vitest: 4.0.15 + '@vitest/browser': 4.0.16 + vitest: 4.0.16 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.15': - resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} + '@vitest/expect@4.0.16': + resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} - '@vitest/mocker@4.0.15': - resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} + '@vitest/mocker@4.0.16': + resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3831,20 +3988,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.15': - resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} + '@vitest/pretty-format@4.0.16': + resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} - '@vitest/runner@4.0.15': - resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} + '@vitest/runner@4.0.16': + resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} - '@vitest/snapshot@4.0.15': - resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} + '@vitest/snapshot@4.0.16': + resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} - '@vitest/spy@4.0.15': - resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} + '@vitest/spy@4.0.16': + resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} - '@vitest/utils@4.0.15': - resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} + '@vitest/utils@4.0.16': + resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -4036,8 +4193,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.46.0: - resolution: {integrity: sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==} + algoliasearch@5.46.2: + resolution: {integrity: sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -5204,13 +5361,13 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - esbuild-wasm@0.27.1: - resolution: {integrity: sha512-NjueSyuuMjX6F/mnqQ8g4rkwAFTct7JT/A/oXjXhGTFbWiTm3zU59BMulOrT+KuCHj+oShTBARQCxCDDvVxwFA==} + esbuild-wasm@0.27.2: + resolution: {integrity: sha512-eUTnl8eh+v8UZIZh4MrMOKDAc8Lm7+NqP3pyuTORGFY1s/o9WoiJgKnwXy+te2J3hX7iRbFSHEyig7GsPeeJyw==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -5831,9 +5988,9 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} @@ -6397,8 +6554,8 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdom@27.3.0: - resolution: {integrity: sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==} + jsdom@27.4.0: + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -7793,8 +7950,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.54: - resolution: {integrity: sha512-3lIvjCWgjPL3gmiATUdV1NeVBGJZy6FdtwgLPol25tAkn46Q/MsVGfCSNswXwFOxGrxglPaN20IeALSIFuFyEg==} + rolldown@1.0.0-beta.58: + resolution: {integrity: sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7824,6 +7981,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.55.1: + resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} + 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'} @@ -7887,8 +8049,8 @@ packages: webpack: optional: true - sass@1.97.0: - resolution: {integrity: sha512-KR0igP1z4avUJetEuIeOdDlwaUDvkH8wSx7FdSjyYBS3dpyX3TzHfAMO0G1Q4/3cdjcmi3r7idh+KCmKqS+KeQ==} + sass@1.97.1: + resolution: {integrity: sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==} engines: {node: '>=14.0.0'} hasBin: true @@ -8460,8 +8622,8 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -8593,8 +8755,8 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - undici@7.16.0: - resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} + undici@7.18.0: + resolution: {integrity: sha512-CfPufgPFHCYu0W4h1NiKW9+tNJ39o3kWm7Cm29ET1enSJx+AERfz7A2wAr26aY0SZbYzZlTBQtcHy15o60VZfQ==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -8762,18 +8924,18 @@ packages: yaml: optional: true - vitest@4.0.15: - resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} + vitest@4.0.16: + resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.15 - '@vitest/browser-preview': 4.0.15 - '@vitest/browser-webdriverio': 4.0.15 - '@vitest/ui': 4.0.15 + '@vitest/browser-playwright': 4.0.16 + '@vitest/browser-preview': 4.0.16 + '@vitest/browser-webdriverio': 4.0.16 + '@vitest/ui': 4.0.16 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8804,8 +8966,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + watchpack@2.5.0: + resolution: {integrity: sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -8884,8 +9046,8 @@ packages: html-webpack-plugin: optional: true - webpack@5.104.0: - resolution: {integrity: sha512-5DeICTX8BVgNp6afSPYXAFjskIgWGlygQH58bcozPOXgo2r/6xx39Y1+cULZ3gTxUYQP88jmwLj2anu4Xaq84g==} + webpack@5.104.1: + resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -8902,11 +9064,6 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} @@ -9161,8 +9318,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.2.1: - resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} + zod@4.3.5: + resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} zone.js@0.16.0: resolution: {integrity: sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==} @@ -9187,89 +9344,89 @@ snapshots: '@actions/io@2.0.0': {} - '@algolia/abtesting@1.12.0': + '@algolia/abtesting@1.12.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-abtesting@5.46.0': + '@algolia/client-abtesting@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-analytics@5.46.0': + '@algolia/client-analytics@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-common@5.46.0': {} + '@algolia/client-common@5.46.2': {} - '@algolia/client-insights@5.46.0': + '@algolia/client-insights@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-personalization@5.46.0': + '@algolia/client-personalization@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-query-suggestions@5.46.0': + '@algolia/client-query-suggestions@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-search@5.46.0': + '@algolia/client-search@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/ingestion@1.46.0': + '@algolia/ingestion@1.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/monitoring@1.46.0': + '@algolia/monitoring@1.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/recommend@5.46.0': + '@algolia/recommend@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/requester-browser-xhr@5.46.0': + '@algolia/requester-browser-xhr@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 + '@algolia/client-common': 5.46.2 - '@algolia/requester-fetch@5.46.0': + '@algolia/requester-fetch@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 + '@algolia/client-common': 5.46.2 - '@algolia/requester-node-http@5.46.0': + '@algolia/requester-node-http@5.46.2': dependencies: - '@algolia/client-common': 5.46.0 + '@algolia/client-common': 5.46.2 '@ampproject/remapping@2.3.0': dependencies: @@ -9354,11 +9511,11 @@ 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/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.33.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.33.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) '@inquirer/prompts': 8.1.0(@types/node@24.10.4) '@inquirer/type': 4.0.2(@types/node@24.10.4) '@octokit/auth-app': 8.1.2 @@ -10215,82 +10372,82 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.27.1': + '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/android-arm64@0.27.1': + '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/android-arm@0.27.1': + '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/android-x64@0.27.1': + '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.27.1': + '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/darwin-x64@0.27.1': + '@esbuild/darwin-x64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.27.1': + '@esbuild/freebsd-arm64@0.27.2': optional: true - '@esbuild/freebsd-x64@0.27.1': + '@esbuild/freebsd-x64@0.27.2': optional: true - '@esbuild/linux-arm64@0.27.1': + '@esbuild/linux-arm64@0.27.2': optional: true - '@esbuild/linux-arm@0.27.1': + '@esbuild/linux-arm@0.27.2': optional: true - '@esbuild/linux-ia32@0.27.1': + '@esbuild/linux-ia32@0.27.2': optional: true - '@esbuild/linux-loong64@0.27.1': + '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.27.1': + '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-ppc64@0.27.1': + '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.27.1': + '@esbuild/linux-riscv64@0.27.2': optional: true - '@esbuild/linux-s390x@0.27.1': + '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/linux-x64@0.27.1': + '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.27.1': + '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/netbsd-x64@0.27.1': + '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.27.1': + '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/openbsd-x64@0.27.1': + '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/openharmony-arm64@0.27.1': + '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/sunos-x64@0.27.1': + '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/win32-arm64@0.27.1': + '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/win32-ia32@0.27.1': + '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/win32-x64@0.27.1': + '@esbuild/win32-x64@0.27.2': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': @@ -10298,6 +10455,11 @@ snapshots: eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': + dependencies: + eslint: 9.39.2(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.2': {} '@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))': @@ -10349,6 +10511,8 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.8.0': {} + '@fastify/busboy@2.1.1': {} '@firebase/ai@2.6.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': @@ -10730,12 +10894,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.33.0(@modelcontextprotocol/sdk@1.25.0(zod@4.2.1))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.33.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - '@modelcontextprotocol/sdk': 1.25.0(zod@4.2.1) + '@modelcontextprotocol/sdk': 1.25.1(zod@4.3.5) transitivePeerDependencies: - bufferutil - supports-color @@ -11143,7 +11307,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.25.0(zod@4.2.1)': + '@modelcontextprotocol/sdk@1.25.1(zod@4.3.5)': dependencies: '@hono/node-server': 1.19.7 ajv: 8.17.1 @@ -11159,8 +11323,8 @@ snapshots: json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 4.2.1 - zod-to-json-schema: 3.25.0(zod@4.2.1) + zod: 4.3.5 + zod-to-json-schema: 3.25.0(zod@4.3.5) transitivePeerDependencies: - hono - supports-color @@ -11264,7 +11428,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.1.0': + '@napi-rs/wasm-runtime@1.1.1': dependencies: '@emnapi/core': 1.7.1 '@emnapi/runtime': 1.7.1 @@ -11474,7 +11638,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.38.0': {} - '@oxc-project/types@0.102.0': {} + '@oxc-project/types@0.106.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11600,56 +11764,56 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.54': + '@rolldown/binding-android-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.54': + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.54': + '@rolldown/binding-darwin-x64@1.0.0-beta.58': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.54': + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.54': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.54': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.54': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.54': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.54': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.54': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.54': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.54': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.54': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': optional: true - '@rolldown/pluginutils@1.0.0-beta.54': {} + '@rolldown/pluginutils@1.0.0-beta.58': {} - '@rollup/plugin-alias@6.0.0(rollup@4.53.5)': + '@rollup/plugin-alias@6.0.0(rollup@4.55.1)': optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 - '@rollup/plugin-commonjs@29.0.0(rollup@4.53.5)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.55.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11657,7 +11821,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 '@rollup/plugin-json@6.1.0(rollup@4.53.5)': dependencies: @@ -11665,33 +11829,39 @@ snapshots: optionalDependencies: rollup: 4.53.5 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.5)': + '@rollup/plugin-json@6.1.0(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.55.1) + optionalDependencies: + rollup: 4.55.1 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.55.1)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.55.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.5)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) + '@rollup/pluginutils': 5.3.0(rollup@4.55.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 - '@rollup/pluginutils@5.2.0(rollup@4.53.5)': + '@rollup/pluginutils@5.2.0(rollup@4.55.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 '@rollup/pluginutils@5.3.0(rollup@4.53.5)': dependencies: @@ -11701,72 +11871,155 @@ snapshots: optionalDependencies: rollup: 4.53.5 + '@rollup/pluginutils@5.3.0(rollup@4.55.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.55.1 + '@rollup/rollup-android-arm-eabi@4.53.5': optional: true + '@rollup/rollup-android-arm-eabi@4.55.1': + optional: true + '@rollup/rollup-android-arm64@4.53.5': optional: true + '@rollup/rollup-android-arm64@4.55.1': + optional: true + '@rollup/rollup-darwin-arm64@4.53.5': optional: true + '@rollup/rollup-darwin-arm64@4.55.1': + optional: true + '@rollup/rollup-darwin-x64@4.53.5': optional: true + '@rollup/rollup-darwin-x64@4.55.1': + optional: true + '@rollup/rollup-freebsd-arm64@4.53.5': optional: true + '@rollup/rollup-freebsd-arm64@4.55.1': + optional: true + '@rollup/rollup-freebsd-x64@4.53.5': optional: true + '@rollup/rollup-freebsd-x64@4.55.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.53.5': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.53.5': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.53.5': optional: true + '@rollup/rollup-linux-arm64-gnu@4.55.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.53.5': optional: true + '@rollup/rollup-linux-arm64-musl@4.55.1': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.53.5': optional: true + '@rollup/rollup-linux-loong64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.55.1': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.53.5': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.55.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.53.5': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.53.5': optional: true + '@rollup/rollup-linux-riscv64-musl@4.55.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.53.5': optional: true + '@rollup/rollup-linux-s390x-gnu@4.55.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.53.5': optional: true + '@rollup/rollup-linux-x64-gnu@4.55.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.53.5': optional: true + '@rollup/rollup-linux-x64-musl@4.55.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.55.1': + optional: true + '@rollup/rollup-openharmony-arm64@4.53.5': optional: true + '@rollup/rollup-openharmony-arm64@4.55.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.53.5': optional: true + '@rollup/rollup-win32-arm64-msvc@4.55.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.53.5': optional: true + '@rollup/rollup-win32-ia32-msvc@4.55.1': + optional: true + '@rollup/rollup-win32-x64-gnu@4.53.5': optional: true + '@rollup/rollup-win32-x64-gnu@4.55.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.53.5': optional: true + '@rollup/rollup-win32-x64-msvc@4.55.1': + optional: true + '@rollup/wasm-node@4.54.0': dependencies: '@types/estree': 1.0.8 @@ -12053,10 +12306,10 @@ snapshots: '@types/less@3.0.8': {} - '@types/loader-utils@3.0.0(esbuild@0.27.1)': + '@types/loader-utils@3.0.0(esbuild@0.27.2)': dependencies: '@types/node': 22.19.3 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12210,95 +12463,97 @@ snapshots: '@types/node': 22.19.3 optional: true - '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.52.0 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.52.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.0': + '@typescript-eslint/scope-manager@8.52.0': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.2(jiti@2.6.1) - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.50.0': {} - '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': + '@typescript-eslint/types@8.52.0': {} + + '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 debug: 4.4.3(supports-color@10.2.2) minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.0': + '@typescript-eslint/visitor-keys@8.52.0': dependencies: - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.52.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.28': @@ -12458,14 +12713,14 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.15 + '@vitest/utils': 4.0.16 ast-v8-to-istanbul: 0.3.9 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -12475,47 +12730,47 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.15': + '@vitest/expect@4.0.16': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.15 + '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@4.0.15': + '@vitest/pretty-format@4.0.16': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.15': + '@vitest/runner@4.0.16': dependencies: - '@vitest/utils': 4.0.15 + '@vitest/utils': 4.0.16 pathe: 2.0.3 - '@vitest/snapshot@4.0.15': + '@vitest/snapshot@4.0.16': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.0.16 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.15': {} + '@vitest/spy@4.0.16': {} - '@vitest/utils@4.0.15': + '@vitest/utils@4.0.16': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.0.16 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -12551,11 +12806,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.53.5) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.55.1) '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.53.5 + rollup: 4.55.1 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -12855,22 +13110,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.46.0: - dependencies: - '@algolia/abtesting': 1.12.0 - '@algolia/client-abtesting': 5.46.0 - '@algolia/client-analytics': 5.46.0 - '@algolia/client-common': 5.46.0 - '@algolia/client-insights': 5.46.0 - '@algolia/client-personalization': 5.46.0 - '@algolia/client-query-suggestions': 5.46.0 - '@algolia/client-search': 5.46.0 - '@algolia/ingestion': 1.46.0 - '@algolia/monitoring': 1.46.0 - '@algolia/recommend': 5.46.0 - '@algolia/requester-browser-xhr': 5.46.0 - '@algolia/requester-fetch': 5.46.0 - '@algolia/requester-node-http': 5.46.0 + algoliasearch@5.46.2: + dependencies: + '@algolia/abtesting': 1.12.2 + '@algolia/client-abtesting': 5.46.2 + '@algolia/client-analytics': 5.46.2 + '@algolia/client-common': 5.46.2 + '@algolia/client-insights': 5.46.2 + '@algolia/client-personalization': 5.46.2 + '@algolia/client-query-suggestions': 5.46.2 + '@algolia/client-search': 5.46.2 + '@algolia/ingestion': 1.46.2 + '@algolia/monitoring': 1.46.2 + '@algolia/recommend': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 ansi-colors@4.1.3: {} @@ -13034,11 +13289,11 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.0(esbuild@0.27.1)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: @@ -13644,14 +13899,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.1(webpack@5.104.0(esbuild@0.27.1)): + copy-webpack-plugin@13.0.1(webpack@5.104.1(esbuild@0.27.2)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 tinyglobby: 0.2.15 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) core-js-compat@3.47.0: dependencies: @@ -13695,7 +13950,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.104.0(esbuild@0.27.1)): + css-loader@7.1.2(webpack@5.104.1(esbuild@0.27.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -13706,7 +13961,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) css-select@6.0.0: dependencies: @@ -14158,36 +14413,36 @@ snapshots: dependencies: es6-promise: 4.2.8 - esbuild-wasm@0.27.1: {} + esbuild-wasm@0.27.2: {} - esbuild@0.27.1: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -14217,11 +14472,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14231,7 +14486,7 @@ snapshots: dependencies: eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14242,7 +14497,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14254,7 +14509,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14500,7 +14755,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15049,9 +15304,11 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-encoding-sniffer@4.0.0: + html-encoding-sniffer@6.0.0: dependencies: - whatwg-encoding: 3.1.1 + '@exodus/bytes': 1.8.0 + transitivePeerDependencies: + - '@exodus/crypto' html-entities@2.6.0: {} @@ -15611,14 +15868,15 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@acemir/cssom': 0.9.29 '@asamuzakjp/dom-selector': 6.7.6 + '@exodus/bytes': 1.8.0 cssstyle: 5.3.5 data-urls: 6.0.0 decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 + html-encoding-sniffer: 6.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) is-potential-custom-element-name: 1.0.1 @@ -15628,12 +15886,12 @@ snapshots: tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.0 - whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) xml-name-validator: 5.0.0 transitivePeerDependencies: + - '@exodus/crypto' - bufferutil - supports-color - utf-8-validate @@ -15867,11 +16125,11 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.4.2)(webpack@5.104.0(esbuild@0.27.1)): + less-loader@12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)): dependencies: less: 4.4.2 optionalDependencies: - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) less@4.4.2: dependencies: @@ -15892,11 +16150,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.104.0(esbuild@0.27.1)): + license-webpack-plugin@4.0.2(webpack@5.104.1(esbuild@0.27.2)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) lie@3.3.0: dependencies: @@ -16141,11 +16399,11 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.104.0(esbuild@0.27.1)): + mini-css-extract-plugin@2.9.4(webpack@5.104.1(esbuild@0.27.2)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) minimalistic-assert@1.0.1: {} @@ -16291,7 +16549,7 @@ snapshots: chokidar: 4.0.3 commander: 14.0.2 dependency-graph: 1.0.0 - esbuild: 0.27.1 + esbuild: 0.27.2 find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 @@ -16301,7 +16559,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.3.0(rollup@4.53.5)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.97.0 + sass: 1.97.1 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -16785,14 +17043,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.0(esbuild@0.27.1)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - typescript @@ -17247,24 +17505,24 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-beta.54: + rolldown@1.0.0-beta.58: dependencies: - '@oxc-project/types': 0.102.0 - '@rolldown/pluginutils': 1.0.0-beta.54 + '@oxc-project/types': 0.106.0 + '@rolldown/pluginutils': 1.0.0-beta.58 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.54 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.54 - '@rolldown/binding-darwin-x64': 1.0.0-beta.54 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.54 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.54 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.54 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.54 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.54 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.54 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.54 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.54 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.54 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.54 + '@rolldown/binding-android-arm64': 1.0.0-beta.58 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.58 + '@rolldown/binding-darwin-x64': 1.0.0-beta.58 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.58 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.58 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.58 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.58 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.58 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.58 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.58 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.58 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.58 rollup-license-plugin@3.1.0: dependencies: @@ -17281,10 +17539,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.3)(rollup@4.53.5): + rollup-plugin-dts@6.3.0(rollup@4.55.1)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.5) - rollup: 4.53.5 + magic-string: 0.30.21 + rollup: 4.55.1 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.27.1 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.3)(rollup@4.55.1): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.55.1) + rollup: 4.55.1 optionalDependencies: '@types/node': 22.19.3 @@ -17316,6 +17582,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.53.5 fsevents: 2.3.3 + rollup@4.55.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.55.1 + '@rollup/rollup-android-arm64': 4.55.1 + '@rollup/rollup-darwin-arm64': 4.55.1 + '@rollup/rollup-darwin-x64': 4.55.1 + '@rollup/rollup-freebsd-arm64': 4.55.1 + '@rollup/rollup-freebsd-x64': 4.55.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 + '@rollup/rollup-linux-arm-musleabihf': 4.55.1 + '@rollup/rollup-linux-arm64-gnu': 4.55.1 + '@rollup/rollup-linux-arm64-musl': 4.55.1 + '@rollup/rollup-linux-loong64-gnu': 4.55.1 + '@rollup/rollup-linux-loong64-musl': 4.55.1 + '@rollup/rollup-linux-ppc64-gnu': 4.55.1 + '@rollup/rollup-linux-ppc64-musl': 4.55.1 + '@rollup/rollup-linux-riscv64-gnu': 4.55.1 + '@rollup/rollup-linux-riscv64-musl': 4.55.1 + '@rollup/rollup-linux-s390x-gnu': 4.55.1 + '@rollup/rollup-linux-x64-gnu': 4.55.1 + '@rollup/rollup-linux-x64-musl': 4.55.1 + '@rollup/rollup-openbsd-x64': 4.55.1 + '@rollup/rollup-openharmony-arm64': 4.55.1 + '@rollup/rollup-win32-arm64-msvc': 4.55.1 + '@rollup/rollup-win32-ia32-msvc': 4.55.1 + '@rollup/rollup-win32-x64-gnu': 4.55.1 + '@rollup/rollup-win32-x64-msvc': 4.55.1 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -17365,14 +17662,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.97.0)(webpack@5.104.0(esbuild@0.27.1)): + sass-loader@16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.97.0 - webpack: 5.104.0(esbuild@0.27.1) + sass: 1.97.1 + webpack: 5.104.1(esbuild@0.27.2) - sass@1.97.0: + sass@1.97.1: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -17690,11 +17987,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.104.0(esbuild@0.27.1)): + source-map-loader@5.0.0(webpack@5.104.1(esbuild@0.27.2)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) source-map-support@0.4.18: dependencies: @@ -17986,16 +18283,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.16(esbuild@0.27.1)(webpack@5.104.0(esbuild@0.27.1)): + terser-webpack-plugin@5.3.16(esbuild@0.27.2)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.1 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) optionalDependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 terser@5.44.1: dependencies: @@ -18099,7 +18396,7 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -18134,7 +18431,7 @@ snapshots: tsx@4.21.0: dependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -18244,7 +18541,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.16.0: {} + undici@7.18.0: {} unenv@1.10.0: dependencies: @@ -18410,9 +18707,9 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -18423,20 +18720,20 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.97.0 + sass: 1.97.1 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.15 - '@vitest/runner': 4.0.15 - '@vitest/snapshot': 4.0.15 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 + '@vitest/expect': 4.0.16 + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.16 + '@vitest/runner': 4.0.16 + '@vitest/snapshot': 4.0.16 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 es-module-lexer: 1.7.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -18448,12 +18745,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.4 - jsdom: 27.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + jsdom: 27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti - less @@ -18473,7 +18770,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - watchpack@2.4.4: + watchpack@2.5.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -18516,7 +18813,7 @@ snapshots: webidl-conversions@8.0.0: {} - webpack-dev-middleware@7.4.5(webpack@5.104.0(esbuild@0.27.1)): + webpack-dev-middleware@7.4.5(webpack@5.104.1(esbuild@0.27.2)): dependencies: colorette: 2.0.20 memfs: 4.51.1 @@ -18525,9 +18822,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.0(esbuild@0.27.1)): + webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18555,10 +18852,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.104.0(esbuild@0.27.1)) + webpack-dev-middleware: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - bufferutil - debug @@ -18573,12 +18870,12 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.104.0(esbuild@0.27.1)): + webpack-subresource-integrity@5.1.0(webpack@5.104.1(esbuild@0.27.2)): dependencies: typed-assert: 1.0.9 - webpack: 5.104.0(esbuild@0.27.1) + webpack: 5.104.1(esbuild@0.27.2) - webpack@5.104.0(esbuild@0.27.1): + webpack@5.104.1(esbuild@0.27.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -18602,8 +18899,8 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(esbuild@0.27.1)(webpack@5.104.0(esbuild@0.27.1)) - watchpack: 2.4.4 + terser-webpack-plugin: 5.3.16(esbuild@0.27.2)(webpack@5.104.1(esbuild@0.27.2)) + watchpack: 2.5.0 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' @@ -18618,10 +18915,6 @@ snapshots: websocket-extensions@0.1.4: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-mimetype@4.0.0: {} whatwg-url@14.2.0: @@ -18858,12 +19151,12 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.0(zod@4.2.1): + zod-to-json-schema@3.25.0(zod@4.3.5): dependencies: - zod: 4.2.1 + zod: 4.3.5 zod@3.25.76: {} - zod@4.2.1: {} + zod@4.3.5: {} zone.js@0.16.0: {} From 1638f76154ab53653ffe102548604fb2ad8c6633 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 25 Dec 2025 06:07:40 +0000 Subject: [PATCH 2044/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 10 ++--- MODULE.bazel.lock | 104 +++++++++++++++++++++++++++------------------- 2 files changed, 67 insertions(+), 47 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index b4bf8a27a1aa..334bb955e55b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -5,13 +5,13 @@ module( ) bazel_dep(name = "platforms", version = "1.0.0") -bazel_dep(name = "yq.bzl", version = "0.3.2") +bazel_dep(name = "yq.bzl", version = "0.3.4") bazel_dep(name = "rules_nodejs", version = "6.6.2") bazel_dep(name = "aspect_rules_js", version = "2.8.3") bazel_dep(name = "aspect_rules_ts", version = "3.8.1") -bazel_dep(name = "rules_pkg", version = "1.1.0") -bazel_dep(name = "rules_cc", version = "0.2.15") -bazel_dep(name = "aspect_bazel_lib", version = "2.22.0") +bazel_dep(name = "rules_pkg", version = "1.2.0") +bazel_dep(name = "rules_cc", version = "0.2.16") +bazel_dep(name = "aspect_bazel_lib", version = "2.22.2") bazel_dep(name = "bazel_skylib", version = "1.9.0") bazel_dep(name = "aspect_rules_esbuild", version = "0.25.0") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.2") @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "8ef3e996d5fc040a35770f860987d8b9cad8ef3d", + commit = "5f0e50d17d15c70e6ab5546f1659338ae94c4072", remote = "https://github.com/devversion/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 1f9bb1615d4e..2143d7c6df94 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -15,7 +15,8 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "7fe0191f047d4fe4a4a46c1107e2350cbb58a8fc2e10913aa4322d3190dec0bf", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/source.json": "369df5b7f2eae82f200fff95cf1425f90dee90a0d0948122060b48150ff0e224", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/MODULE.bazel": "6b735f3fdd64978e217c9725f4ff0d84bf606554c8e77d20e90977841d7ff2ed", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/source.json": "58fffa2d722cff47cb8d921c8bbed7701c53f233009d9ca82beb4a0fb8fb9418", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", @@ -120,8 +121,8 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.2.15/MODULE.bazel": "6a0a4a75a57aa6dc888300d848053a58c6b12a29f89d4304e1c41448514ec6e8", - "https://bcr.bazel.build/modules/rules_cc/0.2.15/source.json": "197965c6dcca5c98a9288f93849e2e1c69d622e71b0be8deb524e22d48c88e32", + "https://bcr.bazel.build/modules/rules_cc/0.2.16/MODULE.bazel": "9242fa89f950c6ef7702801ab53922e99c69b02310c39fb6e62b2bd30df2a1d4", + "https://bcr.bazel.build/modules/rules_cc/0.2.16/source.json": "d03d5cde49376d87e14ec14b666c56075e5e3926930327fd5d0484a1ff2ac1cc", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", @@ -163,7 +164,8 @@ "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", "https://bcr.bazel.build/modules/rules_pkg/1.1.0/MODULE.bazel": "9db8031e71b6ef32d1846106e10dd0ee2deac042bd9a2de22b4761b0c3036453", - "https://bcr.bazel.build/modules/rules_pkg/1.1.0/source.json": "fef768df13a92ce6067e1cd0cdc47560dace01354f1d921cfb1d632511f7d608", + "https://bcr.bazel.build/modules/rules_pkg/1.2.0/MODULE.bazel": "c7db3c2b407e673c7a39e3625dc05dc9f12d6682cbd82a3a5924a13b491eda7e", + "https://bcr.bazel.build/modules/rules_pkg/1.2.0/source.json": "9062e00845bf91a4247465d371baa837adf9b6ff44c542f73ba084f07667e1dc", "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", @@ -199,7 +201,8 @@ "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", "https://bcr.bazel.build/modules/yq.bzl/0.2.0/MODULE.bazel": "6f3a675677db8885be4d607fde14cc51829715e3a879fb016eb9bf336786ce6d", "https://bcr.bazel.build/modules/yq.bzl/0.3.2/MODULE.bazel": "0384efa70e8033d842ea73aa4b7199fa099709e236a7264345c03937166670b6", - "https://bcr.bazel.build/modules/yq.bzl/0.3.2/source.json": "c4ec3e192477e154f08769e29d69e8fd36e8a4f0f623997f3e1f6f7d328f7d7d", + "https://bcr.bazel.build/modules/yq.bzl/0.3.4/MODULE.bazel": "d3a270662f5d766cd7229732d65a5a5bc485240c3007343dd279edfb60c9ae27", + "https://bcr.bazel.build/modules/yq.bzl/0.3.4/source.json": "786dafdc2843722da3416e4343ee1a05237227f068590779a6e8496a2064c0f9", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", @@ -209,7 +212,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "0aod3RK04ALA/OKTExzd7QqyeqcC4O2GWuDwUxhQHp4=", + "bzlTransitiveDigest": "9odiC0alKLq5PUYv/CZiw2yiMHsGpxvEhPsqt//fRRk=", "usagesDigest": "ToTaCONCN/E05krnHXLM1kpV1zrHNxHrGpUip973II4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -315,6 +318,11 @@ } }, "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_lib", + "bazel_lib+" + ], [ "aspect_bazel_lib+", "bazel_skylib", @@ -405,7 +413,7 @@ }, "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "tQ+7EwLfQwqi/T4v5/N3NNHTmP6Wu/FqXxRDndEB2OU=", + "bzlTransitiveDigest": "zVV86HvMwDBJ8IsFt27k/Sjq0vCMPr8b8X9OAuprQ6w=", "usagesDigest": "fkR8y929BQ1GFezNYBR/HXJUcMa3NtJvhzsZrG8I9vI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -464,6 +472,11 @@ } }, "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_lib", + "bazel_lib+" + ], [ "aspect_bazel_lib+", "bazel_skylib", @@ -722,7 +735,7 @@ }, "@@rules_browsers+//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "ljZlVgWkQJnI6EvlHVfYit2EttUE52gDTbvmota5YO8=", + "bzlTransitiveDigest": "agkaLQ8wE1r/5IX6pkERzFxI/z0M42Em+ICNO6TXsVo=", "usagesDigest": "FS7q5WaIwg3KirS3njhuPFkTIBYvDaTInVGrlzu0XL8=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -731,9 +744,9 @@ "rules_browsers_chrome_linux": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "1419fa328bd7ea2697f26412ec693867516e4ef23c32eb13143a0b0b179b604b", + "sha256": "0a2ff0fc9eb5958b7b420f20e3968f424be7423fef89739e71565a48aa073a57", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -749,9 +762,9 @@ "rules_browsers_chrome_mac": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "792cbf9b77219b4476e41c49647bcd15e55f0988002fa1e4e6a720eb430c7eda", + "sha256": "e6076b1201d86f74c5eab982a239d5af83e66b1aa4d780bcb792698790e01d87", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -767,9 +780,9 @@ "rules_browsers_chrome_mac_arm": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "f0c1917769775e826dfa69936381d0d95b06fe67cf631ecd842380d5de0e4c7f", + "sha256": "b74dbcf5543d916b02d0a133e2e7c6a4de251f06733f72c2c15ea8c42213f63b", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -785,9 +798,9 @@ "rules_browsers_chrome_win64": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "6ce0f20dd743a804890f45f5349370e1aa7cd3ac3482c04686fcff5fafd01bb3", + "sha256": "df1e612dc3b1615e182a1f11821052995913c39df37caa52699de21a68d030d2", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -803,9 +816,9 @@ "rules_browsers_chromedriver_linux": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "baf4bf9d22881265487732f17d35a49e9aadd0837aa5c1c1eea520c8aa24a97f", + "sha256": "69c504306399d979a2766fea603c3fb9d3d87d46c75bddc9f2a049b4f636d57c", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -819,9 +832,9 @@ "rules_browsers_chromedriver_mac": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "87560768d5aa203b37c0a1b8459a35b05e4ece54afee2df530f3bc33de4f63c5", + "sha256": "5fc9d6f594fc5f2568a15145f25116dd8e9c9a60baa8da4bb21a17650fb00e7e", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -835,9 +848,9 @@ "rules_browsers_chromedriver_mac_arm": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "99821795fa7c87eb92fb15248e23b237c83f397486d22ad9a10771622c36a5a0", + "sha256": "14e92294c2c3639ca4e7d27e850588b619d698e2f8905cee368f07db2e1bf1e9", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -851,9 +864,9 @@ "rules_browsers_chromedriver_win64": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "6e180e234a710c3cbf69566f64a662ed85473db6ae82275fd359f80ab288df99", + "sha256": "cf641d2e176db95bcc158cd90eafd347ad4928fa0458a5f3bfd56c6d983e70db", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/144.0.7531.0/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/145.0.7586.0/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" @@ -867,9 +880,9 @@ "rules_browsers_firefox_linux": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "00fb922cda6bab971e02bcbfb77923b0a234388ed7d77c23506ca0a1a61d4a86", + "sha256": "8d56f479cc398a537a60a3fa20dca92d8a41925113d3a67f534881a4e4d7e344", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/145.0/linux-x86_64/en-US/firefox-145.0.tar.xz" + "https://archive.mozilla.org/pub/firefox/releases/146.0/linux-x86_64/en-US/firefox-146.0.tar.xz" ], "named_files": { "FIREFOX": "firefox/firefox" @@ -883,9 +896,9 @@ "rules_browsers_firefox_mac": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "1c4556480deac8424049f3081a6de1e2c6de619bab3e8ce53e5a497b8d6d919e", + "sha256": "4b1645313887972d466cd82166ea571485c2c40a167f84624e3f3ca739993cc9", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/145.0/mac/en-US/Firefox%20145.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/146.0/mac/en-US/Firefox%20146.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -899,9 +912,9 @@ "rules_browsers_firefox_mac_arm": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "1c4556480deac8424049f3081a6de1e2c6de619bab3e8ce53e5a497b8d6d919e", + "sha256": "4b1645313887972d466cd82166ea571485c2c40a167f84624e3f3ca739993cc9", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/145.0/mac/en-US/Firefox%20145.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/146.0/mac/en-US/Firefox%20146.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -915,9 +928,9 @@ "rules_browsers_firefox_win64": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "4b0345c113242653d923b369fcbd48e3089c57658f8c1542f887c8a375d50306", + "sha256": "216870c89648f32450cfefb5cec417fcd66d480d5dc83f894bf99f5fd7f38dbb", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/145.0/win64/en-US/Firefox%20Setup%20145.0.exe" + "https://archive.mozilla.org/pub/firefox/releases/146.0/win64/en-US/Firefox%20Setup%20146.0.exe" ], "named_files": { "FIREFOX": "core/firefox.exe" @@ -4383,8 +4396,8 @@ }, "@@yq.bzl+//yq:extensions.bzl%yq": { "general": { - "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", - "usagesDigest": "iZPDKVC6SAQMLLGWulzoS8hhxbx9Eh5DsJBUjn69u2Q=", + "bzlTransitiveDigest": "tDqk+ntWTdxNAWPDjRY1uITgHbti2jcXR5ZdinltBs0=", + "usagesDigest": "4oq89IijqhFzPJc0F7hJ32lOqQzIvApwF7B2cT0spTc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -4393,56 +4406,63 @@ "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "darwin_amd64", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_darwin_arm64": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "darwin_arm64", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_linux_amd64": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_amd64", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_linux_arm64": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_arm64", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_linux_s390x": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_s390x", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_linux_riscv64": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_riscv64", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_linux_ppc64le": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "linux_ppc64le", - "version": "4.45.1" + "version": "4.45.2" } }, "yq_windows_amd64": { "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", "attributes": { "platform": "windows_amd64", - "version": "4.45.1" + "version": "4.45.2" + } + }, + "yq_windows_arm64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_arm64", + "version": "4.45.2" } }, "yq_toolchains": { From 1f306631dfec92f130fd15a38dc0cd4053ffad43 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 19 Dec 2025 14:42:45 -0500 Subject: [PATCH 2045/2162] test: migrate build and misc E2E tests to Puppeteer Replaces the Protractor-based `ng e2e` execution with the new Puppeteer `executeBrowserTest` utility in various build and misc E2E tests. The following tests were updated: - auto-csp - worker - trusted-types This migration involves implementing custom `checkFn` logic to replicate the assertions previously handled by Protractor, such as verifying server-rendered content, console logs, and service worker states. --- tests/e2e/tests/build/auto-csp.ts | 99 +++++++++++++-------------- tests/e2e/tests/build/worker.ts | 42 +++++++----- tests/e2e/tests/misc/trusted-types.ts | 38 ++++------ 3 files changed, 86 insertions(+), 93 deletions(-) diff --git a/tests/e2e/tests/build/auto-csp.ts b/tests/e2e/tests/build/auto-csp.ts index 1839b160d549..f9e30efe2de9 100644 --- a/tests/e2e/tests/build/auto-csp.ts +++ b/tests/e2e/tests/build/auto-csp.ts @@ -1,9 +1,11 @@ -import assert from 'node:assert'; +import assert from 'node:assert/strict'; +import { setTimeout } from 'node:timers/promises'; import { getGlobalVariable } from '../../utils/env'; import { expectFileToMatch, writeFile, writeMultipleFiles } from '../../utils/fs'; import { findFreePort } from '../../utils/network'; import { execAndWaitForOutputToMatch, ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; const CSP_META_TAG = / `, - 'e2e/src/app.e2e-spec.ts': ` - import { browser, by, element } from 'protractor'; - import * as webdriver from 'selenium-webdriver'; - - function allConsoleWarnMessagesAndErrors() { - return browser - .manage() - .logs() - .get('browser') - .then(function (browserLog: any[]) { - const warnMessages: any[] = []; - browserLog.filter((logEntry) => { - const msg = logEntry.message; - console.log('>> ' + msg); - if (logEntry.level.value >= webdriver.logging.Level.INFO.value) { - warnMessages.push(msg); - } - }); - return warnMessages; - }); - } - - describe('Hello world E2E Tests', () => { - beforeAll(async () => { - await browser.waitForAngularEnabled(true); - }); - - it('should display: Welcome and run all scripts in order', async () => { - // Load the page without waiting for Angular since it is not bootstrapped automatically. - await browser.driver.get(browser.baseUrl); - - // Test the contents. - expect(await element(by.css('h1')).getText()).toMatch('Hello'); - - // Make sure all scripts ran and there were no client side errors. - const consoleMessages = await allConsoleWarnMessagesAndErrors(); - expect(consoleMessages.length).toEqual(4); // No additional errors - // Extract just the printed messages from the console data. - const printedMessages = consoleMessages.map(m => m.match(/"(.*?)"/)[1]); - expect(printedMessages).toEqual([ - // All messages printed in order because execution order is preserved. - "Inline Script Head", - "Inline Script Body: 1339", - "First External Script: 1338", - "Second External Script: 1337", - ]); - }); - }); - `, }); async function spawnServer(): Promise { @@ -137,7 +90,49 @@ export default async function () { // Make sure if contains the critical CSS inlining CSP code. await expectFileToMatch('dist/test-project/browser/index.html', 'ngCspMedia'); - // Make sure that our e2e protractor tests run to confirm that our angular project runs. + // Make sure that our e2e tests run to confirm that our angular project runs. const port = await spawnServer(); - await ng('e2e', `--base-url=http://localhost:${port}`, '--dev-server-target='); + await executeBrowserTest({ + baseUrl: `http://localhost:${port}/`, + checkFn: async (page) => { + const warnMessages: string[] = []; + page.on('console', (msg) => { + if (msg.type() === 'warning') { + warnMessages.push(msg.text()); + } + }); + + // Reload to ensure we capture messages from the start if needed, + // although executeBrowserTest already navigated. + await page.reload(); + + // Wait for the expected number of warnings + let retries = 50; + while (warnMessages.length < 4 && retries > 0) { + await setTimeout(100); + retries--; + } + + assert.strictEqual( + warnMessages.length, + 4, + `Expected 4 console warnings, but got ${warnMessages.length}:\n${warnMessages.join('\n')}`, + ); + + const expectedMessages = [ + 'Inline Script Head', + 'Inline Script Body: 1339', + 'First External Script: 1338', + 'Second External Script: 1337', + ]; + + for (let i = 0; i < expectedMessages.length; i++) { + if (!warnMessages[i].includes(expectedMessages[i])) { + assert.fail( + `Expected warning ${i} to include '${expectedMessages[i]}', but got '${warnMessages[i]}'`, + ); + } + } + }, + }); } diff --git a/tests/e2e/tests/build/worker.ts b/tests/e2e/tests/build/worker.ts index 53e60aa34772..be81aae7dfd4 100644 --- a/tests/e2e/tests/build/worker.ts +++ b/tests/e2e/tests/build/worker.ts @@ -8,10 +8,12 @@ import assert from 'node:assert/strict'; import { readdir } from 'node:fs/promises'; +import { setTimeout } from 'node:timers/promises'; import { getGlobalVariable } from '../../utils/env'; import { expectFileToExist, expectFileToMatch, replaceInFile, writeFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { expectToFail } from '../../utils/utils'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { const useWebpackBuilder = !getGlobalVariable('argv')['esbuild']; @@ -55,24 +57,32 @@ export default async function () { // https://github.com/angular/protractor/issues/2207 await replaceInFile('src/app/app.ts', 'console.log', 'console.warn'); - await writeFile( - 'e2e/app.e2e-spec.ts', - ` - import { AppPage } from './app.po'; - import { browser, logging } from 'protractor'; - describe('worker bundle', () => { - it('should log worker messages', async () => { - const page = new AppPage();; - page.navigateTo(); - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs.length).toEqual(1); - expect(logs[0].message).toContain('page got message: worker response to hello'); + await executeBrowserTest({ + checkFn: async (page) => { + const messages: string[] = []; + page.on('console', (msg) => { + messages.push(msg.text()); }); - }); - `, - ); - await ng('e2e'); + // Reload to ensure we capture messages from the start if needed, + // although executeBrowserTest already navigated. + await page.reload(); + + // Wait for the worker message + let retries = 50; + while ( + !messages.some((m) => m.includes('page got message: worker response to hello')) && + retries > 0 + ) { + await setTimeout(100); + retries--; + } + + if (!messages.some((m) => m.includes('page got message: worker response to hello'))) { + assert.fail(`Expected worker message not found in console. Got:\n${messages.join('\n')}`); + } + }, + }); } async function getWorkerOutputFile(useWebpackBuilder: boolean): Promise { diff --git a/tests/e2e/tests/misc/trusted-types.ts b/tests/e2e/tests/misc/trusted-types.ts index 325ee521fe6d..21deb03223dd 100644 --- a/tests/e2e/tests/misc/trusted-types.ts +++ b/tests/e2e/tests/misc/trusted-types.ts @@ -6,9 +6,11 @@ * found in the LICENSE file at https://angular.dev/license */ -import { replaceInFile, writeFile } from '../../utils/fs'; +import assert from 'node:assert/strict'; +import { replaceInFile } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; +import { executeBrowserTest } from '../../utils/puppeteer'; export default async function () { // Add lazy route. @@ -19,29 +21,6 @@ export default async function () { `routes: Routes = [{path: 'lazy', loadComponent: () => import('./lazy/lazy').then(c => c.Lazy)}];`, ); - // Add lazy route e2e - await writeFile( - 'e2e/src/app.e2e-spec.ts', - ` - import { browser, logging, element, by } from 'protractor'; - - describe('workspace-project App', () => { - it('should display lazy route', async () => { - await browser.get(browser.baseUrl + '/lazy'); - expect(await element(by.css('app-lazy p')).getText()).toEqual('lazy works!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser.manage().logs().get(logging.Type.BROWSER); - expect(logs).not.toContain(jasmine.objectContaining({ - level: logging.Level.SEVERE, - })); - }); - }); - `, - ); - const testCases = [ { aot: false, @@ -64,7 +43,16 @@ export default async function () { }); try { - await ng('e2e'); + await executeBrowserTest({ + checkFn: async (page) => { + const baseUrl = page.url(); + await page.goto(new URL('/lazy', baseUrl).href); + + await page.waitForSelector('app-lazy p'); + const lazyText = await page.$eval('app-lazy p', (el) => el.textContent); + assert.strictEqual(lazyText, 'lazy works!'); + }, + }); } catch (error) { console.error(`Test case AOT ${aot} with CSP header ${csp} failed.`); throw error; From 45e9cff88c6271815c71a72c659d565e8055a902 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 6 Jan 2026 18:07:57 +0000 Subject: [PATCH 2046/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 528 ++++++++++++------------------------------------- 1 file changed, 124 insertions(+), 404 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07db10eaa799..2dae4ae965e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -875,8 +875,8 @@ importers: packages: - '@acemir/cssom@0.9.29': - resolution: {integrity: sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA==} + '@acemir/cssom@0.9.30': + resolution: {integrity: sha512-9CnlMCI0LmCIq0olalQqdWrJHPzm0/tw3gzOA9zJSgvFX7Xau3D24mAGa4BtwxwY69nsuJW6kQqqCzf/mEcQgg==} '@actions/core@2.0.1': resolution: {integrity: sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==} @@ -1655,11 +1655,11 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@emnapi/core@1.7.1': - resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -1820,12 +1820,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3194,120 +3188,60 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.55.1': resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.55.1': resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.55.1': resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.55.1': resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.55.1': resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.1': resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.55.1': resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.55.1': resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.55.1': resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.55.1': resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] @@ -3320,12 +3254,6 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.55.1': resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} cpu: [ppc64] @@ -3338,60 +3266,30 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.55.1': resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.55.1': resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.55.1': resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.55.1': resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.55.1': resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] @@ -3403,58 +3301,33 @@ packages: cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.55.1': resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.55.1': resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.1': resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.1': resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.1': resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.54.0': - resolution: {integrity: sha512-CeEdHzNY+ZIR6NWpIOiJuCrr6tTK7cRGeOf6GYg5f73+UwJLqn5a4d5Ovf/hOWDyHM1KcySbxHQESJ9krhe0+A==} + '@rollup/wasm-node@4.55.1': + resolution: {integrity: sha512-GD+BSGH7+hVtNreVwv2JVxKImAdaDDrT9Ev0Bbr9CTATPjXjp7pQlRAqyZqNW3RGY37qL/RkF0HyO9ptJDU2pQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3855,10 +3728,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.50.0': - resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.52.0': resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4330,8 +4199,8 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.9: - resolution: {integrity: sha512-dSC6tJeOJxbZrPzPbv5mMd6CMiQ1ugaVXXPRad2fXUSsy1kstFn9XQWemV9VW7Y7kpxgQ/4WMoZfwdH8XSU48w==} + ast-v8-to-istanbul@0.3.10: + resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -4457,8 +4326,8 @@ packages: resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} hasBin: true - basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + basic-ftp@5.1.0: + resolution: {integrity: sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==} engines: {node: '>=10.0.0'} batch@0.6.1: @@ -4625,14 +4494,14 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001761: - resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} + caniuse-lite@1.0.30001762: + resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk-template@0.4.0: @@ -4944,8 +4813,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.5: - resolution: {integrity: sha512-GlsEptulso7Jg0VaOZ8BXQi3AkYM5BOJKEO/rjMidSCq70FkIC5y0eawrCXeYzxgt3OCf4Ls+eoxN+/05vN0Ag==} + cssstyle@5.3.6: + resolution: {integrity: sha512-legscpSpgSAeGEe0TNcai97DKt9Vd9AsAdOL7Uoetb52Ar/8eJm3LIa39qpv8wWzLFlNG4vVvppQM+teaMPj3A==} engines: {node: '>=20'} custom-event@1.0.1: @@ -5014,15 +4883,6 @@ packages: supports-color: optional: true - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -5268,15 +5128,15 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - engine.io-client@6.6.3: - resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + engine.io-client@6.6.4: + resolution: {integrity: sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - engine.io@6.6.4: - resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engine.io@6.6.5: + resolution: {integrity: sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A==} engines: {node: '>=10.2.0'} enhanced-resolve@5.18.4: @@ -5471,8 +5331,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -5599,8 +5459,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} @@ -7353,8 +7213,8 @@ packages: resolution: {integrity: sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==} engines: {node: '>=20'} - ordered-binary@1.6.0: - resolution: {integrity: sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==} + ordered-binary@1.6.1: + resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -7761,6 +7621,10 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + engines: {node: '>=0.6'} + qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} @@ -7976,11 +7840,6 @@ packages: '@types/node': optional: true - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.55.1: resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8217,19 +8076,19 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socket.io-adapter@2.5.5: - resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + socket.io-adapter@2.5.6: + resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} - socket.io-client@4.8.1: - resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} engines: {node: '>=10.0.0'} - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + socket.io-parser@4.2.5: + resolution: {integrity: sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==} engines: {node: '>=10.0.0'} - socket.io@4.8.1: - resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + socket.io@4.8.3: + resolution: {integrity: sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==} engines: {node: '>=10.2.0'} sockjs@0.3.24: @@ -8748,8 +8607,8 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.18.0: + resolution: {integrity: sha512-aLO7B+pYKuqcpapWdzhvzrjfm+qeiQNK3OILZAmlXJxgMfCsltOINMvNonA7nMMKiEjY1vAMA02O7u+eWym43w==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -9002,8 +8861,8 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webidl-conversions@8.0.0: - resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} webpack-dev-middleware@7.4.5: @@ -9162,18 +9021,6 @@ packages: utf-8-validate: optional: true - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -9202,8 +9049,8 @@ packages: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} - wsl-utils@0.3.0: - resolution: {integrity: sha512-3sFIGLiaDP7rTO4xh3g+b3AzhYDIUGGywE/WsmqzJWDxus5aJXVnPTNC/6L+r2WzrwXqVOdD262OaO+cEyPMSQ==} + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} engines: {node: '>=20'} xhr2@0.2.1: @@ -9310,8 +9157,8 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zod-to-json-schema@3.25.0: - resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==} + zod-to-json-schema@3.25.1: + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: zod: ^3.25 || ^4 @@ -9326,7 +9173,7 @@ packages: snapshots: - '@acemir/cssom@0.9.29': {} + '@acemir/cssom@0.9.30': {} '@actions/core@2.0.1': dependencies: @@ -10356,13 +10203,13 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@emnapi/core@1.7.1': + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.1': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -10450,11 +10297,6 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': - dependencies: - eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: eslint: 9.39.2(jiti@2.6.1) @@ -11324,7 +11166,7 @@ snapshots: pkce-challenge: 5.0.1 raw-body: 3.0.2 zod: 4.3.5 - zod-to-json-schema: 3.25.0(zod@4.3.5) + zod-to-json-schema: 3.25.1(zod@4.3.5) transitivePeerDependencies: - hono - supports-color @@ -11430,8 +11272,8 @@ snapshots: '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -11445,7 +11287,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@npmcli/agent@4.0.0': dependencies: @@ -11823,12 +11665,6 @@ snapshots: optionalDependencies: rollup: 4.55.1 - '@rollup/plugin-json@6.1.0(rollup@4.53.5)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) - optionalDependencies: - rollup: 4.53.5 - '@rollup/plugin-json@6.1.0(rollup@4.55.1)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.55.1) @@ -11863,14 +11699,6 @@ snapshots: optionalDependencies: rollup: 4.55.1 - '@rollup/pluginutils@5.3.0(rollup@4.53.5)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.53.5 - '@rollup/pluginutils@5.3.0(rollup@4.55.1)': dependencies: '@types/estree': 1.0.8 @@ -11879,148 +11707,82 @@ snapshots: optionalDependencies: rollup: 4.55.1 - '@rollup/rollup-android-arm-eabi@4.53.5': - optional: true - '@rollup/rollup-android-arm-eabi@4.55.1': optional: true - '@rollup/rollup-android-arm64@4.53.5': - optional: true - '@rollup/rollup-android-arm64@4.55.1': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': - optional: true - '@rollup/rollup-darwin-arm64@4.55.1': optional: true - '@rollup/rollup-darwin-x64@4.53.5': - optional: true - '@rollup/rollup-darwin-x64@4.55.1': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': - optional: true - '@rollup/rollup-freebsd-arm64@4.55.1': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': - optional: true - '@rollup/rollup-freebsd-x64@4.55.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': - optional: true - '@rollup/rollup-linux-arm64-musl@4.55.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true '@rollup/rollup-linux-loong64-musl@4.55.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.1': optional: true '@rollup/rollup-linux-ppc64-musl@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': - optional: true - '@rollup/rollup-linux-x64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': - optional: true - '@rollup/rollup-linux-x64-musl@4.55.1': optional: true '@rollup/rollup-openbsd-x64@4.55.1': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': - optional: true - '@rollup/rollup-openharmony-arm64@4.55.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': - optional: true - '@rollup/rollup-win32-x64-gnu@4.55.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': - optional: true - '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true - '@rollup/wasm-node@4.54.0': + '@rollup/wasm-node@4.55.1': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -12068,8 +11830,8 @@ snapshots: '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/types': 8.50.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/types': 8.52.0 eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -12335,11 +12097,11 @@ snapshots: '@types/node@22.19.3': dependencies: - undici-types: 7.16.0 + undici-types: 7.18.0 '@types/node@24.10.4': dependencies: - undici-types: 7.16.0 + undici-types: 7.18.0 '@types/npm-package-arg@6.1.4': {} @@ -12521,8 +12283,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.0': {} - '@typescript-eslint/types@8.52.0': {} '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': @@ -12721,7 +12481,7 @@ snapshots: dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.16 - ast-v8-to-istanbul: 0.3.9 + ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -12740,7 +12500,7 @@ snapshots: '@types/chai': 5.2.3 '@vitest/spy': 4.0.16 '@vitest/utils': 4.0.16 - chai: 6.2.1 + chai: 6.2.2 tinyrainbow: 3.0.3 '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': @@ -13248,7 +13008,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.9: + ast-v8-to-istanbul@0.3.10: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -13273,7 +13033,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001761 + caniuse-lite: 1.0.30001762 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -13364,7 +13124,7 @@ snapshots: baseline-browser-mapping@2.9.11: {} - basic-ftp@5.0.5: {} + basic-ftp@5.1.0: {} batch@0.6.1: {} @@ -13436,7 +13196,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.14.0 + qs: 6.14.1 raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 @@ -13451,7 +13211,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.1 on-finished: 2.4.1 - qs: 6.14.0 + qs: 6.14.1 raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: @@ -13492,7 +13252,7 @@ snapshots: connect-history-api-fallback: 1.6.0 immutable: 3.8.2 server-destroy: 1.0.1 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io-client: 4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) stream-throttle: 0.1.3 transitivePeerDependencies: - bufferutil @@ -13526,7 +13286,7 @@ snapshots: serve-index: 1.9.1 serve-static: 1.16.3 server-destroy: 1.0.1 - socket.io: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io: 4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) ua-parser-js: 1.0.41 yargs: 17.7.2 transitivePeerDependencies: @@ -13542,7 +13302,7 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.11 - caniuse-lite: 1.0.30001761 + caniuse-lite: 1.0.30001762 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -13635,11 +13395,11 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001761: {} + caniuse-lite@1.0.30001762: {} caseless@0.12.0: {} - chai@6.2.1: {} + chai@6.2.2: {} chalk-template@0.4.0: dependencies: @@ -13776,7 +13536,7 @@ snapshots: dependencies: '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.14.0 + qs: 6.14.1 raw-body: 2.5.3 type-is: 1.6.18 @@ -13980,11 +13740,12 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.5: + cssstyle@5.3.6: dependencies: '@asamuzakjp/css-color': 4.1.1 '@csstools/css-syntax-patches-for-csstree': 1.0.22 css-tree: 3.1.0 + lru-cache: 11.2.4 custom-event@1.0.1: {} @@ -14037,10 +13798,6 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.3.7: - dependencies: - ms: 2.1.3 - debug@4.4.0(supports-color@10.2.2): dependencies: ms: 2.1.3 @@ -14256,12 +14013,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): + engine.io-client@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.4.3(supports-color@10.2.2) engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -14270,7 +14027,7 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): + engine.io@6.6.5(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/cors': 2.8.19 '@types/node': 22.19.3 @@ -14278,9 +14035,9 @@ snapshots: base64id: 2.0.0 cookie: 0.7.2 cors: 2.8.5 - debug: 4.3.7 + debug: 4.4.3(supports-color@10.2.2) engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - supports-color @@ -14531,7 +14288,7 @@ snapshots: eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -14551,7 +14308,7 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -14578,7 +14335,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -14705,7 +14462,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.14.1 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.2 @@ -14740,7 +14497,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.14.1 range-parser: 1.2.1 router: 2.2.0 send: 1.2.1 @@ -14755,7 +14512,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -14785,7 +14542,7 @@ snapshots: fast-uri@3.1.0: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -15089,7 +14846,7 @@ snapshots: get-uri@6.0.5: dependencies: - basic-ftp: 5.0.5 + basic-ftp: 5.1.0 data-uri-to-buffer: 6.0.2 debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: @@ -15870,10 +15627,10 @@ snapshots: jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - '@acemir/cssom': 0.9.29 + '@acemir/cssom': 0.9.30 '@asamuzakjp/dom-selector': 6.7.6 '@exodus/bytes': 1.8.0 - cssstyle: 5.3.5 + cssstyle: 5.3.6 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 @@ -15885,7 +15642,7 @@ snapshots: symbol-tree: 3.2.4 tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -16045,7 +15802,7 @@ snapshots: qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 - socket.io: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io: 4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) source-map: 0.6.1 tmp: 0.2.5 ua-parser-js: 0.7.41 @@ -16185,7 +15942,7 @@ snapshots: msgpackr: 1.11.8 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.6.0 + ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 3.4.4 @@ -16541,8 +16298,8 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.53.5) - '@rollup/wasm-node': 4.54.0 + '@rollup/plugin-json': 6.1.0(rollup@4.55.1) + '@rollup/wasm-node': 4.55.1 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.28.1 @@ -16557,14 +16314,14 @@ snapshots: ora: 9.0.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.3.0(rollup@4.53.5)(typescript@5.9.3) + rollup-plugin-dts: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.97.1 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 nock@14.0.10: dependencies: @@ -16767,7 +16524,7 @@ snapshots: is-in-ssh: 1.0.0 is-inside-container: 1.0.0 powershell-utils: 0.1.0 - wsl-utils: 0.3.0 + wsl-utils: 0.3.1 open@8.4.2: dependencies: @@ -16800,7 +16557,7 @@ snapshots: string-width: 8.1.0 strip-ansi: 7.1.2 - ordered-binary@1.6.0: + ordered-binary@1.6.1: optional: true os-tmpdir@1.0.2: {} @@ -17260,6 +17017,10 @@ snapshots: dependencies: side-channel: 1.1.0 + qs@6.14.1: + dependencies: + side-channel: 1.1.0 + qs@6.5.3: {} queue-microtask@1.2.3: {} @@ -17531,14 +17292,6 @@ snapshots: semver: 7.7.3 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.3.0(rollup@4.53.5)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.53.5 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - rollup-plugin-dts@6.3.0(rollup@4.55.1)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17554,34 +17307,6 @@ snapshots: optionalDependencies: '@types/node': 22.19.3 - rollup@4.53.5: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 - fsevents: 2.3.3 - rollup@4.55.1: dependencies: '@types/estree': 1.0.8 @@ -17917,42 +17642,42 @@ snapshots: smart-buffer@4.2.0: {} - socket.io-adapter@2.5.5(bufferutil@4.0.9)(utf-8-validate@6.0.5): + socket.io-adapter@2.5.6(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - debug: 4.3.7 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) + debug: 4.4.3(supports-color@10.2.2) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): + socket.io-client@4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - socket.io-parser: 4.2.4 + debug: 4.4.3(supports-color@10.2.2) + engine.io-client: 6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.4: + socket.io-parser@4.2.5: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - socket.io@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): + socket.io@4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.7 - engine.io: 6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) - socket.io-adapter: 2.5.5(bufferutil@4.0.9)(utf-8-validate@6.0.5) - socket.io-parser: 4.2.4 + debug: 4.4.3(supports-color@10.2.2) + engine.io: 6.6.5(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io-adapter: 2.5.6(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil - supports-color @@ -18535,7 +18260,7 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - undici-types@7.16.0: {} + undici-types@7.18.0: {} undici@5.29.0: dependencies: @@ -18713,7 +18438,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.4 @@ -18811,7 +18536,7 @@ snapshots: webidl-conversions@7.0.0: {} - webidl-conversions@8.0.0: {} + webidl-conversions@8.0.1: {} webpack-dev-middleware@7.4.5(webpack@5.104.1(esbuild@0.27.2)): dependencies: @@ -18925,7 +18650,7 @@ snapshots: whatwg-url@15.1.0: dependencies: tr46: 6.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 whatwg-url@5.0.0: dependencies: @@ -19030,11 +18755,6 @@ snapshots: optionalDependencies: bufferutil: 4.0.9 - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 - ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): optionalDependencies: bufferutil: 4.0.9 @@ -19048,7 +18768,7 @@ snapshots: dependencies: is-wsl: 3.1.0 - wsl-utils@0.3.0: + wsl-utils@0.3.1: dependencies: is-wsl: 3.1.0 powershell-utils: 0.1.0 @@ -19151,7 +18871,7 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.0(zod@4.3.5): + zod-to-json-schema@3.25.1(zod@4.3.5): dependencies: zod: 4.3.5 From 00eb7c3f937578c682ab2c0669af622057f0d5a8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 09:16:13 -0500 Subject: [PATCH 2047/2162] refactor(@angular-devkit/build-angular): convert karma builder to AsyncIterable Refactor the Karma builder's `execute` function to return an `AsyncIterable` using a `ReadableStream`. This removes the RxJS dependency and aligns the builder with modern Angular CLI implementation patterns. Additionally, this change fixes a race condition where the Karma server could start even if the builder was cancelled during asynchronous initialization. An `isCancelled` flag is now used to ensure execution stops if a cancellation occurs before the server starts. --- .../src/builders/karma/browser_builder.ts | 104 +++++++++++------- 1 file changed, 63 insertions(+), 41 deletions(-) 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 dc45da558527..1414594d64e5 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 @@ -7,17 +7,16 @@ */ import { purgeStaleBuildCache } from '@angular/build/private'; -import { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; -import type { Config, ConfigOptions } from 'karma'; +import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; +import type { Config, ConfigOptions, Server } from 'karma'; import * as path from 'node:path'; -import { Observable, defaultIfEmpty, from, switchMap } from 'rxjs'; -import { Configuration } from 'webpack'; +import type { Configuration } from 'webpack'; import { getCommonConfig, getStylesConfig } from '../../tools/webpack/configs'; -import { ExecutionTransformer } from '../../transforms'; +import type { ExecutionTransformer } from '../../transforms'; import { generateBrowserWebpackConfigFromContext } from '../../utils/webpack-browser-config'; -import { Schema as BrowserBuilderOptions, OutputHashing } from '../browser/schema'; +import { type Schema as BrowserBuilderOptions, OutputHashing } from '../browser/schema'; import { FindTestsPlugin } from './find-tests-plugin'; -import { Schema as KarmaBuilderOptions } from './schema'; +import type { Schema as KarmaBuilderOptions } from './schema'; export type KarmaConfigOptions = ConfigOptions & { buildWebpack?: unknown; @@ -33,9 +32,22 @@ export function execute( // The karma options transform cannot be async without a refactor of the builder implementation karmaOptions?: (options: KarmaConfigOptions) => KarmaConfigOptions; } = {}, -): Observable { - return from(initializeBrowser(options, context, transforms.webpackConfiguration)).pipe( - switchMap(async ([karma, webpackConfig]) => { +): AsyncIterable { + let karmaServer: Server; + let isCancelled = false; + + return new ReadableStream({ + async start(controller) { + const [karma, webpackConfig] = await initializeBrowser( + options, + context, + transforms.webpackConfiguration, + ); + + if (isCancelled) { + return; + } + const projectName = context.target?.project; if (!projectName) { throw new Error(`The 'karma' builder requires a target to be specified.`); @@ -71,44 +83,54 @@ export function execute( logger: context.logger, }; - const parsedKarmaConfig = await karma.config.parseConfig( + const parsedKarmaConfig = (await karma.config.parseConfig( options.karmaConfig && path.resolve(context.workspaceRoot, options.karmaConfig), transforms.karmaOptions ? transforms.karmaOptions(karmaOptions) : karmaOptions, { promiseConfig: true, throwErrors: true }, - ); + )) as KarmaConfigOptions; - return [karma, parsedKarmaConfig] as [typeof karma, KarmaConfigOptions]; - }), - switchMap( - ([karma, karmaConfig]) => - new Observable((subscriber) => { - // Pass onto Karma to emit BuildEvents. - karmaConfig.buildWebpack ??= {}; - if (typeof karmaConfig.buildWebpack === 'object') { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (karmaConfig.buildWebpack as any).failureCb ??= () => - subscriber.next({ success: false }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (karmaConfig.buildWebpack as any).successCb ??= () => - subscriber.next({ success: true }); - } + if (isCancelled) { + return; + } - // Complete the observable once the Karma server returns. - const karmaServer = new karma.Server(karmaConfig as Config, (exitCode) => { - subscriber.next({ success: exitCode === 0 }); - subscriber.complete(); - }); + const enqueue = (value: BuilderOutput) => { + try { + controller.enqueue(value); + } catch { + // Controller is already closed + } + }; - const karmaStart = karmaServer.start(); + const close = () => { + try { + controller.close(); + } catch { + // Controller is already closed + } + }; - // Cleanup, signal Karma to exit. - return () => { - void karmaStart.then(() => karmaServer.stop()); - }; - }), - ), - defaultIfEmpty({ success: false }), - ); + // Pass onto Karma to emit BuildEvents. + parsedKarmaConfig.buildWebpack ??= {}; + if (typeof parsedKarmaConfig.buildWebpack === 'object') { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (parsedKarmaConfig.buildWebpack as any).failureCb ??= () => enqueue({ success: false }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (parsedKarmaConfig.buildWebpack as any).successCb ??= () => enqueue({ success: true }); + } + + // Close the stream once the Karma server returns. + karmaServer = new karma.Server(parsedKarmaConfig as Config, (exitCode) => { + enqueue({ success: exitCode === 0 }); + close(); + }); + + await karmaServer.start(); + }, + async cancel() { + isCancelled = true; + await karmaServer?.stop(); + }, + }); } async function initializeBrowser( From d5f5b016fe4935509bed52786a0a19c33c9f508f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 09:55:53 -0500 Subject: [PATCH 2048/2162] refactor(@angular-devkit/build-angular): decouple karma builder from webpack plugin callbacks Decouples the Karma builder from the Webpack plugin by removing the custom `successCb` and `failureCb` callback mechanism. The builder now idiomaticallly listens to the standard Karma `run_complete` event on the server instance to emit builder results. --- .../src/builders/karma/browser_builder.ts | 21 +++++++------------ .../src/tools/webpack/plugins/karma/karma.ts | 15 ------------- 2 files changed, 8 insertions(+), 28 deletions(-) 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 1414594d64e5..1ac82fb47c9f 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 @@ -8,7 +8,7 @@ import { purgeStaleBuildCache } from '@angular/build/private'; import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; -import type { Config, ConfigOptions, Server } from 'karma'; +import type { ConfigOptions, Server } from 'karma'; import * as path from 'node:path'; import type { Configuration } from 'webpack'; import { getCommonConfig, getStylesConfig } from '../../tools/webpack/configs'; @@ -83,11 +83,11 @@ export function execute( logger: context.logger, }; - const parsedKarmaConfig = (await karma.config.parseConfig( + const parsedKarmaConfig = await karma.config.parseConfig( options.karmaConfig && path.resolve(context.workspaceRoot, options.karmaConfig), transforms.karmaOptions ? transforms.karmaOptions(karmaOptions) : karmaOptions, { promiseConfig: true, throwErrors: true }, - )) as KarmaConfigOptions; + ); if (isCancelled) { return; @@ -109,21 +109,16 @@ export function execute( } }; - // Pass onto Karma to emit BuildEvents. - parsedKarmaConfig.buildWebpack ??= {}; - if (typeof parsedKarmaConfig.buildWebpack === 'object') { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (parsedKarmaConfig.buildWebpack as any).failureCb ??= () => enqueue({ success: false }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (parsedKarmaConfig.buildWebpack as any).successCb ??= () => enqueue({ success: true }); - } - // Close the stream once the Karma server returns. - karmaServer = new karma.Server(parsedKarmaConfig as Config, (exitCode) => { + karmaServer = new karma.Server(parsedKarmaConfig, (exitCode) => { enqueue({ success: exitCode === 0 }); close(); }); + karmaServer.on('run_complete', (_, results) => { + enqueue({ success: results.exitCode === 0 }); + }); + await karmaServer.start(); }, async cancel() { diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index 4ce99ea56928..e4aa5ec1edae 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -25,8 +25,6 @@ const KARMA_APPLICATION_PATH = '_karma_webpack_'; let blocked: any[] = []; let isBlocked = false; let webpackMiddleware: any; -let successCb: () => void; -let failureCb: () => void; const init: any = (config: any, emitter: any) => { if (!config.buildWebpack) { @@ -37,8 +35,6 @@ const init: any = (config: any, emitter: any) => { } const options = config.buildWebpack.options as BuildOptions; const logger: logging.Logger = config.buildWebpack.logger || createConsoleLogger(); - successCb = config.buildWebpack.successCb; - failureCb = config.buildWebpack.failureCb; // Add a reporter that fixes sourcemap urls. if (normalizeSourceMaps(options.sourceMap).scripts) { @@ -132,9 +128,6 @@ const init: any = (config: any, emitter: any) => { // Finish Karma run early in case of compilation error. emitter.emit('run_complete', [], { exitCode: 1 }); - - // Emit a failure build event if there are compilation errors. - failureCb(); } }); @@ -224,14 +217,6 @@ const eventReporter: any = function (this: any, baseReporterDecorator: any, conf muteDuplicateReporterLogging(this, config); - this.onRunComplete = function (_browsers: any, results: any) { - if (results.exitCode === 0) { - successCb(); - } else { - failureCb(); - } - }; - // avoid duplicate failure message this.specFailure = () => {}; }; From 997d0e22df0bfd10b7de8e298017849ef9527d91 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 10:43:37 -0500 Subject: [PATCH 2049/2162] refactor(@angular-devkit/build-angular): convert karma builder entry to AsyncIterable Refactor the Karma builder's main `execute` function to return an `AsyncIterable` instead of an RxJS `Observable`. This continues the effort to reduce RxJS usage in the CLI builders and aligns the implementation with modern Angular CLI patterns. --- .../build_angular/src/builders/karma/index.ts | 59 +++++++++---------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/karma/index.ts b/packages/angular_devkit/build_angular/src/builders/karma/index.ts index ea79a9165771..e6db299395bd 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/index.ts @@ -17,7 +17,6 @@ import { strings } from '@angular-devkit/core'; import type { ConfigOptions } from 'karma'; import { createRequire } from 'node:module'; import * as path from 'node:path'; -import { Observable, from, mergeMap } from 'rxjs'; import { Configuration } from 'webpack'; import { ExecutionTransformer } from '../../transforms'; import { normalizeFileReplacements } from '../../utils'; @@ -31,7 +30,7 @@ export type KarmaConfigOptions = ConfigOptions & { /** * @experimental Direct usage of this function is considered experimental. */ -export function execute( +export async function* execute( options: KarmaBuilderOptions, context: BuilderContext, transforms: { @@ -39,37 +38,35 @@ export function execute( // The karma options transform cannot be async without a refactor of the builder implementation karmaOptions?: (options: KarmaConfigOptions) => KarmaConfigOptions; } = {}, -): Observable { +): AsyncIterable { // Check Angular version. assertCompatibleAngularVersion(context.workspaceRoot); - return from(getExecuteWithBuilder(options, context)).pipe( - mergeMap(([useEsbuild, executeWithBuilder]) => { - if (useEsbuild) { - if (transforms.webpackConfiguration) { - context.logger.warn( - `This build is using the application builder but transforms.webpackConfiguration was provided. The transform will be ignored.`, - ); - } - - if (options.fileReplacements) { - options.fileReplacements = normalizeFileReplacements(options.fileReplacements, './'); - } - - if (typeof options.polyfills === 'string') { - options.polyfills = [options.polyfills]; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return executeWithBuilder(options as any, context, transforms); - } else { - const karmaOptions = getBaseKarmaOptions(options, context); - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return executeWithBuilder(options as any, context, karmaOptions, transforms); - } - }), - ); + const [useEsbuild, executeWithBuilder] = await getExecuteWithBuilder(options, context); + + if (useEsbuild) { + if (transforms.webpackConfiguration) { + context.logger.warn( + `This build is using the application builder but transforms.webpackConfiguration was provided. The transform will be ignored.`, + ); + } + + if (options.fileReplacements) { + options.fileReplacements = normalizeFileReplacements(options.fileReplacements, './'); + } + + if (typeof options.polyfills === 'string') { + options.polyfills = [options.polyfills]; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + yield* executeWithBuilder(options as any, context, transforms); + } else { + const karmaOptions = getBaseKarmaOptions(options, context); + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + yield* executeWithBuilder(options as any, context, karmaOptions, transforms); + } } function getBaseKarmaOptions( @@ -169,7 +166,7 @@ function getBuiltInKarmaConfig( } export type { KarmaBuilderOptions }; -export default createBuilder & KarmaBuilderOptions>(execute); +export default createBuilder(execute); async function getExecuteWithBuilder( options: KarmaBuilderOptions, From ce8036d7989a1a19690214e917a3a3c522a62ff5 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 10:50:31 -0500 Subject: [PATCH 2050/2162] refactor(@angular-devkit/build-angular): remove as any usage in karma builder Refactor the Karma builder's `execute` function to directly handle dynamic imports within conditional blocks. This eliminates the need for `getExecuteWithBuilder` and the resulting union types that required `as any` casting. This improves type safety by allowing TypeScript to verify the arguments passed to the specific builder implementations (Esbuild vs Webpack). --- .../build_angular/src/builders/karma/index.ts | 41 +++++-------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/karma/index.ts b/packages/angular_devkit/build_angular/src/builders/karma/index.ts index e6db299395bd..81c8d1d58a21 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/index.ts @@ -42,9 +42,7 @@ export async function* execute( // Check Angular version. assertCompatibleAngularVersion(context.workspaceRoot); - const [useEsbuild, executeWithBuilder] = await getExecuteWithBuilder(options, context); - - if (useEsbuild) { + if (await checkForEsbuild(options, context)) { if (transforms.webpackConfiguration) { context.logger.warn( `This build is using the application builder but transforms.webpackConfiguration was provided. The transform will be ignored.`, @@ -59,13 +57,18 @@ export async function* execute( options.polyfills = [options.polyfills]; } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - yield* executeWithBuilder(options as any, context, transforms); + const { executeKarmaBuilder } = await import('@angular/build'); + + yield* executeKarmaBuilder( + options as unknown as import('@angular/build').KarmaBuilderOptions, + context, + transforms, + ); } else { const karmaOptions = getBaseKarmaOptions(options, context); + const { execute } = await import('./browser_builder'); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - yield* executeWithBuilder(options as any, context, karmaOptions, transforms); + yield* execute(options, context, karmaOptions, transforms); } } @@ -168,30 +171,6 @@ function getBuiltInKarmaConfig( export type { KarmaBuilderOptions }; export default createBuilder(execute); -async function getExecuteWithBuilder( - options: KarmaBuilderOptions, - context: BuilderContext, -): Promise< - [ - boolean, - ( - | (typeof import('@angular/build'))['executeKarmaBuilder'] - | (typeof import('./browser_builder'))['execute'] - ), - ] -> { - const useEsbuild = await checkForEsbuild(options, context); - let execute; - if (useEsbuild) { - const { executeKarmaBuilder } = await import('@angular/build'); - execute = executeKarmaBuilder; - } else { - const browserBuilderModule = await import('./browser_builder'); - execute = browserBuilderModule.execute; - } - - return [useEsbuild, execute]; -} async function checkForEsbuild( options: KarmaBuilderOptions, From d64d0cf506b765122ffc9ced8d804030fc13acf2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:03:32 -0500 Subject: [PATCH 2051/2162] refactor(@angular-devkit/build-angular): maintain experimental public API for karma builder Adds an `executeKarmaBuilder` wrapper function in the package entry point that returns an RxJS `Observable`. This maintains backward compatibility for the experimental public API while the internal implementation has been migrated to use `AsyncIterable`. --- .../angular_devkit/build_angular/index.api.md | 16 +++++----- .../build_angular/src/builders/karma/index.ts | 1 - .../angular_devkit/build_angular/src/index.ts | 29 +++++++++++++++---- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/goldens/public-api/angular_devkit/build_angular/index.api.md b/goldens/public-api/angular_devkit/build_angular/index.api.md index cb46b4458351..0208e998a300 100644 --- a/goldens/public-api/angular_devkit/build_angular/index.api.md +++ b/goldens/public-api/angular_devkit/build_angular/index.api.md @@ -49,7 +49,7 @@ export type BrowserBuilderOptions = { i18nDuplicateTranslation?: I18NTranslation; i18nMissingTranslation?: I18NTranslation; index: IndexUnion; - inlineStyleLanguage?: InlineStyleLanguage; + inlineStyleLanguage?: InlineStyleLanguage_2; localize?: Localize; main: string; namedChunks?: boolean; @@ -58,16 +58,16 @@ export type BrowserBuilderOptions = { outputHashing?: OutputHashing; outputPath: string; poll?: number; - polyfills?: Polyfills; + polyfills?: Polyfills_2; preserveSymlinks?: boolean; progress?: boolean; resourcesOutputPath?: string; - scripts?: ScriptElement[]; + scripts?: ScriptElement_2[]; serviceWorker?: boolean; sourceMap?: SourceMapUnion; statsJson?: boolean; stylePreprocessorOptions?: StylePreprocessorOptions; - styles?: StyleElement[]; + styles?: StyleElement_2[]; subresourceIntegrity?: boolean; tsConfig: string; vendorChunk?: boolean; @@ -216,18 +216,18 @@ export type KarmaBuilderOptions = { exclude?: string[]; fileReplacements?: FileReplacement_2[]; include?: string[]; - inlineStyleLanguage?: InlineStyleLanguage_2; + inlineStyleLanguage?: InlineStyleLanguage; karmaConfig?: string; main?: string; poll?: number; - polyfills?: Polyfills_2; + polyfills?: Polyfills; preserveSymlinks?: boolean; progress?: boolean; reporters?: string[]; - scripts?: ScriptElement_2[]; + scripts?: ScriptElement[]; sourceMap?: SourceMapUnion_2; stylePreprocessorOptions?: StylePreprocessorOptions_2; - styles?: StyleElement_2[]; + styles?: StyleElement[]; tsConfig: string; watch?: boolean; webWorkerTsConfig?: string; diff --git a/packages/angular_devkit/build_angular/src/builders/karma/index.ts b/packages/angular_devkit/build_angular/src/builders/karma/index.ts index 81c8d1d58a21..ff54a8292ff2 100644 --- a/packages/angular_devkit/build_angular/src/builders/karma/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/karma/index.ts @@ -171,7 +171,6 @@ function getBuiltInKarmaConfig( export type { KarmaBuilderOptions }; export default createBuilder(execute); - async function checkForEsbuild( options: KarmaBuilderOptions, context: BuilderContext, diff --git a/packages/angular_devkit/build_angular/src/index.ts b/packages/angular_devkit/build_angular/src/index.ts index 7f02b7753686..1ba9ce034544 100644 --- a/packages/angular_devkit/build_angular/src/index.ts +++ b/packages/angular_devkit/build_angular/src/index.ts @@ -6,6 +6,15 @@ * found in the LICENSE file at https://angular.dev/license */ +import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; +import { type Observable, from } from 'rxjs'; +import { + type KarmaBuilderOptions, + type KarmaConfigOptions, + execute as executeKarmaBuilderInternal, +} from './builders/karma'; +import type { ExecutionTransformer } from './transforms'; + export * from './transforms'; export { CrossOrigin, OutputHashing, Type } from './builders/browser/schema'; @@ -40,11 +49,21 @@ export { type ExtractI18nBuilderOptions, } from './builders/extract-i18n'; -export { - execute as executeKarmaBuilder, - type KarmaBuilderOptions, - type KarmaConfigOptions, -} from './builders/karma'; +/** + * @experimental Direct usage of this function is considered experimental. + */ +export function executeKarmaBuilder( + options: KarmaBuilderOptions, + context: BuilderContext, + transforms?: { + webpackConfiguration?: ExecutionTransformer; + karmaOptions?: (options: KarmaConfigOptions) => KarmaConfigOptions; + }, +): Observable { + return from(executeKarmaBuilderInternal(options, context, transforms)); +} + +export { type KarmaBuilderOptions, type KarmaConfigOptions }; export { execute as executeProtractorBuilder, From 3ffe3ea751236da339d8f0131d2c8d07db42e61c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:19:18 -0500 Subject: [PATCH 2052/2162] refactor(@angular-devkit/build-angular): move webpack compiler creation to karma builder Moves the instantiation of the Webpack Compiler from the Karma plugin to the Karma builder (`browser_builder`). This allows the builder to have full ownership of the compiler's lifecycle and configuration, including `singleRun` adjustments and output paths. The Karma plugin now receives the `compiler` instance directly instead of the configuration, reducing its responsibility to just integration logic. --- .../src/builders/karma/browser_builder.ts | 26 ++++++++++++-- .../src/tools/webpack/plugins/karma/karma.ts | 35 +++---------------- 2 files changed, 29 insertions(+), 32 deletions(-) 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 1ac82fb47c9f..e9997b67ea0d 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 @@ -10,7 +10,7 @@ import { purgeStaleBuildCache } from '@angular/build/private'; import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; import type { ConfigOptions, Server } from 'karma'; import * as path from 'node:path'; -import type { Configuration } from 'webpack'; +import webpack, { Configuration } from 'webpack'; import { getCommonConfig, getStylesConfig } from '../../tools/webpack/configs'; import type { ExecutionTransformer } from '../../transforms'; import { generateBrowserWebpackConfigFromContext } from '../../utils/webpack-browser-config'; @@ -77,9 +77,31 @@ export function execute( }), ); + const KARMA_APPLICATION_PATH = '_karma_webpack_'; + webpackConfig.output ??= {}; + webpackConfig.output.path = `/${KARMA_APPLICATION_PATH}/`; + webpackConfig.output.publicPath = `/${KARMA_APPLICATION_PATH}/`; + + if (karmaOptions.singleRun) { + webpackConfig.plugins.unshift({ + apply: (compiler: webpack.Compiler) => { + compiler.hooks.afterEnvironment.tap('karma', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + compiler.watchFileSystem = { watch: () => {} } as any; + }); + }, + }); + } + + // Remove the watch option to avoid the [DEP_WEBPACK_WATCH_WITHOUT_CALLBACK] warning. + // The compiler is initialized in watch mode by webpack-dev-middleware. + delete webpackConfig.watch; + + const compiler = webpack(webpackConfig); + karmaOptions.buildWebpack = { options, - webpackConfig, + compiler, logger: context.logger, }; diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index e4aa5ec1edae..faf611d640c2 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -10,7 +10,7 @@ // TODO: cleanup this file, it's copied as is from Angular CLI. import * as http from 'node:http'; import * as path from 'node:path'; -import webpack from 'webpack'; +import type { Compiler } from 'webpack'; import webpackDevMiddleware from 'webpack-dev-middleware'; import { statsErrorsToString } from '../../utils/stats'; @@ -18,7 +18,6 @@ import { createConsoleLogger } from '@angular-devkit/core/node'; import { logging } from '@angular-devkit/core'; import { BuildOptions } from '../../../../utils/build-options'; import { normalizeSourceMaps } from '../../../../utils/index'; -import assert from 'node:assert'; const KARMA_APPLICATION_PATH = '_karma_webpack_'; @@ -67,16 +66,13 @@ const init: any = (config: any, emitter: any) => { config.reporters.push('coverage'); } - // Add webpack config. - const webpackConfig = config.buildWebpack.webpackConfig; + const compiler = config.buildWebpack.compiler as Compiler; const webpackMiddlewareConfig = { // Hide webpack output because its noisy. stats: false, publicPath: `/${KARMA_APPLICATION_PATH}/`, }; - // Use existing config if any. - config.webpack = { ...webpackConfig, ...config.webpack }; config.webpackMiddleware = { ...webpackMiddlewareConfig, ...config.webpackMiddleware }; // Our custom context and debug files list the webpack bundles directly instead of using @@ -90,29 +86,10 @@ const init: any = (config: any, emitter: any) => { config.middleware = config.middleware || []; config.middleware.push('@angular-devkit/build-angular--fallback'); - if (config.singleRun) { - // There's no option to turn off file watching in webpack-dev-server, but - // we can override the file watcher instead. - webpackConfig.plugins.unshift({ - apply: (compiler: any) => { - compiler.hooks.afterEnvironment.tap('karma', () => { - compiler.watchFileSystem = { watch: () => {} }; - }); - }, - }); - } - // Files need to be served from a custom path for Karma. - webpackConfig.output.path = `/${KARMA_APPLICATION_PATH}/`; - webpackConfig.output.publicPath = `/${KARMA_APPLICATION_PATH}/`; - - const compiler = webpack(webpackConfig, (error, stats) => { - if (error) { - throw error; - } - - if (stats?.hasErrors()) { + compiler.hooks.done.tap('karma', (stats) => { + if (stats.hasErrors()) { // Only generate needed JSON stats and when needed. - const statsJson = stats?.toJson({ + const statsJson = stats.toJson({ all: false, children: true, errors: true, @@ -136,8 +113,6 @@ const init: any = (config: any, emitter: any) => { callback?.(); } - assert(compiler, 'Webpack compiler factory did not return a compiler instance.'); - compiler.hooks.invalid.tap('karma', () => handler()); compiler.hooks.watchRun.tapAsync('karma', (_: any, callback: () => void) => handler(callback)); compiler.hooks.run.tapAsync('karma', (_: any, callback: () => void) => handler(callback)); From 4b129d293f49ab384f11e90ffb46bcc5a53c57e3 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 12:23:57 -0500 Subject: [PATCH 2053/2162] refactor(@angular-devkit/build-angular): remove createConsoleLogger from karma plugin Removes the `createConsoleLogger` import and its usage as a fallback in the Karma plugin. The logger is now consistently provided by the builder via the `buildWebpack` configuration object. --- .../build_angular/src/tools/webpack/plugins/karma/karma.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index faf611d640c2..5e44b864ff18 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -14,7 +14,6 @@ import type { Compiler } from 'webpack'; import webpackDevMiddleware from 'webpack-dev-middleware'; import { statsErrorsToString } from '../../utils/stats'; -import { createConsoleLogger } from '@angular-devkit/core/node'; import { logging } from '@angular-devkit/core'; import { BuildOptions } from '../../../../utils/build-options'; import { normalizeSourceMaps } from '../../../../utils/index'; @@ -33,7 +32,7 @@ const init: any = (config: any, emitter: any) => { ); } const options = config.buildWebpack.options as BuildOptions; - const logger: logging.Logger = config.buildWebpack.logger || createConsoleLogger(); + const logger: logging.Logger = config.buildWebpack.logger; // Add a reporter that fixes sourcemap urls. if (normalizeSourceMaps(options.sourceMap).scripts) { From e0a165ac43dc7ab91f6e1183dfdae9489e510cec Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 12:46:28 -0500 Subject: [PATCH 2054/2162] refactor(@angular-devkit/build-angular): optimize karma plugin hooks Consolidates the compiler hooks in the Karma plugin. Merges separate `compiler.hooks.done` taps into a single unified handler that manages error reporting, file refreshing, and blocking logic. --- .../src/tools/webpack/plugins/karma/karma.ts | 56 +++++++++---------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index 5e44b864ff18..a7c0c5dc2e6b 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -85,28 +85,6 @@ const init: any = (config: any, emitter: any) => { config.middleware = config.middleware || []; config.middleware.push('@angular-devkit/build-angular--fallback'); - compiler.hooks.done.tap('karma', (stats) => { - if (stats.hasErrors()) { - // Only generate needed JSON stats and when needed. - const statsJson = stats.toJson({ - all: false, - children: true, - errors: true, - warnings: true, - }); - - logger.error(statsErrorsToString(statsJson, { colors: true })); - - if (config.singleRun) { - // Notify potential listeners of the compile error. - emitter.emit('load_error'); - } - - // Finish Karma run early in case of compilation error. - emitter.emit('run_complete', [], { exitCode: 1 }); - } - }); - function handler(callback?: () => void): void { isBlocked = true; callback?.(); @@ -133,6 +111,32 @@ const init: any = (config: any, emitter: any) => { return new Promise((resolve) => { compiler.hooks.done.tap('karma', (stats) => { + if (stats.hasErrors()) { + lastCompilationHash = undefined; + + // Only generate needed JSON stats and when needed. + const statsJson = stats.toJson({ + all: false, + children: true, + errors: true, + warnings: true, + }); + + logger.error(statsErrorsToString(statsJson, { colors: true })); + + if (config.singleRun) { + // Notify potential listeners of the compile error. + emitter.emit('load_error'); + } + + // Finish Karma run early in case of compilation error. + emitter.emit('run_complete', [], { exitCode: 1 }); + } else if (stats.hash != lastCompilationHash) { + // Refresh karma only when there are no webpack errors, and if the compilation changed. + lastCompilationHash = stats.hash; + emitter.refreshFiles(); + } + if (isFirstRun) { // This is needed to block Karma from launching browsers before Webpack writes the assets in memory. // See the below: @@ -142,14 +146,6 @@ const init: any = (config: any, emitter: any) => { resolve(); } - if (stats.hasErrors()) { - lastCompilationHash = undefined; - } else if (stats.hash != lastCompilationHash) { - // Refresh karma only when there are no webpack errors, and if the compilation changed. - lastCompilationHash = stats.hash; - emitter.refreshFiles(); - } - unblock(); }); }); From c64527ca3865e1e069dced1b865144221b40378c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 12:56:02 -0500 Subject: [PATCH 2055/2162] refactor(@angular-devkit/build-angular): remove redundant event reporter from karma plugin Removes the `@angular-devkit/build-angular--event-reporter` and its logic. The reporter was no longer performing significant work after the removal of custom callbacks, and its primary remaining function was a logging hack that is no longer required. --- .../src/tools/webpack/plugins/karma/karma.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index a7c0c5dc2e6b..230e4a99eee1 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -55,8 +55,6 @@ const init: any = (config: any, emitter: any) => { ); } - config.reporters.unshift('@angular-devkit/build-angular--event-reporter'); - // When using code-coverage, auto-add karma-coverage. if ( options.codeCoverage && @@ -181,18 +179,6 @@ function muteDuplicateReporterLogging(context: any, config: any) { } } -// Emits builder events. -const eventReporter: any = function (this: any, baseReporterDecorator: any, config: any) { - baseReporterDecorator(this); - - muteDuplicateReporterLogging(this, config); - - // avoid duplicate failure message - this.specFailure = () => {}; -}; - -eventReporter.$inject = ['baseReporterDecorator', 'config']; - // Strip the server address and webpack scheme (webpack://) from error log. const sourceMapReporter: any = function (this: any, baseReporterDecorator: any, config: any) { baseReporterDecorator(this); @@ -246,7 +232,6 @@ function fallbackMiddleware() { module.exports = { 'framework:@angular-devkit/build-angular': ['factory', init], 'reporter:@angular-devkit/build-angular--sourcemap-reporter': ['type', sourceMapReporter], - 'reporter:@angular-devkit/build-angular--event-reporter': ['type', eventReporter], 'middleware:@angular-devkit/build-angular--blocker': ['factory', requestBlocker], 'middleware:@angular-devkit/build-angular--fallback': ['factory', fallbackMiddleware], }; From 8fc907e165a3c1cb84a110a76ca065bfd8fe66f2 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:15:27 -0500 Subject: [PATCH 2056/2162] refactor(@angular-devkit/build-angular): apply strict typing and cleanup karma middleware Updates the `requestBlocker` and `fallbackMiddleware` functions in the Karma plugin to use strict `IncomingMessage`, `ServerResponse`, and `NextFunction` types from `node:http`. Also properly types the `webpackMiddleware` variable and ensures its `close` method is called with a callback in the exit handler, resolving a TypeScript error exposed by the stricter typing. --- .../src/tools/webpack/plugins/karma/karma.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index 230e4a99eee1..31387de0cd8d 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -8,7 +8,7 @@ /* eslint-disable */ // TODO: cleanup this file, it's copied as is from Angular CLI. -import * as http from 'node:http'; +import type { IncomingMessage, ServerResponse } from 'node:http'; import * as path from 'node:path'; import type { Compiler } from 'webpack'; import webpackDevMiddleware from 'webpack-dev-middleware'; @@ -20,9 +20,9 @@ import { normalizeSourceMaps } from '../../../../utils/index'; const KARMA_APPLICATION_PATH = '_karma_webpack_'; -let blocked: any[] = []; +let blocked: ((err?: unknown) => void)[] = []; let isBlocked = false; -let webpackMiddleware: any; +let webpackMiddleware: webpackDevMiddleware.API; const init: any = (config: any, emitter: any) => { if (!config.buildWebpack) { @@ -94,8 +94,7 @@ const init: any = (config: any, emitter: any) => { webpackMiddleware = webpackDevMiddleware(compiler, webpackMiddlewareConfig); emitter.on('exit', (done: any) => { - webpackMiddleware.close(); - compiler.close(() => done()); + webpackMiddleware.close(() => compiler.close(() => done())); }); function unblock() { @@ -153,7 +152,11 @@ init.$inject = ['config', 'emitter']; // Block requests until the Webpack compilation is done. function requestBlocker() { - return function (_request: any, _response: any, next: () => void) { + return function ( + _request: IncomingMessage, + _response: ServerResponse, + next: (err?: unknown) => void, + ) { if (isBlocked) { blocked.push(next); } else { @@ -203,7 +206,11 @@ sourceMapReporter.$inject = ['baseReporterDecorator', 'config']; // When a request is not found in the karma server, try looking for it from the webpack server root. function fallbackMiddleware() { - return function (request: http.IncomingMessage, response: http.ServerResponse, next: () => void) { + return function ( + request: IncomingMessage, + response: ServerResponse, + next: (err?: unknown) => void, + ) { if (webpackMiddleware) { if (request.url && !new RegExp(`\\/${KARMA_APPLICATION_PATH}\\/.*`).test(request.url)) { request.url = '/' + KARMA_APPLICATION_PATH + request.url; From fb8d68985b967a6d1874f026cb30c89aa25c09db Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:38:20 -0500 Subject: [PATCH 2057/2162] refactor(@angular-devkit/build-angular): remove redundant request blocker from karma plugin Removes the custom request blocker middleware and related hooks from the Karma plugin. `webpack-dev-middleware` already handles blocking requests until compilation is valid, making this custom logic redundant and unnecessary. --- .../src/tools/webpack/plugins/karma/karma.ts | 39 +------------------ 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index 31387de0cd8d..4ae968ba41a5 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -20,8 +20,6 @@ import { normalizeSourceMaps } from '../../../../utils/index'; const KARMA_APPLICATION_PATH = '_karma_webpack_'; -let blocked: ((err?: unknown) => void)[] = []; -let isBlocked = false; let webpackMiddleware: webpackDevMiddleware.API; const init: any = (config: any, emitter: any) => { @@ -77,32 +75,15 @@ const init: any = (config: any, emitter: any) => { config.customContextFile = `${__dirname}/karma-context.html`; config.customDebugFile = `${__dirname}/karma-debug.html`; - // Add the request blocker and the webpack server fallback. - config.beforeMiddleware = config.beforeMiddleware || []; - config.beforeMiddleware.push('@angular-devkit/build-angular--blocker'); + // Add the webpack server fallback. config.middleware = config.middleware || []; config.middleware.push('@angular-devkit/build-angular--fallback'); - function handler(callback?: () => void): void { - isBlocked = true; - callback?.(); - } - - compiler.hooks.invalid.tap('karma', () => handler()); - compiler.hooks.watchRun.tapAsync('karma', (_: any, callback: () => void) => handler(callback)); - compiler.hooks.run.tapAsync('karma', (_: any, callback: () => void) => handler(callback)); - webpackMiddleware = webpackDevMiddleware(compiler, webpackMiddlewareConfig); emitter.on('exit', (done: any) => { webpackMiddleware.close(() => compiler.close(() => done())); }); - function unblock() { - isBlocked = false; - blocked.forEach((cb) => cb()); - blocked = []; - } - let lastCompilationHash: string | undefined; let isFirstRun = true; @@ -142,29 +123,12 @@ const init: any = (config: any, emitter: any) => { isFirstRun = false; resolve(); } - - unblock(); }); }); }; init.$inject = ['config', 'emitter']; -// Block requests until the Webpack compilation is done. -function requestBlocker() { - return function ( - _request: IncomingMessage, - _response: ServerResponse, - next: (err?: unknown) => void, - ) { - if (isBlocked) { - blocked.push(next); - } else { - next(); - } - }; -} - // Copied from "karma-jasmine-diff-reporter" source code: // In case, when multiple reporters are used in conjunction // with initSourcemapReporter, they both will show repetitive log @@ -239,6 +203,5 @@ function fallbackMiddleware() { module.exports = { 'framework:@angular-devkit/build-angular': ['factory', init], 'reporter:@angular-devkit/build-angular--sourcemap-reporter': ['type', sourceMapReporter], - 'middleware:@angular-devkit/build-angular--blocker': ['factory', requestBlocker], 'middleware:@angular-devkit/build-angular--fallback': ['factory', fallbackMiddleware], }; From 8d99355dbf9f3ee9f822fccb3d8ed6985d1ea4f7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 6 Jan 2026 13:43:07 -0500 Subject: [PATCH 2058/2162] refactor(@angular-devkit/build-angular): remove redundant isFirstRun check in Karma plugin The Promise resolve function is idempotent. Removing the explicit 'isFirstRun' check simplifies the code as subsequent calls to resolve() after the first compilation will be ignored by the Promise. --- .../src/tools/webpack/plugins/karma/karma.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts index 4ae968ba41a5..dd1336b5e22d 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/plugins/karma/karma.ts @@ -85,7 +85,6 @@ const init: any = (config: any, emitter: any) => { }); let lastCompilationHash: string | undefined; - let isFirstRun = true; return new Promise((resolve) => { compiler.hooks.done.tap('karma', (stats) => { @@ -115,14 +114,11 @@ const init: any = (config: any, emitter: any) => { emitter.refreshFiles(); } - if (isFirstRun) { - // This is needed to block Karma from launching browsers before Webpack writes the assets in memory. - // See the below: - // https://github.com/karma-runner/karma-chrome-launcher/issues/154#issuecomment-986661937 - // https://github.com/angular/angular-cli/issues/22495 - isFirstRun = false; - resolve(); - } + // This is needed to block Karma from launching browsers before Webpack writes the assets in memory. + // See the below: + // https://github.com/karma-runner/karma-chrome-launcher/issues/154#issuecomment-986661937 + // https://github.com/angular/angular-cli/issues/22495 + resolve(); }); }); }; From 0f6153ea5a08a34cabd1217f9d0551e5861a8e34 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 6 Jan 2026 21:38:13 +0000 Subject: [PATCH 2059/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 ++--- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 ++-- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 - package.json | 2 +- pnpm-lock.yaml | 204 +++++++++--------- tests/e2e/ng-snapshot/package.json | 32 +-- 11 files changed, 175 insertions(+), 177 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index a30031ce31fd..7b756215a472 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@942d738d8f4d65b161d06e6c399fefec318cdbfe + - uses: angular/dev-infra/github-actions/branch-manager@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 000b239cd7a0..730d5368fbaf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - 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 23811dc9f573..585f2d1bfc8d 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@942d738d8f4d65b161d06e6c399fefec318cdbfe + - uses: angular/dev-infra/github-actions/pull-request-labeling@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@942d738d8f4d65b161d06e6c399fefec318cdbfe + - uses: angular/dev-infra/github-actions/post-approval-changes@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index fae7787a6dff..fa610e65c161 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@942d738d8f4d65b161d06e6c399fefec318cdbfe + - uses: angular/dev-infra/github-actions/feature-request@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index abe20d3f3921..28be10bdcd3f 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@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - 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@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - 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 d103d3f2edcd..e06c3f3a6dbc 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/linting/licenses@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@942d738d8f4d65b161d06e6c399fefec318cdbfe + uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 334bb955e55b..2957ffb4cf2b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "942d738d8f4d65b161d06e6c399fefec318cdbfe", + commit = "87ed54ddedde42b443be7c6fe36cdaf0a907ea39", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 2143d7c6df94..dc0bf9948c80 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -14,7 +14,6 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "7fe0191f047d4fe4a4a46c1107e2350cbb58a8fc2e10913aa4322d3190dec0bf", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/MODULE.bazel": "6b735f3fdd64978e217c9725f4ff0d84bf606554c8e77d20e90977841d7ff2ed", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/source.json": "58fffa2d722cff47cb8d921c8bbed7701c53f233009d9ca82beb4a0fb8fb9418", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", @@ -163,7 +162,6 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/source.json": "6e8c1ecc64ff8da147c1620f862ad77d7b19c5d1b52b3aa5e847d5b3d0de4cc3", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.1.0/MODULE.bazel": "9db8031e71b6ef32d1846106e10dd0ee2deac042bd9a2de22b4761b0c3036453", "https://bcr.bazel.build/modules/rules_pkg/1.2.0/MODULE.bazel": "c7db3c2b407e673c7a39e3625dc05dc9f12d6682cbd82a3a5924a13b491eda7e", "https://bcr.bazel.build/modules/rules_pkg/1.2.0/source.json": "9062e00845bf91a4247465d371baa837adf9b6ff44c542f73ba084f07667e1dc", "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", diff --git a/package.json b/package.json index 25cfd4d8a549..aa01b2d18647 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@angular/forms": "21.1.0-next.4", "@angular/localize": "21.1.0-next.4", "@angular/material": "21.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ddc3809c1993612732eaae62d28e828b2ed789e5", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#4877ddbc10c12fb75ef6bc9ff49295021ff2512a", "@angular/platform-browser": "21.1.0-next.4", "@angular/platform-server": "21.1.0-next.4", "@angular/router": "21.1.0-next.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2dae4ae965e9..c3dd14671ea0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.3 version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ddc3809c1993612732eaae62d28e828b2ed789e5 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4877ddbc10c12fb75ef6bc9ff49295021ff2512a + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-next.4 version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -225,7 +225,7 @@ importers: version: 7.0.0 karma: specifier: ~6.4.0 - version: 6.4.4(bufferutil@4.0.9) + version: 6.4.4(bufferutil@4.1.0) karma-chrome-launcher: specifier: ~3.2.0 version: 3.2.0 @@ -234,10 +234,10 @@ importers: version: 2.2.1 karma-jasmine: specifier: ~5.1.0 - version: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) + version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)) karma-jasmine-html-reporter: specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)) + version: 2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -255,7 +255,7 @@ importers: version: 7.0.0 puppeteer: specifier: 18.2.1 - version: 18.2.1(bufferutil@4.0.9)(encoding@0.1.13) + version: 18.2.1(bufferutil@4.1.0)(encoding@0.1.13) quicktype-core: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) @@ -318,19 +318,19 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.16 - version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 - version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) jsdom: specifier: 27.4.0 - version: 27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) rxjs: specifier: 7.8.2 version: 7.8.2 vitest: specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -424,7 +424,7 @@ importers: version: link:../ssr jsdom: specifier: 27.4.0 - version: 27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) less: specifier: 4.4.2 version: 4.4.2 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -723,7 +723,7 @@ importers: version: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.1(esbuild@0.27.2)) + version: 5.2.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -736,10 +736,10 @@ importers: version: link:../../angular/ssr '@web/test-runner': specifier: 0.20.2 - version: 0.20.2(bufferutil@4.0.9) + version: 0.20.2(bufferutil@4.1.0) browser-sync: specifier: 3.0.4 - version: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) ng-packagr: specifier: 21.1.0-next.0 version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) @@ -771,7 +771,7 @@ importers: version: 5.104.1(esbuild@0.27.2) webpack-dev-server: specifier: 5.2.2 - version: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.1(esbuild@0.27.2)) + version: 5.2.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) packages/angular_devkit/core: dependencies: @@ -1026,9 +1026,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/ddc3809c1993612732eaae62d28e828b2ed789e5': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ddc3809c1993612732eaae62d28e828b2ed789e5} - version: 0.0.0-942d738d8f4d65b161d06e6c399fefec318cdbfe + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a} + version: 0.0.0-87ed54ddedde42b443be7c6fe36cdaf0a907ea39 hasBin: true '@angular/platform-browser@21.1.0-next.4': @@ -2125,8 +2125,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.33.0': - resolution: {integrity: sha512-ThUjFZ1N0DU88peFjnQkb8K198EWaW2RmmnDShFQ+O+xkIH9itjpRe358x3L/b4X/A7dimkvq63oz49Vbh7Cog==} + '@google/genai@1.34.0': + resolution: {integrity: sha512-vu53UMPvjmb7PGzlYu6Tzxso8Dfhn+a7eQFaS2uNemVtDZKwzSpJ5+ikqBbXplF7RGB1STcVDqCkPvquiwb2sw==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.24.0 @@ -4442,8 +4442,8 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bufferutil@4.0.9: - resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} + bufferutil@4.1.0: + resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==} engines: {node: '>=6.14.2'} bundle-name@4.1.0: @@ -8680,8 +8680,8 @@ packages: urijs@1.19.11: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} - utf-8-validate@6.0.5: - resolution: {integrity: sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==} + utf-8-validate@6.0.6: + resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==} engines: {node: '>=6.14.2'} util-deprecate@1.0.2: @@ -9358,11 +9358,11 @@ 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/ddc3809c1993612732eaae62d28e828b2ed789e5(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.33.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5) + '@google/genai': 1.34.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) '@inquirer/prompts': 8.1.0(@types/node@24.10.4) '@inquirer/type': 4.0.2(@types/node@24.10.4) '@octokit/auth-app': 8.1.2 @@ -9388,7 +9388,7 @@ snapshots: '@types/yargs': 17.0.35 '@types/yarnpkg__lockfile': 1.1.9 '@yarnpkg/lockfile': 1.1.0 - bufferutil: 4.0.9 + bufferutil: 4.1.0 cli-progress: 3.12.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 @@ -9410,7 +9410,7 @@ snapshots: tsx: 4.21.0 typed-graphqlify: 3.1.6 typescript: 5.9.3 - utf-8-validate: 6.0.5 + utf-8-validate: 6.0.6 which: 6.0.0 yaml: 2.8.2 yargs: 18.0.0 @@ -10736,10 +10736,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.33.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.0.9)(supports-color@10.2.2)(utf-8-validate@6.0.5)': + '@google/genai@1.34.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: '@modelcontextprotocol/sdk': 1.25.1(zod@4.3.5) transitivePeerDependencies: @@ -12477,7 +12477,7 @@ snapshots: dependencies: vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.16 @@ -12490,7 +12490,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12539,7 +12539,7 @@ snapshots: '@web/config-loader@0.3.3': {} - '@web/dev-server-core@0.7.5(bufferutil@4.0.9)': + '@web/dev-server-core@0.7.5(bufferutil@4.1.0)': dependencies: '@types/koa': 2.15.0 '@types/ws': 7.4.7 @@ -12558,16 +12558,16 @@ snapshots: mime-types: 2.1.35 parse5: 6.0.1 picomatch: 2.3.1 - ws: 7.5.10(bufferutil@4.0.9) + ws: 7.5.10(bufferutil@4.1.0) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/dev-server-rollup@0.6.4(bufferutil@4.0.9)': + '@web/dev-server-rollup@0.6.4(bufferutil@4.1.0)': dependencies: '@rollup/plugin-node-resolve': 15.3.1(rollup@4.55.1) - '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) + '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) nanocolors: 0.2.13 parse5: 6.0.1 rollup: 4.55.1 @@ -12577,13 +12577,13 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server@0.4.6(bufferutil@4.0.9)': + '@web/dev-server@0.4.6(bufferutil@4.1.0)': dependencies: '@babel/code-frame': 7.27.1 '@types/command-line-args': 5.2.3 '@web/config-loader': 0.3.3 - '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) - '@web/dev-server-rollup': 0.6.4(bufferutil@4.0.9) + '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) + '@web/dev-server-rollup': 0.6.4(bufferutil@4.1.0) camelcase: 6.3.0 command-line-args: 5.2.1 command-line-usage: 7.0.3 @@ -12603,12 +12603,12 @@ snapshots: '@types/parse5': 6.0.3 parse5: 6.0.1 - '@web/test-runner-chrome@0.18.1(bufferutil@4.0.9)': + '@web/test-runner-chrome@0.18.1(bufferutil@4.1.0)': dependencies: - '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) - '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.0.9) + '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) + '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.1.0) chrome-launcher: 0.15.2 - puppeteer-core: 24.34.0(bufferutil@4.0.9) + puppeteer-core: 24.34.0(bufferutil@4.1.0) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -12617,16 +12617,16 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-commands@0.9.0(bufferutil@4.0.9)': + '@web/test-runner-commands@0.9.0(bufferutil@4.1.0)': dependencies: - '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) + '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) mkdirp: 1.0.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/test-runner-core@0.13.4(bufferutil@4.0.9)': + '@web/test-runner-core@0.13.4(bufferutil@4.1.0)': dependencies: '@babel/code-frame': 7.27.1 '@types/babel__code-frame': 7.0.6 @@ -12636,7 +12636,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@web/browser-logs': 0.4.1 - '@web/dev-server-core': 0.7.5(bufferutil@4.0.9) + '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) chokidar: 4.0.3 cli-cursor: 3.1.0 co-body: 6.2.0 @@ -12659,9 +12659,9 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-coverage-v8@0.8.0(bufferutil@4.0.9)': + '@web/test-runner-coverage-v8@0.8.0(bufferutil@4.1.0)': dependencies: - '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) + '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) istanbul-lib-coverage: 3.2.2 lru-cache: 8.0.5 picomatch: 2.3.1 @@ -12671,23 +12671,23 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-mocha@0.9.0(bufferutil@4.0.9)': + '@web/test-runner-mocha@0.9.0(bufferutil@4.1.0)': dependencies: - '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) + '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/test-runner@0.20.2(bufferutil@4.0.9)': + '@web/test-runner@0.20.2(bufferutil@4.1.0)': dependencies: '@web/browser-logs': 0.4.1 '@web/config-loader': 0.3.3 - '@web/dev-server': 0.4.6(bufferutil@4.0.9) - '@web/test-runner-chrome': 0.18.1(bufferutil@4.0.9) - '@web/test-runner-commands': 0.9.0(bufferutil@4.0.9) - '@web/test-runner-core': 0.13.4(bufferutil@4.0.9) - '@web/test-runner-mocha': 0.9.0(bufferutil@4.0.9) + '@web/dev-server': 0.4.6(bufferutil@4.1.0) + '@web/test-runner-chrome': 0.18.1(bufferutil@4.1.0) + '@web/test-runner-commands': 0.9.0(bufferutil@4.1.0) + '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) + '@web/test-runner-mocha': 0.9.0(bufferutil@4.1.0) camelcase: 6.3.0 command-line-args: 5.2.1 command-line-usage: 7.0.3 @@ -13245,24 +13245,24 @@ snapshots: fresh: 0.5.2 mitt: 1.2.0 - browser-sync-ui@3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): + browser-sync-ui@3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: async-each-series: 0.1.1 chalk: 4.1.2 connect-history-api-fallback: 1.6.0 immutable: 3.8.2 server-destroy: 1.0.1 - socket.io-client: 4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) stream-throttle: 0.1.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - browser-sync@3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): + browser-sync@3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: browser-sync-client: 3.0.4 - browser-sync-ui: 3.0.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + browser-sync-ui: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) bs-recipes: 1.3.4 chalk: 4.1.2 chokidar: 3.6.0 @@ -13286,7 +13286,7 @@ snapshots: serve-index: 1.9.1 serve-static: 1.16.3 server-destroy: 1.0.1 - socket.io: 4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) ua-parser-js: 1.0.41 yargs: 17.7.2 transitivePeerDependencies: @@ -13331,7 +13331,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bufferutil@4.0.9: + bufferutil@4.1.0: dependencies: node-gyp-build: 4.8.4 @@ -14013,12 +14013,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5): + engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3(supports-color@10.2.2) engine.io-parser: 5.2.3 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -14027,7 +14027,7 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.5(bufferutil@4.0.9)(utf-8-validate@6.0.5): + engine.io@6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@types/cors': 2.8.19 '@types/node': 22.19.3 @@ -14037,7 +14037,7 @@ snapshots: cors: 2.8.5 debug: 4.4.3(supports-color@10.2.2) engine.io-parser: 5.2.3 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - supports-color @@ -15625,7 +15625,7 @@ snapshots: jsbn@0.1.1: {} - jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@acemir/cssom': 0.9.30 '@asamuzakjp/dom-selector': 6.7.6 @@ -15645,7 +15645,7 @@ snapshots: webidl-conversions: 8.0.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) xml-name-validator: 5.0.0 transitivePeerDependencies: - '@exodus/crypto' @@ -15766,22 +15766,22 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)))(karma@6.4.4(bufferutil@4.0.9)): + karma-jasmine-html-reporter@2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)): dependencies: jasmine-core: 5.13.0 - karma: 6.4.4(bufferutil@4.0.9) - karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.0.9)) + karma: 6.4.4(bufferutil@4.1.0) + karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.1.0)) - karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.0.9)): + karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)): dependencies: jasmine-core: 4.6.1 - karma: 6.4.4(bufferutil@4.0.9) + karma: 6.4.4(bufferutil@4.1.0) karma-source-map-support@1.4.0: dependencies: source-map-support: 0.5.21 - karma@6.4.4(bufferutil@4.0.9): + karma@6.4.4(bufferutil@4.1.0): dependencies: '@colors/colors': 1.5.0 body-parser: 1.20.4 @@ -15802,7 +15802,7 @@ snapshots: qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 - socket.io: 4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) source-map: 0.6.1 tmp: 0.2.5 ua-parser-js: 0.7.41 @@ -16958,7 +16958,7 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@18.2.1(bufferutil@4.0.9)(encoding@0.1.13): + puppeteer-core@18.2.1(bufferutil@4.1.0)(encoding@0.1.13): dependencies: cross-fetch: 3.1.5(encoding@0.1.13) debug: 4.3.4 @@ -16969,14 +16969,14 @@ snapshots: rimraf: 3.0.2 tar-fs: 2.1.1 unbzip2-stream: 1.4.3 - ws: 8.9.0(bufferutil@4.0.9) + ws: 8.9.0(bufferutil@4.1.0) transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - puppeteer-core@24.34.0(bufferutil@4.0.9): + puppeteer-core@24.34.0(bufferutil@4.1.0): dependencies: '@puppeteer/browsers': 2.11.0 chromium-bidi: 12.0.1(devtools-protocol@0.0.1534754) @@ -16984,7 +16984,7 @@ snapshots: devtools-protocol: 0.0.1534754 typed-query-selector: 2.12.0 webdriver-bidi-protocol: 0.3.10 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -16993,12 +16993,12 @@ snapshots: - supports-color - utf-8-validate - puppeteer@18.2.1(bufferutil@4.0.9)(encoding@0.1.13): + puppeteer@18.2.1(bufferutil@4.1.0)(encoding@0.1.13): dependencies: https-proxy-agent: 5.0.1(supports-color@10.2.2) progress: 2.0.3 proxy-from-env: 1.1.0 - puppeteer-core: 18.2.1(bufferutil@4.0.9)(encoding@0.1.13) + puppeteer-core: 18.2.1(bufferutil@4.1.0)(encoding@0.1.13) transitivePeerDependencies: - bufferutil - encoding @@ -17642,20 +17642,20 @@ snapshots: smart-buffer@4.2.0: {} - socket.io-adapter@2.5.6(bufferutil@4.0.9)(utf-8-validate@6.0.5): + socket.io-adapter@2.5.6(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: debug: 4.4.3(supports-color@10.2.2) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-client@4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): + socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3(supports-color@10.2.2) - engine.io-client: 6.6.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) + engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil @@ -17669,14 +17669,14 @@ snapshots: transitivePeerDependencies: - supports-color - socket.io@4.8.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): + socket.io@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 debug: 4.4.3(supports-color@10.2.2) - engine.io: 6.6.5(bufferutil@4.0.9)(utf-8-validate@6.0.5) - socket.io-adapter: 2.5.6(bufferutil@4.0.9)(utf-8-validate@6.0.5) + engine.io: 6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) + socket.io-adapter: 2.5.6(bufferutil@4.1.0)(utf-8-validate@6.0.6) socket.io-parser: 4.2.5 transitivePeerDependencies: - bufferutil @@ -18327,7 +18327,7 @@ snapshots: urijs@1.19.11: {} - utf-8-validate@6.0.5: + utf-8-validate@6.0.6: dependencies: node-gyp-build: 4.8.4 @@ -18450,7 +18450,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) @@ -18475,7 +18475,7 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.4 - jsdom: 27.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + jsdom: 27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - jiti - less @@ -18549,7 +18549,7 @@ snapshots: optionalDependencies: webpack: 5.104.1(esbuild@0.27.2) - webpack-dev-server@5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.104.1(esbuild@0.27.2)): + webpack-dev-server@5.2.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18578,7 +18578,7 @@ snapshots: sockjs: 0.3.24 spdy: 4.0.2 webpack-dev-middleware: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: @@ -18751,18 +18751,18 @@ snapshots: wrappy@1.0.2: {} - ws@7.5.10(bufferutil@4.0.9): + ws@7.5.10(bufferutil@4.1.0): optionalDependencies: - bufferutil: 4.0.9 + bufferutil: 4.1.0 - ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5): + ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 6.0.5 + bufferutil: 4.1.0 + utf-8-validate: 6.0.6 - ws@8.9.0(bufferutil@4.0.9): + ws@8.9.0(bufferutil@4.1.0): optionalDependencies: - bufferutil: 4.0.9 + bufferutil: 4.1.0 wsl-utils@0.1.0: dependencies: diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index a8565caab740..c23398b6a93c 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#80524f5d854b7fdb33104e629ca5e1102255f6f5", - "@angular/cdk": "github:angular/cdk-builds#475fd8d473ba20045b3393423d8a14d93a2da938", - "@angular/common": "github:angular/common-builds#8aafef4ce946a2f96a0203c9b9623c29998995bb", - "@angular/compiler": "github:angular/compiler-builds#205d342032c053a41088e14de00ff14e28e56fce", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#110918badaf4f73a2d20eb58f185fb6c1f8ae54a", - "@angular/core": "github:angular/core-builds#969d56512e639d39092dd3edf736bd7ba19a4c7d", - "@angular/forms": "github:angular/forms-builds#fafffa726c829fd644957e6c76bb5e42f09cbed7", - "@angular/language-service": "github:angular/language-service-builds#41e0bb51496678a972f37cb973ece48e40bc5cd1", - "@angular/localize": "github:angular/localize-builds#ef4c1e3562f99602b38312aabccb4cb5fb6bb53f", - "@angular/material": "github:angular/material-builds#998cd492b05bf024e5bb7a9a21e52a94dec740ef", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f173ac254a842de20a90694e34628c165989e9b6", - "@angular/platform-browser": "github:angular/platform-browser-builds#90c22fc35fde1feb2bc28435d23062443ddaae68", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#fbb14077cfb88dcdb4e5d1b7a177b3d127e9f8be", - "@angular/platform-server": "github:angular/platform-server-builds#0e40e41e36ffd1d1aa740438f11262542da4cd7e", - "@angular/router": "github:angular/router-builds#ac4ab9493afbfbcb3cb457682d651113938d490b", - "@angular/service-worker": "github:angular/service-worker-builds#4ffbe09669ce6958a3ffb669fa7a059aa9e735c6" + "@angular/animations": "github:angular/animations-builds#52e440a279796075d4a410e8352b6fd1c4cc2a4e", + "@angular/cdk": "github:angular/cdk-builds#1d00da20ec8300d289d74c4826b0b7168aaa9220", + "@angular/common": "github:angular/common-builds#e4e2a940a30841829b62eed596e85c90d9c0e4c5", + "@angular/compiler": "github:angular/compiler-builds#80e0c2e150a40414ee5453789a6805413964d025", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#7ab42f98dcb8d0098c048233ae331863e1cbe823", + "@angular/core": "github:angular/core-builds#8a794f6ee1668004477745d39aaa59efcbdc0376", + "@angular/forms": "github:angular/forms-builds#62f756ab9864e33483da6d3de877e5f50c457993", + "@angular/language-service": "github:angular/language-service-builds#367d12eb7a6967dcd6da6eea10dbb37a5dfc8cf4", + "@angular/localize": "github:angular/localize-builds#1894d4467d5cb4320e774c814d0872a8a7a17430", + "@angular/material": "github:angular/material-builds#4778ddc77ce6ff8e05967f47cee4675da5c6c91c", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#4b9109c754cca1c4f46b4a7aadeb876520a93876", + "@angular/platform-browser": "github:angular/platform-browser-builds#5fcd4a203b69fc7e0d14a774c2cdc96e663602c1", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#27669115b9d40764b8bd704d788076834b82a1c8", + "@angular/platform-server": "github:angular/platform-server-builds#312bb14489ba06ebeb2f437bc114137d81891fdb", + "@angular/router": "github:angular/router-builds#0a1b31fdf935973d3e4c97ddaa43771a13e08846", + "@angular/service-worker": "github:angular/service-worker-builds#3faf8a95e8b00777e37130bb5e1156caf6540aab" } } From bc481637bbc3e54b2239a2bcc85e21880b570b33 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 6 Jan 2026 22:39:08 +0000 Subject: [PATCH 2060/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- tests/e2e/ng-snapshot/package.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index c23398b6a93c..0f2058a23bf8 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#52e440a279796075d4a410e8352b6fd1c4cc2a4e", + "@angular/animations": "github:angular/animations-builds#23371fccefcb39e6a518e6b5a59690bec18e0ca6", "@angular/cdk": "github:angular/cdk-builds#1d00da20ec8300d289d74c4826b0b7168aaa9220", - "@angular/common": "github:angular/common-builds#e4e2a940a30841829b62eed596e85c90d9c0e4c5", - "@angular/compiler": "github:angular/compiler-builds#80e0c2e150a40414ee5453789a6805413964d025", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#7ab42f98dcb8d0098c048233ae331863e1cbe823", - "@angular/core": "github:angular/core-builds#8a794f6ee1668004477745d39aaa59efcbdc0376", - "@angular/forms": "github:angular/forms-builds#62f756ab9864e33483da6d3de877e5f50c457993", - "@angular/language-service": "github:angular/language-service-builds#367d12eb7a6967dcd6da6eea10dbb37a5dfc8cf4", - "@angular/localize": "github:angular/localize-builds#1894d4467d5cb4320e774c814d0872a8a7a17430", + "@angular/common": "github:angular/common-builds#3589a6da62f899edc0d28f5e8f4a51f5590320b3", + "@angular/compiler": "github:angular/compiler-builds#8414d9435325dfe6051a2a8a3ed725f3802f28e3", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#4cefffa419e345fc344246e8a0bc456bfedab902", + "@angular/core": "github:angular/core-builds#2074453a9188277518aaca6eec69a15f5878e260", + "@angular/forms": "github:angular/forms-builds#03f16af72e540d0622c4fe74b94a1d986449de0e", + "@angular/language-service": "github:angular/language-service-builds#f35f0c54211fc42d833e52249d10290e12b493e6", + "@angular/localize": "github:angular/localize-builds#0cff9a83741c04b28c42b8a9719949da660f9760", "@angular/material": "github:angular/material-builds#4778ddc77ce6ff8e05967f47cee4675da5c6c91c", "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#4b9109c754cca1c4f46b4a7aadeb876520a93876", - "@angular/platform-browser": "github:angular/platform-browser-builds#5fcd4a203b69fc7e0d14a774c2cdc96e663602c1", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#27669115b9d40764b8bd704d788076834b82a1c8", - "@angular/platform-server": "github:angular/platform-server-builds#312bb14489ba06ebeb2f437bc114137d81891fdb", - "@angular/router": "github:angular/router-builds#0a1b31fdf935973d3e4c97ddaa43771a13e08846", - "@angular/service-worker": "github:angular/service-worker-builds#3faf8a95e8b00777e37130bb5e1156caf6540aab" + "@angular/platform-browser": "github:angular/platform-browser-builds#a95c38bb173cd85727a5f481704dcd90e7f559d7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#22645554d754ec6865e74c74b32e966241b17627", + "@angular/platform-server": "github:angular/platform-server-builds#5ab6fb15a8af6b2af3b600ae3df44bd9f4e21f2a", + "@angular/router": "github:angular/router-builds#63fed7fd2e47a55bdcbf152f38126231f505df8c", + "@angular/service-worker": "github:angular/service-worker-builds#afddddc8c016767de0b5929070a1382542eefd6d" } } From 1e39c77a4fe272ccab1a1d8bd58eef1ce608a6c7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:48:34 -0500 Subject: [PATCH 2061/2162] fix(@angular/build): inject source-map-support for Vitest browser tests This change ensures that `source-map-support` is injected into the setup files when running Vitest tests in a browser environment. This allows stack traces from failing tests to correctly map back to the original source files, significantly improving debugging capabilities. A regression test has been added to `tests/vitest/browser-sourcemaps.ts` to verify that a failing test correctly identifies the source file in its stack trace. --- .../unit-test/runners/vitest/plugins.ts | 36 +++++++++++++++++ tests/e2e/tests/vitest/browser-sourcemaps.ts | 40 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 tests/e2e/tests/vitest/browser-sourcemaps.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index e4f3cfd5f810..4bd6666250e7 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -112,6 +112,12 @@ export async function createVitestConfigPlugin( delete config.plugins; } + // Add browser source map support + if (browser || testConfig?.browser?.enabled) { + projectPlugins.unshift(createSourcemapSupportPlugin()); + setupFiles.unshift('virtual:source-map-support'); + } + const projectResolver = createRequire(projectSourceRoot + '/').resolve; const projectDefaults: UserWorkspaceConfig = { @@ -310,6 +316,36 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins ]; } +function createSourcemapSupportPlugin(): VitestPlugins[0] { + return { + name: 'angular:source-map-support', + enforce: 'pre', + resolveId(source) { + if (source.includes('virtual:source-map-support')) { + return '\0source-map-support'; + } + }, + async load(id) { + if (id !== '\0source-map-support') { + return; + } + + const packageResolve = createRequire(__filename).resolve; + const supportPath = packageResolve('source-map-support/browser-source-map-support.js'); + + const content = await readFile(supportPath, 'utf-8'); + + // The `source-map-support` library currently relies on `this` being defined in the global scope. + // However, when running in an ESM environment, `this` is undefined. + // To workaround this, we patch the library to use `globalThis` instead of `this`. + return ( + content.replaceAll(/this\.(define|sourceMapSupport|base64js)/g, 'globalThis.$1') + + '\n;globalThis.sourceMapSupport.install();' + ); + }, + }; +} + async function generateCoverageOption( optionsCoverage: NormalizedUnitTestBuilderOptions['coverage'], configCoverage: VitestCoverageOption | undefined, diff --git a/tests/e2e/tests/vitest/browser-sourcemaps.ts b/tests/e2e/tests/vitest/browser-sourcemaps.ts new file mode 100644 index 000000000000..90c04457c7c8 --- /dev/null +++ b/tests/e2e/tests/vitest/browser-sourcemaps.ts @@ -0,0 +1,40 @@ +import assert from 'node:assert/strict'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { ng, noSilentNg } from '../../utils/process'; +import { installPackage } from '../../utils/packages'; +import { writeFile } from '../../utils/fs'; +import { stripVTControlCharacters } from 'node:util'; + +export default async function (): Promise { + await applyVitestBuilder(); + await installPackage('playwright@1'); + await installPackage('@vitest/browser-playwright@4'); + await ng('generate', 'component', 'my-comp'); + + // Add a failing test to verify source map support + await writeFile( + 'src/app/failing.spec.ts', + ` + describe('Failing Test', () => { + it('should fail', () => { + expect(true).toBe(false); + }); + }); + `, + ); + + try { + await noSilentNg('test', '--no-watch', '--browsers', 'chromiumHeadless'); + throw new Error('Expected "ng test" to fail.'); + } catch (error: any) { + const stdout = stripVTControlCharacters(error.stdout || error.message); + // We expect the failure from failing.spec.ts + assert.match(stdout, /1 failed/, 'Expected 1 test to fail.'); + // Check that the stack trace points to the correct file + assert.match( + stdout, + /\bsrc[\/\\]app[\/\\]failing\.spec\.ts:4:\d+/, + 'Expected stack trace to point to the source file.', + ); + } +} From 31132bc18ab69457e6fe01a26304c33248397aaf Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:47:56 +0000 Subject: [PATCH 2062/2162] refactor: update copyright year in license Update copyright year to current year. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 48adc1eb1829..5ec8e26b9eec 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2010-2025 Google LLC. https://angular.dev/license +Copyright (c) 2010-2026 Google LLC. https://angular.dev/license Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 87175f9dcdb7349dc8701fa1d5cf61c1b8542d42 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 7 Jan 2026 10:40:47 -0500 Subject: [PATCH 2063/2162] feat(@angular/build): disable TestBed teardown during debugging in Vitest When running unit tests in debug mode, it is beneficial to keep the component's DOM state intact after the test completes for inspection. This change disables the automatic TestBed teardown (destroyAfterEach) when the 'debug' option is enabled. --- .../src/builders/unit-test/runners/vitest/build-options.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts index 1c65d6fc4d50..7129ea4fff54 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/build-options.ts @@ -17,6 +17,7 @@ import { RunnerOptions } from '../api'; function createTestBedInitVirtualFile( providersFile: string | undefined, projectSourceRoot: string, + teardown: boolean, polyfills: string[] = [], ): string { const usesZoneJS = polyfills.includes('zone.js'); @@ -58,6 +59,7 @@ function createTestBedInitVirtualFile( getTestBed().initTestEnvironment([BrowserTestingModule, TestModule], platformBrowserTesting(), { errorOnUnknownElements: true, errorOnUnknownProperties: true, + ${teardown === false ? 'teardown: { destroyAfterEach: false },' : ''} }); } `; @@ -133,6 +135,7 @@ export async function getVitestBuildOptions( const testBedInitContents = createTestBedInitVirtualFile( providersFile, projectSourceRoot, + !options.debug, buildOptions.polyfills, ); From 32adc3a757a1e75cf8d44a227c57f7947053ca8c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 7 Jan 2026 11:28:50 -0500 Subject: [PATCH 2064/2162] fix(@angular/build): ensure correct project targeting during Vitest debugging This addresses issue #31652 where debugging failed to target the correct project instance. When running browser tests, Vitest appends the browser name to the project identifier. This change updates the CLI to match that naming convention when initiating a debug session, ensuring the correct project is selected. Fixes #31652 --- .../unit-test/runners/vitest/executor.ts | 22 ++++++++++++++++--- .../unit-test/runners/vitest/index.ts | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index 00782d1704cf..ed754d9f9c30 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -6,9 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import type { BuilderOutput } from '@angular-devkit/architect'; +import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; import assert from 'node:assert'; -import path, { join } from 'node:path'; +import path from 'node:path'; import type { Vitest } from 'vitest/node'; import { DevServerExternalResultMetadata, @@ -32,6 +32,7 @@ export class VitestExecutor implements TestExecutor { private normalizePath: ((id: string) => string) | undefined; private readonly projectName: string; private readonly options: NormalizedUnitTestBuilderOptions; + private readonly logger: BuilderContext['logger']; private readonly buildResultFiles = new Map(); private readonly externalMetadata: DevServerExternalResultMetadata = { implicitBrowser: [], @@ -51,9 +52,11 @@ export class VitestExecutor implements TestExecutor { projectName: string, options: NormalizedUnitTestBuilderOptions, testEntryPointMappings: Map | undefined, + logger: BuilderContext['logger'], ) { this.projectName = projectName; this.options = options; + this.logger = logger; if (testEntryPointMappings) { for (const [entryPoint, testFile] of testEntryPointMappings) { @@ -209,13 +212,26 @@ export class VitestExecutor implements TestExecutor { ? await findVitestBaseConfig([projectRoot, workspaceRoot]) : runnerConfig; + let project = projectName; + if (debug && browserOptions.browser?.instances) { + if (browserOptions.browser.instances.length > 1) { + this.logger.warn( + 'Multiple browsers are configured, but only the first browser will be used for debugging.', + ); + } + + // When running browser tests, Vitest appends the browser name to the project identifier. + // The project name must match this augmented name to ensure the correct project is targeted. + project = `${projectName} (${browserOptions.browser.instances[0].browser})`; + } + return startVitest( 'test', undefined, { config: externalConfigPath, root: workspaceRoot, - project: projectName, + project, outputFile, cache: cacheOptions.enabled ? undefined : false, testNamePattern: this.options.filter, diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index fed814bdd78e..081d635c1a2b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -67,7 +67,7 @@ const VitestTestRunner: TestRunner = { context.logger.info('Automatically searching for and using Vitest configuration file.'); } - return new VitestExecutor(projectName, options, testEntryPointMappings); + return new VitestExecutor(projectName, options, testEntryPointMappings, context.logger); }, }; From 1ad773671afa2849a966f9974cb30e7c8e8ed7d4 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 7 Jan 2026 10:26:27 -0800 Subject: [PATCH 2065/2162] fix(@angular/cli): update dependency @modelcontextprotocol/sdk to v1.25.2 This is a port of PR angular#32227. --- packages/angular/cli/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- pnpm-workspace.yaml | 1 + 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 07829c24b4c2..8872ceeee5b0 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,7 +27,7 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.25.1", + "@modelcontextprotocol/sdk": "1.25.2", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.46.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3dd14671ea0..ae5bd2cacaed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4877ddbc10c12fb75ef6bc9ff49295021ff2512a - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-next.4 version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -463,8 +463,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.4))(@types/node@24.10.4)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.25.1 - version: 1.25.1(zod@4.3.5) + specifier: 1.25.2 + version: 1.25.2(zod@4.3.5) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -2571,8 +2571,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.25.1': - resolution: {integrity: sha512-yO28oVFFC7EBoiKdAn+VqRm+plcfv4v0xp6osG/VsCB0NlPZWi87ajbCZZ8f/RvOFLEu7//rSRmuZZ7lMoe3gQ==} + '@modelcontextprotocol/sdk@1.25.2': + resolution: {integrity: sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -9358,11 +9358,11 @@ 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/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.34.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + '@google/genai': 1.34.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) '@inquirer/prompts': 8.1.0(@types/node@24.10.4) '@inquirer/type': 4.0.2(@types/node@24.10.4) '@octokit/auth-app': 8.1.2 @@ -10736,12 +10736,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.34.0(@modelcontextprotocol/sdk@1.25.1(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': + '@google/genai@1.34.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: - '@modelcontextprotocol/sdk': 1.25.1(zod@4.3.5) + '@modelcontextprotocol/sdk': 1.25.2(zod@4.3.5) transitivePeerDependencies: - bufferutil - supports-color @@ -11149,7 +11149,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.25.1(zod@4.3.5)': + '@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)': dependencies: '@hono/node-server': 1.19.7 ajv: 8.17.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ecfbec6f3cb9..bd4af2e2fc1b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,6 +22,7 @@ minimumReleaseAge: 1440 minimumReleaseAgeExclude: - '@angular-devkit/*' - '@angular/*' + - '@modelcontextprotocol/sdk@1.25.2' # Fix: https://www.cve.org/CVERecord?id=CVE-2026-0621 - '@ngtools/webpack' - '@schematics/*' - 'ng-packagr' From 42d4febf4698ac33f9aa5a2d2d6183adca34f7b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Fra=C5=9B?= Date: Mon, 29 Dec 2025 23:22:57 +0100 Subject: [PATCH 2066/2162] fix(@schematics/angular): update application schematics for module-based apps to use 'provideZoneChangeDetection' Replaces deprecated 'ngZoneEventCoalescing' with 'provideZoneChangeDetection({ eventCoalescing: true })' in 'main.ts.template' in schematics for initial commit --- .../application/files/module-files/src/main.ts.template | 5 +++-- packages/schematics/angular/application/index_spec.ts | 6 ++++-- 2 files changed, 7 insertions(+), 4 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 629780834c82..c0601c3aff28 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,9 +1,10 @@ <% if(!!viewEncapsulation) { %>import { ViewEncapsulation } from '@angular/core'; +<% }%><% if(!zoneless) { %>import { provideZoneChangeDetection } from '@angular/core'; <% }%>import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app<%= typeSeparator %>module'; platformBrowser().bootstrapModule(AppModule, { - <% if(!zoneless) { %>ngZoneEventCoalescing: true,<% } %><% if(!!viewEncapsulation) { %> - defaultEncapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } %> + <% if(!zoneless) { %> applicationProviders: [provideZoneChangeDetection({ eventCoalescing: true })], <% } %> + <% if(!!viewEncapsulation) { %> defaultEncapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } %> }) .catch(err => console.error(err)); diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index c2f91d110f27..841479b06280 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -687,7 +687,7 @@ describe('Application Schematic', () => { }); describe('standalone=false', () => { - it('should add the ngZoneEventCoalescing option by default with zone.js apps', async () => { + it('should add the provideZoneChangeDetection with event coalescing option by default with zone.js apps', async () => { const tree = await schematicRunner.runSchematic( 'application', { @@ -699,7 +699,9 @@ describe('Application Schematic', () => { ); const content = tree.readContent('/projects/foo/src/main.ts'); - expect(content).toContain('ngZoneEventCoalescing: true'); + expect(content).toContain( + 'applicationProviders: [provideZoneChangeDetection({ eventCoalescing: true })]', + ); }); it(`should set 'defaultEncapsulation' in main.ts when 'ViewEncapsulation' is provided`, async () => { From 9006ec057ced126f1c7822ffd36adee7748819ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Fra=C5=9B?= Date: Tue, 30 Dec 2025 21:27:08 +0100 Subject: [PATCH 2067/2162] fix(@schematics/angular): move 'provideZoneChangeDetection' to the root module --- .../app/app__typeSeparator__module.ts.template | 5 +++-- .../files/module-files/src/main.ts.template | 2 -- .../angular/application/index_spec.ts | 17 +++++++++++++---- .../angular/utility/standalone/rules_spec.ts | 2 +- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/schematics/angular/application/files/module-files/src/app/app__typeSeparator__module.ts.template b/packages/schematics/angular/application/files/module-files/src/app/app__typeSeparator__module.ts.template index 06ba3eb2a079..f7ad6f2cb515 100644 --- a/packages/schematics/angular/application/files/module-files/src/app/app__typeSeparator__module.ts.template +++ b/packages/schematics/angular/application/files/module-files/src/app/app__typeSeparator__module.ts.template @@ -1,4 +1,4 @@ -import { NgModule, provideBrowserGlobalErrorListeners } from '@angular/core'; +import { NgModule, provideBrowserGlobalErrorListeners<% if(!zoneless) { %>, provideZoneChangeDetection<% } %> } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; <% if (routing) { %> import { AppRoutingModule } from './app-routing<%= typeSeparator %>module';<% } %> @@ -13,7 +13,8 @@ import { App } from './app<%= suffix %>'; AppRoutingModule<% } %> ], providers: [ - provideBrowserGlobalErrorListeners() + provideBrowserGlobalErrorListeners(),<% if(!zoneless) { %> + provideZoneChangeDetection({ eventCoalescing: true }),<% } %> ], bootstrap: [App] }) 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 c0601c3aff28..f74887b16867 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,10 +1,8 @@ <% if(!!viewEncapsulation) { %>import { ViewEncapsulation } from '@angular/core'; -<% }%><% if(!zoneless) { %>import { provideZoneChangeDetection } from '@angular/core'; <% }%>import { platformBrowser } from '@angular/platform-browser'; import { AppModule } from './app/app<%= typeSeparator %>module'; platformBrowser().bootstrapModule(AppModule, { - <% if(!zoneless) { %> applicationProviders: [provideZoneChangeDetection({ eventCoalescing: true })], <% } %> <% if(!!viewEncapsulation) { %> defaultEncapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } %> }) .catch(err => console.error(err)); diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 841479b06280..173a4a0bde56 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -698,10 +698,8 @@ describe('Application Schematic', () => { workspaceTree, ); - const content = tree.readContent('/projects/foo/src/main.ts'); - expect(content).toContain( - 'applicationProviders: [provideZoneChangeDetection({ eventCoalescing: true })]', - ); + const content = tree.readContent('/projects/foo/src/app/app-module.ts'); + expect(content).toContain('provideZoneChangeDetection({ eventCoalescing: true })'); }); it(`should set 'defaultEncapsulation' in main.ts when 'ViewEncapsulation' is provided`, async () => { @@ -892,6 +890,17 @@ describe('Application Schematic', () => { }); describe('standalone: false', () => { + it('should add the provideZoneChangeDetection with event coalescing option by default with zone.js apps', async () => { + const options = { + ...defaultOptions, + standalone: false, + zoneless: false, + fileNameStyleGuide: '2016' as const, + }; + const tree = await schematicRunner.runSchematic('application', options, workspaceTree); + const content = tree.readContent('/projects/foo/src/app/app.module.ts'); + expect(content).toContain('provideZoneChangeDetection({ eventCoalescing: true })'); + }); it('should create a component with the correct template and style urls', async () => { const options = { ...defaultOptions, diff --git a/packages/schematics/angular/utility/standalone/rules_spec.ts b/packages/schematics/angular/utility/standalone/rules_spec.ts index 3208ed0d6f04..fe67b6adac65 100644 --- a/packages/schematics/angular/utility/standalone/rules_spec.ts +++ b/packages/schematics/angular/utility/standalone/rules_spec.ts @@ -422,7 +422,7 @@ describe('standalone utilities', () => { assertContains(content, `import { SOME_TOKEN } from '@my/module';`); assertContains( content, - `providers: [provideBrowserGlobalErrorListeners(),{ provide: SOME_TOKEN, useValue: 123 }]`, + `providers: [provideBrowserGlobalErrorListeners(),{ provide: SOME_TOKEN, useValue: 123 },]`, ); }); From 99326d3c6341668488cbb965b77d41cbcf5843d8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 7 Jan 2026 20:40:51 +0000 Subject: [PATCH 2068/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 18 +++++------ tests/e2e/ng-snapshot/package.json | 32 +++++++++---------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index ad2ea1029b51..b912e81ece43 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -54,7 +54,7 @@ "@angular/ssr": "workspace:*", "jsdom": "27.4.0", "less": "4.4.2", - "ng-packagr": "21.1.0-next.0", + "ng-packagr": "21.1.0-rc.0", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "4.0.16" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 610d05c31c94..35dd3d540076 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.1.0-next.0", + "ng-packagr": "21.1.0-rc.0", "undici": "7.18.0" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae5bd2cacaed..ccca55414163 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -429,8 +429,8 @@ importers: specifier: 4.4.2 version: 4.4.2 ng-packagr: - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -741,8 +741,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) ng-packagr: - specifier: 21.1.0-next.0 - version: 21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.18.0 version: 7.18.0 @@ -6997,12 +6997,12 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.1.0-next.0: - resolution: {integrity: sha512-DuNSGSiZVEOiMOWFjNENx04AEXuK6A6d1iOxYFYuAotYXLSnG1ghUSDN83c5lmdE1ISRXLvbnJEGRKu0vqBK7g==} + ng-packagr@21.1.0-rc.0: + resolution: {integrity: sha512-TumrPbeD7qiGULFa2BJEZ0ilG8QPFMzTil9uZm+CDwNvu9tTVP78vBzkK2JxxngDb/mz9VgjBFL2u/lzdz325Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': ^21.1.0-next || ^21.0.0 + '@angular/compiler-cli': ^21.1.0-next tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 typescript: '>=5.9 <6.0' @@ -16294,7 +16294,7 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-next.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) @@ -16303,7 +16303,7 @@ snapshots: ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.28.1 - chokidar: 4.0.3 + chokidar: 5.0.0 commander: 14.0.2 dependency-graph: 1.0.0 esbuild: 0.27.2 diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 0f2058a23bf8..8596480909b7 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#23371fccefcb39e6a518e6b5a59690bec18e0ca6", - "@angular/cdk": "github:angular/cdk-builds#1d00da20ec8300d289d74c4826b0b7168aaa9220", - "@angular/common": "github:angular/common-builds#3589a6da62f899edc0d28f5e8f4a51f5590320b3", - "@angular/compiler": "github:angular/compiler-builds#8414d9435325dfe6051a2a8a3ed725f3802f28e3", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#4cefffa419e345fc344246e8a0bc456bfedab902", - "@angular/core": "github:angular/core-builds#2074453a9188277518aaca6eec69a15f5878e260", - "@angular/forms": "github:angular/forms-builds#03f16af72e540d0622c4fe74b94a1d986449de0e", - "@angular/language-service": "github:angular/language-service-builds#f35f0c54211fc42d833e52249d10290e12b493e6", - "@angular/localize": "github:angular/localize-builds#0cff9a83741c04b28c42b8a9719949da660f9760", - "@angular/material": "github:angular/material-builds#4778ddc77ce6ff8e05967f47cee4675da5c6c91c", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#4b9109c754cca1c4f46b4a7aadeb876520a93876", - "@angular/platform-browser": "github:angular/platform-browser-builds#a95c38bb173cd85727a5f481704dcd90e7f559d7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#22645554d754ec6865e74c74b32e966241b17627", - "@angular/platform-server": "github:angular/platform-server-builds#5ab6fb15a8af6b2af3b600ae3df44bd9f4e21f2a", - "@angular/router": "github:angular/router-builds#63fed7fd2e47a55bdcbf152f38126231f505df8c", - "@angular/service-worker": "github:angular/service-worker-builds#afddddc8c016767de0b5929070a1382542eefd6d" + "@angular/animations": "github:angular/animations-builds#7d1d574e722bddf23658ba2aecbe90f7a20d3dcb", + "@angular/cdk": "github:angular/cdk-builds#5e4b9d2f2cd548245d09f554364610762a5a2c47", + "@angular/common": "github:angular/common-builds#f3deca7ff0a46c2993c08e875b5881257c8f757a", + "@angular/compiler": "github:angular/compiler-builds#31af18615c849a3ce319a281b00333ba2cf8d641", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#9e3870e2c1eee645d15c561c09fceb18df897ab6", + "@angular/core": "github:angular/core-builds#2838839f900584dd9d556455afbd518bc585a4b2", + "@angular/forms": "github:angular/forms-builds#0b9bdccb4aea204c00a1da591775d1650a5cce1e", + "@angular/language-service": "github:angular/language-service-builds#8dc7bc4d774289732fb4c887a8fbacb234eb2725", + "@angular/localize": "github:angular/localize-builds#2aaeba1a3f84c3593cf8971d8f23ce6275460bb4", + "@angular/material": "github:angular/material-builds#3f6bda06d3e7fcac8a993810b87f79a0b2b83ce3", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e9656894438ed6fac288b62fc822d2a70a0a4a17", + "@angular/platform-browser": "github:angular/platform-browser-builds#81df68a32060014f1c5e1ab20fddc481e6c293fb", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#09ba5aa26d445ec7f07ef8b21d9fc6a76b15742b", + "@angular/platform-server": "github:angular/platform-server-builds#88c1f8a56e9e78d93b92daa7245958fab732a9d9", + "@angular/router": "github:angular/router-builds#3162b28b4e94c04f52b263291b9b54074b93fc94", + "@angular/service-worker": "github:angular/service-worker-builds#80a6ec33d78fce9ceb1e289f2fe1e35231b441fa" } } From 1f131b4b8e13d73431250c24a11f416630f8a1db Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 7 Jan 2026 13:28:46 -0800 Subject: [PATCH 2069/2162] docs: release notes for the v20.3.14 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9760339d143..7bd53051779a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 20.3.14 (2026-01-07) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [ff366499e](https://github.com/angular/angular-cli/commit/ff366499eff87e9943e25904fd06d109a0fa0075) | fix | update dependency @modelcontextprotocol/sdk to v1.25.2 | + + + # 21.1.0-next.3 (2025-12-18) From 0a00c3e62ad8d650ab3664189f5e240adc7551b8 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Wed, 7 Jan 2026 13:38:17 -0800 Subject: [PATCH 2070/2162] docs: release notes for the v21.0.5 release --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bd53051779a..f0fce50666d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ + + +# 21.0.5 (2026-01-07) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------- | +| [249563749](https://github.com/angular/angular-cli/commit/24956374941f3753a24470bfdafaf6d3645a3ddb) | fix | use narrower types for new MCP TS SDK compatibility | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------------------- | +| [cbd0718b9](https://github.com/angular/angular-cli/commit/cbd0718b93c0d51331af772f578b6e0dc3dfbe9e) | fix | move 'provideZoneChangeDetection' to the root module | +| [33f7cf761](https://github.com/angular/angular-cli/commit/33f7cf761aa222e1754e039533831c729895e5e6) | fix | update application schematics for module-based apps to use 'provideZoneChangeDetection' | +| [37b14d1f7](https://github.com/angular/angular-cli/commit/37b14d1f7b18a607ada3e9a113c16f5e8a7669ef) | fix | update default app component message | +| [c37dccb09](https://github.com/angular/angular-cli/commit/c37dccb093f7b48027fac27bd78abe7f3e3e15ad) | fix | update default app component welcome message | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [2b9be3a7c](https://github.com/angular/angular-cli/commit/2b9be3a7cadc444e67d629c2a74c54f0c65f4a54) | fix | ensure correct project targeting during Vitest debugging | + + + # 20.3.14 (2026-01-07) From 1eda0a99f89f625f8db1ecfe4873a7672e625401 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 7 Jan 2026 12:15:07 -0500 Subject: [PATCH 2071/2162] feat(@angular/build): directly support ng-packagr in unit-test builder This change enables the `unit-test` builder to correctly extract base build options from `@angular/build:ng-packagr` targets. It parses the `ng-package.json` file to retrieve configuration for `assets`, `inlineStyleLanguage`, and `stylePreprocessorOptions`, ensuring that libraries can be unit-tested effectively. --- .../build/src/builders/unit-test/builder.ts | 75 ++++++++++++++++--- tests/e2e/tests/vitest/library.ts | 50 +++++++++++++ 2 files changed, 113 insertions(+), 12 deletions(-) create mode 100644 tests/e2e/tests/vitest/library.ts diff --git a/packages/angular/build/src/builders/unit-test/builder.ts b/packages/angular/build/src/builders/unit-test/builder.ts index 122039595bd9..6f2edd0281d7 100644 --- a/packages/angular/build/src/builders/unit-test/builder.ts +++ b/packages/angular/build/src/builders/unit-test/builder.ts @@ -12,7 +12,7 @@ import { targetStringFromTarget, } from '@angular-devkit/architect'; import assert from 'node:assert'; -import { rm } from 'node:fs/promises'; +import { readFile, rm } from 'node:fs/promises'; import path from 'node:path'; import { createVirtualModulePlugin } from '../../tools/esbuild/virtual-module-plugin'; import { assertIsError } from '../../utils/error'; @@ -244,22 +244,34 @@ export async function* execute( let buildTargetOptions: ApplicationBuilderInternalOptions; try { const builderName = await context.getBuilderNameForTarget(normalizedOptions.buildTarget); - if ( - builderName !== '@angular/build:application' && - // TODO: Add comprehensive support for ng-packagr. - builderName !== '@angular/build:ng-packagr' - ) { + if (builderName === '@angular/build:application') { + buildTargetOptions = (await context.validateOptions( + await context.getTargetOptions(normalizedOptions.buildTarget), + builderName, + )) as unknown as ApplicationBuilderInternalOptions; + } else if (builderName === '@angular/build:ng-packagr') { + const ngPackagrOptions = await context.validateOptions( + await context.getTargetOptions(normalizedOptions.buildTarget), + builderName, + ); + + buildTargetOptions = await transformNgPackagrOptions( + context, + ngPackagrOptions, + normalizedOptions.projectRoot, + ); + } else { context.logger.warn( `The 'buildTarget' is configured to use '${builderName}', which is not supported. ` + - `The 'unit-test' builder is designed to work with '@angular/build:application'. ` + + `The 'unit-test' builder is designed to work with '@angular/build:application' or '@angular/build:ng-packagr'. ` + 'Unexpected behavior or build failures may occur.', ); - } - buildTargetOptions = (await context.validateOptions( - await context.getTargetOptions(normalizedOptions.buildTarget), - builderName, - )) as unknown as ApplicationBuilderInternalOptions; + buildTargetOptions = (await context.validateOptions( + await context.getTargetOptions(normalizedOptions.buildTarget), + builderName, + )) as unknown as ApplicationBuilderInternalOptions; + } } catch (e) { assertIsError(e); context.logger.error( @@ -335,3 +347,42 @@ export async function* execute( yield { success: false }; } } + +async function transformNgPackagrOptions( + context: BuilderContext, + options: Record, + projectRoot: string, +): Promise { + const projectPath = options['project']; + + let ngPackagePath: string; + if (projectPath) { + if (typeof projectPath !== 'string') { + throw new Error('ng-packagr builder options "project" property must be a string.'); + } + ngPackagePath = path.join(context.workspaceRoot, projectPath); + } else { + ngPackagePath = path.join(projectRoot, 'ng-package.json'); + } + + let ngPackageJson; + try { + ngPackageJson = JSON.parse(await readFile(ngPackagePath, 'utf-8')); + } catch (e) { + assertIsError(e); + throw new Error(`Could not read ng-package.json at ${ngPackagePath}: ${e.message}`); + } + + const lib = ngPackageJson['lib'] || {}; + const styleIncludePaths = lib['styleIncludePaths'] || []; + const assets = ngPackageJson['assets'] || []; + const inlineStyleLanguage = ngPackageJson['inlineStyleLanguage']; + + return { + stylePreprocessorOptions: styleIncludePaths.length + ? { includePaths: styleIncludePaths } + : undefined, + assets: assets.length ? assets : undefined, + inlineStyleLanguage: typeof inlineStyleLanguage === 'string' ? inlineStyleLanguage : undefined, + } as ApplicationBuilderInternalOptions; +} diff --git a/tests/e2e/tests/vitest/library.ts b/tests/e2e/tests/vitest/library.ts new file mode 100644 index 000000000000..ba1e31dc38f8 --- /dev/null +++ b/tests/e2e/tests/vitest/library.ts @@ -0,0 +1,50 @@ +import assert from 'node:assert/strict'; +import { updateJsonFile } from '../../utils/project'; +import { ng, silentNpm } from '../../utils/process'; +import { createDir, writeFile } from '../../utils/fs'; + +export default async function (): Promise { + // Install Vitest deps + await silentNpm('install', 'vitest@^4.0.8', 'jsdom@^27.1.0', '--save-dev'); + + // Generate a library + await ng('generate', 'library', 'my-lib', '--test-runner', 'vitest'); + + // Setup Style Include Paths test + // 1. Create a shared SCSS file + await createDir('projects/my-lib/src/styles'); + await writeFile('projects/my-lib/src/styles/_vars.scss', '$primary-color: red;'); + + // 2. Update ng-package.json to include the styles directory + await updateJsonFile('projects/my-lib/ng-package.json', (json) => { + json['lib'] = { + ...json['lib'], + styleIncludePaths: ['./src/styles'], + }; + }); + + // 3. Update the component to use SCSS and import the shared file + // Rename CSS to SCSS + await ng( + 'generate', + 'component', + 'styled-comp', + '--project=my-lib', + '--style=scss', + '--skip-import', + ); + + await writeFile( + 'projects/my-lib/src/lib/styled-comp/styled-comp.component.scss', + ` + @use 'vars'; + p { color: vars.$primary-color; } + `, + ); + + // Run the library tests + const { stdout } = await ng('test', 'my-lib'); + + // Expect tests to pass + assert.match(stdout, /passed/, 'Expected library tests to pass.'); +} From 87fae1b3a756fc527169db8766d6b8718a694ef1 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 8 Jan 2026 08:00:24 +0000 Subject: [PATCH 2072/2162] build: remove `@modelcontextprotocol/sdk` from the `minimumReleaseAgeExclude` list in `pnpm-workspace.yaml` This is no longer needed. --- pnpm-workspace.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bd4af2e2fc1b..ecfbec6f3cb9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,7 +22,6 @@ minimumReleaseAge: 1440 minimumReleaseAgeExclude: - '@angular-devkit/*' - '@angular/*' - - '@modelcontextprotocol/sdk@1.25.2' # Fix: https://www.cve.org/CVERecord?id=CVE-2026-0621 - '@ngtools/webpack' - '@schematics/*' - 'ng-packagr' From c728ea65db6eeacee19aa4f119d9d72ed0ba2b00 Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Thu, 8 Jan 2026 12:07:58 -0800 Subject: [PATCH 2073/2162] release: bump the next branch to v21.2.0-next.0 --- package.json | 2 +- renovate.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index aa01b2d18647..e1454991deb0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/devkit-repo", - "version": "21.1.0-next.3", + "version": "21.2.0-next.0", "private": true, "description": "Software Development Kit for Angular", "keywords": [ diff --git a/renovate.json b/renovate.json index 3b2c5ab2f6a6..293a1aa46277 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,6 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "baseBranchPatterns": ["main", "21.0.x"], + "baseBranchPatterns": ["main", "21.1.x"], "extends": ["github>angular/dev-infra//renovate-presets/default.json5"], "ignoreDeps": ["less"], "ignorePaths": ["tests/e2e/assets/**", "tests/schematics/update/packages/**"], From 937c71bba3b80e9466a2ac4d29607c6191607d2d Mon Sep 17 00:00:00 2001 From: Jan Martin Date: Thu, 8 Jan 2026 12:07:59 -0800 Subject: [PATCH 2074/2162] docs: release notes for the v21.1.0-rc.0 release --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0fce50666d1..24e453dbe2a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,39 @@ + + +# 21.1.0-rc.0 (2026-01-08) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | +| [772e6efe7](https://github.com/angular/angular-cli/commit/772e6efe7acb2d2318a57ba77092a85fc286c51b) | feat | add 'test' and 'e2e' MCP tools | +| [8efb86318](https://github.com/angular/angular-cli/commit/8efb8631842401e219e20dd7955512d4a90a28a3) | feat | Add "all" as an experimental tool group | +| [316fca862](https://github.com/angular/angular-cli/commit/316fca8626d51b28ea8cd840f3815b7c6dfcfffa) | fix | handle array output from npm view in manifest parser | +| [1ad773671](https://github.com/angular/angular-cli/commit/1ad773671afa2849a966f9974cb30e7c8e8ed7d4) | fix | update dependency @modelcontextprotocol/sdk to v1.25.2 | +| [45d4f5668](https://github.com/angular/angular-cli/commit/45d4f5668018362f90fcc4cdc487470286f03c02) | fix | update yarn berry package manager configuration | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------------------- | +| [9006ec057](https://github.com/angular/angular-cli/commit/9006ec057ced126f1c7822ffd36adee7748819ed) | fix | move 'provideZoneChangeDetection' to the root module | +| [42d4febf4](https://github.com/angular/angular-cli/commit/42d4febf4698ac33f9aa5a2d2d6183adca34f7b5) | fix | update application schematics for module-based apps to use 'provideZoneChangeDetection' | +| [5dfc0eea0](https://github.com/angular/angular-cli/commit/5dfc0eea03c1faecd636fac775b0f5bc5f0ed430) | fix | update default app component message | +| [424a465df](https://github.com/angular/angular-cli/commit/424a465df7fa131803de4184f787ad9573a65090) | fix | update default app component welcome message | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | +| [1eda0a99f](https://github.com/angular/angular-cli/commit/1eda0a99f89f625f8db1ecfe4873a7672e625401) | feat | directly support ng-packagr in unit-test builder | +| [87175f9dc](https://github.com/angular/angular-cli/commit/87175f9dcdb7349dc8701fa1d5cf61c1b8542d42) | feat | disable TestBed teardown during debugging in Vitest | +| [32adc3a75](https://github.com/angular/angular-cli/commit/32adc3a757a1e75cf8d44a227c57f7947053ca8c) | fix | ensure correct project targeting during Vitest debugging | +| [1e39c77a4](https://github.com/angular/angular-cli/commit/1e39c77a4fe272ccab1a1d8bd58eef1ce608a6c7) | fix | inject source-map-support for Vitest browser tests | +| [3fd7dcd76](https://github.com/angular/angular-cli/commit/3fd7dcd764be0d0afb9cd792d53268d6f314df83) | fix | normalize roots to POSIX in test discovery for Windows compatibility | +| [164e7dbbc](https://github.com/angular/angular-cli/commit/164e7dbbc2b06bbd5aab84937c903e0590591c60) | fix | resolve test files correctly on Windows when using non-C drives | + + + # 21.0.5 (2026-01-07) From 27c55089c3674339979303dc24b527b37f9a366e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 8 Jan 2026 09:09:04 +0000 Subject: [PATCH 2075/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 2 +- packages/angular/build/package.json | 8 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 262 +++++++++++------- 4 files changed, 167 insertions(+), 109 deletions(-) diff --git a/package.json b/package.json index e1454991deb0..a128a8bbe6f2 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.9.3", - "undici": "7.18.0", + "undici": "7.18.2", "unenv": "^1.10.0", "verdaccio": "6.2.4", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index b912e81ece43..73ae171a82e1 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,13 +37,13 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.58", - "sass": "1.97.1", + "rolldown": "1.0.0-beta.59", + "sass": "1.97.2", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.18.0", - "vite": "7.3.0", + "undici": "7.18.2", + "vite": "7.3.1", "watchpack": "2.5.0" }, "optionalDependencies": { diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 35dd3d540076..33ba53ba4330 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.97.1", + "sass": "1.97.2", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -69,7 +69,7 @@ "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", "ng-packagr": "21.1.0-rc.0", - "undici": "7.18.0" + "undici": "7.18.2" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccca55414163..b7d989a2eb70 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,8 +287,8 @@ importers: specifier: 5.9.3 version: 5.9.3 undici: - specifier: 7.18.0 - version: 7.18.0 + specifier: 7.18.2 + version: 7.18.2 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -318,7 +318,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.16 - version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -330,7 +330,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -354,7 +354,7 @@ importers: version: 5.1.21(@types/node@24.10.4) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -392,11 +392,11 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.58 - version: 1.0.0-beta.58 + specifier: 1.0.0-beta.59 + version: 1.0.0-beta.59 sass: - specifier: 1.97.1 - version: 1.97.1 + specifier: 1.97.2 + version: 1.97.2 semver: specifier: 7.7.3 version: 7.7.3 @@ -407,11 +407,11 @@ importers: specifier: 0.2.15 version: 0.2.15 undici: - specifier: 7.18.0 - version: 7.18.0 + specifier: 7.18.2 + version: 7.18.2 vite: - specifier: 7.3.0 - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 7.3.1 + version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.5.0 version: 2.5.0 @@ -439,7 +439,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -689,11 +689,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.97.1 - version: 1.97.1 + specifier: 1.97.2 + version: 1.97.2 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)) + version: 16.0.6(sass@1.97.2)(webpack@5.104.1(esbuild@0.27.2)) semver: specifier: 7.7.3 version: 7.7.3 @@ -744,8 +744,8 @@ importers: specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: - specifier: 7.18.0 - version: 7.18.0 + specifier: 7.18.2 + version: 7.18.2 optionalDependencies: esbuild: specifier: 0.27.2 @@ -2888,8 +2888,8 @@ packages: resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} - '@oxc-project/types@0.106.0': - resolution: {integrity: sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==} + '@oxc-project/types@0.107.0': + resolution: {integrity: sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -3041,89 +3041,89 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.58': - resolution: {integrity: sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==} + '@rolldown/binding-android-arm64@1.0.0-beta.59': + resolution: {integrity: sha512-6yLLgyswYwiCfls9+hoNFY9F8TQdwo15hpXDHzlAR0X/GojeKF+AuNcXjYNbOJ4zjl/5D6lliE8CbpB5t1OWIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.58': - resolution: {integrity: sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.59': + resolution: {integrity: sha512-hqGXRc162qCCIOAcHN2Cw4eXiVTwYsMFLOhAy1IG2CxY+dwc/l4Ga+dLPkLor3Ikqy5WDn+7kxHbbh6EmshEpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.58': - resolution: {integrity: sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==} + '@rolldown/binding-darwin-x64@1.0.0-beta.59': + resolution: {integrity: sha512-ezvvGuhteE15JmMhJW0wS7BaXmhwLy1YHeEwievYaPC1PgGD86wgBKfOpHr9tSKllAXbCe0BeeMvasscWLhKdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.58': - resolution: {integrity: sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.59': + resolution: {integrity: sha512-4fhKVJiEYVd5n6no/mrL3LZ9kByfCGwmONOrdtvx8DJGDQhehH/q3RfhG3V/4jGKhpXgbDjpIjkkFdybCTcgew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': - resolution: {integrity: sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59': + resolution: {integrity: sha512-T3Y52sW6JAhvIqArBw+wtjNU1Ieaz4g0NBxyjSJoW971nZJBZygNlSYx78G4cwkCmo1dYTciTPDOnQygLV23pA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': - resolution: {integrity: sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59': + resolution: {integrity: sha512-NIW40jQDSQap2KDdmm9z3B/4OzWJ6trf8dwx3FD74kcQb3v34ThsBFTtzE5KjDuxnxgUlV+DkAu+XgSMKrgufw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': - resolution: {integrity: sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.59': + resolution: {integrity: sha512-CCKEk+H+8c0WGe/8n1E20n85Tq4Pv+HNAbjP1KfUXW+01aCWSMjU56ChNrM2tvHnXicfm7QRNoZyfY8cWh7jLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': - resolution: {integrity: sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.59': + resolution: {integrity: sha512-VlfwJ/HCskPmQi8R0JuAFndySKVFX7yPhE658o27cjSDWWbXVtGkSbwaxstii7Q+3Rz87ZXN+HLnb1kd4R9Img==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': - resolution: {integrity: sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.59': + resolution: {integrity: sha512-kuO92hTRyGy0Ts3Nsqll0rfO8eFsEJe9dGQGktkQnZ2hrJrDVN0y419dMgKy/gB2S2o7F2dpWhpfQOBehZPwVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': - resolution: {integrity: sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.59': + resolution: {integrity: sha512-PXAebvNL4sYfCqi8LdY4qyFRacrRoiPZLo3NoUmiTxm7MPtYYR8CNtBGNokqDmMuZIQIecRaD/jbmFAIDz7DxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': - resolution: {integrity: sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.59': + resolution: {integrity: sha512-yJoklQg7XIZq8nAg0bbkEXcDK6sfpjxQGxpg2Nd6ERNtvg+eOaEBRgPww0BVTrYFQzje1pB5qPwC2VnJHT3koQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': - resolution: {integrity: sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59': + resolution: {integrity: sha512-ljZ4+McmCbIuZwEBaoGtiG8Rq2nJjaXEnLEIx+usWetXn1ECjXY0LAhkELxOV6ytv4ensEmoJJ8nXg47hRMjlw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': - resolution: {integrity: sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.59': + resolution: {integrity: sha512-bMY4tTIwbdZljW+xe/ln1hvs0SRitahQSXfWtvgAtIzgSX9Ar7KqJzU7lRm33YTRFIHLULRi53yNjw9nJGd6uQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.58': - resolution: {integrity: sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==} + '@rolldown/pluginutils@1.0.0-beta.59': + resolution: {integrity: sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -7814,8 +7814,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.58: - resolution: {integrity: sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==} + rolldown@1.0.0-beta.59: + resolution: {integrity: sha512-Slm000Gd8/AO9z4Kxl4r8mp/iakrbAuJ1L+7ddpkNxgQ+Vf37WPvY63l3oeyZcfuPD1DRrUYBsRPIXSOhvOsmw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -7908,8 +7908,8 @@ packages: webpack: optional: true - sass@1.97.1: - resolution: {integrity: sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==} + sass@1.97.2: + resolution: {integrity: sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==} engines: {node: '>=14.0.0'} hasBin: true @@ -8614,8 +8614,8 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - undici@7.18.0: - resolution: {integrity: sha512-CfPufgPFHCYu0W4h1NiKW9+tNJ39o3kWm7Cm29ET1enSJx+AERfz7A2wAr26aY0SZbYzZlTBQtcHy15o60VZfQ==} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -8783,6 +8783,46 @@ packages: yaml: optional: true + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@4.0.16: resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -11480,7 +11520,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.38.0': {} - '@oxc-project/types@0.106.0': {} + '@oxc-project/types@0.107.0': {} '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -11606,48 +11646,48 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.58': + '@rolldown/binding-android-arm64@1.0.0-beta.59': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.58': + '@rolldown/binding-darwin-arm64@1.0.0-beta.59': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.58': + '@rolldown/binding-darwin-x64@1.0.0-beta.59': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.58': + '@rolldown/binding-freebsd-x64@1.0.0-beta.59': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.59': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.59': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.59': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.59': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.59': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.59': optional: true - '@rolldown/pluginutils@1.0.0-beta.58': {} + '@rolldown/pluginutils@1.0.0-beta.59': {} '@rollup/plugin-alias@6.0.0(rollup@4.55.1)': optionalDependencies: @@ -12473,11 +12513,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.16 @@ -12490,7 +12530,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12503,13 +12543,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.16': dependencies: @@ -16316,7 +16356,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.97.1 + sass: 1.97.2 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -17266,24 +17306,24 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-beta.58: + rolldown@1.0.0-beta.59: dependencies: - '@oxc-project/types': 0.106.0 - '@rolldown/pluginutils': 1.0.0-beta.58 + '@oxc-project/types': 0.107.0 + '@rolldown/pluginutils': 1.0.0-beta.59 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.58 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.58 - '@rolldown/binding-darwin-x64': 1.0.0-beta.58 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.58 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.58 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.58 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.58 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.58 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.58 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.58 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.58 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.58 + '@rolldown/binding-android-arm64': 1.0.0-beta.59 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.59 + '@rolldown/binding-darwin-x64': 1.0.0-beta.59 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.59 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.59 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.59 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.59 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.59 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.59 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.59 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.59 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.59 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.59 rollup-license-plugin@3.1.0: dependencies: @@ -17387,14 +17427,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)): + sass-loader@16.0.6(sass@1.97.2)(webpack@5.104.1(esbuild@0.27.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.97.1 + sass: 1.97.2 webpack: 5.104.1(esbuild@0.27.2) - sass@1.97.1: + sass@1.97.2: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -18266,7 +18306,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.18.0: {} + undici@7.18.2: {} unenv@1.10.0: dependencies: @@ -18432,7 +18472,25 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.55.1 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.10.4 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.97.2 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -18445,15 +18503,15 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.97.1 + sass: 1.97.2 terser: 5.44.1 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -18470,7 +18528,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 From f2917f5ab03deabaee6d8eea3de844bc930a6e9e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 9 Jan 2026 19:37:03 +0000 Subject: [PATCH 2076/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 ++-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +-- MODULE.bazel | 2 +- MODULE.bazel.lock | 4 +- package.json | 28 +- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 282 +++++++++--------- tests/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 237 insertions(+), 237 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 7b756215a472..105c9331f9e8 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + - uses: angular/dev-infra/github-actions/branch-manager@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 730d5368fbaf..649eee44045d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - 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 585f2d1bfc8d..8241492b2036 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + - uses: angular/dev-infra/github-actions/pull-request-labeling@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + - uses: angular/dev-infra/github-actions/post-approval-changes@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index fa610e65c161..b60cc72aa240 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@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + - uses: angular/dev-infra/github-actions/feature-request@977bc9d747d9ddfe610fc96009212dd14c645ef6 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 28be10bdcd3f..0e92e0a62c82 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@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - 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@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - 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 e06c3f3a6dbc..7d0ca76bcc47 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/linting/licenses@977bc9d747d9ddfe610fc96009212dd14c645ef6 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 2957ffb4cf2b..091427bd52b0 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "87ed54ddedde42b443be7c6fe36cdaf0a907ea39", + commit = "977bc9d747d9ddfe610fc96009212dd14c645ef6", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index dc0bf9948c80..f78ddeb904ea 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -412,7 +412,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "zVV86HvMwDBJ8IsFt27k/Sjq0vCMPr8b8X9OAuprQ6w=", - "usagesDigest": "fkR8y929BQ1GFezNYBR/HXJUcMa3NtJvhzsZrG8I9vI=", + "usagesDigest": "eBdoLuun2Ll2wMv7+g0B3OCtLdHCLOA3bqzuEktDxvU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1093,7 +1093,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "S8pbOD3W4rSYjK/dNi5FSVLmT25mLbwVs9g/9fC2SN8=", + "usagesDigest": "WnPwx+ah3/p5VnBg2wk1me0H73eqUa7y8C5BV/XVZbg=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index a128a8bbe6f2..020c3ec315e0 100644 --- a/package.json +++ b/package.json @@ -42,20 +42,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.1.0-next.4", - "@angular/cdk": "21.1.0-next.3", - "@angular/common": "21.1.0-next.4", - "@angular/compiler": "21.1.0-next.4", - "@angular/compiler-cli": "21.1.0-next.4", - "@angular/core": "21.1.0-next.4", - "@angular/forms": "21.1.0-next.4", - "@angular/localize": "21.1.0-next.4", - "@angular/material": "21.1.0-next.3", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#4877ddbc10c12fb75ef6bc9ff49295021ff2512a", - "@angular/platform-browser": "21.1.0-next.4", - "@angular/platform-server": "21.1.0-next.4", - "@angular/router": "21.1.0-next.4", - "@angular/service-worker": "21.1.0-next.4", + "@angular/animations": "21.1.0-rc.0", + "@angular/cdk": "21.1.0-next.4", + "@angular/common": "21.1.0-rc.0", + "@angular/compiler": "21.1.0-rc.0", + "@angular/compiler-cli": "21.1.0-rc.0", + "@angular/core": "21.1.0-rc.0", + "@angular/forms": "21.1.0-rc.0", + "@angular/localize": "21.1.0-rc.0", + "@angular/material": "21.1.0-next.4", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5e6b5c157aa13f92ef88a51d87874607f517d30c", + "@angular/platform-browser": "21.1.0-rc.0", + "@angular/platform-server": "21.1.0-rc.0", + "@angular/router": "21.1.0-rc.0", + "@angular/service-worker": "21.1.0-rc.0", "@babel/core": "7.28.5", "@bazel/bazelisk": "1.26.0", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index b3ca917e1b08..dc4d51362b31 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.1.0-next.4", - "@angular/compiler": "21.1.0-next.4", - "@angular/core": "21.1.0-next.4", - "@angular/platform-browser": "21.1.0-next.4", - "@angular/platform-server": "21.1.0-next.4", - "@angular/router": "21.1.0-next.4", + "@angular/common": "21.1.0-rc.0", + "@angular/compiler": "21.1.0-rc.0", + "@angular/core": "21.1.0-rc.0", + "@angular/platform-browser": "21.1.0-rc.0", + "@angular/platform-server": "21.1.0-rc.0", + "@angular/router": "21.1.0-rc.0", "@schematics/angular": "workspace:*", "beasties": "0.3.5" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 5947e89fe2b8..819cffa5f205 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": "21.1.0-next.4", - "@angular/compiler-cli": "21.1.0-next.4", + "@angular/compiler": "21.1.0-rc.0", + "@angular/compiler-cli": "21.1.0-rc.0", "typescript": "5.9.3", "webpack": "5.104.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7d989a2eb70..d10b7589a173 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': - specifier: 21.1.0-next.3 - version: 21.1.0-next.3(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/common': specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + version: 21.1.0-next.4(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/common': + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4 + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0 '@angular/compiler-cli': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) '@angular/core': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(@angular/compiler@21.1.0-next.4) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.1.0-rc.0) '@angular/material': - specifier: 21.1.0-next.3 - version: 21.1.0-next.3(5911ac44acdb5e81564606f5886cc827) + specifier: 21.1.0-next.4 + version: 21.1.0-next.4(b051653d7cc612357511ba8a2f98a625) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4877ddbc10c12fb75ef6bc9ff49295021ff2512a - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5e6b5c157aa13f92ef88a51d87874607f517d30c + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5e6b5c157aa13f92ef88a51d87874607f517d30c(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) '@angular/platform-browser': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.4)(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-rc.0)(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.5 version: 7.28.5 @@ -430,7 +430,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -527,23 +527,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4 + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0 '@angular/core': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.4)(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-rc.0)(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -742,7 +742,7 @@ importers: version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) ng-packagr: specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.18.2 version: 7.18.2 @@ -834,11 +834,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4 + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0 '@angular/compiler-cli': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) + specifier: 21.1.0-rc.0 + version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -950,47 +950,47 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.1.0-next.4': - resolution: {integrity: sha512-GtbawUvSBiUX5/DPLJh0iQcsdqLaNhrs0X7XET/6DyKDK39dlWjOLc/etBPQc7RlbP1QzlbpsISb/Gu0rcbv5A==} + '@angular/animations@21.1.0-rc.0': + resolution: {integrity: sha512-Vk7+xhoM+pSmIjZsVJ9Vw5pg14tSS06xe9eEil1mWqmfZf/LmoKXvc6BQ7wUa1ueynI1xbspc3tPuC26792ljQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.4 + '@angular/core': 21.1.0-rc.0 - '@angular/cdk@21.1.0-next.3': - resolution: {integrity: sha512-1NxzybXwBefUdOX5HzffjgZg4AwYuogDfRDgViTSzM4yZsVPup5+dDafwZAjYu90qdjriH5d/Lf6PUxhp2rLtA==} + '@angular/cdk@21.1.0-next.4': + resolution: {integrity: sha512-hF4ZIgMhG1TFT6XnOcK7G00IsOqMPmXkcMgVHz2bmwoSXlqfpUCVQKAhGHRHrMLQqUMckecYiWYG0njeWrsHkw==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.1.0-next.4': - resolution: {integrity: sha512-HNM0eaZ86pXQZnmI6MlVj0FvvI3wF5mBkGyMN8Ktuswf9DUq04xBkliLiMwkb5UFmeSibxE3mUaMymw92Nn4fA==} + '@angular/common@21.1.0-rc.0': + resolution: {integrity: sha512-wz7wwrU3SZv9UMrxS1QhtJGLg6MXkucHztrqQzj+IBsetnHZiaQo+Basycgx17xUUFNCMH0B/NXt+iK3yHp04A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-next.4 + '@angular/core': 21.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.1.0-next.4': - resolution: {integrity: sha512-iW+8gnGSUqCv4WdN3LMv9ikh9vHfKnbfaG01Hvzxs+q4tL3xVRDezeL+EnpaIdmKsCOIfsYrWwAXNfMd48S4Lw==} + '@angular/compiler-cli@21.1.0-rc.0': + resolution: {integrity: sha512-a8ibvejDuviw5XwLBJDPE1JStCakGftJNKU/UDz73ob+OTaM3yHB7jvFwCdOhrjkPL5tJKpEoUxe8wQvmLrksA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.4 + '@angular/compiler': 21.1.0-rc.0 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.1.0-next.4': - resolution: {integrity: sha512-uY4Yg3OJ/DL6AlqMjO8VXgKiFHJK3QspFJzslkJKys2d8I7a7YIoWxYRJ9ZUfWW++8Swig17pL9NOrRLXx+iQg==} + '@angular/compiler@21.1.0-rc.0': + resolution: {integrity: sha512-rrsuuN6/2WtAT82liJXY1XOreonM3VcrOr/ouS38OoZ1NDIEgfv97RKW14It8+1pgpJeXAGsSzkfF3gqwVp2Ig==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.1.0-next.4': - resolution: {integrity: sha512-aJAGd+8o/8vle68hAJGah/DMQVD4/vFf/lDhnqe69sFLY7HLeq5UdBjIu00nZ1DUVeL0n/QOA97bLRICINhVrg==} + '@angular/core@21.1.0-rc.0': + resolution: {integrity: sha512-uXNWMDCiz+g05yfH1Qjdy6goMe4wbRZ+hAsQWxQtnVNdLUvnLsUUdTAAazQvPQpcJUq4jOeu/Wv9nrqrJPDoCA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.1.0-next.4 + '@angular/compiler': 21.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -999,74 +999,74 @@ packages: zone.js: optional: true - '@angular/forms@21.1.0-next.4': - resolution: {integrity: sha512-GluP6ZCId5DSukrgx/RlJX2CsVwHsRTSO8wAdYsqk2JIQpSPDtJk14RzvdHnMGeuBHrWn2dy88hq8G6W0SlQDA==} + '@angular/forms@21.1.0-rc.0': + resolution: {integrity: sha512-3/F6J62Oq9/DiSI39ePvA7YMtZ2pFOk5vMi2FWqPrcOFJ34HxnVTMoxFKpktsrz4mStBvi6DSm0o788I6ImDbw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.4 - '@angular/core': 21.1.0-next.4 - '@angular/platform-browser': 21.1.0-next.4 + '@angular/common': 21.1.0-rc.0 + '@angular/core': 21.1.0-rc.0 + '@angular/platform-browser': 21.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.1.0-next.4': - resolution: {integrity: sha512-awaQi5ib3UteQrIpxZmVrPBLnpAiPFeqVaogj0+hbn5dIvcQ4qbnjq3aTT/eR64aDGL6hByJ2e0Ac5fmVKUAEw==} + '@angular/localize@21.1.0-rc.0': + resolution: {integrity: sha512-qUMTFo/Ujtjf1hbElA1cT9v6LXiZ3BScdM9H8RH5VbnhjhOGculTV5IDy0KzZ6RMVS2z71vl2XzNoaFe7Dd4Ag==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-next.4 - '@angular/compiler-cli': 21.1.0-next.4 + '@angular/compiler': 21.1.0-rc.0 + '@angular/compiler-cli': 21.1.0-rc.0 - '@angular/material@21.1.0-next.3': - resolution: {integrity: sha512-m59JnFOUpTk5yLAYpJnk+nfvhzUO7tIG/WHFFOD2VmqWuadyZ+k6M4bQPy0ereumUcLue1QN7ZM6UpJWlgRqVQ==} + '@angular/material@21.1.0-next.4': + resolution: {integrity: sha512-ykfaHuScS98Aexo5x8WN+LrbGxBIhYnEtNw0ba5bdL1jNoWZI3iFANk9wLb3u9Mw+G1qrbO4B+60VPKdp7jVbw==} peerDependencies: - '@angular/cdk': 21.1.0-next.3 + '@angular/cdk': 21.1.0-next.4 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/4877ddbc10c12fb75ef6bc9ff49295021ff2512a': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4877ddbc10c12fb75ef6bc9ff49295021ff2512a} - version: 0.0.0-87ed54ddedde42b443be7c6fe36cdaf0a907ea39 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5e6b5c157aa13f92ef88a51d87874607f517d30c': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5e6b5c157aa13f92ef88a51d87874607f517d30c} + version: 0.0.0-977bc9d747d9ddfe610fc96009212dd14c645ef6 hasBin: true - '@angular/platform-browser@21.1.0-next.4': - resolution: {integrity: sha512-3Tntq39GTw6wWsp92FZ438mz0eILW+9aXh/r0BzRTFnr2QtDrpEOnLqTNfdxJlS/NEYyrSmP7XzkmAlt13zu2g==} + '@angular/platform-browser@21.1.0-rc.0': + resolution: {integrity: sha512-igb4Y7rtZtfltNdA/+p57EcFD9rrH8YMDdVSGXSCiJD+rmQKelmwzjRfpRu1fTBjLWYt9KdS+jUIO1x6IljsuQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.1.0-next.4 - '@angular/common': 21.1.0-next.4 - '@angular/core': 21.1.0-next.4 + '@angular/animations': 21.1.0-rc.0 + '@angular/common': 21.1.0-rc.0 + '@angular/core': 21.1.0-rc.0 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.1.0-next.4': - resolution: {integrity: sha512-R+FzXYCjNV6T7iMDPZ18FrSsTBZx200DU+ivKCMwUR9nwPYnA4oD+YwZKd+OgZrQqo4p5T/seXWScnqROopvQg==} + '@angular/platform-server@21.1.0-rc.0': + resolution: {integrity: sha512-+iKbNPXYqUktufLsVKI+dYg9U+ywbFhXOR5BSG4blN8QkyGqY80Dnt6pn7wMJSmrsz25+aUf9+8wSZkfBEkZWA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.4 - '@angular/compiler': 21.1.0-next.4 - '@angular/core': 21.1.0-next.4 - '@angular/platform-browser': 21.1.0-next.4 + '@angular/common': 21.1.0-rc.0 + '@angular/compiler': 21.1.0-rc.0 + '@angular/core': 21.1.0-rc.0 + '@angular/platform-browser': 21.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.1.0-next.4': - resolution: {integrity: sha512-2ZLGbA57w9zA+yO6iXMuSaORJbD2jMoFRrKcMHamDhw81rpbJ3zcBjQ+I8GeAVgus5irWRr/6dYOmgy9kSldkg==} + '@angular/router@21.1.0-rc.0': + resolution: {integrity: sha512-PWh7Q9EHed137PdlFtbt7RIpcH6+PY9bpXhdU2B1KkzlOFV0nOjbn4lYSMQjARGp42KgjlSoZd9LSLl02Dg6UQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-next.4 - '@angular/core': 21.1.0-next.4 - '@angular/platform-browser': 21.1.0-next.4 + '@angular/common': 21.1.0-rc.0 + '@angular/core': 21.1.0-rc.0 + '@angular/platform-browser': 21.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.1.0-next.4': - resolution: {integrity: sha512-RadEpo+xp7hzv2qgpNRmsFsILX5ZY7AYGLHTVvEu4j5DUI9LUJllnmlEz/U5HHz/99h8eEPZPlUZ/H0OMMmUfw==} + '@angular/service-worker@21.1.0-rc.0': + resolution: {integrity: sha512-xQgTjQDQIZyAyrJzs9AUCAcnrsaTArf4/hYiO8mCdNzcXPUwdA0TEL9gKX7rJMPRrxMfwG7DHobpyj4zJBaR+Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.1.0-next.4 + '@angular/core': 21.1.0-rc.0 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.1.1': @@ -9320,29 +9320,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.1.0-next.3(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/cdk@21.1.0-next.4(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3)': + '@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.1.0-next.4 + '@angular/compiler': 21.1.0-rc.0 '@babel/core': 7.28.5 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 @@ -9356,31 +9356,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.1.0-next.4': + '@angular/compiler@21.1.0-rc.0': dependencies: tslib: 2.8.1 - '@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.1.0-next.4 + '@angular/compiler': 21.1.0-rc.0 zone.js: 0.16.0 - '@angular/forms@21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/forms@21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.1.0-next.4(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(@angular/compiler@21.1.0-next.4)': + '@angular/localize@21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.1.0-rc.0)': dependencies: - '@angular/compiler': 21.1.0-next.4 - '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) + '@angular/compiler': 21.1.0-rc.0 + '@angular/compiler-cli': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9388,17 +9388,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.1.0-next.3(5911ac44acdb5e81564606f5886cc827)': + '@angular/material@21.1.0-next.4(b051653d7cc612357511ba8a2f98a625)': dependencies: - '@angular/cdk': 21.1.0-next.3(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.1.0-next.4(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.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/4877ddbc10c12fb75ef6bc9ff49295021ff2512a(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5e6b5c157aa13f92ef88a51d87874607f517d30c(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -9458,35 +9458,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-next.4)(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-rc.0)(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.1.0-next.4 - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.1.0-rc.0 + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.1.0-next.4(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-next.4(@angular/animations@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.1.0-next.4(@angular/core@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -14552,7 +14552,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -16334,10 +16334,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-rc.0(@angular/compiler-cli@21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.1.0-next.4(@angular/compiler@21.1.0-next.4)(typescript@5.9.3) + '@angular/compiler-cli': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.55.1) '@rollup/wasm-node': 4.55.1 ajv: 8.17.1 diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 8596480909b7..541135822f83 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#7d1d574e722bddf23658ba2aecbe90f7a20d3dcb", - "@angular/cdk": "github:angular/cdk-builds#5e4b9d2f2cd548245d09f554364610762a5a2c47", - "@angular/common": "github:angular/common-builds#f3deca7ff0a46c2993c08e875b5881257c8f757a", - "@angular/compiler": "github:angular/compiler-builds#31af18615c849a3ce319a281b00333ba2cf8d641", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#9e3870e2c1eee645d15c561c09fceb18df897ab6", - "@angular/core": "github:angular/core-builds#2838839f900584dd9d556455afbd518bc585a4b2", - "@angular/forms": "github:angular/forms-builds#0b9bdccb4aea204c00a1da591775d1650a5cce1e", - "@angular/language-service": "github:angular/language-service-builds#8dc7bc4d774289732fb4c887a8fbacb234eb2725", - "@angular/localize": "github:angular/localize-builds#2aaeba1a3f84c3593cf8971d8f23ce6275460bb4", - "@angular/material": "github:angular/material-builds#3f6bda06d3e7fcac8a993810b87f79a0b2b83ce3", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#e9656894438ed6fac288b62fc822d2a70a0a4a17", - "@angular/platform-browser": "github:angular/platform-browser-builds#81df68a32060014f1c5e1ab20fddc481e6c293fb", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#09ba5aa26d445ec7f07ef8b21d9fc6a76b15742b", - "@angular/platform-server": "github:angular/platform-server-builds#88c1f8a56e9e78d93b92daa7245958fab732a9d9", - "@angular/router": "github:angular/router-builds#3162b28b4e94c04f52b263291b9b54074b93fc94", - "@angular/service-worker": "github:angular/service-worker-builds#80a6ec33d78fce9ceb1e289f2fe1e35231b441fa" + "@angular/animations": "github:angular/animations-builds#35218f05b11fafedee25dcc8c400f846d8103d17", + "@angular/cdk": "github:angular/cdk-builds#ba106366ba38e32d0f63d7a64b8ca3c79c63933a", + "@angular/common": "github:angular/common-builds#ae646bb42174f17f68e12633e4f08d164d0e03d7", + "@angular/compiler": "github:angular/compiler-builds#46335e926db79b2550ca5f45b76e248b9d6be1c2", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#4747bbf15c9a8552982a847ffe1c377c99ef73b8", + "@angular/core": "github:angular/core-builds#ea2364b98187d965a539d31a40b202c5e4b9f526", + "@angular/forms": "github:angular/forms-builds#fb9292dd410c00b0a9101fbfc180231ff278fbe0", + "@angular/language-service": "github:angular/language-service-builds#6914eb34e7993144c3028627a9552a5f6f0e47ee", + "@angular/localize": "github:angular/localize-builds#875351ca7ab43faa9433c76c45725daf61736c57", + "@angular/material": "github:angular/material-builds#987afc6ac394c32d799ae2f73e0fff6393525c70", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#78385e21fc883279b332556d86f80a0fab8ef6eb", + "@angular/platform-browser": "github:angular/platform-browser-builds#1c0ca1e915fd01e9ee8b17fe0e2240c0969e3dee", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#544708d382fa3456caf671525ded44f2ea4fd827", + "@angular/platform-server": "github:angular/platform-server-builds#a52143698f47d2381934d0d89a51520513fa99ad", + "@angular/router": "github:angular/router-builds#85fd95f72ad5fc57d5a5e40c897a64f9edfcdb4a", + "@angular/service-worker": "github:angular/service-worker-builds#abe3c89f12ea854e6de57dcc44bfa31ba78ecbbf" } } From 1944008bc8f7575b7bcffb91f67ec7cd3c1e0649 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 12 Jan 2026 08:46:27 +0000 Subject: [PATCH 2077/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/e2e/ng-snapshot/package.json | 32 ++++++------ 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 105c9331f9e8..1e2ae380b05e 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@977bc9d747d9ddfe610fc96009212dd14c645ef6 + - uses: angular/dev-infra/github-actions/branch-manager@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 649eee44045d..357f70cb18bd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - 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 8241492b2036..f35ed269e8bf 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@977bc9d747d9ddfe610fc96009212dd14c645ef6 + - uses: angular/dev-infra/github-actions/pull-request-labeling@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@977bc9d747d9ddfe610fc96009212dd14c645ef6 + - uses: angular/dev-infra/github-actions/post-approval-changes@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index b60cc72aa240..588c3ee3fe2a 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@977bc9d747d9ddfe610fc96009212dd14c645ef6 + - uses: angular/dev-infra/github-actions/feature-request@3ec78dc98edefbf3a324b84d093e66577ea30b29 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 0e92e0a62c82..8d5897b8cc29 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@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - 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@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - 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 7d0ca76bcc47..2312edca0c64 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/linting/licenses@3ec78dc98edefbf3a324b84d093e66577ea30b29 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@977bc9d747d9ddfe610fc96009212dd14c645ef6 + uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 091427bd52b0..22d5d4388113 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "977bc9d747d9ddfe610fc96009212dd14c645ef6", + commit = "3ec78dc98edefbf3a324b84d093e66577ea30b29", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 020c3ec315e0..92ba21bbdf4b 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@angular/forms": "21.1.0-rc.0", "@angular/localize": "21.1.0-rc.0", "@angular/material": "21.1.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#5e6b5c157aa13f92ef88a51d87874607f517d30c", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#50fe5451525482cef45fa98d953f899e92d618ce", "@angular/platform-browser": "21.1.0-rc.0", "@angular/platform-server": "21.1.0-rc.0", "@angular/router": "21.1.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d10b7589a173..1d26335523ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.4 version: 21.1.0-next.4(b051653d7cc612357511ba8a2f98a625) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#5e6b5c157aa13f92ef88a51d87874607f517d30c - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5e6b5c157aa13f92ef88a51d87874607f517d30c(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#50fe5451525482cef45fa98d953f899e92d618ce + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/50fe5451525482cef45fa98d953f899e92d618ce(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1026,9 +1026,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/5e6b5c157aa13f92ef88a51d87874607f517d30c': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/5e6b5c157aa13f92ef88a51d87874607f517d30c} - version: 0.0.0-977bc9d747d9ddfe610fc96009212dd14c645ef6 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/50fe5451525482cef45fa98d953f899e92d618ce': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/50fe5451525482cef45fa98d953f899e92d618ce} + version: 0.0.0-3ec78dc98edefbf3a324b84d093e66577ea30b29 hasBin: true '@angular/platform-browser@21.1.0-rc.0': @@ -9398,7 +9398,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/5e6b5c157aa13f92ef88a51d87874607f517d30c(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/50fe5451525482cef45fa98d953f899e92d618ce(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 541135822f83..df29d91efd90 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#35218f05b11fafedee25dcc8c400f846d8103d17", - "@angular/cdk": "github:angular/cdk-builds#ba106366ba38e32d0f63d7a64b8ca3c79c63933a", - "@angular/common": "github:angular/common-builds#ae646bb42174f17f68e12633e4f08d164d0e03d7", - "@angular/compiler": "github:angular/compiler-builds#46335e926db79b2550ca5f45b76e248b9d6be1c2", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#4747bbf15c9a8552982a847ffe1c377c99ef73b8", - "@angular/core": "github:angular/core-builds#ea2364b98187d965a539d31a40b202c5e4b9f526", - "@angular/forms": "github:angular/forms-builds#fb9292dd410c00b0a9101fbfc180231ff278fbe0", - "@angular/language-service": "github:angular/language-service-builds#6914eb34e7993144c3028627a9552a5f6f0e47ee", - "@angular/localize": "github:angular/localize-builds#875351ca7ab43faa9433c76c45725daf61736c57", - "@angular/material": "github:angular/material-builds#987afc6ac394c32d799ae2f73e0fff6393525c70", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#78385e21fc883279b332556d86f80a0fab8ef6eb", - "@angular/platform-browser": "github:angular/platform-browser-builds#1c0ca1e915fd01e9ee8b17fe0e2240c0969e3dee", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#544708d382fa3456caf671525ded44f2ea4fd827", - "@angular/platform-server": "github:angular/platform-server-builds#a52143698f47d2381934d0d89a51520513fa99ad", - "@angular/router": "github:angular/router-builds#85fd95f72ad5fc57d5a5e40c897a64f9edfcdb4a", - "@angular/service-worker": "github:angular/service-worker-builds#abe3c89f12ea854e6de57dcc44bfa31ba78ecbbf" + "@angular/animations": "github:angular/animations-builds#a38f6fed777c7b80473492aba0261acbbe2e9f4b", + "@angular/cdk": "github:angular/cdk-builds#0539dd4d010c119630e6bcf597393489e1313bb4", + "@angular/common": "github:angular/common-builds#754de52e5f6c2ede77d0378aa889a97d559a8113", + "@angular/compiler": "github:angular/compiler-builds#21cd4a684b6b9ba607b4ec019fd3f8d1847d4e63", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#08a43ed0320a6d0d5b268eaf43ccbafed860ed2b", + "@angular/core": "github:angular/core-builds#38b7649e2928eac9bb5dbb9593b2880d7f93e193", + "@angular/forms": "github:angular/forms-builds#5ff7e657d34956067dde22c829a7d2f3e1628408", + "@angular/language-service": "github:angular/language-service-builds#68142b174eb7dd296da6f412b5d31bbcc7d57456", + "@angular/localize": "github:angular/localize-builds#76d4cf0295505b71b0bf61e4d8818488128d9765", + "@angular/material": "github:angular/material-builds#ea5a6e2304c661907a9954ad860da7bbaf6fd86b", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#321361b3180f82f1553cd1a8a72756c00d48ec9d", + "@angular/platform-browser": "github:angular/platform-browser-builds#ef8b35329b869ab3d9adac11a4025071eaf075c5", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#25e46ca0513f02ae562317dad3ec45497f0d0787", + "@angular/platform-server": "github:angular/platform-server-builds#249b09bc45577772ff5349a2b99ccc7cab5b2080", + "@angular/router": "github:angular/router-builds#6cba1b408d9015fb8771a3bd00d1b00d097e7fa6", + "@angular/service-worker": "github:angular/service-worker-builds#d6355eef029449edec0c401eaf8053b7e384cb5d" } } From 66ffafd87c35684a26e73133621022f550189294 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 12 Jan 2026 09:10:02 +0000 Subject: [PATCH 2078/2162] build: update pnpm to v10.28.0 See associated pull request for more information. --- MODULE.bazel | 17 ++- MODULE.bazel.lock | 338 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 4 +- 3 files changed, 325 insertions(+), 34 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 22d5d4388113..ec01b276af8d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -44,7 +44,18 @@ git_override( ) node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") -node.toolchain(node_version_from_nvmrc = "//:.nvmrc") +node.toolchain( + node_repositories = { + "22.21.1-darwin_arm64": ("node-v22.21.1-darwin-arm64.tar.gz", "node-v22.21.1-darwin-arm64", "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af"), + "22.21.1-darwin_amd64": ("node-v22.21.1-darwin-x64.tar.gz", "node-v22.21.1-darwin-x64", "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd"), + "22.21.1-linux_arm64": ("node-v22.21.1-linux-arm64.tar.xz", "node-v22.21.1-linux-arm64", "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1"), + "22.21.1-linux_ppc64le": ("node-v22.21.1-linux-ppc64le.tar.xz", "node-v22.21.1-linux-ppc64le", "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845"), + "22.21.1-linux_s390x": ("node-v22.21.1-linux-s390x.tar.xz", "node-v22.21.1-linux-s390x", "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211"), + "22.21.1-linux_amd64": ("node-v22.21.1-linux-x64.tar.xz", "node-v22.21.1-linux-x64", "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88"), + "22.21.1-windows_amd64": ("node-v22.21.1-win-x64.zip", "node-v22.21.1-win-x64", "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf"), + }, + node_version = "22.21.1", +) use_repo( node, "nodejs_darwin_amd64", @@ -99,8 +110,8 @@ use_repo( pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm") pnpm.pnpm( name = "pnpm", - pnpm_version = "10.26.0", - pnpm_version_integrity = "sha512-Oz9scl6+cSUGwKsa1BM8+GsfS2h+/85iqbOLTXLjlUJC5kMZD8UfoWQpScc19APevUT1yw7dZXq+Y6i2p+HkAg==", + pnpm_version = "10.28.0", + pnpm_version_integrity = "sha512-Bd9x0UIfITmeBT/eVnzqNNRG+gLHZXFEG/wceVbpjjYwiJgtlARl/TRIDU2QoGaLwSNi+KqIAApk6D0LDke+SA==", ) use_repo(pnpm, "pnpm") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index f78ddeb904ea..5c2a55ab267c 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -412,7 +412,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "zVV86HvMwDBJ8IsFt27k/Sjq0vCMPr8b8X9OAuprQ6w=", - "usagesDigest": "eBdoLuun2Ll2wMv7+g0B3OCtLdHCLOA3bqzuEktDxvU=", + "usagesDigest": "joQrwYZve0LRGQcA0w659tYcDgO7i285JhM3m8ojguc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -421,11 +421,11 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", "attributes": { "package": "pnpm", - "version": "10.26.0", + "version": "10.28.0", "root_package": "", "link_workspace": "", "link_packages": {}, - "integrity": "sha512-Oz9scl6+cSUGwKsa1BM8+GsfS2h+/85iqbOLTXLjlUJC5kMZD8UfoWQpScc19APevUT1yw7dZXq+Y6i2p+HkAg==", + "integrity": "sha512-Bd9x0UIfITmeBT/eVnzqNNRG+gLHZXFEG/wceVbpjjYwiJgtlARl/TRIDU2QoGaLwSNi+KqIAApk6D0LDke+SA==", "url": "", "commit": "", "patch_args": [ @@ -448,7 +448,7 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", "attributes": { "package": "pnpm", - "version": "10.26.0", + "version": "10.28.0", "dev": false, "root_package": "", "link_packages": {}, @@ -1093,7 +1093,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "WnPwx+ah3/p5VnBg2wk1me0H73eqUa7y8C5BV/XVZbg=", + "usagesDigest": "gh1vecRgu60cNLf3obzWE7eYVlWEqZwguWf1BbCfbNQ=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1102,12 +1102,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "linux_amd64" } @@ -1116,12 +1151,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "linux_arm64" } @@ -1130,12 +1200,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "linux_s390x" } @@ -1144,12 +1249,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "linux_ppc64le" } @@ -1158,12 +1298,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "darwin_amd64" } @@ -1172,12 +1347,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "darwin_arm64" } @@ -1186,12 +1396,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "windows_amd64" } @@ -1200,12 +1445,47 @@ "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", "attributes": { "node_download_auth": {}, - "node_repositories": {}, + "node_repositories": { + "22.21.1-darwin_arm64": [ + "node-v22.21.1-darwin-arm64.tar.gz", + "node-v22.21.1-darwin-arm64", + "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + ], + "22.21.1-darwin_amd64": [ + "node-v22.21.1-darwin-x64.tar.gz", + "node-v22.21.1-darwin-x64", + "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + ], + "22.21.1-linux_arm64": [ + "node-v22.21.1-linux-arm64.tar.xz", + "node-v22.21.1-linux-arm64", + "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + ], + "22.21.1-linux_ppc64le": [ + "node-v22.21.1-linux-ppc64le.tar.xz", + "node-v22.21.1-linux-ppc64le", + "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + ], + "22.21.1-linux_s390x": [ + "node-v22.21.1-linux-s390x.tar.xz", + "node-v22.21.1-linux-s390x", + "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + ], + "22.21.1-linux_amd64": [ + "node-v22.21.1-linux-x64.tar.xz", + "node-v22.21.1-linux-x64", + "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + ], + "22.21.1-windows_amd64": [ + "node-v22.21.1-win-x64.zip", + "node-v22.21.1-win-x64", + "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + ] + }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "20.19.5", - "node_version_from_nvmrc": "@@//:.nvmrc", + "node_version": "22.21.1", "include_headers": false, "platform": "windows_arm64" } diff --git a/package.json b/package.json index 92ba21bbdf4b..ac935c4ead6a 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.27.0", + "packageManager": "pnpm@10.28.0", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.27.0" + "pnpm": "10.28.0" }, "author": "Angular Authors", "license": "MIT", From f80db6fb714aa326f6ed03a8a51090ca59ad0955 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:07:57 -0500 Subject: [PATCH 2079/2162] feat(@schematics/angular): add ng-add support for Vitest browser providers This commit adds a new internal schematic `vitest-browser` to `@schematics/angular` which streamlines the setup of Vitest browser testing by handling `ng add` for the following packages: - `@vitest/browser-playwright` - `@vitest/browser-webdriverio` - `@vitest/browser-preview` The schematic performs the following actions: - Verifies the project is using the `@angular/build:unit-test` builder. - Updates `tsconfig.spec.json` to include `vitest/globals` and the respective browser provider package in `compilerOptions.types`. - Installs the requested package along with necessary peer dependencies (e.g., `playwright` or `webdriverio`). Additionally, the `ng add` command implementation in the CLI has been updated to support passing the package name to built-in schematics, allowing the `vitest-browser` schematic to know which package was requested. --- packages/angular/cli/src/commands/add/cli.ts | 13 +++ packages/schematics/angular/collection.json | 7 ++ .../schematics/angular/tailwind/schema.json | 4 + .../utility/latest-versions/package.json | 5 + .../angular/vitest-browser/index.ts | 103 ++++++++++++++++++ .../angular/vitest-browser/schema.json | 24 ++++ tests/e2e.bzl | 1 + .../tests/commands/add/add-vitest-browser.ts | 20 ++++ tests/e2e/utils/vitest.ts | 5 +- 9 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 packages/schematics/angular/vitest-browser/index.ts create mode 100644 packages/schematics/angular/vitest-browser/schema.json create mode 100644 tests/e2e/tests/commands/add/add-vitest-browser.ts diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index 0dae016fba12..10361ece6b2b 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -84,6 +84,18 @@ const BUILT_IN_SCHEMATICS = { collection: '@schematics/angular', name: 'tailwind', }, + '@vitest/browser-playwright': { + collection: '@schematics/angular', + name: 'vitest-browser', + }, + '@vitest/browser-webdriverio': { + collection: '@schematics/angular', + name: 'vitest-browser', + }, + '@vitest/browser-preview': { + collection: '@schematics/angular', + name: 'vitest-browser', + }, } as const; export default class AddCommandModule @@ -260,6 +272,7 @@ export default class AddCommandModule ...options, collection: builtInSchematic.collection, schematicName: builtInSchematic.name, + package: packageName, }); } } diff --git a/packages/schematics/angular/collection.json b/packages/schematics/angular/collection.json index 8d876cf7cb5b..c275bc40144f 100755 --- a/packages/schematics/angular/collection.json +++ b/packages/schematics/angular/collection.json @@ -149,6 +149,13 @@ "schema": "./refactor/jasmine-vitest/schema.json", "description": "[EXPERIMENTAL] Refactors Jasmine tests to use Vitest APIs.", "hidden": true + }, + "vitest-browser": { + "factory": "./vitest-browser", + "schema": "./vitest-browser/schema.json", + "hidden": true, + "private": true, + "description": "[INTERNAL] Adds a Vitest browser provider to a project. Intended for use for ng add." } } } diff --git a/packages/schematics/angular/tailwind/schema.json b/packages/schematics/angular/tailwind/schema.json index 3b52fc71c26d..801c6ebc45d7 100644 --- a/packages/schematics/angular/tailwind/schema.json +++ b/packages/schematics/angular/tailwind/schema.json @@ -10,6 +10,10 @@ "$source": "projectName" } }, + "package": { + "type": "string", + "description": "The package to be added." + }, "skipInstall": { "description": "Skip the automatic installation of packages. You will need to manually install the dependencies later.", "type": "boolean", diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 29ef3658f23b..0922fb6dc705 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -26,6 +26,11 @@ "ts-node": "~10.9.0", "typescript": "~5.9.2", "vitest": "^4.0.8", + "@vitest/browser-playwright": "^4.0.8", + "@vitest/browser-webdriverio": "^4.0.8", + "@vitest/browser-preview": "^4.0.8", + "playwright": "^1.48.0", + "webdriverio": "^9.0.0", "zone.js": "~0.16.0" } } diff --git a/packages/schematics/angular/vitest-browser/index.ts b/packages/schematics/angular/vitest-browser/index.ts new file mode 100644 index 000000000000..bdc366bf4423 --- /dev/null +++ b/packages/schematics/angular/vitest-browser/index.ts @@ -0,0 +1,103 @@ +/** + * @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 { + Rule, + SchematicContext, + SchematicsException, + Tree, + chain, +} from '@angular-devkit/schematics'; +import { join } from 'node:path/posix'; +import { + DependencyType, + ExistingBehavior, + InstallBehavior, + addDependency, +} from '../utility/dependency'; +import { JSONFile } from '../utility/json-file'; +import { latestVersions } from '../utility/latest-versions'; +import { getWorkspace } from '../utility/workspace'; +import { Builders } from '../utility/workspace-models'; +import { Schema as VitestBrowserOptions } from './schema'; + +export default function (options: VitestBrowserOptions): Rule { + return async (host: Tree, _context: SchematicContext) => { + const workspace = await getWorkspace(host); + const project = workspace.projects.get(options.project); + + if (!project) { + throw new SchematicsException(`Project "${options.project}" does not exist.`); + } + + const testTarget = project.targets.get('test'); + if (testTarget?.builder !== Builders.BuildUnitTest) { + throw new SchematicsException( + `Project "${options.project}" does not have a "test" target with a supported builder.`, + ); + } + + if (testTarget.options?.['runner'] === 'karma') { + throw new SchematicsException( + `Project "${options.project}" is configured to use Karma. ` + + 'Please migrate to Vitest before adding browser testing support.', + ); + } + + const packageName = options.package; + if (!packageName) { + return; + } + + const dependencies = [packageName]; + if (packageName === '@vitest/browser-playwright') { + dependencies.push('playwright'); + } else if (packageName === '@vitest/browser-webdriverio') { + dependencies.push('webdriverio'); + } + + // Update tsconfig.spec.json + const tsConfigPath = + (testTarget.options?.['tsConfig'] as string | undefined) ?? + join(project.root, 'tsconfig.spec.json'); + const updateTsConfigRule: Rule = (host) => { + if (host.exists(tsConfigPath)) { + const json = new JSONFile(host, tsConfigPath); + const typesPath = ['compilerOptions', 'types']; + const existingTypes = (json.get(typesPath) as string[] | undefined) ?? []; + const newTypes = existingTypes.filter((t) => t !== 'jasmine'); + + if (!newTypes.includes('vitest/globals')) { + newTypes.push('vitest/globals'); + } + + if (packageName && !newTypes.includes(packageName)) { + newTypes.push(packageName); + } + + if ( + newTypes.length !== existingTypes.length || + newTypes.some((t, i) => t !== existingTypes[i]) + ) { + json.modify(typesPath, newTypes); + } + } + }; + + return chain([ + updateTsConfigRule, + ...dependencies.map((name) => + addDependency(name, latestVersions[name], { + type: DependencyType.Dev, + existing: ExistingBehavior.Skip, + install: options.skipInstall ? InstallBehavior.None : InstallBehavior.Auto, + }), + ), + ]); + }; +} diff --git a/packages/schematics/angular/vitest-browser/schema.json b/packages/schematics/angular/vitest-browser/schema.json new file mode 100644 index 000000000000..6d65b6d0d5fe --- /dev/null +++ b/packages/schematics/angular/vitest-browser/schema.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "title": "Vitest Browser Provider Schematic", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The name of the project.", + "$default": { + "$source": "projectName" + } + }, + "package": { + "type": "string", + "description": "The package to be added." + }, + "skipInstall": { + "description": "Skip the automatic installation of packages. You will need to manually install the dependencies later.", + "type": "boolean", + "default": false + } + }, + "required": ["project", "package"] +} diff --git a/tests/e2e.bzl b/tests/e2e.bzl index 07004fcb09d0..34ae2452a0fb 100644 --- a/tests/e2e.bzl +++ b/tests/e2e.bzl @@ -47,6 +47,7 @@ WEBPACK_IGNORE_TESTS = [ "tests/build/app-shell/**", "tests/i18n/ivy-localize-app-shell.js", "tests/i18n/ivy-localize-app-shell-service-worker.js", + "tests/commands/add/add-vitest-browser.js", "tests/commands/serve/ssr-http-requests-assets.js", "tests/build/styles/sass-pkg-importer.js", "tests/build/prerender/http-requests-assets.js", diff --git a/tests/e2e/tests/commands/add/add-vitest-browser.ts b/tests/e2e/tests/commands/add/add-vitest-browser.ts new file mode 100644 index 000000000000..4e7aaf1a4044 --- /dev/null +++ b/tests/e2e/tests/commands/add/add-vitest-browser.ts @@ -0,0 +1,20 @@ +import { expectFileToMatch } from '../../../utils/fs'; +import { uninstallPackage } from '../../../utils/packages'; +import { ng } from '../../../utils/process'; +import { applyVitestBuilder } from '../../../utils/vitest'; + +export default async function () { + await applyVitestBuilder(); + + try { + await ng('add', '@vitest/browser-playwright', '--skip-confirmation'); + + await expectFileToMatch('package.json', /"@vitest\/browser-playwright":/); + await expectFileToMatch('package.json', /"playwright":/); + await expectFileToMatch('tsconfig.spec.json', /"vitest\/globals"/); + await expectFileToMatch('tsconfig.spec.json', /"@vitest\/browser-playwright"/); + } finally { + await uninstallPackage('@vitest/browser-playwright'); + await uninstallPackage('playwright'); + } +} diff --git a/tests/e2e/utils/vitest.ts b/tests/e2e/utils/vitest.ts index af40e66b18b1..471ca030169e 100644 --- a/tests/e2e/utils/vitest.ts +++ b/tests/e2e/utils/vitest.ts @@ -1,10 +1,11 @@ -import { silentNpm } from './process'; +import { installPackage } from './packages'; import { updateJsonFile } from './project'; /** Updates the `test` builder in the current workspace to use Vitest. */ export async function applyVitestBuilder(): Promise { // These deps matches the deps in `@schematics/angular` - await silentNpm('install', 'vitest@^4.0.8', 'jsdom@^27.1.0', '--save-dev'); + await installPackage('vitest@^4.0.8'); + await installPackage('jsdom@^27.1.0'); await updateJsonFile('angular.json', (json) => { const projects = Object.values(json['projects']); From 5fb3af0ae6a9f7019acc749bd313646e780d691d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 9 Jan 2026 10:49:00 -0500 Subject: [PATCH 2080/2162] refactor(@angular/cli): support custom temporary directory in package manager abstraction This change introduces the ability to specify a base temporary directory when creating a `PackageManager` instance. This allows for creating temporary directories within the project structure (e.g., `node_modules/.tmp`), which enables package managers to correctly inherit project-specific configurations like `.npmrc` or `.yarnrc` during operations like `acquireTempPackage`. --- packages/angular/cli/src/package-managers/factory.ts | 9 +++++++-- packages/angular/cli/src/package-managers/host.ts | 5 +++-- .../angular/cli/src/package-managers/package-manager.ts | 8 +++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/angular/cli/src/package-managers/factory.ts b/packages/angular/cli/src/package-managers/factory.ts index 19ec32f7f886..1cd3d2462edc 100644 --- a/packages/angular/cli/src/package-managers/factory.ts +++ b/packages/angular/cli/src/package-managers/factory.ts @@ -110,8 +110,9 @@ export async function createPackageManager(options: { configuredPackageManager?: PackageManagerName; logger?: Logger; dryRun?: boolean; + tempDirectory?: string; }): Promise { - const { cwd, configuredPackageManager, logger, dryRun } = options; + const { cwd, configuredPackageManager, logger, dryRun, tempDirectory } = options; const host = NodeJS_HOST; const { name, source } = await determinePackageManager( @@ -127,7 +128,11 @@ export async function createPackageManager(options: { throw new Error(`Unsupported package manager: "${name}"`); } - const packageManager = new PackageManager(host, cwd, descriptor, { dryRun, logger }); + const packageManager = new PackageManager(host, cwd, descriptor, { + dryRun, + logger, + tempDirectory, + }); // Do not verify if the package manager is installed during a dry run. if (!dryRun) { diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts index 82d61031d147..e063a97de03d 100644 --- a/packages/angular/cli/src/package-managers/host.ts +++ b/packages/angular/cli/src/package-managers/host.ts @@ -47,9 +47,10 @@ export interface Host { /** * Creates a new, unique temporary directory. + * @param baseDir The base directory in which to create the temporary directory. * @returns A promise that resolves to the absolute path of the created directory. */ - createTempDirectory(): Promise; + createTempDirectory(baseDir?: string): Promise; /** * Deletes a directory recursively. @@ -94,7 +95,7 @@ export const NodeJS_HOST: Host = { readdir, readFile: (path: string) => readFile(path, { encoding: 'utf8' }), writeFile, - createTempDirectory: () => mkdtemp(join(tmpdir(), 'angular-cli-')), + createTempDirectory: (baseDir?: string) => mkdtemp(join(baseDir ?? tmpdir(), 'angular-cli-')), deleteDirectory: (path: string) => rm(path, { recursive: true, force: true }), runCommand: async ( command: string, diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 57b521615273..55444266ffb9 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -59,6 +59,12 @@ export interface PackageManagerOptions { /** A logger instance for debugging and dry run output. */ logger?: Logger; + + /** + * The path to use as the base for temporary directories. + * If not specified, the system's temporary directory will be used. + */ + tempDirectory?: string; } /** @@ -538,7 +544,7 @@ export class PackageManager { specifier: string, options: { registry?: string; ignoreScripts?: boolean } = {}, ): Promise<{ workingDirectory: string; cleanup: () => Promise }> { - const workingDirectory = await this.host.createTempDirectory(); + const workingDirectory = await this.host.createTempDirectory(this.options.tempDirectory); const cleanup = () => this.host.deleteDirectory(workingDirectory); // Some package managers, like yarn classic, do not write a package.json when adding a package. From 2cd4f2d3634888f32b3924c3e12591c9c74ab1e1 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 9 Jan 2026 11:06:56 -0500 Subject: [PATCH 2081/2162] fix(@angular/cli): use project-local temporary directory in ng add The 'ng add' command now attempts to use '.angular/cache' or 'node_modules' as the base for temporary directories when acquiring packages. This ensures that the package manager can inherit project-specific configuration (like '.npmrc' or '.yarnrc') during the installation of temporary packages. The implementation uses a fallback strategy, checking for candidate directories and defaulting to the system's temporary directory if none are found. --- packages/angular/cli/src/commands/add/cli.ts | 25 +++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index 10361ece6b2b..1ffc5ae29258 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -10,7 +10,7 @@ import { Listr, ListrRenderer, ListrTaskWrapper, color, figures } from 'listr2'; import assert from 'node:assert'; import fs from 'node:fs/promises'; import { createRequire } from 'node:module'; -import { dirname, join } from 'node:path'; +import { dirname, join, relative, resolve } from 'node:path'; import npa from 'npm-package-arg'; import semver, { Range, compare, intersects, prerelease, satisfies, valid } from 'semver'; import { Argv } from 'yargs'; @@ -33,6 +33,7 @@ import { import { assertIsError } from '../../utilities/error'; import { isTTY } from '../../utilities/tty'; import { VERSION } from '../../utilities/version'; +import { getCacheConfig } from '../cache/utilities'; class CommandError extends Error {} @@ -311,10 +312,32 @@ export default class AddCommandModule context: AddCommandTaskContext, task: AddCommandTaskWrapper, ): Promise { + let tempDirectory: string | undefined; + const tempOptions = ['node_modules']; + + const cacheConfig = getCacheConfig(this.context.workspace); + if (cacheConfig.enabled) { + const cachePath = resolve(this.context.root, cacheConfig.path); + if (!relative(this.context.root, cachePath).startsWith('..')) { + tempOptions.push(cachePath); + } + } + + for (const tempOption of tempOptions) { + try { + const directory = resolve(this.context.root, tempOption); + if ((await fs.stat(directory)).isDirectory()) { + tempDirectory = directory; + break; + } + } catch {} + } + context.packageManager = await createPackageManager({ cwd: this.context.root, logger: this.context.logger, dryRun: context.dryRun, + tempDirectory, }); task.output = `Using package manager: ${color.dim(context.packageManager.name)}`; } From 158d7155b4b605293e2e933bb00314de9c59cb66 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 9 Jan 2026 11:24:48 -0500 Subject: [PATCH 2082/2162] refactor(@angular/cli): improve error handling for package installation in ng add This change enhances the error handling in the 'ng add' command's 'installPackageTask'. It now specifically catches 'PackageManagerError' exceptions and surfaces the standard output or standard error from the underlying package manager process. This provides users with more actionable information when a package installation fails. --- packages/angular/cli/src/commands/add/cli.ts | 70 +++++++++++-------- .../angular/cli/src/package-managers/index.ts | 1 + 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index 1ffc5ae29258..0531604d63d1 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -26,6 +26,7 @@ import { import { NgAddSaveDependency, PackageManager, + PackageManagerError, PackageManifest, PackageMetadata, createPackageManager, @@ -589,36 +590,47 @@ export default class AddCommandModule // Only show if installation will actually occur task.title = 'Installing package'; - if (context.savePackage === false) { - task.title += ' in temporary location'; - - // Temporary packages are located in a different directory - // Hence we need to resolve them using the temp path - const { workingDirectory } = await packageManager.acquireTempPackage( - packageIdentifier.toString(), - { - registry, - }, - ); - - const tempRequire = createRequire(workingDirectory + '/'); - assert(context.collectionName, 'Collection name should always be available'); - const resolvedCollectionPath = tempRequire.resolve( - join(context.collectionName, 'package.json'), - ); + try { + if (context.savePackage === false) { + task.title += ' in temporary location'; + + // Temporary packages are located in a different directory + // Hence we need to resolve them using the temp path + const { workingDirectory } = await packageManager.acquireTempPackage( + packageIdentifier.toString(), + { + registry, + }, + ); + + const tempRequire = createRequire(workingDirectory + '/'); + assert(context.collectionName, 'Collection name should always be available'); + const resolvedCollectionPath = tempRequire.resolve( + join(context.collectionName, 'package.json'), + ); + + context.collectionName = dirname(resolvedCollectionPath); + } else { + await packageManager.add( + packageIdentifier.toString(), + 'none', + savePackage !== 'dependencies', + false, + true, + { + registry, + }, + ); + } + } catch (e) { + if (e instanceof PackageManagerError) { + const output = e.stderr || e.stdout; + if (output) { + throw new CommandError(`Package installation failed: ${e.message}\nOutput: ${output}`); + } + } - context.collectionName = dirname(resolvedCollectionPath); - } else { - await packageManager.add( - packageIdentifier.toString(), - 'none', - savePackage !== 'dependencies', - false, - true, - { - registry, - }, - ); + throw e; } } diff --git a/packages/angular/cli/src/package-managers/index.ts b/packages/angular/cli/src/package-managers/index.ts index 002ade0cdb01..c622539fec2f 100644 --- a/packages/angular/cli/src/package-managers/index.ts +++ b/packages/angular/cli/src/package-managers/index.ts @@ -9,5 +9,6 @@ export { createPackageManager } from './factory'; export type { PackageManagerName } from './package-manager-descriptor'; export { PackageManager } from './package-manager'; +export { PackageManagerError } from './error'; export type * from './package-metadata'; export type { InstalledPackage } from './package-tree'; From d58c71416abbb8f4efaac9acd7d0183b16d37e0c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 12 Jan 2026 12:54:51 -0500 Subject: [PATCH 2083/2162] refactor(@angular/cli): support copying config files to temp package directory This change adds support for copying package manager configuration files (like `bunfig.toml`) from the project root to the temporary directory used for acquiring packages. This is particularly necessary for Bun, which does not automatically inherit configuration from parent directories when running in a separate temporary location. --- packages/angular/cli/src/package-managers/host.ts | 13 +++++++++++-- .../package-manager-descriptor.ts | 15 +++++++++++++++ .../cli/src/package-managers/package-manager.ts | 12 ++++++++++++ .../cli/src/package-managers/testing/mock-host.ts | 4 ++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts index e063a97de03d..4c8744fd8781 100644 --- a/packages/angular/cli/src/package-managers/host.ts +++ b/packages/angular/cli/src/package-managers/host.ts @@ -14,8 +14,8 @@ */ import { type SpawnOptions, spawn } from 'node:child_process'; -import { Stats } from 'node:fs'; -import { mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; +import { Stats, constants } from 'node:fs'; +import { copyFile, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; import { platform, tmpdir } from 'node:os'; import { join } from 'node:path'; import { PackageManagerError } from './error'; @@ -45,6 +45,14 @@ export interface Host { */ readFile(path: string): Promise; + /** + * Copies a file from the source path to the destination path. + * @param src The path to the source file. + * @param dest The path to the destination file. + * @returns A promise that resolves when the copy is complete. + */ + copyFile(src: string, dest: string): Promise; + /** * Creates a new, unique temporary directory. * @param baseDir The base directory in which to create the temporary directory. @@ -94,6 +102,7 @@ export const NodeJS_HOST: Host = { stat, readdir, readFile: (path: string) => readFile(path, { encoding: 'utf8' }), + copyFile: (src, dest) => copyFile(src, dest, constants.COPYFILE_FICLONE), writeFile, createTempDirectory: (baseDir?: string) => mkdtemp(join(baseDir ?? tmpdir(), 'angular-cli-')), deleteDirectory: (path: string) => rm(path, { recursive: true, force: true }), diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index 631d444db93d..4bcc2f6afeed 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -65,6 +65,15 @@ export interface PackageManagerDescriptor { /** The flag to ignore peer dependency warnings/errors. */ readonly ignorePeerDependenciesFlag?: string; + /** The configuration files used by the package manager. */ + readonly configFiles: readonly string[]; + + /** + * Whether to copy configuration files from the project root to the temporary directory. + * This is necessary for package managers that do not inherit configuration from parent directories (e.g., bun). + */ + readonly copyConfigFromProject?: boolean; + /** A function that returns the arguments and environment variables to use a custom registry. */ readonly getRegistryOptions?: (registry: string) => { args?: string[]; @@ -144,6 +153,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { noLockfileFlag: '--no-package-lock', ignoreScriptsFlag: '--ignore-scripts', ignorePeerDependenciesFlag: '--force', + configFiles: ['.npmrc'], getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json=true', '--all=true'], @@ -168,6 +178,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--dev', noLockfileFlag: '', ignoreScriptsFlag: '--mode=skip-build', + configFiles: ['.yarnrc.yml', '.yarnrc.yaml'], getRegistryOptions: (registry: string) => ({ env: { YARN_NPM_REGISTRY_SERVER: registry } }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json', '--recursive=false'], @@ -195,6 +206,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--dev', noLockfileFlag: '--no-lockfile', ignoreScriptsFlag: '--ignore-scripts', + configFiles: ['.yarnrc', '.npmrc'], getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json'], @@ -220,6 +232,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { noLockfileFlag: '--no-lockfile', ignoreScriptsFlag: '--ignore-scripts', ignorePeerDependenciesFlag: '--strict-peer-dependencies=false', + configFiles: ['.npmrc', 'pnpm-workspace.yaml'], getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['list', '--depth=0', '--json'], @@ -244,6 +257,8 @@ export const SUPPORTED_PACKAGE_MANAGERS = { saveDevFlag: '--development', noLockfileFlag: '', // Bun does not have a flag for this. ignoreScriptsFlag: '--ignore-scripts', + configFiles: ['bunfig.toml', '.npmrc'], + copyConfigFromProject: true, getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], listDependenciesCommand: ['pm', 'ls', '--json'], diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 55444266ffb9..1faedc5b155e 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -552,6 +552,18 @@ export class PackageManager { // Writing an empty package.json file beforehand prevents this. await this.host.writeFile(join(workingDirectory, 'package.json'), '{}'); + // Copy configuration files if the package manager requires it (e.g., bun). + if (this.descriptor.copyConfigFromProject) { + for (const configFile of this.descriptor.configFiles) { + try { + const configPath = join(this.cwd, configFile); + await this.host.copyFile(configPath, join(workingDirectory, configFile)); + } catch { + // Ignore missing config files. + } + } + } + const flags = [options.ignoreScripts ? this.descriptor.ignoreScriptsFlag : ''].filter( (flag) => flag, ); diff --git a/packages/angular/cli/src/package-managers/testing/mock-host.ts b/packages/angular/cli/src/package-managers/testing/mock-host.ts index af518553a61d..2411c8917318 100644 --- a/packages/angular/cli/src/package-managers/testing/mock-host.ts +++ b/packages/angular/cli/src/package-managers/testing/mock-host.ts @@ -62,4 +62,8 @@ export class MockHost implements Host { readFile(): Promise { throw new Error('Method not implemented.'); } + + copyFile(): Promise { + throw new Error('Method not implemented.'); + } } From 4330501d415489727b5113639695d9bae66e1de7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Dec 2025 13:09:08 -0500 Subject: [PATCH 2084/2162] test: skip unscoped auth E2E update tests on unsupported package managers This commit updates the `update-secure-registry` E2E test to skip unscoped authentication test cases when the active package manager is not Yarn, as other package managers may not support or correctly handle this setup in the test environment. --- .../tests/update/update-secure-registry.ts | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/e2e/tests/update/update-secure-registry.ts b/tests/e2e/tests/update/update-secure-registry.ts index 27b772799566..b52d311a622f 100644 --- a/tests/e2e/tests/update/update-secure-registry.ts +++ b/tests/e2e/tests/update/update-secure-registry.ts @@ -6,6 +6,9 @@ import { getActivePackageManager } from '../../utils/packages'; import assert from 'node:assert'; export default async function () { + const packageManager = getActivePackageManager(); + const supportsUnscopedAuth = packageManager === 'yarn'; + // The environment variable has priority over the .npmrc delete process.env['NPM_CONFIG_REGISTRY']; const worksMessage = 'We analyzed your package.json'; @@ -16,10 +19,13 @@ export default async function () { } // Valid authentication token - await createNpmConfigForAuthentication(false); - const { stdout: stdout1 } = await ng('update', ...extraArgs); - if (!stdout1.includes(worksMessage)) { - throw new Error(`Expected stdout to contain "${worksMessage}"`); + + if (supportsUnscopedAuth) { + await createNpmConfigForAuthentication(false); + const { stdout: stdout1 } = await ng('update', ...extraArgs); + if (!stdout1.includes(worksMessage)) { + throw new Error(`Expected stdout to contain "${worksMessage}"`); + } } await createNpmConfigForAuthentication(true); @@ -29,8 +35,11 @@ export default async function () { } // Invalid authentication token - await createNpmConfigForAuthentication(false, true); - await expectToFail(() => ng('update', ...extraArgs)); + + if (supportsUnscopedAuth) { + await createNpmConfigForAuthentication(false, true); + await expectToFail(() => ng('update', ...extraArgs)); + } await createNpmConfigForAuthentication(true, true); await expectToFail(() => ng('update', ...extraArgs)); From a03098c8a9c2a0f7e87de867db54b064fcee93f7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Dec 2025 12:13:52 -0500 Subject: [PATCH 2085/2162] refactor(@angular/cli): add custom parser for bun pm ls Bun does not support JSON output for the `pm ls` command. This commit introduces a custom parser to interpret Bun's tree-like output format, allowing the package manager abstraction to correctly discover installed dependencies when using Bun. --- .../package-manager-descriptor.ts | 5 +- .../cli/src/package-managers/parsers.ts | 54 +++++++++++++++++++ .../cli/src/package-managers/parsers_spec.ts | 44 ++++++++++++++- 3 files changed, 100 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index 4bcc2f6afeed..ae49fe0c0f3e 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -17,6 +17,7 @@ import { Logger } from './logger'; import { PackageManifest, PackageMetadata } from './package-metadata'; import { InstalledPackage } from './package-tree'; import { + parseBunDependencies, parseNpmLikeDependencies, parseNpmLikeError, parseNpmLikeManifest, @@ -261,10 +262,10 @@ export const SUPPORTED_PACKAGE_MANAGERS = { copyConfigFromProject: true, getRegistryOptions: (registry: string) => ({ args: ['--registry', registry] }), versionCommand: ['--version'], - listDependenciesCommand: ['pm', 'ls', '--json'], + listDependenciesCommand: ['pm', 'ls'], getManifestCommand: ['pm', 'view', '--json'], outputParsers: { - listDependencies: parseNpmLikeDependencies, + listDependencies: parseBunDependencies, getRegistryManifest: parseNpmLikeManifest, getRegistryMetadata: parseNpmLikeMetadata, getError: parseNpmLikeError, diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts index ca52fd49d817..fb7084edbc4e 100644 --- a/packages/angular/cli/src/package-managers/parsers.ts +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -521,3 +521,57 @@ export function parseYarnClassicError(output: string, logger?: Logger): ErrorInf return null; } + +/** + * Parses the output of `bun pm ls`. + * + * Bun does not support JSON output for `pm ls`. The output is a tree structure: + * ``` + * /path/to/project node_modules (1084) + * ├── @angular/core@20.3.15 + * ├── rxjs @7.8.2 + * └── zone.js @0.15.1 + * ``` + * + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns A map of package names to their installed package details. + */ +export function parseBunDependencies( + stdout: string, + logger?: Logger, +): Map { + logger?.debug('Parsing Bun dependency list...'); + logStdout(stdout, logger); + + const dependencies = new Map(); + if (!stdout) { + return dependencies; + } + + const lines = stdout.split('\n'); + // Skip the first line (project info) + for (let i = 1; i < lines.length; i++) { + const line = lines[i].trim(); + if (!line) { + continue; + } + + // Remove tree structure characters + const cleanLine = line.replace(/^[└├]──\s*/, ''); + + // Parse name and version + // Scoped: @angular/core@20.3.15 + // Unscoped: rxjs @7.8.2 + const match = cleanLine.match(/^(.+?)\s?@([^@\s]+)$/); + if (match) { + const name = match[1]; + const version = match[2]; + dependencies.set(name, { name, version }); + } + } + + logger?.debug(` Found ${dependencies.size} dependencies.`); + + return dependencies; +} diff --git a/packages/angular/cli/src/package-managers/parsers_spec.ts b/packages/angular/cli/src/package-managers/parsers_spec.ts index 3b831d71a286..524f376a8846 100644 --- a/packages/angular/cli/src/package-managers/parsers_spec.ts +++ b/packages/angular/cli/src/package-managers/parsers_spec.ts @@ -6,7 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ -import { parseNpmLikeError, parseNpmLikeManifest, parseYarnClassicError } from './parsers'; +import { + parseBunDependencies, + parseNpmLikeError, + parseNpmLikeManifest, + parseYarnClassicError, +} from './parsers'; describe('parsers', () => { describe('parseNpmLikeError', () => { @@ -128,4 +133,41 @@ describe('parsers', () => { expect(error).toBeNull(); }); }); + + describe('parseBunDependencies', () => { + it('should parse bun pm ls output', () => { + const stdout = ` +/tmp/angular-cli-e2e-PiL5n3/e2e-test/assets/19.0-project-1767113081927 node_modules (1084) +├── @angular-devkit/build-angular@20.3.13 +├── @angular/cli@20.3.13 +├── jasmine-core @5.6.0 +├── rxjs @7.8.2 +└── zone.js @0.15.1 +`.trim(); + + const deps = parseBunDependencies(stdout); + expect(deps.size).toBe(5); + expect(deps.get('@angular-devkit/build-angular')).toEqual({ + name: '@angular-devkit/build-angular', + version: '20.3.13', + }); + expect(deps.get('@angular/cli')).toEqual({ name: '@angular/cli', version: '20.3.13' }); + expect(deps.get('jasmine-core')).toEqual({ name: 'jasmine-core', version: '5.6.0' }); + expect(deps.get('rxjs')).toEqual({ name: 'rxjs', version: '7.8.2' }); + expect(deps.get('zone.js')).toEqual({ name: 'zone.js', version: '0.15.1' }); + }); + + it('should return empty map for empty stdout', () => { + expect(parseBunDependencies('').size).toBe(0); + }); + + it('should skip lines that do not match the pattern', () => { + const stdout = ` +project node_modules +├── invalid-line +└── another-invalid +`.trim(); + expect(parseBunDependencies(stdout).size).toBe(0); + }); + }); }); From 60a16dc0d6bd601a89c20abda82509e1441cd5fd Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Dec 2025 10:55:26 -0500 Subject: [PATCH 2086/2162] refactor(@angular/cli): use package manager abstraction for update command dependencies This commit refactors the `ng update` command to use the `PackageManager` abstraction for discovering installed dependencies, replacing the previous file-system-based resolution logic. This change improves correctness (respecting package manager resolution strategies like PnP and workspaces) and performance (reducing initial file I/O). --- .../angular/cli/src/commands/update/cli.ts | 86 ++++++++++++------- 1 file changed, 56 insertions(+), 30 deletions(-) diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 9b926cc079a2..b5f0be73539e 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -20,16 +20,16 @@ import { Options, } from '../../command-builder/command-module'; import { SchematicEngineHost } from '../../command-builder/utilities/schematic-engine-host'; -import { PackageManager, PackageManifest, createPackageManager } from '../../package-managers'; +import { + InstalledPackage, + PackageManager, + PackageManifest, + createPackageManager, +} from '../../package-managers'; import { colors } from '../../utilities/color'; import { disableVersionCheck } from '../../utilities/environment-options'; import { assertIsError } from '../../utilities/error'; -import { - PackageTreeNode, - findPackageJson, - getProjectDependencies, - readPackageJson, -} from '../../utilities/package-tree'; +import { findPackageJson } from '../../utilities/package-tree'; import { checkCLIVersion, coerceVersionNumber, @@ -242,7 +242,7 @@ export default class UpdateCommandModule extends CommandModule, + rootDependencies: Map, options: Options, + packageManager: PackageManager, ): Promise { const { logger } = this.context; - const packageDependency = rootDependencies.get(packageName); + let packageDependency = rootDependencies.get(packageName); let packagePath = packageDependency?.path; - let packageNode = packageDependency?.package; - if (packageDependency && !packageNode) { - logger.error('Package found in package.json but is not installed.'); + let packageNode: PackageManifest | undefined; - return 1; - } else if (!packageDependency) { - // Allow running migrations on transitively installed dependencies - // There can technically be nested multiple versions - // TODO: If multiple, this should find all versions and ask which one to use - const packageJson = findPackageJson(this.context.root, packageName); - if (packageJson) { - packagePath = path.dirname(packageJson); - packageNode = await readPackageJson(packageJson); + if (!packageDependency) { + const installed = await packageManager.getInstalledPackage(packageName); + if (installed) { + packageDependency = installed; + packagePath = installed.path; + } + } + + if (packagePath) { + packageNode = await readPackageManifest(path.join(packagePath, 'package.json')); + } + + if (!packageNode) { + const jsonPath = findPackageJson(this.context.root, packageName); + if (jsonPath) { + packageNode = await readPackageManifest(jsonPath); + + if (!packagePath) { + packagePath = path.dirname(jsonPath); + } } } @@ -399,7 +415,7 @@ export default class UpdateCommandModule extends CommandModule, + rootDependencies: Map, options: Options, packages: npa.Result[], packageManager: PackageManager, @@ -414,21 +430,21 @@ export default class UpdateCommandModule extends CommandModule { + try { + const content = await fs.readFile(manifestPath, 'utf8'); + + return JSON.parse(content) as PackageManifest; + } catch { + return undefined; + } +} From a4573779449b33467b7ba698cd9e314fe30b2a43 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Dec 2025 14:11:28 -0500 Subject: [PATCH 2087/2162] refactor(@angular/cli): update yarn modern dependency parsing This commit updates the dependency discovery logic for Yarn Modern (Berry) to use the `yarn info --name-only --json` command, as the `list` command is not available in newer versions of Yarn. --- .../package-manager-descriptor.ts | 2 +- .../cli/src/package-managers/parsers.ts | 124 ++++++++---------- .../cli/src/package-managers/parsers_spec.ts | 35 +++++ 3 files changed, 92 insertions(+), 69 deletions(-) diff --git a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts index ae49fe0c0f3e..34db06b64c99 100644 --- a/packages/angular/cli/src/package-managers/package-manager-descriptor.ts +++ b/packages/angular/cli/src/package-managers/package-manager-descriptor.ts @@ -182,7 +182,7 @@ export const SUPPORTED_PACKAGE_MANAGERS = { configFiles: ['.yarnrc.yml', '.yarnrc.yaml'], getRegistryOptions: (registry: string) => ({ env: { YARN_NPM_REGISTRY_SERVER: registry } }), versionCommand: ['--version'], - listDependenciesCommand: ['list', '--depth=0', '--json', '--recursive=false'], + listDependenciesCommand: ['info', '--name-only', '--json'], getManifestCommand: ['npm', 'info', '--json'], viewCommandFieldArgFormatter: (fields) => ['--fields', fields.join(',')], outputParsers: { diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts index fb7084edbc4e..3c64cb4a7856 100644 --- a/packages/angular/cli/src/package-managers/parsers.ts +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -170,74 +170,6 @@ export function parseYarnClassicDependencies( return dependencies; } -/** - * Parses the output of `yarn list` (modern). - * - * The expected JSON structure is a single object. - * Yarn modern does not provide a path, so the `path` property will be `undefined`. - * - * ```json - * { - * "trees": [ - * { "name": "@angular/cli@18.0.0", "children": [] } - * ] - * } - * ``` - * - * @param stdout The standard output of the command. - * @param logger An optional logger instance. - * @returns A map of package names to their installed package details. - */ -export function parseYarnModernDependencies( - stdout: string, - logger?: Logger, -): Map { - logger?.debug(`Parsing yarn modern dependency list...`); - logStdout(stdout, logger); - - const dependencies = new Map(); - if (!stdout) { - logger?.debug(' stdout is empty. No dependencies found.'); - - return dependencies; - } - - // Modern yarn `list` command outputs a single JSON object with a `trees` property. - // Each line is not a separate JSON object. - try { - const data = JSON.parse(stdout); - for (const info of data.trees) { - const name = info.name.split('@')[0]; - const version = info.name.split('@').pop(); - dependencies.set(name, { - name, - version, - }); - } - } catch (e) { - logger?.debug( - ` Failed to parse as single JSON object: ${e}. Falling back to line-by-line parsing.`, - ); - // Fallback for older versions of yarn berry that might still output json lines - for (const json of parseJsonLines(stdout, logger)) { - if (json.type === 'tree' && json.data?.trees) { - for (const info of json.data.trees) { - const name = info.name.split('@')[0]; - const version = info.name.split('@').pop(); - dependencies.set(name, { - name, - version, - }); - } - } - } - } - - logger?.debug(` Found ${dependencies.size} dependencies.`); - - return dependencies; -} - /** * Parses the output of `npm view` or a compatible command to get a package manifest. * @param stdout The standard output of the command. @@ -575,3 +507,59 @@ export function parseBunDependencies( return dependencies; } + +/** + * Parses the output of `yarn info --name-only --json`. + * + * The expected output is a JSON stream (JSONL) of strings. + * Each string represents a package locator. + * + * ``` + * "karma@npm:6.4.4" + * "@angular/core@npm:20.3.15" + * ``` + * + * @param stdout The standard output of the command. + * @param logger An optional logger instance. + * @returns A map of package names to their installed package details. + */ +export function parseYarnModernDependencies( + stdout: string, + logger?: Logger, +): Map { + logger?.debug('Parsing Yarn Berry dependency list...'); + logStdout(stdout, logger); + + const dependencies = new Map(); + if (!stdout) { + return dependencies; + } + + for (const json of parseJsonLines(stdout, logger)) { + if (typeof json === 'string') { + const match = json.match(/^(@?[^@]+)@(.+)$/); + if (match) { + const name = match[1]; + let version = match[2]; + + // Handle "npm:" prefix + if (version.startsWith('npm:')) { + version = version.slice(4); + } + + // Handle complex locators with embedded version metadata (e.g., "patch:...", "virtual:...") + // Yarn Berry often appends metadata like "::version=x.y.z" + const versionParamMatch = version.match(/::version=([^&]+)/); + if (versionParamMatch) { + version = versionParamMatch[1]; + } + + dependencies.set(name, { name, version }); + } + } + } + + logger?.debug(` Found ${dependencies.size} dependencies.`); + + return dependencies; +} diff --git a/packages/angular/cli/src/package-managers/parsers_spec.ts b/packages/angular/cli/src/package-managers/parsers_spec.ts index 524f376a8846..aec708c00360 100644 --- a/packages/angular/cli/src/package-managers/parsers_spec.ts +++ b/packages/angular/cli/src/package-managers/parsers_spec.ts @@ -11,6 +11,7 @@ import { parseNpmLikeError, parseNpmLikeManifest, parseYarnClassicError, + parseYarnModernDependencies, } from './parsers'; describe('parsers', () => { @@ -170,4 +171,38 @@ project node_modules expect(parseBunDependencies(stdout).size).toBe(0); }); }); + + describe('parseYarnModernDependencies', () => { + it('should parse yarn info --name-only --json output', () => { + const stdout = ` +"karma@npm:6.4.4" +"rxjs@npm:7.8.2" +"tslib@npm:2.8.1" +"typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" +`.trim(); + + const deps = parseYarnModernDependencies(stdout); + expect(deps.size).toBe(4); + expect(deps.get('karma')).toEqual({ name: 'karma', version: '6.4.4' }); + expect(deps.get('rxjs')).toEqual({ name: 'rxjs', version: '7.8.2' }); + expect(deps.get('tslib')).toEqual({ name: 'tslib', version: '2.8.1' }); + expect(deps.get('typescript')).toEqual({ + name: 'typescript', + version: '5.9.3', + }); + }); + + it('should handle scoped packages', () => { + const stdout = '"@angular/core@npm:20.3.15"'; + const deps = parseYarnModernDependencies(stdout); + expect(deps.get('@angular/core')).toEqual({ + name: '@angular/core', + version: '20.3.15', + }); + }); + + it('should return empty map for empty stdout', () => { + expect(parseYarnModernDependencies('').size).toBe(0); + }); + }); }); From d9cd609c5d13fe492b1f31973d9be518f8529387 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 30 Dec 2025 14:25:47 -0500 Subject: [PATCH 2088/2162] fix(@angular/cli): correctly parse scoped packages in yarn classic list output The `parseYarnClassicDependencies` function incorrectly parsed scoped packages (e.g., `@angular/core@18.0.0`) by splitting at the first `@`, resulting in an empty name. This commit updates the logic to split at the last `@`, ensuring scoped package names are correctly identified. --- .../cli/src/package-managers/parsers.ts | 6 ++-- .../cli/src/package-managers/parsers_spec.ts | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/packages/angular/cli/src/package-managers/parsers.ts b/packages/angular/cli/src/package-managers/parsers.ts index 3c64cb4a7856..c9f7fb235087 100644 --- a/packages/angular/cli/src/package-managers/parsers.ts +++ b/packages/angular/cli/src/package-managers/parsers.ts @@ -155,8 +155,10 @@ export function parseYarnClassicDependencies( for (const json of parseJsonLines(stdout, logger)) { if (json.type === 'tree' && json.data?.trees) { for (const info of json.data.trees) { - const name = info.name.split('@')[0]; - const version = info.name.split('@').pop(); + const lastAtIndex = info.name.lastIndexOf('@'); + const name = info.name.slice(0, lastAtIndex); + const version = info.name.slice(lastAtIndex + 1); + dependencies.set(name, { name, version, diff --git a/packages/angular/cli/src/package-managers/parsers_spec.ts b/packages/angular/cli/src/package-managers/parsers_spec.ts index aec708c00360..2fa8abdc1e32 100644 --- a/packages/angular/cli/src/package-managers/parsers_spec.ts +++ b/packages/angular/cli/src/package-managers/parsers_spec.ts @@ -10,6 +10,7 @@ import { parseBunDependencies, parseNpmLikeError, parseNpmLikeManifest, + parseYarnClassicDependencies, parseYarnClassicError, parseYarnModernDependencies, } from './parsers'; @@ -135,6 +136,38 @@ describe('parsers', () => { }); }); + describe('parseYarnClassicDependencies', () => { + it('should parse yarn classic list output', () => { + const stdout = JSON.stringify({ + type: 'tree', + data: { + trees: [{ name: 'rxjs@7.8.2', children: [] }], + }, + }); + + const deps = parseYarnClassicDependencies(stdout); + expect(deps.size).toBe(1); + expect(deps.get('rxjs')).toEqual({ name: 'rxjs', version: '7.8.2' }); + }); + + it('should handle scoped packages', () => { + const stdout = JSON.stringify({ + type: 'tree', + data: { + trees: [{ name: '@angular/core@18.0.0', children: [] }], + }, + }); + + const deps = parseYarnClassicDependencies(stdout); + expect(deps.size).toBe(1); + expect(deps.get('@angular/core')).toEqual({ name: '@angular/core', version: '18.0.0' }); + }); + + it('should return empty map for empty stdout', () => { + expect(parseYarnClassicDependencies('').size).toBe(0); + }); + }); + describe('parseBunDependencies', () => { it('should parse bun pm ls output', () => { const stdout = ` From 8ba696742dcc7ba874970c6bb1b41b80e1c5c3c3 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 12 Jan 2026 12:54:51 -0500 Subject: [PATCH 2089/2162] refactor: improve `findUp` utility correctness and performance This change modernizes the `findUp` utility across the codebase. Replaced `path.parse().root` with `path.dirname(dir) === dir` check. Introduced an asynchronous version (`findUp`) in the CLI utility and renamed the synchronous version to `findUpSync` to align with Node.js conventions. Updated `packages/angular/cli/src/utilities/config.ts` to use the asynchronous `findUp` for non-blocking configuration discovery. --- packages/angular/cli/src/utilities/config.ts | 14 ++--- packages/angular/cli/src/utilities/find-up.ts | 62 ++++++++++++++++--- packages/angular/cli/src/utilities/project.ts | 4 +- .../angular_devkit/architect/bin/architect.ts | 18 +++--- .../schematics_cli/bin/schematics.ts | 18 +++--- 5 files changed, 81 insertions(+), 35 deletions(-) diff --git a/packages/angular/cli/src/utilities/config.ts b/packages/angular/cli/src/utilities/config.ts index 25f8dfb2f896..dfe21fa96692 100644 --- a/packages/angular/cli/src/utilities/config.ts +++ b/packages/angular/cli/src/utilities/config.ts @@ -11,7 +11,7 @@ import { existsSync, promises as fs } from 'node:fs'; import * as os from 'node:os'; import * as path from 'node:path'; import { PackageManager } from '../../lib/config/workspace-schema'; -import { findUp } from './find-up'; +import { findUp, findUpSync } from './find-up'; import { JSONFile, readAndParseJson } from './json-file'; function isJsonObject(value: json.JsonValue | undefined): value is json.JsonObject { @@ -70,13 +70,13 @@ function xdgConfigHomeOld(home: string): string { return path.join(p, '.angular-config.json'); } -function projectFilePath(projectPath?: string): string | null { +async function projectFilePath(projectPath?: string): Promise { // Find the configuration, either where specified, in the Angular CLI project // (if it's in node_modules) or from the current process. return ( - (projectPath && findUp(configNames, projectPath)) || - findUp(configNames, process.cwd()) || - findUp(configNames, __dirname) + (projectPath && (await findUp(configNames, projectPath))) || + (await findUp(configNames, process.cwd())) || + (await findUp(configNames, __dirname)) ); } @@ -181,7 +181,7 @@ export async function getWorkspace( return cachedWorkspaces.get(level); } - const configPath = level === 'local' ? projectFilePath() : globalFilePath(); + const configPath = level === 'local' ? await projectFilePath() : globalFilePath(); if (!configPath) { if (level === 'global') { // Unlike a local config, a global config is not mandatory. @@ -223,7 +223,7 @@ export async function getWorkspace( export async function getWorkspaceRaw( level: 'local' | 'global' = 'local', ): Promise<[JSONFile | null, string | null]> { - let configPath = level === 'local' ? projectFilePath() : globalFilePath(); + let configPath = level === 'local' ? await projectFilePath() : globalFilePath(); if (!configPath) { if (level === 'global') { diff --git a/packages/angular/cli/src/utilities/find-up.ts b/packages/angular/cli/src/utilities/find-up.ts index 317c8d8497f5..f088105b0558 100644 --- a/packages/angular/cli/src/utilities/find-up.ts +++ b/packages/angular/cli/src/utilities/find-up.ts @@ -7,24 +7,66 @@ */ import { existsSync } from 'node:fs'; -import * as path from 'node:path'; +import { stat } from 'node:fs/promises'; +import { dirname, join, resolve } from 'node:path'; -export function findUp(names: string | string[], from: string) { - if (!Array.isArray(names)) { - names = [names]; +/** + * Find a file or directory by walking up the directory tree. + * @param names The name or names of the files or directories to find. + * @param from The directory to start the search from. + * @returns The path to the first match found, or `null` if no match was found. + */ +export async function findUp(names: string | string[], from: string): Promise { + const filenames = Array.isArray(names) ? names : [names]; + + let currentDir = resolve(from); + while (true) { + for (const name of filenames) { + const p = join(currentDir, name); + try { + await stat(p); + + return p; + } catch { + // Ignore errors (e.g. file not found). + } + } + + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + break; + } + + currentDir = parentDir; } - const root = path.parse(from).root; - let currentDir = from; - while (currentDir && currentDir !== root) { - for (const name of names) { - const p = path.join(currentDir, name); + return null; +} + +/** + * Synchronously find a file or directory by walking up the directory tree. + * @param names The name or names of the files or directories to find. + * @param from The directory to start the search from. + * @returns The path to the first match found, or `null` if no match was found. + */ +export function findUpSync(names: string | string[], from: string): string | null { + const filenames = Array.isArray(names) ? names : [names]; + + let currentDir = resolve(from); + while (true) { + for (const name of filenames) { + const p = join(currentDir, name); if (existsSync(p)) { return p; } } - currentDir = path.dirname(currentDir); + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + break; + } + + currentDir = parentDir; } return null; diff --git a/packages/angular/cli/src/utilities/project.ts b/packages/angular/cli/src/utilities/project.ts index 39ce2e6d3e83..12ca07545342 100644 --- a/packages/angular/cli/src/utilities/project.ts +++ b/packages/angular/cli/src/utilities/project.ts @@ -10,7 +10,7 @@ import { normalize } from '@angular-devkit/core'; import * as fs from 'node:fs'; import * as os from 'node:os'; import * as path from 'node:path'; -import { findUp } from './find-up'; +import { findUpSync } from './find-up'; interface PackageDependencies { dependencies?: Record; @@ -19,7 +19,7 @@ interface PackageDependencies { export function findWorkspaceFile(currentDirectory = process.cwd()): string | null { const possibleConfigFiles = ['angular.json', '.angular.json']; - const configFilePath = findUp(possibleConfigFiles, currentDirectory); + const configFilePath = findUpSync(possibleConfigFiles, currentDirectory); if (configFilePath === null) { return null; } diff --git a/packages/angular_devkit/architect/bin/architect.ts b/packages/angular_devkit/architect/bin/architect.ts index acfd798b89a2..b4513721a1da 100644 --- a/packages/angular_devkit/architect/bin/architect.ts +++ b/packages/angular_devkit/architect/bin/architect.ts @@ -16,21 +16,23 @@ import { Architect } from '../index'; import { WorkspaceNodeModulesArchitectHost } from '../node/index'; function findUp(names: string | string[], from: string) { - if (!Array.isArray(names)) { - names = [names]; - } - const root = path.parse(from).root; + const filenames = Array.isArray(names) ? names : [names]; - let currentDir = from; - while (currentDir && currentDir !== root) { - for (const name of names) { + let currentDir = path.resolve(from); + while (true) { + for (const name of filenames) { const p = path.join(currentDir, name); if (existsSync(p)) { return p; } } - currentDir = path.dirname(currentDir); + const parentDir = path.dirname(currentDir); + if (parentDir === currentDir) { + break; + } + + currentDir = parentDir; } return null; diff --git a/packages/angular_devkit/schematics_cli/bin/schematics.ts b/packages/angular_devkit/schematics_cli/bin/schematics.ts index 8dc64ff5eae0..109497dd89e1 100644 --- a/packages/angular_devkit/schematics_cli/bin/schematics.ts +++ b/packages/angular_devkit/schematics_cli/bin/schematics.ts @@ -177,21 +177,23 @@ function _createPromptProvider(): schema.PromptProvider { } function findUp(names: string | string[], from: string) { - if (!Array.isArray(names)) { - names = [names]; - } - const root = path.parse(from).root; + const filenames = Array.isArray(names) ? names : [names]; - let currentDir = from; - while (currentDir && currentDir !== root) { - for (const name of names) { + let currentDir = path.resolve(from); + while (true) { + for (const name of filenames) { const p = path.join(currentDir, name); if (existsSync(p)) { return p; } } - currentDir = path.dirname(currentDir); + const parentDir = path.dirname(currentDir); + if (parentDir === currentDir) { + break; + } + + currentDir = parentDir; } return null; From 2f0599a61465826eb955500ea0899967ebdff7f8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 12 Jan 2026 16:28:24 -0500 Subject: [PATCH 2090/2162] refactor(@angular/cli): remove resolve dependency and use native require.resolve This commit removes the `resolve` dependency from `@angular/cli` and replaces its usage with native `require.resolve` via `createRequire`. The `findPackageJson` utility is now only used in migration-only scenarios where the Node.js module caching behavior that prompted the original use of `resolve` is no longer a concern. This reduces the package dependency footprint. --- package.json | 1 - packages/angular/cli/BUILD.bazel | 2 -- packages/angular/cli/package.json | 1 - packages/angular/cli/src/utilities/package-tree.ts | 6 +++--- pnpm-lock.yaml | 11 ----------- 5 files changed, 3 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index ac935c4ead6a..4f136df9262b 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,6 @@ "@types/pacote": "^11.1.3", "@types/picomatch": "^4.0.0", "@types/progress": "^2.0.3", - "@types/resolve": "^1.17.1", "@types/semver": "^7.3.12", "@types/watchpack": "^2.4.4", "@types/yargs": "^17.0.20", diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index abed616cd810..6d33838ae2e7 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -72,7 +72,6 @@ ts_project( ":node_modules/npm-package-arg", ":node_modules/pacote", ":node_modules/parse5-html-rewriting-stream", - ":node_modules/resolve", ":node_modules/yargs", ":node_modules/zod", "//:node_modules/@angular/core", @@ -80,7 +79,6 @@ ts_project( "//:node_modules/@types/node", "//:node_modules/@types/npm-package-arg", "//:node_modules/@types/pacote", - "//:node_modules/@types/resolve", "//:node_modules/@types/semver", "//:node_modules/@types/yargs", "//:node_modules/@types/yarnpkg__lockfile", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 8872ceeee5b0..452594492313 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -37,7 +37,6 @@ "npm-package-arg": "13.0.2", "pacote": "21.0.4", "parse5-html-rewriting-stream": "8.0.0", - "resolve": "1.22.11", "semver": "7.7.3", "yargs": "18.0.0", "zod": "4.3.5" diff --git a/packages/angular/cli/src/utilities/package-tree.ts b/packages/angular/cli/src/utilities/package-tree.ts index 14e8a9edd689..3153d8966144 100644 --- a/packages/angular/cli/src/utilities/package-tree.ts +++ b/packages/angular/cli/src/utilities/package-tree.ts @@ -7,8 +7,8 @@ */ import * as fs from 'node:fs'; +import { createRequire } from 'node:module'; import { dirname, join } from 'node:path'; -import * as resolve from 'resolve'; import { NgAddSaveDependency } from './package-metadata'; interface PackageJson { @@ -52,8 +52,8 @@ export async function readPackageJson(packageJsonPath: string): Promise Date: Mon, 12 Jan 2026 16:56:08 -0500 Subject: [PATCH 2091/2162] refactor(@angular/cli): remove unused package-tree utilities This commit removes the unused `package-tree.ts` utilities, including `getProjectDependencies`, `readPackageJson`, and `PackageTreeNode`. The `findPackageJson` function, which was the only remaining used part, has been moved directly into `commands/update/cli.ts` where it is consumed. --- .../angular/cli/src/commands/update/cli.ts | 12 ++- .../angular/cli/src/utilities/package-tree.ts | 86 ------------------- 2 files changed, 11 insertions(+), 87 deletions(-) delete mode 100644 packages/angular/cli/src/utilities/package-tree.ts diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index b5f0be73539e..8703eb017f24 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -29,7 +29,6 @@ import { import { colors } from '../../utilities/color'; import { disableVersionCheck } from '../../utilities/environment-options'; import { assertIsError } from '../../utilities/error'; -import { findPackageJson } from '../../utilities/package-tree'; import { checkCLIVersion, coerceVersionNumber, @@ -697,3 +696,14 @@ async function readPackageManifest(manifestPath: string): Promise; - devDependencies?: Record; - peerDependencies?: Record; - optionalDependencies?: Record; - 'ng-update'?: { - migrations?: string; - }; - 'ng-add'?: { - save?: NgAddSaveDependency; - }; -} - -function getAllDependencies(pkg: PackageJson): Set<[string, string]> { - return new Set([ - ...Object.entries(pkg.dependencies || []), - ...Object.entries(pkg.devDependencies || []), - ...Object.entries(pkg.peerDependencies || []), - ...Object.entries(pkg.optionalDependencies || []), - ]); -} - -export interface PackageTreeNode { - name: string; - version: string; - path: string; - package: PackageJson | undefined; -} - -export async function readPackageJson(packageJsonPath: string): Promise { - try { - return JSON.parse((await fs.promises.readFile(packageJsonPath)).toString()) as PackageJson; - } catch { - return undefined; - } -} - -export function findPackageJson(workspaceDir: string, packageName: string): string | undefined { - try { - const projectRequire = createRequire(join(workspaceDir, 'package.json')); - const packageJsonPath = projectRequire.resolve(`${packageName}/package.json`); - - return packageJsonPath; - } catch { - return undefined; - } -} - -export async function getProjectDependencies(dir: string): Promise> { - const pkg = await readPackageJson(join(dir, 'package.json')); - if (!pkg) { - throw new Error('Could not find package.json'); - } - - const results = new Map(); - for (const [name, version] of getAllDependencies(pkg)) { - const packageJsonPath = findPackageJson(dir, name); - if (!packageJsonPath) { - continue; - } - - results.set(name, { - name, - version, - path: dirname(packageJsonPath), - package: await readPackageJson(packageJsonPath), - }); - } - - return results; -} From fd1a2091d20709781438e1c588a79e8c93cf5183 Mon Sep 17 00:00:00 2001 From: arturovt Date: Sat, 10 Jan 2026 17:49:50 +0200 Subject: [PATCH 2092/2162] fix(@angular/ssr): handle platform destruction during rendering Fixes crash when platform/app destroys itself during the bootstrapping and stabilization phase. Previously, the code would call `applicationRef.injector` without checking if the platform was destroyed, resulting in: "Error: Injector has already been destroyed" This can occur when: - Component constructor calls `inject(PlatformRef).destroy()` - AbortSignal triggers during request handling - APP_INITIALIZER rejects and causes cleanup - Custom guard/resolver logic destroys the platform Solution: Check `applicationRef.destroyed` after `whenStable()` and return error state instead of accessing destroyed injector. Test: Added test case that destroys app in component constructor to verify graceful handling of this edge case. --- packages/angular/ssr/src/utils/ng.ts | 12 +++++++++++- packages/angular/ssr/test/app_spec.ts | 21 +++++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index 16e059e6aaf2..acf2df180f32 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -59,7 +59,10 @@ export async function renderAngular( url: URL, platformProviders: StaticProvider[], serverContext: string, -): Promise<{ hasNavigationError: boolean; redirectTo?: string; content: () => Promise }> { +): Promise< + | { hasNavigationError: true } + | { hasNavigationError: boolean; redirectTo?: string; 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); const platformRef = platformServer([ @@ -100,6 +103,13 @@ export async function renderAngular( // Block until application is stable. await applicationRef.whenStable(); + // This code protect against app destruction during bootstrapping which is a + // valid case. We should not assume the `applicationRef` is not in destroyed state. + // Calling `envInjector.get` would throw `NG0205: Injector has already been destroyed`. + if (applicationRef.destroyed) { + return { hasNavigationError: true }; + } + // TODO(alanagius): Find a way to avoid rendering here especially for redirects as any output will be discarded. const envInjector = applicationRef.injector; const routerIsProvided = !!envInjector.get(ActivatedRoute, null); diff --git a/packages/angular/ssr/test/app_spec.ts b/packages/angular/ssr/test/app_spec.ts index 9584feafeb72..a72c4d75fae2 100644 --- a/packages/angular/ssr/test/app_spec.ts +++ b/packages/angular/ssr/test/app_spec.ts @@ -12,8 +12,8 @@ import '@angular/compiler'; /* eslint-enable import/no-unassigned-import */ import { APP_BASE_HREF } from '@angular/common'; -import { Component, REQUEST, RESPONSE_INIT, inject } from '@angular/core'; -import { CanActivateFn, Router } from '@angular/router'; +import { Component, PlatformRef, REQUEST, RESPONSE_INIT, inject } from '@angular/core'; +import { ActivatedRoute, CanActivateFn, Router } from '@angular/router'; import { AngularServerApp } from '../src/app'; import { RenderMode } from '../src/routes/route-config'; import { setAngularAppTestingManifest } from './testing-utils'; @@ -26,7 +26,13 @@ describe('AngularServerApp', () => { selector: 'app-home', template: `Home works`, }) - class HomeComponent {} + class HomeComponent { + constructor() { + if (inject(ActivatedRoute).snapshot.data['destroyApp']) { + inject(PlatformRef).destroy(); + } + } + } @Component({ selector: 'app-redirect', @@ -65,7 +71,7 @@ describe('AngularServerApp', () => { { path: 'home-ssg', component: HomeComponent }, { path: 'page-with-headers', component: HomeComponent }, { path: 'page-with-status', component: HomeComponent }, - + { path: 'page-destroy-app', component: HomeComponent, data: { destroyApp: true } }, { path: 'redirect', redirectTo: 'home' }, { path: 'redirect-via-navigate', component: RedirectComponent }, { @@ -227,6 +233,13 @@ describe('AngularServerApp', () => { expect(response?.status).toBe(201); }); + it('should not throw an error when app destroys itself', async () => { + const response = await app.handle(new Request('http://localhost/page-destroy-app')); + // The test expects response to be null, which is reasonable - if the app destroys + // itself, there's nothing to render. + expect(response).toBeNull(); + }); + it('should return static `index.csr.html` for routes with CSR rendering mode', async () => { const response = await app.handle(new Request('http://localhost/home-csr')); const content = await response?.text(); From 712f5081f0d3a398b61b6ad3217bf5a8be9be928 Mon Sep 17 00:00:00 2001 From: MeAkib Date: Tue, 13 Jan 2026 00:23:34 +0600 Subject: [PATCH 2093/2162] refactor: update copyright from Google Inc to Google LLC Update all copyright headers throughout the codebase to reflect the current legal entity name. This is a non-functional change that only affects the copyright notices in source files. --- packages/angular/cli/BUILD.bazel | 2 +- packages/angular/create/BUILD.bazel | 2 +- packages/angular/pwa/BUILD.bazel | 2 +- packages/angular/ssr/schematics/BUILD.bazel | 2 +- packages/angular_devkit/architect/BUILD.bazel | 2 +- packages/angular_devkit/architect/bin/BUILD.bazel | 2 +- packages/angular_devkit/architect/node/BUILD.bazel | 2 +- packages/angular_devkit/architect/testing/BUILD.bazel | 2 +- packages/angular_devkit/architect_cli/BUILD.bazel | 2 +- packages/angular_devkit/build_angular/BUILD.bazel | 2 +- packages/angular_devkit/build_webpack/BUILD.bazel | 2 +- packages/angular_devkit/core/BUILD.bazel | 2 +- packages/angular_devkit/core/node/BUILD.bazel | 2 +- packages/angular_devkit/core/node/testing/BUILD.bazel | 2 +- packages/angular_devkit/schematics/BUILD.bazel | 2 +- packages/angular_devkit/schematics/tasks/BUILD.bazel | 2 +- packages/angular_devkit/schematics/tasks/node/BUILD.bazel | 2 +- packages/angular_devkit/schematics/testing/BUILD.bazel | 2 +- packages/angular_devkit/schematics/tools/BUILD.bazel | 2 +- packages/angular_devkit/schematics_cli/BUILD.bazel | 2 +- packages/ngtools/webpack/BUILD.bazel | 2 +- packages/schematics/angular/BUILD.bazel | 2 +- .../schematics/tools/file-system-engine-host/BUILD.bazel | 2 +- tools/link_package_json_to_tarballs.bzl | 2 +- tools/package_json_release_filter.jq | 2 +- tools/snapshot_repo_filter.bzl | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index 6d33838ae2e7..0eac4a2cede9 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular/create/BUILD.bazel b/packages/angular/create/BUILD.bazel index 87c1896531d1..713eae80a7e5 100644 --- a/packages/angular/create/BUILD.bazel +++ b/packages/angular/create/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular/pwa/BUILD.bazel b/packages/angular/pwa/BUILD.bazel index 6cdb370a397b..08bf428c81d5 100644 --- a/packages/angular/pwa/BUILD.bazel +++ b/packages/angular/pwa/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular/ssr/schematics/BUILD.bazel b/packages/angular/ssr/schematics/BUILD.bazel index b0d2d0b9cbd8..531a17f49aa2 100644 --- a/packages/angular/ssr/schematics/BUILD.bazel +++ b/packages/angular/ssr/schematics/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/architect/BUILD.bazel b/packages/angular_devkit/architect/BUILD.bazel index 92fce0d2bfb3..8a1ce9945f6a 100644 --- a/packages/angular_devkit/architect/BUILD.bazel +++ b/packages/angular_devkit/architect/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/architect/bin/BUILD.bazel b/packages/angular_devkit/architect/bin/BUILD.bazel index cb7d761ac84d..8b3162a83225 100644 --- a/packages/angular_devkit/architect/bin/BUILD.bazel +++ b/packages/angular_devkit/architect/bin/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/architect/node/BUILD.bazel b/packages/angular_devkit/architect/node/BUILD.bazel index fad21dd46480..052175d8656b 100644 --- a/packages/angular_devkit/architect/node/BUILD.bazel +++ b/packages/angular_devkit/architect/node/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/architect/testing/BUILD.bazel b/packages/angular_devkit/architect/testing/BUILD.bazel index b2ff4a345e3a..4fffb6e5406b 100644 --- a/packages/angular_devkit/architect/testing/BUILD.bazel +++ b/packages/angular_devkit/architect/testing/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/architect_cli/BUILD.bazel b/packages/angular_devkit/architect_cli/BUILD.bazel index 291238b8d897..98cfd7606b81 100644 --- a/packages/angular_devkit/architect_cli/BUILD.bazel +++ b/packages/angular_devkit/architect_cli/BUILD.bazel @@ -1,7 +1,7 @@ load("@npm//:defs.bzl", "npm_link_all_packages") load("//tools:defaults.bzl", "npm_package") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/build_angular/BUILD.bazel b/packages/angular_devkit/build_angular/BUILD.bazel index 9d145d03682c..6e4fba869d9f 100644 --- a/packages/angular_devkit/build_angular/BUILD.bazel +++ b/packages/angular_devkit/build_angular/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/build_webpack/BUILD.bazel b/packages/angular_devkit/build_webpack/BUILD.bazel index 3a104c243a66..10b435d66e06 100644 --- a/packages/angular_devkit/build_webpack/BUILD.bazel +++ b/packages/angular_devkit/build_webpack/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/core/BUILD.bazel b/packages/angular_devkit/core/BUILD.bazel index b59c5bd37987..d57bd782596b 100644 --- a/packages/angular_devkit/core/BUILD.bazel +++ b/packages/angular_devkit/core/BUILD.bazel @@ -2,7 +2,7 @@ load("@devinfra//bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//:defs.bzl", "npm_link_all_packages") load("//tools:defaults.bzl", "jasmine_test", "npm_package", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/core/node/BUILD.bazel b/packages/angular_devkit/core/node/BUILD.bazel index 83e49baecd78..9c6f34c3a51f 100644 --- a/packages/angular_devkit/core/node/BUILD.bazel +++ b/packages/angular_devkit/core/node/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/core/node/testing/BUILD.bazel b/packages/angular_devkit/core/node/testing/BUILD.bazel index 0e82f30747c2..fb7ffe1059d5 100644 --- a/packages/angular_devkit/core/node/testing/BUILD.bazel +++ b/packages/angular_devkit/core/node/testing/BUILD.bazel @@ -1,6 +1,6 @@ load("//tools:defaults.bzl", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/schematics/BUILD.bazel b/packages/angular_devkit/schematics/BUILD.bazel index e4c4a5d6bac4..f87f7abbc1f4 100644 --- a/packages/angular_devkit/schematics/BUILD.bazel +++ b/packages/angular_devkit/schematics/BUILD.bazel @@ -2,7 +2,7 @@ load("@devinfra//bazel/api-golden:index.bzl", "api_golden_test_npm_package") load("@npm//:defs.bzl", "npm_link_all_packages") load("//tools:defaults.bzl", "jasmine_test", "npm_package", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/schematics/tasks/BUILD.bazel b/packages/angular_devkit/schematics/tasks/BUILD.bazel index dfd195d0b443..64eba079b312 100644 --- a/packages/angular_devkit/schematics/tasks/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/BUILD.bazel @@ -1,6 +1,6 @@ load("//tools:defaults.bzl", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel index 10c52d3bcb7a..f375698e1286 100644 --- a/packages/angular_devkit/schematics/tasks/node/BUILD.bazel +++ b/packages/angular_devkit/schematics/tasks/node/BUILD.bazel @@ -1,6 +1,6 @@ load("//tools:defaults.bzl", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/schematics/testing/BUILD.bazel b/packages/angular_devkit/schematics/testing/BUILD.bazel index 0e2ef1329cf2..63d17fc4d6c4 100644 --- a/packages/angular_devkit/schematics/testing/BUILD.bazel +++ b/packages/angular_devkit/schematics/testing/BUILD.bazel @@ -1,6 +1,6 @@ load("//tools:defaults.bzl", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/schematics/tools/BUILD.bazel b/packages/angular_devkit/schematics/tools/BUILD.bazel index 4bfd80127524..eea7e90d5286 100644 --- a/packages/angular_devkit/schematics/tools/BUILD.bazel +++ b/packages/angular_devkit/schematics/tools/BUILD.bazel @@ -1,6 +1,6 @@ load("//tools:defaults.bzl", "jasmine_test", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/angular_devkit/schematics_cli/BUILD.bazel b/packages/angular_devkit/schematics_cli/BUILD.bazel index 9952e8cf0857..b65313ef4735 100644 --- a/packages/angular_devkit/schematics_cli/BUILD.bazel +++ b/packages/angular_devkit/schematics_cli/BUILD.bazel @@ -2,7 +2,7 @@ load("@npm//:defs.bzl", "npm_link_all_packages") load("//tools:defaults.bzl", "npm_package", "ts_project") load("//tools:ts_json_schema.bzl", "ts_json_schema") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/ngtools/webpack/BUILD.bazel b/packages/ngtools/webpack/BUILD.bazel index 791df1d229d0..1463529d6c42 100644 --- a/packages/ngtools/webpack/BUILD.bazel +++ b/packages/ngtools/webpack/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/packages/schematics/angular/BUILD.bazel b/packages/schematics/angular/BUILD.bazel index 27e1179fa107..849c7aa4137b 100644 --- a/packages/schematics/angular/BUILD.bazel +++ b/packages/schematics/angular/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel b/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel index 3b3c89c7ac3f..ce9135575279 100644 --- a/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel +++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/BUILD.bazel @@ -1,6 +1,6 @@ load("//tools:defaults.bzl", "ts_project") -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/tools/link_package_json_to_tarballs.bzl b/tools/link_package_json_to_tarballs.bzl index 1a8ea5a17486..b01d64669834 100644 --- a/tools/link_package_json_to_tarballs.bzl +++ b/tools/link_package_json_to_tarballs.bzl @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/tools/package_json_release_filter.jq b/tools/package_json_release_filter.jq index 4b5a0eb20c62..8fdae0df46c5 100644 --- a/tools/package_json_release_filter.jq +++ b/tools/package_json_release_filter.jq @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 diff --git a/tools/snapshot_repo_filter.bzl b/tools/snapshot_repo_filter.bzl index a648e8e300a7..fbd9672c07a9 100644 --- a/tools/snapshot_repo_filter.bzl +++ b/tools/snapshot_repo_filter.bzl @@ -1,4 +1,4 @@ -# Copyright Google Inc. All Rights Reserved. +# 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 From 6ed2cb7dffcefa1ac2b391abd85041a869848b5e Mon Sep 17 00:00:00 2001 From: MeAkib Date: Tue, 13 Jan 2026 00:31:31 +0600 Subject: [PATCH 2094/2162] refactor: update license URL from angular.io to angular.dev and angular material link Update all license URL references throughout the codebase to point to the new angular.dev domain. This is a non-functional change that only affects the license links in source file headers. --- README.md | 2 +- .../application/tests/behavior/typescript-incremental_spec.ts | 2 +- packages/angular/ssr/third_party/beasties/index.d.ts | 2 +- scripts/templates/readme.ejs | 2 +- tests/e2e/assets/ssr-project-webpack/src/app/app.component.html | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 21a7d3f13398..f14224e1cac7 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ This is a monorepo which contains many tools and packages: [quickstart]: https://angular.dev/tutorials/learn-angular [changelog]: CHANGELOG.md [documentation]: https://angular.dev/overview -[angularmaterial]: https://material.angular.io/ +[angularmaterial]: https://material.angular.dev/ [cli]: https://angular.dev/tools/cli [adev]: https://angular.dev/ [workspaceconfig]: https://angular.dev/reference/configs/workspace-config diff --git a/packages/angular/build/src/builders/application/tests/behavior/typescript-incremental_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/typescript-incremental_spec.ts index 2c73e66d9f8b..cc74b9549e9d 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/typescript-incremental_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/typescript-incremental_spec.ts @@ -3,7 +3,7 @@ * 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.io/license + * found in the LICENSE file at https://angular.dev/license */ import { buildApplication } from '../../index'; diff --git a/packages/angular/ssr/third_party/beasties/index.d.ts b/packages/angular/ssr/third_party/beasties/index.d.ts index cba746c9f861..1e043424bf93 100644 --- a/packages/angular/ssr/third_party/beasties/index.d.ts +++ b/packages/angular/ssr/third_party/beasties/index.d.ts @@ -3,7 +3,7 @@ * 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.io/license + * found in the LICENSE file at https://angular.dev/license */ export { default } from 'beasties'; diff --git a/scripts/templates/readme.ejs b/scripts/templates/readme.ejs index 6a74a15f80d0..9d5324f9d6d2 100644 --- a/scripts/templates/readme.ejs +++ b/scripts/templates/readme.ejs @@ -197,7 +197,7 @@ for (const pkgName of packages) { [quickstart]: https://angular.dev/tutorials/learn-angular [changelog]: CHANGELOG.md [documentation]: https://angular.dev/overview -[angularmaterial]: https://material.angular.io/ +[angularmaterial]: https://material.angular.dev/ [cli]: https://angular.dev/tools/cli [adev]: https://angular.dev/ [workspaceconfig]: https://angular.dev/reference/configs/workspace-config diff --git a/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html index e99c7ea22c86..f9fa7a987098 100644 --- a/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html +++ b/tests/e2e/assets/ssr-project-webpack/src/app/app.component.html @@ -481,7 +481,7 @@

Resources

- + Date: Tue, 13 Jan 2026 17:43:03 +0000 Subject: [PATCH 2095/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++--- tests/e2e/ng-snapshot/package.json | 32 ++++++------ 11 files changed, 80 insertions(+), 80 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 1e2ae380b05e..60208dd095ca 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@3ec78dc98edefbf3a324b84d093e66577ea30b29 + - uses: angular/dev-infra/github-actions/branch-manager@8ce8257f740613a7291256173e2706fb2ed8aefa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 357f70cb18bd..3197a86069a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - 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 f35ed269e8bf..1e7e5cdb9bd6 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@3ec78dc98edefbf3a324b84d093e66577ea30b29 + - uses: angular/dev-infra/github-actions/pull-request-labeling@8ce8257f740613a7291256173e2706fb2ed8aefa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@3ec78dc98edefbf3a324b84d093e66577ea30b29 + - uses: angular/dev-infra/github-actions/post-approval-changes@8ce8257f740613a7291256173e2706fb2ed8aefa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 588c3ee3fe2a..0eff82b705ea 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@3ec78dc98edefbf3a324b84d093e66577ea30b29 + - uses: angular/dev-infra/github-actions/feature-request@8ce8257f740613a7291256173e2706fb2ed8aefa with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 8d5897b8cc29..7bd1c9b434bb 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@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - 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@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - 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 2312edca0c64..cc2c80342aa9 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/linting/licenses@8ce8257f740613a7291256173e2706fb2ed8aefa build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@3ec78dc98edefbf3a324b84d093e66577ea30b29 + uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index ec01b276af8d..4da2dacab975 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "3ec78dc98edefbf3a324b84d093e66577ea30b29", + commit = "8ce8257f740613a7291256173e2706fb2ed8aefa", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 5c2a55ab267c..24525fbd8c07 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -412,7 +412,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "zVV86HvMwDBJ8IsFt27k/Sjq0vCMPr8b8X9OAuprQ6w=", - "usagesDigest": "joQrwYZve0LRGQcA0w659tYcDgO7i285JhM3m8ojguc=", + "usagesDigest": "/NqvQUP/nSwl7fsTFSQHEZJU5rTvs4M1h1n8n0KpF7Q=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index 4f136df9262b..9497776abb2f 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@angular/forms": "21.1.0-rc.0", "@angular/localize": "21.1.0-rc.0", "@angular/material": "21.1.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#50fe5451525482cef45fa98d953f899e92d618ce", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#486b075a283ef0c169475b981de1bd229114a000", "@angular/platform-browser": "21.1.0-rc.0", "@angular/platform-server": "21.1.0-rc.0", "@angular/router": "21.1.0-rc.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9ca5563c6c9..605e20b7cd7c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.1.0-next.4 version: 21.1.0-next.4(b051653d7cc612357511ba8a2f98a625) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#50fe5451525482cef45fa98d953f899e92d618ce - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/50fe5451525482cef45fa98d953f899e92d618ce(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#486b075a283ef0c169475b981de1bd229114a000 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/486b075a283ef0c169475b981de1bd229114a000(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1020,9 +1020,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/50fe5451525482cef45fa98d953f899e92d618ce': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/50fe5451525482cef45fa98d953f899e92d618ce} - version: 0.0.0-3ec78dc98edefbf3a324b84d093e66577ea30b29 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/486b075a283ef0c169475b981de1bd229114a000': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/486b075a283ef0c169475b981de1bd229114a000} + version: 0.0.0-8ce8257f740613a7291256173e2706fb2ed8aefa hasBin: true '@angular/platform-browser@21.1.0-rc.0': @@ -9389,7 +9389,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/50fe5451525482cef45fa98d953f899e92d618ce(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/486b075a283ef0c169475b981de1bd229114a000(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': dependencies: '@actions/core': 2.0.1 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index df29d91efd90..8cf086d84b61 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#a38f6fed777c7b80473492aba0261acbbe2e9f4b", - "@angular/cdk": "github:angular/cdk-builds#0539dd4d010c119630e6bcf597393489e1313bb4", - "@angular/common": "github:angular/common-builds#754de52e5f6c2ede77d0378aa889a97d559a8113", - "@angular/compiler": "github:angular/compiler-builds#21cd4a684b6b9ba607b4ec019fd3f8d1847d4e63", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#08a43ed0320a6d0d5b268eaf43ccbafed860ed2b", - "@angular/core": "github:angular/core-builds#38b7649e2928eac9bb5dbb9593b2880d7f93e193", - "@angular/forms": "github:angular/forms-builds#5ff7e657d34956067dde22c829a7d2f3e1628408", - "@angular/language-service": "github:angular/language-service-builds#68142b174eb7dd296da6f412b5d31bbcc7d57456", - "@angular/localize": "github:angular/localize-builds#76d4cf0295505b71b0bf61e4d8818488128d9765", - "@angular/material": "github:angular/material-builds#ea5a6e2304c661907a9954ad860da7bbaf6fd86b", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#321361b3180f82f1553cd1a8a72756c00d48ec9d", - "@angular/platform-browser": "github:angular/platform-browser-builds#ef8b35329b869ab3d9adac11a4025071eaf075c5", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#25e46ca0513f02ae562317dad3ec45497f0d0787", - "@angular/platform-server": "github:angular/platform-server-builds#249b09bc45577772ff5349a2b99ccc7cab5b2080", - "@angular/router": "github:angular/router-builds#6cba1b408d9015fb8771a3bd00d1b00d097e7fa6", - "@angular/service-worker": "github:angular/service-worker-builds#d6355eef029449edec0c401eaf8053b7e384cb5d" + "@angular/animations": "github:angular/animations-builds#2fb6689dfa572ee9791e73ea4baa69a950c21001", + "@angular/cdk": "github:angular/cdk-builds#1ab9962498d6903432ccc38546c01cf09bb1a366", + "@angular/common": "github:angular/common-builds#3677993d8692da988eb734945aa9a17f633d095a", + "@angular/compiler": "github:angular/compiler-builds#a4c253557608874de2aa4d928b708b2488c8c1f2", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#9a1ae7227b72d529e096390d1ac8b23dd92ada0e", + "@angular/core": "github:angular/core-builds#3b438e222a9305cd7401bf5b9c6a8c90759a3073", + "@angular/forms": "github:angular/forms-builds#ec56afffd56368aeb2e5aef57811ded5ffe14247", + "@angular/language-service": "github:angular/language-service-builds#5d167367e05a47d610f449ba57a3ff72b5a721b3", + "@angular/localize": "github:angular/localize-builds#ec44ae08265544772405adacda279e0b95d0bf91", + "@angular/material": "github:angular/material-builds#dace9dfcc8404a7ede4c4cc5a9dbffa1b9dcf9b5", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#75351c7ea416e662f7eb55a4e384ec7e6cafc848", + "@angular/platform-browser": "github:angular/platform-browser-builds#0f17437decd1e4c6dd7b36ccf1da9a441816cd17", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b653692adb865fded706633c12602f459ce6fea5", + "@angular/platform-server": "github:angular/platform-server-builds#1ccd39aa8a1ead4297c1a1774cea6b427e7b27d1", + "@angular/router": "github:angular/router-builds#51cbccfd0694c60eec77216a530a3bb261110504", + "@angular/service-worker": "github:angular/service-worker-builds#a4a19e4f00e1b8f3d879b5a9b354231558e354b1" } } From 79b69f5e87ec5b70c6c968137c8b1d18e38613c6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 13 Jan 2026 05:09:24 +0000 Subject: [PATCH 2096/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 698 ++++++++++++++++++++++++------------------------- 1 file changed, 342 insertions(+), 356 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 605e20b7cd7c..28edd1963ea7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,7 +93,7 @@ importers: version: 16.0.3(rollup@4.55.1) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.6.1(eslint@9.39.2(jiti@2.6.1)) + version: 5.7.0(eslint@9.39.2(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -114,7 +114,7 @@ importers: version: 4.1.1 '@types/jasmine': specifier: ~5.1.0 - version: 5.1.13 + version: 5.1.14 '@types/jasmine-reporters': specifier: ^2 version: 2.5.3 @@ -129,10 +129,10 @@ importers: version: 3.0.0(esbuild@0.27.2) '@types/lodash': specifier: ^4.17.0 - version: 4.17.21 + version: 4.17.23 '@types/node': specifier: ^22.12.0 - version: 22.19.3 + version: 22.19.5 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -267,7 +267,7 @@ importers: version: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.3)(rollup@4.55.1) + version: 0.5.4(@types/node@22.19.5)(rollup@4.55.1) semver: specifier: 7.7.3 version: 7.7.3 @@ -276,7 +276,7 @@ importers: version: 0.5.21 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.19.3)(typescript@5.9.3) + version: 10.9.2(@types/node@22.19.5)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -878,8 +878,8 @@ packages: '@actions/exec@2.0.0': resolution: {integrity: sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==} - '@actions/http-client@3.0.0': - resolution: {integrity: sha512-1s3tXAfVMSz9a4ZEBkXXRQD4QhY3+GAsWSbaYpeknPOKEeyRiU3lH+bHiLMZdo2x/fIeQ/hscL1wCkDLVM2DZQ==} + '@actions/http-client@3.0.1': + resolution: {integrity: sha512-SbGS8c/vySbNO3kjFgSW77n83C4MQx/Yoe+b1hAdpuvfHxnkHzDq2pWljUpAA56Si1Gae/7zjeZsV0CYjmLo/w==} '@actions/io@2.0.0': resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} @@ -1633,8 +1633,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.22': - resolution: {integrity: sha512-qBcx6zYlhleiFfdtzkRgwNC7VVoAwfK76Vmsw5t+PbvtdknO9StgRk7ROvq9so1iqbdW4uLIDAsXRsTfUrIoOw==} + '@csstools/css-syntax-patches-for-csstree@1.0.25': + resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} engines: {node: '>=18'} '@csstools/css-tokenizer@3.0.4': @@ -1845,8 +1845,8 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@1.0.0': - resolution: {integrity: sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==} + '@eslint/core@1.0.1': + resolution: {integrity: sha512-r18fEAj9uCk+VjzGt2thsbOmychS+4kxI14spVNibUO2vqKX7obOG+ymZljAwuPZl+S3clPGwCwTDtrdqTiY6Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/eslintrc@3.3.3': @@ -2149,8 +2149,8 @@ packages: '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} - '@hono/node-server@1.19.7': - resolution: {integrity: sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==} + '@hono/node-server@1.19.8': + resolution: {integrity: sha512-0/g2lIOPzX8f3vzW1ggQgvG5mjtFBDBHFAzI5SFAi2DzSqS9luJwqg9T6O/gKYLi+inS7eNxBeIFkkghIPvrMA==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 @@ -2175,8 +2175,8 @@ packages: resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/ansi@2.0.2': - resolution: {integrity: sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==} + '@inquirer/ansi@2.0.3': + resolution: {integrity: sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} '@inquirer/checkbox@4.3.2': @@ -2188,8 +2188,8 @@ packages: '@types/node': optional: true - '@inquirer/checkbox@5.0.3': - resolution: {integrity: sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw==} + '@inquirer/checkbox@5.0.4': + resolution: {integrity: sha512-DrAMU3YBGMUAp6ArwTIp/25CNDtDbxk7UjIrrtM25JVVrlVYlVzHh5HR1BDFu9JMyUoZ4ZanzeaHqNDttf3gVg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2206,8 +2206,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@6.0.3': - resolution: {integrity: sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw==} + '@inquirer/confirm@6.0.4': + resolution: {integrity: sha512-WdaPe7foUnoGYvXzH4jp4wH/3l+dBhZ3uwhKjXjwdrq5tEIFaANxj6zrGHxLdsIA0yKM0kFPVcEalOZXBB5ISA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2224,8 +2224,8 @@ packages: '@types/node': optional: true - '@inquirer/core@11.1.0': - resolution: {integrity: sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ==} + '@inquirer/core@11.1.1': + resolution: {integrity: sha512-hV9o15UxX46OyQAtaoMqAOxGR8RVl1aZtDx1jHbCtSJy1tBdTfKxLPKf7utsE4cRy4tcmCQ4+vdV+ca+oNxqNA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2242,8 +2242,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@5.0.3': - resolution: {integrity: sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ==} + '@inquirer/editor@5.0.4': + resolution: {integrity: sha512-QI3Jfqcv6UO2/VJaEFONH8Im1ll++Xn/AJTBn9Xf+qx2M+H8KZAdQ5sAe2vtYlo+mLW+d7JaMJB4qWtK4BG3pw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2260,8 +2260,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@5.0.3': - resolution: {integrity: sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w==} + '@inquirer/expand@5.0.4': + resolution: {integrity: sha512-0I/16YwPPP0Co7a5MsomlZLpch48NzYfToyqYAOWtBmaXSB80RiNQ1J+0xx2eG+Wfxt0nHtpEWSRr6CzNVnOGg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2278,8 +2278,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@2.0.2': - resolution: {integrity: sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==} + '@inquirer/external-editor@2.0.3': + resolution: {integrity: sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2291,8 +2291,8 @@ packages: resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/figures@2.0.2': - resolution: {integrity: sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==} + '@inquirer/figures@2.0.3': + resolution: {integrity: sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} '@inquirer/input@4.3.1': @@ -2304,8 +2304,8 @@ packages: '@types/node': optional: true - '@inquirer/input@5.0.3': - resolution: {integrity: sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw==} + '@inquirer/input@5.0.4': + resolution: {integrity: sha512-4B3s3jvTREDFvXWit92Yc6jF1RJMDy2VpSqKtm4We2oVU65YOh2szY5/G14h4fHlyQdpUmazU5MPCFZPRJ0AOw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2322,8 +2322,8 @@ packages: '@types/node': optional: true - '@inquirer/number@4.0.3': - resolution: {integrity: sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ==} + '@inquirer/number@4.0.4': + resolution: {integrity: sha512-CmMp9LF5HwE+G/xWsC333TlCzYYbXMkcADkKzcawh49fg2a1ryLc7JL1NJYYt1lJ+8f4slikNjJM9TEL/AljYQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2340,8 +2340,8 @@ packages: '@types/node': optional: true - '@inquirer/password@5.0.3': - resolution: {integrity: sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA==} + '@inquirer/password@5.0.4': + resolution: {integrity: sha512-ZCEPyVYvHK4W4p2Gy6sTp9nqsdHQCfiPXIP9LbJVW4yCinnxL/dDDmPaEZVysGrj8vxVReRnpfS2fOeODe9zjg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2376,8 +2376,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@5.1.0': - resolution: {integrity: sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ==} + '@inquirer/rawlist@5.2.0': + resolution: {integrity: sha512-CciqGoOUMrFo6HxvOtU5uL8fkjCmzyeB6fG7O1vdVAZVSopUBYECOwevDBlqNLyyYmzpm2Gsn/7nLrpruy9RFg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2394,8 +2394,8 @@ packages: '@types/node': optional: true - '@inquirer/search@4.0.3': - resolution: {integrity: sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg==} + '@inquirer/search@4.1.0': + resolution: {integrity: sha512-EAzemfiP4IFvIuWnrHpgZs9lAhWDA0GM3l9F4t4mTQ22IFtzfrk8xbkMLcAN7gmVML9O/i+Hzu8yOUyAaL6BKA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2412,8 +2412,8 @@ packages: '@types/node': optional: true - '@inquirer/select@5.0.3': - resolution: {integrity: sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w==} + '@inquirer/select@5.0.4': + resolution: {integrity: sha512-s8KoGpPYMEQ6WXc0dT9blX2NtIulMdLOO3LA1UKOiv7KFWzlJ6eLkEYTDBIi+JkyKXyn8t/CD6TinxGjyLt57g==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2439,6 +2439,15 @@ packages: '@types/node': optional: true + '@inquirer/type@4.0.3': + resolution: {integrity: sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -2866,14 +2875,14 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/context-async-hooks@2.2.0': - resolution: {integrity: sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==} + '@opentelemetry/context-async-hooks@2.3.0': + resolution: {integrity: sha512-hGcsT0qDP7Il1L+qT3JFpiGl1dCjF794Bb4yCRCYdr7XC0NwHtOF3ngF86Gk6TUnsakbyQsDQ0E/S4CU0F4d4g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.2.0': - resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} + '@opentelemetry/core@2.3.0': + resolution: {integrity: sha512-PcmxJQzs31cfD0R2dE91YGFcLxOSN4Bxz7gez5UwSUjCai8BwH/GI5HchfVshHkWdTkUs0qcaPJgVHKXUp7I3A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -2885,92 +2894,92 @@ packages: '@oxc-project/types@0.107.0': resolution: {integrity: sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ==} - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + '@parcel/watcher-android-arm64@2.5.4': + resolution: {integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + '@parcel/watcher-darwin-arm64@2.5.4': + resolution: {integrity: sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + '@parcel/watcher-darwin-x64@2.5.4': + resolution: {integrity: sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + '@parcel/watcher-freebsd-x64@2.5.4': + resolution: {integrity: sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + '@parcel/watcher-linux-arm-glibc@2.5.4': + resolution: {integrity: sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + '@parcel/watcher-linux-arm-musl@2.5.4': + resolution: {integrity: sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [musl] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + '@parcel/watcher-linux-arm64-glibc@2.5.4': + resolution: {integrity: sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + '@parcel/watcher-linux-arm64-musl@2.5.4': + resolution: {integrity: sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [musl] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + '@parcel/watcher-linux-x64-glibc@2.5.4': + resolution: {integrity: sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + '@parcel/watcher-linux-x64-musl@2.5.4': + resolution: {integrity: sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [musl] - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + '@parcel/watcher-win32-arm64@2.5.4': + resolution: {integrity: sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + '@parcel/watcher-win32-ia32@2.5.4': + resolution: {integrity: sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + '@parcel/watcher-win32-x64@2.5.4': + resolution: {integrity: sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + '@parcel/watcher@2.5.4': + resolution: {integrity: sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==} engines: {node: '>= 10.0.0'} '@pinojs/redact@0.4.0': @@ -3362,8 +3371,8 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@stylistic/eslint-plugin@5.6.1': - resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==} + '@stylistic/eslint-plugin@5.7.0': + resolution: {integrity: sha512-PsSugIf9ip1H/mWKj4bi/BlEoerxXAda9ByRFsYuwsmr6af9NxJL0AaiNXs8Le7R21QR5KMiD/KdxZZ71LjAxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -3405,8 +3414,8 @@ packages: '@types/accepts@1.3.7': resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} - '@types/babel__code-frame@7.0.6': - resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==} + '@types/babel__code-frame@7.27.0': + resolution: {integrity: sha512-Dwlo+LrxDx/0SpfmJ/BKveHf7QXWvLBLc+x03l5sbzykj3oB9nHygCpSECF1a+s+QIxbghe+KHqC90vGtxLRAA==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3486,11 +3495,11 @@ packages: '@types/events@3.0.3': resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==} - '@types/express-serve-static-core@4.19.7': - resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} - '@types/express-serve-static-core@5.1.0': - resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} + '@types/express-serve-static-core@5.1.1': + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} @@ -3534,6 +3543,9 @@ packages: '@types/jasmine@5.1.13': resolution: {integrity: sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==} + '@types/jasmine@5.1.14': + resolution: {integrity: sha512-16bJdpgUPNKXuaelVxuLZUeDd02+PnF0aQd5HY4xLWoUOMoRE+CyNkRpjRMIcPBCR1dscSb52pmFNILAN1uzkw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3558,8 +3570,8 @@ packages: '@types/loader-utils@3.0.0': resolution: {integrity: sha512-oOi4OGpiLUbb+Q/cN9FIkkDFgOpOGZ2cUAzb5i03wrGstnG6Syx1WDMhSiB5rcP10XX7cw7Uev8mv++/aplnNg==} - '@types/lodash@4.17.21': - resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} + '@types/lodash@4.17.23': + resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} '@types/micromatch@2.3.35': resolution: {integrity: sha512-J749bHo/Zu56w0G0NI/IGHLQPiSsjx//0zJhfEVAN95K/xM5C8ZDmhkXtU3qns0sBOao7HuQzr8XV1/2o5LbXA==} @@ -3573,8 +3585,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.19.3': - resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} + '@types/node@22.19.5': + resolution: {integrity: sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==} '@types/node@24.10.4': resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} @@ -4313,8 +4325,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.9.11: - resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} + baseline-browser-mapping@2.9.14: + resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} hasBin: true basic-ftp@5.1.0: @@ -4369,8 +4381,8 @@ packages: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.1: - resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} bonjour-service@1.3.0: @@ -4485,8 +4497,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001762: - resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==} + caniuse-lite@1.0.30001764: + resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4804,8 +4816,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.6: - resolution: {integrity: sha512-legscpSpgSAeGEe0TNcai97DKt9Vd9AsAdOL7Uoetb52Ar/8eJm3LIa39qpv8wWzLFlNG4vVvppQM+teaMPj3A==} + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} engines: {node: '>=20'} custom-event@1.0.1: @@ -4992,11 +5004,6 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -5303,6 +5310,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5317,6 +5328,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.0.0: + resolution: {integrity: sha512-+gMeWRrIh/NsG+3NaLeWHuyeyk70p2tbvZIWBYcqQ4/7Xvars6GYTZNhF1sIeLcc6Wb11He5ffz3hsHyXFrw5A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -5954,8 +5969,8 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.1: - resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} icss-utils@5.1.0: @@ -7907,8 +7922,9 @@ packages: saucelabs@1.5.0: resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==} - sax@1.4.3: - resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -8598,8 +8614,8 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@7.18.0: - resolution: {integrity: sha512-aLO7B+pYKuqcpapWdzhvzrjfm+qeiQNK3OILZAmlXJxgMfCsltOINMvNonA7nMMKiEjY1vAMA02O7u+eWym43w==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -8701,8 +8717,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@7.0.1: - resolution: {integrity: sha512-BM0Upcemlce8/9+HE+/VpWqn3u3mYh6Om/FEC8yPMnEHwf710fW5Q6fhjT1SQyRlZD1G9CJbgfH+rWgAcIvjlQ==} + validate-npm-package-name@7.0.2: + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} engines: {node: ^20.17.0 || >=22.9.0} validator@13.15.23: @@ -8734,46 +8750,6 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vite@7.3.0: - resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9064,6 +9040,18 @@ packages: utf-8-validate: optional: true + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.9.0: resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==} engines: {node: '>=10.0.0'} @@ -9209,13 +9197,13 @@ snapshots: '@actions/core@2.0.1': dependencies: '@actions/exec': 2.0.0 - '@actions/http-client': 3.0.0 + '@actions/http-client': 3.0.1 '@actions/exec@2.0.0': dependencies: '@actions/io': 2.0.0 - '@actions/http-client@3.0.0': + '@actions/http-client@3.0.1': dependencies: tunnel: 0.0.6 undici: 5.29.0 @@ -10207,7 +10195,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.22': {} + '@csstools/css-syntax-patches-for-csstree@1.0.25': {} '@csstools/css-tokenizer@3.0.4': {} @@ -10337,7 +10325,7 @@ snapshots: '@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))': dependencies: - '@eslint/core': 1.0.0 + '@eslint/core': 1.0.1 optionalDependencies: eslint: 9.39.2(jiti@2.6.1) @@ -10357,7 +10345,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@1.0.0': + '@eslint/core@1.0.1': dependencies: '@types/json-schema': 7.0.15 @@ -10740,8 +10728,8 @@ snapshots: '@google-cloud/promisify': 5.0.0 '@grpc/proto-loader': 0.7.15 '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.3.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 @@ -10770,7 +10758,7 @@ snapshots: '@google/genai@1.34.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: '@modelcontextprotocol/sdk': 1.25.2(zod@4.3.5) transitivePeerDependencies: @@ -10786,7 +10774,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@grpc/proto-loader@0.7.15': dependencies: @@ -10804,7 +10792,7 @@ snapshots: '@hapi/bourne@3.0.0': {} - '@hono/node-server@1.19.7': {} + '@hono/node-server@1.19.8': {} '@humanfs/core@0.19.1': {} @@ -10819,7 +10807,7 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/ansi@2.0.2': {} + '@inquirer/ansi@2.0.3': {} '@inquirer/checkbox@4.3.2(@types/node@24.10.4)': dependencies: @@ -10831,12 +10819,12 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/checkbox@5.0.3(@types/node@24.10.4)': + '@inquirer/checkbox@5.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/ansi': 2.0.3 + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/figures': 2.0.3 + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -10847,10 +10835,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/confirm@6.0.3(@types/node@24.10.4)': + '@inquirer/confirm@6.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -10867,11 +10855,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/core@11.1.0(@types/node@24.10.4)': + '@inquirer/core@11.1.1(@types/node@24.10.4)': dependencies: - '@inquirer/ansi': 2.0.2 - '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/ansi': 2.0.3 + '@inquirer/figures': 2.0.3 + '@inquirer/type': 4.0.3(@types/node@24.10.4) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 @@ -10887,11 +10875,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/editor@5.0.3(@types/node@24.10.4)': + '@inquirer/editor@5.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/external-editor': 2.0.2(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/external-editor': 2.0.3(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -10903,30 +10891,30 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/expand@5.0.3(@types/node@24.10.4)': + '@inquirer/expand@5.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 '@inquirer/external-editor@1.0.3(@types/node@24.10.4)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.1 + iconv-lite: 0.7.2 optionalDependencies: '@types/node': 24.10.4 - '@inquirer/external-editor@2.0.2(@types/node@24.10.4)': + '@inquirer/external-editor@2.0.3(@types/node@24.10.4)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.1 + iconv-lite: 0.7.2 optionalDependencies: '@types/node': 24.10.4 '@inquirer/figures@1.0.15': {} - '@inquirer/figures@2.0.2': {} + '@inquirer/figures@2.0.3': {} '@inquirer/input@4.3.1(@types/node@24.10.4)': dependencies: @@ -10935,10 +10923,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/input@5.0.3(@types/node@24.10.4)': + '@inquirer/input@5.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -10949,10 +10937,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/number@4.0.3(@types/node@24.10.4)': + '@inquirer/number@4.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -10964,11 +10952,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/password@5.0.3(@types/node@24.10.4)': + '@inquirer/password@5.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/ansi': 2.0.3 + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -10989,16 +10977,16 @@ snapshots: '@inquirer/prompts@8.1.0(@types/node@24.10.4)': dependencies: - '@inquirer/checkbox': 5.0.3(@types/node@24.10.4) - '@inquirer/confirm': 6.0.3(@types/node@24.10.4) - '@inquirer/editor': 5.0.3(@types/node@24.10.4) - '@inquirer/expand': 5.0.3(@types/node@24.10.4) - '@inquirer/input': 5.0.3(@types/node@24.10.4) - '@inquirer/number': 4.0.3(@types/node@24.10.4) - '@inquirer/password': 5.0.3(@types/node@24.10.4) - '@inquirer/rawlist': 5.1.0(@types/node@24.10.4) - '@inquirer/search': 4.0.3(@types/node@24.10.4) - '@inquirer/select': 5.0.3(@types/node@24.10.4) + '@inquirer/checkbox': 5.0.4(@types/node@24.10.4) + '@inquirer/confirm': 6.0.4(@types/node@24.10.4) + '@inquirer/editor': 5.0.4(@types/node@24.10.4) + '@inquirer/expand': 5.0.4(@types/node@24.10.4) + '@inquirer/input': 5.0.4(@types/node@24.10.4) + '@inquirer/number': 4.0.4(@types/node@24.10.4) + '@inquirer/password': 5.0.4(@types/node@24.10.4) + '@inquirer/rawlist': 5.2.0(@types/node@24.10.4) + '@inquirer/search': 4.1.0(@types/node@24.10.4) + '@inquirer/select': 5.0.4(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -11010,10 +10998,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/rawlist@5.1.0(@types/node@24.10.4)': + '@inquirer/rawlist@5.2.0(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -11026,11 +11014,11 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/search@4.0.3(@types/node@24.10.4)': + '@inquirer/search@4.1.0(@types/node@24.10.4)': dependencies: - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/figures': 2.0.3 + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -11044,12 +11032,12 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 - '@inquirer/select@5.0.3(@types/node@24.10.4)': + '@inquirer/select@5.0.4(@types/node@24.10.4)': dependencies: - '@inquirer/ansi': 2.0.2 - '@inquirer/core': 11.1.0(@types/node@24.10.4) - '@inquirer/figures': 2.0.2 - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@inquirer/ansi': 2.0.3 + '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/figures': 2.0.3 + '@inquirer/type': 4.0.3(@types/node@24.10.4) optionalDependencies: '@types/node': 24.10.4 @@ -11061,6 +11049,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.4 + '@inquirer/type@4.0.3(@types/node@24.10.4)': + optionalDependencies: + '@types/node': 24.10.4 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -11182,7 +11174,7 @@ snapshots: '@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)': dependencies: - '@hono/node-server': 1.19.7 + '@hono/node-server': 1.19.8 ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 @@ -11500,11 +11492,11 @@ snapshots: '@opentelemetry/api@1.9.0': {} - '@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.3.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.3.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.38.0 @@ -11513,65 +11505,65 @@ snapshots: '@oxc-project/types@0.107.0': {} - '@parcel/watcher-android-arm64@2.5.1': + '@parcel/watcher-android-arm64@2.5.4': optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + '@parcel/watcher-darwin-arm64@2.5.4': optional: true - '@parcel/watcher-darwin-x64@2.5.1': + '@parcel/watcher-darwin-x64@2.5.4': optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + '@parcel/watcher-freebsd-x64@2.5.4': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + '@parcel/watcher-linux-arm-glibc@2.5.4': optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + '@parcel/watcher-linux-arm-musl@2.5.4': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + '@parcel/watcher-linux-arm64-glibc@2.5.4': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + '@parcel/watcher-linux-arm64-musl@2.5.4': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + '@parcel/watcher-linux-x64-glibc@2.5.4': optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + '@parcel/watcher-linux-x64-musl@2.5.4': optional: true - '@parcel/watcher-win32-arm64@2.5.1': + '@parcel/watcher-win32-arm64@2.5.4': optional: true - '@parcel/watcher-win32-ia32@2.5.1': + '@parcel/watcher-win32-ia32@2.5.4': optional: true - '@parcel/watcher-win32-x64@2.5.1': + '@parcel/watcher-win32-x64@2.5.4': optional: true - '@parcel/watcher@2.5.1': + '@parcel/watcher@2.5.4': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 node-addon-api: 7.1.1 + picomatch: 4.0.3 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 + '@parcel/watcher-android-arm64': 2.5.4 + '@parcel/watcher-darwin-arm64': 2.5.4 + '@parcel/watcher-darwin-x64': 2.5.4 + '@parcel/watcher-freebsd-x64': 2.5.4 + '@parcel/watcher-linux-arm-glibc': 2.5.4 + '@parcel/watcher-linux-arm-musl': 2.5.4 + '@parcel/watcher-linux-arm64-glibc': 2.5.4 + '@parcel/watcher-linux-arm64-musl': 2.5.4 + '@parcel/watcher-linux-x64-glibc': 2.5.4 + '@parcel/watcher-linux-x64-musl': 2.5.4 + '@parcel/watcher-win32-arm64': 2.5.4 + '@parcel/watcher-win32-ia32': 2.5.4 + '@parcel/watcher-win32-x64': 2.5.4 optional: true '@pinojs/redact@0.4.0': {} @@ -11859,13 +11851,13 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.7.0(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@typescript-eslint/types': 8.52.0 eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-visitor-keys: 5.0.0 + espree: 11.0.0 estraverse: 5.3.0 picomatch: 4.0.3 @@ -11899,9 +11891,9 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 - '@types/babel__code-frame@7.0.6': {} + '@types/babel__code-frame@7.27.0': {} '@types/babel__core@7.20.5': dependencies: @@ -11929,16 +11921,16 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/browser-sync@2.29.1': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/serve-static': 2.2.0 chokidar: 3.6.0 @@ -11949,23 +11941,23 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.7 - '@types/node': 22.19.3 + '@types/express-serve-static-core': 4.19.8 + '@types/node': 22.19.5 '@types/connect@3.4.38': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/content-disposition@0.5.9': {} @@ -11976,11 +11968,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.6 '@types/keygrip': 1.0.6 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/cors@2.8.19': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/debounce@1.2.4': {} @@ -11988,7 +11980,7 @@ snapshots: '@types/duplexify@3.6.5': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/ejs@3.1.5': {} @@ -12006,16 +11998,16 @@ snapshots: '@types/events@3.0.3': {} - '@types/express-serve-static-core@4.19.7': + '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 - '@types/express-serve-static-core@5.1.0': + '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -12023,25 +12015,25 @@ snapshots: '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.7 + '@types/express-serve-static-core': 4.19.8 '@types/qs': 6.14.0 '@types/serve-static': 1.15.10 '@types/express@5.0.6': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 5.1.0 + '@types/express-serve-static-core': 5.1.1 '@types/serve-static': 2.2.0 '@types/folder-hash@4.0.4': {} '@types/git-raw-commits@5.0.1': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/http-assert@1.5.6': {} @@ -12049,7 +12041,7 @@ snapshots: '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/ini@4.1.1': {} @@ -12065,17 +12057,19 @@ snapshots: '@types/jasmine-reporters@2.5.3': dependencies: - '@types/jasmine': 5.1.13 + '@types/jasmine': 5.1.14 '@types/jasmine@5.1.13': {} + '@types/jasmine@5.1.14': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} '@types/karma@6.3.9': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -12095,13 +12089,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.9 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.27.2)': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - '@swc/core' @@ -12109,7 +12103,7 @@ snapshots: - uglify-js - webpack-cli - '@types/lodash@4.17.21': {} + '@types/lodash@4.17.23': {} '@types/micromatch@2.3.35': dependencies: @@ -12119,26 +12113,26 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 form-data: 4.0.5 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 - '@types/node@22.19.3': + '@types/node@22.19.5': dependencies: - undici-types: 7.18.0 + undici-types: 7.18.2 '@types/node@24.10.4': dependencies: - undici-types: 7.18.0 + undici-types: 7.18.2 '@types/npm-package-arg@6.1.4': {} '@types/npm-registry-fetch@8.0.9': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12146,11 +12140,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/npm-registry-fetch': 8.0.9 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12163,12 +12157,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/pumpify@1.4.5': dependencies: '@types/duplexify': 3.6.5 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/q@0.0.32': {} @@ -12180,7 +12174,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/retry@0.12.2': {} @@ -12191,11 +12185,11 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/send@1.2.1': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/serve-index@1.9.4': dependencies: @@ -12204,42 +12198,42 @@ snapshots: '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/send': 0.17.6 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/stack-trace@0.0.33': {} '@types/tar-stream@3.1.4': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/watchpack@2.4.5': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/ws@8.18.1': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 '@types/yargs-parser@21.0.3': {} @@ -12251,7 +12245,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 optional: true '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': @@ -12532,13 +12526,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.16': dependencies: @@ -12658,7 +12652,7 @@ snapshots: '@web/test-runner-core@0.13.4(bufferutil@4.1.0)': dependencies: '@babel/code-frame': 7.27.1 - '@types/babel__code-frame': 7.0.6 + '@types/babel__code-frame': 7.27.0 '@types/co-body': 6.1.3 '@types/convert-source-map': 2.0.3 '@types/debounce': 1.2.4 @@ -13062,7 +13056,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001762 + caniuse-lite: 1.0.30001764 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -13151,7 +13145,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.9.11: {} + baseline-browser-mapping@2.9.14: {} basic-ftp@5.1.0: {} @@ -13232,13 +13226,13 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.1: + body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.1 - iconv-lite: 0.7.1 + iconv-lite: 0.7.2 on-finished: 2.4.1 qs: 6.14.1 raw-body: 3.0.2 @@ -13330,8 +13324,8 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.11 - caniuse-lite: 1.0.30001762 + baseline-browser-mapping: 2.9.14 + caniuse-lite: 1.0.30001764 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -13424,7 +13418,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001762: {} + caniuse-lite@1.0.30001764: {} caseless@0.12.0: {} @@ -13485,7 +13479,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13769,10 +13763,10 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.6: + cssstyle@5.3.7: dependencies: '@asamuzakjp/css-color': 4.1.1 - '@csstools/css-syntax-patches-for-csstree': 1.0.22 + '@csstools/css-syntax-patches-for-csstree': 1.0.25 css-tree: 3.1.0 lru-cache: 11.2.4 @@ -13918,9 +13912,6 @@ snapshots: destroy@1.2.0: {} - detect-libc@1.0.3: - optional: true - detect-libc@2.1.2: optional: true @@ -14059,7 +14050,7 @@ snapshots: engine.io@6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.19.3 + '@types/node': 22.19.5 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14315,6 +14306,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.0: {} + eslint@9.39.2(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -14362,6 +14355,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + espree@11.0.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 5.0.0 + esprima@4.0.1: {} esquery@1.7.0: @@ -14507,7 +14506,7 @@ snapshots: express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.2.1 + body-parser: 2.2.2 content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 @@ -14541,7 +14540,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15249,7 +15248,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.1: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -15634,7 +15633,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15659,7 +15658,7 @@ snapshots: '@acemir/cssom': 0.9.30 '@asamuzakjp/dom-selector': 6.7.6 '@exodus/bytes': 1.8.0 - cssstyle: 5.3.6 + cssstyle: 5.3.7 data-urls: 6.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 @@ -15674,7 +15673,7 @@ snapshots: webidl-conversions: 8.0.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) xml-name-validator: 5.0.0 transitivePeerDependencies: - '@exodus/crypto' @@ -16310,7 +16309,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.3 + sax: 1.4.4 optional: true negotiator@0.6.3: {} @@ -16435,7 +16434,7 @@ snapshots: hosted-git-info: 9.0.2 proc-log: 6.1.0 semver: 7.7.3 - validate-npm-package-name: 7.0.1 + validate-npm-package-name: 7.0.2 npm-packlist@10.0.3: dependencies: @@ -16917,7 +16916,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.19.3 + '@types/node': 22.19.5 long: 5.3.2 protractor@7.0.0: @@ -17013,7 +17012,7 @@ snapshots: devtools-protocol: 0.0.1534754 typed-query-selector: 2.12.0 webdriver-bidi-protocol: 0.3.10 - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -17101,7 +17100,7 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.1 + iconv-lite: 0.7.2 unpipe: 1.0.0 readable-stream@2.3.8: @@ -17329,12 +17328,12 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.3)(rollup@4.55.1): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.5)(rollup@4.55.1): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.55.1) rollup: 4.55.1 optionalDependencies: - '@types/node': 22.19.3 + '@types/node': 22.19.5 rollup@4.55.1: dependencies: @@ -17429,7 +17428,7 @@ snapshots: immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.5.4 saucelabs@1.5.0: dependencies: @@ -17437,7 +17436,7 @@ snapshots: transitivePeerDependencies: - supports-color - sax@1.4.3: {} + sax@1.4.4: {} saxes@6.0.0: dependencies: @@ -18154,14 +18153,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.19.5)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.19.3 + '@types/node': 22.19.5 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18289,7 +18288,7 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - undici-types@7.18.0: {} + undici-types@7.18.2: {} undici@5.29.0: dependencies: @@ -18381,7 +18380,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@7.0.1: {} + validate-npm-package-name@7.0.2: {} validator@13.15.23: {} @@ -18461,24 +18460,6 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - esbuild: 0.27.2 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.55.1 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.4 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.4.2 - sass: 1.97.2 - terser: 5.44.1 - tsx: 4.21.0 - yaml: 2.8.2 - vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 @@ -18500,7 +18481,7 @@ snapshots: vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -18517,7 +18498,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18601,7 +18582,7 @@ snapshots: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.25 - '@types/express-serve-static-core': 4.19.7 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 @@ -18625,7 +18606,7 @@ snapshots: sockjs: 0.3.24 spdy: 4.0.2 webpack-dev-middleware: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: @@ -18807,6 +18788,11 @@ snapshots: bufferutil: 4.1.0 utf-8-validate: 6.0.6 + ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 6.0.6 + ws@8.9.0(bufferutil@4.1.0): optionalDependencies: bufferutil: 4.1.0 @@ -18826,7 +18812,7 @@ snapshots: xml2js@0.4.23: dependencies: - sax: 1.4.3 + sax: 1.4.4 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} From 25681ef47c0580e72896107c334ac49babc5dea0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 14 Jan 2026 06:07:05 +0000 Subject: [PATCH 2097/2162] build: update dependency bazel to v8.5.1 See associated pull request for more information. --- .bazelversion | 2 +- MODULE.bazel.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.bazelversion b/.bazelversion index 6d2890793d47..f9c71a52e2fd 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -8.5.0 +8.5.1 diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 24525fbd8c07..2138df08a2ce 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -411,7 +411,7 @@ }, "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "zVV86HvMwDBJ8IsFt27k/Sjq0vCMPr8b8X9OAuprQ6w=", + "bzlTransitiveDigest": "VaGKuK2sKVTWlq9QBZfNc4fhigCeN9Wt4YhnhdGUkv8=", "usagesDigest": "/NqvQUP/nSwl7fsTFSQHEZJU5rTvs4M1h1n8n0KpF7Q=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1880,7 +1880,7 @@ }, "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "39J6fxZx6VyebAMZs6LDsQSGw91SROMECqQx77bSJqE=", + "bzlTransitiveDigest": "rPZpN8uoLnuu3B+LRiijfMadoMlO1/dxOO8/emPCZV4=", "usagesDigest": "AK1R124YPWwAs8z1CQYyjYuci8RO5Ofot+EP5ZCNQDc=", "recordedFileInputs": { "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", From 03b86fe28e34c489b91858614236dd14e2cb9985 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 14 Jan 2026 06:07:36 +0000 Subject: [PATCH 2098/2162] build: update dependency node to v22.22.0 See associated pull request for more information. --- .nvmrc | 2 +- MODULE.bazel | 16 +- MODULE.bazel.lock | 466 +++++++++++++++++++++++----------------------- 3 files changed, 242 insertions(+), 242 deletions(-) diff --git a/.nvmrc b/.nvmrc index 5767036af0e2..85e502778f62 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.21.1 +22.22.0 diff --git a/MODULE.bazel b/MODULE.bazel index 4da2dacab975..9afa261507e6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -46,15 +46,15 @@ git_override( node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") node.toolchain( node_repositories = { - "22.21.1-darwin_arm64": ("node-v22.21.1-darwin-arm64.tar.gz", "node-v22.21.1-darwin-arm64", "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af"), - "22.21.1-darwin_amd64": ("node-v22.21.1-darwin-x64.tar.gz", "node-v22.21.1-darwin-x64", "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd"), - "22.21.1-linux_arm64": ("node-v22.21.1-linux-arm64.tar.xz", "node-v22.21.1-linux-arm64", "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1"), - "22.21.1-linux_ppc64le": ("node-v22.21.1-linux-ppc64le.tar.xz", "node-v22.21.1-linux-ppc64le", "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845"), - "22.21.1-linux_s390x": ("node-v22.21.1-linux-s390x.tar.xz", "node-v22.21.1-linux-s390x", "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211"), - "22.21.1-linux_amd64": ("node-v22.21.1-linux-x64.tar.xz", "node-v22.21.1-linux-x64", "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88"), - "22.21.1-windows_amd64": ("node-v22.21.1-win-x64.zip", "node-v22.21.1-win-x64", "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf"), + "22.22.0-darwin_arm64": ("node-v22.22.0-darwin-arm64.tar.gz", "node-v22.22.0-darwin-arm64", "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"), + "22.22.0-darwin_amd64": ("node-v22.22.0-darwin-x64.tar.gz", "node-v22.22.0-darwin-x64", "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"), + "22.22.0-linux_arm64": ("node-v22.22.0-linux-arm64.tar.xz", "node-v22.22.0-linux-arm64", "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"), + "22.22.0-linux_ppc64le": ("node-v22.22.0-linux-ppc64le.tar.xz", "node-v22.22.0-linux-ppc64le", "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"), + "22.22.0-linux_s390x": ("node-v22.22.0-linux-s390x.tar.xz", "node-v22.22.0-linux-s390x", "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"), + "22.22.0-linux_amd64": ("node-v22.22.0-linux-x64.tar.xz", "node-v22.22.0-linux-x64", "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"), + "22.22.0-windows_amd64": ("node-v22.22.0-win-x64.zip", "node-v22.22.0-win-x64", "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"), }, - node_version = "22.21.1", + node_version = "22.22.0", ) use_repo( node, diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 2138df08a2ce..f6759b68854e 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1093,7 +1093,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "gh1vecRgu60cNLf3obzWE7eYVlWEqZwguWf1BbCfbNQ=", + "usagesDigest": "oW5D6Ox6De/XR9eunsl7akWWBPexdZKf4h2iPvm7FoY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1103,46 +1103,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "linux_amd64" } @@ -1152,46 +1152,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "linux_arm64" } @@ -1201,46 +1201,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "linux_s390x" } @@ -1250,46 +1250,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "linux_ppc64le" } @@ -1299,46 +1299,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "darwin_amd64" } @@ -1348,46 +1348,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "darwin_arm64" } @@ -1397,46 +1397,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "windows_amd64" } @@ -1446,46 +1446,46 @@ "attributes": { "node_download_auth": {}, "node_repositories": { - "22.21.1-darwin_arm64": [ - "node-v22.21.1-darwin-arm64.tar.gz", - "node-v22.21.1-darwin-arm64", - "c170d6554fba83d41d25a76cdbad85487c077e51fa73519e41ac885aa429d8af" + "22.22.0-darwin_arm64": [ + "node-v22.22.0-darwin-arm64.tar.gz", + "node-v22.22.0-darwin-arm64", + "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640" ], - "22.21.1-darwin_amd64": [ - "node-v22.21.1-darwin-x64.tar.gz", - "node-v22.21.1-darwin-x64", - "8e3dc89614debe66c2a6ad2313a1adb06eb37db6cd6c40d7de6f7d987f7d1afd" + "22.22.0-darwin_amd64": [ + "node-v22.22.0-darwin-x64.tar.gz", + "node-v22.22.0-darwin-x64", + "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce" ], - "22.21.1-linux_arm64": [ - "node-v22.21.1-linux-arm64.tar.xz", - "node-v22.21.1-linux-arm64", - "e660365729b434af422bcd2e8e14228637ecf24a1de2cd7c916ad48f2a0521e1" + "22.22.0-linux_arm64": [ + "node-v22.22.0-linux-arm64.tar.xz", + "node-v22.22.0-linux-arm64", + "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f" ], - "22.21.1-linux_ppc64le": [ - "node-v22.21.1-linux-ppc64le.tar.xz", - "node-v22.21.1-linux-ppc64le", - "6f2b6aa1519a8f50a66b0ae7e94d2feeadfe9aa98095c737c2fc67df25012845" + "22.22.0-linux_ppc64le": [ + "node-v22.22.0-linux-ppc64le.tar.xz", + "node-v22.22.0-linux-ppc64le", + "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865" ], - "22.21.1-linux_s390x": [ - "node-v22.21.1-linux-s390x.tar.xz", - "node-v22.21.1-linux-s390x", - "c473e8e7eb46aa93e1580736ce240ba4cf3b22dc45a47118359e85508b63e211" + "22.22.0-linux_s390x": [ + "node-v22.22.0-linux-s390x.tar.xz", + "node-v22.22.0-linux-s390x", + "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4" ], - "22.21.1-linux_amd64": [ - "node-v22.21.1-linux-x64.tar.xz", - "node-v22.21.1-linux-x64", - "680d3f30b24a7ff24b98db5e96f294c0070f8f9078df658da1bce1b9c9873c88" + "22.22.0-linux_amd64": [ + "node-v22.22.0-linux-x64.tar.xz", + "node-v22.22.0-linux-x64", + "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37" ], - "22.21.1-windows_amd64": [ - "node-v22.21.1-win-x64.zip", - "node-v22.21.1-win-x64", - "3c624e9fbe07e3217552ec52a0f84e2bdc2e6ffa7348f3fdfb9fbf8f42e23fcf" + "22.22.0-windows_amd64": [ + "node-v22.22.0-win-x64.zip", + "node-v22.22.0-win-x64", + "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a" ] }, "node_urls": [ "https://nodejs.org/dist/v{version}/{filename}" ], - "node_version": "22.21.1", + "node_version": "22.22.0", "include_headers": false, "platform": "windows_arm64" } From bc73e31f49e9211c9cca788cff6d7a970bc93c66 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 14 Jan 2026 10:17:37 -0800 Subject: [PATCH 2099/2162] docs: release notes for the v21.0.6 release --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24e453dbe2a0..221a92b6e778 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ + + +# 21.0.6 (2026-01-14) + +### @angular/ssr + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------- | +| [730ae6609](https://github.com/angular/angular-cli/commit/730ae6609b847802124a5c6e12c77522af54b967) | fix | handle platform destruction during rendering | + + + # 21.1.0-rc.0 (2026-01-08) From 977f5296c81071d57c076f59f39c311014f34579 Mon Sep 17 00:00:00 2001 From: Doug Parker Date: Wed, 14 Jan 2026 13:25:42 -0800 Subject: [PATCH 2100/2162] docs: release notes for the v21.1.0 release --- CHANGELOG.md | 201 +++++++++++---------------------------------------- 1 file changed, 42 insertions(+), 159 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 221a92b6e778..0e2e9a44a4f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,48 +1,57 @@ - + -# 21.0.6 (2026-01-14) +# 21.1.0 (2026-01-14) -### @angular/ssr +### @angular/cli -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------- | -| [730ae6609](https://github.com/angular/angular-cli/commit/730ae6609b847802124a5c6e12c77522af54b967) | fix | handle platform destruction during rendering | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------- | +| [772e6efe7](https://github.com/angular/angular-cli/commit/772e6efe7acb2d2318a57ba77092a85fc286c51b) | feat | add 'test' and 'e2e' MCP tools | +| [8efb86318](https://github.com/angular/angular-cli/commit/8efb8631842401e219e20dd7955512d4a90a28a3) | feat | Add "all" as an experimental tool group | +| [c3c9ac506](https://github.com/angular/angular-cli/commit/c3c9ac5067275461e2d8caefba81ac9701949776) | feat | Add MCP tools for building and running devservers | +| [d635a6c63](https://github.com/angular/angular-cli/commit/d635a6c6335d0838fc0977f6742f6aa9f769c527) | feat | add signal forms lessons | +| [d8b76e93d](https://github.com/angular/angular-cli/commit/d8b76e93d3e9e4e7bd7ad6e12fdf59cd663cbb8e) | fix | correctly handle yarn classic tag manifest fetching | +| [7ab5c0b0a](https://github.com/angular/angular-cli/commit/7ab5c0b0a1c637f3e0adb71486e5e7e8716561e4) | fix | correctly spawn package managers on Windows in new abstraction | +| [348096623](https://github.com/angular/angular-cli/commit/348096623326857a5d8cf77d56712776e1190180) | fix | enhance list_projects MCP tool file system traversal and symlink handling | +| [316fca862](https://github.com/angular/angular-cli/commit/316fca8626d51b28ea8cd840f3815b7c6dfcfffa) | fix | handle array output from npm view in manifest parser | +| [032257a6d](https://github.com/angular/angular-cli/commit/032257a6d00360d2c4e6d5406409dcfa5b27d1d5) | fix | improve signal forms lesson examples in AI tutor | +| [18d74dde8](https://github.com/angular/angular-cli/commit/18d74dde8938dbe566df80753d5c148c19040179) | fix | rename mcp devserver tools to comply with naming spec | +| [1ad773671](https://github.com/angular/angular-cli/commit/1ad773671afa2849a966f9974cb30e7c8e8ed7d4) | fix | update dependency @modelcontextprotocol/sdk to v1.25.2 | +| [45d4f5668](https://github.com/angular/angular-cli/commit/45d4f5668018362f90fcc4cdc487470286f03c02) | fix | update yarn berry package manager configuration | +| [122ed27c9](https://github.com/angular/angular-cli/commit/122ed27c906613b7966cbda8fe2f36dbe6f60198) | fix | use project-local temporary directory in ng add | +| [a15db28b2](https://github.com/angular/angular-cli/commit/a15db28b29f6f43bef1ed1ca7c6a963d9943f801) | perf | cache resolved specific version in package manager abstraction | +| [240588b7e](https://github.com/angular/angular-cli/commit/240588b7e3c8698c83110793ab98d20caee4e1a4) | perf | optimize `ng add` version discovery | - +### @schematics/angular - +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- | +| [36cf3afb4](https://github.com/angular/angular-cli/commit/36cf3afb485a01f86c4c90f136b38a3cf338e313) | feat | add browserMode option to jasmine-vitest schematic | +| [e71a72ffd](https://github.com/angular/angular-cli/commit/e71a72ffdc426e26bfb4f0bb92e8f5795a621c18) | feat | generate detailed migration report for `refactor-jasmine-vitest` | +| [18cf6c51b](https://github.com/angular/angular-cli/commit/18cf6c51b72ce5c7f23012585ed992cf91cef5ed) | fix | add MCP configuration file to new workspaces | -# 21.1.0-rc.0 (2026-01-08) +### @angular/build -### @angular/cli +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | +| [1eda0a99f](https://github.com/angular/angular-cli/commit/1eda0a99f89f625f8db1ecfe4873a7672e625401) | feat | directly support ng-packagr in unit-test builder | +| [87175f9dc](https://github.com/angular/angular-cli/commit/87175f9dcdb7349dc8701fa1d5cf61c1b8542d42) | feat | disable TestBed teardown during debugging in Vitest | +| [1e39c77a4](https://github.com/angular/angular-cli/commit/1e39c77a4fe272ccab1a1d8bd58eef1ce608a6c7) | fix | inject source-map-support for Vitest browser tests | +| [3fd7dcd76](https://github.com/angular/angular-cli/commit/3fd7dcd764be0d0afb9cd792d53268d6f314df83) | fix | normalize roots to POSIX in test discovery for Windows compatibility | +| [164e7dbbc](https://github.com/angular/angular-cli/commit/164e7dbbc2b06bbd5aab84937c903e0590591c60) | fix | resolve test files correctly on Windows when using non-C drives | +| [ad99e00ad](https://github.com/angular/angular-cli/commit/ad99e00ad7edd17e369777c8d38b4137ea736121) | fix | simplify SSL handling for `ng serve` with SSR ([#31722](https://github.com/angular/angular-cli/pull/31722)) | -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------ | -| [772e6efe7](https://github.com/angular/angular-cli/commit/772e6efe7acb2d2318a57ba77092a85fc286c51b) | feat | add 'test' and 'e2e' MCP tools | -| [8efb86318](https://github.com/angular/angular-cli/commit/8efb8631842401e219e20dd7955512d4a90a28a3) | feat | Add "all" as an experimental tool group | -| [316fca862](https://github.com/angular/angular-cli/commit/316fca8626d51b28ea8cd840f3815b7c6dfcfffa) | fix | handle array output from npm view in manifest parser | -| [1ad773671](https://github.com/angular/angular-cli/commit/1ad773671afa2849a966f9974cb30e7c8e8ed7d4) | fix | update dependency @modelcontextprotocol/sdk to v1.25.2 | -| [45d4f5668](https://github.com/angular/angular-cli/commit/45d4f5668018362f90fcc4cdc487470286f03c02) | fix | update yarn berry package manager configuration | + -### @schematics/angular + -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------------------- | -| [9006ec057](https://github.com/angular/angular-cli/commit/9006ec057ced126f1c7822ffd36adee7748819ed) | fix | move 'provideZoneChangeDetection' to the root module | -| [42d4febf4](https://github.com/angular/angular-cli/commit/42d4febf4698ac33f9aa5a2d2d6183adca34f7b5) | fix | update application schematics for module-based apps to use 'provideZoneChangeDetection' | -| [5dfc0eea0](https://github.com/angular/angular-cli/commit/5dfc0eea03c1faecd636fac775b0f5bc5f0ed430) | fix | update default app component message | -| [424a465df](https://github.com/angular/angular-cli/commit/424a465df7fa131803de4184f787ad9573a65090) | fix | update default app component welcome message | +# 21.0.6 (2026-01-14) -### @angular/build +### @angular/ssr -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | -| [1eda0a99f](https://github.com/angular/angular-cli/commit/1eda0a99f89f625f8db1ecfe4873a7672e625401) | feat | directly support ng-packagr in unit-test builder | -| [87175f9dc](https://github.com/angular/angular-cli/commit/87175f9dcdb7349dc8701fa1d5cf61c1b8542d42) | feat | disable TestBed teardown during debugging in Vitest | -| [32adc3a75](https://github.com/angular/angular-cli/commit/32adc3a757a1e75cf8d44a227c57f7947053ca8c) | fix | ensure correct project targeting during Vitest debugging | -| [1e39c77a4](https://github.com/angular/angular-cli/commit/1e39c77a4fe272ccab1a1d8bd58eef1ce608a6c7) | fix | inject source-map-support for Vitest browser tests | -| [3fd7dcd76](https://github.com/angular/angular-cli/commit/3fd7dcd764be0d0afb9cd792d53268d6f314df83) | fix | normalize roots to POSIX in test discovery for Windows compatibility | -| [164e7dbbc](https://github.com/angular/angular-cli/commit/164e7dbbc2b06bbd5aab84937c903e0590591c60) | fix | resolve test files correctly on Windows when using non-C drives | +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------- | +| [730ae6609](https://github.com/angular/angular-cli/commit/730ae6609b847802124a5c6e12c77522af54b967) | fix | handle platform destruction during rendering | @@ -85,46 +94,6 @@ - - -# 21.1.0-next.3 (2025-12-18) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------- | -| [348096623](https://github.com/angular/angular-cli/commit/348096623326857a5d8cf77d56712776e1190180) | fix | enhance list_projects MCP tool file system traversal and symlink handling | -| [032257a6d](https://github.com/angular/angular-cli/commit/032257a6d00360d2c4e6d5406409dcfa5b27d1d5) | fix | improve signal forms lesson examples in AI tutor | -| [18d74dde8](https://github.com/angular/angular-cli/commit/18d74dde8938dbe566df80753d5c148c19040179) | fix | rename mcp devserver tools to comply with naming spec | -| [a15db28b2](https://github.com/angular/angular-cli/commit/a15db28b29f6f43bef1ed1ca7c6a963d9943f801) | perf | cache resolved specific version in package manager abstraction | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | -| [52ace04a7](https://github.com/angular/angular-cli/commit/52ace04a7ca1c102fdf1addf5ab6fe400c0eab0e) | fix | improve VS Code background compilation start/end detection | -| [288a9225c](https://github.com/angular/angular-cli/commit/288a9225c83edec9560e2b39901740e792c54d27) | fix | remove `inlineSources` from library tsconfig template | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | -| [98c207bc0](https://github.com/angular/angular-cli/commit/98c207bc0e44caccd6fffa5b8d3a013a2a3a871a) | fix | add browser condition to resolver for vitest | -| [f39f7ee95](https://github.com/angular/angular-cli/commit/f39f7ee9529113f7c75d0e0e3ffa628fed9ce92f) | fix | allow non-prefixed requests when using SSR and base href | -| [7c7e6a614](https://github.com/angular/angular-cli/commit/7c7e6a6142a9d294e04c612463449d2a4360e692) | fix | conditionally manage Vitest UI option | -| [edeb41c0e](https://github.com/angular/angular-cli/commit/edeb41c0e01881c21dec4d7f63fe8d302ce0521d) | fix | ensure tests run when compilation error is resolved | -| [9744af1f8](https://github.com/angular/angular-cli/commit/9744af1f82a8e9c2816adf636e4e8a1a8be06c60) | fix | remove LmdbCacheStore export from private API | - -### @angular/ssr - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------- | -| [e5651224b](https://github.com/angular/angular-cli/commit/e5651224b5086335d48b133e1d0b9c8536c22e5f) | fix | add leading slash to well-known non-Angular URLs | -| [081e31337](https://github.com/angular/angular-cli/commit/081e3133764c9a23f70969bfd182259be34a411e) | fix | propagate status code to redirect | -| [2d56a319d](https://github.com/angular/angular-cli/commit/2d56a319d8d45f36d9e5d958cbbd96e195c2c15e) | fix | skip SSR processing for well-known non-Angular URLs like favicon.ico | - - - # 21.0.4 (2025-12-18) @@ -156,36 +125,6 @@ - - -# 21.1.0-next.2 (2025-12-10) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------- | -| [d8b76e93d](https://github.com/angular/angular-cli/commit/d8b76e93d3e9e4e7bd7ad6e12fdf59cd663cbb8e) | fix | correctly handle yarn classic tag manifest fetching | -| [7ab5c0b0a](https://github.com/angular/angular-cli/commit/7ab5c0b0a1c637f3e0adb71486e5e7e8716561e4) | fix | correctly spawn package managers on Windows in new abstraction | -| [240588b7e](https://github.com/angular/angular-cli/commit/240588b7e3c8698c83110793ab98d20caee4e1a4) | perf | optimize `ng add` version discovery | - -### @angular-devkit/build-angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------- | -| [985aa18d0](https://github.com/angular/angular-cli/commit/985aa18d0b6cf728c498c0873793e131a4c416c1) | fix | conditionally provide Zone.js change detection in the built-in test main file | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | -| [30b5d81b4](https://github.com/angular/angular-cli/commit/30b5d81b4adafca32c94672a39574daa2e3fc8b7) | fix | Add custom middleware for to present an Angular-tailored message | -| [2e7227b8d](https://github.com/angular/angular-cli/commit/2e7227b8dc04d4b2ca20e18baaeebaa65d3c2aac) | fix | Ensure disposal of close-javascript-transformer | -| [38b16ea01](https://github.com/angular/angular-cli/commit/38b16ea0108c48835dc0d81863eca84f7b8cea6e) | fix | ensure locale base href retains leading slash ([#32040](https://github.com/angular/angular-cli/pull/32040)) | -| [385165cbc](https://github.com/angular/angular-cli/commit/385165cbc6ff087e6bc1fb6f686d4929e83a075a) | fix | inject testing polyfills in Karma unit-test executor | -| [6d212206f](https://github.com/angular/angular-cli/commit/6d212206fdfc94e661a25bed1287c0bc15219b63) | fix | support NODE_EXTRA_CA_CERTS in SSR SSL plugin | - - - # 21.0.3 (2025-12-10) @@ -208,37 +147,6 @@ - - -# 21.1.0-next.1 (2025-12-03) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------ | -| [d635a6c63](https://github.com/angular/angular-cli/commit/d635a6c6335d0838fc0977f6742f6aa9f769c527) | feat | add signal forms lessons | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- | -| [e71a72ffd](https://github.com/angular/angular-cli/commit/e71a72ffdc426e26bfb4f0bb92e8f5795a621c18) | feat | generate detailed migration report for `refactor-jasmine-vitest` | - -### @angular-devkit/schematics - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | -| [98e10fa0f](https://github.com/angular/angular-cli/commit/98e10fa0f29cc8f6cf6a25c45c6888a79465eaf7) | fix | remove lazy imports in node tasks | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------- | -| [63c3e3f64](https://github.com/angular/angular-cli/commit/63c3e3f6406d345e777ca18bfad7d6d701e5c4ea) | fix | add filename truncation to test discovery | -| [8d8ba4f61](https://github.com/angular/angular-cli/commit/8d8ba4f61fc07dd670b705c48e82cf63424b3cce) | fix | allow overriding Vitest coverage `reportsDirectory` option | - - - # 21.0.2 (2025-12-03) @@ -276,31 +184,6 @@ - - -# 21.1.0-next.0 (2025-11-26) - -### @angular/cli - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------- | -| [c3c9ac506](https://github.com/angular/angular-cli/commit/c3c9ac5067275461e2d8caefba81ac9701949776) | feat | Add MCP tools for building and running devservers | - -### @schematics/angular - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------- | -| [36cf3afb4](https://github.com/angular/angular-cli/commit/36cf3afb485a01f86c4c90f136b38a3cf338e313) | feat | add browserMode option to jasmine-vitest schematic | -| [18cf6c51b](https://github.com/angular/angular-cli/commit/18cf6c51b72ce5c7f23012585ed992cf91cef5ed) | fix | add MCP configuration file to new workspaces | - -### @angular/build - -| Commit | Type | Description | -| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------------------- | -| [ad99e00ad](https://github.com/angular/angular-cli/commit/ad99e00ad7edd17e369777c8d38b4137ea736121) | fix | simplify SSL handling for `ng serve` with SSR ([#31722](https://github.com/angular/angular-cli/pull/31722)) | - - - # 21.0.1 (2025-11-26) From 630584ebbbbdedf0ac7b8768302af7ea87b1703f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:43:42 -0500 Subject: [PATCH 2101/2162] refactor(@angular/cli): decouple `AnalyticsCollector` from `CommandContext` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `AnalyticsCollector` class is made more modular and easier to test by removing its direct dependency on the `CommandContext`. Instead of accepting the entire context object, the constructor now receives only the specific dependencies it requires: the logger, user ID, and package manager information. This improves separation of concerns and simplifies unit testing of the analytics collector. Also removes a circular reference: packages/angular/cli/src/analytics/analytics-collector.ts → packages/angular/cli/src/command-builder/command-module.ts --- goldens/circular-deps/packages.json | 4 ---- .../cli/src/analytics/analytics-collector.ts | 13 +++++++------ .../cli/src/command-builder/command-module.ts | 13 ++++++++++--- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/goldens/circular-deps/packages.json b/goldens/circular-deps/packages.json index 96a53f7a1040..20d959198b49 100644 --- a/goldens/circular-deps/packages.json +++ b/goldens/circular-deps/packages.json @@ -31,10 +31,6 @@ "packages/angular/build/src/tools/esbuild/utils.ts", "packages/angular/build/src/utils/server-rendering/manifest.ts" ], - [ - "packages/angular/cli/src/analytics/analytics-collector.ts", - "packages/angular/cli/src/command-builder/command-module.ts" - ], [ "packages/angular/cli/src/analytics/analytics.ts", "packages/angular/cli/src/command-builder/command-module.ts" diff --git a/packages/angular/cli/src/analytics/analytics-collector.ts b/packages/angular/cli/src/analytics/analytics-collector.ts index 052bc5cbe74c..7520b16916ae 100644 --- a/packages/angular/cli/src/analytics/analytics-collector.ts +++ b/packages/angular/cli/src/analytics/analytics-collector.ts @@ -6,12 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ +import { logging } from '@angular-devkit/core'; import { randomUUID } from 'node:crypto'; import * as https from 'node:https'; import * as os from 'node:os'; import * as querystring from 'node:querystring'; import * as semver from 'semver'; -import type { CommandContext } from '../command-builder/command-module'; import { ngDebug } from '../utilities/environment-options'; import { assertIsError } from '../utilities/error'; import { VERSION } from '../utilities/version'; @@ -32,8 +32,9 @@ export class AnalyticsCollector { private readonly userParameters: Record; constructor( - private context: CommandContext, + private logger: logging.Logger, userId: string, + packageManagerInfo: { name: string; version: string | undefined }, ) { const requestParameters: Partial> = { [RequestParameter.ProtocolVersion]: 2, @@ -63,7 +64,7 @@ export class AnalyticsCollector { this.requestParameterStringified = querystring.stringify(requestParameters); const parsedVersion = semver.parse(process.version); - const packageManagerVersion = context.packageManager.version; + const packageManagerVersion = packageManagerInfo.version; this.userParameters = { // While architecture is being collect by GA as UserAgentArchitecture. @@ -75,7 +76,7 @@ export class AnalyticsCollector { ? `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}` : 'other', [UserCustomDimension.NodeMajorVersion]: parsedVersion?.major, - [UserCustomDimension.PackageManager]: context.packageManager.name, + [UserCustomDimension.PackageManager]: packageManagerInfo.name, [UserCustomDimension.PackageManagerVersion]: packageManagerVersion, [UserCustomDimension.PackageManagerMajorVersion]: packageManagerVersion ? +packageManagerVersion.split('.', 1)[0] @@ -152,7 +153,7 @@ export class AnalyticsCollector { async flush(): Promise { const pendingTrackingEvents = this.trackingEventsQueue; - this.context.logger.debug(`Analytics flush size. ${pendingTrackingEvents?.length}.`); + this.logger.debug(`Analytics flush size. ${pendingTrackingEvents?.length}.`); if (!pendingTrackingEvents?.length) { return; @@ -167,7 +168,7 @@ export class AnalyticsCollector { } catch (error) { // Failure to report analytics shouldn't crash the CLI. assertIsError(error); - this.context.logger.debug(`Send analytics error. ${error.message}.`); + this.logger.debug(`Send analytics error. ${error.message}.`); } } diff --git a/packages/angular/cli/src/command-builder/command-module.ts b/packages/angular/cli/src/command-builder/command-module.ts index d036656cf2dd..b4dadea709a4 100644 --- a/packages/angular/cli/src/command-builder/command-module.ts +++ b/packages/angular/cli/src/command-builder/command-module.ts @@ -60,8 +60,10 @@ export interface CommandContext { export type OtherOptions = Record; -export interface CommandModuleImplementation - extends Omit, 'builder' | 'handler'> { +export interface CommandModuleImplementation extends Omit< + YargsCommandModule<{}, T>, + 'builder' | 'handler' +> { /** Scope in which the command can be executed in. */ scope: CommandScope; @@ -187,7 +189,12 @@ export abstract class CommandModule implements CommandModuleI ['version', 'update', 'analytics'].includes(this.commandName), ); - return userId ? new AnalyticsCollector(this.context, userId) : undefined; + return userId + ? new AnalyticsCollector(this.context.logger, userId, { + name: this.context.packageManager.name, + version: this.context.packageManager.version, + }) + : undefined; } /** From 3dd2d1ecb8d9b8e6a257d0de898aa9d629269ea0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 15 Jan 2026 20:06:56 +0000 Subject: [PATCH 2102/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 37 +- package.json | 6 +- packages/angular/build/package.json | 2 +- .../angular_devkit/build_angular/package.json | 2 +- pnpm-lock.yaml | 407 +++++++++--------- tests/e2e/ng-snapshot/package.json | 32 +- 13 files changed, 295 insertions(+), 303 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 60208dd095ca..98ebacbd708d 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@8ce8257f740613a7291256173e2706fb2ed8aefa + - uses: angular/dev-infra/github-actions/branch-manager@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3197a86069a9..a497a0bcb4f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - 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 1e7e5cdb9bd6..483116f396c3 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@8ce8257f740613a7291256173e2706fb2ed8aefa + - uses: angular/dev-infra/github-actions/pull-request-labeling@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@8ce8257f740613a7291256173e2706fb2ed8aefa + - uses: angular/dev-infra/github-actions/post-approval-changes@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 0eff82b705ea..341150e3b5c3 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@8ce8257f740613a7291256173e2706fb2ed8aefa + - uses: angular/dev-infra/github-actions/feature-request@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 7bd1c9b434bb..b7629f0c0fbb 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@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - 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@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - 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 cc2c80342aa9..4691f0693535 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup ESLint Caching uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/linting/licenses@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8ce8257f740613a7291256173e2706fb2ed8aefa + uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 9afa261507e6..2865897c2d5d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "8ce8257f740613a7291256173e2706fb2ed8aefa", + commit = "8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index f6759b68854e..b6142d66a3a0 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -15,7 +15,8 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/MODULE.bazel": "6b735f3fdd64978e217c9725f4ff0d84bf606554c8e77d20e90977841d7ff2ed", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/source.json": "58fffa2d722cff47cb8d921c8bbed7701c53f233009d9ca82beb4a0fb8fb9418", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/MODULE.bazel": "004ba890363d05372a97248c37205ae64b6fa31047629cd2c0895a9d0c7779e8", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/source.json": "ac2c3213df8f985785f1d0aeb7f0f73d5324e6e67d593d9b9470fb74a25d4a9b", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", @@ -27,11 +28,13 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/MODULE.bazel": "807ce5f624124a8bc586c743394d174e85f0f9c6c4e0e2410b4088aebe790ac8", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/source.json": "c35cb4e04f61a09c17f8c569894b80de884b1e3dee2d33829704786e3f778037", + "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/MODULE.bazel": "77b49cd52fe3d36d6caa857d7b59064547f26221fbe6ac499a973dcff033e745", + "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/source.json": "2f53efd9718ff1d92435fd0388429fd7d7859950b6eb15348f56bbfcbfdacc5c", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/MODULE.bazel": "796622c65ae3008374fc2d77c32ddb4ef6da9fe891826ce648f70033a48b3667", - "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/source.json": "a7c4f332f5c21f4e63d073f8dda40bf278d5307499fb307b35058dba558f417a", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.3/MODULE.bazel": "a26c28ebcd0c0d50ab0708ac21fa48bd2dced3a4dad4c31a2fa48588b42ad762", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.3/source.json": "d17304791281168c42c5532b4b9e01dfb4bdb42d7bf784597b75f401211efc63", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.3/MODULE.bazel": "20f53b145f40957a51077ae90b37b7ce83582a1daf9350349f0f86179e19dd0d", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.6/MODULE.bazel": "cafb8781ad591bc57cc765dca5fefab08cf9f65af363d162b79d49205c7f8af7", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", @@ -47,7 +50,8 @@ "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", - "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", + "https://bcr.bazel.build/modules/bazel_features/1.39.0/MODULE.bazel": "28739425c1fc283c91931619749c832b555e60bcd1010b40d8441ce0a5cf726d", + "https://bcr.bazel.build/modules/bazel_features/1.39.0/source.json": "f63cbeb4c602098484d57001e5a07d31cb02bbccde9b5e2c9bf0b29d05283e93", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", @@ -159,7 +163,8 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/MODULE.bazel": "9fdb5e1d50246a25761f150fcc820dc47e4052330a8408451e628804f9ca64a6", - "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/source.json": "6e8c1ecc64ff8da147c1620f862ad77d7b19c5d1b52b3aa5e847d5b3d0de4cc3", + "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/MODULE.bazel": "c22a48b2a0dbf05a9dc5f83837bbc24c226c1f6e618de3c3a610044c9f336056", + "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/source.json": "a3f966f4415a8a6545e560ee5449eac95cc633f96429d08e87c87775c72f5e09", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", "https://bcr.bazel.build/modules/rules_pkg/1.2.0/MODULE.bazel": "c7db3c2b407e673c7a39e3625dc05dc9f12d6682cbd82a3a5924a13b491eda7e", @@ -210,7 +215,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "9odiC0alKLq5PUYv/CZiw2yiMHsGpxvEhPsqt//fRRk=", + "bzlTransitiveDigest": "RI14KgUrvKQ5YNDfXpXTphbCxvV+TKnasDm/ltO1VkA=", "usagesDigest": "ToTaCONCN/E05krnHXLM1kpV1zrHNxHrGpUip973II4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -411,8 +416,8 @@ }, "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "VaGKuK2sKVTWlq9QBZfNc4fhigCeN9Wt4YhnhdGUkv8=", - "usagesDigest": "/NqvQUP/nSwl7fsTFSQHEZJU5rTvs4M1h1n8n0KpF7Q=", + "bzlTransitiveDigest": "k8N/8kN3PnK4a8S/PlynWenNzI5NCiFM0O/A1AKzf7o=", + "usagesDigest": "zrJH4GNc/gzrzKR+BoIP4cQ8jesgTMbdGpS0UOId7SM=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -565,7 +570,7 @@ }, "@@aspect_rules_ts+//ts:extensions.bzl%ext": { "general": { - "bzlTransitiveDigest": "7k3bewVApw4Kc6Rpho1Rrs1nrW/5jphUA5Mh1iHE2U4=", + "bzlTransitiveDigest": "gyALvLdd/1AuLPFXhzNeabk2DMLHf32oxn8qKfEK8UA=", "usagesDigest": "aaqqxEFKCRGFkeAf0pKmXvZZTLGYIk3pQsDFG28ZbNg=", "recordedFileInputs": { "@@rules_browsers+//package.json": "84dc1ba9b1c667a25894e97218bd8f247d54f24bb694efb397a881be3c06a4c5" @@ -632,7 +637,7 @@ "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=", - "usagesDigest": "jHASCmhI+ziv94KZ5hlx6t1ixFDdVXFm2VnOVVbAqww=", + "usagesDigest": "Ol+lwuWMyJTsR9+yEnTcQXmP8sf4B85JAhF3NJZvbNQ=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -641,8 +646,8 @@ "repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.8.3", - "aspect_rules_ts": "3.8.1", + "aspect_rules_js": "2.9.1", + "aspect_rules_ts": "3.8.3", "aspect_rules_esbuild": "0.25.0", "aspect_rules_jasmine": "2.0.2", "aspect_tools_telemetry": "0.3.3" @@ -1092,8 +1097,8 @@ }, "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { - "bzlTransitiveDigest": "NwcLXHrbh2hoorA/Ybmcpjxsn/6avQmewDglodkDrgo=", - "usagesDigest": "oW5D6Ox6De/XR9eunsl7akWWBPexdZKf4h2iPvm7FoY=", + "bzlTransitiveDigest": "4pUxCNc22K4I+6+4Nxu52Hur12tFRfa1JMsN5mdDv60=", + "usagesDigest": "A/PdHhasVyLRZcsg7lsY6soGxHGTzGCru+3HWDssiVU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1880,7 +1885,7 @@ }, "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "rPZpN8uoLnuu3B+LRiijfMadoMlO1/dxOO8/emPCZV4=", + "bzlTransitiveDigest": "d3ENjFH8qMwmOrkcb3c9JYqQ5hJ6owjfbSr24KY0Ugg=", "usagesDigest": "AK1R124YPWwAs8z1CQYyjYuci8RO5Ofot+EP5ZCNQDc=", "recordedFileInputs": { "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", @@ -4675,7 +4680,7 @@ "@@yq.bzl+//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "tDqk+ntWTdxNAWPDjRY1uITgHbti2jcXR5ZdinltBs0=", - "usagesDigest": "4oq89IijqhFzPJc0F7hJ32lOqQzIvApwF7B2cT0spTc=", + "usagesDigest": "H4WOOwwHPUO41F0K/ZT1Znd7TFScuiz4NqqtF7PQlFw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index 9497776abb2f..8284dc5d6ee9 100644 --- a/package.json +++ b/package.json @@ -43,15 +43,15 @@ "homepage": "https://github.com/angular/angular-cli", "devDependencies": { "@angular/animations": "21.1.0-rc.0", - "@angular/cdk": "21.1.0-next.4", + "@angular/cdk": "21.2.0-next.0", "@angular/common": "21.1.0-rc.0", "@angular/compiler": "21.1.0-rc.0", "@angular/compiler-cli": "21.1.0-rc.0", "@angular/core": "21.1.0-rc.0", "@angular/forms": "21.1.0-rc.0", "@angular/localize": "21.1.0-rc.0", - "@angular/material": "21.1.0-next.4", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#486b075a283ef0c169475b981de1bd229114a000", + "@angular/material": "21.2.0-next.0", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#370b6f7b49470d16721272715642d0ba2ef99556", "@angular/platform-browser": "21.1.0-rc.0", "@angular/platform-server": "21.1.0-rc.0", "@angular/router": "21.1.0-rc.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 73ae171a82e1..79beab7c5827 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -54,7 +54,7 @@ "@angular/ssr": "workspace:*", "jsdom": "27.4.0", "less": "4.4.2", - "ng-packagr": "21.1.0-rc.0", + "ng-packagr": "21.2.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", "vitest": "4.0.16" diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 33ba53ba4330..950c5dc17da8 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -68,7 +68,7 @@ "@angular/ssr": "workspace:*", "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", - "ng-packagr": "21.1.0-rc.0", + "ng-packagr": "21.2.0-next.0", "undici": "7.18.2" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28edd1963ea7..15b777c91dad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) @@ -44,11 +44,11 @@ importers: specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.1.0-rc.0) '@angular/material': - specifier: 21.1.0-next.4 - version: 21.1.0-next.4(b051653d7cc612357511ba8a2f98a625) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(1ca137b8238b4cbde6abd4f3e10ddd1e) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#486b075a283ef0c169475b981de1bd229114a000 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/486b075a283ef0c169475b981de1bd229114a000(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#370b6f7b49470d16721272715642d0ba2ef99556 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -315,7 +315,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.16 - version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -327,7 +327,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -348,10 +348,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.21 - version: 5.1.21(@types/node@24.10.4) + version: 5.1.21(@types/node@24.10.8) '@vitejs/plugin-basic-ssl': specifier: 2.1.0 - version: 2.1.0(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.3.5 version: 0.3.5 @@ -408,7 +408,7 @@ importers: version: 7.18.2 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.5.0 version: 2.5.0 @@ -426,8 +426,8 @@ importers: specifier: 4.4.2 version: 4.4.2 ng-packagr: - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -436,7 +436,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -455,10 +455,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.4) + version: 7.10.1(@types/node@24.10.8) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.4))(@types/node@24.10.4)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.8))(@types/node@24.10.8)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.25.2 version: 1.25.2(zod@4.3.5) @@ -735,8 +735,8 @@ importers: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) ng-packagr: - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.18.2 version: 7.18.2 @@ -820,7 +820,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.4) + version: 7.10.1(@types/node@24.10.8) packages/ngtools/webpack: devDependencies: @@ -872,8 +872,8 @@ packages: '@acemir/cssom@0.9.30': resolution: {integrity: sha512-9CnlMCI0LmCIq0olalQqdWrJHPzm0/tw3gzOA9zJSgvFX7Xau3D24mAGa4BtwxwY69nsuJW6kQqqCzf/mEcQgg==} - '@actions/core@2.0.1': - resolution: {integrity: sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==} + '@actions/core@2.0.2': + resolution: {integrity: sha512-Ast1V7yHbGAhplAsuVlnb/5J8Mtr/Zl6byPPL+Qjq3lmfIgWF1ak1iYfF/079cRERiuTALTXkSuEUdZeDCfGtA==} '@actions/exec@2.0.0': resolution: {integrity: sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==} @@ -950,8 +950,8 @@ packages: peerDependencies: '@angular/core': 21.1.0-rc.0 - '@angular/cdk@21.1.0-next.4': - resolution: {integrity: sha512-hF4ZIgMhG1TFT6XnOcK7G00IsOqMPmXkcMgVHz2bmwoSXlqfpUCVQKAhGHRHrMLQqUMckecYiWYG0njeWrsHkw==} + '@angular/cdk@21.2.0-next.0': + resolution: {integrity: sha512-k7hL8A3bxxsQzOp/KeU0uI0jLckqXq/n26j8u8cH/IQN66V5OBqM+NBV3rXi6Wc/HEBcYhvcBxsecGkpj14Qbw==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 @@ -1010,19 +1010,19 @@ packages: '@angular/compiler': 21.1.0-rc.0 '@angular/compiler-cli': 21.1.0-rc.0 - '@angular/material@21.1.0-next.4': - resolution: {integrity: sha512-ykfaHuScS98Aexo5x8WN+LrbGxBIhYnEtNw0ba5bdL1jNoWZI3iFANk9wLb3u9Mw+G1qrbO4B+60VPKdp7jVbw==} + '@angular/material@21.2.0-next.0': + resolution: {integrity: sha512-g7dfzJrT4TcX7fjfvYAPPvwNxKj+fVnq1F+Ll5jk91BY+Y2kYVBhEYeVXnC3l5r+HshR0MUst772Tm+4stG56g==} peerDependencies: - '@angular/cdk': 21.1.0-next.4 + '@angular/cdk': 21.2.0-next.0 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/486b075a283ef0c169475b981de1bd229114a000': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/486b075a283ef0c169475b981de1bd229114a000} - version: 0.0.0-8ce8257f740613a7291256173e2706fb2ed8aefa + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556} + version: 0.0.0-8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 hasBin: true '@angular/platform-browser@21.1.0-rc.0': @@ -2119,8 +2119,8 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.34.0': - resolution: {integrity: sha512-vu53UMPvjmb7PGzlYu6Tzxso8Dfhn+a7eQFaS2uNemVtDZKwzSpJ5+ikqBbXplF7RGB1STcVDqCkPvquiwb2sw==} + '@google/genai@1.35.0': + resolution: {integrity: sha512-ZC1d0PSM5eS73BpbVIgL3ZsmXeMKLVJurxzww1Z9axy3B2eUB3ioEytbQt4Qu0Od6qPluKrTDew9pSi9kEuPaw==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.24.0 @@ -2358,8 +2358,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@8.1.0': - resolution: {integrity: sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA==} + '@inquirer/prompts@8.2.0': + resolution: {integrity: sha512-rqTzOprAj55a27jctS3vhvDDJzYXsr33WXTjODgVOru21NvBo9yIgLIAf7SBdSV0WERVly3dR6TWyp7ZHkvKFA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' @@ -2430,15 +2430,6 @@ packages: '@types/node': optional: true - '@inquirer/type@4.0.2': - resolution: {integrity: sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/type@4.0.3': resolution: {integrity: sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} @@ -3540,12 +3531,12 @@ packages: '@types/jasmine-reporters@2.5.3': resolution: {integrity: sha512-8aojAUdgdiD9VQbllBJb/9gny3lOjz9T5gyMcbYlKe6npwGVsarbr8v2JYSFJSZSuFYXcPVzFG2lLX3ib0j/DA==} - '@types/jasmine@5.1.13': - resolution: {integrity: sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==} - '@types/jasmine@5.1.14': resolution: {integrity: sha512-16bJdpgUPNKXuaelVxuLZUeDd02+PnF0aQd5HY4xLWoUOMoRE+CyNkRpjRMIcPBCR1dscSb52pmFNILAN1uzkw==} + '@types/jasmine@5.1.15': + resolution: {integrity: sha512-ZAC8KjmV2MJxbNTrwXFN+HKeajpXQZp6KpPiR6Aa4XvaEnjP6qh23lL/Rqb7AYzlp3h/rcwDrQ7Gg7q28cQTQg==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3588,8 +3579,8 @@ packages: '@types/node@22.19.5': resolution: {integrity: sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==} - '@types/node@24.10.4': - resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} + '@types/node@24.10.8': + resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -7003,12 +6994,12 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - ng-packagr@21.1.0-rc.0: - resolution: {integrity: sha512-TumrPbeD7qiGULFa2BJEZ0ilG8QPFMzTil9uZm+CDwNvu9tTVP78vBzkK2JxxngDb/mz9VgjBFL2u/lzdz325Q==} + ng-packagr@21.2.0-next.0: + resolution: {integrity: sha512-BkRAqx1ZljIYpBbjDi/+3y8AMo9S19vm8zx3YWpqMAaIpDb7cvsT+Une9b4oyEK/7p+XvWw+LaPVleTAQtQEMQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler-cli': ^21.1.0-next + '@angular/compiler-cli': ^21.0.0 || ^21.1.0-next || ^21.2.0-next tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 typescript: '>=5.9 <6.0' @@ -9194,7 +9185,7 @@ snapshots: '@acemir/cssom@0.9.30': {} - '@actions/core@2.0.1': + '@actions/core@2.0.2': dependencies: '@actions/exec': 2.0.0 '@actions/http-client': 3.0.1 @@ -9304,7 +9295,7 @@ snapshots: '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.1.0-next.4(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/cdk@21.2.0-next.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) @@ -9367,9 +9358,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.1.0-next.4(b051653d7cc612357511ba8a2f98a625)': + '@angular/material@21.2.0-next.0(1ca137b8238b4cbde6abd4f3e10ddd1e)': dependencies: - '@angular/cdk': 21.1.0-next.4(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/cdk': 21.2.0-next.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) @@ -9377,13 +9368,13 @@ 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/486b075a283ef0c169475b981de1bd229114a000(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': dependencies: - '@actions/core': 2.0.1 + '@actions/core': 2.0.2 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.34.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) - '@inquirer/prompts': 8.1.0(@types/node@24.10.4) - '@inquirer/type': 4.0.2(@types/node@24.10.4) + '@google/genai': 1.35.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + '@inquirer/prompts': 8.2.0(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -9400,8 +9391,8 @@ snapshots: '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 - '@types/jasmine': 5.1.13 - '@types/node': 24.10.4 + '@types/jasmine': 5.1.15 + '@types/node': 24.10.8 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.35 @@ -10755,7 +10746,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.34.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': + '@google/genai@1.35.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -10809,249 +10800,245 @@ snapshots: '@inquirer/ansi@2.0.3': {} - '@inquirer/checkbox@4.3.2(@types/node@24.10.4)': + '@inquirer/checkbox@4.3.2(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.8) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/checkbox@5.0.4(@types/node@24.10.4)': + '@inquirer/checkbox@5.0.4(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/confirm@5.1.21(@types/node@24.10.4)': + '@inquirer/confirm@5.1.21(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/confirm@6.0.4(@types/node@24.10.4)': + '@inquirer/confirm@6.0.4(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/core@10.3.2(@types/node@24.10.4)': + '@inquirer/core@10.3.2(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.8) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/core@11.1.1(@types/node@24.10.4)': + '@inquirer/core@11.1.1(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 2.0.3 '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.8) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 wrap-ansi: 9.0.2 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/editor@4.2.23(@types/node@24.10.4)': + '@inquirer/editor@4.2.23(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/editor@5.0.4(@types/node@24.10.4)': + '@inquirer/editor@5.0.4(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/external-editor': 2.0.3(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/external-editor': 2.0.3(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/expand@4.0.23(@types/node@24.10.4)': + '@inquirer/expand@4.0.23(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/expand@5.0.4(@types/node@24.10.4)': + '@inquirer/expand@5.0.4(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/external-editor@1.0.3(@types/node@24.10.4)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.8)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/external-editor@2.0.3(@types/node@24.10.4)': + '@inquirer/external-editor@2.0.3(@types/node@24.10.8)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 '@inquirer/figures@1.0.15': {} '@inquirer/figures@2.0.3': {} - '@inquirer/input@4.3.1(@types/node@24.10.4)': + '@inquirer/input@4.3.1(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/input@5.0.4(@types/node@24.10.4)': + '@inquirer/input@5.0.4(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/number@3.0.23(@types/node@24.10.4)': + '@inquirer/number@3.0.23(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/number@4.0.4(@types/node@24.10.4)': + '@inquirer/number@4.0.4(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/password@4.0.23(@types/node@24.10.4)': + '@inquirer/password@4.0.23(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/password@5.0.4(@types/node@24.10.4)': + '@inquirer/password@5.0.4(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 - - '@inquirer/prompts@7.10.1(@types/node@24.10.4)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.4) - '@inquirer/confirm': 5.1.21(@types/node@24.10.4) - '@inquirer/editor': 4.2.23(@types/node@24.10.4) - '@inquirer/expand': 4.0.23(@types/node@24.10.4) - '@inquirer/input': 4.3.1(@types/node@24.10.4) - '@inquirer/number': 3.0.23(@types/node@24.10.4) - '@inquirer/password': 4.0.23(@types/node@24.10.4) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.4) - '@inquirer/search': 3.2.2(@types/node@24.10.4) - '@inquirer/select': 4.4.2(@types/node@24.10.4) + '@types/node': 24.10.8 + + '@inquirer/prompts@7.10.1(@types/node@24.10.8)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.8) + '@inquirer/confirm': 5.1.21(@types/node@24.10.8) + '@inquirer/editor': 4.2.23(@types/node@24.10.8) + '@inquirer/expand': 4.0.23(@types/node@24.10.8) + '@inquirer/input': 4.3.1(@types/node@24.10.8) + '@inquirer/number': 3.0.23(@types/node@24.10.8) + '@inquirer/password': 4.0.23(@types/node@24.10.8) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.8) + '@inquirer/search': 3.2.2(@types/node@24.10.8) + '@inquirer/select': 4.4.2(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 - - '@inquirer/prompts@8.1.0(@types/node@24.10.4)': - dependencies: - '@inquirer/checkbox': 5.0.4(@types/node@24.10.4) - '@inquirer/confirm': 6.0.4(@types/node@24.10.4) - '@inquirer/editor': 5.0.4(@types/node@24.10.4) - '@inquirer/expand': 5.0.4(@types/node@24.10.4) - '@inquirer/input': 5.0.4(@types/node@24.10.4) - '@inquirer/number': 4.0.4(@types/node@24.10.4) - '@inquirer/password': 5.0.4(@types/node@24.10.4) - '@inquirer/rawlist': 5.2.0(@types/node@24.10.4) - '@inquirer/search': 4.1.0(@types/node@24.10.4) - '@inquirer/select': 5.0.4(@types/node@24.10.4) + '@types/node': 24.10.8 + + '@inquirer/prompts@8.2.0(@types/node@24.10.8)': + dependencies: + '@inquirer/checkbox': 5.0.4(@types/node@24.10.8) + '@inquirer/confirm': 6.0.4(@types/node@24.10.8) + '@inquirer/editor': 5.0.4(@types/node@24.10.8) + '@inquirer/expand': 5.0.4(@types/node@24.10.8) + '@inquirer/input': 5.0.4(@types/node@24.10.8) + '@inquirer/number': 4.0.4(@types/node@24.10.8) + '@inquirer/password': 5.0.4(@types/node@24.10.8) + '@inquirer/rawlist': 5.2.0(@types/node@24.10.8) + '@inquirer/search': 4.1.0(@types/node@24.10.8) + '@inquirer/select': 5.0.4(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/rawlist@4.1.11(@types/node@24.10.4)': + '@inquirer/rawlist@4.1.11(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/rawlist@5.2.0(@types/node@24.10.4)': + '@inquirer/rawlist@5.2.0(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/search@3.2.2(@types/node@24.10.4)': + '@inquirer/search@3.2.2(@types/node@24.10.8)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.8) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/search@4.1.0(@types/node@24.10.4)': + '@inquirer/search@4.1.0(@types/node@24.10.8)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.4) + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/select@4.4.2(@types/node@24.10.4)': + '@inquirer/select@4.4.2(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.4) + '@inquirer/core': 10.3.2(@types/node@24.10.8) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/type': 3.0.10(@types/node@24.10.8) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/select@5.0.4(@types/node@24.10.4)': + '@inquirer/select@5.0.4(@types/node@24.10.8)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.4) + '@inquirer/core': 11.1.1(@types/node@24.10.8) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.4) - optionalDependencies: - '@types/node': 24.10.4 - - '@inquirer/type@3.0.10(@types/node@24.10.4)': + '@inquirer/type': 4.0.3(@types/node@24.10.8) optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/type@4.0.2(@types/node@24.10.4)': + '@inquirer/type@3.0.10(@types/node@24.10.8)': optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 - '@inquirer/type@4.0.3(@types/node@24.10.4)': + '@inquirer/type@4.0.3(@types/node@24.10.8)': optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 '@isaacs/balanced-match@4.0.1': {} @@ -11143,10 +11130,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.4))(@types/node@24.10.4)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.8))(@types/node@24.10.8)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@24.10.4) - '@inquirer/type': 3.0.10(@types/node@24.10.4) + '@inquirer/prompts': 7.10.1(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.8) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -12059,10 +12046,10 @@ snapshots: dependencies: '@types/jasmine': 5.1.14 - '@types/jasmine@5.1.13': {} - '@types/jasmine@5.1.14': {} + '@types/jasmine@5.1.15': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -12124,7 +12111,7 @@ snapshots: dependencies: undici-types: 7.18.2 - '@types/node@24.10.4': + '@types/node@24.10.8': dependencies: undici-types: 7.18.2 @@ -12496,11 +12483,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.16 @@ -12513,7 +12500,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -12526,13 +12513,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.16': dependencies: @@ -14540,7 +14527,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -16322,7 +16309,7 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.2.0-next.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) @@ -18460,7 +18447,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -18469,7 +18456,7 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.4 + '@types/node': 24.10.8 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18478,10 +18465,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.16 '@vitest/runner': 4.0.16 '@vitest/snapshot': 4.0.16 @@ -18498,11 +18485,11 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 - '@types/node': 24.10.4 + '@types/node': 24.10.8 jsdom: 27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - jiti diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 8cf086d84b61..f0df6611ccc7 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#2fb6689dfa572ee9791e73ea4baa69a950c21001", - "@angular/cdk": "github:angular/cdk-builds#1ab9962498d6903432ccc38546c01cf09bb1a366", - "@angular/common": "github:angular/common-builds#3677993d8692da988eb734945aa9a17f633d095a", - "@angular/compiler": "github:angular/compiler-builds#a4c253557608874de2aa4d928b708b2488c8c1f2", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#9a1ae7227b72d529e096390d1ac8b23dd92ada0e", - "@angular/core": "github:angular/core-builds#3b438e222a9305cd7401bf5b9c6a8c90759a3073", - "@angular/forms": "github:angular/forms-builds#ec56afffd56368aeb2e5aef57811ded5ffe14247", - "@angular/language-service": "github:angular/language-service-builds#5d167367e05a47d610f449ba57a3ff72b5a721b3", - "@angular/localize": "github:angular/localize-builds#ec44ae08265544772405adacda279e0b95d0bf91", - "@angular/material": "github:angular/material-builds#dace9dfcc8404a7ede4c4cc5a9dbffa1b9dcf9b5", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#75351c7ea416e662f7eb55a4e384ec7e6cafc848", - "@angular/platform-browser": "github:angular/platform-browser-builds#0f17437decd1e4c6dd7b36ccf1da9a441816cd17", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#b653692adb865fded706633c12602f459ce6fea5", - "@angular/platform-server": "github:angular/platform-server-builds#1ccd39aa8a1ead4297c1a1774cea6b427e7b27d1", - "@angular/router": "github:angular/router-builds#51cbccfd0694c60eec77216a530a3bb261110504", - "@angular/service-worker": "github:angular/service-worker-builds#a4a19e4f00e1b8f3d879b5a9b354231558e354b1" + "@angular/animations": "github:angular/animations-builds#7dc003bb36a038e613844bfe2e00e7db199cf00d", + "@angular/cdk": "github:angular/cdk-builds#0bc0bdf526d3c0026dd97636eb04cd86c0d03d4c", + "@angular/common": "github:angular/common-builds#b4d2edc0f3e3336ab4f70bba3628604ffbbcc378", + "@angular/compiler": "github:angular/compiler-builds#3465408d269db4a00ad66693e70ee12487c49170", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#5ed8c38c7511aadc11f842daa3ea8ec64e711e8c", + "@angular/core": "github:angular/core-builds#c1adbcee7734c6a5adb5043d30d3781b42b03535", + "@angular/forms": "github:angular/forms-builds#a050fbe09cf5ed90a70a5b51f2d130096e428412", + "@angular/language-service": "github:angular/language-service-builds#b1006acd53c0101ef768db2f3d238a9dfcd85e01", + "@angular/localize": "github:angular/localize-builds#36df9a6f7ea7df960d7feff9ea4f2b80164d3cd3", + "@angular/material": "github:angular/material-builds#23a3236d5194f1ccda346d55ef840d965a2bbf53", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2db8f246c42e2b115d6bf0f4b02e807d0631250c", + "@angular/platform-browser": "github:angular/platform-browser-builds#dffb281fb57a7a5f741d03188ffefbbb00c439cb", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#c9dd8649126ffd293b0ce965f9dbc475ba3b6488", + "@angular/platform-server": "github:angular/platform-server-builds#d7d7d7b7ab79a7f1bd089e4a94044f9106fe8abf", + "@angular/router": "github:angular/router-builds#08e30aa2366200f8d04786f84393994d38bc45d4", + "@angular/service-worker": "github:angular/service-worker-builds#e995e52c264515cbe3bf33d2da7a99b884149686" } } From 182cedad84459882d243802012d5e10d5fae5200 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 15 Jan 2026 21:38:40 +0000 Subject: [PATCH 2103/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 8 ++++---- MODULE.bazel.lock | 4 ---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 2865897c2d5d..a3a6f9a410a8 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,12 +6,12 @@ module( bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "yq.bzl", version = "0.3.4") -bazel_dep(name = "rules_nodejs", version = "6.6.2") -bazel_dep(name = "aspect_rules_js", version = "2.8.3") -bazel_dep(name = "aspect_rules_ts", version = "3.8.1") +bazel_dep(name = "rules_nodejs", version = "6.7.3") +bazel_dep(name = "aspect_rules_js", version = "2.9.1") +bazel_dep(name = "aspect_rules_ts", version = "3.8.3") bazel_dep(name = "rules_pkg", version = "1.2.0") bazel_dep(name = "rules_cc", version = "0.2.16") -bazel_dep(name = "aspect_bazel_lib", version = "2.22.2") +bazel_dep(name = "aspect_bazel_lib", version = "2.22.5") bazel_dep(name = "bazel_skylib", version = "1.9.0") bazel_dep(name = "aspect_rules_esbuild", version = "0.25.0") bazel_dep(name = "aspect_rules_jasmine", version = "2.0.2") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index b6142d66a3a0..9668bd691039 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -14,7 +14,6 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.2/MODULE.bazel": "6b735f3fdd64978e217c9725f4ff0d84bf606554c8e77d20e90977841d7ff2ed", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/MODULE.bazel": "004ba890363d05372a97248c37205ae64b6fa31047629cd2c0895a9d0c7779e8", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/source.json": "ac2c3213df8f985785f1d0aeb7f0f73d5324e6e67d593d9b9470fb74a25d4a9b", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", @@ -27,12 +26,10 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.8.3/MODULE.bazel": "807ce5f624124a8bc586c743394d174e85f0f9c6c4e0e2410b4088aebe790ac8", "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/MODULE.bazel": "77b49cd52fe3d36d6caa857d7b59064547f26221fbe6ac499a973dcff033e745", "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/source.json": "2f53efd9718ff1d92435fd0388429fd7d7859950b6eb15348f56bbfcbfdacc5c", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", - "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.1/MODULE.bazel": "796622c65ae3008374fc2d77c32ddb4ef6da9fe891826ce648f70033a48b3667", "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.3/MODULE.bazel": "a26c28ebcd0c0d50ab0708ac21fa48bd2dced3a4dad4c31a2fa48588b42ad762", "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.3/source.json": "d17304791281168c42c5532b4b9e01dfb4bdb42d7bf784597b75f401211efc63", "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.3/MODULE.bazel": "20f53b145f40957a51077ae90b37b7ce83582a1daf9350349f0f86179e19dd0d", @@ -162,7 +159,6 @@ "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", - "https://bcr.bazel.build/modules/rules_nodejs/6.6.2/MODULE.bazel": "9fdb5e1d50246a25761f150fcc820dc47e4052330a8408451e628804f9ca64a6", "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/MODULE.bazel": "c22a48b2a0dbf05a9dc5f83837bbc24c226c1f6e618de3c3a610044c9f336056", "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/source.json": "a3f966f4415a8a6545e560ee5449eac95cc633f96429d08e87c87775c72f5e09", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", From 0f1fcf133d6b0ccffccf82b7b4cfbce2df79a4ab Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 15 Jan 2026 06:08:27 +0000 Subject: [PATCH 2104/2162] build: update github/codeql-action action to v4.31.10 See associated pull request for more information. --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3932ccf6a3b8..636922f24244 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@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 63ad55057037..49b29854cf19 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@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9 + uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 with: sarif_file: results.sarif From 7b33b80262ca1bc43f96bd4ac857dd53e8b44ab4 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 15 Jan 2026 22:05:25 +0000 Subject: [PATCH 2105/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- tests/e2e/ng-snapshot/package.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index f0df6611ccc7..d8996ce08e42 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#7dc003bb36a038e613844bfe2e00e7db199cf00d", + "@angular/animations": "github:angular/animations-builds#c21ce1049f01121881bee13994d8453b029fa678", "@angular/cdk": "github:angular/cdk-builds#0bc0bdf526d3c0026dd97636eb04cd86c0d03d4c", - "@angular/common": "github:angular/common-builds#b4d2edc0f3e3336ab4f70bba3628604ffbbcc378", - "@angular/compiler": "github:angular/compiler-builds#3465408d269db4a00ad66693e70ee12487c49170", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#5ed8c38c7511aadc11f842daa3ea8ec64e711e8c", - "@angular/core": "github:angular/core-builds#c1adbcee7734c6a5adb5043d30d3781b42b03535", - "@angular/forms": "github:angular/forms-builds#a050fbe09cf5ed90a70a5b51f2d130096e428412", - "@angular/language-service": "github:angular/language-service-builds#b1006acd53c0101ef768db2f3d238a9dfcd85e01", - "@angular/localize": "github:angular/localize-builds#36df9a6f7ea7df960d7feff9ea4f2b80164d3cd3", + "@angular/common": "github:angular/common-builds#9c0b6821c771e0bd09db7e004cba8858e7eb25cc", + "@angular/compiler": "github:angular/compiler-builds#f11a6537b5c4633275fdc2528e5172be62e4c033", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#d2f253eeb40820890452943327b179551235a18c", + "@angular/core": "github:angular/core-builds#d2bd252dbb18d639344c23a2f0409554bc792028", + "@angular/forms": "github:angular/forms-builds#27d1b2efb9c395c51b47e85696a0fbff9401821b", + "@angular/language-service": "github:angular/language-service-builds#3ef8e411e024c333f056b17925c50a65ffde82a9", + "@angular/localize": "github:angular/localize-builds#4707cbd56ba347274f86988b57af359b4d5eb959", "@angular/material": "github:angular/material-builds#23a3236d5194f1ccda346d55ef840d965a2bbf53", "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2db8f246c42e2b115d6bf0f4b02e807d0631250c", - "@angular/platform-browser": "github:angular/platform-browser-builds#dffb281fb57a7a5f741d03188ffefbbb00c439cb", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#c9dd8649126ffd293b0ce965f9dbc475ba3b6488", - "@angular/platform-server": "github:angular/platform-server-builds#d7d7d7b7ab79a7f1bd089e4a94044f9106fe8abf", - "@angular/router": "github:angular/router-builds#08e30aa2366200f8d04786f84393994d38bc45d4", - "@angular/service-worker": "github:angular/service-worker-builds#e995e52c264515cbe3bf33d2da7a99b884149686" + "@angular/platform-browser": "github:angular/platform-browser-builds#beeb1f4a91e4f137be5e5e094e80b3a9816ba798", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#eb215cb532db7762fb02e0cd4f63132369af0eeb", + "@angular/platform-server": "github:angular/platform-server-builds#c35f3fcc29be3c4cdd1f95b36b3fc0091a12246c", + "@angular/router": "github:angular/router-builds#e1efd1ac6e3d7ecdf65cf85c1439048c60612c49", + "@angular/service-worker": "github:angular/service-worker-builds#0dc1f309ff20f24986013e936fe4182b3504bb7e" } } From d87f243dfc843e39d3cf08e4d9a2d598ec3b707d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 15 Jan 2026 10:25:59 -0500 Subject: [PATCH 2106/2162] fix(@angular/build): prevent incorrect catch binding removal in downleveled for-await When `async-await` is disabled (e.g., in Zone.js applications) and the build target is ES2019 or higher, esbuild may incorrectly remove the catch binding of a downleveled `for await...of` loop during minification. This change explicitly disables the `optional-catch-binding` feature in esbuild when `async-await` support is disabled, forcing esbuild to retain the catch binding and avoiding the minification bug. A new integration test has been added to verify that the catch binding is preserved in the optimized output. --- .../tests/behavior/esbuild-for-await_spec.ts | 75 +++++++++++++++++++ .../angular/build/src/tools/esbuild/utils.ts | 3 + 2 files changed, 78 insertions(+) create mode 100644 packages/angular/build/src/builders/application/tests/behavior/esbuild-for-await_spec.ts diff --git a/packages/angular/build/src/builders/application/tests/behavior/esbuild-for-await_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/esbuild-for-await_spec.ts new file mode 100644 index 000000000000..020e51a7f33f --- /dev/null +++ b/packages/angular/build/src/builders/application/tests/behavior/esbuild-for-await_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 { buildApplication } from '../../index'; +import { APPLICATION_BUILDER_INFO, BASE_OPTIONS, describeBuilder } from '../setup'; + +describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { + describe('Behavior: "Esbuild for-await"', () => { + it('should properly downlevel for-await loops with optimization enabled', async () => { + // Setup a for-await loop that triggers the esbuild minification bug when async/await is downleveled. + await harness.writeFile( + 'src/main.ts', + ` + async function test() { + const someAsyncIterable = { + [Symbol.asyncIterator]() { + return { + next() { + return Promise.resolve({ done: true, value: undefined }); + } + }; + } + }; + for await(const item of someAsyncIterable) { + console.log(item); + } + } + test(); + `, + ); + + // Ensure target is ES2022 so that optional catch binding is supported natively. + await harness.modifyFile('src/tsconfig.app.json', (content) => { + const tsConfig = JSON.parse(content); + tsConfig.compilerOptions.target = 'ES2022'; + return JSON.stringify(tsConfig); + }); + + harness.useTarget('build', { + ...BASE_OPTIONS, + optimization: true, + polyfills: ['zone.js'], + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBe(true); + + // We expect the output to contain a catch block that captures the error in a variable, + // even if that variable is mangled. + // The pattern for the downleveled for-await catch block is roughly: + // } catch (temp) { error = [temp]; } + // + // With the bug, esbuild (when minifying) would optimize away the catch binding if it thought it was unused, + // resulting in: } catch { ... } which breaks the logic requiring the error object. + // + // The regex matches: + // catch \s* -> catch keyword and whitespace + // \( [a-zA-Z_$][\w$]* \) -> (variable) + // \s* { \s* -> { and whitespace + // [a-zA-Z_$][\w$]* -> error array variable + // \s* = \s* -> assignment + // \[ [a-zA-Z_$][\w$]* \] -> [variable] + harness + .expectFile('dist/browser/main.js') + .content.toMatch( + /catch\s*\([a-zA-Z_$][\w$]*\)\s*\{\s*[a-zA-Z_$][\w$]*\s*=\s*\[[a-zA-Z_$][\w$]*\]/, + ); + }); + }); +}); diff --git a/packages/angular/build/src/tools/esbuild/utils.ts b/packages/angular/build/src/tools/esbuild/utils.ts index 6b8e44def11d..2730dafae97c 100644 --- a/packages/angular/build/src/tools/esbuild/utils.ts +++ b/packages/angular/build/src/tools/esbuild/utils.ts @@ -204,6 +204,9 @@ export function getFeatureSupport( // Native async/await is not supported with Zone.js. Disabling support here will cause // esbuild to downlevel async/await, async generators, and for await...of to a Zone.js supported form. 'async-await': nativeAsyncAwait, + // Workaround for an esbuild minification bug when async-await is disabled and the target is es2019+. + // The catch binding for downleveled for-await will be incorrectly removed in this specific situation. + ...(!nativeAsyncAwait ? { 'optional-catch-binding': false } : {}), // V8 currently has a performance defect involving object spread operations that can cause signficant // degradation in runtime performance. By not supporting the language feature here, a downlevel form // will be used instead which provides a workaround for the performance issue. From 284c47d9d99e54858e92e9fd6cf0afb37660b641 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:00:47 -0500 Subject: [PATCH 2107/2162] refactor(@angular/cli): optimize package manager version detection This commit introduces a "hot cache" mechanism for the package manager version. When the package manager factory determines the version (e.g., to distinguish between Yarn and Yarn Classic), it now passes that discovered version to the `PackageManager` instance. The `PackageManager` class has been updated to: 1. Accept an optional `version` in its constructor options. 2. Cache the version internally after the first fetch. 3. Use the cached/injected version in `getVersion()` to avoid redundant shell commands. This improves startup performance by eliminating unnecessary child process spawning when the version is already known. Additionally, an assertion has been added to ensure that the version command for `yarn` and `yarn-classic` remains consistent, as the detection logic relies on this. --- .../cli/src/package-managers/factory.ts | 84 +++++++++++-------- .../src/package-managers/package-manager.ts | 16 +++- .../package-managers/package-manager_spec.ts | 54 ++++++++++++ 3 files changed, 118 insertions(+), 36 deletions(-) create mode 100644 packages/angular/cli/src/package-managers/package-manager_spec.ts diff --git a/packages/angular/cli/src/package-managers/factory.ts b/packages/angular/cli/src/package-managers/factory.ts index 1cd3d2462edc..790a48140285 100644 --- a/packages/angular/cli/src/package-managers/factory.ts +++ b/packages/angular/cli/src/package-managers/factory.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ +import assert from 'node:assert/strict'; import { major } from 'semver'; import { discover } from './discovery'; import { Host, NodeJS_HOST } from './host'; @@ -19,26 +20,27 @@ import { PackageManagerName, SUPPORTED_PACKAGE_MANAGERS } from './package-manage const DEFAULT_PACKAGE_MANAGER: PackageManagerName = 'npm'; /** - * Gets the version of yarn installed on the system. + * Gets the version of the package manager. * @param host A `Host` instance for running commands. * @param cwd The absolute path to the working directory. + * @param name The name of the package manager. * @param logger An optional logger instance. - * @returns A promise that resolves to the yarn version string, or null if yarn is not installed. + * @returns A promise that resolves to the version string. */ -async function getYarnVersion(host: Host, cwd: string, logger?: Logger): Promise { - logger?.debug(`Getting yarn version...`); - - try { - const { stdout } = await host.runCommand('yarn', ['--version'], { cwd }); - const version = stdout.trim(); - logger?.debug(`Yarn version is '${version}'.`); +async function getPackageManagerVersion( + host: Host, + cwd: string, + name: PackageManagerName, + logger?: Logger, +): Promise { + const descriptor = SUPPORTED_PACKAGE_MANAGERS[name]; + logger?.debug(`Getting ${name} version...`); - return version; - } catch (e) { - logger?.debug('Failed to get yarn version.'); + const { stdout } = await host.runCommand(descriptor.binary, descriptor.versionCommand, { cwd }); + const version = stdout.trim(); + logger?.debug(`${name} version is '${version}'.`); - return null; - } + return version; } /** @@ -60,7 +62,11 @@ async function determinePackageManager( configured?: PackageManagerName, logger?: Logger, dryRun?: boolean, -): Promise<{ name: PackageManagerName; source: 'configured' | 'discovered' | 'default' }> { +): Promise<{ + name: PackageManagerName; + source: 'configured' | 'discovered' | 'default'; + version?: string; +}> { let name: PackageManagerName; let source: 'configured' | 'discovered' | 'default'; @@ -83,17 +89,28 @@ async function determinePackageManager( } } + let version: string | undefined; if (name === 'yarn' && !dryRun) { - const version = await getYarnVersion(host, cwd, logger); - if (version && major(version) < 2) { - name = 'yarn-classic'; - logger?.debug(`Detected yarn classic. Using 'yarn-classic'.`); + assert.deepStrictEqual( + SUPPORTED_PACKAGE_MANAGERS.yarn.versionCommand, + SUPPORTED_PACKAGE_MANAGERS['yarn-classic'].versionCommand, + 'Yarn and Yarn Classic version commands must match for detection logic to be valid.', + ); + + try { + version = await getPackageManagerVersion(host, cwd, name, logger); + if (version && major(version) < 2) { + name = 'yarn-classic'; + logger?.debug(`Detected yarn classic. Using 'yarn-classic'.`); + } + } catch { + logger?.debug('Failed to get yarn version.'); } } else if (name === 'yarn') { logger?.debug('Skipping yarn version check due to dry run. Assuming modern yarn.'); } - return { name, source }; + return { name, source, version }; } /** @@ -115,29 +132,19 @@ export async function createPackageManager(options: { const { cwd, configuredPackageManager, logger, dryRun, tempDirectory } = options; const host = NodeJS_HOST; - const { name, source } = await determinePackageManager( - host, - cwd, - configuredPackageManager, - logger, - dryRun, - ); + const result = await determinePackageManager(host, cwd, configuredPackageManager, logger, dryRun); + const { name, source } = result; + let { version } = result; const descriptor = SUPPORTED_PACKAGE_MANAGERS[name]; if (!descriptor) { throw new Error(`Unsupported package manager: "${name}"`); } - const packageManager = new PackageManager(host, cwd, descriptor, { - dryRun, - logger, - tempDirectory, - }); - // Do not verify if the package manager is installed during a dry run. - if (!dryRun) { + if (!dryRun && !version) { try { - await packageManager.getVersion(); + version = await getPackageManagerVersion(host, cwd, name, logger); } catch { if (source === 'default') { throw new Error( @@ -153,6 +160,13 @@ export async function createPackageManager(options: { } } + const packageManager = new PackageManager(host, cwd, descriptor, { + dryRun, + logger, + tempDirectory, + version, + }); + logger?.debug(`Successfully created PackageManager for '${name}'.`); return packageManager; diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 1faedc5b155e..45c9639d954b 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -65,6 +65,13 @@ export interface PackageManagerOptions { * If not specified, the system's temporary directory will be used. */ tempDirectory?: string; + + /** + * The version of the package manager. + * If provided, the `getVersion` method will return this version + * instead of running the version command. + */ + version?: string; } /** @@ -79,6 +86,7 @@ export class PackageManager { readonly #manifestCache = new Map(); readonly #metadataCache = new Map(); #dependencyCache: Map | null = null; + #version: string | undefined; /** * Creates a new `PackageManager` instance. @@ -96,6 +104,7 @@ export class PackageManager { if (this.options.dryRun && !this.options.logger) { throw new Error('A logger must be provided when dryRun is enabled.'); } + this.#version = options.version; } /** @@ -334,9 +343,14 @@ export class PackageManager { * @returns A promise that resolves to the trimmed version string. */ async getVersion(): Promise { + if (this.#version) { + return this.#version; + } + const { stdout } = await this.#run(this.descriptor.versionCommand); + this.#version = stdout.trim(); - return stdout.trim(); + return this.#version; } /** diff --git a/packages/angular/cli/src/package-managers/package-manager_spec.ts b/packages/angular/cli/src/package-managers/package-manager_spec.ts new file mode 100644 index 000000000000..2482349b323d --- /dev/null +++ b/packages/angular/cli/src/package-managers/package-manager_spec.ts @@ -0,0 +1,54 @@ +/** + * @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 { Host } from './host'; +import { PackageManager } from './package-manager'; +import { SUPPORTED_PACKAGE_MANAGERS } from './package-manager-descriptor'; +import { MockHost } from './testing/mock-host'; + +describe('PackageManager', () => { + let host: Host; + let runCommandSpy: jasmine.Spy; + const descriptor = SUPPORTED_PACKAGE_MANAGERS['npm']; + + beforeEach(() => { + host = new MockHost(); + runCommandSpy = spyOn(host, 'runCommand').and.resolveTo({ stdout: '1.2.3', stderr: '' }); + host.runCommand = runCommandSpy; + }); + + describe('getVersion', () => { + it('should fetch the version from the package manager if not cached', async () => { + const pm = new PackageManager(host, '/tmp', descriptor); + const version = await pm.getVersion(); + + expect(version).toBe('1.2.3'); + expect(runCommandSpy).toHaveBeenCalledWith( + descriptor.binary, + descriptor.versionCommand, + jasmine.objectContaining({ cwd: '/tmp' }), + ); + }); + + it('should cache the version after the first fetch', async () => { + const pm = new PackageManager(host, '/tmp', descriptor); + await pm.getVersion(); + await pm.getVersion(); + + expect(runCommandSpy).toHaveBeenCalledTimes(1); + }); + + it('should use the version provided in the constructor', async () => { + const pm = new PackageManager(host, '/tmp', descriptor, { version: '4.5.6' }); + const version = await pm.getVersion(); + + expect(version).toBe('4.5.6'); + expect(runCommandSpy).not.toHaveBeenCalled(); + }); + }); +}); From b3de0de8cfeba2c1034c4ad9ef5dc5c292333a7d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:24:11 -0500 Subject: [PATCH 2108/2162] fix(@angular/build): allow application assets in workspace root This commit refactors `normalizeAssetPatterns` to: 1. Allow asset paths located in the workspace root or project root, relaxing the previous strict requirement of being within the source root. 2. Determine the output path by calculating the relative path from the most specific root (source, project, or workspace) to the asset input. 3. Remove the unused `MissingAssetSourceRootException` class in favor of a standard `Error` with a clear message. This enables users to include workspace-level assets (like `LICENSE` or `README.md`) using the shorthand string syntax without errors. --- .../application/tests/options/assets_spec.ts | 23 ++++++++++++++----- .../src/utils/normalize-asset-patterns.ts | 22 ++++++++++-------- .../tests/options/assets_spec.ts | 15 ------------ 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/packages/angular/build/src/builders/application/tests/options/assets_spec.ts b/packages/angular/build/src/builders/application/tests/options/assets_spec.ts index 96ae3c0d943e..573711afe3b2 100644 --- a/packages/angular/build/src/builders/application/tests/options/assets_spec.ts +++ b/packages/angular/build/src/builders/application/tests/options/assets_spec.ts @@ -107,19 +107,19 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/test.svg').toNotExist(); }); - it('fail if asset path is not within project source root', async () => { - await harness.writeFile('test.svg', ''); + it('copies an asset from project root (outside source root)', async () => { + await harness.writeFile('extra.txt', 'extra'); harness.useTarget('build', { ...BASE_OPTIONS, - assets: ['test.svg'], + assets: ['extra.txt'], }); - const { error } = await harness.executeOnce({ outputLogsOnException: false }); + const { result } = await harness.executeOnce(); - expect(error?.message).toMatch('path must start with the project source root'); + expect(result?.success).toBe(true); - harness.expectFile('dist/browser/test.svg').toNotExist(); + harness.expectFile('dist/browser/extra.txt').content.toBe('extra'); }); }); @@ -359,6 +359,17 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { harness.expectFile('dist/browser/subdirectory/test.svg').content.toBe(''); }); + it('fails if asset path is outside workspace root', async () => { + harness.useTarget('build', { + ...BASE_OPTIONS, + assets: ['../outside.txt'], + }); + + const { error } = await harness.executeOnce({ outputLogsOnException: false }); + + expect(error?.message).toMatch('asset path must be within the workspace root'); + }); + it('fails if output option is not within project output path', async () => { await harness.writeFile('test.svg', ''); diff --git a/packages/angular/build/src/utils/normalize-asset-patterns.ts b/packages/angular/build/src/utils/normalize-asset-patterns.ts index 8a8b2c2cbf1f..929e88fff506 100644 --- a/packages/angular/build/src/utils/normalize-asset-patterns.ts +++ b/packages/angular/build/src/utils/normalize-asset-patterns.ts @@ -11,12 +11,6 @@ import { statSync } from 'node:fs'; import * as path from 'node:path'; import { AssetPattern, AssetPatternClass } from '../builders/application/schema'; -export class MissingAssetSourceRootException extends Error { - constructor(path: string) { - super(`The ${path} asset path must start with the project source root.`); - } -} - export function normalizeAssetPatterns( assetPatterns: AssetPattern[], workspaceRoot: string, @@ -30,16 +24,24 @@ export function normalizeAssetPatterns( // When sourceRoot is not available, we default to ${projectRoot}/src. const sourceRoot = projectSourceRoot || path.join(projectRoot, 'src'); const resolvedSourceRoot = path.resolve(workspaceRoot, sourceRoot); + const resolvedProjectRoot = path.resolve(workspaceRoot, projectRoot); return assetPatterns.map((assetPattern) => { // Normalize string asset patterns to objects. if (typeof assetPattern === 'string') { const assetPath = path.normalize(assetPattern); const resolvedAssetPath = path.resolve(workspaceRoot, assetPath); + let root: string; // Check if the string asset is within sourceRoot. - if (!resolvedAssetPath.startsWith(resolvedSourceRoot)) { - throw new MissingAssetSourceRootException(assetPattern); + if (resolvedAssetPath.startsWith(resolvedSourceRoot)) { + root = resolvedSourceRoot; + } else if (resolvedAssetPath.startsWith(resolvedProjectRoot)) { + root = resolvedProjectRoot; + } else if (resolvedAssetPath.startsWith(workspaceRoot)) { + root = workspaceRoot; + } else { + throw new Error(`The ${assetPattern} asset path must be within the workspace root.`); } let glob: string, input: string; @@ -63,8 +65,8 @@ export function normalizeAssetPatterns( input = path.dirname(assetPath); } - // Output directory for both is the relative path from source root to input. - const output = path.relative(resolvedSourceRoot, path.resolve(workspaceRoot, input)); + // Output directory for both is the relative path from the root to input. + const output = path.relative(root, path.resolve(workspaceRoot, input)); assetPattern = { glob, input, output }; } else { diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/tests/options/assets_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/tests/options/assets_spec.ts index 740612d19478..1493b55172a8 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/tests/options/assets_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/tests/options/assets_spec.ts @@ -106,21 +106,6 @@ describeBuilder(buildEsbuildBrowser, BROWSER_BUILDER_INFO, (harness) => { harness.expectFile('dist/test.svg').toNotExist(); }); - - it('fail if asset path is not within project source root', async () => { - await harness.writeFile('test.svg', ''); - - harness.useTarget('build', { - ...BASE_OPTIONS, - assets: ['test.svg'], - }); - - const { error } = await harness.executeOnce({ outputLogsOnException: false }); - - expect(error?.message).toMatch('path must start with the project source root'); - - harness.expectFile('dist/test.svg').toNotExist(); - }); }); describe('longhand syntax', () => { From 88773baa58b26dee1fae8823afc2c907d25ec74a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 16 Jan 2026 17:40:10 +0000 Subject: [PATCH 2109/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- tests/e2e/ng-snapshot/package.json | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index d8996ce08e42..edc51663cc5f 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#c21ce1049f01121881bee13994d8453b029fa678", - "@angular/cdk": "github:angular/cdk-builds#0bc0bdf526d3c0026dd97636eb04cd86c0d03d4c", - "@angular/common": "github:angular/common-builds#9c0b6821c771e0bd09db7e004cba8858e7eb25cc", - "@angular/compiler": "github:angular/compiler-builds#f11a6537b5c4633275fdc2528e5172be62e4c033", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#d2f253eeb40820890452943327b179551235a18c", - "@angular/core": "github:angular/core-builds#d2bd252dbb18d639344c23a2f0409554bc792028", - "@angular/forms": "github:angular/forms-builds#27d1b2efb9c395c51b47e85696a0fbff9401821b", - "@angular/language-service": "github:angular/language-service-builds#3ef8e411e024c333f056b17925c50a65ffde82a9", - "@angular/localize": "github:angular/localize-builds#4707cbd56ba347274f86988b57af359b4d5eb959", - "@angular/material": "github:angular/material-builds#23a3236d5194f1ccda346d55ef840d965a2bbf53", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#2db8f246c42e2b115d6bf0f4b02e807d0631250c", - "@angular/platform-browser": "github:angular/platform-browser-builds#beeb1f4a91e4f137be5e5e094e80b3a9816ba798", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#eb215cb532db7762fb02e0cd4f63132369af0eeb", - "@angular/platform-server": "github:angular/platform-server-builds#c35f3fcc29be3c4cdd1f95b36b3fc0091a12246c", - "@angular/router": "github:angular/router-builds#e1efd1ac6e3d7ecdf65cf85c1439048c60612c49", - "@angular/service-worker": "github:angular/service-worker-builds#0dc1f309ff20f24986013e936fe4182b3504bb7e" + "@angular/animations": "github:angular/animations-builds#d2a30de236aeebbdb9ce78778b6ee81b9c29eebb", + "@angular/cdk": "github:angular/cdk-builds#28da0c3a2cf0c413ce9b7383bb2fa9e9df150c7c", + "@angular/common": "github:angular/common-builds#8e9f745dc42c71fc29a2c66e79388000c9773d84", + "@angular/compiler": "github:angular/compiler-builds#9a72388e1ee7c40d31b4e650e48b2abc517bebdf", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#f88f9c5239fbfab6c69d024077c2c484f47c0250", + "@angular/core": "github:angular/core-builds#90d5a21bcbc229d4e2737e3fc965bc501dd0a390", + "@angular/forms": "github:angular/forms-builds#81d26c89493225e2351042424a47ae2a4a684beb", + "@angular/language-service": "github:angular/language-service-builds#b163a1df764ce18ee9c1c1ba9be21c882943a663", + "@angular/localize": "github:angular/localize-builds#4599a3b5437d34f64e2f9d83ae613e0d4b13a1a5", + "@angular/material": "github:angular/material-builds#4adacaf2bb85f0103c1183d1e61183be18f97a2a", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#92df23fded75491bef0210345443dc1185c707fa", + "@angular/platform-browser": "github:angular/platform-browser-builds#0cb04dcc9eaf1f424b3f7feda11d6d19e9c03860", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#705617d0b52d9d6b568c1cd6c00b19d061c06c78", + "@angular/platform-server": "github:angular/platform-server-builds#f94c5fc16296790c15a175bc155a37833efd4d68", + "@angular/router": "github:angular/router-builds#d809da4466196dd8110fb4a02980cb3b7d621c80", + "@angular/service-worker": "github:angular/service-worker-builds#ed31934278cfd268bc044d5d222ad99db5a65160" } } From 9030b2fecd7bf6cdfdd2b83627bd7f15276f3d05 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 Jan 2026 05:12:01 +0000 Subject: [PATCH 2110/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 882 +++++++++++++++++++++++++------------------------ 1 file changed, 448 insertions(+), 434 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 15b777c91dad..de1aa05424d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -114,7 +114,7 @@ importers: version: 4.1.1 '@types/jasmine': specifier: ~5.1.0 - version: 5.1.14 + version: 5.1.15 '@types/jasmine-reporters': specifier: ^2 version: 2.5.3 @@ -132,7 +132,7 @@ importers: version: 4.17.23 '@types/node': specifier: ^22.12.0 - version: 22.19.5 + version: 22.19.7 '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 @@ -246,7 +246,7 @@ importers: version: 0.30.21 prettier: specifier: ^3.0.0 - version: 3.7.4 + version: 3.8.0 protractor: specifier: ~7.0.0 version: 7.0.0 @@ -267,7 +267,7 @@ importers: version: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.5)(rollup@4.55.1) + version: 0.5.4(@types/node@22.19.7)(rollup@4.55.1) semver: specifier: 7.7.3 version: 7.7.3 @@ -276,7 +276,7 @@ importers: version: 0.5.21 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@22.19.5)(typescript@5.9.3) + version: 10.9.2(@types/node@22.19.7)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 @@ -869,8 +869,8 @@ importers: packages: - '@acemir/cssom@0.9.30': - resolution: {integrity: sha512-9CnlMCI0LmCIq0olalQqdWrJHPzm0/tw3gzOA9zJSgvFX7Xau3D24mAGa4BtwxwY69nsuJW6kQqqCzf/mEcQgg==} + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} '@actions/core@2.0.2': resolution: {integrity: sha512-Ast1V7yHbGAhplAsuVlnb/5J8Mtr/Zl6byPPL+Qjq3lmfIgWF1ak1iYfF/079cRERiuTALTXkSuEUdZeDCfGtA==} @@ -1072,12 +1072,12 @@ packages: '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + '@babel/compat-data@7.28.6': + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} engines: {node: '>=6.9.0'} '@babel/core@7.28.5': @@ -1088,16 +1088,20 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.5': - resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1121,12 +1125,12 @@ packages: resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1135,8 +1139,8 @@ packages: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.27.1': @@ -1145,8 +1149,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1171,16 +1175,16 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.28.3': - resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1208,8 +1212,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': - resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1220,14 +1224,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + '@babel/plugin-syntax-import-assertions@7.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1262,32 +1266,32 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.5': - resolution: {integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==} + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.28.3': - resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.28.4': - resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1298,8 +1302,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + '@babel/plugin-transform-dotall-regex@7.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1310,8 +1314,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6': + resolution: {integrity: sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1322,14 +1326,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-explicit-resource-management@7.28.0': - resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + '@babel/plugin-transform-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.28.5': - resolution: {integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==} + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1352,8 +1356,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + '@babel/plugin-transform-json-strings@7.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1364,8 +1368,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.28.5': - resolution: {integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==} + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1382,8 +1386,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1412,20 +1416,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.28.4': - resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1436,14 +1440,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.28.5': - resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1454,14 +1458,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1472,14 +1476,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.28.4': - resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + '@babel/plugin-transform-regenerator@7.28.6': + resolution: {integrity: sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regexp-modifiers@7.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1502,8 +1506,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1532,8 +1536,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + '@babel/plugin-transform-unicode-property-regex@7.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1544,8 +1548,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + '@babel/plugin-transform-unicode-sets-regex@7.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1565,16 +1569,16 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} '@bazel/bazelisk@1.26.0': @@ -1865,13 +1869,13 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@exodus/bytes@1.8.0': - resolution: {integrity: sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==} + '@exodus/bytes@1.9.0': + resolution: {integrity: sha512-lagqsvnk09NKogQaN/XrtlWeUF8SRhT12odMvbTIIaVObqzwAogL6jhR4DAp0gPuKoM1AOVrKUshJpRdpMFrww==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@exodus/crypto': ^1.0.0-rc.4 + '@noble/hashes': ^1.8.0 || ^2.0.0 peerDependenciesMeta: - '@exodus/crypto': + '@noble/hashes': optional: true '@fastify/busboy@2.1.1': @@ -2149,8 +2153,8 @@ packages: '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} - '@hono/node-server@1.19.8': - resolution: {integrity: sha512-0/g2lIOPzX8f3vzW1ggQgvG5mjtFBDBHFAzI5SFAi2DzSqS9luJwqg9T6O/gKYLi+inS7eNxBeIFkkghIPvrMA==} + '@hono/node-server@1.19.9': + resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 @@ -2866,20 +2870,20 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/context-async-hooks@2.3.0': - resolution: {integrity: sha512-hGcsT0qDP7Il1L+qT3JFpiGl1dCjF794Bb4yCRCYdr7XC0NwHtOF3ngF86Gk6TUnsakbyQsDQ0E/S4CU0F4d4g==} + '@opentelemetry/context-async-hooks@2.4.0': + resolution: {integrity: sha512-jn0phJ+hU7ZuvaoZE/8/Euw3gvHJrn2yi+kXrymwObEPVPjtwCmkvXDRQCWli+fCTTF/aSOtXaLr7CLIvv3LQg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.3.0': - resolution: {integrity: sha512-PcmxJQzs31cfD0R2dE91YGFcLxOSN4Bxz7gez5UwSUjCai8BwH/GI5HchfVshHkWdTkUs0qcaPJgVHKXUp7I3A==} + '@opentelemetry/core@2.4.0': + resolution: {integrity: sha512-KtcyFHssTn5ZgDu6SXmUznS80OFs/wN7y6MyFRRcKU6TOw8hNcGxKvt8hsdaLJfhzUszNSjURetq5Qpkad14Gw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.38.0': - resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} + '@opentelemetry/semantic-conventions@1.39.0': + resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==} engines: {node: '>=14'} '@oxc-project/types@0.107.0': @@ -3030,8 +3034,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@puppeteer/browsers@2.11.0': - resolution: {integrity: sha512-n6oQX6mYkG8TRPuPXmbPidkUbsSRalhmaaVAQxvH1IkQy63cwsH+kOjB3e4cpCDHg0aSvsiX9bQ4s2VB6mGWUQ==} + '@puppeteer/browsers@2.11.1': + resolution: {integrity: sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==} engines: {node: '>=18'} hasBin: true @@ -3531,9 +3535,6 @@ packages: '@types/jasmine-reporters@2.5.3': resolution: {integrity: sha512-8aojAUdgdiD9VQbllBJb/9gny3lOjz9T5gyMcbYlKe6npwGVsarbr8v2JYSFJSZSuFYXcPVzFG2lLX3ib0j/DA==} - '@types/jasmine@5.1.14': - resolution: {integrity: sha512-16bJdpgUPNKXuaelVxuLZUeDd02+PnF0aQd5HY4xLWoUOMoRE+CyNkRpjRMIcPBCR1dscSb52pmFNILAN1uzkw==} - '@types/jasmine@5.1.15': resolution: {integrity: sha512-ZAC8KjmV2MJxbNTrwXFN+HKeajpXQZp6KpPiR6Aa4XvaEnjP6qh23lL/Rqb7AYzlp3h/rcwDrQ7Gg7q28cQTQg==} @@ -3576,8 +3577,8 @@ packages: '@types/node-forge@1.3.14': resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.19.5': - resolution: {integrity: sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==} + '@types/node@22.19.7': + resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} '@types/node@24.10.8': resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} @@ -3726,6 +3727,10 @@ packages: resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.53.0': + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.52.0': resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4316,8 +4321,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.9.14: - resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} + baseline-browser-mapping@2.9.15: + resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} hasBin: true basic-ftp@5.1.0: @@ -4488,8 +4493,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001764: - resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} + caniuse-lite@1.0.30001765: + resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4565,8 +4570,8 @@ packages: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} - cli-spinners@3.3.0: - resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} cli-truncate@5.1.1: @@ -6766,8 +6771,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.51.1: - resolution: {integrity: sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==} + memfs@4.54.0: + resolution: {integrity: sha512-wiJ9YYUj2bVcpdJgIv6y1KrStknSdNhfM4+4+ttt0cHHMxVLZ3aOBoER8krt9lGY5HkR2ustUXiihhNPeNxXaQ==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7410,8 +7415,8 @@ packages: pino-abstract-transport@2.0.0: resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} pino@9.14.0: resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} @@ -7504,8 +7509,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -7589,8 +7594,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.34.0: - resolution: {integrity: sha512-24evawO+mUGW4mvS2a2ivwLdX3gk8zRLZr9HP+7+VT2vBQnm0oh9jJEZmUE3ePJhRkYlZ93i7OMpdcoi2qNCLg==} + puppeteer-core@24.35.0: + resolution: {integrity: sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8341,9 +8346,10 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.5.2: - resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + tar@7.5.3: + resolution: {integrity: sha512-ENg5JUHUm2rDD7IvKNFGzyElLXNjachNLp6RaGf4+JOgxXHkqA+gq81ZAMCUmtMtqBsoU62lcp6S27g1LCYGGQ==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me teeny-request@10.1.0: resolution: {integrity: sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==} @@ -8951,8 +8957,8 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@1.3.1: @@ -9183,7 +9189,7 @@ packages: snapshots: - '@acemir/cssom@0.9.30': {} + '@acemir/cssom@0.9.31': {} '@actions/core@2.0.2': dependencies: @@ -9478,25 +9484,25 @@ snapshots: '@asamuzakjp/nwsapi@2.3.9': {} - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.28.6': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.5': {} + '@babel/compat-data@7.28.6': {} '@babel/core@7.28.5': dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@10.2.2) @@ -9508,33 +9514,41 @@ snapshots: '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/generator@7.28.6': + dependencies: + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.28.6 '@babel/helper-validator-option': 7.27.1 browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9549,8 +9563,8 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@10.2.2) lodash.debounce: 4.0.8 resolve: 1.22.11 @@ -9561,61 +9575,61 @@ snapshots: '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.5 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/helper-string-parser@7.27.1': {} @@ -9623,55 +9637,55 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.28.3': + '@babel/helper-wrap-function@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.4': + '@babel/helpers@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 - '@babel/parser@7.28.5': + '@babel/parser@7.28.6': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color @@ -9679,41 +9693,41 @@ snapshots: dependencies: '@babel/core': 7.28.5 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color @@ -9721,99 +9735,99 @@ snapshots: '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color @@ -9821,63 +9835,63 @@ snapshots: '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color @@ -9885,51 +9899,51 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color @@ -9937,51 +9951,51 @@ snapshots: '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': + '@babel/plugin-transform-regenerator@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) @@ -9992,12 +10006,12 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color @@ -10005,108 +10019,108 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@babel/preset-env@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.28.6 '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.28.5) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.5) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.28.5) '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.5) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) @@ -10119,31 +10133,31 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.28.6 esutils: 2.0.3 '@babel/runtime@7.28.4': {} - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 - '@babel/traverse@7.28.5': + '@babel/traverse@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': + '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -10363,7 +10377,7 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@exodus/bytes@1.8.0': {} + '@exodus/bytes@1.9.0': {} '@fastify/busboy@2.1.1': {} @@ -10719,9 +10733,9 @@ snapshots: '@google-cloud/promisify': 5.0.0 '@grpc/proto-loader': 0.7.15 '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.3.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/context-async-hooks': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 big.js: 7.0.1 @@ -10765,7 +10779,7 @@ snapshots: '@grpc/grpc-js@1.9.15': dependencies: '@grpc/proto-loader': 0.7.15 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@grpc/proto-loader@0.7.15': dependencies: @@ -10783,7 +10797,7 @@ snapshots: '@hapi/bourne@3.0.0': {} - '@hono/node-server@1.19.8': {} + '@hono/node-server@1.19.9': {} '@humanfs/core@0.19.1': {} @@ -11161,7 +11175,7 @@ snapshots: '@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)': dependencies: - '@hono/node-server': 1.19.8 + '@hono/node-server': 1.19.9 ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 @@ -11479,16 +11493,16 @@ snapshots: '@opentelemetry/api@1.9.0': {} - '@opentelemetry/context-async-hooks@2.3.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@2.3.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.39.0 - '@opentelemetry/semantic-conventions@1.38.0': {} + '@opentelemetry/semantic-conventions@1.39.0': {} '@oxc-project/types@0.107.0': {} @@ -11601,7 +11615,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@puppeteer/browsers@2.11.0': + '@puppeteer/browsers@2.11.1': dependencies: debug: 4.4.3(supports-color@10.2.2) extract-zip: 2.0.1 @@ -11841,7 +11855,7 @@ snapshots: '@stylistic/eslint-plugin@5.7.0(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 5.0.0 espree: 11.0.0 @@ -11878,46 +11892,46 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/babel__code-frame@7.27.0': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@types/big.js@6.2.2': {} '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/browser-sync@2.29.1': dependencies: '@types/micromatch': 2.3.35 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/serve-static': 2.2.0 chokidar: 3.6.0 @@ -11928,11 +11942,11 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/co-body@6.1.3': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/qs': 6.14.0 '@types/command-line-args@5.2.3': {} @@ -11940,11 +11954,11 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.8 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/connect@3.4.38': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/content-disposition@0.5.9': {} @@ -11955,11 +11969,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.6 '@types/keygrip': 1.0.6 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/cors@2.8.19': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/debounce@1.2.4': {} @@ -11967,7 +11981,7 @@ snapshots: '@types/duplexify@3.6.5': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/ejs@3.1.5': {} @@ -11987,14 +12001,14 @@ snapshots: '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -12016,11 +12030,11 @@ snapshots: '@types/git-raw-commits@5.0.1': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/http-assert@1.5.6': {} @@ -12028,7 +12042,7 @@ snapshots: '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/ini@4.1.1': {} @@ -12044,9 +12058,7 @@ snapshots: '@types/jasmine-reporters@2.5.3': dependencies: - '@types/jasmine': 5.1.14 - - '@types/jasmine@5.1.14': {} + '@types/jasmine': 5.1.15 '@types/jasmine@5.1.15': {} @@ -12056,7 +12068,7 @@ snapshots: '@types/karma@6.3.9': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -12076,13 +12088,13 @@ snapshots: '@types/http-errors': 2.0.5 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.9 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/less@3.0.8': {} '@types/loader-utils@3.0.0(esbuild@0.27.2)': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - '@swc/core' @@ -12100,14 +12112,14 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 form-data: 4.0.5 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 - '@types/node@22.19.5': + '@types/node@22.19.7': dependencies: undici-types: 7.18.2 @@ -12119,7 +12131,7 @@ snapshots: '@types/npm-registry-fetch@8.0.9': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/node-fetch': 2.6.13 '@types/npm-package-arg': 6.1.4 '@types/npmlog': 7.0.0 @@ -12127,11 +12139,11 @@ snapshots: '@types/npmlog@7.0.0': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/pacote@11.1.8': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/npm-registry-fetch': 8.0.9 '@types/npmlog': 7.0.0 '@types/ssri': 7.1.5 @@ -12144,12 +12156,12 @@ snapshots: '@types/progress@2.0.7': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/pumpify@1.4.5': dependencies: '@types/duplexify': 3.6.5 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/q@0.0.32': {} @@ -12161,7 +12173,7 @@ snapshots: '@types/responselike@1.0.0': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/retry@0.12.2': {} @@ -12172,11 +12184,11 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/send@1.2.1': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/serve-index@1.9.4': dependencies: @@ -12185,42 +12197,42 @@ snapshots: '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/send': 0.17.6 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/ssri@7.1.5': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/stack-trace@0.0.33': {} '@types/tar-stream@3.1.4': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/watchpack@2.4.5': dependencies: '@types/graceful-fs': 4.1.9 - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/which@3.0.4': {} '@types/ws@7.4.7': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/ws@8.18.1': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 '@types/yargs-parser@21.0.3': {} @@ -12232,7 +12244,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 optional: true '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': @@ -12295,6 +12307,8 @@ snapshots: '@typescript-eslint/types@8.52.0': {} + '@typescript-eslint/types@8.53.0': {} + '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) @@ -12589,7 +12603,7 @@ snapshots: '@web/dev-server@0.4.6(bufferutil@4.1.0)': dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 '@types/command-line-args': 5.2.3 '@web/config-loader': 0.3.3 '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) @@ -12618,7 +12632,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.1.0) chrome-launcher: 0.15.2 - puppeteer-core: 24.34.0(bufferutil@4.1.0) + puppeteer-core: 24.35.0(bufferutil@4.1.0) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -12638,7 +12652,7 @@ snapshots: '@web/test-runner-core@0.13.4(bufferutil@4.1.0)': dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 '@types/babel__code-frame': 7.27.0 '@types/co-body': 6.1.3 '@types/convert-source-map': 2.0.3 @@ -13043,7 +13057,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001764 + caniuse-lite: 1.0.30001765 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -13067,7 +13081,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.28.6 '@babel/core': 7.28.5 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) semver: 6.3.1 @@ -13132,7 +13146,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.9.14: {} + baseline-browser-mapping@2.9.15: {} basic-ftp@5.1.0: {} @@ -13311,8 +13325,8 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.14 - caniuse-lite: 1.0.30001764 + baseline-browser-mapping: 2.9.15 + caniuse-lite: 1.0.30001765 electron-to-chromium: 1.5.267 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -13405,7 +13419,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001764: {} + caniuse-lite@1.0.30001765: {} caseless@0.12.0: {} @@ -13466,7 +13480,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13493,7 +13507,7 @@ snapshots: dependencies: string-width: 4.2.3 - cli-spinners@3.3.0: {} + cli-spinners@3.4.0: {} cli-truncate@5.1.1: dependencies: @@ -14037,7 +14051,7 @@ snapshots: engine.io@6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@types/cors': 2.8.19 - '@types/node': 22.19.5 + '@types/node': 22.19.7 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14140,7 +14154,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 es-define-property@1.0.1: {} @@ -14527,7 +14541,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15078,9 +15092,9 @@ snapshots: html-encoding-sniffer@6.0.0: dependencies: - '@exodus/bytes': 1.8.0 + '@exodus/bytes': 1.9.0 transitivePeerDependencies: - - '@exodus/crypto' + - '@noble/hashes' html-entities@2.6.0: {} @@ -15480,7 +15494,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 is-typedarray@1.0.0: {} @@ -15534,7 +15548,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -15544,7 +15558,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.3 @@ -15620,7 +15634,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15642,9 +15656,9 @@ snapshots: jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: - '@acemir/cssom': 0.9.30 + '@acemir/cssom': 0.9.31 '@asamuzakjp/dom-selector': 6.7.6 - '@exodus/bytes': 1.8.0 + '@exodus/bytes': 1.9.0 cssstyle: 5.3.7 data-urls: 6.0.0 decimal.js: 10.6.0 @@ -15663,7 +15677,7 @@ snapshots: ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) xml-name-validator: 5.0.0 transitivePeerDependencies: - - '@exodus/crypto' + - '@noble/hashes' - bufferutil - supports-color - utf-8-validate @@ -16077,8 +16091,8 @@ snapshots: magicast@0.5.1: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 source-map-js: 1.2.1 make-dir@2.1.0: @@ -16119,7 +16133,7 @@ snapshots: media-typer@1.1.0: {} - memfs@4.51.1: + memfs@4.54.0: dependencies: '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) @@ -16390,7 +16404,7 @@ snapshots: nopt: 9.0.0 proc-log: 6.1.0 semver: 7.7.3 - tar: 7.5.2 + tar: 7.5.3 tinyglobby: 0.2.15 which: 6.0.0 transitivePeerDependencies: @@ -16564,7 +16578,7 @@ snapshots: dependencies: chalk: 5.6.2 cli-cursor: 5.0.0 - cli-spinners: 3.3.0 + cli-spinners: 3.4.0 is-interactive: 2.0.0 is-unicode-supported: 2.1.0 log-symbols: 7.0.1 @@ -16666,7 +16680,7 @@ snapshots: promise-retry: 2.0.1 sigstore: 4.1.0 ssri: 13.0.0 - tar: 7.5.2 + tar: 7.5.3 transitivePeerDependencies: - supports-color @@ -16680,7 +16694,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -16773,7 +16787,7 @@ snapshots: dependencies: split2: 4.2.0 - pino-std-serializers@7.0.0: {} + pino-std-serializers@7.1.0: {} pino@9.14.0: dependencies: @@ -16781,7 +16795,7 @@ snapshots: atomic-sleep: 1.0.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 + pino-std-serializers: 7.1.0 process-warning: 5.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 @@ -16866,7 +16880,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.7.4: {} + prettier@3.8.0: {} proc-log@6.1.0: {} @@ -16903,7 +16917,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.19.5 + '@types/node': 22.19.7 long: 5.3.2 protractor@7.0.0: @@ -16991,9 +17005,9 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.34.0(bufferutil@4.1.0): + puppeteer-core@24.35.0(bufferutil@4.1.0): dependencies: - '@puppeteer/browsers': 2.11.0 + '@puppeteer/browsers': 2.11.1 chromium-bidi: 12.0.1(devtools-protocol@0.0.1534754) debug: 4.4.3(supports-color@10.2.2) devtools-protocol: 0.0.1534754 @@ -17313,14 +17327,14 @@ snapshots: rollup: 4.55.1 typescript: 5.9.3 optionalDependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.28.6 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.5)(rollup@4.55.1): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.55.1): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.55.1) rollup: 4.55.1 optionalDependencies: - '@types/node': 22.19.5 + '@types/node': 22.19.7 rollup@4.55.1: dependencies: @@ -18006,7 +18020,7 @@ snapshots: - bare-abort-controller - react-native-b4a - tar@7.5.2: + tar@7.5.3: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -18140,14 +18154,14 @@ snapshots: dependencies: typescript: 5.9.3 - ts-node@10.9.2(@types/node@22.19.5)(typescript@5.9.3): + ts-node@10.9.2(@types/node@22.19.7)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.19.5 + '@types/node': 22.19.7 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18556,7 +18570,7 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.104.1(esbuild@0.27.2)): dependencies: colorette: 2.0.20 - memfs: 4.51.1 + memfs: 4.54.0 mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 @@ -18694,7 +18708,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.19 + which-typed-array: 1.1.20 which-collection@1.0.2: dependencies: @@ -18705,7 +18719,7 @@ snapshots: which-module@2.0.1: {} - which-typed-array@1.1.19: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 From 7bbcb7f55e56d957ffb47b53ca68016db83b3be7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 16 Jan 2026 15:26:59 -0500 Subject: [PATCH 2111/2162] test(@angular-devkit/schematics): add explicit return types for isolated declarations This commit adds explicit return types to schematic factory functions in the test suite to satisfy the `isolatedDeclarations` requirement. --- .../tools/file-system-engine-host/extra-properties/factory.ts | 2 +- .../tools/file-system-engine-host/file-tasks/factory.ts | 2 +- .../schematics/tools/file-system-engine-host/null-factory.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts b/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts index a238c3265089..813e23f50981 100644 --- a/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts +++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/extra-properties/factory.ts @@ -10,7 +10,7 @@ import { SchematicContext, Tree } from '@angular-devkit/schematics'; export default function (options: {}) { - return (tree: Tree, context: SchematicContext) => { + return (tree: Tree, context: SchematicContext): void => { // We pass information back to the test. tree.create( (context.schematic.description as any).extra, // tslint:disable-line:no-any diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/file-tasks/factory.ts b/tests/angular_devkit/schematics/tools/file-system-engine-host/file-tasks/factory.ts index adb52eb0465e..354eba9f98cf 100644 --- a/tests/angular_devkit/schematics/tools/file-system-engine-host/file-tasks/factory.ts +++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/file-tasks/factory.ts @@ -10,7 +10,7 @@ import { SchematicContext, Tree } from '@angular-devkit/schematics'; export default function () { - return (_: Tree, context: SchematicContext) => { + return (_: Tree, context: SchematicContext): void => { context.addTask({ toConfiguration() { return { name: 'file-tasks/file-task.js' }; diff --git a/tests/angular_devkit/schematics/tools/file-system-engine-host/null-factory.ts b/tests/angular_devkit/schematics/tools/file-system-engine-host/null-factory.ts index 2a1815478552..b8c081f1a12c 100644 --- a/tests/angular_devkit/schematics/tools/file-system-engine-host/null-factory.ts +++ b/tests/angular_devkit/schematics/tools/file-system-engine-host/null-factory.ts @@ -6,5 +6,5 @@ * found in the LICENSE file at https://angular.dev/license */ export default function () { - return () => {}; + return (): void => {}; } From f9507ff8162f446be3c2d5bcec97c059e0263603 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 16 Jan 2026 15:28:17 -0500 Subject: [PATCH 2112/2162] refactor(@angular/ssr): support building with `isolatedDeclarations` This commit adds explicit return types and parameter types to the `@angular/ssr` package to satisfy the `isolatedDeclarations` compiler option. --- packages/angular/ssr/node/src/common-engine/common-engine.ts | 2 +- packages/angular/ssr/src/utils/redirect.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 079c1187696b..673156ee6b43 100644 --- a/packages/angular/ssr/node/src/common-engine/common-engine.ts +++ b/packages/angular/ssr/node/src/common-engine/common-engine.ts @@ -65,7 +65,7 @@ export class CommonEngine { private readonly inlineCriticalCssProcessor = new CommonEngineInlineCriticalCssProcessor(); private readonly pageIsSSG = new Map(); - constructor(private options?: CommonEngineOptions) { + constructor(private options?: CommonEngineOptions | undefined) { attachNodeGlobalErrorHandlers(); } diff --git a/packages/angular/ssr/src/utils/redirect.ts b/packages/angular/ssr/src/utils/redirect.ts index 7a65ff472a2a..18ca3f92b819 100644 --- a/packages/angular/ssr/src/utils/redirect.ts +++ b/packages/angular/ssr/src/utils/redirect.ts @@ -9,7 +9,7 @@ /** * An set of HTTP status codes that are considered valid for redirect responses. */ -export const VALID_REDIRECT_RESPONSE_CODES = new Set([301, 302, 303, 307, 308]); +export const VALID_REDIRECT_RESPONSE_CODES: Set = new Set([301, 302, 303, 307, 308]); /** * Checks if the given HTTP status code is a valid redirect response code. From ecc0797c644a85ab63fb9a3ebd6d1ca63b6b0e56 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 16 Jan 2026 15:20:59 -0500 Subject: [PATCH 2113/2162] refactor(@angular-devkit/schematics): support `isolatedDeclarations` for tree classes This commit refactors several Tree implementations (`DelegateTree`, `HostTree`, `NullTree`, `ScopedTree`) to support the TypeScript `isolatedDeclarations` compiler option. It uses declaration merging to define the `[TreeSymbol]` method on an interface and assigns it in the constructor to avoid TS9038 errors regarding computed property names inference. --- .../angular_devkit/schematics/index.api.md | 12 ++++++++++-- .../schematics/src/tree/delegate.ts | 17 ++++++++++++----- .../schematics/src/tree/host-tree.ts | 14 ++++++++++---- .../angular_devkit/schematics/src/tree/null.ts | 13 +++++++++++-- .../schematics/src/tree/scoped.ts | 14 ++++++++++---- 5 files changed, 53 insertions(+), 17 deletions(-) diff --git a/goldens/public-api/angular_devkit/schematics/index.api.md b/goldens/public-api/angular_devkit/schematics/index.api.md index 505bd2c39920..efb5da7c8166 100644 --- a/goldens/public-api/angular_devkit/schematics/index.api.md +++ b/goldens/public-api/angular_devkit/schematics/index.api.md @@ -202,10 +202,14 @@ export interface CreateFileAction extends ActionBase { readonly kind: 'c'; } +// @public (undocumented) +export interface DelegateTree { +} + // @public (undocumented) export class DelegateTree implements Tree_2 { // (undocumented) - [TreeSymbol]: () => this; + [TreeSymbol]: () => DelegateTree; constructor(_other: Tree_2); // (undocumented) get actions(): Action[]; @@ -516,10 +520,14 @@ export class HostSink extends SimpleSinkBase { protected _validateFileExists(p: Path): Observable; } +// @public (undocumented) +export interface HostTree { +} + // @public (undocumented) export class HostTree implements Tree_2 { // (undocumented) - [TreeSymbol]: () => this; + [TreeSymbol]: () => HostTree; constructor(_backend?: virtualFs.ReadonlyHost<{}>); // (undocumented) get actions(): Action[]; diff --git a/packages/angular_devkit/schematics/src/tree/delegate.ts b/packages/angular_devkit/schematics/src/tree/delegate.ts index 5162511f4b45..02ac3def0b73 100644 --- a/packages/angular_devkit/schematics/src/tree/delegate.ts +++ b/packages/angular_devkit/schematics/src/tree/delegate.ts @@ -18,8 +18,19 @@ import { UpdateRecorder, } from './interface'; +// Workaround for "error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations." +// When this is fixed within TypeScript, the method can be added back directly to the class. +// See: https://github.com/microsoft/TypeScript/issues/61892 +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging +export interface DelegateTree { + [TreeSymbol](): DelegateTree; +} + +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class DelegateTree implements Tree { - constructor(protected _other: Tree) {} + constructor(protected _other: Tree) { + this[TreeSymbol] = () => this; + } branch(): Tree { return this._other.branch(); @@ -83,8 +94,4 @@ export class DelegateTree implements Tree { get actions(): Action[] { return this._other.actions; } - - [TreeSymbol]() { - return this; - } } diff --git a/packages/angular_devkit/schematics/src/tree/host-tree.ts b/packages/angular_devkit/schematics/src/tree/host-tree.ts index c2437556be16..9e275052391f 100644 --- a/packages/angular_devkit/schematics/src/tree/host-tree.ts +++ b/packages/angular_devkit/schematics/src/tree/host-tree.ts @@ -98,6 +98,15 @@ export class HostDirEntry implements DirEntry { } } +// Workaround for "error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations." +// When this is fixed within TypeScript, the method can be added back directly to the class. +// See: https://github.com/microsoft/TypeScript/issues/61892 +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging +export interface HostTree { + [TreeSymbol](): HostTree; +} + +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class HostTree implements Tree { private readonly _id = --_uniqueId; private _record: virtualFs.CordHost; @@ -106,10 +115,6 @@ export class HostTree implements Tree { private _dirCache = new Map(); - [TreeSymbol](): this { - return this; - } - static isHostTree(tree: Tree): tree is HostTree { if (tree instanceof HostTree) { return true; @@ -123,6 +128,7 @@ export class HostTree implements Tree { } constructor(protected _backend: virtualFs.ReadonlyHost<{}> = new virtualFs.Empty()) { + this[TreeSymbol] = () => this; this._record = new virtualFs.CordHost(new virtualFs.SafeReadonlyHost(_backend)); this._recordSync = new virtualFs.SyncDelegateHost(this._record); } diff --git a/packages/angular_devkit/schematics/src/tree/null.ts b/packages/angular_devkit/schematics/src/tree/null.ts index 2a772a8fbceb..60f7c0bf4d2c 100644 --- a/packages/angular_devkit/schematics/src/tree/null.ts +++ b/packages/angular_devkit/schematics/src/tree/null.ts @@ -46,9 +46,18 @@ export class NullTreeDirEntry implements DirEntry { visit(): void {} } +// Workaround for "error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations." +// When this is fixed within TypeScript, the method can be added back directly to the class. +// See: https://github.com/microsoft/TypeScript/issues/61892 +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging +export interface NullTree { + [TreeSymbol](): NullTree; +} + +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class NullTree implements Tree { - [TreeSymbol](): this { - return this; + constructor() { + this[TreeSymbol] = () => this; } branch(): Tree { diff --git a/packages/angular_devkit/schematics/src/tree/scoped.ts b/packages/angular_devkit/schematics/src/tree/scoped.ts index b8cdbc09d23a..241031cf93e3 100644 --- a/packages/angular_devkit/schematics/src/tree/scoped.ts +++ b/packages/angular_devkit/schematics/src/tree/scoped.ts @@ -89,6 +89,15 @@ class ScopedDirEntry implements DirEntry { } } +// Workaround for "error TS9038: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations." +// When this is fixed within TypeScript, the method can be added back directly to the class. +// See: https://github.com/microsoft/TypeScript/issues/61892 +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging +export interface ScopedTree { + [TreeSymbol](): ScopedTree; +} + +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class ScopedTree implements Tree { readonly _root: ScopedDirEntry; @@ -96,6 +105,7 @@ export class ScopedTree implements Tree { private _base: Tree, scope: string, ) { + this[TreeSymbol] = () => this; const normalizedScope = normalize('/' + scope); this._root = new ScopedDirEntry(this._base.getDir(normalizedScope), normalizedScope); } @@ -197,10 +207,6 @@ export class ScopedTree implements Tree { return scopedActions; } - [TreeSymbol](): this { - return this; - } - private _fullPath(path: string): Path { return join(this._root.scope, normalize('/' + path)); } From b351f9067f81b6cfe81f2798e07c4abc8794aace Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Fri, 16 Jan 2026 15:14:51 -0800 Subject: [PATCH 2114/2162] fix(@angular/cli): Remove nonexistent link from MCP response --- packages/angular/cli/src/commands/mcp/tools/modernize.ts | 4 ++-- packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 6864ba2a338c..5e638db84840 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -100,8 +100,8 @@ export async function runModernization(input: ModernizeInput, host: Host) { if (transformationNames.length === 0) { return createStructuredContentOutput({ instructions: [ - 'See https://angular.dev/best-practices for Angular best practices. ' + - 'You can call this tool if you have specific transformation you want to run.', + 'Call this tool with the specific transformations you want to run. See the tool description for more info. Also call the' + + ' `get_best_practices` tool for general Angular best practices.', ], }); } diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index 82f0c70e11d3..3f9d3ee04bc1 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -43,8 +43,8 @@ describe('Modernize Tool', () => { expect(mockHost.runCommand).not.toHaveBeenCalled(); expect(structuredContent?.instructions).toEqual([ - 'See https://angular.dev/best-practices for Angular best practices. ' + - 'You can call this tool if you have specific transformation you want to run.', + 'Call this tool with the specific transformations you want to run. See the tool description for more info. Also call the' + + ' `get_best_practices` tool for general Angular best practices.', ]); }); From c236d4547d9760de9427287406e68e10e956d3e9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 Jan 2026 19:23:00 +0000 Subject: [PATCH 2115/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- tests/e2e/ng-snapshot/package.json | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index edc51663cc5f..f1d4cea7627a 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#d2a30de236aeebbdb9ce78778b6ee81b9c29eebb", - "@angular/cdk": "github:angular/cdk-builds#28da0c3a2cf0c413ce9b7383bb2fa9e9df150c7c", - "@angular/common": "github:angular/common-builds#8e9f745dc42c71fc29a2c66e79388000c9773d84", - "@angular/compiler": "github:angular/compiler-builds#9a72388e1ee7c40d31b4e650e48b2abc517bebdf", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#f88f9c5239fbfab6c69d024077c2c484f47c0250", - "@angular/core": "github:angular/core-builds#90d5a21bcbc229d4e2737e3fc965bc501dd0a390", - "@angular/forms": "github:angular/forms-builds#81d26c89493225e2351042424a47ae2a4a684beb", - "@angular/language-service": "github:angular/language-service-builds#b163a1df764ce18ee9c1c1ba9be21c882943a663", - "@angular/localize": "github:angular/localize-builds#4599a3b5437d34f64e2f9d83ae613e0d4b13a1a5", - "@angular/material": "github:angular/material-builds#4adacaf2bb85f0103c1183d1e61183be18f97a2a", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#92df23fded75491bef0210345443dc1185c707fa", - "@angular/platform-browser": "github:angular/platform-browser-builds#0cb04dcc9eaf1f424b3f7feda11d6d19e9c03860", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#705617d0b52d9d6b568c1cd6c00b19d061c06c78", - "@angular/platform-server": "github:angular/platform-server-builds#f94c5fc16296790c15a175bc155a37833efd4d68", - "@angular/router": "github:angular/router-builds#d809da4466196dd8110fb4a02980cb3b7d621c80", - "@angular/service-worker": "github:angular/service-worker-builds#ed31934278cfd268bc044d5d222ad99db5a65160" + "@angular/animations": "github:angular/animations-builds#eb242525a0f3872e50614467402ce64721f6d8d4", + "@angular/cdk": "github:angular/cdk-builds#47a531348478a04e881814e969e01946540248c6", + "@angular/common": "github:angular/common-builds#4c76b6ec657d9a4721f221e1bc75c6ed04e6cff5", + "@angular/compiler": "github:angular/compiler-builds#eca1fd8fa851fbaac9af466d274119e7c38058c9", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#a563c635154ece3c2f39fac2a53096d47bda5ae5", + "@angular/core": "github:angular/core-builds#f4b903ff3d8a242a874d7fe25591d4c2036c1722", + "@angular/forms": "github:angular/forms-builds#83d212900a042afbab9b29b9c3f65422a97efed3", + "@angular/language-service": "github:angular/language-service-builds#106763689881d56d07dcdaaec9818d1952eac48f", + "@angular/localize": "github:angular/localize-builds#46440ff59e79546dd49e0fd86c22b7e233e7d7a8", + "@angular/material": "github:angular/material-builds#4ef845545cbe266073bf287743dbff4d0a8ce115", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b9cf9a96f980dac33c0978fc2ef70dec46fa1142", + "@angular/platform-browser": "github:angular/platform-browser-builds#66d686f6de1fefb4a57519270045b1f7eeee2c97", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5440c3ad247a8c15375fd6c9cde2055f000b5eef", + "@angular/platform-server": "github:angular/platform-server-builds#374ab13592fbe5306e47e7c4a1e8720c0d872cfa", + "@angular/router": "github:angular/router-builds#3df8a4a649fb1893503df4ed34e3f523dbcab83e", + "@angular/service-worker": "github:angular/service-worker-builds#2dc66e386f5f6637cc8d5ea8dc116f45e1bfba5c" } } From 04de1f0ecb294bc4bda7de88c484f3ad3164f0cf Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:07:34 -0500 Subject: [PATCH 2116/2162] refactor(@angular/cli): remove circular dependency in command module This commit extracts shared definitions to `definitions.ts` to resolve a circular dependency between `analytics.ts` and `command-module.ts`. --- goldens/circular-deps/packages.json | 4 -- .../angular/cli/src/analytics/analytics.ts | 2 +- .../cli/src/command-builder/command-module.ts | 44 ++--------------- .../cli/src/command-builder/definitions.ts | 47 +++++++++++++++++++ 4 files changed, 52 insertions(+), 45 deletions(-) create mode 100644 packages/angular/cli/src/command-builder/definitions.ts diff --git a/goldens/circular-deps/packages.json b/goldens/circular-deps/packages.json index 20d959198b49..8b959f747f15 100644 --- a/goldens/circular-deps/packages.json +++ b/goldens/circular-deps/packages.json @@ -30,9 +30,5 @@ [ "packages/angular/build/src/tools/esbuild/utils.ts", "packages/angular/build/src/utils/server-rendering/manifest.ts" - ], - [ - "packages/angular/cli/src/analytics/analytics.ts", - "packages/angular/cli/src/command-builder/command-module.ts" ] ] diff --git a/packages/angular/cli/src/analytics/analytics.ts b/packages/angular/cli/src/analytics/analytics.ts index 752b0dfca88a..7991904842bd 100644 --- a/packages/angular/cli/src/analytics/analytics.ts +++ b/packages/angular/cli/src/analytics/analytics.ts @@ -8,7 +8,7 @@ import { json, tags } from '@angular-devkit/core'; import { randomUUID } from 'node:crypto'; -import type { CommandContext } from '../command-builder/command-module'; +import type { CommandContext } from '../command-builder/definitions'; import { colors } from '../utilities/color'; import { getWorkspace } from '../utilities/config'; import { analyticsDisabled } from '../utilities/environment-options'; diff --git a/packages/angular/cli/src/command-builder/command-module.ts b/packages/angular/cli/src/command-builder/command-module.ts index b4dadea709a4..ff30cf976b7b 100644 --- a/packages/angular/cli/src/command-builder/command-module.ts +++ b/packages/angular/cli/src/command-builder/command-module.ts @@ -9,12 +9,7 @@ import { logging, schema } from '@angular-devkit/core'; import { readFileSync } from 'node:fs'; import * as path from 'node:path'; -import type { - ArgumentsCamelCase, - Argv, - CamelCaseKey, - CommandModule as YargsCommandModule, -} from 'yargs'; +import type { ArgumentsCamelCase, Argv, CommandModule as YargsCommandModule } from 'yargs'; import { Parser as yargsParser } from 'yargs/helpers'; import { getAnalyticsUserId } from '../analytics/analytics'; import { AnalyticsCollector } from '../analytics/analytics-collector'; @@ -23,42 +18,11 @@ import { considerSettingUpAutocompletion } from '../utilities/completion'; import { AngularWorkspace } from '../utilities/config'; import { memoize } from '../utilities/memoize'; import { PackageManagerUtils } from '../utilities/package-manager'; +import { CommandContext, CommandScope, Options, OtherOptions } from './definitions'; import { Option, addSchemaOptionsToCommand } from './utilities/json-schema'; -export type Options = { [key in keyof T as CamelCaseKey]: T[key] }; - -export enum CommandScope { - /** Command can only run inside an Angular workspace. */ - In, - - /** Command can only run outside an Angular workspace. */ - Out, - - /** Command can run inside and outside an Angular workspace. */ - Both, -} - -export interface CommandContext { - currentDirectory: string; - root: string; - workspace?: AngularWorkspace; - globalConfiguration: AngularWorkspace; - logger: logging.Logger; - packageManager: PackageManagerUtils; - yargsInstance: Argv<{}>; - - /** Arguments parsed in free-from without parser configuration. */ - args: { - positional: string[]; - options: { - help: boolean; - jsonHelp: boolean; - getYargsCompletions: boolean; - } & Record; - }; -} - -export type OtherOptions = Record; +export { CommandScope }; +export type { CommandContext, Options, OtherOptions }; export interface CommandModuleImplementation extends Omit< YargsCommandModule<{}, T>, diff --git a/packages/angular/cli/src/command-builder/definitions.ts b/packages/angular/cli/src/command-builder/definitions.ts new file mode 100644 index 000000000000..8bfc8f4a4d51 --- /dev/null +++ b/packages/angular/cli/src/command-builder/definitions.ts @@ -0,0 +1,47 @@ +/** + * @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 type { Argv, CamelCaseKey } from 'yargs'; +import { AngularWorkspace } from '../utilities/config'; +import { PackageManagerUtils } from '../utilities/package-manager'; + +export enum CommandScope { + /** Command can only run inside an Angular workspace. */ + In, + + /** Command can only run outside an Angular workspace. */ + Out, + + /** Command can run inside and outside an Angular workspace. */ + Both, +} + +export interface CommandContext { + currentDirectory: string; + root: string; + workspace?: AngularWorkspace; + globalConfiguration: AngularWorkspace; + logger: logging.Logger; + packageManager: PackageManagerUtils; + yargsInstance: Argv<{}>; + + /** Arguments parsed in free-from without parser configuration. */ + args: { + positional: string[]; + options: { + help: boolean; + jsonHelp: boolean; + getYargsCompletions: boolean; + } & Record; + }; +} + +export type Options = { [key in keyof T as CamelCaseKey]: T[key] }; + +export type OtherOptions = Record; From 68bc64838719e0e34875b324c60e1111fb36bcf8 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:13:03 -0500 Subject: [PATCH 2117/2162] refactor(@angular-devkit/build-angular): remove circular dependency in dev-server builder This commit moves the `isEsbuildBased` function from `builder.ts` to `options.ts` to resolve a circular dependency. --- goldens/circular-deps/packages.json | 4 ---- .../src/builders/dev-server/builder.ts | 19 +------------------ .../src/builders/dev-server/options.ts | 18 +++++++++++++++++- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/goldens/circular-deps/packages.json b/goldens/circular-deps/packages.json index 8b959f747f15..4321adf60eaa 100644 --- a/goldens/circular-deps/packages.json +++ b/goldens/circular-deps/packages.json @@ -1,8 +1,4 @@ [ - [ - "packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts", - "packages/angular_devkit/build_angular/src/builders/dev-server/options.ts" - ], [ "packages/angular/build/src/tools/esbuild/angular/component-stylesheets.ts", "packages/angular/build/src/tools/esbuild/bundler-context.ts", diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts index d1dfc6c90e00..b3b5e797848f 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts @@ -13,7 +13,7 @@ import type { Plugin } from 'esbuild'; import type http from 'node:http'; import { EMPTY, Observable, defer, switchMap } from 'rxjs'; import type { ExecutionTransformer } from '../../transforms'; -import { normalizeOptions } from './options'; +import { isEsbuildBased, normalizeOptions } from './options'; import type { Schema as DevServerBuilderOptions } from './schema'; /** @@ -194,23 +194,6 @@ case. }; } -export function isEsbuildBased( - builderName: string, -): builderName is - | '@angular/build:application' - | '@angular-devkit/build-angular:application' - | '@angular-devkit/build-angular:browser-esbuild' { - if ( - builderName === '@angular/build:application' || - builderName === '@angular-devkit/build-angular:application' || - builderName === '@angular-devkit/build-angular:browser-esbuild' - ) { - return true; - } - - return false; -} - interface BuilderSelectorInfo { builderName: string; forceEsbuild: boolean; diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts index 6fa23123a236..6094fa7dd893 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/options.ts @@ -10,11 +10,27 @@ import { BuilderContext, targetFromTargetString } from '@angular-devkit/architec import path from 'node:path'; import { normalizeCacheOptions } from '../../utils/normalize-cache'; import { normalizeOptimization } from '../../utils/normalize-optimization'; -import { isEsbuildBased } from './builder'; import { Schema as DevServerOptions } from './schema'; export type NormalizedDevServerOptions = Awaited>; +export function isEsbuildBased( + builderName: string, +): builderName is + | '@angular/build:application' + | '@angular-devkit/build-angular:application' + | '@angular-devkit/build-angular:browser-esbuild' { + if ( + builderName === '@angular/build:application' || + builderName === '@angular-devkit/build-angular:application' || + builderName === '@angular-devkit/build-angular:browser-esbuild' + ) { + return true; + } + + return false; +} + /** * Normalize the user provided options by creating full paths for all path based options * and converting multi-form options into a single form that can be directly used From a60f8bc8176b96cdf710947d47f1d9556f47f07d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 20 Jan 2026 18:39:33 -0500 Subject: [PATCH 2118/2162] fix(@schematics/angular): remove special characters from jasmine-vitest report filename This commit removes hyphens, colons, and periods from the ISO date string used in the jasmine-vitest report filename to ensure the resulting filename is more compact and file-system-friendly. --- packages/schematics/angular/refactor/jasmine-vitest/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/schematics/angular/refactor/jasmine-vitest/index.ts b/packages/schematics/angular/refactor/jasmine-vitest/index.ts index 0e2f2e35b9e7..4ae4077a7be4 100644 --- a/packages/schematics/angular/refactor/jasmine-vitest/index.ts +++ b/packages/schematics/angular/refactor/jasmine-vitest/index.ts @@ -132,7 +132,10 @@ export default function (options: Schema): Rule { if (options.report) { const reportContent = reporter.generateReportContent(); - tree.create(`jasmine-vitest-${new Date().toISOString()}.md`, reportContent); + tree.create( + `jasmine-vitest-${new Date().toISOString().replaceAll(/[-:.]/g, '')}.md`, + reportContent, + ); } reporter.printSummary(options.verbose); From 49eaf980605c6ea73c4da9b054e70906a792e62a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 21 Jan 2026 06:08:42 +0000 Subject: [PATCH 2119/2162] build: update pnpm to v10.28.1 See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 8 ++++---- package.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index a3a6f9a410a8..93801502967a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -110,8 +110,8 @@ use_repo( pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm") pnpm.pnpm( name = "pnpm", - pnpm_version = "10.28.0", - pnpm_version_integrity = "sha512-Bd9x0UIfITmeBT/eVnzqNNRG+gLHZXFEG/wceVbpjjYwiJgtlARl/TRIDU2QoGaLwSNi+KqIAApk6D0LDke+SA==", + pnpm_version = "10.28.1", + pnpm_version_integrity = "sha512-fX27yp6ZRHt8O/enMoavqva+mSUeuUmLrvp9QGiS9nuHmts6HX5of8TMwaOIxxdfuq5WeiarRNEGe1T8sNajFg==", ) use_repo(pnpm, "pnpm") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 9668bd691039..58f36f872e9b 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -413,7 +413,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "k8N/8kN3PnK4a8S/PlynWenNzI5NCiFM0O/A1AKzf7o=", - "usagesDigest": "zrJH4GNc/gzrzKR+BoIP4cQ8jesgTMbdGpS0UOId7SM=", + "usagesDigest": "8wceBDgbfK9LnVxIRFNkc8rPtZhRQKcrR7g/1g6dl74=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -422,11 +422,11 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", "attributes": { "package": "pnpm", - "version": "10.28.0", + "version": "10.28.1", "root_package": "", "link_workspace": "", "link_packages": {}, - "integrity": "sha512-Bd9x0UIfITmeBT/eVnzqNNRG+gLHZXFEG/wceVbpjjYwiJgtlARl/TRIDU2QoGaLwSNi+KqIAApk6D0LDke+SA==", + "integrity": "sha512-fX27yp6ZRHt8O/enMoavqva+mSUeuUmLrvp9QGiS9nuHmts6HX5of8TMwaOIxxdfuq5WeiarRNEGe1T8sNajFg==", "url": "", "commit": "", "patch_args": [ @@ -449,7 +449,7 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", "attributes": { "package": "pnpm", - "version": "10.28.0", + "version": "10.28.1", "dev": false, "root_package": "", "link_packages": {}, diff --git a/package.json b/package.json index 8284dc5d6ee9..b07482308db9 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.28.0", + "packageManager": "pnpm@10.28.1", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.28.0" + "pnpm": "10.28.1" }, "author": "Angular Authors", "license": "MIT", From 87f9074231565843689412bda6d844da20186420 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 21 Jan 2026 11:12:13 -0500 Subject: [PATCH 2120/2162] docs: release notes for the v20.3.15 release --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e2e9a44a4f8..98ebbad029ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ + + +# 20.3.15 (2026-01-21) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------ | +| [795d65413](https://github.com/angular/angular-cli/commit/795d654138701a03d4d793d3299ff4f33e427a03) | fix | update pacote to v21.0.4 | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------- | +| [ffc72cbc5](https://github.com/angular/angular-cli/commit/ffc72cbc52e23cb545476b3fdefc7e5f170eb55d) | fix | update webpack to version 5.104.1 | + + + # 21.1.0 (2026-01-14) From d288d9f13bbdcd6d0d8af272f026b0f3b61ea625 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 21 Jan 2026 09:18:05 -0500 Subject: [PATCH 2121/2162] fix(@schematics/angular): correct vscode MCP configuration for new projects Aligns `.vscode/mcp.json` with documentation: https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_other-options-to-add-an-mcp-server --- .../angular/workspace/files/__dot__vscode/mcp.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template b/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template index bf4004da9477..956af8c62ce6 100644 --- a/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template +++ b/packages/schematics/angular/workspace/files/__dot__vscode/mcp.json.template @@ -1,6 +1,6 @@ { // For more information, visit: https://angular.dev/ai/mcp - "mcpServers": { + "servers": { "angular-cli": { "command": "npx", "args": ["-y", "@angular/cli", "mcp"] From cfcdbc0c0e4a976d080b1750527378e11142327b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:12:32 -0500 Subject: [PATCH 2122/2162] docs: release notes for the v21.1.1 release --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ebbad029ca..8fac01b3d6ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ + + +# 21.1.1 (2026-01-21) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------- | +| [151b69587](https://github.com/angular/angular-cli/commit/151b69587d982130bb80461e4fe143c8f047e68d) | fix | Remove nonexistent link from MCP response | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------- | +| [9da6d8fa7](https://github.com/angular/angular-cli/commit/9da6d8fa7640f321547b0308accbfcafefee5b0b) | fix | correct vscode MCP configuration for new projects | +| [361758c75](https://github.com/angular/angular-cli/commit/361758c75c08d80100ab2307578ef74e8ec288e2) | fix | remove special characters from jasmine-vitest report filename | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------- | +| [1b7e3307a](https://github.com/angular/angular-cli/commit/1b7e3307afb21224ade885e5be64f16c1de860c9) | fix | allow application assets in workspace root | +| [d1e596dc5](https://github.com/angular/angular-cli/commit/d1e596dc53b9a43063308fa775cd9ad8f60cad8b) | fix | prevent incorrect catch binding removal in downleveled for-await | +| [98ef0981a](https://github.com/angular/angular-cli/commit/98ef0981a2e3aee3c6fd2b6cf0561f6919487723) | fix | update undici to v7.18.2 | + + + # 20.3.15 (2026-01-21) From 06b79315dd70937bea18b77636a5a35b16710436 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 22 Jan 2026 08:25:27 +0000 Subject: [PATCH 2123/2162] build: update Angular framework and ng-packagr versions to 21.2.0-next.0 --- constants.bzl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/constants.bzl b/constants.bzl index e2224aa24c39..d4be4fc34b84 100644 --- a/constants.bzl +++ b/constants.bzl @@ -3,10 +3,10 @@ RELEASE_ENGINES_NODE = "^20.19.0 || ^22.12.0 || >=24.0.0" RELEASE_ENGINES_NPM = "^6.11.0 || ^7.5.6 || >=8.0.0" RELEASE_ENGINES_YARN = ">= 1.13.0" -NG_PACKAGR_VERSION = "^21.1.0-next.0" -ANGULAR_FW_VERSION = "^21.1.0-next.0" -ANGULAR_FW_PEER_DEP = "^21.0.0 || ^21.1.0-next.0" -NG_PACKAGR_PEER_DEP = "^21.0.0 || ^21.1.0-next.0" +NG_PACKAGR_VERSION = "^21.2.0-next.0" +ANGULAR_FW_VERSION = "^21.2.0-next.0" +ANGULAR_FW_PEER_DEP = "^21.0.0 || ^21.2.0-next.0" +NG_PACKAGR_PEER_DEP = "^21.0.0 || ^21.2.0-next.0" # Baseline widely-available date in `YYYY-MM-DD` format which defines Angular's # browser support. This date serves as the source of truth for the Angular CLI's From c8a58c35459ac58b57d22a31b75bd6907aee06f6 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 22 Jan 2026 06:07:53 +0000 Subject: [PATCH 2124/2162] build: update actions/cache action to v5.0.2 See associated pull request for more information. --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 4691f0693535..a91f9c7c0639 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Bazel uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 - name: Setup ESLint Caching - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 + uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: path: .eslintcache key: ${{ runner.os }}-${{ hashFiles('.eslintrc.json') }} From 835816fbff8831cb5ae0b74ea1fd39c113d7841d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:02:06 +0000 Subject: [PATCH 2125/2162] build: update all non-major dependencies See associated pull request for more information. Closes #32299 as a pr takeover --- modules/testing/builder/package.json | 4 +- package.json | 12 +- packages/angular/build/package.json | 10 +- packages/angular/cli/package.json | 4 +- packages/angular/ssr/package.json | 2 +- .../THIRD_PARTY_LICENSES.txt.golden | 24 + .../angular_devkit/build_angular/package.json | 20 +- .../angular_devkit/build_webpack/package.json | 2 +- .../angular_devkit/schematics/package.json | 2 +- pnpm-lock.yaml | 1739 +++++++++++------ 10 files changed, 1159 insertions(+), 660 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index ec43c0d86eb7..da105e4bfc69 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.16", + "@vitest/coverage-v8": "4.0.17", "jsdom": "27.4.0", "rxjs": "7.8.2", - "vitest": "4.0.16" + "vitest": "4.0.17" } } diff --git a/package.json b/package.json index b07482308db9..ea50e457c5c3 100644 --- a/package.json +++ b/package.json @@ -56,10 +56,10 @@ "@angular/platform-server": "21.1.0-rc.0", "@angular/router": "21.1.0-rc.0", "@angular/service-worker": "21.1.0-rc.0", - "@babel/core": "7.28.5", - "@bazel/bazelisk": "1.26.0", + "@babel/core": "7.28.6", + "@bazel/bazelisk": "1.28.1", "@bazel/buildifier": "8.2.1", - "@eslint/compat": "2.0.0", + "@eslint/compat": "2.0.1", "@eslint/eslintrc": "3.3.3", "@eslint/js": "9.39.2", "@rollup/plugin-alias": "^6.0.0", @@ -89,8 +89,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.52.0", - "@typescript-eslint/parser": "8.52.0", + "@typescript-eslint/eslint-plugin": "8.53.1", + "@typescript-eslint/parser": "8.53.1", "ajv": "8.17.1", "buffer": "6.0.3", "esbuild": "0.27.2", @@ -121,7 +121,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.55.1", + "rollup": "4.55.3", "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.3.0", "rollup-plugin-sourcemaps2": "0.5.4", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 79beab7c5827..d8ae637cced3 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -20,12 +20,12 @@ "dependencies": { "@ampproject/remapping": "2.3.0", "@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", - "@babel/core": "7.28.5", + "@babel/core": "7.28.6", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", "@inquirer/confirm": "5.1.21", - "@vitejs/plugin-basic-ssl": "2.1.0", - "beasties": "0.3.5", + "@vitejs/plugin-basic-ssl": "2.1.4", + "beasties": "0.4.1", "browserslist": "^4.26.0", "esbuild": "0.27.2", "https-proxy-agent": "7.0.6", @@ -44,7 +44,7 @@ "tinyglobby": "0.2.15", "undici": "7.18.2", "vite": "7.3.1", - "watchpack": "2.5.0" + "watchpack": "2.5.1" }, "optionalDependencies": { "lmdb": "3.4.4" @@ -57,7 +57,7 @@ "ng-packagr": "21.2.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.16" + "vitest": "4.0.17" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 452594492313..8a29e13e88a3 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -27,10 +27,10 @@ "@angular-devkit/schematics": "workspace:0.0.0-PLACEHOLDER", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.25.2", + "@modelcontextprotocol/sdk": "1.25.3", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.46.2", + "algoliasearch": "5.47.0", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index dc4d51362b31..da2930bdc792 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -36,7 +36,7 @@ "@angular/platform-server": "21.1.0-rc.0", "@angular/router": "21.1.0-rc.0", "@schematics/angular": "workspace:*", - "beasties": "0.3.5" + "beasties": "0.4.1" }, "sideEffects": false, "schematics": "./schematics/collection.json", diff --git a/packages/angular/ssr/test/npm_package/THIRD_PARTY_LICENSES.txt.golden b/packages/angular/ssr/test/npm_package/THIRD_PARTY_LICENSES.txt.golden index afbe64cd3fc4..47641ddb3fa9 100644 --- a/packages/angular/ssr/test/npm_package/THIRD_PARTY_LICENSES.txt.golden +++ b/packages/angular/ssr/test/npm_package/THIRD_PARTY_LICENSES.txt.golden @@ -472,6 +472,30 @@ Package: postcss-media-query-parser License: MIT +-------------------------------------------------------------------------------- +Package: postcss-safe-parser +License: MIT + +The MIT License (MIT) + +Copyright 2013 Andrey Sitnik + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Package: unenv License: MIT diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 950c5dc17da8..5a1782660a34 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -11,15 +11,15 @@ "@angular-devkit/build-webpack": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER", "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "@angular/build": "workspace:0.0.0-PLACEHOLDER", - "@babel/core": "7.28.5", - "@babel/generator": "7.28.5", + "@babel/core": "7.28.6", + "@babel/generator": "7.28.6", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.28.0", - "@babel/plugin-transform-async-to-generator": "7.27.1", + "@babel/plugin-transform-async-generator-functions": "7.28.6", + "@babel/plugin-transform-async-to-generator": "7.28.6", "@babel/plugin-transform-runtime": "7.28.5", - "@babel/preset-env": "7.28.5", - "@babel/runtime": "7.28.4", + "@babel/preset-env": "7.28.6", + "@babel/runtime": "7.28.6", "@discoveryjs/json-ext": "0.6.3", "@ngtools/webpack": "workspace:0.0.0-PLACEHOLDER", "ansi-colors": "4.1.3", @@ -37,9 +37,9 @@ "less-loader": "12.3.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", - "mini-css-extract-plugin": "2.9.4", + "mini-css-extract-plugin": "2.10.0", "open": "11.0.0", - "ora": "9.0.0", + "ora": "9.1.0", "picomatch": "4.0.3", "piscina": "5.1.4", "postcss": "8.5.6", @@ -51,13 +51,13 @@ "semver": "7.7.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.44.1", + "terser": "5.46.0", "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", "webpack": "5.104.1", "webpack-dev-middleware": "7.4.5", - "webpack-dev-server": "5.2.2", + "webpack-dev-server": "5.2.3", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, diff --git a/packages/angular_devkit/build_webpack/package.json b/packages/angular_devkit/build_webpack/package.json index 316b68533bf8..12853b43d620 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.104.1", - "webpack-dev-server": "5.2.2" + "webpack-dev-server": "5.2.3" }, "peerDependencies": { "webpack": "^5.30.0", diff --git a/packages/angular_devkit/schematics/package.json b/packages/angular_devkit/schematics/package.json index b6a35160b4e8..40a941149102 100644 --- a/packages/angular_devkit/schematics/package.json +++ b/packages/angular_devkit/schematics/package.json @@ -16,7 +16,7 @@ "@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", - "ora": "9.0.0", + "ora": "9.1.0", "rxjs": "7.8.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de1aa05424d9..d0f27c875c4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.2.0-next.0(1ca137b8238b4cbde6abd4f3e10ddd1e) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#370b6f7b49470d16721272715642d0ba2ef99556 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5)) '@angular/platform-browser': specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -62,17 +62,17 @@ importers: specifier: 21.1.0-rc.0 version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': - specifier: 7.28.5 - version: 7.28.5 + specifier: 7.28.6 + version: 7.28.6 '@bazel/bazelisk': - specifier: 1.26.0 - version: 1.26.0 + specifier: 1.28.1 + version: 1.28.1 '@bazel/buildifier': specifier: 8.2.1 version: 8.2.1 '@eslint/compat': - specifier: 2.0.0 - version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) + specifier: 2.0.1 + version: 2.0.1(eslint@9.39.2(jiti@2.6.1)) '@eslint/eslintrc': specifier: 3.3.3 version: 3.3.3 @@ -81,16 +81,16 @@ importers: version: 9.39.2 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.55.1) + version: 6.0.0(rollup@4.55.3) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.55.1) + version: 29.0.0(rollup@4.55.3) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.55.1) + version: 6.1.0(rollup@4.55.3) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.55.1) + version: 16.0.3(rollup@4.55.3) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.7.0(eslint@9.39.2(jiti@2.6.1)) @@ -161,11 +161,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.52.0 - version: 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.53.1 + version: 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.52.0 - version: 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.53.1 + version: 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -189,7 +189,7 @@ importers: version: 3.1.1(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) express: specifier: 5.2.1 version: 5.2.1 @@ -257,17 +257,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.55.1 - version: 4.55.1 + specifier: 4.55.3 + version: 4.55.3 rollup-license-plugin: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: specifier: 6.3.0 - version: 6.3.0(rollup@4.55.1)(typescript@5.9.3) + version: 6.3.0(rollup@4.55.3)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.7)(rollup@4.55.1) + version: 0.5.4(@types/node@22.19.7)(rollup@4.55.3) semver: specifier: 7.7.3 version: 7.7.3 @@ -314,8 +314,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.16 - version: 4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 4.0.17 + version: 4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -326,8 +326,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.17 + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -338,8 +338,8 @@ importers: specifier: workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER version: link:../../angular_devkit/architect '@babel/core': - specifier: 7.28.5 - version: 7.28.5 + specifier: 7.28.6 + version: 7.28.6 '@babel/helper-annotate-as-pure': specifier: 7.27.3 version: 7.27.3 @@ -350,11 +350,11 @@ importers: specifier: 5.1.21 version: 5.1.21(@types/node@24.10.8) '@vitejs/plugin-basic-ssl': - specifier: 2.1.0 - version: 2.1.0(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 2.1.4 + version: 2.1.4(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) beasties: - specifier: 0.3.5 - version: 0.3.5 + specifier: 0.4.1 + version: 0.4.1 browserslist: specifier: ^4.26.0 version: 4.28.1 @@ -408,10 +408,10 @@ importers: version: 7.18.2 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) watchpack: - specifier: 2.5.0 - version: 2.5.0 + specifier: 2.5.1 + version: 2.5.1 devDependencies: '@angular-devkit/core': specifier: workspace:* @@ -435,8 +435,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.16 - version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.17 + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -460,8 +460,8 @@ importers: specifier: 3.0.5 version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.8))(@types/node@24.10.8)(listr2@9.0.5) '@modelcontextprotocol/sdk': - specifier: 1.25.2 - version: 1.25.2(zod@4.3.5) + specifier: 1.25.3 + version: 1.25.3(zod@4.3.5) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -469,8 +469,8 @@ importers: specifier: 1.1.0 version: 1.1.0 algoliasearch: - specifier: 5.46.2 - version: 5.46.2 + specifier: 5.47.0 + version: 5.47.0 ini: specifier: 6.0.0 version: 6.0.0 @@ -542,8 +542,8 @@ importers: specifier: workspace:* version: link:../../schematics/angular beasties: - specifier: 0.3.5 - version: 0.3.5 + specifier: 0.4.1 + version: 0.4.1 packages/angular_devkit/architect: dependencies: @@ -578,11 +578,11 @@ importers: specifier: workspace:* version: link:../../angular/build '@babel/core': - specifier: 7.28.5 - version: 7.28.5 + specifier: 7.28.6 + version: 7.28.6 '@babel/generator': - specifier: 7.28.5 - version: 7.28.5 + specifier: 7.28.6 + version: 7.28.6 '@babel/helper-annotate-as-pure': specifier: 7.27.3 version: 7.27.3 @@ -590,20 +590,20 @@ importers: specifier: 7.24.7 version: 7.24.7 '@babel/plugin-transform-async-generator-functions': - specifier: 7.28.0 - version: 7.28.0(@babel/core@7.28.5) + specifier: 7.28.6 + version: 7.28.6(@babel/core@7.28.6) '@babel/plugin-transform-async-to-generator': - specifier: 7.27.1 - version: 7.27.1(@babel/core@7.28.5) + specifier: 7.28.6 + version: 7.28.6(@babel/core@7.28.6) '@babel/plugin-transform-runtime': specifier: 7.28.5 - version: 7.28.5(@babel/core@7.28.5) + version: 7.28.5(@babel/core@7.28.6) '@babel/preset-env': - specifier: 7.28.5 - version: 7.28.5(@babel/core@7.28.5) + specifier: 7.28.6 + version: 7.28.6(@babel/core@7.28.6) '@babel/runtime': - specifier: 7.28.4 - version: 7.28.4 + specifier: 7.28.6 + version: 7.28.6 '@discoveryjs/json-ext': specifier: 0.6.3 version: 0.6.3 @@ -618,7 +618,7 @@ importers: version: 10.4.23(postcss@8.5.6) babel-loader: specifier: 10.0.0 - version: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)) + version: 10.0.0(@babel/core@7.28.6)(webpack@5.104.1(esbuild@0.27.2)) browserslist: specifier: ^4.26.0 version: 4.28.1 @@ -656,14 +656,14 @@ importers: specifier: 3.3.1 version: 3.3.1 mini-css-extract-plugin: - specifier: 2.9.4 - version: 2.9.4(webpack@5.104.1(esbuild@0.27.2)) + specifier: 2.10.0 + version: 2.10.0(webpack@5.104.1(esbuild@0.27.2)) open: specifier: 11.0.0 version: 11.0.0 ora: - specifier: 9.0.0 - version: 9.0.0 + specifier: 9.1.0 + version: 9.1.0 picomatch: specifier: 4.0.3 version: 4.0.3 @@ -698,8 +698,8 @@ importers: specifier: 0.5.21 version: 0.5.21 terser: - specifier: 5.44.1 - version: 5.44.1 + specifier: 5.46.0 + version: 5.46.0 tinyglobby: specifier: 0.2.15 version: 0.2.15 @@ -716,8 +716,8 @@ importers: specifier: 7.4.5 version: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) webpack-dev-server: - specifier: 5.2.2 - version: 5.2.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) + specifier: 5.2.3 + version: 5.2.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -764,8 +764,8 @@ importers: specifier: 5.104.1 version: 5.104.1(esbuild@0.27.2) webpack-dev-server: - specifier: 5.2.2 - version: 5.2.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) + specifier: 5.2.3 + version: 5.2.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) packages/angular_devkit/core: dependencies: @@ -804,8 +804,8 @@ importers: specifier: 0.30.21 version: 0.30.21 ora: - specifier: 9.0.0 - version: 9.0.0 + specifier: 9.1.0 + version: 9.1.0 rxjs: specifier: 7.8.2 version: 7.8.2 @@ -884,60 +884,60 @@ packages: '@actions/io@2.0.0': resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} - '@algolia/abtesting@1.12.2': - resolution: {integrity: sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==} + '@algolia/abtesting@1.13.0': + resolution: {integrity: sha512-Zrqam12iorp3FjiKMXSTpedGYznZ3hTEOAr2oCxI8tbF8bS1kQHClyDYNq/eV0ewMNLyFkgZVWjaS+8spsOYiQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.46.2': - resolution: {integrity: sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==} + '@algolia/client-abtesting@5.47.0': + resolution: {integrity: sha512-aOpsdlgS9xTEvz47+nXmw8m0NtUiQbvGWNuSEb7fA46iPL5FxOmOUZkh8PREBJpZ0/H8fclSc7BMJCVr+Dn72w==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.46.2': - resolution: {integrity: sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==} + '@algolia/client-analytics@5.47.0': + resolution: {integrity: sha512-EcF4w7IvIk1sowrO7Pdy4Ako7x/S8+nuCgdk6En+u5jsaNQM4rTT09zjBPA+WQphXkA2mLrsMwge96rf6i7Mow==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.46.2': - resolution: {integrity: sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==} + '@algolia/client-common@5.47.0': + resolution: {integrity: sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.46.2': - resolution: {integrity: sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==} + '@algolia/client-insights@5.47.0': + resolution: {integrity: sha512-Ci+cn/FDIsDxSKMRBEiyKrqybblbk8xugo6ujDN1GSTv9RIZxwxqZYuHfdLnLEwLlX7GB8pqVyqrUSlRnR+sJA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.46.2': - resolution: {integrity: sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==} + '@algolia/client-personalization@5.47.0': + resolution: {integrity: sha512-gsLnHPZmWcX0T3IigkDL2imCNtsQ7dR5xfnwiFsb+uTHCuYQt+IwSNjsd8tok6HLGLzZrliSaXtB5mfGBtYZvQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.46.2': - resolution: {integrity: sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==} + '@algolia/client-query-suggestions@5.47.0': + resolution: {integrity: sha512-PDOw0s8WSlR2fWFjPQldEpmm/gAoUgLigvC3k/jCSi/DzigdGX6RdC0Gh1RR1P8Cbk5KOWYDuL3TNzdYwkfDyA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.46.2': - resolution: {integrity: sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==} + '@algolia/client-search@5.47.0': + resolution: {integrity: sha512-b5hlU69CuhnS2Rqgsz7uSW0t4VqrLMLTPbUpEl0QVz56rsSwr1Sugyogrjb493sWDA+XU1FU5m9eB8uH7MoI0g==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.46.2': - resolution: {integrity: sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==} + '@algolia/ingestion@1.47.0': + resolution: {integrity: sha512-WvwwXp5+LqIGISK3zHRApLT1xkuEk320/EGeD7uYy+K8WwDd5OjXnhjuXRhYr1685KnkvWkq1rQ/ihCJjOfHpQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.46.2': - resolution: {integrity: sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==} + '@algolia/monitoring@1.47.0': + resolution: {integrity: sha512-j2EUFKAlzM0TE4GRfkDE3IDfkVeJdcbBANWzK16Tb3RHz87WuDfQ9oeEW6XiRE1/bEkq2xf4MvZesvSeQrZRDA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.46.2': - resolution: {integrity: sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==} + '@algolia/recommend@5.47.0': + resolution: {integrity: sha512-+kTSE4aQ1ARj2feXyN+DMq0CIDHJwZw1kpxIunedkmpWUg8k3TzFwWsMCzJVkF2nu1UcFbl7xsIURz3Q3XwOXA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.46.2': - resolution: {integrity: sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==} + '@algolia/requester-browser-xhr@5.47.0': + resolution: {integrity: sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.46.2': - resolution: {integrity: sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==} + '@algolia/requester-fetch@5.47.0': + resolution: {integrity: sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.46.2': - resolution: {integrity: sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==} + '@algolia/requester-node-http@5.47.0': + resolution: {integrity: sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': @@ -1084,8 +1084,8 @@ packages: resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + '@babel/core@7.28.6': + resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} engines: {node: '>=6.9.0'} '@babel/generator@7.28.6': @@ -1248,14 +1248,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.28.0': - resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + '@babel/plugin-transform-async-generator-functions@7.28.6': + resolution: {integrity: sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1554,8 +1554,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.28.5': - resolution: {integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==} + '@babel/preset-env@7.28.6': + resolution: {integrity: sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1565,8 +1565,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} '@babel/template@7.28.6': @@ -1581,8 +1581,8 @@ packages: resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} - '@bazel/bazelisk@1.26.0': - resolution: {integrity: sha512-bTNcHdGyEQ9r7SczEYUa0gkEQhJo1ld2BjXI8fWBvsUeoHi03QpUs2HZgDbjjrpQFQqG2ZbO7ihZvH8MjhUTHw==} + '@bazel/bazelisk@1.28.1': + resolution: {integrity: sha512-K21x83NXOtd0yb2qzjMES3UV4xEWZ1q1vnXFhADA1u7IoiMVQkJAVQRK3oZ5txpnrGafY15HS+YYr2nmsEP4Tg==} hasBin: true '@bazel/buildifier@8.2.1': @@ -1828,8 +1828,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@2.0.0': - resolution: {integrity: sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==} + '@eslint/compat@2.0.1': + resolution: {integrity: sha512-yl/JsgplclzuvGFNqwNYV4XNPhP3l62ZOP9w/47atNAdmDtIFCx6X7CSk/SlWUuBGkT4Et/5+UD+WyvX2iiIWA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^8.40 || 9 @@ -2569,8 +2569,8 @@ packages: cpu: [x64] os: [win32] - '@modelcontextprotocol/sdk@1.25.2': - resolution: {integrity: sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==} + '@modelcontextprotocol/sdk@1.25.3': + resolution: {integrity: sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -2729,6 +2729,10 @@ packages: '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2977,6 +2981,40 @@ packages: resolution: {integrity: sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==} engines: {node: '>= 10.0.0'} + '@peculiar/asn1-cms@2.6.0': + resolution: {integrity: sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==} + + '@peculiar/asn1-csr@2.6.0': + resolution: {integrity: sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==} + + '@peculiar/asn1-ecc@2.6.0': + resolution: {integrity: sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==} + + '@peculiar/asn1-pfx@2.6.0': + resolution: {integrity: sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==} + + '@peculiar/asn1-pkcs8@2.6.0': + resolution: {integrity: sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==} + + '@peculiar/asn1-pkcs9@2.6.0': + resolution: {integrity: sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==} + + '@peculiar/asn1-rsa@2.6.0': + resolution: {integrity: sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==} + + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} + + '@peculiar/asn1-x509-attr@2.6.0': + resolution: {integrity: sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==} + + '@peculiar/asn1-x509@2.6.0': + resolution: {integrity: sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==} + + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} + '@pinojs/redact@0.4.0': resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} @@ -3191,139 +3229,277 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.55.3': + resolution: {integrity: sha512-qyX8+93kK/7R5BEXPC2PjUt0+fS/VO2BVHjEHyIEWiYn88rcRBHmdLgoJjktBltgAf+NY7RfCGB1SoyKS/p9kg==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.55.1': resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.55.3': + resolution: {integrity: sha512-6sHrL42bjt5dHQzJ12Q4vMKfN+kUnZ0atHHnv4V0Wd9JMTk7FDzSY35+7qbz3ypQYMBPANbpGK7JpnWNnhGt8g==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.55.1': resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.55.3': + resolution: {integrity: sha512-1ht2SpGIjEl2igJ9AbNpPIKzb1B5goXOcmtD0RFxnwNuMxqkR6AUaaErZz+4o+FKmzxcSNBOLrzsICZVNYa1Rw==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.55.1': resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.55.3': + resolution: {integrity: sha512-FYZ4iVunXxtT+CZqQoPVwPhH7549e/Gy7PIRRtq4t5f/vt54pX6eG9ebttRH6QSH7r/zxAFA4EZGlQ0h0FvXiA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.55.1': resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.55.3': + resolution: {integrity: sha512-M/mwDCJ4wLsIgyxv2Lj7Len+UMHd4zAXu4GQ2UaCdksStglWhP61U3uowkaYBQBhVoNpwx5Hputo8eSqM7K82Q==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.55.1': resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.55.3': + resolution: {integrity: sha512-5jZT2c7jBCrMegKYTYTpni8mg8y3uY8gzeq2ndFOANwNuC/xJbVAoGKR9LhMDA0H3nIhvaqUoBEuJoICBudFrA==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.55.3': + resolution: {integrity: sha512-YeGUhkN1oA+iSPzzhEjVPS29YbViOr8s4lSsFaZKLHswgqP911xx25fPOyE9+khmN6W4VeM0aevbDp4kkEoHiA==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.55.1': resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.55.3': + resolution: {integrity: sha512-eo0iOIOvcAlWB3Z3eh8pVM8hZ0oVkK3AjEM9nSrkSug2l15qHzF3TOwT0747omI6+CJJvl7drwZepT+re6Fy/w==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.55.1': resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.55.3': + resolution: {integrity: sha512-DJay3ep76bKUDImmn//W5SvpjRN5LmK/ntWyeJs/dcnwiiHESd3N4uteK9FDLf0S0W8E6Y0sVRXpOCoQclQqNg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.55.1': resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.55.3': + resolution: {integrity: sha512-BKKWQkY2WgJ5MC/ayvIJTHjy0JUGb5efaHCUiG/39sSUvAYRBaO3+/EK0AZT1RF3pSj86O24GLLik9mAYu0IJg==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.55.1': resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.55.3': + resolution: {integrity: sha512-Q9nVlWtKAG7ISW80OiZGxTr6rYtyDSkauHUtvkQI6TNOJjFvpj4gcH+KaJihqYInnAzEEUetPQubRwHef4exVg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-loong64-musl@4.55.1': resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} cpu: [loong64] os: [linux] libc: [musl] + '@rollup/rollup-linux-loong64-musl@4.55.3': + resolution: {integrity: sha512-2H5LmhzrpC4fFRNwknzmmTvvyJPHwESoJgyReXeFoYYuIDfBhP29TEXOkCJE/KxHi27mj7wDUClNq78ue3QEBQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-ppc64-gnu@4.55.1': resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.55.3': + resolution: {integrity: sha512-9S542V0ie9LCTznPYlvaeySwBeIEa7rDBgLHKZ5S9DBgcqdJYburabm8TqiqG6mrdTzfV5uttQRHcbKff9lWtA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-musl@4.55.1': resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} cpu: [ppc64] os: [linux] libc: [musl] + '@rollup/rollup-linux-ppc64-musl@4.55.3': + resolution: {integrity: sha512-ukxw+YH3XXpcezLgbJeasgxyTbdpnNAkrIlFGDl7t+pgCxZ89/6n1a+MxlY7CegU+nDgrgdqDelPRNQ/47zs0g==} + cpu: [ppc64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-riscv64-gnu@4.55.1': resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.55.3': + resolution: {integrity: sha512-Iauw9UsTTvlF++FhghFJjqYxyXdggXsOqGpFBylaRopVpcbfyIIsNvkf9oGwfgIcf57z3m8+/oSYTo6HutBFNw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.55.1': resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.55.3': + resolution: {integrity: sha512-3OqKAHSEQXKdq9mQ4eajqUgNIK27VZPW3I26EP8miIzuKzCJ3aW3oEn2pzF+4/Hj/Moc0YDsOtBgT5bZ56/vcA==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.55.1': resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.55.3': + resolution: {integrity: sha512-0CM8dSVzVIaqMcXIFej8zZrSFLnGrAE8qlNbbHfTw1EEPnFTg1U1ekI0JdzjPyzSfUsHWtodilQQG/RA55berA==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.55.1': resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.55.3': + resolution: {integrity: sha512-+fgJE12FZMIgBaKIAGd45rxf+5ftcycANJRWk8Vz0NnMTM5rADPGuRFTYar+Mqs560xuART7XsX2lSACa1iOmQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.55.1': resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.55.3': + resolution: {integrity: sha512-tMD7NnbAolWPzQlJQJjVFh/fNH3K/KnA7K8gv2dJWCwwnaK6DFCYST1QXYWfu5V0cDwarWC8Sf/cfMHniNq21A==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openbsd-x64@4.55.1': resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} cpu: [x64] os: [openbsd] + '@rollup/rollup-openbsd-x64@4.55.3': + resolution: {integrity: sha512-u5KsqxOxjEeIbn7bUK1MPM34jrnPwjeqgyin4/N6e/KzXKfpE9Mi0nCxcQjaM9lLmPcHmn/xx1yOjgTMtu1jWQ==} + cpu: [x64] + os: [openbsd] + '@rollup/rollup-openharmony-arm64@4.55.1': resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.55.3': + resolution: {integrity: sha512-vo54aXwjpTtsAnb3ca7Yxs9t2INZg7QdXN/7yaoG7nPGbOBXYXQY41Km+S1Ov26vzOAzLcAjmMdjyEqS1JkVhw==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.55.1': resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.55.3': + resolution: {integrity: sha512-HI+PIVZ+m+9AgpnY3pt6rinUdRYrGHvmVdsNQ4odNqQ/eRF78DVpMR7mOq7nW06QxpczibwBmeQzB68wJ+4W4A==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.55.1': resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.55.3': + resolution: {integrity: sha512-vRByotbdMo3Wdi+8oC2nVxtc3RkkFKrGaok+a62AT8lz/YBuQjaVYAS5Zcs3tPzW43Vsf9J0wehJbUY5xRSekA==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.55.1': resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.55.3': + resolution: {integrity: sha512-POZHq7UeuzMJljC5NjKi8vKMFN6/5EOqcX1yGntNLp7rUTpBAXQ1hW8kWPFxYLv07QMcNM75xqVLGPWQq6TKFA==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.55.1': resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.55.3': + resolution: {integrity: sha512-aPFONczE4fUFKNXszdvnd2GqKEYQdV5oEsIbKPujJmWlCI9zEsv1Otig8RKK+X9bed9gFUN6LAeN4ZcNuu4zjg==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.55.1': resolution: {integrity: sha512-GD+BSGH7+hVtNreVwv2JVxKImAdaDDrT9Ev0Bbr9CTATPjXjp7pQlRAqyZqNW3RGY37qL/RkF0HyO9ptJDU2pQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3574,9 +3750,6 @@ packages: '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@22.19.7': resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} @@ -3685,67 +3858,67 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.52.0': - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + '@typescript-eslint/eslint-plugin@8.53.1': + resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.52.0': - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + '@typescript-eslint/parser@8.53.1': + resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.1': + resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + '@typescript-eslint/scope-manager@8.53.1': + resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.1': + resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.52.0': - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + '@typescript-eslint/type-utils@8.53.1': + resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.53.0': resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + '@typescript-eslint/types@8.53.1': + resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.53.1': + resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.53.1': + resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + '@typescript-eslint/visitor-keys@8.53.1': + resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.28': @@ -3827,26 +4000,26 @@ packages: resolution: {integrity: sha512-/AYNGafG9T90NPGsq6eDMuXx+41tlWfiYsCchgwz074GWEitZ2nAZQWWNvYvFVB2hXzord52muEVTWjgaZPOdQ==} engines: {node: '>=18'} - '@vitejs/plugin-basic-ssl@2.1.0': - resolution: {integrity: sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==} + '@vitejs/plugin-basic-ssl@2.1.4': + resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.16': - resolution: {integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==} + '@vitest/coverage-v8@4.0.17': + resolution: {integrity: sha512-/6zU2FLGg0jsd+ePZcwHRy3+WpNTBBhDY56P4JTRqUN/Dp6CvOEa9HrikcQ4KfV2b2kAHUFB4dl1SuocWXSFEw==} peerDependencies: - '@vitest/browser': 4.0.16 - vitest: 4.0.16 + '@vitest/browser': 4.0.17 + vitest: 4.0.17 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.16': - resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} + '@vitest/expect@4.0.17': + resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} - '@vitest/mocker@4.0.16': - resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} + '@vitest/mocker@4.0.17': + resolution: {integrity: sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -3856,20 +4029,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.16': - resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} + '@vitest/pretty-format@4.0.17': + resolution: {integrity: sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==} - '@vitest/runner@4.0.16': - resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} + '@vitest/runner@4.0.17': + resolution: {integrity: sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==} - '@vitest/snapshot@4.0.16': - resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} + '@vitest/snapshot@4.0.17': + resolution: {integrity: sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==} - '@vitest/spy@4.0.16': - resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} + '@vitest/spy@4.0.17': + resolution: {integrity: sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==} - '@vitest/utils@4.0.16': - resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} + '@vitest/utils@4.0.17': + resolution: {integrity: sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -4061,8 +4234,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.46.2: - resolution: {integrity: sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==} + algoliasearch@5.47.0: + resolution: {integrity: sha512-AGtz2U7zOV4DlsuYV84tLp2tBbA7RPtLA44jbVH4TTpDcc1dIWmULjHSsunlhscbzDydnjuFlNhflR3nV4VJaQ==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -4186,6 +4359,10 @@ packages: asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + asn1js@3.0.7: + resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} + engines: {node: '>=12.0.0'} + assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -4338,9 +4515,9 @@ packages: bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - beasties@0.3.5: - resolution: {integrity: sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==} - engines: {node: '>=14.0.0'} + beasties@0.4.1: + resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==} + engines: {node: '>=18.0.0'} before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} @@ -4453,6 +4630,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + cacache@20.0.3: resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -6346,10 +6527,6 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} @@ -6847,8 +7024,8 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - mini-css-extract-plugin@2.9.4: - resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} + mini-css-extract-plugin@2.10.0: + resolution: {integrity: sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 @@ -7052,10 +7229,6 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.3: - resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} - engines: {node: '>= 6.13.0'} - node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true @@ -7215,6 +7388,10 @@ packages: resolution: {integrity: sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==} engines: {node: '>=20'} + ora@9.1.0: + resolution: {integrity: sha512-53uuLsXHOAJl5zLrUrzY9/kE+uIFEx7iaH4g2BIJQK4LZjY4LpCCYZVKDWIkL+F01wAaCg93duQ1whnK/AmY1A==} + engines: {node: '>=20'} + ordered-binary@1.6.1: resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} @@ -7434,6 +7611,10 @@ packages: resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} engines: {node: '>=18'} + pkijs@3.3.3: + resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} + engines: {node: '>=16.0.0'} + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -7490,6 +7671,12 @@ packages: peerDependencies: postcss: ^8.1.0 + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} @@ -7603,6 +7790,13 @@ packages: engines: {node: '>=14.1.0'} deprecated: < 24.15.0 is no longer supported + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + q@1.4.1: resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} @@ -7847,6 +8041,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.55.3: + resolution: {integrity: sha512-y9yUpfQvetAjiDLtNMf1hL9NXchIJgWt6zIKeoB+tCd3npX08Eqfzg60V9DhIGVMtQ0AlMkFw5xa+AQ37zxnAA==} + 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'} @@ -7937,9 +8136,9 @@ packages: resolution: {integrity: sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==} engines: {node: '>= 6.9.0'} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} @@ -8371,8 +8570,8 @@ packages: uglify-js: optional: true - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -8508,6 +8707,9 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -8520,6 +8722,10 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + tuf-js@4.1.0: resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -8787,18 +8993,18 @@ packages: yaml: optional: true - vitest@4.0.16: - resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} + vitest@4.0.17: + resolution: {integrity: sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.16 - '@vitest/browser-preview': 4.0.16 - '@vitest/browser-webdriverio': 4.0.16 - '@vitest/ui': 4.0.16 + '@vitest/browser-playwright': 4.0.17 + '@vitest/browser-preview': 4.0.17 + '@vitest/browser-webdriverio': 4.0.17 + '@vitest/ui': 4.0.17 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8829,8 +9035,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - watchpack@2.5.0: - resolution: {integrity: sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==} + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -8878,8 +9084,8 @@ packages: webpack: optional: true - webpack-dev-server@5.2.2: - resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} + webpack-dev-server@5.2.3: + resolution: {integrity: sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -9207,89 +9413,89 @@ snapshots: '@actions/io@2.0.0': {} - '@algolia/abtesting@1.12.2': + '@algolia/abtesting@1.13.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-abtesting@5.46.2': + '@algolia/client-abtesting@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-analytics@5.46.2': + '@algolia/client-analytics@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-common@5.46.2': {} + '@algolia/client-common@5.47.0': {} - '@algolia/client-insights@5.46.2': + '@algolia/client-insights@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-personalization@5.46.2': + '@algolia/client-personalization@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-query-suggestions@5.46.2': + '@algolia/client-query-suggestions@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-search@5.46.2': + '@algolia/client-search@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/ingestion@1.46.2': + '@algolia/ingestion@1.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/monitoring@1.46.2': + '@algolia/monitoring@1.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/recommend@5.46.2': + '@algolia/recommend@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/requester-browser-xhr@5.46.2': + '@algolia/requester-browser-xhr@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 + '@algolia/client-common': 5.47.0 - '@algolia/requester-fetch@5.46.2': + '@algolia/requester-fetch@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 + '@algolia/client-common': 5.47.0 - '@algolia/requester-node-http@5.46.2': + '@algolia/requester-node-http@5.47.0': dependencies: - '@algolia/client-common': 5.46.2 + '@algolia/client-common': 5.47.0 '@ampproject/remapping@2.3.0': dependencies: @@ -9374,11 +9580,11 @@ 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/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))': dependencies: '@actions/core': 2.0.2 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.35.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + '@google/genai': 1.35.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) '@inquirer/prompts': 8.2.0(@types/node@24.10.8) '@inquirer/type': 4.0.3(@types/node@24.10.8) '@octokit/auth-app': 8.1.2 @@ -9495,7 +9701,7 @@ snapshots: '@babel/core@7.28.5': dependencies: '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.5 + '@babel/generator': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) '@babel/helpers': 7.28.6 @@ -9512,13 +9718,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.5': + '@babel/core@7.28.6': dependencies: + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helpers': 7.28.6 '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 '@babel/types': 7.28.6 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@10.2.2) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color '@babel/generator@7.28.6': dependencies: @@ -9540,29 +9758,29 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.5)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/traverse': 7.28.6 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@10.2.2) @@ -9596,24 +9814,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.27.1': dependencies: '@babel/types': 7.28.6 '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.6 '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.5)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/traverse': 7.28.6 @@ -9654,490 +9881,490 @@ snapshots: dependencies: '@babel/types': 7.28.6 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': + '@babel/plugin-transform-async-generator-functions@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.6) '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.6) '@babel/traverse': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-regenerator@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.28.5(@babel/core@7.28.5)': + '@babel/preset-env@7.28.6(@babel/core@7.28.6)': dependencies: '@babel/compat-data': 7.28.6 - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-regenerator': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.6) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.6) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-async-generator-functions': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.6) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.6) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-regenerator': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.6) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.6) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) core-js-compat: 3.47.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.6)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/types': 7.28.6 esutils: 2.0.3 - '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} '@babel/template@7.28.6': dependencies: @@ -10162,7 +10389,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@bazel/bazelisk@1.26.0': {} + '@bazel/bazelisk@1.28.1': {} '@bazel/buildifier@8.2.1': {} @@ -10328,7 +10555,7 @@ snapshots: '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))': + '@eslint/compat@2.0.1(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint/core': 1.0.1 optionalDependencies: @@ -10760,12 +10987,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.35.0(@modelcontextprotocol/sdk@1.25.2(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': + '@google/genai@1.35.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: - '@modelcontextprotocol/sdk': 1.25.2(zod@4.3.5) + '@modelcontextprotocol/sdk': 1.25.3(zod@4.3.5) transitivePeerDependencies: - bufferutil - supports-color @@ -11173,7 +11400,7 @@ snapshots: '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@modelcontextprotocol/sdk@1.25.2(zod@4.3.5)': + '@modelcontextprotocol/sdk@1.25.3(zod@4.3.5)': dependencies: '@hono/node-server': 1.19.9 ajv: 8.17.1 @@ -11301,6 +11528,8 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11567,6 +11796,96 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.4 optional: true + '@peculiar/asn1-cms@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + '@peculiar/asn1-x509-attr': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.6.0': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-pkcs8': 2.6.0 + '@peculiar/asn1-rsa': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.6.0': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-pfx': 2.6.0 + '@peculiar/asn1-pkcs8': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + '@peculiar/asn1-x509-attr': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.6.0': + dependencies: + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.6.0': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/x509@1.14.3': + dependencies: + '@peculiar/asn1-cms': 2.6.0 + '@peculiar/asn1-csr': 2.6.0 + '@peculiar/asn1-ecc': 2.6.0 + '@peculiar/asn1-pkcs9': 2.6.0 + '@peculiar/asn1-rsa': 2.6.0 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.0 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@pinojs/redact@0.4.0': {} '@pkgjs/parseargs@0.11.0': @@ -11673,13 +11992,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.59': {} - '@rollup/plugin-alias@6.0.0(rollup@4.55.1)': + '@rollup/plugin-alias@6.0.0(rollup@4.55.3)': optionalDependencies: - rollup: 4.55.1 + rollup: 4.55.3 - '@rollup/plugin-commonjs@29.0.0(rollup@4.55.1)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.55.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) + '@rollup/pluginutils': 5.3.0(rollup@4.55.3) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11687,7 +12006,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.55.1 + rollup: 4.55.3 '@rollup/plugin-json@6.1.0(rollup@4.55.1)': dependencies: @@ -11695,33 +12014,39 @@ snapshots: optionalDependencies: rollup: 4.55.1 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.55.1)': + '@rollup/plugin-json@6.1.0(rollup@4.55.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) + '@rollup/pluginutils': 5.3.0(rollup@4.55.3) + optionalDependencies: + rollup: 4.55.3 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.55.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.55.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.55.1 + rollup: 4.55.3 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.55.1)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.55.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) + '@rollup/pluginutils': 5.3.0(rollup@4.55.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.55.1 + rollup: 4.55.3 - '@rollup/pluginutils@5.2.0(rollup@4.55.1)': + '@rollup/pluginutils@5.2.0(rollup@4.55.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.55.1 + rollup: 4.55.3 '@rollup/pluginutils@5.3.0(rollup@4.55.1)': dependencies: @@ -11731,81 +12056,164 @@ snapshots: optionalDependencies: rollup: 4.55.1 + '@rollup/pluginutils@5.3.0(rollup@4.55.3)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.55.3 + '@rollup/rollup-android-arm-eabi@4.55.1': optional: true + '@rollup/rollup-android-arm-eabi@4.55.3': + optional: true + '@rollup/rollup-android-arm64@4.55.1': optional: true + '@rollup/rollup-android-arm64@4.55.3': + optional: true + '@rollup/rollup-darwin-arm64@4.55.1': optional: true + '@rollup/rollup-darwin-arm64@4.55.3': + optional: true + '@rollup/rollup-darwin-x64@4.55.1': optional: true + '@rollup/rollup-darwin-x64@4.55.3': + optional: true + '@rollup/rollup-freebsd-arm64@4.55.1': optional: true + '@rollup/rollup-freebsd-arm64@4.55.3': + optional: true + '@rollup/rollup-freebsd-x64@4.55.1': optional: true + '@rollup/rollup-freebsd-x64@4.55.3': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.55.3': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.55.3': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.55.1': optional: true + '@rollup/rollup-linux-arm64-gnu@4.55.3': + optional: true + '@rollup/rollup-linux-arm64-musl@4.55.1': optional: true + '@rollup/rollup-linux-arm64-musl@4.55.3': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true + '@rollup/rollup-linux-loong64-gnu@4.55.3': + optional: true + '@rollup/rollup-linux-loong64-musl@4.55.1': optional: true + '@rollup/rollup-linux-loong64-musl@4.55.3': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.55.1': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.55.3': + optional: true + '@rollup/rollup-linux-ppc64-musl@4.55.1': optional: true + '@rollup/rollup-linux-ppc64-musl@4.55.3': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.55.1': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.55.3': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.55.1': optional: true + '@rollup/rollup-linux-riscv64-musl@4.55.3': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.55.1': optional: true + '@rollup/rollup-linux-s390x-gnu@4.55.3': + optional: true + '@rollup/rollup-linux-x64-gnu@4.55.1': optional: true + '@rollup/rollup-linux-x64-gnu@4.55.3': + optional: true + '@rollup/rollup-linux-x64-musl@4.55.1': optional: true + '@rollup/rollup-linux-x64-musl@4.55.3': + optional: true + '@rollup/rollup-openbsd-x64@4.55.1': optional: true + '@rollup/rollup-openbsd-x64@4.55.3': + optional: true + '@rollup/rollup-openharmony-arm64@4.55.1': optional: true + '@rollup/rollup-openharmony-arm64@4.55.3': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.55.1': optional: true + '@rollup/rollup-win32-arm64-msvc@4.55.3': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.55.1': optional: true + '@rollup/rollup-win32-ia32-msvc@4.55.3': + optional: true + '@rollup/rollup-win32-x64-gnu@4.55.1': optional: true + '@rollup/rollup-win32-x64-gnu@4.55.3': + optional: true + '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.55.3': + optional: true + '@rollup/wasm-node@4.55.1': dependencies: '@types/estree': 1.0.8 @@ -11953,7 +12361,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.8 + '@types/express-serve-static-core': 5.1.1 '@types/node': 22.19.7 '@types/connect@3.4.38': @@ -12115,10 +12523,6 @@ snapshots: '@types/node': 22.19.7 form-data: 4.0.5 - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 22.19.7 - '@types/node@22.19.7': dependencies: undici-types: 7.18.2 @@ -12247,14 +12651,14 @@ snapshots: '@types/node': 22.19.7 optional: true - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -12263,41 +12667,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.52.0': + '@typescript-eslint/scope-manager@8.53.1': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -12305,16 +12709,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.52.0': {} - '@typescript-eslint/types@8.53.0': {} - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': + '@typescript-eslint/types@8.53.1': {} + + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3(supports-color@10.2.2) minimatch: 9.0.5 semver: 7.7.3 @@ -12324,20 +12728,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.52.0': + '@typescript-eslint/visitor-keys@8.53.1': dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.28': @@ -12497,64 +12901,61 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.0.17 ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 magicast: 0.5.1 obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/expect@4.0.16': + '@vitest/expect@4.0.17': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.17(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.16 + '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@4.0.16': + '@vitest/pretty-format@4.0.17': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.16': + '@vitest/runner@4.0.17': dependencies: - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.0.17 pathe: 2.0.3 - '@vitest/snapshot@4.0.16': + '@vitest/snapshot@4.0.17': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.0.17 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.16': {} + '@vitest/spy@4.0.17': {} - '@vitest/utils@4.0.16': + '@vitest/utils@4.0.17': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.0.17 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -12590,11 +12991,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.1.0)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.55.1) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.55.3) '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.55.1 + rollup: 4.55.3 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -12894,22 +13295,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.46.2: - dependencies: - '@algolia/abtesting': 1.12.2 - '@algolia/client-abtesting': 5.46.2 - '@algolia/client-analytics': 5.46.2 - '@algolia/client-common': 5.46.2 - '@algolia/client-insights': 5.46.2 - '@algolia/client-personalization': 5.46.2 - '@algolia/client-query-suggestions': 5.46.2 - '@algolia/client-search': 5.46.2 - '@algolia/ingestion': 1.46.2 - '@algolia/monitoring': 1.46.2 - '@algolia/recommend': 5.46.2 - '@algolia/requester-browser-xhr': 5.46.2 - '@algolia/requester-fetch': 5.46.2 - '@algolia/requester-node-http': 5.46.2 + algoliasearch@5.47.0: + dependencies: + '@algolia/abtesting': 1.13.0 + '@algolia/client-abtesting': 5.47.0 + '@algolia/client-analytics': 5.47.0 + '@algolia/client-common': 5.47.0 + '@algolia/client-insights': 5.47.0 + '@algolia/client-personalization': 5.47.0 + '@algolia/client-query-suggestions': 5.47.0 + '@algolia/client-search': 5.47.0 + '@algolia/ingestion': 1.47.0 + '@algolia/monitoring': 1.47.0 + '@algolia/recommend': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 ansi-colors@4.1.3: {} @@ -13024,6 +13425,12 @@ snapshots: dependencies: safer-buffer: 2.1.2 + asn1js@3.0.7: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + assert-plus@1.0.0: {} assertion-error@2.0.1: {} @@ -13073,33 +13480,33 @@ snapshots: b4a@1.7.3: {} - babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)): + babel-loader@10.0.0(@babel/core@7.28.6)(webpack@5.104.1(esbuild@0.27.2)): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 find-up: 5.0.0 webpack: 5.104.1(esbuild@0.27.2) - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.6): dependencies: '@babel/compat-data': 7.28.6 - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.6): dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.6): dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + '@babel/core': 7.28.6 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) transitivePeerDependencies: - supports-color @@ -13158,7 +13565,7 @@ snapshots: bcryptjs@2.4.3: {} - beasties@0.3.5: + beasties@0.4.1: dependencies: css-select: 6.0.0 css-what: 7.0.0 @@ -13168,6 +13575,7 @@ snapshots: picocolors: 1.1.1 postcss: 8.5.6 postcss-media-query-parser: 0.2.3 + postcss-safe-parser: 7.0.1(postcss@8.5.6) before-after-hook@4.0.0: {} @@ -13365,6 +13773,8 @@ snapshots: bytes@3.1.2: {} + bytestreamjs@2.0.1: {} + cacache@20.0.3: dependencies: '@npmcli/fs': 5.0.0 @@ -14250,11 +14660,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14264,7 +14674,7 @@ snapshots: dependencies: eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14275,7 +14685,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14287,7 +14697,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14541,7 +14951,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15547,7 +15957,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -15557,7 +15967,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.28.6 '@babel/parser': 7.28.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -15579,14 +15989,6 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3(supports-color@10.2.2) - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 @@ -16185,7 +16587,7 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.9.4(webpack@5.104.1(esbuild@0.27.2)): + mini-css-extract-plugin@2.10.0(webpack@5.104.1(esbuild@0.27.2)): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 @@ -16386,8 +16788,6 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.3: {} - node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.1.2 @@ -16586,6 +16986,17 @@ snapshots: string-width: 8.1.0 strip-ansi: 7.1.2 + ora@9.1.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.2.2 + string-width: 8.1.0 + ordered-binary@1.6.1: optional: true @@ -16813,6 +17224,15 @@ snapshots: dependencies: find-up-simple: 1.0.1 + pkijs@3.3.3: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.7 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + pluralize@8.0.0: {} portfinder@1.0.38: @@ -16863,6 +17283,10 @@ snapshots: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 @@ -17034,6 +17458,12 @@ snapshots: - supports-color - utf-8-validate + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + q@1.4.1: {} qjobs@1.2.0: {} @@ -17329,10 +17759,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.28.6 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.55.1): + rollup-plugin-dts@6.3.0(rollup@4.55.3)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.55.1) - rollup: 4.55.1 + magic-string: 0.30.21 + rollup: 4.55.3 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.28.6 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.55.3): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.55.3) + rollup: 4.55.3 optionalDependencies: '@types/node': 22.19.7 @@ -17367,6 +17805,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.55.1 fsevents: 2.3.3 + rollup@4.55.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.55.3 + '@rollup/rollup-android-arm64': 4.55.3 + '@rollup/rollup-darwin-arm64': 4.55.3 + '@rollup/rollup-darwin-x64': 4.55.3 + '@rollup/rollup-freebsd-arm64': 4.55.3 + '@rollup/rollup-freebsd-x64': 4.55.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.3 + '@rollup/rollup-linux-arm-musleabihf': 4.55.3 + '@rollup/rollup-linux-arm64-gnu': 4.55.3 + '@rollup/rollup-linux-arm64-musl': 4.55.3 + '@rollup/rollup-linux-loong64-gnu': 4.55.3 + '@rollup/rollup-linux-loong64-musl': 4.55.3 + '@rollup/rollup-linux-ppc64-gnu': 4.55.3 + '@rollup/rollup-linux-ppc64-musl': 4.55.3 + '@rollup/rollup-linux-riscv64-gnu': 4.55.3 + '@rollup/rollup-linux-riscv64-musl': 4.55.3 + '@rollup/rollup-linux-s390x-gnu': 4.55.3 + '@rollup/rollup-linux-x64-gnu': 4.55.3 + '@rollup/rollup-linux-x64-musl': 4.55.3 + '@rollup/rollup-openbsd-x64': 4.55.3 + '@rollup/rollup-openharmony-arm64': 4.55.3 + '@rollup/rollup-win32-arm64-msvc': 4.55.3 + '@rollup/rollup-win32-ia32-msvc': 4.55.3 + '@rollup/rollup-win32-x64-gnu': 4.55.3 + '@rollup/rollup-win32-x64-msvc': 4.55.3 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -17459,10 +17928,10 @@ snapshots: tmp: 0.0.30 xml2js: 0.4.23 - selfsigned@2.4.1: + selfsigned@5.5.0: dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.3.3 + '@peculiar/x509': 1.14.3 + pkijs: 3.3.3 semver@5.7.2: {} @@ -18043,12 +18512,12 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.1 + terser: 5.46.0 webpack: 5.104.1(esbuild@0.27.2) optionalDependencies: esbuild: 0.27.2 - terser@5.44.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -18179,6 +18648,8 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.8.1: {} tsscmp@1.0.6: {} @@ -18190,6 +18661,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + tuf-js@4.1.0: dependencies: '@tufjs/models': 4.1.0 @@ -18461,7 +18936,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -18475,19 +18950,19 @@ snapshots: jiti: 2.6.1 less: 4.4.2 sass: 1.97.2 - terser: 5.44.1 + terser: 5.46.0 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.16 - '@vitest/runner': 4.0.16 - '@vitest/snapshot': 4.0.16 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@vitest/expect': 4.0.17 + '@vitest/mocker': 4.0.17(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.17 + '@vitest/runner': 4.0.17 + '@vitest/snapshot': 4.0.17 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 es-module-lexer: 1.7.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -18499,7 +18974,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -18524,7 +18999,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - watchpack@2.5.0: + watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -18578,7 +19053,7 @@ snapshots: optionalDependencies: webpack: 5.104.1(esbuild@0.27.2) - webpack-dev-server@5.2.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)): + webpack-dev-server@5.2.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18602,7 +19077,7 @@ snapshots: open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 - selfsigned: 2.4.1 + selfsigned: 5.5.0 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 @@ -18654,7 +19129,7 @@ snapshots: schema-utils: 4.3.3 tapable: 2.3.0 terser-webpack-plugin: 5.3.16(esbuild@0.27.2)(webpack@5.104.1(esbuild@0.27.2)) - watchpack: 2.5.0 + watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' From f7123612bc7d910477dcd3a90042115364f5a7fc Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 22 Jan 2026 16:39:41 +0100 Subject: [PATCH 2126/2162] refactor(@angular/cli): remove old package manager utilities This removes the old implementation of the package-manager. --- .../cli/src/command-builder/command-module.ts | 14 +- .../cli/src/command-builder/command-runner.ts | 86 ++++- .../cli/src/command-builder/definitions.ts | 4 +- packages/angular/cli/src/commands/add/cli.ts | 61 +--- .../angular/cli/src/commands/update/cli.ts | 15 +- .../commands/update/utilities/cli-version.ts | 2 +- .../angular/cli/src/commands/version/cli.ts | 2 +- .../cli/src/commands/version/version-info.ts | 9 +- .../cli/src/package-managers/factory.ts | 17 +- .../angular/cli/src/package-managers/host.ts | 14 +- .../src/package-managers/package-manager.ts | 35 +- .../src/package-managers/testing/mock-host.ts | 4 + .../cli/src/utilities/package-manager.ts | 339 ------------------ 13 files changed, 168 insertions(+), 434 deletions(-) delete mode 100644 packages/angular/cli/src/utilities/package-manager.ts diff --git a/packages/angular/cli/src/command-builder/command-module.ts b/packages/angular/cli/src/command-builder/command-module.ts index ff30cf976b7b..e5cc6f70473a 100644 --- a/packages/angular/cli/src/command-builder/command-module.ts +++ b/packages/angular/cli/src/command-builder/command-module.ts @@ -6,9 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging, schema } from '@angular-devkit/core'; +import { schema } from '@angular-devkit/core'; import { readFileSync } from 'node:fs'; -import * as path from 'node:path'; +import { join, posix, relative } from 'node:path'; import type { ArgumentsCamelCase, Argv, CommandModule as YargsCommandModule } from 'yargs'; import { Parser as yargsParser } from 'yargs/helpers'; import { getAnalyticsUserId } from '../analytics/analytics'; @@ -17,7 +17,6 @@ import { EventCustomDimension, EventCustomMetric } from '../analytics/analytics- import { considerSettingUpAutocompletion } from '../utilities/completion'; import { AngularWorkspace } from '../utilities/config'; import { memoize } from '../utilities/memoize'; -import { PackageManagerUtils } from '../utilities/package-manager'; import { CommandContext, CommandScope, Options, OtherOptions } from './definitions'; import { Option, addSchemaOptionsToCommand } from './utilities/json-schema'; @@ -74,9 +73,10 @@ export abstract class CommandModule implements CommandModuleI describe: this.describe, ...(this.longDescriptionPath ? { - longDescriptionRelativePath: path - .relative(path.join(__dirname, '../../../../'), this.longDescriptionPath) - .replace(/\\/g, path.posix.sep), + longDescriptionRelativePath: relative( + join(__dirname, '../../../../'), + this.longDescriptionPath, + ).replace(/\\/g, posix.sep), longDescription: readFileSync(this.longDescriptionPath, 'utf8').replace( /\r\n/g, '\n', @@ -156,7 +156,7 @@ export abstract class CommandModule implements CommandModuleI return userId ? new AnalyticsCollector(this.context.logger, userId, { name: this.context.packageManager.name, - version: this.context.packageManager.version, + version: await this.context.packageManager.getVersion(), }) : undefined; } diff --git a/packages/angular/cli/src/command-builder/command-runner.ts b/packages/angular/cli/src/command-builder/command-runner.ts index cb4ab2c8467e..452f9afe8f68 100644 --- a/packages/angular/cli/src/command-builder/command-runner.ts +++ b/packages/angular/cli/src/command-builder/command-runner.ts @@ -6,19 +6,23 @@ * found in the LICENSE file at https://angular.dev/license */ -import { logging } from '@angular-devkit/core'; +import { JsonValue, isJsonObject, logging } from '@angular-devkit/core'; +import { readFile } from 'node:fs/promises'; +import { join } from 'node:path'; import yargs from 'yargs'; import { Parser as yargsParser } from 'yargs/helpers'; +import { getCacheConfig } from '../commands/cache/utilities'; import { CommandConfig, CommandNames, RootCommands, RootCommandsAliases, } from '../commands/command-config'; +import { createPackageManager } from '../package-managers'; +import { ConfiguredPackageManagerInfo } from '../package-managers/factory'; import { colors } from '../utilities/color'; -import { AngularWorkspace, getWorkspace } from '../utilities/config'; +import { AngularWorkspace, getProjectByCwd, getWorkspace } from '../utilities/config'; import { assertIsError } from '../utilities/error'; -import { PackageManagerUtils } from '../utilities/package-manager'; import { VERSION } from '../utilities/version'; import { CommandContext, CommandModuleError } from './command-module'; import { @@ -34,11 +38,12 @@ export async function runCommand(args: string[], logger: logging.Logger): Promis $0, _, help = false, + dryRun = false, jsonHelp = false, getYargsCompletions = false, ...rest } = yargsParser(args, { - boolean: ['help', 'json-help', 'get-yargs-completions'], + boolean: ['help', 'json-help', 'get-yargs-completions', 'dry-run'], alias: { 'collection': 'c' }, }); @@ -60,8 +65,20 @@ export async function runCommand(args: string[], logger: logging.Logger): Promis } const root = workspace?.basePath ?? process.cwd(); - const localYargs = yargs(args); + const cacheConfig = workspace && getCacheConfig(workspace); + const packageManager = await createPackageManager({ + cwd: root, + logger, + dryRun: dryRun || help || jsonHelp || getYargsCompletions, + tempDirectory: cacheConfig?.enabled ? cacheConfig.path : undefined, + configuredPackageManager: await getConfiguredPackageManager( + root, + workspace, + globalConfiguration, + ), + }); + const localYargs = yargs(args); const context: CommandContext = { globalConfiguration, workspace, @@ -69,7 +86,7 @@ export async function runCommand(args: string[], logger: logging.Logger): Promis currentDirectory: process.cwd(), yargsInstance: localYargs, root, - packageManager: new PackageManagerUtils({ globalConfiguration, workspace, root }), + packageManager, args: { positional: positional.map((v) => v.toString()), options: { @@ -163,3 +180,60 @@ async function getCommandsToRegister( return Promise.all(commands.map((command) => command.factory().then((m) => m.default))); } + +/** + * Gets the configured package manager by checking package.json, or the local and global angular.json files. + * + * @param root The root directory of the workspace. + * @param localWorkspace The local workspace. + * @param globalWorkspace The global workspace. + * @returns The package manager name and version. + */ +async function getConfiguredPackageManager( + root: string, + localWorkspace: AngularWorkspace | undefined, + globalWorkspace: AngularWorkspace, +): Promise { + let result: ConfiguredPackageManagerInfo | undefined; + + try { + const packageJsonPath = join(root, 'package.json'); + const pkgJson = JSON.parse(await readFile(packageJsonPath, 'utf-8')) as JsonValue; + result = getPackageManager(pkgJson); + } catch {} + + if (result) { + return result; + } + + if (localWorkspace) { + const project = getProjectByCwd(localWorkspace); + if (project) { + result = getPackageManager(localWorkspace.projects.get(project)?.extensions['cli']); + } + + result ??= getPackageManager(localWorkspace.extensions['cli']); + } + + result ??= getPackageManager(globalWorkspace.extensions['cli']); + + return result; +} + +/** + * Get the package manager name from a JSON value. + * @param source The JSON value to get the package manager name from. + * @returns The package manager name and version. + */ +function getPackageManager( + source: JsonValue | undefined, +): ConfiguredPackageManagerInfo | undefined { + if (source && isJsonObject(source)) { + const value = source['packageManager']; + if (typeof value === 'string') { + return value.split('@', 2) as unknown as ConfiguredPackageManagerInfo; + } + } + + return undefined; +} diff --git a/packages/angular/cli/src/command-builder/definitions.ts b/packages/angular/cli/src/command-builder/definitions.ts index 8bfc8f4a4d51..d552b432b685 100644 --- a/packages/angular/cli/src/command-builder/definitions.ts +++ b/packages/angular/cli/src/command-builder/definitions.ts @@ -8,8 +8,8 @@ import { logging } from '@angular-devkit/core'; import type { Argv, CamelCaseKey } from 'yargs'; +import type { PackageManager } from '../package-managers/package-manager'; import { AngularWorkspace } from '../utilities/config'; -import { PackageManagerUtils } from '../utilities/package-manager'; export enum CommandScope { /** Command can only run inside an Angular workspace. */ @@ -28,7 +28,7 @@ export interface CommandContext { workspace?: AngularWorkspace; globalConfiguration: AngularWorkspace; logger: logging.Logger; - packageManager: PackageManagerUtils; + packageManager: PackageManager; yargsInstance: Argv<{}>; /** Arguments parsed in free-from without parser configuration. */ diff --git a/packages/angular/cli/src/commands/add/cli.ts b/packages/angular/cli/src/commands/add/cli.ts index 0531604d63d1..a27c6405f18f 100644 --- a/packages/angular/cli/src/commands/add/cli.ts +++ b/packages/angular/cli/src/commands/add/cli.ts @@ -10,7 +10,7 @@ import { Listr, ListrRenderer, ListrTaskWrapper, color, figures } from 'listr2'; import assert from 'node:assert'; import fs from 'node:fs/promises'; import { createRequire } from 'node:module'; -import { dirname, join, relative, resolve } from 'node:path'; +import { dirname, join } from 'node:path'; import npa from 'npm-package-arg'; import semver, { Range, compare, intersects, prerelease, satisfies, valid } from 'semver'; import { Argv } from 'yargs'; @@ -25,16 +25,13 @@ import { } from '../../command-builder/schematics-command-module'; import { NgAddSaveDependency, - PackageManager, PackageManagerError, PackageManifest, PackageMetadata, - createPackageManager, } from '../../package-managers'; import { assertIsError } from '../../utilities/error'; import { isTTY } from '../../utilities/tty'; import { VERSION } from '../../utilities/version'; -import { getCacheConfig } from '../cache/utilities'; class CommandError extends Error {} @@ -46,7 +43,6 @@ interface AddCommandArgs extends SchematicsCommandArgs { } interface AddCommandTaskContext { - packageManager: PackageManager; packageIdentifier: npa.Result; savePackage?: NgAddSaveDependency; collectionName?: string; @@ -198,7 +194,8 @@ export default class AddCommandModule [ { title: 'Determining Package Manager', - task: (context, task) => this.determinePackageManagerTask(context, task), + task: (_context, task) => + (task.output = `Using package manager: ${color.dim(this.context.packageManager.name)}`), rendererOptions: { persistentOutput: true }, }, { @@ -309,47 +306,14 @@ export default class AddCommandModule } } - private async determinePackageManagerTask( - context: AddCommandTaskContext, - task: AddCommandTaskWrapper, - ): Promise { - let tempDirectory: string | undefined; - const tempOptions = ['node_modules']; - - const cacheConfig = getCacheConfig(this.context.workspace); - if (cacheConfig.enabled) { - const cachePath = resolve(this.context.root, cacheConfig.path); - if (!relative(this.context.root, cachePath).startsWith('..')) { - tempOptions.push(cachePath); - } - } - - for (const tempOption of tempOptions) { - try { - const directory = resolve(this.context.root, tempOption); - if ((await fs.stat(directory)).isDirectory()) { - tempDirectory = directory; - break; - } - } catch {} - } - - context.packageManager = await createPackageManager({ - cwd: this.context.root, - logger: this.context.logger, - dryRun: context.dryRun, - tempDirectory, - }); - task.output = `Using package manager: ${color.dim(context.packageManager.name)}`; - } - private async findCompatiblePackageVersionTask( context: AddCommandTaskContext, task: AddCommandTaskWrapper, options: Options, ): Promise { const { registry, verbose } = options; - const { packageManager, packageIdentifier } = context; + const { packageIdentifier } = context; + const { packageManager } = this.context; const packageName = packageIdentifier.name; assert(packageName, 'Registry package identifiers should always have a name.'); @@ -446,7 +410,8 @@ export default class AddCommandModule rejectionReasons: string[]; }, ): Promise { - const { packageManager, packageIdentifier } = context; + const { packageIdentifier } = context; + const { packageManager } = this.context; const { registry, verbose, rejectionReasons } = options; const packageName = packageIdentifier.name; assert(packageName, 'Package name must be defined.'); @@ -524,9 +489,12 @@ export default class AddCommandModule let manifest; try { - manifest = await context.packageManager.getManifest(context.packageIdentifier.toString(), { - registry, - }); + manifest = await this.context.packageManager.getManifest( + context.packageIdentifier.toString(), + { + registry, + }, + ); } catch (e) { assertIsError(e); throw new CommandError( @@ -585,7 +553,8 @@ export default class AddCommandModule options: Options, ): Promise { const { registry } = options; - const { packageManager, packageIdentifier, savePackage } = context; + const { packageIdentifier, savePackage } = context; + const { packageManager } = this.context; // Only show if installation will actually occur task.title = 'Installing package'; diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 8703eb017f24..9f990845b59b 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -20,12 +20,7 @@ import { Options, } from '../../command-builder/command-module'; import { SchematicEngineHost } from '../../command-builder/utilities/schematic-engine-host'; -import { - InstalledPackage, - PackageManager, - PackageManifest, - createPackageManager, -} from '../../package-managers'; +import type { InstalledPackage, PackageManager, PackageManifest } from '../../package-managers'; import { colors } from '../../utilities/color'; import { disableVersionCheck } from '../../utilities/environment-options'; import { assertIsError } from '../../utilities/error'; @@ -168,13 +163,7 @@ export default class UpdateCommandModule extends CommandModule): Promise { - const { logger } = this.context; - // Instantiate the package manager - const packageManager = await createPackageManager({ - cwd: this.context.root, - logger, - configuredPackageManager: this.context.packageManager.name, - }); + const { logger, packageManager } = this.context; // Check if the current installed CLI version is older than the latest compatible version. // Skip when running `ng update` without a package name as this will not trigger an actual update. diff --git a/packages/angular/cli/src/commands/update/utilities/cli-version.ts b/packages/angular/cli/src/commands/update/utilities/cli-version.ts index 15e9a0ef32a8..6067b81504d4 100644 --- a/packages/angular/cli/src/commands/update/utilities/cli-version.ts +++ b/packages/angular/cli/src/commands/update/utilities/cli-version.ts @@ -11,7 +11,7 @@ import { spawnSync } from 'node:child_process'; import { existsSync, promises as fs } from 'node:fs'; import { join, resolve } from 'node:path'; import * as semver from 'semver'; -import { PackageManager } from '../../../package-managers'; +import type { PackageManager } from '../../../package-managers'; import { VERSION } from '../../../utilities/version'; import { ANGULAR_PACKAGES_REGEXP } from './constants'; diff --git a/packages/angular/cli/src/commands/version/cli.ts b/packages/angular/cli/src/commands/version/cli.ts index 7dfb138aa382..205f0bc7e55e 100644 --- a/packages/angular/cli/src/commands/version/cli.ts +++ b/packages/angular/cli/src/commands/version/cli.ts @@ -56,7 +56,7 @@ export default class VersionCommandModule */ async run(options: { json?: boolean }): Promise { const { logger } = this.context; - const versionInfo = gatherVersionInfo(this.context); + const versionInfo = await gatherVersionInfo(this.context); if (options.json) { // eslint-disable-next-line no-console diff --git a/packages/angular/cli/src/commands/version/version-info.ts b/packages/angular/cli/src/commands/version/version-info.ts index 850cc18d0947..3e75c2c58cac 100644 --- a/packages/angular/cli/src/commands/version/version-info.ts +++ b/packages/angular/cli/src/commands/version/version-info.ts @@ -7,6 +7,8 @@ */ import { createRequire } from 'node:module'; +import { CommandContext } from '../../command-builder/definitions'; +import { PackageManager } from '../../package-managers'; import { VERSION } from '../../utilities/version'; /** @@ -81,10 +83,7 @@ const PACKAGE_PATTERNS = [ * Gathers all the version information from the environment and workspace. * @returns An object containing all the version information. */ -export function gatherVersionInfo(context: { - packageManager: { name: string; version: string | undefined }; - root: string; -}): VersionInfo { +export async function gatherVersionInfo(context: CommandContext): Promise { // Trailing slash is used to allow the path to be treated as a directory const workspaceRequire = createRequire(context.root + '/'); @@ -132,7 +131,7 @@ export function gatherVersionInfo(context: { }, packageManager: { name: context.packageManager.name, - version: context.packageManager.version, + version: await context.packageManager.getVersion(), }, }, packages, diff --git a/packages/angular/cli/src/package-managers/factory.ts b/packages/angular/cli/src/package-managers/factory.ts index 790a48140285..e3635ae7b30f 100644 --- a/packages/angular/cli/src/package-managers/factory.ts +++ b/packages/angular/cli/src/package-managers/factory.ts @@ -14,6 +14,11 @@ import { Logger } from './logger'; import { PackageManager } from './package-manager'; import { PackageManagerName, SUPPORTED_PACKAGE_MANAGERS } from './package-manager-descriptor'; +/** + * Information about the package manager to use for a given project. + */ +export type ConfiguredPackageManagerInfo = [name?: PackageManagerName, version?: string]; + /** * The default package manager to use when none is discovered or configured. */ @@ -59,7 +64,7 @@ async function getPackageManagerVersion( async function determinePackageManager( host: Host, cwd: string, - configured?: PackageManagerName, + configured: ConfiguredPackageManagerInfo = [], logger?: Logger, dryRun?: boolean, ): Promise<{ @@ -67,11 +72,10 @@ async function determinePackageManager( source: 'configured' | 'discovered' | 'default'; version?: string; }> { - let name: PackageManagerName; + let [name, version] = configured; let source: 'configured' | 'discovered' | 'default'; - if (configured) { - name = configured; + if (name) { source = 'configured'; logger?.debug(`Using configured package manager: '${name}'.`); } else { @@ -89,7 +93,6 @@ async function determinePackageManager( } } - let version: string | undefined; if (name === 'yarn' && !dryRun) { assert.deepStrictEqual( SUPPORTED_PACKAGE_MANAGERS.yarn.versionCommand, @@ -98,7 +101,7 @@ async function determinePackageManager( ); try { - version = await getPackageManagerVersion(host, cwd, name, logger); + version ??= await getPackageManagerVersion(host, cwd, name, logger); if (version && major(version) < 2) { name = 'yarn-classic'; logger?.debug(`Detected yarn classic. Using 'yarn-classic'.`); @@ -124,7 +127,7 @@ async function determinePackageManager( */ export async function createPackageManager(options: { cwd: string; - configuredPackageManager?: PackageManagerName; + configuredPackageManager?: ConfiguredPackageManagerInfo; logger?: Logger; dryRun?: boolean; tempDirectory?: string; diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts index 4c8744fd8781..f7509ff01a99 100644 --- a/packages/angular/cli/src/package-managers/host.ts +++ b/packages/angular/cli/src/package-managers/host.ts @@ -15,7 +15,7 @@ import { type SpawnOptions, spawn } from 'node:child_process'; import { Stats, constants } from 'node:fs'; -import { copyFile, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; +import { copyFile, mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises'; import { platform, tmpdir } from 'node:os'; import { join } from 'node:path'; import { PackageManagerError } from './error'; @@ -24,6 +24,14 @@ import { PackageManagerError } from './error'; * An abstraction layer for side-effectful operations. */ export interface Host { + /** + * Creates a directory. + * @param path The path to the directory. + * @param options Options for the directory creation. + * @returns A promise that resolves when the directory is created. + */ + mkdir(path: string, options?: { recursive?: boolean }): Promise; + /** * Gets the stats of a file or directory. * @param path The path to the file or directory. @@ -101,10 +109,12 @@ export interface Host { export const NodeJS_HOST: Host = { stat, readdir, + mkdir, readFile: (path: string) => readFile(path, { encoding: 'utf8' }), copyFile: (src, dest) => copyFile(src, dest, constants.COPYFILE_FICLONE), writeFile, - createTempDirectory: (baseDir?: string) => mkdtemp(join(baseDir ?? tmpdir(), 'angular-cli-')), + createTempDirectory: (baseDir?: string) => + mkdtemp(join(baseDir ?? tmpdir(), 'angular-cli-tmp-packages-')), deleteDirectory: (path: string) => rm(path, { recursive: true, force: true }), runCommand: async ( command: string, diff --git a/packages/angular/cli/src/package-managers/package-manager.ts b/packages/angular/cli/src/package-managers/package-manager.ts index 45c9639d954b..7be28fc108f2 100644 --- a/packages/angular/cli/src/package-managers/package-manager.ts +++ b/packages/angular/cli/src/package-managers/package-manager.ts @@ -12,7 +12,7 @@ * a flexible and secure abstraction over the various package managers. */ -import { join } from 'node:path'; +import { join, relative, resolve } from 'node:path'; import npa from 'npm-package-arg'; import { maxSatisfying } from 'semver'; import { PackageManagerError } from './error'; @@ -61,8 +61,7 @@ export interface PackageManagerOptions { logger?: Logger; /** - * The path to use as the base for temporary directories. - * If not specified, the system's temporary directory will be used. + * The base path to use for temporary directories. */ tempDirectory?: string; @@ -340,7 +339,6 @@ export class PackageManager { /** * Gets the version of the package manager binary. - * @returns A promise that resolves to the trimmed version string. */ async getVersion(): Promise { if (this.#version) { @@ -544,6 +542,31 @@ export class PackageManager { } } + private async getTemporaryDirectory(): Promise { + const { tempDirectory } = this.options; + + if (tempDirectory && !relative(this.cwd, tempDirectory).startsWith('..')) { + try { + await this.host.stat(tempDirectory); + } catch { + // If the cache directory doesn't exist, create it. + await this.host.mkdir(tempDirectory, { recursive: true }); + } + + return tempDirectory; + } + + const tempOptions = ['node_modules']; + for (const tempOption of tempOptions) { + try { + const directory = resolve(this.cwd, tempOption); + if ((await this.host.stat(directory)).isDirectory()) { + return directory; + } + } catch {} + } + } + /** * Acquires a package by installing it into a temporary directory. The caller is * responsible for managing the lifecycle of the temporary directory by calling @@ -558,7 +581,9 @@ export class PackageManager { specifier: string, options: { registry?: string; ignoreScripts?: boolean } = {}, ): Promise<{ workingDirectory: string; cleanup: () => Promise }> { - const workingDirectory = await this.host.createTempDirectory(this.options.tempDirectory); + const workingDirectory = await this.host.createTempDirectory( + await this.getTemporaryDirectory(), + ); const cleanup = () => this.host.deleteDirectory(workingDirectory); // Some package managers, like yarn classic, do not write a package.json when adding a package. diff --git a/packages/angular/cli/src/package-managers/testing/mock-host.ts b/packages/angular/cli/src/package-managers/testing/mock-host.ts index 2411c8917318..0a22266467a0 100644 --- a/packages/angular/cli/src/package-managers/testing/mock-host.ts +++ b/packages/angular/cli/src/package-managers/testing/mock-host.ts @@ -23,6 +23,10 @@ export class MockHost implements Host { } } + mkdir(path: string, options?: { recursive?: boolean }): Promise { + throw new Error('Method not implemented.'); + } + stat(path: string): Promise { const content = this.fs.get(path.replace(/\\/g, '/')); if (content === undefined) { diff --git a/packages/angular/cli/src/utilities/package-manager.ts b/packages/angular/cli/src/utilities/package-manager.ts deleted file mode 100644 index b913a3bfd72d..000000000000 --- a/packages/angular/cli/src/utilities/package-manager.ts +++ /dev/null @@ -1,339 +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 { JsonValue, isJsonObject } from '@angular-devkit/core'; -import { execSync, spawn } from 'node:child_process'; -import { promises as fs, readFileSync, readdirSync, realpathSync, rmSync } from 'node:fs'; -import { tmpdir } from 'node:os'; -import { join } from 'node:path'; -import { PackageManager } from '../../lib/config/workspace-schema'; -import { AngularWorkspace, getProjectByCwd } from './config'; -import { memoize } from './memoize'; - -/** - * A map of package managers to their corresponding lockfile names. - */ -const LOCKFILE_NAMES: Readonly> = { - [PackageManager.Yarn]: 'yarn.lock', - [PackageManager.Pnpm]: 'pnpm-lock.yaml', - [PackageManager.Bun]: ['bun.lockb', 'bun.lock'], - [PackageManager.Npm]: 'package-lock.json', -}; - -interface PackageManagerOptions { - saveDev: string; - install: string; - installAll?: string; - prefix: string; - noLockfile: string; -} - -export interface PackageManagerUtilsContext { - globalConfiguration: AngularWorkspace; - workspace?: AngularWorkspace; - root: string; -} - -/** - * Utilities for interacting with various package managers. - */ -export class PackageManagerUtils { - /** - * @param context The context for the package manager utilities, including workspace and global configuration. - */ - constructor(private readonly context: PackageManagerUtilsContext) {} - - /** Get the package manager name. */ - get name(): PackageManager { - return this.getName(); - } - - /** Get the package manager version. */ - get version(): string | undefined { - return this.getVersion(this.name); - } - - /** Install a single package. */ - async install( - packageName: string, - save: 'dependencies' | 'devDependencies' | boolean = true, - extraArgs: string[] = [], - cwd?: string, - ): Promise { - const packageManagerArgs = this.getArguments(); - const installArgs: string[] = [packageManagerArgs.install, packageName]; - - if (save === 'devDependencies') { - installArgs.push(packageManagerArgs.saveDev); - } else if (save === false) { - installArgs.push(packageManagerArgs.noLockfile); - } - - return this.run([...installArgs, ...extraArgs], { cwd, silent: true }); - } - - /** Install all packages. */ - async installAll(extraArgs: string[] = [], cwd?: string): Promise { - const packageManagerArgs = this.getArguments(); - const installArgs: string[] = []; - if (packageManagerArgs.installAll) { - installArgs.push(packageManagerArgs.installAll); - } - - return this.run([...installArgs, ...extraArgs], { cwd, silent: true }); - } - - /** Install a single package temporary. */ - async installTemp( - packageName: string, - extraArgs?: string[], - ): Promise<{ - success: boolean; - tempNodeModules: string; - }> { - const tempPath = await fs.mkdtemp(join(realpathSync(tmpdir()), 'angular-cli-packages-')); - - // clean up temp directory on process exit - process.on('exit', () => { - try { - rmSync(tempPath, { recursive: true, maxRetries: 3 }); - } catch {} - }); - - // NPM will warn when a `package.json` is not found in the install directory - // Example: - // npm WARN enoent ENOENT: no such file or directory, open '/tmp/.ng-temp-packages-84Qi7y/package.json' - // npm WARN .ng-temp-packages-84Qi7y No description - // npm WARN .ng-temp-packages-84Qi7y No repository field. - // npm WARN .ng-temp-packages-84Qi7y No license field. - - // While we can use `npm init -y` we will end up needing to update the 'package.json' anyways - // because of missing fields. - await fs.writeFile( - join(tempPath, 'package.json'), - JSON.stringify({ - name: 'temp-cli-install', - description: 'temp-cli-install', - repository: 'temp-cli-install', - license: 'MIT', - }), - ); - - // setup prefix/global modules path - const packageManagerArgs = this.getArguments(); - const tempNodeModules = join(tempPath, 'node_modules'); - // Yarn will not append 'node_modules' to the path - const prefixPath = this.name === PackageManager.Yarn ? tempNodeModules : tempPath; - const installArgs: string[] = [ - ...(extraArgs ?? []), - `${packageManagerArgs.prefix}="${prefixPath}"`, - packageManagerArgs.noLockfile, - ]; - - return { - success: await this.install(packageName, true, installArgs, tempPath), - tempNodeModules, - }; - } - - private getArguments(): PackageManagerOptions { - switch (this.name) { - case PackageManager.Yarn: - return { - saveDev: '--dev', - install: 'add', - prefix: '--modules-folder', - noLockfile: '--no-lockfile', - }; - case PackageManager.Pnpm: - return { - saveDev: '--save-dev', - install: 'add', - installAll: 'install', - prefix: '--prefix', - noLockfile: '--no-lockfile', - }; - case PackageManager.Bun: - return { - saveDev: '--dev', - install: 'add', - installAll: 'install', - prefix: '--cwd', - noLockfile: '--no-save', - }; - default: - return { - saveDev: '--save-dev', - install: 'install', - installAll: 'install', - prefix: '--prefix', - noLockfile: '--no-package-lock', - }; - } - } - - private async run( - args: string[], - options: { cwd?: string; silent?: boolean } = {}, - ): Promise { - const { cwd = process.cwd(), silent = false } = options; - - return new Promise((resolve) => { - const bufferedOutput: { stream: NodeJS.WriteStream; data: Buffer }[] = []; - - const childProcess = spawn(`${this.name} ${args.join(' ')}`, { - // Always pipe stderr to allow for failures to be reported - stdio: silent ? ['ignore', 'ignore', 'pipe'] : 'pipe', - shell: true, - cwd, - }).on('close', (code: number) => { - if (code === 0) { - resolve(true); - } else { - bufferedOutput.forEach(({ stream, data }) => stream.write(data)); - resolve(false); - } - }); - - childProcess.stdout?.on('data', (data: Buffer) => - bufferedOutput.push({ stream: process.stdout, data: data }), - ); - childProcess.stderr?.on('data', (data: Buffer) => - bufferedOutput.push({ stream: process.stderr, data: data }), - ); - }); - } - - @memoize - private getVersion(name: PackageManager): string | undefined { - try { - return execSync(`${name} --version`, { - encoding: 'utf8', - stdio: ['ignore', 'pipe', 'ignore'], - env: { - ...process.env, - // NPM updater notifier will prevents the child process from closing until it timeout after 3 minutes. - NO_UPDATE_NOTIFIER: '1', - NPM_CONFIG_UPDATE_NOTIFIER: 'false', - }, - }).trim(); - } catch { - return undefined; - } - } - - @memoize - private getName(): PackageManager { - const packageManager = this.getConfiguredPackageManager(); - if (packageManager) { - return packageManager; - } - - const filesInRoot = readdirSync(this.context.root); - const hasNpmLock = this.hasLockfile(PackageManager.Npm, filesInRoot); - const hasYarnLock = this.hasLockfile(PackageManager.Yarn, filesInRoot); - const hasPnpmLock = this.hasLockfile(PackageManager.Pnpm, filesInRoot); - const hasBunLock = this.hasLockfile(PackageManager.Bun, filesInRoot); - - // PERF NOTE: `this.getVersion` spawns the package a the child_process which can take around ~300ms at times. - // Therefore, we should only call this method when needed. IE: don't call `this.getVersion(PackageManager.Pnpm)` unless truly needed. - // The result of this method is not stored in a variable because it's memoized. - - if (hasNpmLock) { - // Has NPM lock file. - if (!hasYarnLock && !hasPnpmLock && !hasBunLock && this.getVersion(PackageManager.Npm)) { - // Only NPM lock file and NPM binary is available. - return PackageManager.Npm; - } - } else { - // No NPM lock file. - if (hasYarnLock && this.getVersion(PackageManager.Yarn)) { - // Yarn lock file and Yarn binary is available. - return PackageManager.Yarn; - } else if (hasPnpmLock && this.getVersion(PackageManager.Pnpm)) { - // PNPM lock file and PNPM binary is available. - return PackageManager.Pnpm; - } else if (hasBunLock && this.getVersion(PackageManager.Bun)) { - // Bun lock file and Bun binary is available. - return PackageManager.Bun; - } - } - - if (!this.getVersion(PackageManager.Npm)) { - // Doesn't have NPM installed. - const hasYarn = !!this.getVersion(PackageManager.Yarn); - const hasPnpm = !!this.getVersion(PackageManager.Pnpm); - const hasBun = !!this.getVersion(PackageManager.Bun); - - if (hasYarn && !hasPnpm && !hasBun) { - return PackageManager.Yarn; - } else if (hasPnpm && !hasYarn && !hasBun) { - return PackageManager.Pnpm; - } else if (hasBun && !hasYarn && !hasPnpm) { - return PackageManager.Bun; - } - } - - // TODO: This should eventually inform the user of ambiguous package manager usage. - // Potentially with a prompt to choose and optionally set as the default. - return PackageManager.Npm; - } - - /** - * Checks if a lockfile for a specific package manager exists in the root directory. - * @param packageManager The package manager to check for. - * @param filesInRoot An array of file names in the root directory. - * @returns True if the lockfile exists, false otherwise. - */ - private hasLockfile(packageManager: PackageManager, filesInRoot: string[]): boolean { - const lockfiles = LOCKFILE_NAMES[packageManager]; - - return typeof lockfiles === 'string' - ? filesInRoot.includes(lockfiles) - : lockfiles.some((lockfile) => filesInRoot.includes(lockfile)); - } - - private getConfiguredPackageManager(): PackageManager | undefined { - const { workspace: localWorkspace, globalConfiguration: globalWorkspace } = this.context; - let result: PackageManager | undefined; - - try { - const packageJsonPath = join(this.context.root, 'package.json'); - const pkgJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as JsonValue; - result = getPackageManager(pkgJson); - } catch {} - - if (result) { - return result; - } - - if (localWorkspace) { - const project = getProjectByCwd(localWorkspace); - if (project) { - result = getPackageManager(localWorkspace.projects.get(project)?.extensions['cli']); - } - - result ??= getPackageManager(localWorkspace.extensions['cli']); - } - - result ??= getPackageManager(globalWorkspace.extensions['cli']); - - return result; - } -} - -function getPackageManager(source: JsonValue | undefined): PackageManager | undefined { - if (source && isJsonObject(source)) { - const value = source['packageManager']; - if (typeof value === 'string') { - return value.split('@', 1)[0] as PackageManager; - } - } - - return undefined; -} From b2d8706f82ec5761227b807f762ef65fa57c5cab Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 23 Jan 2026 08:06:42 +0000 Subject: [PATCH 2127/2162] build: update bazel dependencies See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 93801502967a..42b38e3fa4f5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -7,7 +7,7 @@ module( bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "yq.bzl", version = "0.3.4") bazel_dep(name = "rules_nodejs", version = "6.7.3") -bazel_dep(name = "aspect_rules_js", version = "2.9.1") +bazel_dep(name = "aspect_rules_js", version = "2.9.2") bazel_dep(name = "aspect_rules_ts", version = "3.8.3") bazel_dep(name = "rules_pkg", version = "1.2.0") bazel_dep(name = "rules_cc", version = "0.2.16") @@ -18,7 +18,7 @@ bazel_dep(name = "aspect_rules_jasmine", version = "2.0.2") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "7133b97252508f8528e5c5818a9a73cacc2e2a0e", + commit = "e975faa54a52caa45ff932ec806292ce0988d8d4", remote = "https://github.com/devversion/rules_angular.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 58f36f872e9b..574ffe04b8cb 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -13,6 +13,7 @@ "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.2/MODULE.bazel": "30dfabbfae0139b1f0036e01c201dd4c0167da3017f0b7ef3820d78e07622989", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/MODULE.bazel": "004ba890363d05372a97248c37205ae64b6fa31047629cd2c0895a9d0c7779e8", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/source.json": "ac2c3213df8f985785f1d0aeb7f0f73d5324e6e67d593d9b9470fb74a25d4a9b", @@ -27,7 +28,8 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/MODULE.bazel": "77b49cd52fe3d36d6caa857d7b59064547f26221fbe6ac499a973dcff033e745", - "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/source.json": "2f53efd9718ff1d92435fd0388429fd7d7859950b6eb15348f56bbfcbfdacc5c", + "https://bcr.bazel.build/modules/aspect_rules_js/2.9.2/MODULE.bazel": "93fd5b85e6e912fb0712cbab453c43271d4ea33a093f84fd587638fbc9f8c145", + "https://bcr.bazel.build/modules/aspect_rules_js/2.9.2/source.json": "4bff7c03ab387b60deb15649ba575688e62f2a71a7544cbc7a660b19ec473808", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", "https://bcr.bazel.build/modules/aspect_rules_ts/3.7.0/MODULE.bazel": "5aace216caf88638950ef061245d23c36f57c8359e56e97f02a36f70bb09c50f", "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.3/MODULE.bazel": "a26c28ebcd0c0d50ab0708ac21fa48bd2dced3a4dad4c31a2fa48588b42ad762", @@ -157,6 +159,7 @@ "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", "https://bcr.bazel.build/modules/rules_nodejs/6.2.0/MODULE.bazel": "ec27907f55eb34705adb4e8257952162a2d4c3ed0f0b3b4c3c1aad1fac7be35e", "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.3/MODULE.bazel": "b66eadebd10f1f1b25f52f95ab5213a57e82c37c3f656fcd9a57ad04d2264ce7", "https://bcr.bazel.build/modules/rules_nodejs/6.5.0/MODULE.bazel": "546d0cf79f36f9f6e080816045f97234b071c205f4542e3351bd4424282a8810", "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", "https://bcr.bazel.build/modules/rules_nodejs/6.7.3/MODULE.bazel": "c22a48b2a0dbf05a9dc5f83837bbc24c226c1f6e618de3c3a610044c9f336056", @@ -211,7 +214,7 @@ "moduleExtensions": { "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { "general": { - "bzlTransitiveDigest": "RI14KgUrvKQ5YNDfXpXTphbCxvV+TKnasDm/ltO1VkA=", + "bzlTransitiveDigest": "aigjS9xHJ6Ceed5bsWHVpYu0wQq5x5LKvrE+TrCwiaY=", "usagesDigest": "ToTaCONCN/E05krnHXLM1kpV1zrHNxHrGpUip973II4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -412,8 +415,8 @@ }, "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "k8N/8kN3PnK4a8S/PlynWenNzI5NCiFM0O/A1AKzf7o=", - "usagesDigest": "8wceBDgbfK9LnVxIRFNkc8rPtZhRQKcrR7g/1g6dl74=", + "bzlTransitiveDigest": "VgHl/whC37LJd2Xugb6EJemnvz0YIiZlw3x2My8Zi7I=", + "usagesDigest": "BQW2UOsCKi2xmRRc0Twn7kR7gEOd+tAUqrU9ZhNnr3A=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -633,7 +636,7 @@ "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { "general": { "bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=", - "usagesDigest": "Ol+lwuWMyJTsR9+yEnTcQXmP8sf4B85JAhF3NJZvbNQ=", + "usagesDigest": "G33c87er81qEhciV5nYWbDUewCTGgw8HkmLr96L5ORE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -642,7 +645,7 @@ "repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository", "attributes": { "deps": { - "aspect_rules_js": "2.9.1", + "aspect_rules_js": "2.9.2", "aspect_rules_ts": "3.8.3", "aspect_rules_esbuild": "0.25.0", "aspect_rules_jasmine": "2.0.2", @@ -1094,7 +1097,7 @@ "@@rules_nodejs+//nodejs:extensions.bzl%node": { "general": { "bzlTransitiveDigest": "4pUxCNc22K4I+6+4Nxu52Hur12tFRfa1JMsN5mdDv60=", - "usagesDigest": "A/PdHhasVyLRZcsg7lsY6soGxHGTzGCru+3HWDssiVU=", + "usagesDigest": "6UAmdIABVpqhlkQ3A3NGscf00ds9dFEt+lei3DibyqM=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -4676,7 +4679,7 @@ "@@yq.bzl+//yq:extensions.bzl%yq": { "general": { "bzlTransitiveDigest": "tDqk+ntWTdxNAWPDjRY1uITgHbti2jcXR5ZdinltBs0=", - "usagesDigest": "H4WOOwwHPUO41F0K/ZT1Znd7TFScuiz4NqqtF7PQlFw=", + "usagesDigest": "OQwtwmKiZAvI0n0B86XlM4tmQHq4zcjFjAEiRGPhXVI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, From facd77a3f5e20e298e1dfa2495cf798f2afc2271 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 23 Jan 2026 20:06:54 +0000 Subject: [PATCH 2128/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 44 +- MODULE.bazel | 2 +- MODULE.bazel.lock | 4 +- package.json | 28 +- packages/angular/ssr/package.json | 12 +- .../hello-world-lib/projects/lib/package.json | 4 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 897 +++++++++--------- tests/e2e/ng-snapshot/package.json | 32 +- 14 files changed, 542 insertions(+), 551 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 98ebacbd708d..99bcb2dbf629 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + - uses: angular/dev-infra/github-actions/branch-manager@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a497a0bcb4f1..0b1fc6d09fb9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - 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 483116f396c3..52dbbde93e5c 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + - uses: angular/dev-infra/github-actions/pull-request-labeling@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + - uses: angular/dev-infra/github-actions/post-approval-changes@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 341150e3b5c3..993e018ae35d 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@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + - uses: angular/dev-infra/github-actions/feature-request@eaf8b84148f9fd8e974c6498f4cd19602bb7814d with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index b7629f0c0fbb..1c6ff8062512 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@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - 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@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - 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 a91f9c7c0639..f73f6a2fed16 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup ESLint Caching uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/linting/licenses@eaf8b84148f9fd8e974c6498f4cd19602bb7814d build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 42b38e3fa4f5..a1cff69be484 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62", + commit = "eaf8b84148f9fd8e974c6498f4cd19602bb7814d", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 574ffe04b8cb..2e021c7b18d0 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -12,7 +12,6 @@ "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", - "https://bcr.bazel.build/modules/aspect_bazel_lib/2.17.1/MODULE.bazel": "9b027af55f619c7c444cead71061578fab6587e5e1303fa4ed61d49d2b1a7262", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.2/MODULE.bazel": "30dfabbfae0139b1f0036e01c201dd4c0167da3017f0b7ef3820d78e07622989", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/MODULE.bazel": "004ba890363d05372a97248c37205ae64b6fa31047629cd2c0895a9d0c7779e8", @@ -27,7 +26,6 @@ "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", "https://bcr.bazel.build/modules/aspect_rules_js/2.4.2/MODULE.bazel": "0d01db38b96d25df7ed952a5e96eac4b3802723d146961974bf020f6dd07591d", "https://bcr.bazel.build/modules/aspect_rules_js/2.6.2/MODULE.bazel": "ed2a871f4ab8fbde0cab67c425745069d84ea64b64313fa1a2954017326511f5", - "https://bcr.bazel.build/modules/aspect_rules_js/2.9.1/MODULE.bazel": "77b49cd52fe3d36d6caa857d7b59064547f26221fbe6ac499a973dcff033e745", "https://bcr.bazel.build/modules/aspect_rules_js/2.9.2/MODULE.bazel": "93fd5b85e6e912fb0712cbab453c43271d4ea33a093f84fd587638fbc9f8c145", "https://bcr.bazel.build/modules/aspect_rules_js/2.9.2/source.json": "4bff7c03ab387b60deb15649ba575688e62f2a71a7544cbc7a660b19ec473808", "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.3/MODULE.bazel": "d09db394970f076176ce7bab5b5fa7f0d560fd4f30b8432ea5e2c2570505b130", @@ -416,7 +414,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "VgHl/whC37LJd2Xugb6EJemnvz0YIiZlw3x2My8Zi7I=", - "usagesDigest": "BQW2UOsCKi2xmRRc0Twn7kR7gEOd+tAUqrU9ZhNnr3A=", + "usagesDigest": "r9KxQq3IUJ6uYoKqfE3aIolq+d2pje5F0Z7jlCaHq/Q=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index ea50e457c5c3..7e7250022f35 100644 --- a/package.json +++ b/package.json @@ -42,20 +42,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.1.0-rc.0", - "@angular/cdk": "21.2.0-next.0", - "@angular/common": "21.1.0-rc.0", - "@angular/compiler": "21.1.0-rc.0", - "@angular/compiler-cli": "21.1.0-rc.0", - "@angular/core": "21.1.0-rc.0", - "@angular/forms": "21.1.0-rc.0", - "@angular/localize": "21.1.0-rc.0", - "@angular/material": "21.2.0-next.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#370b6f7b49470d16721272715642d0ba2ef99556", - "@angular/platform-browser": "21.1.0-rc.0", - "@angular/platform-server": "21.1.0-rc.0", - "@angular/router": "21.1.0-rc.0", - "@angular/service-worker": "21.1.0-rc.0", + "@angular/animations": "21.2.0-next.0", + "@angular/cdk": "21.2.0-next.1", + "@angular/common": "21.2.0-next.0", + "@angular/compiler": "21.2.0-next.0", + "@angular/compiler-cli": "21.2.0-next.0", + "@angular/core": "21.2.0-next.0", + "@angular/forms": "21.2.0-next.0", + "@angular/localize": "21.2.0-next.0", + "@angular/material": "21.2.0-next.1", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#c018d7f32d8d6efb63ee3b15485bfe5c4e085581", + "@angular/platform-browser": "21.2.0-next.0", + "@angular/platform-server": "21.2.0-next.0", + "@angular/router": "21.2.0-next.0", + "@angular/service-worker": "21.2.0-next.0", "@babel/core": "7.28.6", "@bazel/bazelisk": "1.28.1", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index da2930bdc792..3a1d2c7acfa8 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.1.0-rc.0", - "@angular/compiler": "21.1.0-rc.0", - "@angular/core": "21.1.0-rc.0", - "@angular/platform-browser": "21.1.0-rc.0", - "@angular/platform-server": "21.1.0-rc.0", - "@angular/router": "21.1.0-rc.0", + "@angular/common": "21.2.0-next.0", + "@angular/compiler": "21.2.0-next.0", + "@angular/core": "21.2.0-next.0", + "@angular/platform-browser": "21.2.0-next.0", + "@angular/platform-server": "21.2.0-next.0", + "@angular/router": "21.2.0-next.0", "@schematics/angular": "workspace:*", "beasties": "0.4.1" }, diff --git a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json index f6f00dcb4dd5..cacc9ceaa935 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json +++ b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/package.json @@ -2,7 +2,7 @@ "name": "lib", "version": "0.0.1", "peerDependencies": { - "@angular/common": "^21.1.0-next", - "@angular/core": "^21.1.0-next" + "@angular/common": "^21.2.0-next", + "@angular/core": "^21.2.0-next" } } \ No newline at end of file diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 819cffa5f205..4bbbc0d2eb80 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": "21.1.0-rc.0", - "@angular/compiler-cli": "21.1.0-rc.0", + "@angular/compiler": "21.2.0-next.0", + "@angular/compiler-cli": "21.2.0-next.0", "typescript": "5.9.3", "webpack": "5.104.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0f27c875c4a..0ee309984d62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/cdk': specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0 + specifier: 21.2.0-next.0 + version: 21.2.0-next.0 '@angular/compiler-cli': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) '@angular/core': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.1.0-rc.0) - '@angular/material': specifier: 21.2.0-next.0 - version: 21.2.0-next.0(1ca137b8238b4cbde6abd4f3e10ddd1e) + version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(@angular/compiler@21.2.0-next.0) + '@angular/material': + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(543b4cd5add643034223e4134967d1ab) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#370b6f7b49470d16721272715642d0ba2ef99556 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#c018d7f32d8d6efb63ee3b15485bfe5c4e085581 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5)) '@angular/platform-browser': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-rc.0)(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.0)(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.6 version: 7.28.6 @@ -315,7 +315,7 @@ importers: version: link:../../../packages/angular/ssr '@vitest/coverage-v8': specifier: 4.0.17 - version: 4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -327,7 +327,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -348,10 +348,10 @@ importers: version: 7.24.7 '@inquirer/confirm': specifier: 5.1.21 - version: 5.1.21(@types/node@24.10.8) + version: 5.1.21(@types/node@24.10.9) '@vitejs/plugin-basic-ssl': specifier: 2.1.4 - version: 2.1.4(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.4.1 version: 0.4.1 @@ -408,7 +408,7 @@ importers: version: 7.18.2 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.5.1 version: 2.5.1 @@ -427,7 +427,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -436,7 +436,7 @@ importers: version: 7.8.2 vitest: specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: specifier: 3.4.4 @@ -455,10 +455,10 @@ importers: version: link:../../angular_devkit/schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.8) + version: 7.10.1(@types/node@24.10.9) '@listr2/prompt-adapter-inquirer': specifier: 3.0.5 - version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.8))(@types/node@24.10.8)(listr2@9.0.5) + version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.9))(@types/node@24.10.9)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.25.3 version: 1.25.3(zod@4.3.5) @@ -521,23 +521,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0 + specifier: 21.2.0-next.0 + version: 21.2.0-next.0 '@angular/core': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-rc.0)(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.0)(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -736,7 +736,7 @@ importers: version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) ng-packagr: specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.18.2 version: 7.18.2 @@ -820,7 +820,7 @@ importers: version: link:../schematics '@inquirer/prompts': specifier: 7.10.1 - version: 7.10.1(@types/node@24.10.8) + version: 7.10.1(@types/node@24.10.9) packages/ngtools/webpack: devDependencies: @@ -828,11 +828,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0 + specifier: 21.2.0-next.0 + version: 21.2.0-next.0 '@angular/compiler-cli': - specifier: 21.1.0-rc.0 - version: 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) + specifier: 21.2.0-next.0 + version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -944,47 +944,47 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.1.0-rc.0': - resolution: {integrity: sha512-Vk7+xhoM+pSmIjZsVJ9Vw5pg14tSS06xe9eEil1mWqmfZf/LmoKXvc6BQ7wUa1ueynI1xbspc3tPuC26792ljQ==} + '@angular/animations@21.2.0-next.0': + resolution: {integrity: sha512-vxjU8S2ZsVsuBTxN8AD5PcusiKW9KQRKQxlvGW9cryd+Tpwy0VO3Zn5n+TyuAwaV9PjgP5ysowPRnQekdGikiw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-rc.0 + '@angular/core': 21.2.0-next.0 - '@angular/cdk@21.2.0-next.0': - resolution: {integrity: sha512-k7hL8A3bxxsQzOp/KeU0uI0jLckqXq/n26j8u8cH/IQN66V5OBqM+NBV3rXi6Wc/HEBcYhvcBxsecGkpj14Qbw==} + '@angular/cdk@21.2.0-next.1': + resolution: {integrity: sha512-vP5sta8kEDA1rbFCHxi1q4S+gfQdh9rsw+zPnmmP1Cttm3axW8WqEVi+46zul2ATGDERdvMSxteY2v+S2rkILw==} peerDependencies: '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.1.0-rc.0': - resolution: {integrity: sha512-wz7wwrU3SZv9UMrxS1QhtJGLg6MXkucHztrqQzj+IBsetnHZiaQo+Basycgx17xUUFNCMH0B/NXt+iK3yHp04A==} + '@angular/common@21.2.0-next.0': + resolution: {integrity: sha512-sE82GeNk0cq1s3IDCoJtQDeBbfDtW6Ulu9QrYW+gd01J+2LZshGsMHSsjd6pEL/0CUmYn5SeXbc3aWPew4Kzdw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.0-rc.0 + '@angular/core': 21.2.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.1.0-rc.0': - resolution: {integrity: sha512-a8ibvejDuviw5XwLBJDPE1JStCakGftJNKU/UDz73ob+OTaM3yHB7jvFwCdOhrjkPL5tJKpEoUxe8wQvmLrksA==} + '@angular/compiler-cli@21.2.0-next.0': + resolution: {integrity: sha512-B0DhnVWKDqzmfZvqCyqm06Ckyi0zJGDmS3paZGRCj9MmwaWx6wnIbXRvZjIZjq0gq03Y9Llx7a7WLnaaT/stPQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-rc.0 + '@angular/compiler': 21.2.0-next.0 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.1.0-rc.0': - resolution: {integrity: sha512-rrsuuN6/2WtAT82liJXY1XOreonM3VcrOr/ouS38OoZ1NDIEgfv97RKW14It8+1pgpJeXAGsSzkfF3gqwVp2Ig==} + '@angular/compiler@21.2.0-next.0': + resolution: {integrity: sha512-iuGt0ffnFI3ucvMLM/Y/6zLMG5140j/IUcw6VMLXeMQhS7WH8w6gMxQ6jyH6ocoCijVRSysrKSBmH++D4nkoSg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.1.0-rc.0': - resolution: {integrity: sha512-uXNWMDCiz+g05yfH1Qjdy6goMe4wbRZ+hAsQWxQtnVNdLUvnLsUUdTAAazQvPQpcJUq4jOeu/Wv9nrqrJPDoCA==} + '@angular/core@21.2.0-next.0': + resolution: {integrity: sha512-+WFGCHR5dS591KPqXeCYEYH3NQDeBB+3+ienBueuxchAEYkxDc7mfRnUYR0WJ/DS60ZECGkNwe0L0x5NW2tAag==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.1.0-rc.0 + '@angular/compiler': 21.2.0-next.0 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -993,74 +993,74 @@ packages: zone.js: optional: true - '@angular/forms@21.1.0-rc.0': - resolution: {integrity: sha512-3/F6J62Oq9/DiSI39ePvA7YMtZ2pFOk5vMi2FWqPrcOFJ34HxnVTMoxFKpktsrz4mStBvi6DSm0o788I6ImDbw==} + '@angular/forms@21.2.0-next.0': + resolution: {integrity: sha512-QwHbmcbi8rLsaDdbtfw8WDZDHEKqT/wAkGD+7ddf/7dNrUzlStWNFqovUtQZC8vWKG24QSQBcUUykdImLjWK0Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-rc.0 - '@angular/core': 21.1.0-rc.0 - '@angular/platform-browser': 21.1.0-rc.0 + '@angular/common': 21.2.0-next.0 + '@angular/core': 21.2.0-next.0 + '@angular/platform-browser': 21.2.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.1.0-rc.0': - resolution: {integrity: sha512-qUMTFo/Ujtjf1hbElA1cT9v6LXiZ3BScdM9H8RH5VbnhjhOGculTV5IDy0KzZ6RMVS2z71vl2XzNoaFe7Dd4Ag==} + '@angular/localize@21.2.0-next.0': + resolution: {integrity: sha512-jF5bXeqbyAEzi/RDav6qgD0XpAH6+D59oiBIaOu3gBIa7S04OZpJeF7XGtljw9O9lBUsYE3Nn7QLc0vKMus8xg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.0-rc.0 - '@angular/compiler-cli': 21.1.0-rc.0 + '@angular/compiler': 21.2.0-next.0 + '@angular/compiler-cli': 21.2.0-next.0 - '@angular/material@21.2.0-next.0': - resolution: {integrity: sha512-g7dfzJrT4TcX7fjfvYAPPvwNxKj+fVnq1F+Ll5jk91BY+Y2kYVBhEYeVXnC3l5r+HshR0MUst772Tm+4stG56g==} + '@angular/material@21.2.0-next.1': + resolution: {integrity: sha512-kglL0rQrRCbYXAe8yLRv2sBZq/RLbu4c3a3sUvBbJe94JcE1u8N7WOUMAlxD3GeiEghCUFwq4Pel4p1p+ufJKg==} peerDependencies: - '@angular/cdk': 21.2.0-next.0 + '@angular/cdk': 21.2.0-next.1 '@angular/common': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/core': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/forms': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/370b6f7b49470d16721272715642d0ba2ef99556': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/370b6f7b49470d16721272715642d0ba2ef99556} - version: 0.0.0-8d7bdf76c5a620e365ca7d4c6bb5393e362f9f62 + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581} + version: 0.0.0-eaf8b84148f9fd8e974c6498f4cd19602bb7814d hasBin: true - '@angular/platform-browser@21.1.0-rc.0': - resolution: {integrity: sha512-igb4Y7rtZtfltNdA/+p57EcFD9rrH8YMDdVSGXSCiJD+rmQKelmwzjRfpRu1fTBjLWYt9KdS+jUIO1x6IljsuQ==} + '@angular/platform-browser@21.2.0-next.0': + resolution: {integrity: sha512-dKsVn0m+Vu1q8heUKoOF65ObAEkQ4TJhAgbXMx5TF3OQJZUD1BrS3w4fEHMuYE338icZVu7riicG23E1JDr5bw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.1.0-rc.0 - '@angular/common': 21.1.0-rc.0 - '@angular/core': 21.1.0-rc.0 + '@angular/animations': 21.2.0-next.0 + '@angular/common': 21.2.0-next.0 + '@angular/core': 21.2.0-next.0 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.1.0-rc.0': - resolution: {integrity: sha512-+iKbNPXYqUktufLsVKI+dYg9U+ywbFhXOR5BSG4blN8QkyGqY80Dnt6pn7wMJSmrsz25+aUf9+8wSZkfBEkZWA==} + '@angular/platform-server@21.2.0-next.0': + resolution: {integrity: sha512-+Nrbop7mgdgUr4hvFEUhuuQcOl//aN9lWVrLc5CWoRI4beyxOaDHFB4oFCwc/nQf5gD5yHu+IiI60m0wUENCGw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-rc.0 - '@angular/compiler': 21.1.0-rc.0 - '@angular/core': 21.1.0-rc.0 - '@angular/platform-browser': 21.1.0-rc.0 + '@angular/common': 21.2.0-next.0 + '@angular/compiler': 21.2.0-next.0 + '@angular/core': 21.2.0-next.0 + '@angular/platform-browser': 21.2.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.1.0-rc.0': - resolution: {integrity: sha512-PWh7Q9EHed137PdlFtbt7RIpcH6+PY9bpXhdU2B1KkzlOFV0nOjbn4lYSMQjARGp42KgjlSoZd9LSLl02Dg6UQ==} + '@angular/router@21.2.0-next.0': + resolution: {integrity: sha512-A0uXDaveCKFG3Li38eS18pTBhbGJrx8ba1Ph6IuVFg90Tl0jAppV+RSbhyVypTqBkca/9zpQHx88X2w5tqIASw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.0-rc.0 - '@angular/core': 21.1.0-rc.0 - '@angular/platform-browser': 21.1.0-rc.0 + '@angular/common': 21.2.0-next.0 + '@angular/core': 21.2.0-next.0 + '@angular/platform-browser': 21.2.0-next.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.1.0-rc.0': - resolution: {integrity: sha512-xQgTjQDQIZyAyrJzs9AUCAcnrsaTArf4/hYiO8mCdNzcXPUwdA0TEL9gKX7rJMPRrxMfwG7DHobpyj4zJBaR+Q==} + '@angular/service-worker@21.2.0-next.0': + resolution: {integrity: sha512-C0hydwCKfBjht69XP507ocgg62uty5yPrUPTFCzXeNM2RNzwBVT5AEYD29y5CoL+x43DBL7eVFbgQZA2EcKOAA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.1.0-rc.0 + '@angular/core': 21.2.0-next.0 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.1.1': @@ -1080,10 +1080,6 @@ packages: resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} - engines: {node: '>=6.9.0'} - '@babel/core@7.28.6': resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} engines: {node: '>=6.9.0'} @@ -1882,8 +1878,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@firebase/ai@2.6.1': - resolution: {integrity: sha512-qJd9bpABqsanFnwdbjZEDbKKr1jRtuUZ+cHyNBLWsxobH4pd73QncvuO3XlMq4eKBLlg1f5jNdFpJ3G3ABu2Tg==} + '@firebase/ai@2.7.0': + resolution: {integrity: sha512-PwpCz+TtAMWICM7uQNO0mkSPpUKwrMV4NSwHkbVKDvPKoaQmSlO96vIz+Suw2Ao1EaUUsxYb5LGImHWt/fSnRQ==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -1920,15 +1916,15 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/app-compat@0.5.6': - resolution: {integrity: sha512-YYGARbutghQY4zZUWMYia0ib0Y/rb52y72/N0z3vglRHL7ii/AaK9SA7S/dzScVOlCdnbHXz+sc5Dq+r8fwFAg==} + '@firebase/app-compat@0.5.7': + resolution: {integrity: sha512-MO+jfap8IBZQ+K8L2QCiHObyMgpYHrxo4Hc7iJgfb9hjGRW/z1y6LWVdT9wBBK+VJ7cRP2DjAiWQP+thu53hHA==} engines: {node: '>=20.0.0'} '@firebase/app-types@0.9.3': resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - '@firebase/app@0.14.6': - resolution: {integrity: sha512-4uyt8BOrBsSq6i4yiOV/gG6BnnrvTeyymlNcaN/dKvyU1GoolxAafvIvaNP1RCGPlNab3OuE4MKUQuv2lH+PLQ==} + '@firebase/app@0.14.7': + resolution: {integrity: sha512-o3ZfnOx0AWBD5n/36p2zPoB0rDDxQP8H/A60zDLvvfRLtW8b3LfCyV97GKpJaAVV1JMMl/BC89EDzMyzxFZxTw==} engines: {node: '>=20.0.0'} '@firebase/auth-compat@0.6.2': @@ -1976,8 +1972,8 @@ packages: resolution: {integrity: sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==} engines: {node: '>=20.0.0'} - '@firebase/firestore-compat@0.4.3': - resolution: {integrity: sha512-1ylF/njF68Pmb6p0erP0U78XQv1w77Wap4bUmqZ7ZVkmN1oMgplyu0TyirWtCBoKFRV2+SUZfWXvIij/z39LYg==} + '@firebase/firestore-compat@0.4.4': + resolution: {integrity: sha512-JvxxIgi+D5v9BecjLA1YomdyF7LA6CXhJuVK10b4GtRrB3m2O2hT1jJWbKYZYHUAjTaajkvnos+4U5VNxqkI2w==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app-compat': 0.x @@ -1988,8 +1984,8 @@ packages: '@firebase/app-types': 0.x '@firebase/util': 1.x - '@firebase/firestore@4.9.3': - resolution: {integrity: sha512-RVuvhcQzs1sD5Osr2naQS71H0bQMbSnib16uOWAKk3GaKb/WBPyCYSr2Ry7MqlxDP/YhwknUxECL07lw9Rq1nA==} + '@firebase/firestore@4.10.0': + resolution: {integrity: sha512-fgF6EbpoagGWh5Vwfu/7/jYgBFwUCwTlPNVF/aSjHcoEDRXpRsIqVfAFTp1LD+dWAUcAKEK3h+osk8spMJXtxA==} engines: {node: '>=20.0.0'} peerDependencies: '@firebase/app': 0.x @@ -2054,16 +2050,16 @@ packages: peerDependencies: '@firebase/app': 0.x - '@firebase/remote-config-compat@0.2.20': - resolution: {integrity: sha512-P/ULS9vU35EL9maG7xp66uljkZgcPMQOxLj3Zx2F289baTKSInE6+YIkgHEi1TwHoddC/AFePXPpshPlEFkbgg==} + '@firebase/remote-config-compat@0.2.21': + resolution: {integrity: sha512-9+lm0eUycxbu8GO25JfJe4s6R2xlDqlVt0CR6CvN9E6B4AFArEV4qfLoDVRgIEB7nHKwvH2nYRocPWfmjRQTnw==} peerDependencies: '@firebase/app-compat': 0.x '@firebase/remote-config-types@0.5.0': resolution: {integrity: sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==} - '@firebase/remote-config@0.7.0': - resolution: {integrity: sha512-dX95X6WlW7QlgNd7aaGdjAIZUiQkgWgNS+aKNu4Wv92H1T8Ue/NDUjZHd9xb8fHxLXIHNZeco9/qbZzr500MjQ==} + '@firebase/remote-config@0.8.0': + resolution: {integrity: sha512-sJz7C2VACeE257Z/3kY9Ap2WXbFsgsDLfaGfZmmToKAK39ipXxFan+vzB9CSbF6mP7bzjyzEnqPcMXhAnYE6fQ==} peerDependencies: '@firebase/app': 0.x @@ -2123,11 +2119,11 @@ packages: resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==} engines: {node: '>=18'} - '@google/genai@1.35.0': - resolution: {integrity: sha512-ZC1d0PSM5eS73BpbVIgL3ZsmXeMKLVJurxzww1Z9axy3B2eUB3ioEytbQt4Qu0Od6qPluKrTDew9pSi9kEuPaw==} + '@google/genai@1.38.0': + resolution: {integrity: sha512-V/4CQVQGovvGHuS73lwJwHKR9x33kCij3zz/ReEQ4A7RJaV0U7m4k1mvYhFk55cGZdF5JLKu2S9BTaFuEs5xTA==} engines: {node: '>=20.0.0'} peerDependencies: - '@modelcontextprotocol/sdk': ^1.24.0 + '@modelcontextprotocol/sdk': ^1.25.2 peerDependenciesMeta: '@modelcontextprotocol/sdk': optional: true @@ -2463,6 +2459,9 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jasminejs/reporters@1.0.0': + resolution: {integrity: sha512-rM3GG4vx2H1Gp5kYCTr9aKlOEJFd43pzpiMAiy5b1+FUc2ub4e6bS6yCi/WQNDzAa5MVp9++dwcoEtcIfoEnhA==} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -3030,16 +3029,16 @@ packages: resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} engines: {node: '>=18.12'} - '@pnpm/dependency-path@1001.1.8': - resolution: {integrity: sha512-+/SabdOsq4ycO/s1F82mUTmYb9KTE7e74qbXE9caM6slbaJesVqQOKDxSP4RqCy5jkjDz26kpkWzxeNJLowdNQ==} + '@pnpm/dependency-path@1001.1.9': + resolution: {integrity: sha512-C1V4H54GyMfLL47q93PmdVRJkJyNVEE6Ht6cFrMSsjgsR7fxXWqjlem7OaA9MMjSTBB/d/g9mV4xZnoT/HAkDQ==} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.1': resolution: {integrity: sha512-JnzaAVFJIEgwTcB55eww8N3h5B6qJdZqDA2wYkSK+OcTvvMSQb9c2STMhBP6GfkWygG1fs3w8D7JRx9SPZnxJg==} engines: {node: '>=18.12'} - '@pnpm/types@1001.2.0': - resolution: {integrity: sha512-UIju+OadUVS0q5q/MbRAzMS5M9HZcZyT6evyrgPUH0DV9przkcW7/LH1Sj33Q2MpJO9Nzqw4b4w72x8mvtUAew==} + '@pnpm/types@1001.3.0': + resolution: {integrity: sha512-NLTXheat/u7OEGg5M5vF6Z85zx8uKUZE0+whtX/sbFV2XL48RdnOWGPTKYuVVkv8M+launaLUTgGEXNs/ess2w==} engines: {node: '>=18.12'} '@protobufjs/aspromise@1.1.2': @@ -3714,6 +3713,9 @@ packages: '@types/jasmine@5.1.15': resolution: {integrity: sha512-ZAC8KjmV2MJxbNTrwXFN+HKeajpXQZp6KpPiR6Aa4XvaEnjP6qh23lL/Rqb7AYzlp3h/rcwDrQ7Gg7q28cQTQg==} + '@types/jasmine@6.0.0': + resolution: {integrity: sha512-18lgGsLmEh3VJk9eZ5wAjTISxdqzl6YOwu8UdMpolajN57QOCNbl+AbHUd+Yu9ItrsFdB+c8LSZSGNg8nHaguw==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3753,8 +3755,8 @@ packages: '@types/node@22.19.7': resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} - '@types/node@24.10.8': - resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} + '@types/node@24.10.9': + resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} @@ -5268,9 +5270,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} + ejs@4.0.1: + resolution: {integrity: sha512-krvQtxc0btwSm/nvnt1UpnaFDFVJpJ0fdckmALpCgShsr/iGYHTnJiUliZTgmzq/UxTX33TtOQVKaNigMQp/6Q==} + engines: {node: '>=0.12.18'} hasBin: true electron-to-chromium@1.5.267: @@ -5716,8 +5718,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase@12.7.0: - resolution: {integrity: sha512-ZBZg9jFo8uH4Emd7caOqtalKJfDGHnHQSrCPiqRAdTFQd0wL3ERilUBfhnhBLnlernugkN/o7nJa0p+sE71Izg==} + firebase@12.8.0: + resolution: {integrity: sha512-S1tCIR3ENecee0tY2cfTHfMkXqkitHfbsvqpCtvsT0Zi9vDB7A4CodAjHfHCjVvu/XtGy1LHLjOasVcF10rCVw==} flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} @@ -6548,6 +6550,9 @@ packages: jasmine-core@5.13.0: resolution: {integrity: sha512-vsYjfh7lyqvZX5QgqKc4YH8phs7g96Z8bsdIFNEU3VqXhlHaq+vov/Fgn/sr6MiUczdZkyXRC3TX369Ll4Nzbw==} + jasmine-core@6.0.1: + resolution: {integrity: sha512-gUtzV5ASR0MLBwDNqri4kBsgKNCcRQd9qOlNw/w/deavD0cl3JmWXXfH8JhKM4LTg6LPTt2IOQ4px3YYfgh2Xg==} + jasmine-reporters@2.5.2: resolution: {integrity: sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==} @@ -6562,6 +6567,10 @@ packages: resolution: {integrity: sha512-oLCXIhEb5e0zzjn9GyuvcuisvLBwUjmgz7a0RNGWKwQtJCDld4m+vwKUpAIJVLB5vbmQFdtKhT86/tIZlJ5gYw==} hasBin: true + jasmine@6.0.0: + resolution: {integrity: sha512-eSPL6LPWT39WwvHSEEbRXuSvioXMTheNhIPaeUT1OPmSprDZwj4S29884DkTx6/tyiOWTWB1N+LdW2ZSg74aEA==} + hasBin: true + jasminewd2@2.2.0: resolution: {integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==} engines: {node: '>= 6.9.x'} @@ -9502,30 +9511,30 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.2.0-next.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/cdk@21.2.0-next.1(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3)': + '@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.1.0-rc.0 - '@babel/core': 7.28.5 + '@angular/compiler': 21.2.0-next.0 + '@babel/core': 7.28.6 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 convert-source-map: 1.9.0 @@ -9538,55 +9547,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.1.0-rc.0': + '@angular/compiler@21.2.0-next.0': dependencies: tslib: 2.8.1 - '@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.1.0-rc.0 + '@angular/compiler': 21.2.0-next.0 zone.js: 0.16.0 - '@angular/forms@21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/forms@21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.1.0-rc.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(@angular/compiler@21.1.0-rc.0)': + '@angular/localize@21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(@angular/compiler@21.2.0-next.0)': dependencies: - '@angular/compiler': 21.1.0-rc.0 - '@angular/compiler-cli': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) - '@babel/core': 7.28.5 + '@angular/compiler': 21.2.0-next.0 + '@angular/compiler-cli': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) + '@babel/core': 7.28.6 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 yargs: 18.0.0 transitivePeerDependencies: - supports-color - '@angular/material@21.2.0-next.0(1ca137b8238b4cbde6abd4f3e10ddd1e)': + '@angular/material@21.2.0-next.1(543b4cd5add643034223e4134967d1ab)': dependencies: - '@angular/cdk': 21.2.0-next.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.2.0-next.1(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.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/370b6f7b49470d16721272715642d0ba2ef99556(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))': dependencies: '@actions/core': 2.0.2 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.35.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) - '@inquirer/prompts': 8.2.0(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@google/genai': 1.38.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + '@inquirer/prompts': 8.2.0(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) '@octokit/auth-app': 8.1.2 '@octokit/core': 7.0.6 '@octokit/graphql': 9.0.3 @@ -9597,14 +9606,14 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/rest': 22.0.1 '@octokit/types': 16.0.0 - '@pnpm/dependency-path': 1001.1.8 + '@pnpm/dependency-path': 1001.1.9 '@types/cli-progress': 3.11.6 '@types/ejs': 3.1.5 '@types/events': 3.0.3 '@types/folder-hash': 4.0.4 '@types/git-raw-commits': 5.0.1 - '@types/jasmine': 5.1.15 - '@types/node': 24.10.8 + '@types/jasmine': 6.0.0 + '@types/node': 24.10.9 '@types/semver': 7.7.1 '@types/which': 3.0.4 '@types/yargs': 17.0.35 @@ -9614,13 +9623,13 @@ snapshots: cli-progress: 3.12.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 - ejs: 3.1.10 + ejs: 4.0.1 encoding: 0.1.13 fast-glob: 3.3.3 - firebase: 12.7.0 + firebase: 12.8.0 folder-hash: 4.1.1(supports-color@10.2.2) git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) - jasmine: 5.13.0 + jasmine: 6.0.0 jasmine-core: 5.13.0 jasmine-reporters: 2.5.2 jsonc-parser: 3.3.1 @@ -9640,35 +9649,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.0-rc.0)(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.0)(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.1.0-rc.0 - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.2.0-next.0 + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.1.0-rc.0(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.1.0-rc.0(@angular/animations@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.1.0-rc.0(@angular/core@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -9698,26 +9707,6 @@ snapshots: '@babel/compat-data@7.28.6': {} - '@babel/core@7.28.5': - dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@10.2.2) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.28.6': dependencies: '@babel/code-frame': 7.28.6 @@ -9805,15 +9794,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': dependencies: '@babel/core': 7.28.6 @@ -10608,9 +10588,9 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@firebase/ai@2.6.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/ai@2.7.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/app-check-interop-types': 0.3.3 '@firebase/app-types': 0.9.3 '@firebase/component': 0.7.0 @@ -10618,11 +10598,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7)': dependencies: - '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.7) '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10631,20 +10611,20 @@ snapshots: '@firebase/analytics-types@0.8.3': {} - '@firebase/analytics@0.10.19(@firebase/app@0.14.6)': + '@firebase/analytics@0.10.19(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.7) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-check': 0.11.0(@firebase/app@0.14.6) + '@firebase/app-check': 0.11.0(@firebase/app@0.14.7) '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10656,17 +10636,17 @@ snapshots: '@firebase/app-check-types@0.5.3': {} - '@firebase/app-check@0.11.0(@firebase/app@0.14.6)': + '@firebase/app-check@0.11.0(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/app-compat@0.5.6': + '@firebase/app-compat@0.5.7': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10674,7 +10654,7 @@ snapshots: '@firebase/app-types@0.9.3': {} - '@firebase/app@0.14.6': + '@firebase/app@0.14.7': dependencies: '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10682,10 +10662,10 @@ snapshots: idb: 7.1.1 tslib: 2.8.1 - '@firebase/auth-compat@0.6.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/auth-compat@0.6.2(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 - '@firebase/auth': 1.12.0(@firebase/app@0.14.6) + '@firebase/app-compat': 0.5.7 + '@firebase/auth': 1.12.0(@firebase/app@0.14.7) '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 @@ -10702,9 +10682,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/auth@1.12.0(@firebase/app@0.14.6)': + '@firebase/auth@1.12.0(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10715,9 +10695,9 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/data-connect@0.3.12(@firebase/app@0.14.6)': + '@firebase/data-connect@0.3.12(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 @@ -10748,11 +10728,11 @@ snapshots: faye-websocket: 0.11.4 tslib: 2.8.1 - '@firebase/firestore-compat@0.4.3(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/firestore-compat@0.4.4(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 - '@firebase/firestore': 4.9.3(@firebase/app@0.14.6) + '@firebase/firestore': 4.10.0(@firebase/app@0.14.7) '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10765,9 +10745,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/firestore@4.9.3(@firebase/app@0.14.6)': + '@firebase/firestore@4.10.0(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 @@ -10776,11 +10756,11 @@ snapshots: '@grpc/proto-loader': 0.7.15 tslib: 2.8.1 - '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 - '@firebase/functions': 0.13.1(@firebase/app@0.14.6) + '@firebase/functions': 0.13.1(@firebase/app@0.14.7) '@firebase/functions-types': 0.6.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10789,9 +10769,9 @@ snapshots: '@firebase/functions-types@0.6.3': {} - '@firebase/functions@0.13.1(@firebase/app@0.14.6)': + '@firebase/functions@0.13.1(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/app-check-interop-types': 0.3.3 '@firebase/auth-interop-types': 0.2.4 '@firebase/component': 0.7.0 @@ -10799,11 +10779,11 @@ snapshots: '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.7) '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10815,9 +10795,9 @@ snapshots: dependencies: '@firebase/app-types': 0.9.3 - '@firebase/installations@0.6.19(@firebase/app@0.14.6)': + '@firebase/installations@0.6.19(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 idb: 7.1.1 @@ -10827,11 +10807,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 - '@firebase/messaging': 0.12.23(@firebase/app@0.14.6) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.7) '@firebase/util': 1.13.0 tslib: 2.8.1 transitivePeerDependencies: @@ -10839,22 +10819,22 @@ snapshots: '@firebase/messaging-interop-types@0.2.3': {} - '@firebase/messaging@0.12.23(@firebase/app@0.14.6)': + '@firebase/messaging@0.12.23(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.7) '@firebase/messaging-interop-types': 0.2.3 '@firebase/util': 1.13.0 idb: 7.1.1 tslib: 2.8.1 - '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/performance': 0.7.9(@firebase/app@0.14.6) + '@firebase/performance': 0.7.9(@firebase/app@0.14.7) '@firebase/performance-types': 0.2.3 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10863,22 +10843,22 @@ snapshots: '@firebase/performance-types@0.2.3': {} - '@firebase/performance@0.7.9(@firebase/app@0.14.6)': + '@firebase/performance@0.7.9(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.7) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 web-vitals: 4.2.4 - '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + '@firebase/remote-config-compat@0.2.21(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 '@firebase/logger': 0.5.0 - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.6) + '@firebase/remote-config': 0.8.0(@firebase/app@0.14.7) '@firebase/remote-config-types': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10887,20 +10867,20 @@ snapshots: '@firebase/remote-config-types@0.5.0': {} - '@firebase/remote-config@0.7.0(@firebase/app@0.14.6)': + '@firebase/remote-config@0.8.0(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 - '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.7) '@firebase/logger': 0.5.0 '@firebase/util': 1.13.0 tslib: 2.8.1 - '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7)': dependencies: - '@firebase/app-compat': 0.5.6 + '@firebase/app-compat': 0.5.7 '@firebase/component': 0.7.0 - '@firebase/storage': 0.14.0(@firebase/app@0.14.6) + '@firebase/storage': 0.14.0(@firebase/app@0.14.7) '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10913,9 +10893,9 @@ snapshots: '@firebase/app-types': 0.9.3 '@firebase/util': 1.13.0 - '@firebase/storage@0.14.0(@firebase/app@0.14.6)': + '@firebase/storage@0.14.0(@firebase/app@0.14.7)': dependencies: - '@firebase/app': 0.14.6 + '@firebase/app': 0.14.7 '@firebase/component': 0.7.0 '@firebase/util': 1.13.0 tslib: 2.8.1 @@ -10987,9 +10967,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.35.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': + '@google/genai@1.38.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) + protobufjs: 7.5.4 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: '@modelcontextprotocol/sdk': 1.25.3(zod@4.3.5) @@ -11041,245 +11022,245 @@ snapshots: '@inquirer/ansi@2.0.3': {} - '@inquirer/checkbox@4.3.2(@types/node@24.10.8)': + '@inquirer/checkbox@4.3.2(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.9) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/checkbox@5.0.4(@types/node@24.10.8)': + '@inquirer/checkbox@5.0.4(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/confirm@5.1.21(@types/node@24.10.8)': + '@inquirer/confirm@5.1.21(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/confirm@6.0.4(@types/node@24.10.8)': + '@inquirer/confirm@6.0.4(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/core@10.3.2(@types/node@24.10.8)': + '@inquirer/core@10.3.2(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.9) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/core@11.1.1(@types/node@24.10.8)': + '@inquirer/core@11.1.1(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 2.0.3 '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.9) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 wrap-ansi: 9.0.2 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/editor@4.2.23(@types/node@24.10.8)': + '@inquirer/editor@4.2.23(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/editor@5.0.4(@types/node@24.10.8)': + '@inquirer/editor@5.0.4(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/external-editor': 2.0.3(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/external-editor': 2.0.3(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/expand@4.0.23(@types/node@24.10.8)': + '@inquirer/expand@4.0.23(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/expand@5.0.4(@types/node@24.10.8)': + '@inquirer/expand@5.0.4(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/external-editor@1.0.3(@types/node@24.10.8)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.9)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/external-editor@2.0.3(@types/node@24.10.8)': + '@inquirer/external-editor@2.0.3(@types/node@24.10.9)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@inquirer/figures@1.0.15': {} '@inquirer/figures@2.0.3': {} - '@inquirer/input@4.3.1(@types/node@24.10.8)': + '@inquirer/input@4.3.1(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/input@5.0.4(@types/node@24.10.8)': + '@inquirer/input@5.0.4(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/number@3.0.23(@types/node@24.10.8)': + '@inquirer/number@3.0.23(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/number@4.0.4(@types/node@24.10.8)': + '@inquirer/number@4.0.4(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/password@4.0.23(@types/node@24.10.8)': + '@inquirer/password@4.0.23(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/password@5.0.4(@types/node@24.10.8)': + '@inquirer/password@5.0.4(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 - - '@inquirer/prompts@7.10.1(@types/node@24.10.8)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.8) - '@inquirer/confirm': 5.1.21(@types/node@24.10.8) - '@inquirer/editor': 4.2.23(@types/node@24.10.8) - '@inquirer/expand': 4.0.23(@types/node@24.10.8) - '@inquirer/input': 4.3.1(@types/node@24.10.8) - '@inquirer/number': 3.0.23(@types/node@24.10.8) - '@inquirer/password': 4.0.23(@types/node@24.10.8) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.8) - '@inquirer/search': 3.2.2(@types/node@24.10.8) - '@inquirer/select': 4.4.2(@types/node@24.10.8) + '@types/node': 24.10.9 + + '@inquirer/prompts@7.10.1(@types/node@24.10.9)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.9) + '@inquirer/confirm': 5.1.21(@types/node@24.10.9) + '@inquirer/editor': 4.2.23(@types/node@24.10.9) + '@inquirer/expand': 4.0.23(@types/node@24.10.9) + '@inquirer/input': 4.3.1(@types/node@24.10.9) + '@inquirer/number': 3.0.23(@types/node@24.10.9) + '@inquirer/password': 4.0.23(@types/node@24.10.9) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.9) + '@inquirer/search': 3.2.2(@types/node@24.10.9) + '@inquirer/select': 4.4.2(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 - - '@inquirer/prompts@8.2.0(@types/node@24.10.8)': - dependencies: - '@inquirer/checkbox': 5.0.4(@types/node@24.10.8) - '@inquirer/confirm': 6.0.4(@types/node@24.10.8) - '@inquirer/editor': 5.0.4(@types/node@24.10.8) - '@inquirer/expand': 5.0.4(@types/node@24.10.8) - '@inquirer/input': 5.0.4(@types/node@24.10.8) - '@inquirer/number': 4.0.4(@types/node@24.10.8) - '@inquirer/password': 5.0.4(@types/node@24.10.8) - '@inquirer/rawlist': 5.2.0(@types/node@24.10.8) - '@inquirer/search': 4.1.0(@types/node@24.10.8) - '@inquirer/select': 5.0.4(@types/node@24.10.8) + '@types/node': 24.10.9 + + '@inquirer/prompts@8.2.0(@types/node@24.10.9)': + dependencies: + '@inquirer/checkbox': 5.0.4(@types/node@24.10.9) + '@inquirer/confirm': 6.0.4(@types/node@24.10.9) + '@inquirer/editor': 5.0.4(@types/node@24.10.9) + '@inquirer/expand': 5.0.4(@types/node@24.10.9) + '@inquirer/input': 5.0.4(@types/node@24.10.9) + '@inquirer/number': 4.0.4(@types/node@24.10.9) + '@inquirer/password': 5.0.4(@types/node@24.10.9) + '@inquirer/rawlist': 5.2.0(@types/node@24.10.9) + '@inquirer/search': 4.1.0(@types/node@24.10.9) + '@inquirer/select': 5.0.4(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/rawlist@4.1.11(@types/node@24.10.8)': + '@inquirer/rawlist@4.1.11(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/rawlist@5.2.0(@types/node@24.10.8)': + '@inquirer/rawlist@5.2.0(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/search@3.2.2(@types/node@24.10.8)': + '@inquirer/search@3.2.2(@types/node@24.10.9)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.9) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/search@4.1.0(@types/node@24.10.8)': + '@inquirer/search@4.1.0(@types/node@24.10.9)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/select@4.4.2(@types/node@24.10.8)': + '@inquirer/select@4.4.2(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.8) + '@inquirer/core': 10.3.2(@types/node@24.10.9) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/type': 3.0.10(@types/node@24.10.9) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/select@5.0.4(@types/node@24.10.8)': + '@inquirer/select@5.0.4(@types/node@24.10.9)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.8) + '@inquirer/core': 11.1.1(@types/node@24.10.9) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.8) + '@inquirer/type': 4.0.3(@types/node@24.10.9) optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/type@3.0.10(@types/node@24.10.8)': + '@inquirer/type@3.0.10(@types/node@24.10.9)': optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 - '@inquirer/type@4.0.3(@types/node@24.10.8)': + '@inquirer/type@4.0.3(@types/node@24.10.9)': optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@isaacs/balanced-match@4.0.1': {} @@ -11302,6 +11283,8 @@ snapshots: '@istanbuljs/schema@0.1.3': {} + '@jasminejs/reporters@1.0.0': {} + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -11371,10 +11354,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.8))(@types/node@24.10.8)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.9))(@types/node@24.10.9)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@24.10.8) - '@inquirer/type': 3.0.10(@types/node@24.10.8) + '@inquirer/prompts': 7.10.1(@types/node@24.10.9) + '@inquirer/type': 3.0.10(@types/node@24.10.9) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -11899,17 +11882,17 @@ snapshots: '@pnpm/crypto.polyfill@1000.1.0': {} - '@pnpm/dependency-path@1001.1.8': + '@pnpm/dependency-path@1001.1.9': dependencies: '@pnpm/crypto.hash': 1000.2.1 - '@pnpm/types': 1001.2.0 + '@pnpm/types': 1001.3.0 semver: 7.7.3 '@pnpm/graceful-fs@1000.0.1': dependencies: graceful-fs: 4.2.11 - '@pnpm/types@1001.2.0': {} + '@pnpm/types@1001.3.0': {} '@protobufjs/aspromise@1.1.2': {} @@ -12470,6 +12453,8 @@ snapshots: '@types/jasmine@5.1.15': {} + '@types/jasmine@6.0.0': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -12527,7 +12512,7 @@ snapshots: dependencies: undici-types: 7.18.2 - '@types/node@24.10.8': + '@types/node@24.10.9': dependencies: undici-types: 7.18.2 @@ -12901,11 +12886,11 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.17 @@ -12917,7 +12902,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@vitest/expect@4.0.17': dependencies: @@ -12928,13 +12913,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.17(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.17': dependencies: @@ -14418,7 +14403,7 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.10: + ejs@4.0.1: dependencies: jake: 10.9.4 @@ -15094,35 +15079,35 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase@12.7.0: + firebase@12.8.0: dependencies: - '@firebase/ai': 2.6.1(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) - '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) - '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) - '@firebase/app': 0.14.6 - '@firebase/app-check': 0.11.0(@firebase/app@0.14.6) - '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) - '@firebase/app-compat': 0.5.6 + '@firebase/ai': 2.7.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.7) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.7) + '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7) + '@firebase/app': 0.14.7 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.7) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7) + '@firebase/app-compat': 0.5.7 '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.12.0(@firebase/app@0.14.6) - '@firebase/auth-compat': 0.6.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) - '@firebase/data-connect': 0.3.12(@firebase/app@0.14.6) + '@firebase/auth': 1.12.0(@firebase/app@0.14.7) + '@firebase/auth-compat': 0.6.2(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7) + '@firebase/data-connect': 0.3.12(@firebase/app@0.14.7) '@firebase/database': 1.1.0 '@firebase/database-compat': 2.1.0 - '@firebase/firestore': 4.9.3(@firebase/app@0.14.6) - '@firebase/firestore-compat': 0.4.3(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) - '@firebase/functions': 0.13.1(@firebase/app@0.14.6) - '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) - '@firebase/installations': 0.6.19(@firebase/app@0.14.6) - '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) - '@firebase/messaging': 0.12.23(@firebase/app@0.14.6) - '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) - '@firebase/performance': 0.7.9(@firebase/app@0.14.6) - '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) - '@firebase/remote-config': 0.7.0(@firebase/app@0.14.6) - '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) - '@firebase/storage': 0.14.0(@firebase/app@0.14.6) - '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/firestore': 4.10.0(@firebase/app@0.14.7) + '@firebase/firestore-compat': 0.4.4(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7) + '@firebase/functions': 0.13.1(@firebase/app@0.14.7) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7) + '@firebase/installations': 0.6.19(@firebase/app@0.14.7) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.7) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7) + '@firebase/performance': 0.7.9(@firebase/app@0.14.7) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7) + '@firebase/remote-config': 0.8.0(@firebase/app@0.14.7) + '@firebase/remote-config-compat': 0.2.21(@firebase/app-compat@0.5.7)(@firebase/app@0.14.7) + '@firebase/storage': 0.14.0(@firebase/app@0.14.7) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.7)(@firebase/app-types@0.9.3)(@firebase/app@0.14.7) '@firebase/util': 1.13.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -16012,6 +15997,8 @@ snapshots: jasmine-core@5.13.0: {} + jasmine-core@6.0.1: {} + jasmine-reporters@2.5.2: dependencies: '@xmldom/xmldom': 0.8.11 @@ -16032,6 +16019,12 @@ snapshots: glob: 10.5.0 jasmine-core: 5.13.0 + jasmine@6.0.0: + dependencies: + '@jasminejs/reporters': 1.0.0 + glob: 13.0.0 + jasmine-core: 6.0.1 + jasminewd2@2.2.0: {} jest-worker@27.5.1: @@ -16725,10 +16718,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.2.0-next.0(@angular/compiler-cli@21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.1.0-rc.0(@angular/compiler@21.1.0-rc.0)(typescript@5.9.3) + '@angular/compiler-cli': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.55.1) '@rollup/wasm-node': 4.55.1 ajv: 8.17.1 @@ -18936,7 +18929,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -18945,7 +18938,7 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 @@ -18954,10 +18947,10 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.8)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.17 - '@vitest/mocker': 4.0.17(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.17(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.17 '@vitest/runner': 4.0.17 '@vitest/snapshot': 4.0.17 @@ -18974,11 +18967,11 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 - '@types/node': 24.10.8 + '@types/node': 24.10.9 jsdom: 27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - jiti diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index f1d4cea7627a..57604752009b 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#eb242525a0f3872e50614467402ce64721f6d8d4", - "@angular/cdk": "github:angular/cdk-builds#47a531348478a04e881814e969e01946540248c6", - "@angular/common": "github:angular/common-builds#4c76b6ec657d9a4721f221e1bc75c6ed04e6cff5", - "@angular/compiler": "github:angular/compiler-builds#eca1fd8fa851fbaac9af466d274119e7c38058c9", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#a563c635154ece3c2f39fac2a53096d47bda5ae5", - "@angular/core": "github:angular/core-builds#f4b903ff3d8a242a874d7fe25591d4c2036c1722", - "@angular/forms": "github:angular/forms-builds#83d212900a042afbab9b29b9c3f65422a97efed3", - "@angular/language-service": "github:angular/language-service-builds#106763689881d56d07dcdaaec9818d1952eac48f", - "@angular/localize": "github:angular/localize-builds#46440ff59e79546dd49e0fd86c22b7e233e7d7a8", - "@angular/material": "github:angular/material-builds#4ef845545cbe266073bf287743dbff4d0a8ce115", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#b9cf9a96f980dac33c0978fc2ef70dec46fa1142", - "@angular/platform-browser": "github:angular/platform-browser-builds#66d686f6de1fefb4a57519270045b1f7eeee2c97", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#5440c3ad247a8c15375fd6c9cde2055f000b5eef", - "@angular/platform-server": "github:angular/platform-server-builds#374ab13592fbe5306e47e7c4a1e8720c0d872cfa", - "@angular/router": "github:angular/router-builds#3df8a4a649fb1893503df4ed34e3f523dbcab83e", - "@angular/service-worker": "github:angular/service-worker-builds#2dc66e386f5f6637cc8d5ea8dc116f45e1bfba5c" + "@angular/animations": "github:angular/animations-builds#517fcd636116483642b47908d7668d9c7312987e", + "@angular/cdk": "github:angular/cdk-builds#1d3bd9d8a44c185f396f6dc25c9da1f0818a9b2d", + "@angular/common": "github:angular/common-builds#290d01dc402b5130a28042339011f8c6853a13f1", + "@angular/compiler": "github:angular/compiler-builds#0cbe96004e973bda8a42df589300a40a24f12f1c", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#7493bbc152edcf90018db2631780c29a3150160e", + "@angular/core": "github:angular/core-builds#d3cb40f7fd2df0f0190ef2a9eade04e44ea06a51", + "@angular/forms": "github:angular/forms-builds#6b1aeb12b0ed464c11b5830c703d23396ad75ac0", + "@angular/language-service": "github:angular/language-service-builds#4923d5fa976a91ca9f426404eb112874aff9f745", + "@angular/localize": "github:angular/localize-builds#fbc82ce904bd66967385150793761f01d260200a", + "@angular/material": "github:angular/material-builds#c473290338b0b9ef796f2c3c50c087e13041e437", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f3758b6bc25ec67345be369d171e68e9535f803b", + "@angular/platform-browser": "github:angular/platform-browser-builds#9d790df443dfbb61a57ec812c7f5447b9815eb53", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#961f283107cbca34a777abd6c083c803c51c7abc", + "@angular/platform-server": "github:angular/platform-server-builds#83330cee31a26162503ab78fcb60f2069fda6687", + "@angular/router": "github:angular/router-builds#f865e497bd58984cb0cd87f5fdd2ac007b21ebc1", + "@angular/service-worker": "github:angular/service-worker-builds#8de674eb4dbf6b932e9758f9d81af6017901429a" } } From 8abfc06482f342f2fb6dc7635976bbefe3a84a60 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Sun, 25 Jan 2026 14:38:55 +0000 Subject: [PATCH 2129/2162] build: update all non-major dependencies See associated pull request for more information. --- modules/testing/builder/package.json | 4 +- package.json | 6 +- packages/angular/build/package.json | 10 +- packages/angular/cli/package.json | 2 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 682 +++++++++--------- 6 files changed, 353 insertions(+), 355 deletions(-) diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json index da105e4bfc69..10a5abcc1a22 100644 --- a/modules/testing/builder/package.json +++ b/modules/testing/builder/package.json @@ -5,9 +5,9 @@ "@angular/ssr": "workspace:*", "@angular-devkit/build-angular": "workspace:*", "browser-sync": "3.0.4", - "@vitest/coverage-v8": "4.0.17", + "@vitest/coverage-v8": "4.0.18", "jsdom": "27.4.0", "rxjs": "7.8.2", - "vitest": "4.0.17" + "vitest": "4.0.18" } } diff --git a/package.json b/package.json index 7e7250022f35..1850ca198003 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "eslint-plugin-import": "2.32.0", "express": "5.2.1", "fast-glob": "3.3.3", - "globals": "17.0.0", + "globals": "17.1.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", @@ -121,7 +121,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.55.3", + "rollup": "4.56.0", "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.3.0", "rollup-plugin-sourcemaps2": "0.5.4", @@ -130,7 +130,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.9.3", - "undici": "7.18.2", + "undici": "7.19.1", "unenv": "^1.10.0", "verdaccio": "6.2.4", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index d8ae637cced3..006beb61e70b 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -37,17 +37,17 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.59", - "sass": "1.97.2", + "rolldown": "1.0.0-rc.1", + "sass": "1.97.3", "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.18.2", + "undici": "7.19.1", "vite": "7.3.1", "watchpack": "2.5.1" }, "optionalDependencies": { - "lmdb": "3.4.4" + "lmdb": "3.5.0" }, "devDependencies": { "@angular-devkit/core": "workspace:*", @@ -57,7 +57,7 @@ "ng-packagr": "21.2.0-next.0", "postcss": "8.5.6", "rxjs": "7.8.2", - "vitest": "4.0.17" + "vitest": "4.0.18" }, "peerDependencies": { "@angular/compiler": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 8a29e13e88a3..ab6f30ba08a5 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -39,7 +39,7 @@ "parse5-html-rewriting-stream": "8.0.0", "semver": "7.7.3", "yargs": "18.0.0", - "zod": "4.3.5" + "zod": "4.3.6" }, "ng-update": { "migrations": "@schematics/angular/migrations/migration-collection.json", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 5a1782660a34..838c3890bf96 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -46,7 +46,7 @@ "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.97.2", + "sass": "1.97.3", "sass-loader": "16.0.6", "semver": "7.7.3", "source-map-loader": "5.0.0", @@ -69,7 +69,7 @@ "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", "ng-packagr": "21.2.0-next.0", - "undici": "7.18.2" + "undici": "7.19.1" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ee309984d62..c8d5b336066c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 21.2.0-next.1(543b4cd5add643034223e4134967d1ab) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#c018d7f32d8d6efb63ee3b15485bfe5c4e085581 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5)) + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6)) '@angular/platform-browser': specifier: 21.2.0-next.0 version: 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -81,16 +81,16 @@ importers: version: 9.39.2 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.55.3) + version: 6.0.0(rollup@4.56.0) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.55.3) + version: 29.0.0(rollup@4.56.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.55.3) + version: 6.1.0(rollup@4.56.0) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.55.3) + version: 16.0.3(rollup@4.56.0) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.7.0(eslint@9.39.2(jiti@2.6.1)) @@ -197,8 +197,8 @@ importers: specifier: 3.3.3 version: 3.3.3 globals: - specifier: 17.0.0 - version: 17.0.0 + specifier: 17.1.0 + version: 17.1.0 http-proxy: specifier: ^1.18.1 version: 1.18.1(debug@4.4.3) @@ -257,17 +257,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.55.3 - version: 4.55.3 + specifier: 4.56.0 + version: 4.56.0 rollup-license-plugin: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: specifier: 6.3.0 - version: 6.3.0(rollup@4.55.3)(typescript@5.9.3) + version: 6.3.0(rollup@4.56.0)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.7)(rollup@4.55.3) + version: 0.5.4(@types/node@22.19.7)(rollup@4.56.0) semver: specifier: 7.7.3 version: 7.7.3 @@ -284,8 +284,8 @@ importers: specifier: 5.9.3 version: 5.9.3 undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.19.1 + version: 7.19.1 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -314,8 +314,8 @@ importers: specifier: workspace:* version: link:../../../packages/angular/ssr '@vitest/coverage-v8': - specifier: 4.0.17 - version: 4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 4.0.18 + version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) browser-sync: specifier: 3.0.4 version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -326,8 +326,8 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.18 + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) packages/angular/build: dependencies: @@ -351,7 +351,7 @@ importers: version: 5.1.21(@types/node@24.10.9) '@vitejs/plugin-basic-ssl': specifier: 2.1.4 - version: 2.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) beasties: specifier: 0.4.1 version: 0.4.1 @@ -389,11 +389,11 @@ importers: specifier: 5.1.4 version: 5.1.4 rolldown: - specifier: 1.0.0-beta.59 - version: 1.0.0-beta.59 + specifier: 1.0.0-rc.1 + version: 1.0.0-rc.1 sass: - specifier: 1.97.2 - version: 1.97.2 + specifier: 1.97.3 + version: 1.97.3 semver: specifier: 7.7.3 version: 7.7.3 @@ -404,11 +404,11 @@ importers: specifier: 0.2.15 version: 0.2.15 undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.19.1 + version: 7.19.1 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) watchpack: specifier: 2.5.1 version: 2.5.1 @@ -435,12 +435,12 @@ importers: specifier: 7.8.2 version: 7.8.2 vitest: - specifier: 4.0.17 - version: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 4.0.18 + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: - specifier: 3.4.4 - version: 3.4.4 + specifier: 3.5.0 + version: 3.5.0 packages/angular/cli: dependencies: @@ -461,7 +461,7 @@ importers: version: 3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.9))(@types/node@24.10.9)(listr2@9.0.5) '@modelcontextprotocol/sdk': specifier: 1.25.3 - version: 1.25.3(zod@4.3.5) + version: 1.25.3(zod@4.3.6) '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular @@ -496,8 +496,8 @@ importers: specifier: 18.0.0 version: 18.0.0 zod: - specifier: 4.3.5 - version: 4.3.5 + specifier: 4.3.6 + version: 4.3.6 packages/angular/pwa: dependencies: @@ -683,11 +683,11 @@ importers: specifier: 7.8.2 version: 7.8.2 sass: - specifier: 1.97.2 - version: 1.97.2 + specifier: 1.97.3 + version: 1.97.3 sass-loader: specifier: 16.0.6 - version: 16.0.6(sass@1.97.2)(webpack@5.104.1(esbuild@0.27.2)) + version: 16.0.6(sass@1.97.3)(webpack@5.104.1(esbuild@0.27.2)) semver: specifier: 7.7.3 version: 7.7.3 @@ -738,8 +738,8 @@ importers: specifier: 21.2.0-next.0 version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: - specifier: 7.18.2 - version: 7.18.2 + specifier: 7.19.1 + version: 7.19.1 optionalDependencies: esbuild: specifier: 0.27.2 @@ -2149,6 +2149,9 @@ packages: '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} + '@harperfast/extended-iterable@1.0.3': + resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==} + '@hono/node-server@1.19.9': resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} engines: {node: '>=18.14.1'} @@ -2533,38 +2536,33 @@ packages: '@inquirer/prompts': '>= 3 < 8' listr2: 9.0.5 - '@lmdb/lmdb-darwin-arm64@3.4.4': - resolution: {integrity: sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==} + '@lmdb/lmdb-darwin-arm64@3.5.0': + resolution: {integrity: sha512-NOgnhUSpkcj/FRKp1WVPub1zsZw/qi//KG/IvYMbtFtzU2gvrTXVvXuv53iZNNqUkmau5J2nkEL4qllTVCC/Aw==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.4.4': - resolution: {integrity: sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==} + '@lmdb/lmdb-darwin-x64@3.5.0': + resolution: {integrity: sha512-e4zPXHb7TVv6c3rI0CHPAbq3Nk5gXwjtUaViejUtfDJ7DPR/HXdZqrwc/Vy2QanWlEHfkEleDTiIt5tV7nI29g==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.4.4': - resolution: {integrity: sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==} + '@lmdb/lmdb-linux-arm64@3.5.0': + resolution: {integrity: sha512-Og9rk5dg5OLamLUCbAGmmLD5Q1IDd0Hj0j9UdMHQdnRpc8aPcDh+dOUwMdQDnkdidO8slfFKEWxdnsuX6SXaNQ==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.4.4': - resolution: {integrity: sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==} + '@lmdb/lmdb-linux-arm@3.5.0': + resolution: {integrity: sha512-eR/CerA7Zj+l0UC4x0+iaanoCrzIPyL7eX+id6X8i20s94Gtwj2Q4ongnIJhGNrLGIT0zYtmcqdI6E9eVc7PFw==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.4.4': - resolution: {integrity: sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==} + '@lmdb/lmdb-linux-x64@3.5.0': + resolution: {integrity: sha512-8O3Slm5aDyvJPTBGQBC/CG6lSc0KjkW8wuJnwV1FMMN9A/wtLB7lFL7JjvXyxv4QVpCB1vjRGHffT/c0THUCDg==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-arm64@3.4.4': - resolution: {integrity: sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==} - cpu: [arm64] - os: [win32] - - '@lmdb/lmdb-win32-x64@3.4.4': - resolution: {integrity: sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==} + '@lmdb/lmdb-win32-x64@3.5.0': + resolution: {integrity: sha512-T0npY4EEQLDkUOCEKZbT9cndbffc2PlINE5brUF9oG6qMCiHRxv0rN7VLPapvwHk5wGHOG6P/NwKEJDJpM8pIw==} cpu: [x64] os: [win32] @@ -2889,8 +2887,8 @@ packages: resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==} engines: {node: '>=14'} - '@oxc-project/types@0.107.0': - resolution: {integrity: sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ==} + '@oxc-project/types@0.110.0': + resolution: {integrity: sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow==} '@parcel/watcher-android-arm64@2.5.4': resolution: {integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==} @@ -3076,89 +3074,89 @@ packages: engines: {node: '>=18'} hasBin: true - '@rolldown/binding-android-arm64@1.0.0-beta.59': - resolution: {integrity: sha512-6yLLgyswYwiCfls9+hoNFY9F8TQdwo15hpXDHzlAR0X/GojeKF+AuNcXjYNbOJ4zjl/5D6lliE8CbpB5t1OWIQ==} + '@rolldown/binding-android-arm64@1.0.0-rc.1': + resolution: {integrity: sha512-He6ZoCfv5D7dlRbrhNBkuMVIHd0GDnjJwbICE1OWpG7G3S2gmJ+eXkcNLJjzjNDpeI2aRy56ou39AJM9AD8YFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.59': - resolution: {integrity: sha512-hqGXRc162qCCIOAcHN2Cw4eXiVTwYsMFLOhAy1IG2CxY+dwc/l4Ga+dLPkLor3Ikqy5WDn+7kxHbbh6EmshEpQ==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.1': + resolution: {integrity: sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.59': - resolution: {integrity: sha512-ezvvGuhteE15JmMhJW0wS7BaXmhwLy1YHeEwievYaPC1PgGD86wgBKfOpHr9tSKllAXbCe0BeeMvasscWLhKdA==} + '@rolldown/binding-darwin-x64@1.0.0-rc.1': + resolution: {integrity: sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.59': - resolution: {integrity: sha512-4fhKVJiEYVd5n6no/mrL3LZ9kByfCGwmONOrdtvx8DJGDQhehH/q3RfhG3V/4jGKhpXgbDjpIjkkFdybCTcgew==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.1': + resolution: {integrity: sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59': - resolution: {integrity: sha512-T3Y52sW6JAhvIqArBw+wtjNU1Ieaz4g0NBxyjSJoW971nZJBZygNlSYx78G4cwkCmo1dYTciTPDOnQygLV23pA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1': + resolution: {integrity: sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59': - resolution: {integrity: sha512-NIW40jQDSQap2KDdmm9z3B/4OzWJ6trf8dwx3FD74kcQb3v34ThsBFTtzE5KjDuxnxgUlV+DkAu+XgSMKrgufw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1': + resolution: {integrity: sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.59': - resolution: {integrity: sha512-CCKEk+H+8c0WGe/8n1E20n85Tq4Pv+HNAbjP1KfUXW+01aCWSMjU56ChNrM2tvHnXicfm7QRNoZyfY8cWh7jLQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1': + resolution: {integrity: sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.59': - resolution: {integrity: sha512-VlfwJ/HCskPmQi8R0JuAFndySKVFX7yPhE658o27cjSDWWbXVtGkSbwaxstii7Q+3Rz87ZXN+HLnb1kd4R9Img==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1': + resolution: {integrity: sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.59': - resolution: {integrity: sha512-kuO92hTRyGy0Ts3Nsqll0rfO8eFsEJe9dGQGktkQnZ2hrJrDVN0y419dMgKy/gB2S2o7F2dpWhpfQOBehZPwVA==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.1': + resolution: {integrity: sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.59': - resolution: {integrity: sha512-PXAebvNL4sYfCqi8LdY4qyFRacrRoiPZLo3NoUmiTxm7MPtYYR8CNtBGNokqDmMuZIQIecRaD/jbmFAIDz7DxQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.1': + resolution: {integrity: sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.59': - resolution: {integrity: sha512-yJoklQg7XIZq8nAg0bbkEXcDK6sfpjxQGxpg2Nd6ERNtvg+eOaEBRgPww0BVTrYFQzje1pB5qPwC2VnJHT3koQ==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.1': + resolution: {integrity: sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59': - resolution: {integrity: sha512-ljZ4+McmCbIuZwEBaoGtiG8Rq2nJjaXEnLEIx+usWetXn1ECjXY0LAhkELxOV6ytv4ensEmoJJ8nXg47hRMjlw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1': + resolution: {integrity: sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.59': - resolution: {integrity: sha512-bMY4tTIwbdZljW+xe/ln1hvs0SRitahQSXfWtvgAtIzgSX9Ar7KqJzU7lRm33YTRFIHLULRi53yNjw9nJGd6uQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1': + resolution: {integrity: sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.59': - resolution: {integrity: sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA==} + '@rolldown/pluginutils@1.0.0-rc.1': + resolution: {integrity: sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==} '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} @@ -3228,8 +3226,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.55.3': - resolution: {integrity: sha512-qyX8+93kK/7R5BEXPC2PjUt0+fS/VO2BVHjEHyIEWiYn88rcRBHmdLgoJjktBltgAf+NY7RfCGB1SoyKS/p9kg==} + '@rollup/rollup-android-arm-eabi@4.56.0': + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] @@ -3238,8 +3236,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.55.3': - resolution: {integrity: sha512-6sHrL42bjt5dHQzJ12Q4vMKfN+kUnZ0atHHnv4V0Wd9JMTk7FDzSY35+7qbz3ypQYMBPANbpGK7JpnWNnhGt8g==} + '@rollup/rollup-android-arm64@4.56.0': + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] @@ -3248,8 +3246,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.55.3': - resolution: {integrity: sha512-1ht2SpGIjEl2igJ9AbNpPIKzb1B5goXOcmtD0RFxnwNuMxqkR6AUaaErZz+4o+FKmzxcSNBOLrzsICZVNYa1Rw==} + '@rollup/rollup-darwin-arm64@4.56.0': + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] @@ -3258,8 +3256,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.3': - resolution: {integrity: sha512-FYZ4iVunXxtT+CZqQoPVwPhH7549e/Gy7PIRRtq4t5f/vt54pX6eG9ebttRH6QSH7r/zxAFA4EZGlQ0h0FvXiA==} + '@rollup/rollup-darwin-x64@4.56.0': + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] @@ -3268,8 +3266,8 @@ packages: cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.55.3': - resolution: {integrity: sha512-M/mwDCJ4wLsIgyxv2Lj7Len+UMHd4zAXu4GQ2UaCdksStglWhP61U3uowkaYBQBhVoNpwx5Hputo8eSqM7K82Q==} + '@rollup/rollup-freebsd-arm64@4.56.0': + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] @@ -3278,8 +3276,8 @@ packages: cpu: [x64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.3': - resolution: {integrity: sha512-5jZT2c7jBCrMegKYTYTpni8mg8y3uY8gzeq2ndFOANwNuC/xJbVAoGKR9LhMDA0H3nIhvaqUoBEuJoICBudFrA==} + '@rollup/rollup-freebsd-x64@4.56.0': + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] @@ -3289,8 +3287,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.55.3': - resolution: {integrity: sha512-YeGUhkN1oA+iSPzzhEjVPS29YbViOr8s4lSsFaZKLHswgqP911xx25fPOyE9+khmN6W4VeM0aevbDp4kkEoHiA==} + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] libc: [glibc] @@ -3301,8 +3299,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.55.3': - resolution: {integrity: sha512-eo0iOIOvcAlWB3Z3eh8pVM8hZ0oVkK3AjEM9nSrkSug2l15qHzF3TOwT0747omI6+CJJvl7drwZepT+re6Fy/w==} + '@rollup/rollup-linux-arm-musleabihf@4.56.0': + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] libc: [musl] @@ -3313,8 +3311,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.55.3': - resolution: {integrity: sha512-DJay3ep76bKUDImmn//W5SvpjRN5LmK/ntWyeJs/dcnwiiHESd3N4uteK9FDLf0S0W8E6Y0sVRXpOCoQclQqNg==} + '@rollup/rollup-linux-arm64-gnu@4.56.0': + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] libc: [glibc] @@ -3325,8 +3323,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.55.3': - resolution: {integrity: sha512-BKKWQkY2WgJ5MC/ayvIJTHjy0JUGb5efaHCUiG/39sSUvAYRBaO3+/EK0AZT1RF3pSj86O24GLLik9mAYu0IJg==} + '@rollup/rollup-linux-arm64-musl@4.56.0': + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] libc: [musl] @@ -3337,8 +3335,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.55.3': - resolution: {integrity: sha512-Q9nVlWtKAG7ISW80OiZGxTr6rYtyDSkauHUtvkQI6TNOJjFvpj4gcH+KaJihqYInnAzEEUetPQubRwHef4exVg==} + '@rollup/rollup-linux-loong64-gnu@4.56.0': + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] libc: [glibc] @@ -3349,8 +3347,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-musl@4.55.3': - resolution: {integrity: sha512-2H5LmhzrpC4fFRNwknzmmTvvyJPHwESoJgyReXeFoYYuIDfBhP29TEXOkCJE/KxHi27mj7wDUClNq78ue3QEBQ==} + '@rollup/rollup-linux-loong64-musl@4.56.0': + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] libc: [musl] @@ -3361,8 +3359,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.55.3': - resolution: {integrity: sha512-9S542V0ie9LCTznPYlvaeySwBeIEa7rDBgLHKZ5S9DBgcqdJYburabm8TqiqG6mrdTzfV5uttQRHcbKff9lWtA==} + '@rollup/rollup-linux-ppc64-gnu@4.56.0': + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] libc: [glibc] @@ -3373,8 +3371,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-musl@4.55.3': - resolution: {integrity: sha512-ukxw+YH3XXpcezLgbJeasgxyTbdpnNAkrIlFGDl7t+pgCxZ89/6n1a+MxlY7CegU+nDgrgdqDelPRNQ/47zs0g==} + '@rollup/rollup-linux-ppc64-musl@4.56.0': + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] libc: [musl] @@ -3385,8 +3383,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.55.3': - resolution: {integrity: sha512-Iauw9UsTTvlF++FhghFJjqYxyXdggXsOqGpFBylaRopVpcbfyIIsNvkf9oGwfgIcf57z3m8+/oSYTo6HutBFNw==} + '@rollup/rollup-linux-riscv64-gnu@4.56.0': + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] libc: [glibc] @@ -3397,8 +3395,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.55.3': - resolution: {integrity: sha512-3OqKAHSEQXKdq9mQ4eajqUgNIK27VZPW3I26EP8miIzuKzCJ3aW3oEn2pzF+4/Hj/Moc0YDsOtBgT5bZ56/vcA==} + '@rollup/rollup-linux-riscv64-musl@4.56.0': + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] libc: [musl] @@ -3409,8 +3407,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.55.3': - resolution: {integrity: sha512-0CM8dSVzVIaqMcXIFej8zZrSFLnGrAE8qlNbbHfTw1EEPnFTg1U1ekI0JdzjPyzSfUsHWtodilQQG/RA55berA==} + '@rollup/rollup-linux-s390x-gnu@4.56.0': + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] libc: [glibc] @@ -3421,8 +3419,8 @@ packages: os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.55.3': - resolution: {integrity: sha512-+fgJE12FZMIgBaKIAGd45rxf+5ftcycANJRWk8Vz0NnMTM5rADPGuRFTYar+Mqs560xuART7XsX2lSACa1iOmQ==} + '@rollup/rollup-linux-x64-gnu@4.56.0': + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] libc: [glibc] @@ -3433,8 +3431,8 @@ packages: os: [linux] libc: [musl] - '@rollup/rollup-linux-x64-musl@4.55.3': - resolution: {integrity: sha512-tMD7NnbAolWPzQlJQJjVFh/fNH3K/KnA7K8gv2dJWCwwnaK6DFCYST1QXYWfu5V0cDwarWC8Sf/cfMHniNq21A==} + '@rollup/rollup-linux-x64-musl@4.56.0': + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] libc: [musl] @@ -3444,8 +3442,8 @@ packages: cpu: [x64] os: [openbsd] - '@rollup/rollup-openbsd-x64@4.55.3': - resolution: {integrity: sha512-u5KsqxOxjEeIbn7bUK1MPM34jrnPwjeqgyin4/N6e/KzXKfpE9Mi0nCxcQjaM9lLmPcHmn/xx1yOjgTMtu1jWQ==} + '@rollup/rollup-openbsd-x64@4.56.0': + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] @@ -3454,8 +3452,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.55.3': - resolution: {integrity: sha512-vo54aXwjpTtsAnb3ca7Yxs9t2INZg7QdXN/7yaoG7nPGbOBXYXQY41Km+S1Ov26vzOAzLcAjmMdjyEqS1JkVhw==} + '@rollup/rollup-openharmony-arm64@4.56.0': + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] @@ -3464,8 +3462,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.55.3': - resolution: {integrity: sha512-HI+PIVZ+m+9AgpnY3pt6rinUdRYrGHvmVdsNQ4odNqQ/eRF78DVpMR7mOq7nW06QxpczibwBmeQzB68wJ+4W4A==} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] @@ -3474,8 +3472,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.3': - resolution: {integrity: sha512-vRByotbdMo3Wdi+8oC2nVxtc3RkkFKrGaok+a62AT8lz/YBuQjaVYAS5Zcs3tPzW43Vsf9J0wehJbUY5xRSekA==} + '@rollup/rollup-win32-ia32-msvc@4.56.0': + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] @@ -3484,8 +3482,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.3': - resolution: {integrity: sha512-POZHq7UeuzMJljC5NjKi8vKMFN6/5EOqcX1yGntNLp7rUTpBAXQ1hW8kWPFxYLv07QMcNM75xqVLGPWQq6TKFA==} + '@rollup/rollup-win32-x64-gnu@4.56.0': + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] @@ -3494,8 +3492,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.3': - resolution: {integrity: sha512-aPFONczE4fUFKNXszdvnd2GqKEYQdV5oEsIbKPujJmWlCI9zEsv1Otig8RKK+X9bed9gFUN6LAeN4ZcNuu4zjg==} + '@rollup/rollup-win32-x64-msvc@4.56.0': + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] @@ -4008,20 +4006,20 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.17': - resolution: {integrity: sha512-/6zU2FLGg0jsd+ePZcwHRy3+WpNTBBhDY56P4JTRqUN/Dp6CvOEa9HrikcQ4KfV2b2kAHUFB4dl1SuocWXSFEw==} + '@vitest/coverage-v8@4.0.18': + resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} peerDependencies: - '@vitest/browser': 4.0.17 - vitest: 4.0.17 + '@vitest/browser': 4.0.18 + vitest: 4.0.18 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.17': - resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} + '@vitest/expect@4.0.18': + resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} - '@vitest/mocker@4.0.17': - resolution: {integrity: sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==} + '@vitest/mocker@4.0.18': + resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4031,20 +4029,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.17': - resolution: {integrity: sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==} + '@vitest/pretty-format@4.0.18': + resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} - '@vitest/runner@4.0.17': - resolution: {integrity: sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==} + '@vitest/runner@4.0.18': + resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} - '@vitest/snapshot@4.0.17': - resolution: {integrity: sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==} + '@vitest/snapshot@4.0.18': + resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} - '@vitest/spy@4.0.17': - resolution: {integrity: sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==} + '@vitest/spy@4.0.18': + resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} - '@vitest/utils@4.0.17': - resolution: {integrity: sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==} + '@vitest/utils@4.0.18': + resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} '@web/browser-logs@0.4.1': resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} @@ -5915,8 +5913,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@17.0.0: - resolution: {integrity: sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==} + globals@17.1.0: + resolution: {integrity: sha512-8HoIcWI5fCvG5NADj4bDav+er9B9JMj2vyL2pI8D0eismKyUvPLTSs+Ln3wqhwcp306i73iyVnEKx3F6T47TGw==} engines: {node: '>=18'} globalthis@1.0.4: @@ -6807,8 +6805,8 @@ packages: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - lmdb@3.4.4: - resolution: {integrity: sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==} + lmdb@3.5.0: + resolution: {integrity: sha512-X2+3CucH5JIqYznreDOa9AAFPm2ll5L+N54inqaiFUwl8aaBW1jSuokZ6adBLfGnKLdCQVtPHHKUtpaLURT0kA==} hasBin: true loader-runner@4.3.1: @@ -8019,8 +8017,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-beta.59: - resolution: {integrity: sha512-Slm000Gd8/AO9z4Kxl4r8mp/iakrbAuJ1L+7ddpkNxgQ+Vf37WPvY63l3oeyZcfuPD1DRrUYBsRPIXSOhvOsmw==} + rolldown@1.0.0-rc.1: + resolution: {integrity: sha512-M3AeZjYE6UclblEf531Hch0WfVC/NOL43Cc+WdF3J50kk5/fvouHhDumSGTh0oRjbZ8C4faaVr5r6Nx1xMqDGg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8050,8 +8048,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.55.3: - resolution: {integrity: sha512-y9yUpfQvetAjiDLtNMf1hL9NXchIJgWt6zIKeoB+tCd3npX08Eqfzg60V9DhIGVMtQ0AlMkFw5xa+AQ37zxnAA==} + rollup@4.56.0: + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -8118,8 +8116,8 @@ packages: webpack: optional: true - sass@1.97.2: - resolution: {integrity: sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==} + sass@1.97.3: + resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} engines: {node: '>=14.0.0'} hasBin: true @@ -8833,8 +8831,8 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - undici@7.18.2: - resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + undici@7.19.1: + resolution: {integrity: sha512-Gpq0iNm5M6cQWlyHQv9MV+uOj1jWk7LpkoE5vSp/7zjb4zMdAcUD+VL5y0nH4p9EbUklq00eVIIX/XcDHzu5xg==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -9002,18 +9000,18 @@ packages: yaml: optional: true - vitest@4.0.17: - resolution: {integrity: sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==} + vitest@4.0.18: + resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.17 - '@vitest/browser-preview': 4.0.17 - '@vitest/browser-webdriverio': 4.0.17 - '@vitest/ui': 4.0.17 + '@vitest/browser-playwright': 4.0.18 + '@vitest/browser-preview': 4.0.18 + '@vitest/browser-webdriverio': 4.0.18 + '@vitest/ui': 4.0.18 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9396,8 +9394,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.3.5: - resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} zone.js@0.16.0: resolution: {integrity: sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==} @@ -9589,11 +9587,11 @@ 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/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6))': dependencies: '@actions/core': 2.0.2 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) - '@google/genai': 1.38.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + '@google/genai': 1.38.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) '@inquirer/prompts': 8.2.0(@types/node@24.10.9) '@inquirer/type': 4.0.3(@types/node@24.10.9) '@octokit/auth-app': 8.1.2 @@ -10967,13 +10965,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@google/genai@1.38.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.5))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': + '@google/genai@1.38.0(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)': dependencies: google-auth-library: 10.5.0(supports-color@10.2.2) protobufjs: 7.5.4 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: - '@modelcontextprotocol/sdk': 1.25.3(zod@4.3.5) + '@modelcontextprotocol/sdk': 1.25.3(zod@4.3.6) transitivePeerDependencies: - bufferutil - supports-color @@ -11005,6 +11003,9 @@ snapshots: '@hapi/bourne@3.0.0': {} + '@harperfast/extended-iterable@1.0.3': + optional: true + '@hono/node-server@1.19.9': {} '@humanfs/core@0.19.1': {} @@ -11362,28 +11363,25 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.4.4': - optional: true - - '@lmdb/lmdb-darwin-x64@3.4.4': + '@lmdb/lmdb-darwin-arm64@3.5.0': optional: true - '@lmdb/lmdb-linux-arm64@3.4.4': + '@lmdb/lmdb-darwin-x64@3.5.0': optional: true - '@lmdb/lmdb-linux-arm@3.4.4': + '@lmdb/lmdb-linux-arm64@3.5.0': optional: true - '@lmdb/lmdb-linux-x64@3.4.4': + '@lmdb/lmdb-linux-arm@3.5.0': optional: true - '@lmdb/lmdb-win32-arm64@3.4.4': + '@lmdb/lmdb-linux-x64@3.5.0': optional: true - '@lmdb/lmdb-win32-x64@3.4.4': + '@lmdb/lmdb-win32-x64@3.5.0': optional: true - '@modelcontextprotocol/sdk@1.25.3(zod@4.3.5)': + '@modelcontextprotocol/sdk@1.25.3(zod@4.3.6)': dependencies: '@hono/node-server': 1.19.9 ajv: 8.17.1 @@ -11399,8 +11397,8 @@ snapshots: json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 4.3.5 - zod-to-json-schema: 3.25.1(zod@4.3.5) + zod: 4.3.6 + zod-to-json-schema: 3.25.1(zod@4.3.6) transitivePeerDependencies: - hono - supports-color @@ -11716,7 +11714,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.39.0': {} - '@oxc-project/types@0.107.0': {} + '@oxc-project/types@0.110.0': {} '@parcel/watcher-android-arm64@2.5.4': optional: true @@ -11932,56 +11930,56 @@ snapshots: - react-native-b4a - supports-color - '@rolldown/binding-android-arm64@1.0.0-beta.59': + '@rolldown/binding-android-arm64@1.0.0-rc.1': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.59': + '@rolldown/binding-darwin-arm64@1.0.0-rc.1': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.59': + '@rolldown/binding-darwin-x64@1.0.0-rc.1': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.59': + '@rolldown/binding-freebsd-x64@1.0.0-rc.1': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.59': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.59': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.59': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.1': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.59': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.1': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.59': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.1': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.59': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1': optional: true - '@rolldown/pluginutils@1.0.0-beta.59': {} + '@rolldown/pluginutils@1.0.0-rc.1': {} - '@rollup/plugin-alias@6.0.0(rollup@4.55.3)': + '@rollup/plugin-alias@6.0.0(rollup@4.56.0)': optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 - '@rollup/plugin-commonjs@29.0.0(rollup@4.55.3)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.56.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.3) + '@rollup/pluginutils': 5.3.0(rollup@4.56.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -11989,7 +11987,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 '@rollup/plugin-json@6.1.0(rollup@4.55.1)': dependencies: @@ -11997,39 +11995,39 @@ snapshots: optionalDependencies: rollup: 4.55.1 - '@rollup/plugin-json@6.1.0(rollup@4.55.3)': + '@rollup/plugin-json@6.1.0(rollup@4.56.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.3) + '@rollup/pluginutils': 5.3.0(rollup@4.56.0) optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.55.3)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.56.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.3) + '@rollup/pluginutils': 5.3.0(rollup@4.56.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.55.3)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.56.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.3) + '@rollup/pluginutils': 5.3.0(rollup@4.56.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 - '@rollup/pluginutils@5.2.0(rollup@4.55.3)': + '@rollup/pluginutils@5.2.0(rollup@4.56.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 '@rollup/pluginutils@5.3.0(rollup@4.55.1)': dependencies: @@ -12039,162 +12037,162 @@ snapshots: optionalDependencies: rollup: 4.55.1 - '@rollup/pluginutils@5.3.0(rollup@4.55.3)': + '@rollup/pluginutils@5.3.0(rollup@4.56.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.55.3 + rollup: 4.56.0 '@rollup/rollup-android-arm-eabi@4.55.1': optional: true - '@rollup/rollup-android-arm-eabi@4.55.3': + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true '@rollup/rollup-android-arm64@4.55.1': optional: true - '@rollup/rollup-android-arm64@4.55.3': + '@rollup/rollup-android-arm64@4.56.0': optional: true '@rollup/rollup-darwin-arm64@4.55.1': optional: true - '@rollup/rollup-darwin-arm64@4.55.3': + '@rollup/rollup-darwin-arm64@4.56.0': optional: true '@rollup/rollup-darwin-x64@4.55.1': optional: true - '@rollup/rollup-darwin-x64@4.55.3': + '@rollup/rollup-darwin-x64@4.56.0': optional: true '@rollup/rollup-freebsd-arm64@4.55.1': optional: true - '@rollup/rollup-freebsd-arm64@4.55.3': + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true '@rollup/rollup-freebsd-x64@4.55.1': optional: true - '@rollup/rollup-freebsd-x64@4.55.3': + '@rollup/rollup-freebsd-x64@4.56.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.3': + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.3': + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.3': + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true '@rollup/rollup-linux-arm64-musl@4.55.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.55.3': + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.3': + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true '@rollup/rollup-linux-loong64-musl@4.55.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.3': + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true '@rollup/rollup-linux-ppc64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.3': + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true '@rollup/rollup-linux-ppc64-musl@4.55.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.3': + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.3': + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true '@rollup/rollup-linux-riscv64-musl@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.3': + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true '@rollup/rollup-linux-s390x-gnu@4.55.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.3': + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true '@rollup/rollup-linux-x64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.3': + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true '@rollup/rollup-linux-x64-musl@4.55.1': optional: true - '@rollup/rollup-linux-x64-musl@4.55.3': + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true '@rollup/rollup-openbsd-x64@4.55.1': optional: true - '@rollup/rollup-openbsd-x64@4.55.3': + '@rollup/rollup-openbsd-x64@4.56.0': optional: true '@rollup/rollup-openharmony-arm64@4.55.1': optional: true - '@rollup/rollup-openharmony-arm64@4.55.3': + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.55.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.3': + '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.55.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.3': + '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true '@rollup/rollup-win32-x64-gnu@4.55.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.3': + '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.3': + '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true '@rollup/wasm-node@4.55.1': @@ -12886,14 +12884,14 @@ snapshots: lodash: 4.17.21 minimatch: 7.4.6 - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.17(vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.17 + '@vitest/utils': 4.0.18 ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -12902,45 +12900,45 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/expect@4.0.17': + '@vitest/expect@4.0.18': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.17 - '@vitest/utils': 4.0.17 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.17 + '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@4.0.17': + '@vitest/pretty-format@4.0.18': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.17': + '@vitest/runner@4.0.18': dependencies: - '@vitest/utils': 4.0.17 + '@vitest/utils': 4.0.18 pathe: 2.0.3 - '@vitest/snapshot@4.0.17': + '@vitest/snapshot@4.0.18': dependencies: - '@vitest/pretty-format': 4.0.17 + '@vitest/pretty-format': 4.0.18 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.17': {} + '@vitest/spy@4.0.18': {} - '@vitest/utils@4.0.17': + '@vitest/utils@4.0.18': dependencies: - '@vitest/pretty-format': 4.0.17 + '@vitest/pretty-format': 4.0.18 tinyrainbow: 3.0.3 '@web/browser-logs@0.4.1': @@ -12976,11 +12974,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.1.0)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.55.3) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.56.0) '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.55.3 + rollup: 4.56.0 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -15328,7 +15326,7 @@ snapshots: globals@14.0.0: {} - globals@17.0.0: {} + globals@17.1.0: {} globalthis@1.0.4: dependencies: @@ -16361,21 +16359,21 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - lmdb@3.4.4: + lmdb@3.5.0: dependencies: + '@harperfast/extended-iterable': 1.0.3 msgpackr: 1.11.8 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.2.2 ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.4.4 - '@lmdb/lmdb-darwin-x64': 3.4.4 - '@lmdb/lmdb-linux-arm': 3.4.4 - '@lmdb/lmdb-linux-arm64': 3.4.4 - '@lmdb/lmdb-linux-x64': 3.4.4 - '@lmdb/lmdb-win32-arm64': 3.4.4 - '@lmdb/lmdb-win32-x64': 3.4.4 + '@lmdb/lmdb-darwin-arm64': 3.5.0 + '@lmdb/lmdb-darwin-x64': 3.5.0 + '@lmdb/lmdb-linux-arm': 3.5.0 + '@lmdb/lmdb-linux-arm64': 3.5.0 + '@lmdb/lmdb-linux-x64': 3.5.0 + '@lmdb/lmdb-win32-x64': 3.5.0 optional: true loader-runner@4.3.1: {} @@ -16740,7 +16738,7 @@ snapshots: postcss: 8.5.6 rollup-plugin-dts: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rxjs: 7.8.2 - sass: 1.97.2 + sass: 1.97.3 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 @@ -17718,24 +17716,24 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-beta.59: + rolldown@1.0.0-rc.1: dependencies: - '@oxc-project/types': 0.107.0 - '@rolldown/pluginutils': 1.0.0-beta.59 + '@oxc-project/types': 0.110.0 + '@rolldown/pluginutils': 1.0.0-rc.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.59 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.59 - '@rolldown/binding-darwin-x64': 1.0.0-beta.59 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.59 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.59 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.59 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.59 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.59 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.59 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.59 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.59 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.59 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.59 + '@rolldown/binding-android-arm64': 1.0.0-rc.1 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.1 + '@rolldown/binding-darwin-x64': 1.0.0-rc.1 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.1 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.1 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.1 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.1 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.1 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.1 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.1 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.1 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.1 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.1 rollup-license-plugin@3.1.0: dependencies: @@ -17752,18 +17750,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.28.6 - rollup-plugin-dts@6.3.0(rollup@4.55.3)(typescript@5.9.3): + rollup-plugin-dts@6.3.0(rollup@4.56.0)(typescript@5.9.3): dependencies: magic-string: 0.30.21 - rollup: 4.55.3 + rollup: 4.56.0 typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.28.6 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.55.3): + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.56.0): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.55.3) - rollup: 4.55.3 + '@rollup/pluginutils': 5.2.0(rollup@4.56.0) + rollup: 4.56.0 optionalDependencies: '@types/node': 22.19.7 @@ -17798,35 +17796,35 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.55.1 fsevents: 2.3.3 - rollup@4.55.3: + rollup@4.56.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.3 - '@rollup/rollup-android-arm64': 4.55.3 - '@rollup/rollup-darwin-arm64': 4.55.3 - '@rollup/rollup-darwin-x64': 4.55.3 - '@rollup/rollup-freebsd-arm64': 4.55.3 - '@rollup/rollup-freebsd-x64': 4.55.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.3 - '@rollup/rollup-linux-arm-musleabihf': 4.55.3 - '@rollup/rollup-linux-arm64-gnu': 4.55.3 - '@rollup/rollup-linux-arm64-musl': 4.55.3 - '@rollup/rollup-linux-loong64-gnu': 4.55.3 - '@rollup/rollup-linux-loong64-musl': 4.55.3 - '@rollup/rollup-linux-ppc64-gnu': 4.55.3 - '@rollup/rollup-linux-ppc64-musl': 4.55.3 - '@rollup/rollup-linux-riscv64-gnu': 4.55.3 - '@rollup/rollup-linux-riscv64-musl': 4.55.3 - '@rollup/rollup-linux-s390x-gnu': 4.55.3 - '@rollup/rollup-linux-x64-gnu': 4.55.3 - '@rollup/rollup-linux-x64-musl': 4.55.3 - '@rollup/rollup-openbsd-x64': 4.55.3 - '@rollup/rollup-openharmony-arm64': 4.55.3 - '@rollup/rollup-win32-arm64-msvc': 4.55.3 - '@rollup/rollup-win32-ia32-msvc': 4.55.3 - '@rollup/rollup-win32-x64-gnu': 4.55.3 - '@rollup/rollup-win32-x64-msvc': 4.55.3 + '@rollup/rollup-android-arm-eabi': 4.56.0 + '@rollup/rollup-android-arm64': 4.56.0 + '@rollup/rollup-darwin-arm64': 4.56.0 + '@rollup/rollup-darwin-x64': 4.56.0 + '@rollup/rollup-freebsd-arm64': 4.56.0 + '@rollup/rollup-freebsd-x64': 4.56.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 + '@rollup/rollup-linux-arm64-musl': 4.56.0 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 + '@rollup/rollup-linux-loong64-musl': 4.56.0 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 + '@rollup/rollup-linux-x64-gnu': 4.56.0 + '@rollup/rollup-linux-x64-musl': 4.56.0 + '@rollup/rollup-openbsd-x64': 4.56.0 + '@rollup/rollup-openharmony-arm64': 4.56.0 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 + '@rollup/rollup-win32-x64-gnu': 4.56.0 + '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 router@2.2.0: @@ -17878,14 +17876,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.6(sass@1.97.2)(webpack@5.104.1(esbuild@0.27.2)): + sass-loader@16.0.6(sass@1.97.3)(webpack@5.104.1(esbuild@0.27.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.97.2 + sass: 1.97.3 webpack: 5.104.1(esbuild@0.27.2) - sass@1.97.2: + sass@1.97.3: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -18763,7 +18761,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.18.2: {} + undici@7.19.1: {} unenv@1.10.0: dependencies: @@ -18929,7 +18927,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -18942,20 +18940,20 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 - sass: 1.97.2 + sass: 1.97.3 terser: 5.46.0 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.17(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.17 - '@vitest/mocker': 4.0.17(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.17 - '@vitest/runner': 4.0.17 - '@vitest/snapshot': 4.0.17 - '@vitest/spy': 4.0.17 - '@vitest/utils': 4.0.17 + '@vitest/expect': 4.0.18 + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.18 + '@vitest/runner': 4.0.18 + '@vitest/snapshot': 4.0.18 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 es-module-lexer: 1.7.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -18967,7 +18965,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -19373,12 +19371,12 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.1(zod@4.3.5): + zod-to-json-schema@3.25.1(zod@4.3.6): dependencies: - zod: 4.3.5 + zod: 4.3.6 zod@3.25.76: {} - zod@4.3.5: {} + zod@4.3.6: {} zone.js@0.16.0: {} From 98ffb68f608ee48c14e67cd6a3dec3e33582c5ba Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:56:53 -0500 Subject: [PATCH 2130/2162] fix(@angular/build): loosen Vitest dependency checks when runnerConfig is used When a Vitest configuration file is provided via the `runnerConfig` option, the builder now only validates that the `vitest` package itself is installed. Checks for specific browser providers, DOM environments (jsdom/happy-dom), and coverage providers are skipped, as the custom configuration may handle these or use alternative setups that the builder cannot predict. --- .../build/src/builders/unit-test/runners/vitest/index.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts index 081d635c1a2b..e3c6910aea7d 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/index.ts @@ -22,6 +22,15 @@ const VitestTestRunner: TestRunner = { const checker = new DependencyChecker(options.projectSourceRoot); checker.check('vitest'); + // If a runnerConfig is present, only check for 'vitest' itself. + // Custom configuration may include unknown browsers or other setup + // that doesn't follow the default dependency requirements. + if (options.runnerConfig) { + checker.report(); + + return; + } + if (options.browsers?.length) { if (process.versions.webcontainer) { checker.check('@vitest/browser-preview'); From e0c097d7c5240da3d7d1e894726afdbd838fca2f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:27:08 -0500 Subject: [PATCH 2131/2162] refactor(@angular/cli): unify package manifest type usage in update schematic Replaces the local JsonSchemaForNpmPackageJsonFiles interface in the update schematic with the shared PackageManifest from utilities/package-metadata. --- .../cli/src/commands/update/schematic/index.ts | 17 ++++++----------- .../cli/src/utilities/package-metadata.ts | 1 + 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/angular/cli/src/commands/update/schematic/index.ts b/packages/angular/cli/src/commands/update/schematic/index.ts index 86bfe92deca1..73fd3e342a5a 100644 --- a/packages/angular/cli/src/commands/update/schematic/index.ts +++ b/packages/angular/cli/src/commands/update/schematic/index.ts @@ -9,19 +9,14 @@ import { logging } from '@angular-devkit/core'; import { Rule, SchematicContext, SchematicsException, Tree } from '@angular-devkit/schematics'; import * as npa from 'npm-package-arg'; -import type { Manifest } from 'pacote'; import * as semver from 'semver'; import { - NgPackageManifestProperties, NpmRepositoryPackageJson, + PackageManifest, getNpmPackageJson, } from '../../../utilities/package-metadata'; import { Schema as UpdateSchema } from './schema'; -interface JsonSchemaForNpmPackageJsonFiles extends Manifest, NgPackageManifestProperties { - peerDependenciesMeta?: Record; -} - type VersionRange = string & { __VERSION_RANGE: void }; type PeerVersionTransform = string | ((range: string) => string); @@ -64,7 +59,7 @@ const knownPeerCompatibleList: { [name: string]: PeerVersionTransform } = { interface PackageVersionInfo { version: VersionRange; - packageJson: JsonSchemaForNpmPackageJsonFiles; + packageJson: PackageManifest; updateMetadata: UpdateMetadata; } @@ -268,7 +263,7 @@ function _performUpdate( throw new SchematicsException('Could not find a package.json. Are you in a Node project?'); } - const packageJson = tree.readJson('/package.json') as JsonSchemaForNpmPackageJsonFiles; + const packageJson = tree.readJson('/package.json') as PackageManifest; const updateDependency = (deps: Record, name: string, newVersion: string) => { const oldVersion = deps[name]; @@ -347,7 +342,7 @@ function _performUpdate( } function _getUpdateMetadata( - packageJson: JsonSchemaForNpmPackageJsonFiles, + packageJson: PackageManifest, logger: logging.LoggerApi, ): UpdateMetadata { const metadata = packageJson['ng-update']; @@ -548,7 +543,7 @@ function _buildPackageInfo( let installedVersion: string | undefined | null; if (pkgJsonExists) { - const { version } = tree.readJson(pkgJsonPath) as JsonSchemaForNpmPackageJsonFiles; + const { version } = tree.readJson(pkgJsonPath) as PackageManifest; installedVersion = version; } @@ -774,7 +769,7 @@ function _addPeerDependencies( function _getAllDependencies(tree: Tree): Array { const { dependencies, devDependencies, peerDependencies } = tree.readJson( '/package.json', - ) as JsonSchemaForNpmPackageJsonFiles; + ) as PackageManifest; return [ ...(Object.entries(peerDependencies || {}) as Array<[string, VersionRange]>), diff --git a/packages/angular/cli/src/utilities/package-metadata.ts b/packages/angular/cli/src/utilities/package-metadata.ts index 7aa0cb71c8ce..58369ad07ec9 100644 --- a/packages/angular/cli/src/utilities/package-metadata.ts +++ b/packages/angular/cli/src/utilities/package-metadata.ts @@ -49,6 +49,7 @@ export interface NgPackageManifestProperties { export interface PackageManifest extends Manifest, NgPackageManifestProperties { deprecated?: boolean; + peerDependenciesMeta?: Record; } interface PackageManagerOptions extends Record { From 8ad70007ef9d884deb703719ef78f1be4e9b7088 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:29:56 -0500 Subject: [PATCH 2132/2162] refactor(@angular/cli): add peerDependenciesMeta to package manifest interface Adds the peerDependenciesMeta property to the PackageManifest interface in the package managers utility to better represent package metadata. --- packages/angular/cli/src/package-managers/package-metadata.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/angular/cli/src/package-managers/package-metadata.ts b/packages/angular/cli/src/package-managers/package-metadata.ts index 6f88ea8a0e8f..45c38ca2602b 100644 --- a/packages/angular/cli/src/package-managers/package-metadata.ts +++ b/packages/angular/cli/src/package-managers/package-metadata.ts @@ -89,6 +89,9 @@ export interface PackageManifest { /** A mapping of peer dependencies. */ peerDependencies?: Record; + /** A mapping of peer dependency metadata */ + peerDependenciesMeta?: Record; + /** A mapping of development dependencies. */ devDependencies?: Record; From 1f1b21dab4fdec7cdbd6cd619f6e95708fd6484c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 23 Jan 2026 13:45:56 -0500 Subject: [PATCH 2133/2162] fix(@angular/build): support merging coverage thresholds with Vitest runnerConfig The Vitest unit test builder now correctly merges coverage thresholds and watermarks from a user's Vitest configuration with CLI-provided options. Previously, providing any CLI thresholds would completely replace the configuration's thresholds. Now, partial CLI thresholds are merged, allowing users to override specific metrics while keeping others from their config. This change also ensures that the builder correctly reports failure when Vitest coverage thresholds are not met by monitoring `process.exitCode`. --- .../unit-test/runners/vitest/executor.ts | 17 ++- .../unit-test/runners/vitest/plugins.ts | 35 ++++- .../options/runner-config-coverage_spec.ts | 120 ++++++++++++++++++ 3 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 packages/angular/build/src/builders/unit-test/tests/options/runner-config-coverage_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts index ed754d9f9c30..39584a5844f0 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts @@ -85,6 +85,11 @@ export class VitestExecutor implements TestExecutor { updateExternalMetadata(buildResult, this.externalMetadata, undefined, true); + // Reset the exit code to allow for a clean state. + // This is necessary because Vitest may set the exit code on failure, which can + // affect subsequent runs in watch mode or when running multiple builders. + process.exitCode = 0; + // Initialize Vitest if not already present. this.vitest ??= await this.initializeVitest(); const vitest = this.vitest; @@ -122,7 +127,17 @@ export class VitestExecutor implements TestExecutor { // Check if all the tests pass to calculate the result const testModules = testResults?.testModules ?? this.vitest.state.getTestModules(); - yield { success: testModules.every((testModule) => testModule.ok()) }; + let success = testModules.every((testModule) => testModule.ok()); + // Vitest does not return a failure result when coverage thresholds are not met. + // Instead, it sets the process exit code to 1. + // We check this exit code to determine if the test run should be considered a failure. + if (success && process.exitCode === 1) { + success = false; + // Reset the exit code to prevent it from carrying over to subsequent runs/builds + process.exitCode = 0; + } + + yield { success }; } async [Symbol.asyncDispose](): Promise { diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 4bd6666250e7..39d42c62d05d 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -370,8 +370,16 @@ async function generateCoverageOption( ...(optionsCoverage.include ? { include: ['spec-*.js', 'chunk-*.js', ...optionsCoverage.include] } : {}), - thresholds: optionsCoverage.thresholds, - watermarks: optionsCoverage.watermarks, + // The 'in' operator is used here because 'configCoverage' is a union type and + // not all coverage providers support thresholds or watermarks. + thresholds: mergeCoverageObjects( + configCoverage && 'thresholds' in configCoverage ? configCoverage.thresholds : undefined, + optionsCoverage.thresholds, + ), + watermarks: mergeCoverageObjects( + configCoverage && 'watermarks' in configCoverage ? configCoverage.watermarks : undefined, + optionsCoverage.watermarks, + ), // Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures ...(optionsCoverage.exclude ? { @@ -388,3 +396,26 @@ async function generateCoverageOption( : {}), }; } + +/** + * Merges coverage related objects while ignoring any `undefined` values. + * This ensures that Angular CLI options correctly override Vitest configuration + * only when explicitly provided. + */ +function mergeCoverageObjects( + configValue: T | undefined, + optionsValue: T | undefined, +): T | undefined { + if (optionsValue === undefined) { + return configValue; + } + + const result: Record = { ...(configValue ?? {}) }; + for (const [key, value] of Object.entries(optionsValue)) { + if (value !== undefined) { + result[key] = value; + } + } + + return Object.keys(result).length > 0 ? (result as T) : undefined; +} diff --git a/packages/angular/build/src/builders/unit-test/tests/options/runner-config-coverage_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/runner-config-coverage_spec.ts new file mode 100644 index 000000000000..c46c38da79ad --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/tests/options/runner-config-coverage_spec.ts @@ -0,0 +1,120 @@ +/** + * @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, + describeBuilder, + UNIT_TEST_BUILDER_INFO, + setupApplicationTarget, +} from '../setup'; + +describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { + describe('Option: "runnerConfig" Coverage Merging', () => { + beforeEach(() => { + setupApplicationTarget(harness); + }); + + describe('Vitest Runner', () => { + it('should preserve thresholds from Vitest config when not overridden by CLI', async () => { + harness.writeFile( + 'vitest-base.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + coverage: { + thresholds: { + branches: 100 + } + } + } + }); + `, + ); + + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: true, + coverage: true, + }); + + const { result } = await harness.executeOnce(); + + // Should fail because branches are not 100% + expect(result?.success).toBeFalse(); + }); + + it('should override Vitest config thresholds with CLI thresholds', async () => { + harness.writeFile( + 'vitest-base.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + coverage: { + thresholds: { + branches: 100 + } + } + } + }); + `, + ); + + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: true, + coverage: true, + coverageThresholds: { + branches: 0, + }, + }); + + const { result } = await harness.executeOnce(); + + // Should pass because CLI overrides threshold to 0 + expect(result?.success).toBeTrue(); + }); + + it('should merge partial CLI thresholds with Vitest config thresholds', async () => { + harness.writeFile( + 'vitest-base.config.ts', + ` + import { defineConfig } from 'vitest/config'; + export default defineConfig({ + test: { + coverage: { + thresholds: { + statements: 100, + branches: 100 + } + } + } + }); + `, + ); + + harness.useTarget('test', { + ...BASE_OPTIONS, + runnerConfig: true, + coverage: true, + coverageThresholds: { + statements: 0, + // branches is undefined here, should remain 100 from config + }, + }); + + const { result } = await harness.executeOnce(); + + // Should still fail because branches threshold (100) is not met + expect(result?.success).toBeFalse(); + }); + }); + }); +}); From 98a24d0401f36f484dc9c4d8b0f5284ffa524f19 Mon Sep 17 00:00:00 2001 From: Alon Mishne Date: Tue, 6 Jan 2026 16:48:23 -0800 Subject: [PATCH 2134/2162] feat(@angular/cli): standardize MCP tools around workspace/project options --- .../angular/cli/src/commands/mcp/devserver.ts | 54 +++- .../cli/src/commands/mcp/shared-options.ts | 24 ++ .../src/commands/mcp/testing/test-utils.ts | 14 +- .../cli/src/commands/mcp/tools/build.ts | 31 ++- .../cli/src/commands/mcp/tools/build_spec.ts | 72 ++++-- .../mcp/tools/devserver/devserver-start.ts | 37 +-- .../mcp/tools/devserver/devserver-stop.ts | 57 ++-- .../devserver/devserver-wait-for-build.ts | 64 ++--- .../mcp/tools/devserver/devserver_spec.ts | 54 ++-- .../angular/cli/src/commands/mcp/tools/e2e.ts | 38 ++- .../cli/src/commands/mcp/tools/e2e_spec.ts | 36 ++- .../cli/src/commands/mcp/tools/modernize.ts | 80 +++--- .../src/commands/mcp/tools/modernize_spec.ts | 156 +++-------- .../migrate-test-file.ts | 2 +- .../cli/src/commands/mcp/tools/test.ts | 28 +- .../cli/src/commands/mcp/tools/test_spec.ts | 87 ++++--- .../angular/cli/src/commands/mcp/utils.ts | 73 +----- .../cli/src/commands/mcp/utils_spec.ts | 91 +------ .../cli/src/commands/mcp/workspace-utils.ts | 178 +++++++++++++ .../src/commands/mcp/workspace-utils_spec.ts | 243 ++++++++++++++++++ 20 files changed, 839 insertions(+), 580 deletions(-) create mode 100644 packages/angular/cli/src/commands/mcp/shared-options.ts create mode 100644 packages/angular/cli/src/commands/mcp/workspace-utils.ts create mode 100644 packages/angular/cli/src/commands/mcp/workspace-utils_spec.ts diff --git a/packages/angular/cli/src/commands/mcp/devserver.ts b/packages/angular/cli/src/commands/mcp/devserver.ts index 6955f2d512e6..dc24e5c73e4e 100644 --- a/packages/angular/cli/src/commands/mcp/devserver.ts +++ b/packages/angular/cli/src/commands/mcp/devserver.ts @@ -62,6 +62,16 @@ export interface Devserver { * `ng serve` port to use. */ port: number; + + /** + * The workspace path for this server. + */ + workspacePath: string; + + /** + * The project name for this server. + */ + project: string; } /** @@ -70,7 +80,8 @@ export interface Devserver { export class LocalDevserver implements Devserver { readonly host: Host; readonly port: number; - readonly project?: string; + readonly workspacePath: string; + readonly project: string; private devserverProcess: ChildProcess | null = null; private serverLogs: string[] = []; @@ -78,10 +89,21 @@ export class LocalDevserver implements Devserver { private latestBuildLogStartIndex?: number = undefined; private latestBuildStatus: BuildStatus = 'unknown'; - constructor({ host, port, project }: { host: Host; port: number; project?: string }) { + constructor({ + host, + port, + workspacePath, + project, + }: { + host: Host; + port: number; + workspacePath: string; + project: string; + }) { this.host = host; - this.project = project; this.port = port; + this.workspacePath = workspacePath; + this.project = project; } start() { @@ -96,7 +118,10 @@ export class LocalDevserver implements Devserver { args.push(`--port=${this.port}`); - this.devserverProcess = this.host.spawn('ng', args, { stdio: 'pipe' }); + this.devserverProcess = this.host.spawn('ng', args, { + stdio: 'pipe', + cwd: this.workspacePath, + }); this.devserverProcess.stdout?.on('data', (data) => { this.addLog(data.toString()); }); @@ -142,3 +167,24 @@ export class LocalDevserver implements Devserver { return this.buildInProgress; } } + +export function getDevserverKey(workspacePath: string, projectName: string): string { + return `${workspacePath}:${projectName}`; +} + +export function createDevServerNotFoundError( + devservers: Map, +): Error { + if (devservers.size === 0) { + return new Error('No development servers are currently running.'); + } + + const runningServers = Array.from(devservers.values()) + .map((server) => `- Project '${server.project}' in workspace path '${server.workspacePath}'`) + .join('\n'); + + return new Error( + `Dev server not found. Currently running servers:\n${runningServers}\n` + + 'Please provide the correct workspace and project arguments.', + ); +} diff --git a/packages/angular/cli/src/commands/mcp/shared-options.ts b/packages/angular/cli/src/commands/mcp/shared-options.ts new file mode 100644 index 000000000000..a390e0704291 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/shared-options.ts @@ -0,0 +1,24 @@ +/** + * @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 { z } from 'zod'; + +export const workspaceAndProjectOptions = { + workspace: z + .string() + .optional() + .describe( + 'The path to the workspace directory (containing angular.json). If not provided, uses the current directory.', + ), + project: z + .string() + .optional() + .describe( + 'Which project to target in a monorepo context. If not provided, targets the default project.', + ), +}; diff --git a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts index 888fe1d0463b..7afcd695dd7d 100644 --- a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts +++ b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts @@ -41,6 +41,13 @@ export interface MockContextOptions { projects?: Record; } +/** + * Same as McpToolContext, just with guaranteed nonnull workspace. + */ +export interface MockMcpToolContext extends McpToolContext { + workspace: AngularWorkspace; +} + /** * Creates a comprehensive mock for the McpToolContext, including a mock Host, * an AngularWorkspace, and a ProjectDefinitionCollection. This simplifies testing @@ -50,15 +57,14 @@ export interface MockContextOptions { */ export function createMockContext(options: MockContextOptions = {}): { host: MockHost; - context: McpToolContext; + context: MockMcpToolContext; projects: workspaces.ProjectDefinitionCollection; - workspace: AngularWorkspace; } { const host = options.host ?? createMockHost(); const projects = new workspaces.ProjectDefinitionCollection(options.projects); const workspace = new AngularWorkspace({ projects, extensions: {} }, '/test/angular.json'); - const context: McpToolContext = { + const context: MockMcpToolContext = { server: {} as unknown as McpServer, workspace, logger: { warn: () => {} }, @@ -66,7 +72,7 @@ export function createMockContext(options: MockContextOptions = {}): { host, }; - return { host, context, projects, workspace }; + return { host, context, projects }; } /** diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts index 3faee85ebc90..5f6ce7a020a0 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build.ts @@ -7,9 +7,10 @@ */ import { z } from 'zod'; -import { CommandError, type Host } from '../host'; +import { workspaceAndProjectOptions } from '../shared-options'; import { createStructuredContentOutput, getCommandErrorLogs } from '../utils'; -import { type McpToolDeclaration, declareTool } from './tool-registry'; +import { resolveWorkspaceAndProject } from '../workspace-utils'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry'; const DEFAULT_CONFIGURATION = 'development'; @@ -17,12 +18,7 @@ const buildStatusSchema = z.enum(['success', 'failure']); type BuildStatus = z.infer; const buildToolInputSchema = z.object({ - project: z - .string() - .optional() - .describe( - 'Which project to build in a monorepo context. If not provided, builds the default project.', - ), + ...workspaceAndProjectOptions, configuration: z .string() .optional() @@ -39,20 +35,23 @@ const buildToolOutputSchema = z.object({ export type BuildToolOutput = z.infer; -export async function runBuild(input: BuildToolInput, host: Host) { +export async function runBuild(input: BuildToolInput, context: McpToolContext) { + const { workspacePath, projectName } = await resolveWorkspaceAndProject({ + host: context.host, + workspacePathInput: input.workspace, + projectNameInput: input.project, + mcpWorkspace: context.workspace, + }); + // Build "ng"'s command line. - const args = ['build']; - if (input.project) { - args.push(input.project); - } - args.push('-c', input.configuration ?? DEFAULT_CONFIGURATION); + const args = ['build', projectName, '-c', input.configuration ?? DEFAULT_CONFIGURATION]; let status: BuildStatus = 'success'; let logs: string[] = []; let outputPath: string | undefined; try { - logs = (await host.runCommand('ng', args)).logs; + logs = (await context.host.runCommand('ng', args, { cwd: workspacePath })).logs; } catch (e) { status = 'failure'; logs = getCommandErrorLogs(e); @@ -101,5 +100,5 @@ Perform a one-off, non-watched build using "ng build". Use this tool whenever th isLocalOnly: true, inputSchema: buildToolInputSchema.shape, outputSchema: buildToolOutputSchema.shape, - factory: (context) => (input) => runBuild(input, context.host), + factory: (context) => (input) => runBuild(input, context), }); diff --git a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts index 387c415d5eb2..403d5e68f877 100644 --- a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts @@ -8,34 +8,50 @@ import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; -import { createMockHost } from '../testing/test-utils'; +import { + MockMcpToolContext, + addProjectToWorkspace, + createMockContext, +} from '../testing/test-utils'; import { runBuild } from './build'; describe('Build Tool', () => { let mockHost: MockHost; + let mockContext: MockMcpToolContext; beforeEach(() => { - mockHost = createMockHost(); + const mock = createMockContext(); + mockHost = mock.host; + mockContext = mock.context; + addProjectToWorkspace(mock.projects, 'my-app'); }); it('should construct the command correctly with default configuration', async () => { - await runBuild({}, mockHost); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['build', '-c', 'development']); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; + await runBuild({}, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['build', 'my-app', '-c', 'development'], + { cwd: '/test' }, + ); }); it('should construct the command correctly with a specified project', async () => { - await runBuild({ project: 'another-app' }, mockHost); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'build', - 'another-app', - '-c', - 'development', - ]); + addProjectToWorkspace(mockContext.workspace.projects, 'another-app'); + await runBuild({ project: 'another-app' }, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['build', 'another-app', '-c', 'development'], + { cwd: '/test' }, + ); }); it('should construct the command correctly for a custom configuration', async () => { - await runBuild({ configuration: 'myconfig' }, mockHost); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['build', '-c', 'myconfig']); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; + await runBuild({ configuration: 'myconfig' }, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['build', 'my-app', '-c', 'myconfig'], { + cwd: '/test', + }); }); it('should handle a successful build and extract the output path and logs', async () => { @@ -49,35 +65,34 @@ describe('Build Tool', () => { logs: buildLogs, }); - const { structuredContent } = await runBuild({ project: 'my-app' }, mockHost); + const { structuredContent } = await runBuild({ project: 'my-app' }, mockContext); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'build', - 'my-app', - '-c', - 'development', - ]); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['build', 'my-app', '-c', 'development'], + { cwd: '/test' }, + ); expect(structuredContent.status).toBe('success'); expect(structuredContent.logs).toEqual(buildLogs); expect(structuredContent.path).toBe('dist/my-app'); }); it('should handle a failed build and capture logs', async () => { + addProjectToWorkspace(mockContext.workspace.projects, 'my-failed-app'); const buildLogs = ['Some output before the crash.', 'Error: Something went wrong!']; const error = new CommandError('Build failed', buildLogs, 1); mockHost.runCommand.and.rejectWith(error); const { structuredContent } = await runBuild( { project: 'my-failed-app', configuration: 'production' }, - mockHost, + mockContext, ); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'build', - 'my-failed-app', - '-c', - 'production', - ]); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['build', 'my-failed-app', '-c', 'production'], + { cwd: '/test' }, + ); expect(structuredContent.status).toBe('failure'); expect(structuredContent.logs).toEqual([...buildLogs, 'Build failed']); expect(structuredContent.path).toBeUndefined(); @@ -87,7 +102,8 @@ describe('Build Tool', () => { const buildLogs = ["Some logs that don't match any output path."]; mockHost.runCommand.and.resolveTo({ logs: buildLogs }); - const { structuredContent } = await runBuild({}, mockHost); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; + const { structuredContent } = await runBuild({}, mockContext); expect(structuredContent.status).toBe('success'); expect(structuredContent.logs).toEqual(buildLogs); diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts index 44917d612ef1..272bf6800300 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-start.ts @@ -7,17 +7,14 @@ */ import { z } from 'zod'; -import { LocalDevserver } from '../../devserver'; -import { createStructuredContentOutput, getDefaultProjectName } from '../../utils'; +import { LocalDevserver, getDevserverKey } from '../../devserver'; +import { workspaceAndProjectOptions } from '../../shared-options'; +import { createStructuredContentOutput } from '../../utils'; +import { resolveWorkspaceAndProject } from '../../workspace-utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; const devserverStartToolInputSchema = z.object({ - project: z - .string() - .optional() - .describe( - 'Which project to serve in a monorepo context. If not provided, serves the default project.', - ), + ...workspaceAndProjectOptions, }); export type DevserverStartToolInput = z.infer; @@ -39,15 +36,16 @@ function localhostAddress(port: number) { } export async function startDevserver(input: DevserverStartToolInput, context: McpToolContext) { - const projectName = input.project ?? getDefaultProjectName(context); + const { workspacePath, projectName } = await resolveWorkspaceAndProject({ + host: context.host, + workspacePathInput: input.workspace, + projectNameInput: input.project, + mcpWorkspace: context.workspace, + }); - if (!projectName) { - return createStructuredContentOutput({ - message: ['Project name not provided, and no default project found.'], - }); - } + const key = getDevserverKey(workspacePath, projectName); - let devserver = context.devservers.get(projectName); + let devserver = context.devservers.get(key); if (devserver) { return createStructuredContentOutput({ message: `Development server for project '${projectName}' is already running.`, @@ -57,10 +55,15 @@ export async function startDevserver(input: DevserverStartToolInput, context: Mc const port = await context.host.getAvailablePort(); - devserver = new LocalDevserver({ host: context.host, project: input.project, port }); + devserver = new LocalDevserver({ + host: context.host, + project: projectName, + port, + workspacePath, + }); devserver.start(); - context.devservers.set(projectName, devserver); + context.devservers.set(key, devserver); return createStructuredContentOutput({ message: `Development server for project '${projectName}' started and watching for workspace changes.`, diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts index 4342fafbfb20..64991bc5adb3 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-stop.ts @@ -7,16 +7,14 @@ */ import { z } from 'zod'; -import { createStructuredContentOutput, getDefaultProjectName } from '../../utils'; +import { createDevServerNotFoundError, getDevserverKey } from '../../devserver'; +import { workspaceAndProjectOptions } from '../../shared-options'; +import { createStructuredContentOutput } from '../../utils'; +import { resolveWorkspaceAndProject } from '../../workspace-utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; const devserverStopToolInputSchema = z.object({ - project: z - .string() - .optional() - .describe( - 'Which project to stop serving in a monorepo context. If not provided, stops the default project server.', - ), + ...workspaceAndProjectOptions, }); export type DevserverStopToolInput = z.infer; @@ -28,43 +26,26 @@ const devserverStopToolOutputSchema = z.object({ export type DevserverStopToolOutput = z.infer; -export function stopDevserver(input: DevserverStopToolInput, context: McpToolContext) { - if (context.devservers.size === 0) { - return createStructuredContentOutput({ - message: ['No development servers are currently running.'], - logs: undefined, - }); - } - - let projectName = input.project ?? getDefaultProjectName(context); - - if (!projectName) { - // This should not happen. But if there's just a single running devserver, stop it. - if (context.devservers.size === 1) { - projectName = Array.from(context.devservers.keys())[0]; - } else { - return createStructuredContentOutput({ - message: ['Project name not provided, and no default project found.'], - logs: undefined, - }); - } - } - - const devServer = context.devservers.get(projectName); +export async function stopDevserver(input: DevserverStopToolInput, context: McpToolContext) { + const { workspacePath, projectName } = await resolveWorkspaceAndProject({ + host: context.host, + workspacePathInput: input.workspace, + projectNameInput: input.project, + mcpWorkspace: context.workspace, + }); + const key = getDevserverKey(workspacePath, projectName); + const devserver = context.devservers.get(key); - if (!devServer) { - return createStructuredContentOutput({ - message: `Development server for project '${projectName}' was not running.`, - logs: undefined, - }); + if (!devserver) { + throw createDevServerNotFoundError(context.devservers); } - devServer.stop(); - context.devservers.delete(projectName); + devserver.stop(); + context.devservers.delete(key); return createStructuredContentOutput({ message: `Development server for project '${projectName}' stopped.`, - logs: devServer.getServerLogs(), + logs: devserver.getServerLogs(), }); } diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts index 396ca451ba79..899e34240eb7 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver-wait-for-build.ts @@ -7,7 +7,10 @@ */ import { z } from 'zod'; -import { createStructuredContentOutput, getDefaultProjectName } from '../../utils'; +import { Devserver, createDevServerNotFoundError, getDevserverKey } from '../../devserver'; +import { workspaceAndProjectOptions } from '../../shared-options'; +import { createStructuredContentOutput } from '../../utils'; +import { resolveWorkspaceAndProject } from '../../workspace-utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from '../tool-registry'; /** @@ -21,12 +24,7 @@ export const WATCH_DELAY = 1000; const DEFAULT_TIMEOUT = 180_000; // In milliseconds const devserverWaitForBuildToolInputSchema = z.object({ - project: z - .string() - .optional() - .describe( - 'Which project to wait for in a monorepo context. If not provided, waits for the default project server.', - ), + ...workspaceAndProjectOptions, timeout: z .number() .default(DEFAULT_TIMEOUT) @@ -39,7 +37,7 @@ export type DevserverWaitForBuildToolInput = z.infer({ - status: 'no_devserver_found', - logs: undefined, - }); - } + return performWait(devserver, input.timeout); +} - const deadline = Date.now() + input.timeout; +async function performWait(devserver: Devserver, timeout: number) { + const deadline = Date.now() + timeout; await wait(WATCH_DELAY); - while (devServer.isBuilding()) { + while (devserver.isBuilding()) { if (Date.now() > deadline) { return createStructuredContentOutput({ status: 'timeout', @@ -102,7 +87,7 @@ export async function waitForDevserverBuild( } return createStructuredContentOutput({ - ...devServer.getMostRecentBuild(), + ...devserver.getMostRecentBuild(), }); } @@ -123,14 +108,11 @@ recent build. tool or command. When it retuns you'll get build logs back **and** you'll know the user's devserver is up-to-date with the latest changes. -* This tool expects that a dev server was launched on the same project with the "devserver.start" tool, otherwise a "no_devserver_found" - status will be returned. +* This tool expects that a dev server was launched on the same project with the "devserver.start" tool, otherwise the tool will fail. * This tool will block until the build is complete or the timeout is reached. If you expect a long build process, consider increasing the timeout. Timeouts on initial run (right after "devserver.start" calls) or after a big change are not necessarily indicative of an error. * If you encountered a timeout and it might be reasonable, just call this tool again. * If the dev server is not building, it will return quickly, with the logs from the last build. -* A 'no_devserver_found' status can indicate the underlying server was stopped for some reason. Try first to call the "devserver.start" - tool again, before giving up. `, isReadOnly: true, diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts index f3b33af417bf..93c6b367cb70 100644 --- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts @@ -8,10 +8,12 @@ import { EventEmitter } from 'events'; import type { ChildProcess } from 'node:child_process'; -import { AngularWorkspace } from '../../../../utilities/config'; import type { MockHost } from '../../testing/mock-host'; -import { addProjectToWorkspace, createMockContext } from '../../testing/test-utils'; -import type { McpToolContext } from '../tool-registry'; +import { + MockMcpToolContext, + addProjectToWorkspace, + createMockContext, +} from '../../testing/test-utils'; import { startDevserver } from './devserver-start'; import { stopDevserver } from './devserver-stop'; import { WATCH_DELAY, waitForDevserverBuild } from './devserver-wait-for-build'; @@ -24,10 +26,9 @@ class MockChildProcess extends EventEmitter { describe('Serve Tools', () => { let mockHost: MockHost; - let mockContext: McpToolContext; + let mockContext: MockMcpToolContext; let mockProcess: MockChildProcess; let portCounter: number; - let mockWorkspace: AngularWorkspace; beforeEach(() => { portCounter = 12345; @@ -36,7 +37,6 @@ describe('Serve Tools', () => { const mock = createMockContext(); mockHost = mock.host; mockContext = mock.context; - mockWorkspace = mock.workspace; // Customize host spies mockHost.spawn.and.returnValue(mockProcess as unknown as ChildProcess); @@ -44,7 +44,7 @@ describe('Serve Tools', () => { // Setup default project addProjectToWorkspace(mock.projects, 'my-app'); - mockWorkspace.extensions['defaultProject'] = 'my-app'; + mockContext.workspace.extensions['defaultProject'] = 'my-app'; }); it('should start and stop a dev server', async () => { @@ -52,9 +52,12 @@ describe('Serve Tools', () => { expect(startResult.structuredContent.message).toBe( `Development server for project 'my-app' started and watching for workspace changes.`, ); - expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', '--port=12345'], { stdio: 'pipe' }); + expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'my-app', '--port=12345'], { + stdio: 'pipe', + cwd: '/test', + }); - const stopResult = stopDevserver({}, mockContext); + const stopResult = await stopDevserver({}, mockContext); expect(stopResult.structuredContent.message).toBe( `Development server for project 'my-app' stopped.`, ); @@ -84,7 +87,7 @@ describe('Serve Tools', () => { it('should handle multiple dev servers', async () => { // Add extra projects - const projects = mockWorkspace.projects; + const projects = mockContext.workspace.projects; addProjectToWorkspace(projects, 'app-one'); addProjectToWorkspace(projects, 'app-two'); @@ -105,13 +108,15 @@ describe('Serve Tools', () => { expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'app-one', '--port=12345'], { stdio: 'pipe', + cwd: '/test', }); expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'app-two', '--port=12346'], { stdio: 'pipe', + cwd: '/test', }); // Stop server for project 1 - const stopResult1 = stopDevserver({ project: 'app-one' }, mockContext); + const stopResult1 = await stopDevserver({ project: 'app-one' }, mockContext); expect(stopResult1.structuredContent.message).toBe( `Development server for project 'app-one' stopped.`, ); @@ -119,7 +124,7 @@ describe('Serve Tools', () => { expect(process2.kill).not.toHaveBeenCalled(); // Stop server for project 2 - const stopResult2 = stopDevserver({ project: 'app-two' }, mockContext); + const stopResult2 = await stopDevserver({ project: 'app-two' }, mockContext); expect(stopResult2.structuredContent.message).toBe( `Development server for project 'app-two' stopped.`, ); @@ -127,20 +132,20 @@ describe('Serve Tools', () => { }); it('should handle server crash', async () => { - addProjectToWorkspace(mockWorkspace.projects, 'crash-app'); + addProjectToWorkspace(mockContext.workspace.projects, 'crash-app'); await startDevserver({ project: 'crash-app' }, mockContext); // Simulate a crash with exit code 1 mockProcess.stdout.emit('data', 'Fatal error.'); mockProcess.emit('close', 1); - const stopResult = stopDevserver({ project: 'crash-app' }, mockContext); + const stopResult = await stopDevserver({ project: 'crash-app' }, mockContext); expect(stopResult.structuredContent.message).toContain('stopped'); expect(stopResult.structuredContent.logs).toEqual(['Fatal error.']); }); it('wait should timeout if build takes too long', async () => { - addProjectToWorkspace(mockWorkspace.projects, 'timeout-app'); + addProjectToWorkspace(mockContext.workspace.projects, 'timeout-app'); await startDevserver({ project: 'timeout-app' }, mockContext); const waitResult = await waitForDevserverBuild( { project: 'timeout-app', timeout: 10 }, @@ -159,6 +164,9 @@ describe('Serve Tools', () => { const waitPromise = waitForDevserverBuild({ timeout: 5 * WATCH_DELAY }, mockContext); + // Allow the async resolveWorkspaceAndProject to complete. + await Promise.resolve(); + // Tick past the first debounce. The while loop will be entered. jasmine.clock().tick(WATCH_DELAY + 1); @@ -182,4 +190,20 @@ describe('Serve Tools', () => { jasmine.clock().uninstall(); } }); + + it('should fail with list of running servers when server not found', async () => { + addProjectToWorkspace(mockContext.workspace.projects, 'app-one'); + addProjectToWorkspace(mockContext.workspace.projects, 'app-two'); + // Start app-one + await startDevserver({ project: 'app-one' }, mockContext); + + // Try to stop app-two (which is not running) + try { + await stopDevserver({ project: 'app-two' }, mockContext); + fail('Should have thrown'); + } catch (e) { + expect((e as Error).message).toContain('Dev server not found. Currently running servers:'); + expect((e as Error).message).toContain("- Project 'app-one' in workspace path '/test'"); + } + }); }); diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e.ts b/packages/angular/cli/src/commands/mcp/tools/e2e.ts index 86b1ee76f2e3..93ae2b55b5a6 100644 --- a/packages/angular/cli/src/commands/mcp/tools/e2e.ts +++ b/packages/angular/cli/src/commands/mcp/tools/e2e.ts @@ -7,25 +7,17 @@ */ import { z } from 'zod'; -import { CommandError, type Host, LocalWorkspaceHost } from '../host'; -import { - createStructuredContentOutput, - getCommandErrorLogs, - getDefaultProjectName, - getProject, -} from '../utils'; +import { type Host } from '../host'; +import { workspaceAndProjectOptions } from '../shared-options'; +import { createStructuredContentOutput, getCommandErrorLogs } from '../utils'; +import { resolveWorkspaceAndProject } from '../workspace-utils'; import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry'; const e2eStatusSchema = z.enum(['success', 'failure']); type E2eStatus = z.infer; const e2eToolInputSchema = z.object({ - project: z - .string() - .optional() - .describe( - 'Which project to test in a monorepo context. If not provided, tests the default project.', - ), + ...workspaceAndProjectOptions, }); export type E2eToolInput = z.infer; @@ -38,11 +30,16 @@ const e2eToolOutputSchema = z.object({ export type E2eToolOutput = z.infer; export async function runE2e(input: E2eToolInput, host: Host, context: McpToolContext) { - const projectName = input.project ?? getDefaultProjectName(context); + const { workspacePath, workspace, projectName } = await resolveWorkspaceAndProject({ + host, + workspacePathInput: input.workspace, + projectNameInput: input.project, + mcpWorkspace: context.workspace, + }); - if (context.workspace && projectName) { + if (workspace && projectName) { // Verify that if a project can be found, it has an e2e testing already set up. - const targetProject = getProject(context, projectName); + const targetProject = workspace.projects.get(projectName); if (targetProject) { if (!targetProject.targets.has('e2e')) { return createStructuredContentOutput({ @@ -58,16 +55,13 @@ export async function runE2e(input: E2eToolInput, host: Host, context: McpToolCo } // Build "ng"'s command line. - const args = ['e2e']; - if (input.project) { - args.push(input.project); - } + const args = ['e2e', projectName]; let status: E2eStatus = 'success'; let logs: string[] = []; try { - logs = (await host.runCommand('ng', args)).logs; + logs = (await host.runCommand('ng', args, { cwd: workspacePath })).logs; } catch (e) { status = 'failure'; logs = getCommandErrorLogs(e); @@ -104,5 +98,5 @@ Perform an end-to-end test with ng e2e. isLocalOnly: true, inputSchema: e2eToolInputSchema.shape, outputSchema: e2eToolOutputSchema.shape, - factory: (context) => (input) => runE2e(input, LocalWorkspaceHost, context), + factory: (context) => (input) => runE2e(input, context.host, context), }); diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts index 852381fc6ee9..d2d3949a6451 100644 --- a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts @@ -7,37 +7,40 @@ */ import { workspaces } from '@angular-devkit/core'; -import { AngularWorkspace } from '../../../utilities/config'; import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; -import { addProjectToWorkspace, createMockContext } from '../testing/test-utils'; +import { + MockMcpToolContext, + addProjectToWorkspace, + createMockContext, +} from '../testing/test-utils'; import { runE2e } from './e2e'; -import type { McpToolContext } from './tool-registry'; describe('E2E Tool', () => { let mockHost: MockHost; - let mockContext: McpToolContext; + let mockContext: MockMcpToolContext; let mockProjects: workspaces.ProjectDefinitionCollection; - let mockWorkspace: AngularWorkspace; beforeEach(() => { const mock = createMockContext(); mockHost = mock.host; mockContext = mock.context; mockProjects = mock.projects; - mockWorkspace = mock.workspace; }); it('should construct the command correctly with defaults', async () => { + addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } }); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; + await runE2e({}, mockHost, mockContext); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app'], { cwd: '/test' }); }); it('should construct the command correctly with a specified project', async () => { addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } }); await runE2e({ project: 'my-app' }, mockHost, mockContext); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app']); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app'], { cwd: '/test' }); }); it('should error if project does not have e2e target', async () => { @@ -51,7 +54,7 @@ describe('E2E Tool', () => { }); it('should error if no project was specified and the default project does not have e2e target', async () => { - mockWorkspace.extensions['defaultProject'] = 'my-app'; + mockContext.workspace.extensions['defaultProject'] = 'my-app'; addProjectToWorkspace(mockProjects, 'my-app', { build: { builder: 'mock-builder' } }); const { structuredContent } = await runE2e({}, mockHost, mockContext); @@ -61,13 +64,6 @@ describe('E2E Tool', () => { expect(mockHost.runCommand).not.toHaveBeenCalled(); }); - it('should proceed if no workspace context is available (fallback)', async () => { - // If context.workspace is undefined, it should try to run ng e2e. - const noWorkspaceContext = {} as McpToolContext; - await runE2e({}, mockHost, noWorkspaceContext); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); - }); - it('should handle a successful e2e run with a specified project', async () => { addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } }); const e2eLogs = ['E2E passed for my-app']; @@ -77,11 +73,11 @@ describe('E2E Tool', () => { expect(structuredContent.status).toBe('success'); expect(structuredContent.logs).toEqual(e2eLogs); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app']); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app'], { cwd: '/test' }); }); it('should handle a successful e2e run with the default project', async () => { - mockWorkspace.extensions['defaultProject'] = 'default-app'; + mockContext.workspace.extensions['defaultProject'] = 'default-app'; addProjectToWorkspace(mockProjects, 'default-app', { e2e: { builder: 'mock-builder' } }); const e2eLogs = ['E2E passed for default-app']; mockHost.runCommand.and.resolveTo({ logs: e2eLogs }); @@ -90,7 +86,9 @@ describe('E2E Tool', () => { expect(structuredContent.status).toBe('success'); expect(structuredContent.logs).toEqual(e2eLogs); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e']); + expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'default-app'], { + cwd: '/test', + }); }); it('should handle a failed e2e run', async () => { diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize.ts b/packages/angular/cli/src/commands/mcp/tools/modernize.ts index 5e638db84840..871622d76390 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize.ts @@ -6,11 +6,11 @@ * found in the LICENSE file at https://angular.dev/license */ -import { dirname, join, relative } from 'path'; import { z } from 'zod'; -import { CommandError, type Host } from '../host'; -import { createStructuredContentOutput, findAngularJsonDir, getCommandErrorLogs } from '../utils'; -import { type McpToolDeclaration, declareTool } from './tool-registry'; +import { workspaceAndProjectOptions } from '../shared-options'; +import { createStructuredContentOutput, getCommandErrorLogs } from '../utils'; +import { resolveWorkspaceAndProject } from '../workspace-utils'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry'; interface Transformation { name: string; @@ -70,14 +70,15 @@ const TRANSFORMATIONS: Array = [ ]; const modernizeInputSchema = z.object({ - directories: z - .array(z.string()) - .optional() - .describe('A list of paths to directories with files to modernize.'), + ...workspaceAndProjectOptions, transformations: z .array(z.enum(TRANSFORMATIONS.map((t) => t.name) as [string, ...string[]])) .optional() .describe('A list of specific transformations to apply.'), + path: z + .string() + .optional() + .describe('The path to the file or directory to modernize, relative to the workspace root.'), }); const modernizeOutputSchema = z.object({ @@ -93,9 +94,8 @@ const modernizeOutputSchema = z.object({ export type ModernizeInput = z.infer; export type ModernizeOutput = z.infer; -export async function runModernization(input: ModernizeInput, host: Host) { +export async function runModernization(input: ModernizeInput, context: McpToolContext) { const transformationNames = input.transformations ?? []; - const directories = input.directories ?? []; if (transformationNames.length === 0) { return createStructuredContentOutput({ @@ -105,24 +105,13 @@ export async function runModernization(input: ModernizeInput, host: Host) { ], }); } - if (directories.length === 0) { - return createStructuredContentOutput({ - instructions: [ - 'Provide this tool with a list of directory paths in your workspace ' + - 'to run the modernization on.', - ], - }); - } - const firstDir = directories[0]; - const executionDir = (await host.stat(firstDir)).isDirectory() ? firstDir : dirname(firstDir); - - const angularProjectRoot = findAngularJsonDir(executionDir, host); - if (!angularProjectRoot) { - return createStructuredContentOutput({ - instructions: ['Could not find an angular.json file in the current or parent directories.'], - }); - } + const { workspacePath, projectName } = await resolveWorkspaceAndProject({ + host: context.host, + workspacePathInput: input.workspace, + projectNameInput: input.project, + mcpWorkspace: context.workspace, + }); const instructions: string[] = []; let logs: string[] = []; @@ -138,25 +127,22 @@ export async function runModernization(input: ModernizeInput, host: Host) { instructions.push(transformationInstructions); } else { // Simple case, run the command. - for (const dir of directories) { - const relativePath = relative(angularProjectRoot, dir) || '.'; - const command = 'ng'; - const args = ['generate', `@angular/core:${transformation.name}`, '--path', relativePath]; - try { - logs = ( - await host.runCommand(command, args, { - cwd: angularProjectRoot, - }) - ).logs; - instructions.push( - `Migration ${transformation.name} on directory ${relativePath} completed successfully.`, - ); - } catch (e) { - logs = getCommandErrorLogs(e); - instructions.push( - `Migration ${transformation.name} on directory ${relativePath} failed.`, - ); - } + const command = 'ng'; + const args = ['generate', `@angular/core:${transformation.name}`, '--project', projectName]; + if (input.path) { + args.push('--path', input.path); + } + + try { + logs = ( + await context.host.runCommand(command, args, { + cwd: workspacePath, + }) + ).logs; + instructions.push(`Migration ${transformation.name} completed successfully.`); + } catch (e) { + logs = getCommandErrorLogs(e); + instructions.push(`Migration ${transformation.name} failed.`); } } } @@ -202,5 +188,5 @@ ${TRANSFORMATIONS.map((t) => ` * ${t.name}: ${t.description}`).join('\n')} outputSchema: modernizeOutputSchema.shape, isLocalOnly: true, isReadOnly: false, - factory: (context) => (input) => runModernization(input, context.host), + factory: (context) => (input) => runModernization(input, context), }); diff --git a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts index 3f9d3ee04bc1..fe3dc93be9d1 100644 --- a/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/modernize_spec.ts @@ -6,38 +6,30 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Stats } from 'fs'; -import { mkdir, mkdtemp, rm, writeFile } from 'fs/promises'; -import { tmpdir } from 'os'; -import { join } from 'path'; import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; +import { + MockMcpToolContext, + addProjectToWorkspace, + createMockContext, +} from '../testing/test-utils'; import { type ModernizeOutput, runModernization } from './modernize'; describe('Modernize Tool', () => { - let projectDir: string; let mockHost: MockHost; + let mockContext: MockMcpToolContext; - beforeEach(async () => { - // Create a temporary directory and a fake angular.json to satisfy the tool's project root search. - projectDir = await mkdtemp(join(tmpdir(), 'angular-modernize-test-')); - await writeFile(join(projectDir, 'angular.json'), JSON.stringify({ version: 1, projects: {} })); + beforeEach(() => { + const mock = createMockContext(); + mockHost = mock.host; + mockContext = mock.context; - mockHost = { - runCommand: jasmine.createSpy('runCommand').and.resolveTo({ stdout: '', stderr: '' }), - stat: jasmine.createSpy('stat').and.resolveTo({ isDirectory: () => true } as Stats), - existsSync: jasmine.createSpy('existsSync').and.callFake((p: string) => { - return p === join(projectDir, 'angular.json'); - }), - } as MockHost; - }); - - afterEach(async () => { - await rm(projectDir, { recursive: true, force: true }); + addProjectToWorkspace(mock.projects, 'my-app'); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; }); it('should return instructions if no transformations are provided', async () => { - const { structuredContent } = (await runModernization({}, mockHost)) as { + const { structuredContent } = (await runModernization({}, mockContext)) as { structuredContent: ModernizeOutput; }; @@ -48,136 +40,73 @@ describe('Modernize Tool', () => { ]); }); - it('should return instructions if no directories are provided', async () => { + it('can run a single transformation', async () => { const { structuredContent } = (await runModernization( { - transformations: ['control-flow'], + transformations: ['self-closing-tag'], }, - mockHost, - )) as { - structuredContent: ModernizeOutput; - }; + mockContext, + )) as { structuredContent: ModernizeOutput }; - expect(mockHost.runCommand).not.toHaveBeenCalled(); + expect(mockHost.runCommand).toHaveBeenCalledOnceWith( + 'ng', + ['generate', '@angular/core:self-closing-tag', '--project', 'my-app'], + { cwd: '/test' }, + ); expect(structuredContent?.instructions).toEqual([ - 'Provide this tool with a list of directory paths in your workspace ' + - 'to run the modernization on.', + 'Migration self-closing-tag completed successfully.', ]); }); - it('can run a single transformation', async () => { + it('can run a single transformation with path', async () => { const { structuredContent } = (await runModernization( { - directories: [projectDir], transformations: ['self-closing-tag'], + path: '.', }, - mockHost, + mockContext, )) as { structuredContent: ModernizeOutput }; expect(mockHost.runCommand).toHaveBeenCalledOnceWith( 'ng', - ['generate', '@angular/core:self-closing-tag', '--path', '.'], - { cwd: projectDir }, + ['generate', '@angular/core:self-closing-tag', '--project', 'my-app', '--path', '.'], + { cwd: '/test' }, ); expect(structuredContent?.instructions).toEqual([ - 'Migration self-closing-tag on directory . completed successfully.', + 'Migration self-closing-tag completed successfully.', ]); }); it('can run multiple transformations', async () => { const { structuredContent } = (await runModernization( { - directories: [projectDir], transformations: ['control-flow', 'self-closing-tag'], }, - mockHost, + mockContext, )) as { structuredContent: ModernizeOutput }; expect(mockHost.runCommand).toHaveBeenCalledTimes(2); expect(mockHost.runCommand).toHaveBeenCalledWith( 'ng', - ['generate', '@angular/core:control-flow', '--path', '.'], + ['generate', '@angular/core:control-flow', '--project', 'my-app'], { - cwd: projectDir, + cwd: '/test', }, ); expect(mockHost.runCommand).toHaveBeenCalledWith( 'ng', - ['generate', '@angular/core:self-closing-tag', '--path', '.'], - { cwd: projectDir }, + ['generate', '@angular/core:self-closing-tag', '--project', 'my-app'], + { cwd: '/test' }, ); - expect(structuredContent?.logs).toBeUndefined(); + expect(structuredContent?.logs).toEqual([]); expect(structuredContent?.instructions).toEqual( jasmine.arrayWithExactContents([ - 'Migration control-flow on directory . completed successfully.', - 'Migration self-closing-tag on directory . completed successfully.', + 'Migration control-flow completed successfully.', + 'Migration self-closing-tag completed successfully.', ]), ); }); - it('can run multiple transformations across multiple directories', async () => { - const subfolder1 = join(projectDir, 'subfolder1'); - const subfolder2 = join(projectDir, 'subfolder2'); - await mkdir(subfolder1); - await mkdir(subfolder2); - - const { structuredContent } = (await runModernization( - { - directories: [subfolder1, subfolder2], - transformations: ['control-flow', 'self-closing-tag'], - }, - mockHost, - )) as { structuredContent: ModernizeOutput }; - - expect(mockHost.runCommand).toHaveBeenCalledTimes(4); - expect(mockHost.runCommand).toHaveBeenCalledWith( - 'ng', - ['generate', '@angular/core:control-flow', '--path', 'subfolder1'], - { cwd: projectDir }, - ); - expect(mockHost.runCommand).toHaveBeenCalledWith( - 'ng', - ['generate', '@angular/core:self-closing-tag', '--path', 'subfolder1'], - { cwd: projectDir }, - ); - expect(mockHost.runCommand).toHaveBeenCalledWith( - 'ng', - ['generate', '@angular/core:control-flow', '--path', 'subfolder2'], - { cwd: projectDir }, - ); - expect(mockHost.runCommand).toHaveBeenCalledWith( - 'ng', - ['generate', '@angular/core:self-closing-tag', '--path', 'subfolder2'], - { cwd: projectDir }, - ); - expect(structuredContent?.logs).toBeUndefined(); - expect(structuredContent?.instructions).toEqual( - jasmine.arrayWithExactContents([ - 'Migration control-flow on directory subfolder1 completed successfully.', - 'Migration self-closing-tag on directory subfolder1 completed successfully.', - 'Migration control-flow on directory subfolder2 completed successfully.', - 'Migration self-closing-tag on directory subfolder2 completed successfully.', - ]), - ); - }); - - it('should return an error if angular.json is not found', async () => { - mockHost.existsSync.and.returnValue(false); - - const { structuredContent } = (await runModernization( - { - directories: [projectDir], - transformations: ['self-closing-tag'], - }, - mockHost, - )) as { structuredContent: ModernizeOutput }; - - expect(mockHost.runCommand).not.toHaveBeenCalled(); - expect(structuredContent?.instructions).toEqual([ - 'Could not find an angular.json file in the current or parent directories.', - ]); - }); - it('should report errors from transformations', async () => { // Simulate a failed execution mockHost.runCommand.and.rejectWith( @@ -186,20 +115,17 @@ describe('Modernize Tool', () => { const { structuredContent } = (await runModernization( { - directories: [projectDir], transformations: ['self-closing-tag'], }, - mockHost, + mockContext, )) as { structuredContent: ModernizeOutput }; expect(mockHost.runCommand).toHaveBeenCalledOnceWith( 'ng', - ['generate', '@angular/core:self-closing-tag', '--path', '.'], - { cwd: projectDir }, + ['generate', '@angular/core:self-closing-tag', '--project', 'my-app'], + { cwd: '/test' }, ); expect(structuredContent?.logs).toEqual(['some logs', 'Command failed with error']); - expect(structuredContent?.instructions).toEqual([ - 'Migration self-closing-tag on directory . failed.', - ]); + expect(structuredContent?.instructions).toEqual(['Migration self-closing-tag failed.']); }); }); diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts index bae1762282a1..e0c62eb23dc9 100644 --- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts +++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts @@ -10,7 +10,7 @@ import { existsSync, readFileSync } from 'node:fs'; import { glob } from 'node:fs/promises'; import { dirname, join } from 'node:path'; import type { SourceFile } from 'typescript'; -import { findAngularJsonDir } from '../../utils'; +import { findAngularJsonDir } from '../../workspace-utils'; import { createFixResponseForZoneTests, createProvideZonelessForTestsSetupPrompt } from './prompts'; import { loadTypescript } from './ts-utils'; import { MigrationResponse } from './types'; diff --git a/packages/angular/cli/src/commands/mcp/tools/test.ts b/packages/angular/cli/src/commands/mcp/tools/test.ts index 829296d815ad..f3a1440b01ce 100644 --- a/packages/angular/cli/src/commands/mcp/tools/test.ts +++ b/packages/angular/cli/src/commands/mcp/tools/test.ts @@ -7,18 +7,16 @@ */ import { z } from 'zod'; -import { CommandError, type Host, LocalWorkspaceHost } from '../host'; +import { workspaceAndProjectOptions } from '../shared-options'; import { createStructuredContentOutput, getCommandErrorLogs } from '../utils'; -import { type McpToolDeclaration, declareTool } from './tool-registry'; +import { resolveWorkspaceAndProject } from '../workspace-utils'; +import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry'; const testStatusSchema = z.enum(['success', 'failure']); type TestStatus = z.infer; const testToolInputSchema = z.object({ - project: z - .string() - .optional() - .describe('Which project to test in a monorepo context. If not provided, tests all projects.'), + ...workspaceAndProjectOptions, filter: z.string().optional().describe('Filter the executed tests by spec name.'), }); @@ -31,12 +29,16 @@ const testToolOutputSchema = z.object({ export type TestToolOutput = z.infer; -export async function runTest(input: TestToolInput, host: Host) { +export async function runTest(input: TestToolInput, context: McpToolContext) { + const { workspacePath, projectName } = await resolveWorkspaceAndProject({ + host: context.host, + workspacePathInput: input.workspace, + projectNameInput: input.project, + mcpWorkspace: context.workspace, + }); + // Build "ng"'s command line. - const args = ['test']; - if (input.project) { - args.push(input.project); - } + const args = ['test', projectName]; // This is ran by the agent so we want a non-watched, headless test. args.push('--browsers', 'ChromeHeadless'); @@ -50,7 +52,7 @@ export async function runTest(input: TestToolInput, host: Host) { let logs: string[] = []; try { - logs = (await host.runCommand('ng', args)).logs; + logs = (await context.host.runCommand('ng', args, { cwd: workspacePath })).logs; } catch (e) { status = 'failure'; logs = getCommandErrorLogs(e); @@ -88,5 +90,5 @@ Perform a one-off, non-watched unit test execution with ng test. isLocalOnly: true, inputSchema: testToolInputSchema.shape, outputSchema: testToolOutputSchema.shape, - factory: () => (input) => runTest(input, LocalWorkspaceHost), + factory: (context) => (input) => runTest(input, context), }); diff --git a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts index 1049e705697d..722432bfed6c 100644 --- a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts +++ b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts @@ -8,50 +8,61 @@ import { CommandError } from '../host'; import type { MockHost } from '../testing/mock-host'; -import { createMockHost } from '../testing/test-utils'; +import { + MockMcpToolContext, + addProjectToWorkspace, + createMockContext, +} from '../testing/test-utils'; import { runTest } from './test'; describe('Test Tool', () => { let mockHost: MockHost; + let mockContext: MockMcpToolContext; beforeEach(() => { - mockHost = createMockHost(); + const mock = createMockContext(); + mockHost = mock.host; + mockContext = mock.context; + addProjectToWorkspace(mock.projects, 'my-app'); }); it('should construct the command correctly with defaults', async () => { - await runTest({}, mockHost); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'test', - '--browsers', - 'ChromeHeadless', - '--watch', - 'false', - ]); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; + await runTest({}, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['test', 'my-app', '--browsers', 'ChromeHeadless', '--watch', 'false'], + { cwd: '/test' }, + ); }); it('should construct the command correctly with a specified project', async () => { - await runTest({ project: 'my-lib' }, mockHost); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'test', - 'my-lib', - '--browsers', - 'ChromeHeadless', - '--watch', - 'false', - ]); + addProjectToWorkspace(mockContext.workspace.projects, 'my-lib'); + await runTest({ project: 'my-lib' }, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['test', 'my-lib', '--browsers', 'ChromeHeadless', '--watch', 'false'], + { cwd: '/test' }, + ); }); it('should construct the command correctly with filter', async () => { - await runTest({ filter: 'AppComponent' }, mockHost); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'test', - '--browsers', - 'ChromeHeadless', - '--watch', - 'false', - '--filter', - 'AppComponent', - ]); + mockContext.workspace.extensions['defaultProject'] = 'my-app'; + await runTest({ filter: 'AppComponent' }, mockContext); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + [ + 'test', + 'my-app', + '--browsers', + 'ChromeHeadless', + '--watch', + 'false', + '--filter', + 'AppComponent', + ], + { cwd: '/test' }, + ); }); it('should handle a successful test run and capture logs', async () => { @@ -60,26 +71,24 @@ describe('Test Tool', () => { logs: testLogs, }); - const { structuredContent } = await runTest({ project: 'my-app' }, mockHost); + const { structuredContent } = await runTest({ project: 'my-app' }, mockContext); - expect(mockHost.runCommand).toHaveBeenCalledWith('ng', [ - 'test', - 'my-app', - '--browsers', - 'ChromeHeadless', - '--watch', - 'false', - ]); + expect(mockHost.runCommand).toHaveBeenCalledWith( + 'ng', + ['test', 'my-app', '--browsers', 'ChromeHeadless', '--watch', 'false'], + { cwd: '/test' }, + ); expect(structuredContent.status).toBe('success'); expect(structuredContent.logs).toEqual(testLogs); }); it('should handle a failed test run and capture logs', async () => { + addProjectToWorkspace(mockContext.workspace.projects, 'my-failed-app'); const testLogs = ['Executed 10 of 10 FAILED', 'Error: Some test failed']; const error = new CommandError('Test failed', testLogs, 1); mockHost.runCommand.and.rejectWith(error); - const { structuredContent } = await runTest({ project: 'my-failed-app' }, mockHost); + const { structuredContent } = await runTest({ project: 'my-failed-app' }, mockContext); expect(structuredContent.status).toBe('failure'); expect(structuredContent.logs).toEqual([...testLogs, 'Test failed']); diff --git a/packages/angular/cli/src/commands/mcp/utils.ts b/packages/angular/cli/src/commands/mcp/utils.ts index 7a505513341d..5c9c645dc462 100644 --- a/packages/angular/cli/src/commands/mcp/utils.ts +++ b/packages/angular/cli/src/commands/mcp/utils.ts @@ -11,10 +11,7 @@ * Utility functions shared across MCP tools. */ -import { workspaces } from '@angular-devkit/core'; -import { dirname, join } from 'node:path'; -import { CommandError, LocalWorkspaceHost } from './host'; -import { McpToolContext } from './tools/tool-registry'; +import { CommandError } from './host'; /** * Returns simple structured content output from an MCP tool. @@ -28,74 +25,6 @@ export function createStructuredContentOutput(structuredContent: Out }; } -/** - * Searches for an angular.json file by traversing up the directory tree from a starting directory. - * - * @param startDir The directory path to start searching from - * @param host The workspace host instance used to check file existence. Defaults to LocalWorkspaceHost - * @returns The absolute path to the directory containing angular.json, or null if not found - * - * @remarks - * This function performs an upward directory traversal starting from `startDir`. - * It checks each directory for the presence of an angular.json file until either: - * - The file is found (returns the directory path) - * - The root of the filesystem is reached (returns null) - */ -export function findAngularJsonDir(startDir: string, host = LocalWorkspaceHost): string | null { - let currentDir = startDir; - while (true) { - if (host.existsSync(join(currentDir, 'angular.json'))) { - return currentDir; - } - const parentDir = dirname(currentDir); - if (parentDir === currentDir) { - return null; - } - currentDir = parentDir; - } -} - -/** - * Searches for a project in the current workspace, by name. - */ -export function getProject( - context: McpToolContext, - name: string, -): workspaces.ProjectDefinition | undefined { - const projects = context.workspace?.projects; - if (!projects) { - return undefined; - } - - return projects.get(name); -} - -/** - * Returns the name of the default project in the current workspace, or undefined if none exists. - * - * If no default project is defined but there's only a single project in the workspace, its name will - * be returned. - */ -export function getDefaultProjectName(context: McpToolContext): string | undefined { - const projects = context.workspace?.projects; - - if (!projects) { - return undefined; - } - - const defaultProjectName = context.workspace?.extensions['defaultProject'] as string | undefined; - if (defaultProjectName) { - return defaultProjectName; - } - - // No default project defined? This might still be salvageable if only a single project exists. - if (projects.size === 1) { - return Array.from(projects.keys())[0]; - } - - return undefined; -} - /** * Get the logs of a failing command. * diff --git a/packages/angular/cli/src/commands/mcp/utils_spec.ts b/packages/angular/cli/src/commands/mcp/utils_spec.ts index 26dd0798e095..c67e4318ebe0 100644 --- a/packages/angular/cli/src/commands/mcp/utils_spec.ts +++ b/packages/angular/cli/src/commands/mcp/utils_spec.ts @@ -6,16 +6,8 @@ * found in the LICENSE file at https://angular.dev/license */ -import { join } from 'node:path'; -import { CommandError, LocalWorkspaceHost } from './host'; -import { addProjectToWorkspace, createMockContext } from './testing/test-utils'; -import { - createStructuredContentOutput, - findAngularJsonDir, - getCommandErrorLogs, - getDefaultProjectName, - getProject, -} from './utils'; +import { CommandError } from './host'; +import { createStructuredContentOutput, getCommandErrorLogs } from './utils'; describe('MCP Utils', () => { describe('createStructuredContentOutput', () => { @@ -28,85 +20,6 @@ describe('MCP Utils', () => { }); }); - describe('findAngularJsonDir', () => { - let mockHost: typeof LocalWorkspaceHost; - - beforeEach(() => { - mockHost = { - existsSync: jasmine.createSpy('existsSync'), - } as unknown as typeof LocalWorkspaceHost; - }); - - it('should return dir if angular.json exists in it', () => { - (mockHost.existsSync as jasmine.Spy).and.callFake( - (path: string) => path === join('/app', 'angular.json'), - ); - expect(findAngularJsonDir('/app', mockHost)).toBe('/app'); - }); - - it('should traverse up directory tree', () => { - (mockHost.existsSync as jasmine.Spy).and.callFake( - (path: string) => path === join('/app', 'angular.json'), - ); - expect(findAngularJsonDir('/app/src/app', mockHost)).toBe('/app'); - }); - - it('should return null if not found', () => { - (mockHost.existsSync as jasmine.Spy).and.returnValue(false); - expect(findAngularJsonDir('/app', mockHost)).toBeNull(); - }); - }); - - describe('getProject', () => { - it('should return undefined if workspace has no projects', () => { - const { context } = createMockContext(); - const emptyContext = { ...context }; - expect(getProject(emptyContext, 'app')).toBeUndefined(); - }); - - it('should return undefined if project not found', () => { - const { context, projects } = createMockContext(); - addProjectToWorkspace(projects, 'existing-app', {}, 'root'); - expect(getProject(context, 'non-existent')).toBeUndefined(); - }); - - it('should return project definition if found', () => { - const { context, projects } = createMockContext(); - addProjectToWorkspace(projects, 'app', {}, 'root'); - - const project = getProject(context, 'app'); - expect(project).toBeDefined(); - expect(project?.root).toBe('root'); - }); - }); - - describe('getDefaultProjectName', () => { - it('should return undefined if workspace is missing', () => { - const { context } = createMockContext(); - const emptyContext = { ...context, workspace: undefined }; - expect(getDefaultProjectName(emptyContext)).toBeUndefined(); - }); - - it('should return defaultProject from extensions', () => { - const { context, workspace } = createMockContext(); - workspace.extensions['defaultProject'] = 'my-app'; - expect(getDefaultProjectName(context)).toBe('my-app'); - }); - - it('should return single project name if only one exists and no defaultProject', () => { - const { context, projects } = createMockContext(); - addProjectToWorkspace(projects, 'only-app', {}, ''); - expect(getDefaultProjectName(context)).toBe('only-app'); - }); - - it('should return undefined if multiple projects exist and no defaultProject', () => { - const { context, projects } = createMockContext(); - addProjectToWorkspace(projects, 'app1', {}, ''); - addProjectToWorkspace(projects, 'app2', {}, ''); - expect(getDefaultProjectName(context)).toBeUndefined(); - }); - }); - describe('getCommandErrorLogs', () => { it('should extract logs from CommandError', () => { const logs = ['log1', 'log2']; diff --git a/packages/angular/cli/src/commands/mcp/workspace-utils.ts b/packages/angular/cli/src/commands/mcp/workspace-utils.ts new file mode 100644 index 000000000000..87a4cdc6c1bc --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/workspace-utils.ts @@ -0,0 +1,178 @@ +/** + * @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 { workspaces } from '@angular-devkit/core'; +import { dirname, join } from 'node:path'; +import { AngularWorkspace } from '../../utilities/config'; +import { type Host, LocalWorkspaceHost } from './host'; +import { McpToolContext } from './tools/tool-registry'; + +/** + * Searches for an angular.json file by traversing up the directory tree from a starting directory. + * + * @param startDir The directory path to start searching from + * @param host The workspace host instance used to check file existence. Defaults to LocalWorkspaceHost + * @returns The absolute path to the directory containing angular.json, or null if not found + * + * @remarks + * This function performs an upward directory traversal starting from `startDir`. + * It checks each directory for the presence of an angular.json file until either: + * - The file is found (returns the directory path) + * - The root of the filesystem is reached (returns null) + */ +export function findAngularJsonDir(startDir: string, host = LocalWorkspaceHost): string | null { + let currentDir = startDir; + while (true) { + if (host.existsSync(join(currentDir, 'angular.json'))) { + return currentDir; + } + const parentDir = dirname(currentDir); + if (parentDir === currentDir) { + return null; + } + currentDir = parentDir; + } +} + +/** + * Searches for a project in the current workspace, by name. + */ +export function getProject( + context: McpToolContext, + name: string, +): workspaces.ProjectDefinition | undefined { + const projects = context.workspace?.projects; + if (!projects) { + return undefined; + } + + return projects.get(name); +} + +/** + * Returns the name of the default project in the current workspace, or undefined if none exists. + * + * If no default project is defined but there's only a single project in the workspace, its name will + * be returned. + */ +export function getDefaultProjectName(workspace: AngularWorkspace | undefined): string | undefined { + const projects = workspace?.projects; + + if (!projects) { + return undefined; + } + + const defaultProjectName = workspace?.extensions['defaultProject'] as string | undefined; + if (defaultProjectName) { + return defaultProjectName; + } + + // No default project defined? This might still be salvageable if only a single project exists. + if (projects.size === 1) { + return Array.from(projects.keys())[0]; + } + + return undefined; +} + +/** + * Resolves workspace and project for tools to operate on. + * + * If `workspacePathInput` is absent, uses the MCP's configured workspace. If none is configured, use the + * current directory as the workspace. + * If `projectNameInput` is absent, uses the default project in the workspace. + */ +export async function resolveWorkspaceAndProject({ + host, + workspacePathInput, + projectNameInput, + mcpWorkspace, +}: { + host: Host; + workspacePathInput?: string; + projectNameInput?: string; + mcpWorkspace?: AngularWorkspace; +}): Promise<{ + workspace: AngularWorkspace; + workspacePath: string; + projectName: string; +}> { + let workspacePath: string; + let workspace: AngularWorkspace; + + if (workspacePathInput) { + if (!host.existsSync(workspacePathInput)) { + throw new Error( + `Workspace path does not exist: ${workspacePathInput}. ` + + "You can use 'list_projects' to find available workspaces.", + ); + } + if (!host.existsSync(join(workspacePathInput, 'angular.json'))) { + throw new Error( + `No angular.json found at ${workspacePathInput}. ` + + "You can use 'list_projects' to find available workspaces.", + ); + } + workspacePath = workspacePathInput; + const configPath = join(workspacePath, 'angular.json'); + try { + workspace = await AngularWorkspace.load(configPath); + } catch (e) { + throw new Error( + `Failed to load workspace configuration at ${configPath}: ${ + e instanceof Error ? e.message : e + }`, + ); + } + } else if (mcpWorkspace) { + workspace = mcpWorkspace; + workspacePath = workspace.basePath; + } else { + const found = findAngularJsonDir(process.cwd(), host); + + if (!found) { + throw new Error( + 'Could not find an Angular workspace (angular.json) in the current directory. ' + + "You can use 'list_projects' to find available workspaces.", + ); + } + workspacePath = found; + const configPath = join(workspacePath, 'angular.json'); + try { + workspace = await AngularWorkspace.load(configPath); + } catch (e) { + throw new Error( + `Failed to load workspace configuration at ${configPath}: ${ + e instanceof Error ? e.message : e + }`, + ); + } + } + + let projectName = projectNameInput; + if (projectName) { + if (!workspace.projects.has(projectName)) { + throw new Error( + `Project '${projectName}' not found in workspace path ${workspacePath}. ` + + "You can use 'list_projects' to find available projects.", + ); + } + } else { + projectName = getDefaultProjectName(workspace); + } + + if (!projectName) { + throw new Error( + `No project name provided and no default project found in workspace path ${workspacePath}. ` + + 'Please provide a project name or set a default project in angular.json. ' + + "You can use 'list_projects' to find available projects.", + ); + } + + return { workspace, workspacePath, projectName }; +} diff --git a/packages/angular/cli/src/commands/mcp/workspace-utils_spec.ts b/packages/angular/cli/src/commands/mcp/workspace-utils_spec.ts new file mode 100644 index 000000000000..62e8df3100e8 --- /dev/null +++ b/packages/angular/cli/src/commands/mcp/workspace-utils_spec.ts @@ -0,0 +1,243 @@ +/** + * @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 { workspaces } from '@angular-devkit/core'; +import { join } from 'node:path'; +import { AngularWorkspace } from '../../utilities/config'; +import { LocalWorkspaceHost } from './host'; +import { addProjectToWorkspace, createMockContext, createMockHost } from './testing/test-utils'; +import { + findAngularJsonDir, + getDefaultProjectName, + getProject, + resolveWorkspaceAndProject, +} from './workspace-utils'; + +describe('MCP Workspace Utils', () => { + describe('findAngularJsonDir', () => { + let mockHost: typeof LocalWorkspaceHost; + + beforeEach(() => { + mockHost = { + existsSync: jasmine.createSpy('existsSync'), + } as unknown as typeof LocalWorkspaceHost; + }); + + it('should return dir if angular.json exists in it', () => { + (mockHost.existsSync as jasmine.Spy).and.callFake( + (path: string) => path === join('/app', 'angular.json'), + ); + expect(findAngularJsonDir('/app', mockHost)).toBe('/app'); + }); + + it('should traverse up directory tree', () => { + (mockHost.existsSync as jasmine.Spy).and.callFake( + (path: string) => path === join('/app', 'angular.json'), + ); + expect(findAngularJsonDir('/app/src/app', mockHost)).toBe('/app'); + }); + + it('should return null if not found', () => { + (mockHost.existsSync as jasmine.Spy).and.returnValue(false); + expect(findAngularJsonDir('/app', mockHost)).toBeNull(); + }); + }); + + describe('getProject', () => { + it('should return undefined if workspace has no projects', () => { + const { context } = createMockContext(); + const emptyContext = { ...context }; + expect(getProject(emptyContext, 'app')).toBeUndefined(); + }); + + it('should return undefined if project not found', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'existing-app', {}, 'root'); + expect(getProject(context, 'non-existent')).toBeUndefined(); + }); + + it('should return project definition if found', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'app', {}, 'root'); + + const project = getProject(context, 'app'); + expect(project).toBeDefined(); + expect(project?.root).toBe('root'); + }); + }); + + describe('getDefaultProjectName', () => { + it('should return undefined if workspace is missing', () => { + const { context } = createMockContext(); + const emptyContext = { ...context, workspace: undefined }; + expect(getDefaultProjectName(emptyContext.workspace)).toBeUndefined(); + }); + + it('should return defaultProject from extensions', () => { + const { context } = createMockContext(); + context.workspace.extensions['defaultProject'] = 'my-app'; + expect(getDefaultProjectName(context.workspace)).toBe('my-app'); + }); + + it('should return single project name if only one exists and no defaultProject', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'only-app', {}, ''); + expect(getDefaultProjectName(context.workspace)).toBe('only-app'); + }); + + it('should return undefined if multiple projects exist and no defaultProject', () => { + const { context, projects } = createMockContext(); + addProjectToWorkspace(projects, 'app1', {}, ''); + addProjectToWorkspace(projects, 'app2', {}, ''); + expect(getDefaultProjectName(context.workspace)).toBeUndefined(); + }); + }); + + describe('resolveWorkspaceAndProject', () => { + let mockHost: ReturnType; + let mockWorkspace: AngularWorkspace; + const cwd = './'; + + beforeEach(() => { + mockHost = createMockHost(); + spyOn(process, 'cwd').and.returnValue(cwd); + + // Setup default mocks + mockHost.existsSync.and.callFake((p) => { + // Mock presence of angular.json in CWD + if (p === join(cwd, 'angular.json')) { + return true; + } + // Mock presence of specific workspace + if (p === '/my/workspace') { + return true; + } + if (p === '/my/workspace/angular.json') { + return true; + } + + return false; + }); + + const projects = new workspaces.ProjectDefinitionCollection(); + projects.set('app', { + root: 'app', + extensions: {}, + targets: new workspaces.TargetDefinitionCollection(), + }); + + mockWorkspace = { + projects, + extensions: { defaultProject: 'app' }, + basePath: cwd, + filePath: join(cwd, 'angular.json'), + } as unknown as AngularWorkspace; + + spyOn(AngularWorkspace, 'load').and.resolveTo(mockWorkspace); + }); + + it('should resolve workspace from CWD if not provided and mcpWorkspace is absent', async () => { + const result = await resolveWorkspaceAndProject({ + host: mockHost, + }); + expect(result.workspacePath).toBe(cwd); + expect(result.projectName).toBe('app'); + expect(AngularWorkspace.load).toHaveBeenCalledWith(join(cwd, 'angular.json')); + }); + + it('should use mcpWorkspace if provided and no input path', async () => { + const result = await resolveWorkspaceAndProject({ + host: mockHost, + mcpWorkspace: mockWorkspace, + }); + expect(result.workspace).toBe(mockWorkspace); + expect(result.workspacePath).toBe(mockWorkspace.basePath); + expect(AngularWorkspace.load).not.toHaveBeenCalled(); + }); + + it('should prefer workspacePathInput over mcpWorkspace', async () => { + const result = await resolveWorkspaceAndProject({ + host: mockHost, + workspacePathInput: '/my/workspace', + mcpWorkspace: mockWorkspace, + }); + expect(result.workspacePath).toBe('/my/workspace'); + expect(AngularWorkspace.load).toHaveBeenCalledWith('/my/workspace/angular.json'); + }); + + it('should resolve provided workspace', async () => { + const result = await resolveWorkspaceAndProject({ + host: mockHost, + workspacePathInput: '/my/workspace', + }); + expect(result.workspacePath).toBe('/my/workspace'); + expect(AngularWorkspace.load).toHaveBeenCalledWith('/my/workspace/angular.json'); + }); + + it('should throw if provided workspace does not exist', async () => { + mockHost.existsSync.and.returnValue(false); + await expectAsync( + resolveWorkspaceAndProject({ + host: mockHost, + workspacePathInput: '/bad/path', + }), + ).toBeRejectedWithError(/Workspace path does not exist: \/bad\/path/); + }); + + it('should throw if provided workspace has no angular.json', async () => { + mockHost.existsSync.and.callFake((p) => p === '/path'); + await expectAsync( + resolveWorkspaceAndProject({ + host: mockHost, + workspacePathInput: '/path', + }), + ).toBeRejectedWithError(/No angular.json found at \/path/); + }); + + it('should resolve provided project', async () => { + const result = await resolveWorkspaceAndProject({ + host: mockHost, + projectNameInput: 'app', + }); + expect(result.projectName).toBe('app'); + }); + + it('should throw if provided project does not exist', async () => { + await expectAsync( + resolveWorkspaceAndProject({ + host: mockHost, + projectNameInput: 'bad-app', + }), + ).toBeRejectedWithError(/Project 'bad-app' not found in workspace path/); + }); + + it('should throw if no project resolved', async () => { + mockWorkspace.extensions['defaultProject'] = undefined; + mockWorkspace.projects.set('app2', { + root: 'app2', + extensions: {}, + targets: new workspaces.TargetDefinitionCollection(), + }); + + await expectAsync( + resolveWorkspaceAndProject({ + host: mockHost, + }), + ).toBeRejectedWithError(/No project name provided and no default project found/); + }); + + it('should throw if mcpWorkspace is absent and no workspace found in CWD', async () => { + mockHost.existsSync.and.returnValue(false); + await expectAsync( + resolveWorkspaceAndProject({ + host: mockHost, + }), + ).toBeRejectedWithError(/Could not find an Angular workspace/); + }); + }); +}); From 6508bb1f9629527ff4dcb5d5dfec42716801e3d4 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:09:26 -0500 Subject: [PATCH 2135/2162] refactor(@angular/build): avoid secondary import wrapper in Vitest unless coverage is enabled This commit optimizes the Vitest test runner by removing the secondary import wrapper for test entry points when code coverage is not enabled. The wrapper is only necessary to support coverage exclusion of the test files themselves. By capturing the resolved Vitest configuration within the `configureVitest` hook, the plugin can now determine if coverage is enabled and conditionally apply the wrapper. This simplifies the module graph for standard test runs. --- .../unit-test/runners/vitest/plugins.ts | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 39d42c62d05d..b497d690c4bf 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -14,6 +14,7 @@ import path from 'node:path'; import type { BrowserConfigOptions, InlineConfig, + ResolvedConfig, UserWorkspaceConfig, VitestPlugin, } from 'vitest/node'; @@ -185,11 +186,15 @@ async function loadResultFile(file: ResultFile): Promise { export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins { const { workspaceRoot, buildResultFiles, testFileToEntryPoint } = pluginOptions; const isWindows = platform() === 'win32'; + let vitestConfig: ResolvedConfig; return [ { name: 'angular:test-in-memory-provider', enforce: 'pre', + configureVitest(context) { + vitestConfig = context.vitest.config; + }, resolveId: (id, importer) => { // Fast path for test entry points. if (testFileToEntryPoint.has(id)) { @@ -248,7 +253,7 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins // If the module cannot be resolved from the build artifacts, let other plugins handle it. return undefined; }, - load: async (id) => { + async load(id) { assert(buildResultFiles.size > 0, 'buildResult must be available for in-memory loading.'); // Attempt to load as a source test file. @@ -257,11 +262,14 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins if (entryPoint) { outputPath = entryPoint + '.js'; - // To support coverage exclusion of the actual test file, the virtual - // test entry point only references the built and bundled intermediate file. - return { - code: `import "./${outputPath}";`, - }; + if (vitestConfig.coverage.enabled) { + // To support coverage exclusion of the actual test file, the virtual + // test entry point only references the built and bundled intermediate file. + // If vitest supported an "excludeOnlyAfterRemap" option, this could be removed completely. + return { + code: `import "./${outputPath}";`, + }; + } } else { // Attempt to load as a built artifact. const relativePath = path.relative(workspaceRoot, id); From 0b4982720e111bf5029bcf97f7e0ce2658c42d43 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:06:13 -0500 Subject: [PATCH 2136/2162] fix(@angular/build): adjust sourcemap sources when Vitest wrapper is bypassed When code coverage is disabled, the Vitest builder bypasses the secondary import wrapper and serves the compiled output directly as the test file. This caused sourcemaps to be incorrect because the `sources` field in the map (relative to the build root) was being resolved relative to the test file's location. This commit adjusts the `sources` in the sourcemap to be relative to the test file's directory, ensuring correct source mapping in debuggers. --- .../unit-test/runners/vitest/plugins.ts | 18 ++++++++- tests/e2e/tests/vitest/node-sourcemaps.ts | 37 +++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 tests/e2e/tests/vitest/node-sourcemaps.ts diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index b497d690c4bf..6e621ecc588b 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -113,8 +113,11 @@ export async function createVitestConfigPlugin( delete config.plugins; } - // Add browser source map support - if (browser || testConfig?.browser?.enabled) { + // Add browser source map support if coverage is enabled + if ( + (browser || testConfig?.browser?.enabled) && + (options.coverage.enabled || testConfig?.coverage?.enabled) + ) { projectPlugins.unshift(createSourcemapSupportPlugin()); setupFiles.unshift('virtual:source-map-support'); } @@ -291,6 +294,17 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins if (map) { if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) { map.sources = ['virtual:builder']; + } else if (!vitestConfig.coverage.enabled && Array.isArray(map.sources)) { + map.sources = (map.sources as string[]).map((source) => { + if (source.startsWith('angular:')) { + return source; + } + + // source is relative to the workspace root because the output file is at the root of the output. + const absoluteSource = path.join(workspaceRoot, source); + + return toPosixPath(path.relative(path.dirname(id), absoluteSource)); + }); } } diff --git a/tests/e2e/tests/vitest/node-sourcemaps.ts b/tests/e2e/tests/vitest/node-sourcemaps.ts new file mode 100644 index 000000000000..8e317b2b72cf --- /dev/null +++ b/tests/e2e/tests/vitest/node-sourcemaps.ts @@ -0,0 +1,37 @@ +import assert from 'node:assert/strict'; +import { applyVitestBuilder } from '../../utils/vitest'; +import { ng, noSilentNg } from '../../utils/process'; +import { writeFile } from '../../utils/fs'; +import { stripVTControlCharacters } from 'node:util'; + +export default async function (): Promise { + await applyVitestBuilder(); + await ng('generate', 'component', 'my-comp'); + + // Add a failing test to verify source map support + await writeFile( + 'src/app/failing.spec.ts', + ` + describe('Failing Test', () => { + it('should fail', () => { + expect(true).toBe(false); + }); + }); + `, + ); + + try { + await noSilentNg('test', '--no-watch'); + throw new Error('Expected "ng test" to fail.'); + } catch (error: any) { + const stdout = stripVTControlCharacters(error.stdout || error.message); + // We expect the failure from failing.spec.ts + assert.match(stdout, /1 failed/, 'Expected 1 test to fail.'); + // Check that the stack trace points to the correct file + assert.match( + stdout, + /\bsrc[\/\\]app[\/\\]failing\.spec\.ts:4:\d+/, + 'Expected stack trace to point to the source file.', + ); + } +} From a1249d11606f0390e4eaacbe51d7a54079f6c3f6 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:20:13 -0500 Subject: [PATCH 2137/2162] ci: update Windows CI jobs to use Node.js 24 for test execution --- .github/workflows/ci.yml | 6 +++--- .github/workflows/pr.yml | 4 ++-- MODULE.bazel | 2 +- tools/toolchains/BUILD.bazel | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b1fc6d09fb9..3af5bb7bb78e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,8 +113,8 @@ jobs: run: | pnpm bazel build \ --config=e2e \ - //tests:e2e.webpack_node22 \ - //tests:e2e.esbuild_node22 \ + //tests:e2e.webpack_node24 \ + //tests:e2e.esbuild_node24 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -131,7 +131,7 @@ jobs: strategy: fail-fast: false matrix: - node: [22] + node: [24] subset: [esbuild, webpack] shard: [0, 1, 2, 3, 4, 5] runs-on: windows-2025 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index f73f6a2fed16..237245a329c2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -139,7 +139,7 @@ jobs: run: | pnpm bazel build \ --config=e2e \ - //tests:e2e.esbuild_node22 \ + //tests:e2e.esbuild_node24 \ --platforms=tools:windows_x64 - name: Store built Windows E2E tests uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 @@ -167,7 +167,7 @@ jobs: - name: Run CLI E2E tests uses: ./.github/shared-actions/windows-bazel-test with: - test_target_name: e2e.esbuild_node22 + test_target_name: e2e.esbuild_node24 env: E2E_SHARD_TOTAL: 1 TESTBRIDGE_TEST_ONLY: tests/basic/{build,rebuild,serve}.ts diff --git a/MODULE.bazel b/MODULE.bazel index a1cff69be484..c854fb988b53 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -180,5 +180,5 @@ register_toolchains( "@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain", "@devinfra//bazel/git-toolchain:git_windows_toolchain", "//tools/toolchains:dummy_cc_windows_no_exec_toolchain", - "//tools/toolchains:node22_windows_no_exec_toolchain", + "//tools/toolchains:node24_windows_no_exec_toolchain", ) diff --git a/tools/toolchains/BUILD.bazel b/tools/toolchains/BUILD.bazel index 1abb54e5faa7..5895884b09be 100644 --- a/tools/toolchains/BUILD.bazel +++ b/tools/toolchains/BUILD.bazel @@ -3,13 +3,13 @@ load(":dummy_cc_toolchain.bzl", "dummy_cc_toolchain_config") # This is needed following https://github.com/bazel-contrib/rules_nodejs/pull/3859 toolchain( - name = "node22_windows_no_exec_toolchain", + name = "node24_windows_no_exec_toolchain", exec_compatible_with = [], target_compatible_with = [ "@platforms//os:windows", "@platforms//cpu:x86_64", ], - toolchain = "@node22_windows_amd64//:toolchain", + toolchain = "@node24_windows_amd64//:toolchain", toolchain_type = "@rules_nodejs//nodejs:toolchain_type", ) From 012698466f1ed4e44ecf23c661ec81396ee8ac94 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 27 Jan 2026 05:11:25 +0000 Subject: [PATCH 2138/2162] build: lock file maintenance See associated pull request for more information. --- pnpm-lock.yaml | 951 ++++++++++++++++++++++--------------------------- 1 file changed, 427 insertions(+), 524 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8d5b336066c..2b69f6a8cfca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,7 +93,7 @@ importers: version: 16.0.3(rollup@4.56.0) '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.7.0(eslint@9.39.2(jiti@2.6.1)) + version: 5.7.1(eslint@9.39.2(jiti@2.6.1)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -240,13 +240,13 @@ importers: version: 1.4.0 lodash: specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.23 magic-string: specifier: 0.30.21 version: 0.30.21 prettier: specifier: ^3.0.0 - version: 3.8.0 + version: 3.8.1 protractor: specifier: ~7.0.0 version: 7.0.0 @@ -714,10 +714,10 @@ importers: version: 5.104.1(esbuild@0.27.2) webpack-dev-middleware: specifier: 7.4.5 - version: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) + version: 7.4.5(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)) webpack-dev-server: specifier: 5.2.3 - version: 5.2.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) + version: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -765,7 +765,7 @@ importers: version: 5.104.1(esbuild@0.27.2) webpack-dev-server: specifier: 5.2.3 - version: 5.2.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) + version: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)) packages/angular_devkit/core: dependencies: @@ -1108,8 +1108,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.5': - resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + '@babel/helper-define-polyfill-provider@0.6.6': + resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1633,9 +1633,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.25': - resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} - engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.0.26': + resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==} '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} @@ -2496,36 +2495,120 @@ packages: peerDependencies: tslib: '2' + '@jsonjoy.com/base64@17.65.0': + resolution: {integrity: sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/buffers@1.2.1': resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/buffers@17.65.0': + resolution: {integrity: sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/codegen@1.0.0': resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/codegen@17.65.0': + resolution: {integrity: sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.56.10': + resolution: {integrity: sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.56.10': + resolution: {integrity: sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.56.10': + resolution: {integrity: sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.56.10': + resolution: {integrity: sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.56.10': + resolution: {integrity: sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.56.10': + resolution: {integrity: sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.56.10': + resolution: {integrity: sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.56.10': + resolution: {integrity: sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/json-pack@1.21.0': resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/json-pack@17.65.0': + resolution: {integrity: sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/json-pointer@1.0.2': resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/json-pointer@17.65.0': + resolution: {integrity: sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/util@1.9.0': resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/util@17.65.0': + resolution: {integrity: sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -2871,14 +2954,14 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/context-async-hooks@2.4.0': - resolution: {integrity: sha512-jn0phJ+hU7ZuvaoZE/8/Euw3gvHJrn2yi+kXrymwObEPVPjtwCmkvXDRQCWli+fCTTF/aSOtXaLr7CLIvv3LQg==} + '@opentelemetry/context-async-hooks@2.5.0': + resolution: {integrity: sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.4.0': - resolution: {integrity: sha512-KtcyFHssTn5ZgDu6SXmUznS80OFs/wN7y6MyFRRcKU6TOw8hNcGxKvt8hsdaLJfhzUszNSjURetq5Qpkad14Gw==} + '@opentelemetry/core@2.5.0': + resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -2890,92 +2973,92 @@ packages: '@oxc-project/types@0.110.0': resolution: {integrity: sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow==} - '@parcel/watcher-android-arm64@2.5.4': - resolution: {integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.4': - resolution: {integrity: sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==} + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.4': - resolution: {integrity: sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==} + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.4': - resolution: {integrity: sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==} + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.4': - resolution: {integrity: sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==} + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm-musl@2.5.4': - resolution: {integrity: sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==} + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [musl] - '@parcel/watcher-linux-arm64-glibc@2.5.4': - resolution: {integrity: sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==} + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm64-musl@2.5.4': - resolution: {integrity: sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==} + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] libc: [musl] - '@parcel/watcher-linux-x64-glibc@2.5.4': - resolution: {integrity: sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==} + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [glibc] - '@parcel/watcher-linux-x64-musl@2.5.4': - resolution: {integrity: sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==} + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] libc: [musl] - '@parcel/watcher-win32-arm64@2.5.4': - resolution: {integrity: sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==} + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.4': - resolution: {integrity: sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==} + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.4': - resolution: {integrity: sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==} + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.4': - resolution: {integrity: sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==} + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} '@peculiar/asn1-cms@2.6.0': @@ -3221,284 +3304,146 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.55.1': - resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.56.0': resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.1': - resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.56.0': resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.55.1': - resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.56.0': resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.1': - resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.56.0': resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.1': - resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.56.0': resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.1': - resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.56.0': resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': - resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-gnueabihf@4.56.0': resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.55.1': - resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} - cpu: [arm] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm-musleabihf@4.56.0': resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.55.1': - resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-gnu@4.56.0': resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.55.1': - resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-musl@4.56.0': resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.55.1': - resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} - cpu: [loong64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.56.0': resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.55.1': - resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} - cpu: [loong64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-loong64-musl@4.56.0': resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.55.1': - resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.56.0': resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.55.1': - resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} - cpu: [ppc64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-ppc64-musl@4.56.0': resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.55.1': - resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.56.0': resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.55.1': - resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-riscv64-musl@4.56.0': resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.55.1': - resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.56.0': resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.55.1': - resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.56.0': resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.55.1': - resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rollup/rollup-linux-x64-musl@4.56.0': resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.55.1': - resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} - cpu: [x64] - os: [openbsd] - '@rollup/rollup-openbsd-x64@4.56.0': resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.55.1': - resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.56.0': resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.1': - resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.56.0': resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.1': - resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.56.0': resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.1': - resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.56.0': resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.1': - resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.56.0': resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] - '@rollup/wasm-node@4.55.1': - resolution: {integrity: sha512-GD+BSGH7+hVtNreVwv2JVxKImAdaDDrT9Ev0Bbr9CTATPjXjp7pQlRAqyZqNW3RGY37qL/RkF0HyO9ptJDU2pQ==} + '@rollup/wasm-node@4.56.0': + resolution: {integrity: sha512-ecaoyItGmpj4hnabpa2D+oI6ME7t7hrqosQ2SA+qBGihoL0DuuoaXIfY8Oa1o7lWGtPpRZmt9EYe7oyivypsJg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3539,8 +3484,8 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@stylistic/eslint-plugin@5.7.0': - resolution: {integrity: sha512-PsSugIf9ip1H/mWKj4bi/BlEoerxXAda9ByRFsYuwsmr6af9NxJL0AaiNXs8Le7R21QR5KMiD/KdxZZ71LjAxQ==} + '@stylistic/eslint-plugin@5.7.1': + resolution: {integrity: sha512-zjTUwIsEfT+k9BmXwq1QEFYsb4afBlsI1AXFyWQBgggMzwBFOuu92pGrE5OFx90IOjNl+lUbQoTG7f8S0PkOdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -3896,10 +3841,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.53.0': - resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.53.1': resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4065,8 +4006,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - '@web/parse5-utils@2.1.0': - resolution: {integrity: sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==} + '@web/parse5-utils@2.1.1': + resolution: {integrity: sha512-7rBVZEMGfrq2iPcAEwJ0KSNSvmA2a6jT2CK8/gyIOHgn4reg7bSSRbzyWIEYWyIkeRoYEukX/aW+nAeCgSSqhQ==} engines: {node: '>=18.0.0'} '@web/test-runner-chrome@0.18.1': @@ -4435,8 +4376,8 @@ packages: '@babel/core': ^7.12.0 webpack: '>=5.61.0' - babel-plugin-polyfill-corejs2@0.4.14: - resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + babel-plugin-polyfill-corejs2@0.4.15: + resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4445,8 +4386,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.5: - resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + babel-plugin-polyfill-regenerator@0.6.6: + resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4498,8 +4439,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.9.15: - resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} + baseline-browser-mapping@2.9.18: + resolution: {integrity: sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==} hasBin: true basic-ftp@5.1.0: @@ -4674,8 +4615,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001765: - resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4734,8 +4675,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@12.0.1: - resolution: {integrity: sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==} + chromium-bidi@13.0.1: + resolution: {integrity: sha512-c+RLxH0Vg2x2syS9wPw378oJgiJNXtYXUvnVAldUlt5uaHekn0CCU7gPksNgHjrH1qFhmjVXQj4esvuthuC7OQ==} peerDependencies: devtools-protocol: '*' @@ -4930,8 +4871,8 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.47.0: - resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} + core-js-compat@3.48.0: + resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -4943,6 +4884,10 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -5012,8 +4957,8 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-urls@6.0.0: - resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} + data-urls@6.0.1: + resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} engines: {node: '>=20'} data-view-buffer@1.0.2: @@ -5196,18 +5141,18 @@ packages: devtools-protocol@0.0.1045489: resolution: {integrity: sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==} - devtools-protocol@0.0.1534754: - resolution: {integrity: sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==} + devtools-protocol@0.0.1551306: + resolution: {integrity: sha512-CFx8QdSim8iIv+2ZcEOclBKTQY6BI1IEDa7Tm9YkwAXzEWFndTEzpTo5jAUhSnq24IC7xaDw0wvGcm96+Y3PEg==} di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + diff@4.0.4: + resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + diff@5.2.2: + resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: @@ -5273,8 +5218,8 @@ packages: engines: {node: '>=0.12.18'} hasBin: true - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.278: + resolution: {integrity: sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -5330,6 +5275,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -5487,10 +5436,6 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@5.0.0: - resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5505,10 +5450,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@11.0.0: - resolution: {integrity: sha512-+gMeWRrIh/NsG+3NaLeWHuyeyk70p2tbvZIWBYcqQ4/7Xvars6GYTZNhF1sIeLcc6Wb11He5ffz3hsHyXFrw5A==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -5551,8 +5492,8 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} events-intercept@2.0.0: resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==} @@ -6041,8 +5982,8 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} @@ -6871,6 +6812,9 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + log-symbols@7.0.1: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} @@ -6901,8 +6845,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -6955,8 +6899,10 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.54.0: - resolution: {integrity: sha512-wiJ9YYUj2bVcpdJgIv6y1KrStknSdNhfM4+4+ttt0cHHMxVLZ3aOBoER8krt9lGY5HkR2ustUXiihhNPeNxXaQ==} + memfs@4.56.10: + resolution: {integrity: sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==} + peerDependencies: + tslib: '2' meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -7391,10 +7337,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@9.0.0: - resolution: {integrity: sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==} - engines: {node: '>=20'} - ora@9.1.0: resolution: {integrity: sha512-53uuLsXHOAJl5zLrUrzY9/kE+uIFEx7iaH4g2BIJQK4LZjY4LpCCYZVKDWIkL+F01wAaCg93duQ1whnK/AmY1A==} engines: {node: '>=20'} @@ -7703,8 +7645,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.8.0: - resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -7788,8 +7730,8 @@ packages: resolution: {integrity: sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==} engines: {node: '>=14.1.0'} - puppeteer-core@24.35.0: - resolution: {integrity: sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==} + puppeteer-core@24.36.0: + resolution: {integrity: sha512-P3Ou0MAFDCQ0dK1d9F9+8jTrg6JvXjUacgG0YkJQP4kbEnUOGokSDEMmMId5ZhXD5HwsHM202E9VwEpEjWfwxg==} engines: {node: '>=18'} puppeteer@18.2.1: @@ -8043,11 +7985,6 @@ packages: '@types/node': optional: true - rollup@4.55.1: - resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.56.0: resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8180,8 +8117,8 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} engines: {node: '>= 0.8.0'} serve-static@1.16.2: @@ -8552,10 +8489,9 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.5.3: - resolution: {integrity: sha512-ENg5JUHUm2rDD7IvKNFGzyElLXNjachNLp6RaGf4+JOgxXHkqA+gq81ZAMCUmtMtqBsoU62lcp6S27g1LCYGGQ==} + tar@7.5.6: + resolution: {integrity: sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me teeny-request@10.1.0: resolution: {integrity: sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==} @@ -8824,8 +8760,8 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici-types@7.19.1: + resolution: {integrity: sha512-z2f4eae6/P3L9bogRUfLEZfRRxyrH4ssRq8s2/NOOgXEwwM5w0hsaj+mtDJPN7sBXQQNlagCzYUfjHywUiTETw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -9059,8 +8995,8 @@ packages: web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webdriver-bidi-protocol@0.3.10: - resolution: {integrity: sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==} + webdriver-bidi-protocol@0.4.0: + resolution: {integrity: sha512-U9VIlNRrq94d1xxR9JrCEAx5Gv/2W7ERSv8oWRoNe/QYbfccS0V3h/H6qeNeCRJxXGMhhnkqvwNrvPAYeuP9VA==} webdriver-js-extender@2.1.0: resolution: {integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==} @@ -9144,6 +9080,10 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} @@ -9685,7 +9625,7 @@ snapshots: '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.4 + lru-cache: 11.2.5 '@asamuzakjp/dom-selector@6.7.6': dependencies: @@ -9693,7 +9633,7 @@ snapshots: bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.4 + lru-cache: 11.2.5 '@asamuzakjp/nwsapi@2.3.9': {} @@ -9765,7 +9705,7 @@ snapshots: regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.6)': + '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.28.6)': dependencies: '@babel/core': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 @@ -10201,9 +10141,9 @@ snapshots: '@babel/core': 7.28.6 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.28.6) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.28.6) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10327,10 +10267,10 @@ snapshots: '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.6) '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.6) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.6) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.28.6) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) - core-js-compat: 3.47.0 + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.28.6) + core-js-compat: 3.48.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10405,7 +10345,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.25': {} + '@csstools/css-syntax-patches-for-csstree@1.0.26': {} '@csstools/css-tokenizer@3.0.4': {} @@ -10938,8 +10878,8 @@ snapshots: '@google-cloud/promisify': 5.0.0 '@grpc/proto-loader': 0.7.15 '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.4.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.39.0 '@types/big.js': 6.2.2 '@types/stack-trace': 0.0.33 @@ -11321,14 +11261,82 @@ snapshots: dependencies: tslib: 2.8.1 + '@jsonjoy.com/base64@17.65.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': dependencies: tslib: 2.8.1 + '@jsonjoy.com/buffers@17.65.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 + '@jsonjoy.com/codegen@17.65.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.56.10(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + tslib: 2.8.1 + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) @@ -11341,18 +11349,41 @@ snapshots: tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 + '@jsonjoy.com/json-pack@17.65.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': dependencies: '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) tslib: 2.8.1 + '@jsonjoy.com/json-pointer@17.65.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + tslib: 2.8.1 + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 + '@jsonjoy.com/util@17.65.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.65.0(tslib@2.8.1) + tslib: 2.8.1 + '@leichtgewicht/ip-codec@2.0.5': {} '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@24.10.9))(@types/node@24.10.9)(listr2@9.0.5)': @@ -11387,7 +11418,7 @@ snapshots: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 - cors: 2.8.5 + cors: 2.8.6 cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.6 @@ -11528,7 +11559,7 @@ snapshots: agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6(supports-color@10.2.2) - lru-cache: 11.2.4 + lru-cache: 11.2.5 socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -11541,7 +11572,7 @@ snapshots: dependencies: '@npmcli/promise-spawn': 9.0.1 ini: 6.0.0 - lru-cache: 11.2.4 + lru-cache: 11.2.5 npm-pick-manifest: 11.0.3 proc-log: 6.1.0 promise-retry: 2.0.1 @@ -11703,11 +11734,11 @@ snapshots: '@opentelemetry/api@1.9.0': {} - '@opentelemetry/context-async-hooks@2.4.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.39.0 @@ -11716,65 +11747,65 @@ snapshots: '@oxc-project/types@0.110.0': {} - '@parcel/watcher-android-arm64@2.5.4': + '@parcel/watcher-android-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-arm64@2.5.4': + '@parcel/watcher-darwin-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-x64@2.5.4': + '@parcel/watcher-darwin-x64@2.5.6': optional: true - '@parcel/watcher-freebsd-x64@2.5.4': + '@parcel/watcher-freebsd-x64@2.5.6': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.4': + '@parcel/watcher-linux-arm-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm-musl@2.5.4': + '@parcel/watcher-linux-arm-musl@2.5.6': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.4': + '@parcel/watcher-linux-arm64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.4': + '@parcel/watcher-linux-arm64-musl@2.5.6': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.4': + '@parcel/watcher-linux-x64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-x64-musl@2.5.4': + '@parcel/watcher-linux-x64-musl@2.5.6': optional: true - '@parcel/watcher-win32-arm64@2.5.4': + '@parcel/watcher-win32-arm64@2.5.6': optional: true - '@parcel/watcher-win32-ia32@2.5.4': + '@parcel/watcher-win32-ia32@2.5.6': optional: true - '@parcel/watcher-win32-x64@2.5.4': + '@parcel/watcher-win32-x64@2.5.6': optional: true - '@parcel/watcher@2.5.4': + '@parcel/watcher@2.5.6': dependencies: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 picomatch: 4.0.3 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.4 - '@parcel/watcher-darwin-arm64': 2.5.4 - '@parcel/watcher-darwin-x64': 2.5.4 - '@parcel/watcher-freebsd-x64': 2.5.4 - '@parcel/watcher-linux-arm-glibc': 2.5.4 - '@parcel/watcher-linux-arm-musl': 2.5.4 - '@parcel/watcher-linux-arm64-glibc': 2.5.4 - '@parcel/watcher-linux-arm64-musl': 2.5.4 - '@parcel/watcher-linux-x64-glibc': 2.5.4 - '@parcel/watcher-linux-x64-musl': 2.5.4 - '@parcel/watcher-win32-arm64': 2.5.4 - '@parcel/watcher-win32-ia32': 2.5.4 - '@parcel/watcher-win32-x64': 2.5.4 + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 optional: true '@peculiar/asn1-cms@2.6.0': @@ -11989,12 +12020,6 @@ snapshots: optionalDependencies: rollup: 4.56.0 - '@rollup/plugin-json@6.1.0(rollup@4.55.1)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) - optionalDependencies: - rollup: 4.55.1 - '@rollup/plugin-json@6.1.0(rollup@4.56.0)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.56.0) @@ -12029,14 +12054,6 @@ snapshots: optionalDependencies: rollup: 4.56.0 - '@rollup/pluginutils@5.3.0(rollup@4.55.1)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.55.1 - '@rollup/pluginutils@5.3.0(rollup@4.56.0)': dependencies: '@types/estree': 1.0.8 @@ -12045,157 +12062,82 @@ snapshots: optionalDependencies: rollup: 4.56.0 - '@rollup/rollup-android-arm-eabi@4.55.1': - optional: true - '@rollup/rollup-android-arm-eabi@4.56.0': optional: true - '@rollup/rollup-android-arm64@4.55.1': - optional: true - '@rollup/rollup-android-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-arm64@4.55.1': - optional: true - '@rollup/rollup-darwin-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-x64@4.55.1': - optional: true - '@rollup/rollup-darwin-x64@4.56.0': optional: true - '@rollup/rollup-freebsd-arm64@4.55.1': - optional: true - '@rollup/rollup-freebsd-arm64@4.56.0': optional: true - '@rollup/rollup-freebsd-x64@4.55.1': - optional: true - '@rollup/rollup-freebsd-x64@4.56.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.1': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.1': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.55.1': - optional: true - '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.1': - optional: true - '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.1': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.1': - optional: true - '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.1': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.1': - optional: true - '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.1': - optional: true - '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.1': - optional: true - '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-musl@4.55.1': - optional: true - '@rollup/rollup-linux-x64-musl@4.56.0': optional: true - '@rollup/rollup-openbsd-x64@4.55.1': - optional: true - '@rollup/rollup-openbsd-x64@4.56.0': optional: true - '@rollup/rollup-openharmony-arm64@4.55.1': - optional: true - '@rollup/rollup-openharmony-arm64@4.56.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.1': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.1': - optional: true - '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.1': - optional: true - '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true - '@rollup/wasm-node@4.55.1': + '@rollup/wasm-node@4.56.0': dependencies: '@types/estree': 1.0.8 optionalDependencies: @@ -12241,13 +12183,13 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.7.0(eslint@9.39.2(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.7.1(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/types': 8.53.1 eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 5.0.0 - espree: 11.0.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 estraverse: 5.3.0 picomatch: 4.0.3 @@ -12342,7 +12284,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.1.1 + '@types/express-serve-static-core': 4.19.8 '@types/node': 22.19.7 '@types/connect@3.4.38': @@ -12508,11 +12450,11 @@ snapshots: '@types/node@22.19.7': dependencies: - undici-types: 7.18.2 + undici-types: 7.19.1 '@types/node@24.10.9': dependencies: - undici-types: 7.18.2 + undici-types: 7.19.1 '@types/npm-package-arg@6.1.4': {} @@ -12692,8 +12634,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.53.0': {} - '@typescript-eslint/types@8.53.1': {} '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': @@ -12951,7 +12891,7 @@ snapshots: dependencies: '@types/koa': 2.15.0 '@types/ws': 7.4.7 - '@web/parse5-utils': 2.1.0 + '@web/parse5-utils': 2.1.1 chokidar: 4.0.3 clone: 2.1.2 es-module-lexer: 1.7.0 @@ -13006,7 +12946,7 @@ snapshots: - supports-color - utf-8-validate - '@web/parse5-utils@2.1.0': + '@web/parse5-utils@2.1.1': dependencies: '@types/parse5': 6.0.3 parse5: 6.0.1 @@ -13016,7 +12956,7 @@ snapshots: '@web/test-runner-core': 0.13.4(bufferutil@4.1.0) '@web/test-runner-coverage-v8': 0.8.0(bufferutil@4.1.0) chrome-launcher: 0.15.2 - puppeteer-core: 24.35.0(bufferutil@4.1.0) + puppeteer-core: 24.36.0(bufferutil@4.1.0) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -13100,7 +13040,7 @@ snapshots: command-line-args: 5.2.1 command-line-usage: 7.0.3 convert-source-map: 2.0.0 - diff: 5.2.0 + diff: 5.2.2 globby: 11.1.0 nanocolors: 0.2.13 portfinder: 1.0.38 @@ -13436,7 +13376,7 @@ snapshots: async@2.6.4: dependencies: - lodash: 4.17.21 + lodash: 4.17.23 async@3.2.6: {} @@ -13447,7 +13387,7 @@ snapshots: autoprefixer@10.4.23(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001765 + caniuse-lite: 1.0.30001766 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -13469,11 +13409,11 @@ snapshots: find-up: 5.0.0 webpack: 5.104.1(esbuild@0.27.2) - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.6): + babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.28.6): dependencies: '@babel/compat-data': 7.28.6 '@babel/core': 7.28.6 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.6) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -13481,15 +13421,15 @@ snapshots: babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.6): dependencies: '@babel/core': 7.28.6 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) - core-js-compat: 3.47.0 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.6) + core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.6): + babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.28.6): dependencies: '@babel/core': 7.28.6 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.6) transitivePeerDependencies: - supports-color @@ -13536,7 +13476,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.9.15: {} + baseline-browser-mapping@2.9.18: {} basic-ftp@5.1.0: {} @@ -13554,7 +13494,7 @@ snapshots: css-what: 7.0.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 picocolors: 1.1.1 postcss: 8.5.6 postcss-media-query-parser: 0.2.3 @@ -13698,7 +13638,7 @@ snapshots: resp-modifier: 6.0.2 rx: 4.1.0 send: 0.19.2 - serve-index: 1.9.1 + serve-index: 1.9.2 serve-static: 1.16.3 server-destroy: 1.0.1 socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -13716,9 +13656,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.15 - caniuse-lite: 1.0.30001765 - electron-to-chromium: 1.5.267 + baseline-browser-mapping: 2.9.18 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.278 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -13763,7 +13703,7 @@ snapshots: '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 glob: 13.0.0 - lru-cache: 11.2.4 + lru-cache: 11.2.5 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -13812,7 +13752,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001765: {} + caniuse-lite@1.0.30001766: {} caseless@0.12.0: {} @@ -13882,9 +13822,9 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@12.0.1(devtools-protocol@0.0.1534754): + chromium-bidi@13.0.1(devtools-protocol@0.0.1551306): dependencies: - devtools-protocol: 0.0.1534754 + devtools-protocol: 0.0.1551306 mitt: 3.0.1 zod: 3.25.76 @@ -14085,7 +14025,7 @@ snapshots: tinyglobby: 0.2.15 webpack: 5.104.1(esbuild@0.27.2) - core-js-compat@3.47.0: + core-js-compat@3.48.0: dependencies: browserslist: 4.28.1 @@ -14098,6 +14038,11 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cosmiconfig@9.0.0(typescript@5.9.3): dependencies: env-paths: 2.2.1 @@ -14160,9 +14105,9 @@ snapshots: cssstyle@5.3.7: dependencies: '@asamuzakjp/css-color': 4.1.1 - '@csstools/css-syntax-patches-for-csstree': 1.0.25 + '@csstools/css-syntax-patches-for-csstree': 1.0.26 css-tree: 3.1.0 - lru-cache: 11.2.4 + lru-cache: 11.2.5 custom-event@1.0.1: {} @@ -14174,9 +14119,9 @@ snapshots: data-uri-to-buffer@6.0.2: {} - data-urls@6.0.0: + data-urls@6.0.1: dependencies: - whatwg-mimetype: 4.0.0 + whatwg-mimetype: 5.0.0 whatwg-url: 15.1.0 data-view-buffer@1.0.2: @@ -14315,13 +14260,13 @@ snapshots: devtools-protocol@0.0.1045489: {} - devtools-protocol@0.0.1534754: {} + devtools-protocol@0.0.1551306: {} di@0.0.1: {} - diff@4.0.2: {} + diff@4.0.4: {} - diff@5.2.0: {} + diff@5.2.2: {} dir-glob@3.0.1: dependencies: @@ -14384,7 +14329,7 @@ snapshots: easy-extender@2.3.4: dependencies: - lodash: 4.17.21 + lodash: 4.17.23 eazy-logger@4.1.0: dependencies: @@ -14405,7 +14350,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.267: {} + electron-to-chromium@1.5.278: {} emoji-regex@10.6.0: {} @@ -14448,7 +14393,7 @@ snapshots: accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 - cors: 2.8.5 + cors: 2.8.6 debug: 4.4.3(supports-color@10.2.2) engine.io-parser: 5.2.3 ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -14473,6 +14418,8 @@ snapshots: entities@6.0.1: {} + entities@7.0.1: {} + env-paths@2.2.1: {} envinfo@7.15.0: {} @@ -14700,8 +14647,6 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.0: {} - eslint@9.39.2(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -14749,12 +14694,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - espree@11.0.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 5.0.0 - esprima@4.0.1: {} esquery@1.7.0: @@ -14783,7 +14722,7 @@ snapshots: eventemitter3@4.0.7: {} - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} events-intercept@2.0.0: {} @@ -14934,7 +14873,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@10.2.2) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -15474,7 +15413,7 @@ snapshots: hosted-git-info@9.0.2: dependencies: - lru-cache: 11.2.4 + lru-cache: 11.2.5 hpack.js@2.1.6: dependencies: @@ -15493,12 +15432,12 @@ snapshots: html-escaper@2.0.2: {} - htmlparser2@10.0.0: + htmlparser2@10.1.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 6.0.1 + entities: 7.0.1 http-assert@1.5.0: dependencies: @@ -16053,7 +15992,7 @@ snapshots: '@asamuzakjp/dom-selector': 6.7.6 '@exodus/bytes': 1.9.0 cssstyle: 5.3.7 - data-urls: 6.0.0 + data-urls: 6.0.1 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 http-proxy-agent: 7.0.2 @@ -16216,7 +16155,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy: 1.18.1(debug@4.4.3) isbinaryfile: 4.0.10 - lodash: 4.17.21 + lodash: 4.17.23 log4js: 6.9.1 mime: 2.6.0 minimatch: 3.1.2 @@ -16354,7 +16293,7 @@ snapshots: dependencies: cli-truncate: 5.1.1 colorette: 2.0.20 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 log-update: 6.1.0 rfdc: 1.4.1 wrap-ansi: 9.0.2 @@ -16424,6 +16363,8 @@ snapshots: lodash@4.17.21: {} + lodash@4.17.23: {} + log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 @@ -16460,7 +16401,7 @@ snapshots: dependencies: graceful-fs: 4.2.11 is-promise: 2.2.2 - lodash: 4.17.21 + lodash: 4.17.23 pify: 3.0.0 steno: 0.4.4 @@ -16468,7 +16409,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.4: {} + lru-cache@11.2.5: {} lru-cache@5.1.1: dependencies: @@ -16526,8 +16467,16 @@ snapshots: media-typer@1.1.0: {} - memfs@4.54.0: + memfs@4.56.10(tslib@2.8.1): dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) glob-to-regex.js: 1.2.0(tslib@2.8.1) @@ -16720,8 +16669,8 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) - '@rollup/plugin-json': 6.1.0(rollup@4.55.1) - '@rollup/wasm-node': 4.55.1 + '@rollup/plugin-json': 6.1.0(rollup@4.56.0) + '@rollup/wasm-node': 4.56.0 ajv: 8.17.1 ansi-colors: 4.1.3 browserslist: 4.28.1 @@ -16733,17 +16682,17 @@ snapshots: injection-js: 2.6.1 jsonc-parser: 3.3.1 less: 4.4.2 - ora: 9.0.0 + ora: 9.1.0 piscina: 5.1.4 postcss: 8.5.6 - rollup-plugin-dts: 6.3.0(rollup@4.55.1)(typescript@5.9.3) + rollup-plugin-dts: 6.3.0(rollup@4.56.0)(typescript@5.9.3) rxjs: 7.8.2 sass: 1.97.3 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 5.9.3 optionalDependencies: - rollup: 4.55.1 + rollup: 4.56.0 nock@14.0.10: dependencies: @@ -16795,7 +16744,7 @@ snapshots: nopt: 9.0.0 proc-log: 6.1.0 semver: 7.7.3 - tar: 7.5.3 + tar: 7.5.6 tinyglobby: 0.2.15 which: 6.0.0 transitivePeerDependencies: @@ -16965,18 +16914,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@9.0.0: - dependencies: - chalk: 5.6.2 - cli-cursor: 5.0.0 - cli-spinners: 3.4.0 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 7.0.1 - stdin-discarder: 0.2.2 - string-width: 8.1.0 - strip-ansi: 7.1.2 - ora@9.1.0: dependencies: chalk: 5.6.2 @@ -17082,7 +17019,7 @@ snapshots: promise-retry: 2.0.1 sigstore: 4.1.0 ssri: 13.0.0 - tar: 7.5.3 + tar: 7.5.6 transitivePeerDependencies: - supports-color @@ -17138,7 +17075,7 @@ snapshots: path-scurry@2.0.1: dependencies: - lru-cache: 11.2.4 + lru-cache: 11.2.5 minipass: 7.1.2 path-to-regexp@0.1.12: {} @@ -17295,7 +17232,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.8.0: {} + prettier@3.8.1: {} proc-log@6.1.0: {} @@ -17420,14 +17357,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@24.35.0(bufferutil@4.1.0): + puppeteer-core@24.36.0(bufferutil@4.1.0): dependencies: '@puppeteer/browsers': 2.11.1 - chromium-bidi: 12.0.1(devtools-protocol@0.0.1534754) + chromium-bidi: 13.0.1(devtools-protocol@0.0.1551306) debug: 4.4.3(supports-color@10.2.2) - devtools-protocol: 0.0.1534754 + devtools-protocol: 0.0.1551306 typed-query-selector: 2.12.0 - webdriver-bidi-protocol: 0.3.10 + webdriver-bidi-protocol: 0.4.0 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bare-abort-controller @@ -17487,7 +17424,7 @@ snapshots: cross-fetch: 4.1.0(encoding@0.1.13) is-url: 1.2.4 js-base64: 3.7.8 - lodash: 4.17.21 + lodash: 4.17.23 pako: 1.0.11 pluralize: 8.0.0 readable-stream: 4.5.2 @@ -17742,14 +17679,6 @@ snapshots: semver: 7.7.3 spdx-expression-validate: 2.0.0 - rollup-plugin-dts@6.3.0(rollup@4.55.1)(typescript@5.9.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.55.1 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.28.6 - rollup-plugin-dts@6.3.0(rollup@4.56.0)(typescript@5.9.3): dependencies: magic-string: 0.30.21 @@ -17765,37 +17694,6 @@ snapshots: optionalDependencies: '@types/node': 22.19.7 - rollup@4.55.1: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.1 - '@rollup/rollup-android-arm64': 4.55.1 - '@rollup/rollup-darwin-arm64': 4.55.1 - '@rollup/rollup-darwin-x64': 4.55.1 - '@rollup/rollup-freebsd-arm64': 4.55.1 - '@rollup/rollup-freebsd-x64': 4.55.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 - '@rollup/rollup-linux-arm-musleabihf': 4.55.1 - '@rollup/rollup-linux-arm64-gnu': 4.55.1 - '@rollup/rollup-linux-arm64-musl': 4.55.1 - '@rollup/rollup-linux-loong64-gnu': 4.55.1 - '@rollup/rollup-linux-loong64-musl': 4.55.1 - '@rollup/rollup-linux-ppc64-gnu': 4.55.1 - '@rollup/rollup-linux-ppc64-musl': 4.55.1 - '@rollup/rollup-linux-riscv64-gnu': 4.55.1 - '@rollup/rollup-linux-riscv64-musl': 4.55.1 - '@rollup/rollup-linux-s390x-gnu': 4.55.1 - '@rollup/rollup-linux-x64-gnu': 4.55.1 - '@rollup/rollup-linux-x64-musl': 4.55.1 - '@rollup/rollup-openbsd-x64': 4.55.1 - '@rollup/rollup-openharmony-arm64': 4.55.1 - '@rollup/rollup-win32-arm64-msvc': 4.55.1 - '@rollup/rollup-win32-ia32-msvc': 4.55.1 - '@rollup/rollup-win32-x64-gnu': 4.55.1 - '@rollup/rollup-win32-x64-msvc': 4.55.1 - fsevents: 2.3.3 - rollup@4.56.0: dependencies: '@types/estree': 1.0.8 @@ -17889,7 +17787,7 @@ snapshots: immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.4 + '@parcel/watcher': 2.5.6 saucelabs@1.5.0: dependencies: @@ -17988,13 +17886,13 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-index@1.9.1: + serve-index@1.9.2: dependencies: accepts: 1.3.8 batch: 0.6.1 debug: 2.6.9 escape-html: 1.0.3 - http-errors: 1.6.3 + http-errors: 1.8.1 mime-types: 2.1.35 parseurl: 1.3.3 transitivePeerDependencies: @@ -18162,7 +18060,7 @@ snapshots: dependencies: accepts: 1.3.8 base64id: 2.0.0 - cors: 2.8.5 + cors: 2.8.6 debug: 4.4.3(supports-color@10.2.2) engine.io: 6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) socket.io-adapter: 2.5.6(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -18480,7 +18378,7 @@ snapshots: - bare-abort-controller - react-native-b4a - tar@7.5.3: + tar@7.5.6: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -18626,7 +18524,7 @@ snapshots: acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 - diff: 4.0.2 + diff: 4.0.4 make-error: 1.3.6 typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 @@ -18755,7 +18653,7 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - undici-types@7.18.2: {} + undici-types@7.19.1: {} undici@5.29.0: dependencies: @@ -18933,7 +18831,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.55.1 + rollup: 4.56.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.9 @@ -19006,7 +18904,7 @@ snapshots: web-vitals@4.2.4: {} - webdriver-bidi-protocol@0.3.10: {} + webdriver-bidi-protocol@0.4.0: {} webdriver-js-extender@2.1.0: dependencies: @@ -19033,18 +18931,20 @@ snapshots: webidl-conversions@8.0.1: {} - webpack-dev-middleware@7.4.5(webpack@5.104.1(esbuild@0.27.2)): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)): dependencies: colorette: 2.0.20 - memfs: 4.54.0 + memfs: 4.56.10(tslib@2.8.1) mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: webpack: 5.104.1(esbuild@0.27.2) + transitivePeerDependencies: + - tslib - webpack-dev-server@5.2.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)): + webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -19069,10 +18969,10 @@ snapshots: p-retry: 6.2.1 schema-utils: 4.3.3 selfsigned: 5.5.0 - serve-index: 1.9.1 + serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.104.1(esbuild@0.27.2)) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)) ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: webpack: 5.104.1(esbuild@0.27.2) @@ -19080,6 +18980,7 @@ snapshots: - bufferutil - debug - supports-color + - tslib - utf-8-validate webpack-merge@6.0.1: @@ -19137,6 +19038,8 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: {} + whatwg-url@14.2.0: dependencies: tr46: 5.1.1 From aa7381efd213eff70a8004731a7e2b06a60cb8c2 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 27 Jan 2026 08:38:47 +0000 Subject: [PATCH 2139/2162] feat(@schematics/angular): add a '.prettierrc' file to generated workspaces and add Prettier as dev dependency The config was added as JSON, as this is the preferred format over executable configuration. '.prettierignore' was not added as the '.gitignore' rules are applied by default. Closes #32216 and closes #32222 --- .../angular/utility/latest-versions/package.json | 1 + .../schematics/angular/workspace/files/.prettierrc | 12 ++++++++++++ .../angular/workspace/files/package.json.template | 13 +------------ packages/schematics/angular/workspace/index_spec.ts | 6 ------ 4 files changed, 14 insertions(+), 18 deletions(-) create mode 100644 packages/schematics/angular/workspace/files/.prettierrc diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 0922fb6dc705..4ff5c79f5685 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -18,6 +18,7 @@ "jsdom": "^27.1.0", "less": "^4.2.0", "postcss": "^8.5.3", + "prettier": "^3.8.1", "protractor": "~7.0.0", "rxjs": "~7.8.0", "tailwindcss": "^4.1.12", diff --git a/packages/schematics/angular/workspace/files/.prettierrc b/packages/schematics/angular/workspace/files/.prettierrc new file mode 100644 index 000000000000..d6c16d7ee77b --- /dev/null +++ b/packages/schematics/angular/workspace/files/.prettierrc @@ -0,0 +1,12 @@ +{ + "printWidth": 100, + "singleQuote": true, + "overrides": [ + { + "files": "*.html", + "options": { + "parser": "angular" + } + } + ] +} diff --git a/packages/schematics/angular/workspace/files/package.json.template b/packages/schematics/angular/workspace/files/package.json.template index 790f65acf407..c72c727cacfc 100644 --- a/packages/schematics/angular/workspace/files/package.json.template +++ b/packages/schematics/angular/workspace/files/package.json.template @@ -8,18 +8,6 @@ "watch": "ng build --watch --configuration development"<% if (!minimal) { %>, "test": "ng test"<% } %> }, - "prettier": { - "printWidth": 100, - "singleQuote": true, - "overrides": [ - { - "files": "*.html", - "options": { - "parser": "angular" - } - } - ] - }, "private": true, <% if (packageManagerWithVersion) { %>"packageManager": "<%= packageManagerWithVersion %>",<% } %> "dependencies": { @@ -35,6 +23,7 @@ "devDependencies": { "@angular/cli": "<%= '^' + version %>", "@angular/compiler-cli": "<%= latestVersions.Angular %>", + "prettier": "<%= latestVersions['prettier'] %>", "typescript": "<%= latestVersions['typescript'] %>" } } diff --git a/packages/schematics/angular/workspace/index_spec.ts b/packages/schematics/angular/workspace/index_spec.ts index 65dd7987aa41..bc7a9366b68b 100644 --- a/packages/schematics/angular/workspace/index_spec.ts +++ b/packages/schematics/angular/workspace/index_spec.ts @@ -134,10 +134,4 @@ describe('Workspace Schematic', () => { const { tasks } = parseJson(tree.readContent('.vscode/tasks.json').toString()); expect(tasks).not.toContain(jasmine.objectContaining({ type: 'npm', script: 'test' })); }); - - it('should include prettier config overrides for Angular templates', async () => { - const tree = await schematicRunner.runSchematic('workspace', defaultOptions); - const pkg = JSON.parse(tree.readContent('/package.json')); - expect(pkg.prettier).withContext('package.json#prettier is present').toBeTruthy(); - }); }); From dbd81a76c926e4187d4e97bd63c03b45faafd6f4 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 26 Jan 2026 10:26:08 +0000 Subject: [PATCH 2140/2162] fix(@angular-devkit/schematics-cli): Add boolean type inference for 'true' and 'false' string values in argument parsing Handles booleans correctly Closes #32361 --- .../angular_devkit/schematics_cli/bin/schematics.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/angular_devkit/schematics_cli/bin/schematics.ts b/packages/angular_devkit/schematics_cli/bin/schematics.ts index 109497dd89e1..08d72f9d01d5 100644 --- a/packages/angular_devkit/schematics_cli/bin/schematics.ts +++ b/packages/angular_devkit/schematics_cli/bin/schematics.ts @@ -520,9 +520,16 @@ function parseOptions(args: string[]): Options { } } - // Type inference for numbers - if (typeof value === 'string' && !isNaN(Number(value))) { - value = Number(value); + if (typeof value === 'string') { + if (!isNaN(Number(value))) { + // Type inference for numbers + value = Number(value); + } else if (value === 'true') { + // Type inference for booleans + value = true; + } else if (value === 'false') { + value = false; + } } const camelName = strings.camelize(name); From 247855c625d08d0946e087293596eb9870e59eff Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Mon, 26 Jan 2026 10:26:25 +0000 Subject: [PATCH 2141/2162] fix(@angular-devkit/architect): Add boolean type inference for 'true' and 'false' string values in argument parsing Handles booleans correctly Closes #32361 --- packages/angular_devkit/architect/bin/architect.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/angular_devkit/architect/bin/architect.ts b/packages/angular_devkit/architect/bin/architect.ts index b4513721a1da..05888c276e55 100644 --- a/packages/angular_devkit/architect/bin/architect.ts +++ b/packages/angular_devkit/architect/bin/architect.ts @@ -180,9 +180,16 @@ function parseOptions(args: string[]): Options { } } - // Type inference for numbers - if (typeof value === 'string' && !isNaN(Number(value))) { - value = Number(value); + if (typeof value === 'string') { + if (!isNaN(Number(value))) { + // Type inference for numbers + value = Number(value); + } else if (value === 'true') { + // Type inference for booleans + value = true; + } else if (value === 'false') { + value = false; + } } const camelName = strings.camelize(name); From fbae1b6ab384186ae69e804c54815cea80e6a600 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 28 Jan 2026 08:40:00 +0100 Subject: [PATCH 2142/2162] feat(@angular/cli): automatic formatting files modified by schematics This change introduces automatic formatting of files generated or modified during a schematic execution. --- .../schematics-command-module.ts | 20 ++++- .../src/command-builder/utilities/prettier.ts | 73 +++++++++++++++++++ .../e2e/tests/commands/add/add-tailwindcss.ts | 2 +- tests/e2e/tests/test/karma-junit-output.ts | 2 +- 4 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 packages/angular/cli/src/command-builder/utilities/prettier.ts diff --git a/packages/angular/cli/src/command-builder/schematics-command-module.ts b/packages/angular/cli/src/command-builder/schematics-command-module.ts index ef317700d1a6..5a8a8e7b3f3b 100644 --- a/packages/angular/cli/src/command-builder/schematics-command-module.ts +++ b/packages/angular/cli/src/command-builder/schematics-command-module.ts @@ -29,6 +29,7 @@ import { OtherOptions, } from './command-module'; import { Option, parseJsonSchemaToOptions } from './utilities/json-schema'; +import { formatFiles } from './utilities/prettier'; import { SchematicEngineHost } from './utilities/schematic-engine-host'; import { subscribeToWorkflow } from './utilities/schematic-workflow'; @@ -361,7 +362,24 @@ export abstract class SchematicsCommandModule if (executionOptions.dryRun) { logger.warn(`\nNOTE: The "--dry-run" option means no changes were made.`); + + return 0; } + + if (files.size) { + // Note: we could use a task executor to format the files but this is simpler. + try { + await formatFiles(this.context.root, files); + } catch (error) { + assertIsError(error); + + logger.warn( + `WARNING: Formatting of files failed with the following error: ${error.message}`, + ); + } + } + + return 0; } catch (err) { // In case the workflow was not successful, show an appropriate error message. if (err instanceof UnsuccessfulWorkflowExecution) { @@ -376,8 +394,6 @@ export abstract class SchematicsCommandModule } finally { unsubscribe(); } - - return 0; } private getProjectName(): string | undefined { diff --git a/packages/angular/cli/src/command-builder/utilities/prettier.ts b/packages/angular/cli/src/command-builder/utilities/prettier.ts new file mode 100644 index 000000000000..5e7ea08eed6a --- /dev/null +++ b/packages/angular/cli/src/command-builder/utilities/prettier.ts @@ -0,0 +1,73 @@ +/** + * @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 { execFile } from 'node:child_process'; +import { readFile } from 'node:fs/promises'; +import { createRequire } from 'node:module'; +import { dirname, extname, join, relative } from 'node:path'; +import { promisify } from 'node:util'; + +const execFileAsync = promisify(execFile); +let prettierCliPath: string | null | undefined; + +/** + * File types that can be formatted using Prettier. + */ +const fileTypes: ReadonlySet = new Set([ + '.ts', + '.html', + '.js', + '.mjs', + '.cjs', + '.json', + '.css', + '.less', + '.scss', + '.sass', +]); + +/** + * Formats files using Prettier. + * @param cwd The current working directory. + * @param files The files to format. + */ +export async function formatFiles(cwd: string, files: Set): Promise { + if (!files.size) { + return; + } + + if (prettierCliPath === undefined) { + try { + const prettierPath = createRequire(cwd + '/').resolve('prettier/package.json'); + const prettierPackageJson = JSON.parse(await readFile(prettierPath, 'utf-8')) as { + bin: string; + }; + prettierCliPath = join(dirname(prettierPath), prettierPackageJson.bin); + } catch { + // Prettier is not installed. + prettierCliPath = null; + } + } + + if (!prettierCliPath) { + return; + } + + const filesToFormat: string[] = []; + for (const file of files) { + if (fileTypes.has(extname(file))) { + filesToFormat.push(relative(cwd, file)); + } + } + + if (!filesToFormat.length) { + return; + } + + await execFileAsync(prettierCliPath, ['--write', ...filesToFormat], { cwd }); +} diff --git a/tests/e2e/tests/commands/add/add-tailwindcss.ts b/tests/e2e/tests/commands/add/add-tailwindcss.ts index 1444bb6a9a07..54fd617a4e1e 100644 --- a/tests/e2e/tests/commands/add/add-tailwindcss.ts +++ b/tests/e2e/tests/commands/add/add-tailwindcss.ts @@ -13,7 +13,7 @@ export default async function () { try { await ng('add', 'tailwindcss', '--skip-confirmation'); await expectFileToExist('.postcssrc.json'); - await expectFileToMatch('src/styles.css', /@import "tailwindcss";/); + await expectFileToMatch('src/styles.css', /@import 'tailwindcss';/); await expectFileToMatch('package.json', /"tailwindcss":/); await expectFileToMatch('package.json', /"@tailwindcss\/postcss":/); await expectFileToMatch('package.json', /"postcss":/); diff --git a/tests/e2e/tests/test/karma-junit-output.ts b/tests/e2e/tests/test/karma-junit-output.ts index 056adea26ab3..dbc61c3fafc5 100644 --- a/tests/e2e/tests/test/karma-junit-output.ts +++ b/tests/e2e/tests/test/karma-junit-output.ts @@ -9,7 +9,7 @@ const E2E_CUSTOM_LAUNCHER = ` flags: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage'], }, }, - restartOnFileChange: true, + restartOnFileChange: true `; export default async function () { From 5b05f25005621828565585692b1d7a67c5f0fec8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 09:17:04 +0000 Subject: [PATCH 2143/2162] fix(@angular/cli): enable shell option for Prettier execution on Windows platforms shell is needed on Windows. --- .../angular/cli/src/command-builder/utilities/prettier.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/angular/cli/src/command-builder/utilities/prettier.ts b/packages/angular/cli/src/command-builder/utilities/prettier.ts index 5e7ea08eed6a..03866d69c0db 100644 --- a/packages/angular/cli/src/command-builder/utilities/prettier.ts +++ b/packages/angular/cli/src/command-builder/utilities/prettier.ts @@ -9,6 +9,7 @@ import { execFile } from 'node:child_process'; import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; +import { platform } from 'node:os'; import { dirname, extname, join, relative } from 'node:path'; import { promisify } from 'node:util'; @@ -69,5 +70,8 @@ export async function formatFiles(cwd: string, files: Set): Promise Date: Wed, 28 Jan 2026 10:13:48 +0000 Subject: [PATCH 2144/2162] docs: release notes for the v21.1.2 release --- CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fac01b3d6ce..8fbf82204701 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ + + +# 21.1.2 (2026-01-28) + +### @angular-devkit/schematics-cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------- | +| [e7458c81d](https://github.com/angular/angular-cli/commit/e7458c81d669296c767fca272f80054d3b434a72) | fix | Add boolean type inference for 'true' and 'false' string values in argument parsing | + +### @angular-devkit/architect + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------- | +| [d66f1fe64](https://github.com/angular/angular-cli/commit/d66f1fe647560498d78e9db362a5fdf1ab492326) | fix | Add boolean type inference for 'true' and 'false' string values in argument parsing | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| [80911af67](https://github.com/angular/angular-cli/commit/80911af673365af3bcb86760bebb4200967ca433) | fix | loosen Vitest dependency checks when runnerConfig is used | +| [2d30639d3](https://github.com/angular/angular-cli/commit/2d30639d3c5a0eb3a1f40ec4cd8fe157f28f19f5) | fix | support merging coverage thresholds with Vitest runnerConfig | + + + # 21.1.1 (2026-01-21) From 39342aff0b9a556e188a0f6347f0b42341e82ad6 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:23:07 +0000 Subject: [PATCH 2145/2162] refactor(@angular/cli): remove `relative` path conversion when adding files to format Path are already relative. --- .../src/command-builder/utilities/prettier.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/angular/cli/src/command-builder/utilities/prettier.ts b/packages/angular/cli/src/command-builder/utilities/prettier.ts index 03866d69c0db..6183b316eff5 100644 --- a/packages/angular/cli/src/command-builder/utilities/prettier.ts +++ b/packages/angular/cli/src/command-builder/utilities/prettier.ts @@ -10,7 +10,7 @@ import { execFile } from 'node:child_process'; import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; import { platform } from 'node:os'; -import { dirname, extname, join, relative } from 'node:path'; +import { dirname, extname, join } from 'node:path'; import { promisify } from 'node:util'; const execFileAsync = promisify(execFile); @@ -62,7 +62,7 @@ export async function formatFiles(cwd: string, files: Set): Promise): Promise Date: Wed, 28 Jan 2026 11:44:45 +0000 Subject: [PATCH 2146/2162] feat(@angular/cli): add markdown files to Prettier's formatting list Improve README template spacing. --- packages/angular/cli/src/command-builder/utilities/prettier.ts | 1 + packages/schematics/angular/library/files/README.md.template | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/angular/cli/src/command-builder/utilities/prettier.ts b/packages/angular/cli/src/command-builder/utilities/prettier.ts index 6183b316eff5..bc868fa43161 100644 --- a/packages/angular/cli/src/command-builder/utilities/prettier.ts +++ b/packages/angular/cli/src/command-builder/utilities/prettier.ts @@ -20,6 +20,7 @@ let prettierCliPath: string | null | undefined; * File types that can be formatted using Prettier. */ const fileTypes: ReadonlySet = new Set([ + '.md', '.ts', '.html', '.js', diff --git a/packages/schematics/angular/library/files/README.md.template b/packages/schematics/angular/library/files/README.md.template index be0574115b94..661e8958b9f6 100644 --- a/packages/schematics/angular/library/files/README.md.template +++ b/packages/schematics/angular/library/files/README.md.template @@ -31,6 +31,7 @@ This command will compile your project, and the build artifacts will be placed i Once the project is built, you can publish your library by following these steps: 1. Navigate to the `dist` directory: + ```bash cd dist/<%= dasherize(name) %> ``` From b4a8d198c78aaf0cac7671f26162ce5818a5704c Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 07:08:05 +0000 Subject: [PATCH 2147/2162] fix(@angular-devkit/build-angular): address Node.js deprecation DEP0190 This approach has been recommanded by a Node.js member in https://github.com/nodejs/help/issues/5063#issuecomment-3132899776 Closes #32369 --- .../build_angular/src/builders/ssr-dev-server/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/utils.ts b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/utils.ts index afb8bc77727b..db59e2cb6d31 100644 --- a/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/utils.ts +++ b/packages/angular_devkit/build_angular/src/builders/ssr-dev-server/utils.ts @@ -30,7 +30,7 @@ export function spawnAsObservable( options: SpawnOptions = {}, ): Observable<{ stdout?: string; stderr?: string }> { return new Observable((obs) => { - const proc = spawn(command, args, options); + const proc = spawn(`${command} ${args.join(' ')}`, options); if (proc.stdout) { proc.stdout.on('data', (data) => obs.next({ stdout: data.toString() })); } From 80c572bc8b0f052b6bd4bada60ad8a611898d40e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:11:11 +0000 Subject: [PATCH 2148/2162] refactor(@schematics/angular): standardize Tailwind import and detection The Tailwind CSS import statement is updated to use single quotes, aligning with the project's coding style for consistency. The regular expression for detecting an existing Tailwind CSS configuration has been improved to recognize both single and double-quoted import paths. This enhancement makes the schematic more resilient to variations in user code style. --- packages/schematics/angular/application/index_spec.ts | 2 +- packages/schematics/angular/ng-new/index_spec.ts | 2 +- packages/schematics/angular/tailwind/index.ts | 6 +++--- packages/schematics/angular/tailwind/index_spec.ts | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/schematics/angular/application/index_spec.ts b/packages/schematics/angular/application/index_spec.ts index 173a4a0bde56..215664398b8e 100644 --- a/packages/schematics/angular/application/index_spec.ts +++ b/packages/schematics/angular/application/index_spec.ts @@ -868,7 +868,7 @@ describe('Application Schematic', () => { expect(packageJson.devDependencies['@tailwindcss/postcss']).toBeDefined(); const stylesContent = tree.readContent('/projects/foo/src/styles.css'); - expect(stylesContent).toContain('@import "tailwindcss";'); + expect(stylesContent).toContain(`@import 'tailwindcss';`); }); describe(`fileNameStyleGuide: '2016'`, () => { diff --git a/packages/schematics/angular/ng-new/index_spec.ts b/packages/schematics/angular/ng-new/index_spec.ts index 28e1c13f315b..ad97df398fba 100644 --- a/packages/schematics/angular/ng-new/index_spec.ts +++ b/packages/schematics/angular/ng-new/index_spec.ts @@ -126,7 +126,7 @@ describe('Ng New Schematic', () => { expect(packageJson.devDependencies['@tailwindcss/postcss']).toBeDefined(); const stylesContent = tree.readContent('/bar/src/styles.css'); - expect(stylesContent).toContain('@import "tailwindcss";'); + expect(stylesContent).toContain(`@import 'tailwindcss';`); }); it(`should create files with file name style guide '2016'`, async () => { diff --git a/packages/schematics/angular/tailwind/index.ts b/packages/schematics/angular/tailwind/index.ts index e246e5f55bfe..018f0f3b9f95 100644 --- a/packages/schematics/angular/tailwind/index.ts +++ b/packages/schematics/angular/tailwind/index.ts @@ -55,7 +55,7 @@ function addTailwindStyles(options: { project: string }, project: ProjectDefinit if (!stylesheetPath) { const newStylesheetPath = join(project.sourceRoot ?? 'src', 'tailwind.css'); - tree.create(newStylesheetPath, '@import "tailwindcss";\n'); + tree.create(newStylesheetPath, `@import 'tailwindcss';\n`); return updateWorkspace((workspace) => { const project = workspace.projects.get(options.project); @@ -82,8 +82,8 @@ function addTailwindStyles(options: { project: string }, project: ProjectDefinit }); } else { let stylesheetContent = tree.readText(stylesheetPath); - if (!stylesheetContent.includes('@import "tailwindcss";')) { - stylesheetContent += '\n@import "tailwindcss";\n'; + if (!/@import ["']tailwindcss["'];/.test(stylesheetContent)) { + stylesheetContent += `\n@import 'tailwindcss';\n`; tree.overwrite(stylesheetPath, stylesheetContent); } } diff --git a/packages/schematics/angular/tailwind/index_spec.ts b/packages/schematics/angular/tailwind/index_spec.ts index b5f3e346bd83..a70c3b3eef8d 100644 --- a/packages/schematics/angular/tailwind/index_spec.ts +++ b/packages/schematics/angular/tailwind/index_spec.ts @@ -64,17 +64,17 @@ describe('Tailwind Schematic', () => { it('should add tailwind imports to styles.css', async () => { const tree = await schematicRunner.runSchematic('tailwind', { project: 'bar' }, appTree); const stylesContent = tree.readContent('/projects/bar/src/styles.css'); - expect(stylesContent).toContain('@import "tailwindcss";'); + expect(stylesContent).toContain(`@import 'tailwindcss';`); }); it('should not add duplicate tailwind imports to styles.css', async () => { let tree = await schematicRunner.runSchematic('tailwind', { project: 'bar' }, appTree); const stylesContent = tree.readContent('/projects/bar/src/styles.css'); - expect(stylesContent.match(/@import "tailwindcss";/g)?.length).toBe(1); + expect(stylesContent.match(/@import 'tailwindcss';/g)?.length).toBe(1); tree = await schematicRunner.runSchematic('tailwind', { project: 'bar' }, tree); const stylesContentAfter = tree.readContent('/projects/bar/src/styles.css'); - expect(stylesContentAfter.match(/@import "tailwindcss";/g)?.length).toBe(1); + expect(stylesContentAfter.match(/@import 'tailwindcss';/g)?.length).toBe(1); }); describe('with scss styles', () => { @@ -86,7 +86,7 @@ describe('Tailwind Schematic', () => { const tree = await schematicRunner.runSchematic('tailwind', { project: 'bar' }, appTree); expect(tree.exists('/projects/bar/src/tailwind.css')).toBe(true); const stylesContent = tree.readContent('/projects/bar/src/tailwind.css'); - expect(stylesContent).toContain('@import "tailwindcss";'); + expect(stylesContent).toContain(`@import 'tailwindcss';`); }); it('should add tailwind.css to angular.json', async () => { @@ -99,7 +99,7 @@ describe('Tailwind Schematic', () => { it('should not add tailwind imports to styles.scss', async () => { const tree = await schematicRunner.runSchematic('tailwind', { project: 'bar' }, appTree); const stylesContent = tree.readContent('/projects/bar/src/styles.scss'); - expect(stylesContent).not.toContain('@import "tailwindcss";'); + expect(stylesContent).not.toContain(`@import 'tailwindcss';`); }); }); From fe06d29729441f2395e87093e03e8993c98b7a4e Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 13:10:01 +0000 Subject: [PATCH 2149/2162] refactor(@angular/cli): execute Prettier using `node` and remove unnecessary arguments and shell option This fixes the formatting on Windows. --- .../angular/cli/src/command-builder/utilities/prettier.ts | 7 +++---- .../workspace/files/{.prettierrc => .prettierrc.template} | 0 2 files changed, 3 insertions(+), 4 deletions(-) rename packages/schematics/angular/workspace/files/{.prettierrc => .prettierrc.template} (100%) diff --git a/packages/angular/cli/src/command-builder/utilities/prettier.ts b/packages/angular/cli/src/command-builder/utilities/prettier.ts index bc868fa43161..f9233e6215e2 100644 --- a/packages/angular/cli/src/command-builder/utilities/prettier.ts +++ b/packages/angular/cli/src/command-builder/utilities/prettier.ts @@ -9,7 +9,6 @@ import { execFile } from 'node:child_process'; import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; -import { platform } from 'node:os'; import { dirname, extname, join } from 'node:path'; import { promisify } from 'node:util'; @@ -72,11 +71,11 @@ export async function formatFiles(cwd: string, files: Set): Promise Date: Wed, 28 Jan 2026 06:08:48 +0000 Subject: [PATCH 2150/2162] build: update pnpm to v10.28.2 See associated pull request for more information. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 8 ++++---- package.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index c854fb988b53..5c54711d471a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -110,8 +110,8 @@ use_repo( pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm") pnpm.pnpm( name = "pnpm", - pnpm_version = "10.28.1", - pnpm_version_integrity = "sha512-fX27yp6ZRHt8O/enMoavqva+mSUeuUmLrvp9QGiS9nuHmts6HX5of8TMwaOIxxdfuq5WeiarRNEGe1T8sNajFg==", + pnpm_version = "10.28.2", + pnpm_version_integrity = "sha512-QYcvA3rSL3NI47Heu69+hnz9RI8nJtnPdMCPGVB8MdLI56EVJbmD/rwt9kC1Q43uYCPrsfhO1DzC1lTSvDJiZA==", ) use_repo(pnpm, "pnpm") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 2e021c7b18d0..0fa9410f2c94 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -414,7 +414,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "VgHl/whC37LJd2Xugb6EJemnvz0YIiZlw3x2My8Zi7I=", - "usagesDigest": "r9KxQq3IUJ6uYoKqfE3aIolq+d2pje5F0Z7jlCaHq/Q=", + "usagesDigest": "TccXKlXg11zLdOE+8hqf1wnSV29qR8Bj3yzzni1HbUM=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -423,11 +423,11 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", "attributes": { "package": "pnpm", - "version": "10.28.1", + "version": "10.28.2", "root_package": "", "link_workspace": "", "link_packages": {}, - "integrity": "sha512-fX27yp6ZRHt8O/enMoavqva+mSUeuUmLrvp9QGiS9nuHmts6HX5of8TMwaOIxxdfuq5WeiarRNEGe1T8sNajFg==", + "integrity": "sha512-QYcvA3rSL3NI47Heu69+hnz9RI8nJtnPdMCPGVB8MdLI56EVJbmD/rwt9kC1Q43uYCPrsfhO1DzC1lTSvDJiZA==", "url": "", "commit": "", "patch_args": [ @@ -450,7 +450,7 @@ "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", "attributes": { "package": "pnpm", - "version": "10.28.1", + "version": "10.28.2", "dev": false, "root_package": "", "link_packages": {}, diff --git a/package.json b/package.json index 1850ca198003..7cf60b07051e 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "type": "git", "url": "https://github.com/angular/angular-cli.git" }, - "packageManager": "pnpm@10.28.1", + "packageManager": "pnpm@10.28.2", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "Please use pnpm instead of NPM to install dependencies", "yarn": "Please use pnpm instead of Yarn to install dependencies", - "pnpm": "10.28.1" + "pnpm": "10.28.2" }, "author": "Angular Authors", "license": "MIT", From 069150d802a79f8b67038c8a615e909413bff1c8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 14:09:56 +0000 Subject: [PATCH 2151/2162] release: cut the v21.2.0-next.0 release --- CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fbf82204701..b30a2fb16f61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,38 @@ + + +# 21.2.0-next.0 (2026-01-28) + +### @angular/cli + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- | +| [0dd04f289](https://github.com/angular/angular-cli/commit/0dd04f289e555a4a8af7bdadabe300da74701e3b) | feat | add markdown files to Prettier's formatting list | +| [fbae1b6ab](https://github.com/angular/angular-cli/commit/fbae1b6ab384186ae69e804c54815cea80e6a600) | feat | automatic formatting files modified by schematics | +| [98a24d040](https://github.com/angular/angular-cli/commit/98a24d0401f36f484dc9c4d8b0f5284ffa524f19) | feat | standardize MCP tools around workspace/project options | +| [d9cd609c5](https://github.com/angular/angular-cli/commit/d9cd609c5d13fe492b1f31973d9be518f8529387) | fix | correctly parse scoped packages in yarn classic list output | +| [5b05f2500](https://github.com/angular/angular-cli/commit/5b05f25005621828565585692b1d7a67c5f0fec8) | fix | enable shell option for Prettier execution on Windows platforms | + +### @schematics/angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------------------------- | +| [aa7381efd](https://github.com/angular/angular-cli/commit/aa7381efd213eff70a8004731a7e2b06a60cb8c2) | feat | add a '.prettierrc' file to generated workspaces and add Prettier as dev dependency | +| [f80db6fb7](https://github.com/angular/angular-cli/commit/f80db6fb714aa326f6ed03a8a51090ca59ad0955) | feat | add ng-add support for Vitest browser providers | + +### @angular-devkit/build-angular + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------- | +| [b4a8d198c](https://github.com/angular/angular-cli/commit/b4a8d198c78aaf0cac7671f26162ce5818a5704c) | fix | address Node.js deprecation DEP0190 | + +### @angular/build + +| Commit | Type | Description | +| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------- | +| [0b4982720](https://github.com/angular/angular-cli/commit/0b4982720e111bf5029bcf97f7e0ce2658c42d43) | fix | adjust sourcemap sources when Vitest wrapper is bypassed | + + + # 21.1.2 (2026-01-28) From eb9c003a26a4309678cf0aa929233ba12de7b544 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 28 Jan 2026 13:48:38 +0000 Subject: [PATCH 2152/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.yml | 52 +++++++++---------- .github/workflows/dev-infra.yml | 4 +- .github/workflows/feature-requests.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 44 ++++++++-------- MODULE.bazel | 2 +- MODULE.bazel.lock | 2 +- package.json | 2 +- pnpm-lock.yaml | 15 +++--- tests/e2e/ng-snapshot/package.json | 32 ++++++------ 11 files changed, 82 insertions(+), 81 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 99bcb2dbf629..f263c15710e2 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -17,6 +17,6 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + - uses: angular/dev-infra/github-actions/branch-manager@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3af5bb7bb78e..c11789e11b1d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,9 +21,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Generate JSON schema types @@ -44,11 +44,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -61,11 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -84,13 +84,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -100,11 +100,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -137,7 +137,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -164,13 +164,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -188,13 +188,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run CLI E2E tests @@ -208,13 +208,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@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Run E2E Browser tests @@ -244,11 +244,11 @@ jobs: CIRCLE_BRANCH: ${{ github.ref_name }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - 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 52dbbde93e5c..88f32f5028fb 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/pull-request-labeling@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + - uses: angular/dev-infra/github-actions/pull-request-labeling@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: angular/dev-infra/github-actions/post-approval-changes@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + - uses: angular/dev-infra/github-actions/post-approval-changes@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml index 993e018ae35d..b5d93c6dda68 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@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + - uses: angular/dev-infra/github-actions/feature-request@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 1c6ff8062512..482aee40f3c3 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@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - 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@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - 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 237245a329c2..96fdb82bb936 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,9 +34,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup ESLint Caching uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2 with: @@ -66,17 +66,17 @@ jobs: # it has been merged. run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/linting/licenses@1d545550f0a93b2ffee3672587314d6f6b3dc7fd build: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Build release targets @@ -93,11 +93,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Run module and package tests @@ -114,13 +114,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Build E2E tests for Windows on Linux @@ -156,7 +156,7 @@ jobs: runs-on: windows-2025 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Download built Windows E2E tests @@ -183,13 +183,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - 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:e2e.${{ matrix.subset }}_node${{ matrix.node }} @@ -205,12 +205,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/setup@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@eaf8b84148f9fd8e974c6498f4cd19602bb7814d + uses: angular/dev-infra/github-actions/bazel/configure-remote@1d545550f0a93b2ffee3672587314d6f6b3dc7fd - 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:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} diff --git a/MODULE.bazel b/MODULE.bazel index 5c54711d471a..fc060efc56cd 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "eaf8b84148f9fd8e974c6498f4cd19602bb7814d", + commit = "1d545550f0a93b2ffee3672587314d6f6b3dc7fd", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 0fa9410f2c94..fe90a42df3db 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -414,7 +414,7 @@ "@@aspect_rules_js+//npm:extensions.bzl%pnpm": { "general": { "bzlTransitiveDigest": "VgHl/whC37LJd2Xugb6EJemnvz0YIiZlw3x2My8Zi7I=", - "usagesDigest": "TccXKlXg11zLdOE+8hqf1wnSV29qR8Bj3yzzni1HbUM=", + "usagesDigest": "UmcnMnMoTFM2RJyO6TC18nuxsq6TZvos++0IcZ5l0VY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/package.json b/package.json index 7cf60b07051e..47fbd3a8f435 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@angular/forms": "21.2.0-next.0", "@angular/localize": "21.2.0-next.0", "@angular/material": "21.2.0-next.1", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#c018d7f32d8d6efb63ee3b15485bfe5c4e085581", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#15a2e18c3d5403d2b2355c5e42c67effc55f9c9f", "@angular/platform-browser": "21.2.0-next.0", "@angular/platform-server": "21.2.0-next.0", "@angular/router": "21.2.0-next.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b69f6a8cfca..04a61176ad59 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,8 +47,8 @@ importers: specifier: 21.2.0-next.1 version: 21.2.0-next.1(543b4cd5add643034223e4134967d1ab) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#c018d7f32d8d6efb63ee3b15485bfe5c4e085581 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#15a2e18c3d5403d2b2355c5e42c67effc55f9c9f + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/15a2e18c3d5403d2b2355c5e42c67effc55f9c9f(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6)) '@angular/platform-browser': specifier: 21.2.0-next.0 version: 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) @@ -1020,9 +1020,9 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.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/c018d7f32d8d6efb63ee3b15485bfe5c4e085581': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/c018d7f32d8d6efb63ee3b15485bfe5c4e085581} - version: 0.0.0-eaf8b84148f9fd8e974c6498f4cd19602bb7814d + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/15a2e18c3d5403d2b2355c5e42c67effc55f9c9f': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/15a2e18c3d5403d2b2355c5e42c67effc55f9c9f} + version: 0.0.0-1d545550f0a93b2ffee3672587314d6f6b3dc7fd hasBin: true '@angular/platform-browser@21.2.0-next.0': @@ -8492,6 +8492,7 @@ packages: tar@7.5.6: resolution: {integrity: sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me teeny-request@10.1.0: resolution: {integrity: sha512-3ZnLvgWF29jikg1sAQ1g0o+lr5JX6sVgYvfUJazn7ZjJroDBUTWp44/+cFVX0bULjv4vci+rBD+oGVAkWqhUbw==} @@ -9527,7 +9528,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/c018d7f32d8d6efb63ee3b15485bfe5c4e085581(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/15a2e18c3d5403d2b2355c5e42c67effc55f9c9f(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6))': dependencies: '@actions/core': 2.0.2 '@google-cloud/spanner': 8.0.0(supports-color@10.2.2) @@ -14873,7 +14874,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3(supports-color@10.2.2) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 57604752009b..40d3d0726ada 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#517fcd636116483642b47908d7668d9c7312987e", - "@angular/cdk": "github:angular/cdk-builds#1d3bd9d8a44c185f396f6dc25c9da1f0818a9b2d", - "@angular/common": "github:angular/common-builds#290d01dc402b5130a28042339011f8c6853a13f1", - "@angular/compiler": "github:angular/compiler-builds#0cbe96004e973bda8a42df589300a40a24f12f1c", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#7493bbc152edcf90018db2631780c29a3150160e", - "@angular/core": "github:angular/core-builds#d3cb40f7fd2df0f0190ef2a9eade04e44ea06a51", - "@angular/forms": "github:angular/forms-builds#6b1aeb12b0ed464c11b5830c703d23396ad75ac0", - "@angular/language-service": "github:angular/language-service-builds#4923d5fa976a91ca9f426404eb112874aff9f745", - "@angular/localize": "github:angular/localize-builds#fbc82ce904bd66967385150793761f01d260200a", - "@angular/material": "github:angular/material-builds#c473290338b0b9ef796f2c3c50c087e13041e437", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#f3758b6bc25ec67345be369d171e68e9535f803b", - "@angular/platform-browser": "github:angular/platform-browser-builds#9d790df443dfbb61a57ec812c7f5447b9815eb53", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#961f283107cbca34a777abd6c083c803c51c7abc", - "@angular/platform-server": "github:angular/platform-server-builds#83330cee31a26162503ab78fcb60f2069fda6687", - "@angular/router": "github:angular/router-builds#f865e497bd58984cb0cd87f5fdd2ac007b21ebc1", - "@angular/service-worker": "github:angular/service-worker-builds#8de674eb4dbf6b932e9758f9d81af6017901429a" + "@angular/animations": "github:angular/animations-builds#4a24b1fb6537bd60eaf9816d8ef9970be1a3e0ac", + "@angular/cdk": "github:angular/cdk-builds#d73331b8fff64a3620a8335d3d2e59ef7bf5b388", + "@angular/common": "github:angular/common-builds#0233e1a169a3d1473793d529c7563858c9ccec45", + "@angular/compiler": "github:angular/compiler-builds#6d70b7bd243009bb0ff28278d7c9c03992d55cca", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#5136d02381b2c374b91c4f8219546bb3daebe3b4", + "@angular/core": "github:angular/core-builds#85e8f33f35c9bae2ad12a894f7a7e6289663d886", + "@angular/forms": "github:angular/forms-builds#288ab76d6e7cbbe18786f6c079df2d4842d0a997", + "@angular/language-service": "github:angular/language-service-builds#19c1abb6b315eb287acb4abc7a0a06c8d34957b5", + "@angular/localize": "github:angular/localize-builds#9f0c68667919f1c72f6d957930c9c2975fb9c524", + "@angular/material": "github:angular/material-builds#c0e47a2e8b667141abb4a0a5ba8c7091a3bc4e22", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#51da415b95248b02c6768b203517894a0502e87e", + "@angular/platform-browser": "github:angular/platform-browser-builds#238f2cc0d284d55629aa2f7329990842ef132dd7", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#dcc636a9d89b4ee41cd03a058cfbf8810a3b21d8", + "@angular/platform-server": "github:angular/platform-server-builds#99e81e931e5480785bbe17adccb543ce899479fe", + "@angular/router": "github:angular/router-builds#96041680a04f8d39d60d556a999594705577c520", + "@angular/service-worker": "github:angular/service-worker-builds#47f4665cdf1f293d79dc25d2ae19389c480fcd41" } } From 91b9d281fc88a242aa6e5dd5495e275990d926ef Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 09:15:32 +0000 Subject: [PATCH 2153/2162] feat(@angular/cli): integrate file formatting into update migrations This adds formatting to `ng update` --- .../command-builder/schematics-command-module.ts | 2 +- .../cli/src/commands/update/utilities/migration.ts | 13 +++++++++++++ .../src/{command-builder => }/utilities/prettier.ts | 0 3 files changed, 14 insertions(+), 1 deletion(-) rename packages/angular/cli/src/{command-builder => }/utilities/prettier.ts (100%) diff --git a/packages/angular/cli/src/command-builder/schematics-command-module.ts b/packages/angular/cli/src/command-builder/schematics-command-module.ts index 5a8a8e7b3f3b..c74b44101e93 100644 --- a/packages/angular/cli/src/command-builder/schematics-command-module.ts +++ b/packages/angular/cli/src/command-builder/schematics-command-module.ts @@ -20,6 +20,7 @@ import { EventCustomDimension } from '../analytics/analytics-parameters'; import { getProjectByCwd, getSchematicDefaults } from '../utilities/config'; import { assertIsError } from '../utilities/error'; import { memoize } from '../utilities/memoize'; +import { formatFiles } from '../utilities/prettier'; import { isTTY } from '../utilities/tty'; import { CommandModule, @@ -29,7 +30,6 @@ import { OtherOptions, } from './command-module'; import { Option, parseJsonSchemaToOptions } from './utilities/json-schema'; -import { formatFiles } from './utilities/prettier'; import { SchematicEngineHost } from './utilities/schematic-engine-host'; import { subscribeToWorkflow } from './utilities/schematic-workflow'; diff --git a/packages/angular/cli/src/commands/update/utilities/migration.ts b/packages/angular/cli/src/commands/update/utilities/migration.ts index 3b53694d3859..f52726de5523 100644 --- a/packages/angular/cli/src/commands/update/utilities/migration.ts +++ b/packages/angular/cli/src/commands/update/utilities/migration.ts @@ -19,6 +19,7 @@ import { subscribeToWorkflow } from '../../../command-builder/utilities/schemati import { colors, figures } from '../../../utilities/color'; import { assertIsError } from '../../../utilities/error'; import { writeErrorToLogFile } from '../../../utilities/log-file'; +import { formatFiles } from '../../../utilities/prettier'; import { askChoices } from '../../../utilities/prompt'; import { isTTY } from '../../../utilities/tty'; import { coerceVersionNumber } from './cli-version'; @@ -230,6 +231,18 @@ async function executePackageMigrations( break; } + if (files.size) { + try { + await formatFiles(process.cwd(), files); + } catch (error) { + assertIsError(error); + + logger.warn( + `WARNING: Formatting of files failed with the following error: ${error.message}`, + ); + } + } + logger.info(` Migration completed (${modifiedFilesText}).`); // Commit migration diff --git a/packages/angular/cli/src/command-builder/utilities/prettier.ts b/packages/angular/cli/src/utilities/prettier.ts similarity index 100% rename from packages/angular/cli/src/command-builder/utilities/prettier.ts rename to packages/angular/cli/src/utilities/prettier.ts From 126d0d39f0040d728729747d24c43f4761878816 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 27 Jan 2026 12:55:00 -0500 Subject: [PATCH 2154/2162] refactor(@angular/build): extract sourcemap adjustment logic in Vitest plugin This commit refactors the sourcemap source adjustment logic within the Vitest plugin into a standalone helper function, `adjustSourcemapSources`. This improves the readability of the `load` hook and isolates the logic for verifying and updating sourcemap paths. Additionally, the `map` parameter is now typed using `ExistingRawSourceMap` from `rolldown` instead of `any`. --- .../unit-test/runners/vitest/plugins.ts | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 6e621ecc588b..afe4589134e5 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -11,6 +11,7 @@ import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; import { platform } from 'node:os'; import path from 'node:path'; +import type { ExistingRawSourceMap } from 'rolldown'; import type { BrowserConfigOptions, InlineConfig, @@ -286,26 +287,9 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins const sourceMapFile = buildResultFiles.get(sourceMapPath); const sourceMapText = sourceMapFile ? await loadResultFile(sourceMapFile) : undefined; - // Vitest will include files in the coverage report if the sourcemap contains no sources. - // For builder-internal generated code chunks, which are typically helper functions, - // a virtual source is added to the sourcemap to prevent them from being incorrectly - // included in the final coverage report. const map = sourceMapText ? JSON.parse(sourceMapText) : undefined; if (map) { - if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) { - map.sources = ['virtual:builder']; - } else if (!vitestConfig.coverage.enabled && Array.isArray(map.sources)) { - map.sources = (map.sources as string[]).map((source) => { - if (source.startsWith('angular:')) { - return source; - } - - // source is relative to the workspace root because the output file is at the root of the output. - const absoluteSource = path.join(workspaceRoot, source); - - return toPosixPath(path.relative(path.dirname(id), absoluteSource)); - }); - } + adjustSourcemapSources(map, !vitestConfig.coverage.enabled, workspaceRoot, id); } return { @@ -338,6 +322,40 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins ]; } +/** + * Adjusts the sources field in a sourcemap to ensure correct source mapping and coverage reporting. + * + * @param map The raw sourcemap to adjust. + * @param rebaseSources Whether to rebase the source paths relative to the test file. + * @param workspaceRoot The root directory of the workspace. + * @param id The ID (path) of the file being loaded. + */ +function adjustSourcemapSources( + map: ExistingRawSourceMap, + rebaseSources: boolean, + workspaceRoot: string, + id: string, +): void { + if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) { + // Vitest will include files in the coverage report if the sourcemap contains no sources. + // For builder-internal generated code chunks, which are typically helper functions, + // a virtual source is added to the sourcemap to prevent them from being incorrectly + // included in the final coverage report. + map.sources = ['virtual:builder']; + } else if (rebaseSources && map.sources) { + map.sources = map.sources.map((source) => { + if (!source || source.startsWith('angular:')) { + return source; + } + + // source is relative to the workspace root because the output file is at the root of the output. + const absoluteSource = path.join(workspaceRoot, source); + + return toPosixPath(path.relative(path.dirname(id), absoluteSource)); + }); + } +} + function createSourcemapSupportPlugin(): VitestPlugins[0] { return { name: 'angular:source-map-support', From 2fa21d7c533c2175b3fb5f40c475fd67cc3d1032 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 27 Jan 2026 15:21:25 -0500 Subject: [PATCH 2155/2162] refactor(@angular/build): optimize Vitest plugin file loading and improve safety This commit improves the performance of the Vitest plugin by reusing a single `TextDecoder` instance for decoding memory files, avoiding repeated instantiation. It also adds safety checks when accessing the resolved Vitest configuration to prevent potential errors if the configuration is not yet fully initialized. --- .../build/src/builders/unit-test/runners/vitest/plugins.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index afe4589134e5..390c626afda9 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -179,9 +179,10 @@ export async function createVitestConfigPlugin( }; } +const textDecoder = new TextDecoder('utf-8'); async function loadResultFile(file: ResultFile): Promise { if (file.origin === 'memory') { - return new TextDecoder('utf-8').decode(file.contents); + return textDecoder.decode(file.contents); } return readFile(file.inputPath, 'utf-8'); @@ -266,7 +267,7 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins if (entryPoint) { outputPath = entryPoint + '.js'; - if (vitestConfig.coverage.enabled) { + if (vitestConfig?.coverage?.enabled) { // To support coverage exclusion of the actual test file, the virtual // test entry point only references the built and bundled intermediate file. // If vitest supported an "excludeOnlyAfterRemap" option, this could be removed completely. @@ -289,7 +290,7 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins const map = sourceMapText ? JSON.parse(sourceMapText) : undefined; if (map) { - adjustSourcemapSources(map, !vitestConfig.coverage.enabled, workspaceRoot, id); + adjustSourcemapSources(map, !vitestConfig?.coverage?.enabled, workspaceRoot, id); } return { From 42fa5884e189f6e5c5cfc631350f839839c54f7b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 27 Jan 2026 16:24:49 -0500 Subject: [PATCH 2156/2162] refactor(@angular/build): remove redundant path resolution logic in Vitest plugin This commit removes a redundant code block in the `resolveId` hook of the Vitest plugin. The logic for resolving relative imports is fully covered by the subsequent generic path resolution strategy, reducing code duplication and complexity. --- .../builders/unit-test/runners/vitest/plugins.ts | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index 390c626afda9..22c5993eabe2 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -217,20 +217,6 @@ export function createVitestPlugins(pluginOptions: PluginOptions): VitestPlugins } } - if (importer && (id[0] === '.' || id[0] === '/')) { - let fullPath; - if (testFileToEntryPoint.has(importer)) { - fullPath = toPosixPath(path.join(workspaceRoot, id)); - } else { - fullPath = toPosixPath(path.join(path.dirname(importer), id)); - } - - const relativePath = path.relative(workspaceRoot, fullPath); - if (buildResultFiles.has(toPosixPath(relativePath))) { - return fullPath; - } - } - // Determine the base directory for resolution. let baseDir: string; if (importer) { From 40a4db92a6b113def5a53977ffe62f6846721ad3 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 29 Jan 2026 06:16:16 +0000 Subject: [PATCH 2157/2162] build: update dependency karma-jasmine-html-reporter to ~2.2.0 See associated pull request for more information. --- .../schematics/angular/utility/latest-versions/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/schematics/angular/utility/latest-versions/package.json b/packages/schematics/angular/utility/latest-versions/package.json index 4ff5c79f5685..0b94c58c487b 100644 --- a/packages/schematics/angular/utility/latest-versions/package.json +++ b/packages/schematics/angular/utility/latest-versions/package.json @@ -12,7 +12,7 @@ "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", - "karma-jasmine-html-reporter": "~2.1.0", + "karma-jasmine-html-reporter": "~2.2.0", "karma-jasmine": "~5.1.0", "karma": "~6.4.0", "jsdom": "^27.1.0", From c78de05a398aad0e7dae59029fab8d2e4c43cb9c Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 29 Jan 2026 06:16:02 +0000 Subject: [PATCH 2158/2162] build: update all non-major dependencies See associated pull request for more information. --- package.json | 12 +- packages/angular/build/package.json | 4 +- .../angular_devkit/build_angular/package.json | 4 +- pnpm-lock.yaml | 570 +++++++++++++----- 4 files changed, 438 insertions(+), 152 deletions(-) diff --git a/package.json b/package.json index 47fbd3a8f435..9185bc619486 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", "@types/yarnpkg__lockfile": "^1.1.5", - "@typescript-eslint/eslint-plugin": "8.53.1", - "@typescript-eslint/parser": "8.53.1", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "ajv": "8.17.1", "buffer": "6.0.3", "esbuild": "0.27.2", @@ -101,7 +101,7 @@ "eslint-plugin-import": "2.32.0", "express": "5.2.1", "fast-glob": "3.3.3", - "globals": "17.1.0", + "globals": "17.2.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "3.0.5", "husky": "9.1.7", @@ -113,7 +113,7 @@ "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", + "karma-jasmine-html-reporter": "~2.2.0", "karma-source-map-support": "1.4.0", "lodash": "^4.17.21", "magic-string": "0.30.21", @@ -121,7 +121,7 @@ "protractor": "~7.0.0", "puppeteer": "18.2.1", "quicktype-core": "23.2.6", - "rollup": "4.56.0", + "rollup": "4.57.0", "rollup-license-plugin": "~3.1.0", "rollup-plugin-dts": "6.3.0", "rollup-plugin-sourcemaps2": "0.5.4", @@ -130,7 +130,7 @@ "ts-node": "^10.9.1", "tslib": "2.8.1", "typescript": "5.9.3", - "undici": "7.19.1", + "undici": "7.19.2", "unenv": "^1.10.0", "verdaccio": "6.2.4", "verdaccio-auth-memory": "^10.0.0", diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json index 006beb61e70b..c7ce5b4c2fca 100644 --- a/packages/angular/build/package.json +++ b/packages/angular/build/package.json @@ -42,12 +42,12 @@ "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.19.1", + "undici": "7.19.2", "vite": "7.3.1", "watchpack": "2.5.1" }, "optionalDependencies": { - "lmdb": "3.5.0" + "lmdb": "3.5.1" }, "devDependencies": { "@angular-devkit/core": "workspace:*", diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json index 838c3890bf96..3a7069d6e62e 100644 --- a/packages/angular_devkit/build_angular/package.json +++ b/packages/angular_devkit/build_angular/package.json @@ -27,7 +27,7 @@ "babel-loader": "10.0.0", "browserslist": "^4.26.0", "copy-webpack-plugin": "13.0.1", - "css-loader": "7.1.2", + "css-loader": "7.1.3", "esbuild-wasm": "0.27.2", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", @@ -69,7 +69,7 @@ "@web/test-runner": "0.20.2", "browser-sync": "3.0.4", "ng-packagr": "21.2.0-next.0", - "undici": "7.19.1" + "undici": "7.19.2" }, "peerDependencies": { "@angular/core": "0.0.0-ANGULAR-FW-PEER-DEP", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04a61176ad59..5a69f0c1b662 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,16 +81,16 @@ importers: version: 9.39.2 '@rollup/plugin-alias': specifier: ^6.0.0 - version: 6.0.0(rollup@4.56.0) + version: 6.0.0(rollup@4.57.0) '@rollup/plugin-commonjs': specifier: ^29.0.0 - version: 29.0.0(rollup@4.56.0) + version: 29.0.0(rollup@4.57.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.56.0) + version: 6.1.0(rollup@4.57.0) '@rollup/plugin-node-resolve': specifier: 16.0.3 - version: 16.0.3(rollup@4.56.0) + version: 16.0.3(rollup@4.57.0) '@stylistic/eslint-plugin': specifier: ^5.0.0 version: 5.7.1(eslint@9.39.2(jiti@2.6.1)) @@ -161,11 +161,11 @@ importers: specifier: ^1.1.5 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.53.1 - version: 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.53.1 - version: 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) ajv: specifier: 8.17.1 version: 8.17.1 @@ -189,7 +189,7 @@ importers: version: 3.1.1(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) express: specifier: 5.2.1 version: 5.2.1 @@ -197,8 +197,8 @@ importers: specifier: 3.3.3 version: 3.3.3 globals: - specifier: 17.1.0 - version: 17.1.0 + specifier: 17.2.0 + version: 17.2.0 http-proxy: specifier: ^1.18.1 version: 1.18.1(debug@4.4.3) @@ -233,8 +233,8 @@ importers: specifier: ~5.1.0 version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)) karma-jasmine-html-reporter: - specifier: ~2.1.0 - version: 2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)) + specifier: ~2.2.0 + version: 2.2.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -257,17 +257,17 @@ importers: specifier: 23.2.6 version: 23.2.6(encoding@0.1.13) rollup: - specifier: 4.56.0 - version: 4.56.0 + specifier: 4.57.0 + version: 4.57.0 rollup-license-plugin: specifier: ~3.1.0 version: 3.1.0 rollup-plugin-dts: specifier: 6.3.0 - version: 6.3.0(rollup@4.56.0)(typescript@5.9.3) + version: 6.3.0(rollup@4.57.0)(typescript@5.9.3) rollup-plugin-sourcemaps2: specifier: 0.5.4 - version: 0.5.4(@types/node@22.19.7)(rollup@4.56.0) + version: 0.5.4(@types/node@22.19.7)(rollup@4.57.0) semver: specifier: 7.7.3 version: 7.7.3 @@ -284,8 +284,8 @@ importers: specifier: 5.9.3 version: 5.9.3 undici: - specifier: 7.19.1 - version: 7.19.1 + specifier: 7.19.2 + version: 7.19.2 unenv: specifier: ^1.10.0 version: 1.10.0 @@ -404,8 +404,8 @@ importers: specifier: 0.2.15 version: 0.2.15 undici: - specifier: 7.19.1 - version: 7.19.1 + specifier: 7.19.2 + version: 7.19.2 vite: specifier: 7.3.1 version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) @@ -439,8 +439,8 @@ importers: version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.9)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(less@4.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: lmdb: - specifier: 3.5.0 - version: 3.5.0 + specifier: 3.5.1 + version: 3.5.1 packages/angular/cli: dependencies: @@ -626,8 +626,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.104.1(esbuild@0.27.2)) css-loader: - specifier: 7.1.2 - version: 7.1.2(webpack@5.104.1(esbuild@0.27.2)) + specifier: 7.1.3 + version: 7.1.3(webpack@5.104.1(esbuild@0.27.2)) esbuild-wasm: specifier: 0.27.2 version: 0.27.2 @@ -738,8 +738,8 @@ importers: specifier: 21.2.0-next.0 version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: - specifier: 7.19.1 - version: 7.19.1 + specifier: 7.19.2 + version: 7.19.2 optionalDependencies: esbuild: specifier: 0.27.2 @@ -2619,33 +2619,38 @@ packages: '@inquirer/prompts': '>= 3 < 8' listr2: 9.0.5 - '@lmdb/lmdb-darwin-arm64@3.5.0': - resolution: {integrity: sha512-NOgnhUSpkcj/FRKp1WVPub1zsZw/qi//KG/IvYMbtFtzU2gvrTXVvXuv53iZNNqUkmau5J2nkEL4qllTVCC/Aw==} + '@lmdb/lmdb-darwin-arm64@3.5.1': + resolution: {integrity: sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.5.0': - resolution: {integrity: sha512-e4zPXHb7TVv6c3rI0CHPAbq3Nk5gXwjtUaViejUtfDJ7DPR/HXdZqrwc/Vy2QanWlEHfkEleDTiIt5tV7nI29g==} + '@lmdb/lmdb-darwin-x64@3.5.1': + resolution: {integrity: sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.5.0': - resolution: {integrity: sha512-Og9rk5dg5OLamLUCbAGmmLD5Q1IDd0Hj0j9UdMHQdnRpc8aPcDh+dOUwMdQDnkdidO8slfFKEWxdnsuX6SXaNQ==} + '@lmdb/lmdb-linux-arm64@3.5.1': + resolution: {integrity: sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.5.0': - resolution: {integrity: sha512-eR/CerA7Zj+l0UC4x0+iaanoCrzIPyL7eX+id6X8i20s94Gtwj2Q4ongnIJhGNrLGIT0zYtmcqdI6E9eVc7PFw==} + '@lmdb/lmdb-linux-arm@3.5.1': + resolution: {integrity: sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.5.0': - resolution: {integrity: sha512-8O3Slm5aDyvJPTBGQBC/CG6lSc0KjkW8wuJnwV1FMMN9A/wtLB7lFL7JjvXyxv4QVpCB1vjRGHffT/c0THUCDg==} + '@lmdb/lmdb-linux-x64@3.5.1': + resolution: {integrity: sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-x64@3.5.0': - resolution: {integrity: sha512-T0npY4EEQLDkUOCEKZbT9cndbffc2PlINE5brUF9oG6qMCiHRxv0rN7VLPapvwHk5wGHOG6P/NwKEJDJpM8pIw==} + '@lmdb/lmdb-win32-arm64@3.5.1': + resolution: {integrity: sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==} + cpu: [arm64] + os: [win32] + + '@lmdb/lmdb-win32-x64@3.5.1': + resolution: {integrity: sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==} cpu: [x64] os: [win32] @@ -3309,139 +3314,277 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.57.0': + resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.56.0': resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.57.0': + resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.56.0': resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.57.0': + resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.56.0': resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.57.0': + resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.56.0': resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.57.0': + resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.56.0': resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.57.0': + resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm-musleabihf@4.56.0': resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm-musleabihf@4.57.0': + resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==} + cpu: [arm] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-arm64-gnu@4.56.0': resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-arm64-gnu@4.57.0': + resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-arm64-musl@4.56.0': resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] libc: [musl] + '@rollup/rollup-linux-arm64-musl@4.57.0': + resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-loong64-gnu@4.56.0': resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-loong64-gnu@4.57.0': + resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-loong64-musl@4.56.0': resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] libc: [musl] + '@rollup/rollup-linux-loong64-musl@4.57.0': + resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-ppc64-gnu@4.56.0': resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-ppc64-gnu@4.57.0': + resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-ppc64-musl@4.56.0': resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] libc: [musl] + '@rollup/rollup-linux-ppc64-musl@4.57.0': + resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-riscv64-gnu@4.56.0': resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-riscv64-gnu@4.57.0': + resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-riscv64-musl@4.56.0': resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] libc: [musl] + '@rollup/rollup-linux-riscv64-musl@4.57.0': + resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@rollup/rollup-linux-s390x-gnu@4.56.0': resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] libc: [glibc] + '@rollup/rollup-linux-s390x-gnu@4.57.0': + resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.56.0': resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] libc: [glibc] + '@rollup/rollup-linux-x64-gnu@4.57.0': + resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rollup/rollup-linux-x64-musl@4.56.0': resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] libc: [musl] + '@rollup/rollup-linux-x64-musl@4.57.0': + resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@rollup/rollup-openbsd-x64@4.56.0': resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] + '@rollup/rollup-openbsd-x64@4.57.0': + resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==} + cpu: [x64] + os: [openbsd] + '@rollup/rollup-openharmony-arm64@4.56.0': resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.57.0': + resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.56.0': resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.57.0': + resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.56.0': resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.57.0': + resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.56.0': resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.57.0': + resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.56.0': resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.57.0': + resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==} + cpu: [x64] + os: [win32] + '@rollup/wasm-node@4.56.0': resolution: {integrity: sha512-ecaoyItGmpj4hnabpa2D+oI6ME7t7hrqosQ2SA+qBGihoL0DuuoaXIfY8Oa1o7lWGtPpRZmt9EYe7oyivypsJg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3803,39 +3946,39 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.53.1': - resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.1 + '@typescript-eslint/parser': ^8.54.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.53.1': - resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.1': - resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.53.1': - resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.53.1': - resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.53.1': - resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3845,21 +3988,25 @@ packages: resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.53.1': - resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.53.1': - resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.53.1': - resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.28': @@ -4910,8 +5057,8 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - css-loader@7.1.2: - resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} + css-loader@7.1.3: + resolution: {integrity: sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -5854,8 +6001,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@17.1.0: - resolution: {integrity: sha512-8HoIcWI5fCvG5NADj4bDav+er9B9JMj2vyL2pI8D0eismKyUvPLTSs+Ln3wqhwcp306i73iyVnEKx3F6T47TGw==} + globals@17.2.0: + resolution: {integrity: sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg==} engines: {node: '>=18'} globalthis@1.0.4: @@ -6642,10 +6789,10 @@ packages: resolution: {integrity: sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==} engines: {node: '>=10.0.0'} - karma-jasmine-html-reporter@2.1.0: - resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} + karma-jasmine-html-reporter@2.2.0: + resolution: {integrity: sha512-J0laEC43Oy2RdR5V5R3bqmdo7yRIYySq6XHKbA+e5iSAgLjhR1oICLGeSREPlJXpeyNcdJf3J17YcdhD0mRssQ==} peerDependencies: - jasmine-core: ^4.0.0 || ^5.0.0 + jasmine-core: ^4.0.0 || ^5.0.0 || ^6.0.0 karma: ^6.0.0 karma-jasmine: ^5.0.0 @@ -6746,8 +6893,8 @@ packages: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - lmdb@3.5.0: - resolution: {integrity: sha512-X2+3CucH5JIqYznreDOa9AAFPm2ll5L+N54inqaiFUwl8aaBW1jSuokZ6adBLfGnKLdCQVtPHHKUtpaLURT0kA==} + lmdb@3.5.1: + resolution: {integrity: sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==} hasBin: true loader-runner@4.3.1: @@ -7990,6 +8137,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.57.0: + resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==} + 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'} @@ -8768,8 +8920,8 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - undici@7.19.1: - resolution: {integrity: sha512-Gpq0iNm5M6cQWlyHQv9MV+uOj1jWk7LpkoE5vSp/7zjb4zMdAcUD+VL5y0nH4p9EbUklq00eVIIX/XcDHzu5xg==} + undici@7.19.2: + resolution: {integrity: sha512-4VQSpGEGsWzk0VYxyB/wVX/Q7qf9t5znLRgs0dzszr9w9Fej/8RVNQ+S20vdXSAyra/bJ7ZQfGv6ZMj7UEbzSg==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -11395,22 +11547,25 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.5.0': + '@lmdb/lmdb-darwin-arm64@3.5.1': optional: true - '@lmdb/lmdb-darwin-x64@3.5.0': + '@lmdb/lmdb-darwin-x64@3.5.1': optional: true - '@lmdb/lmdb-linux-arm64@3.5.0': + '@lmdb/lmdb-linux-arm64@3.5.1': optional: true - '@lmdb/lmdb-linux-arm@3.5.0': + '@lmdb/lmdb-linux-arm@3.5.1': optional: true - '@lmdb/lmdb-linux-x64@3.5.0': + '@lmdb/lmdb-linux-x64@3.5.1': optional: true - '@lmdb/lmdb-win32-x64@3.5.0': + '@lmdb/lmdb-win32-arm64@3.5.1': + optional: true + + '@lmdb/lmdb-win32-x64@3.5.1': optional: true '@modelcontextprotocol/sdk@1.25.3(zod@4.3.6)': @@ -12005,13 +12160,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.1': {} - '@rollup/plugin-alias@6.0.0(rollup@4.56.0)': + '@rollup/plugin-alias@6.0.0(rollup@4.57.0)': optionalDependencies: - rollup: 4.56.0 + rollup: 4.57.0 - '@rollup/plugin-commonjs@29.0.0(rollup@4.56.0)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.57.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.56.0) + '@rollup/pluginutils': 5.3.0(rollup@4.57.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -12019,7 +12174,7 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.56.0 + rollup: 4.57.0 '@rollup/plugin-json@6.1.0(rollup@4.56.0)': dependencies: @@ -12027,33 +12182,39 @@ snapshots: optionalDependencies: rollup: 4.56.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.56.0)': + '@rollup/plugin-json@6.1.0(rollup@4.57.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.56.0) + '@rollup/pluginutils': 5.3.0(rollup@4.57.0) + optionalDependencies: + rollup: 4.57.0 + + '@rollup/plugin-node-resolve@15.3.1(rollup@4.57.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.57.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.56.0 + rollup: 4.57.0 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.56.0)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.57.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.56.0) + '@rollup/pluginutils': 5.3.0(rollup@4.57.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.56.0 + rollup: 4.57.0 - '@rollup/pluginutils@5.2.0(rollup@4.56.0)': + '@rollup/pluginutils@5.2.0(rollup@4.57.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.56.0 + rollup: 4.57.0 '@rollup/pluginutils@5.3.0(rollup@4.56.0)': dependencies: @@ -12063,81 +12224,164 @@ snapshots: optionalDependencies: rollup: 4.56.0 + '@rollup/pluginutils@5.3.0(rollup@4.57.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.57.0 + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true + '@rollup/rollup-android-arm-eabi@4.57.0': + optional: true + '@rollup/rollup-android-arm64@4.56.0': optional: true + '@rollup/rollup-android-arm64@4.57.0': + optional: true + '@rollup/rollup-darwin-arm64@4.56.0': optional: true + '@rollup/rollup-darwin-arm64@4.57.0': + optional: true + '@rollup/rollup-darwin-x64@4.56.0': optional: true + '@rollup/rollup-darwin-x64@4.57.0': + optional: true + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true + '@rollup/rollup-freebsd-arm64@4.57.0': + optional: true + '@rollup/rollup-freebsd-x64@4.56.0': optional: true + '@rollup/rollup-freebsd-x64@4.57.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.57.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.57.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true + '@rollup/rollup-linux-arm64-gnu@4.57.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true + '@rollup/rollup-linux-arm64-musl@4.57.0': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true + '@rollup/rollup-linux-loong64-gnu@4.57.0': + optional: true + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true + '@rollup/rollup-linux-loong64-musl@4.57.0': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.57.0': + optional: true + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true + '@rollup/rollup-linux-ppc64-musl@4.57.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.57.0': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true + '@rollup/rollup-linux-riscv64-musl@4.57.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true + '@rollup/rollup-linux-s390x-gnu@4.57.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true + '@rollup/rollup-linux-x64-gnu@4.57.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true + '@rollup/rollup-linux-x64-musl@4.57.0': + optional: true + '@rollup/rollup-openbsd-x64@4.56.0': optional: true + '@rollup/rollup-openbsd-x64@4.57.0': + optional: true + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true + '@rollup/rollup-openharmony-arm64@4.57.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true + '@rollup/rollup-win32-arm64-msvc@4.57.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true + '@rollup/rollup-win32-ia32-msvc@4.57.0': + optional: true + '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true + '@rollup/rollup-win32-x64-gnu@4.57.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.57.0': + optional: true + '@rollup/wasm-node@4.56.0': dependencies: '@types/estree': 1.0.8 @@ -12577,14 +12821,14 @@ snapshots: '@types/node': 22.19.7 optional: true - '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -12593,41 +12837,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.53.1': + '@typescript-eslint/scope-manager@8.54.0': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@10.2.2) eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -12637,12 +12881,14 @@ snapshots: '@typescript-eslint/types@8.53.1': {} - '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': + '@typescript-eslint/types@8.54.0': {} + + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3(supports-color@10.2.2) minimatch: 9.0.5 semver: 7.7.3 @@ -12652,20 +12898,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.53.1': + '@typescript-eslint/visitor-keys@8.54.0': dependencies: - '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 '@verdaccio/auth@8.0.0-next-8.28': @@ -12915,11 +13161,11 @@ snapshots: '@web/dev-server-rollup@0.6.4(bufferutil@4.1.0)': dependencies: - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.56.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.57.0) '@web/dev-server-core': 0.7.5(bufferutil@4.1.0) nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.56.0 + rollup: 4.57.0 whatwg-url: 14.2.0 transitivePeerDependencies: - bufferutil @@ -14073,7 +14319,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.104.1(esbuild@0.27.2)): + css-loader@7.1.3(webpack@5.104.1(esbuild@0.27.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -14591,11 +14837,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14605,7 +14851,7 @@ snapshots: dependencies: eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -14616,7 +14862,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14628,7 +14874,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15266,7 +15512,7 @@ snapshots: globals@14.0.0: {} - globals@17.1.0: {} + globals@17.2.0: {} globalthis@1.0.4: dependencies: @@ -16128,7 +16374,7 @@ snapshots: transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.1.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)): + karma-jasmine-html-reporter@2.2.0(jasmine-core@5.13.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)))(karma@6.4.4(bufferutil@4.1.0)): dependencies: jasmine-core: 5.13.0 karma: 6.4.4(bufferutil@4.1.0) @@ -16299,7 +16545,7 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - lmdb@3.5.0: + lmdb@3.5.1: dependencies: '@harperfast/extended-iterable': 1.0.3 msgpackr: 1.11.8 @@ -16308,12 +16554,13 @@ snapshots: ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.5.0 - '@lmdb/lmdb-darwin-x64': 3.5.0 - '@lmdb/lmdb-linux-arm': 3.5.0 - '@lmdb/lmdb-linux-arm64': 3.5.0 - '@lmdb/lmdb-linux-x64': 3.5.0 - '@lmdb/lmdb-win32-x64': 3.5.0 + '@lmdb/lmdb-darwin-arm64': 3.5.1 + '@lmdb/lmdb-darwin-x64': 3.5.1 + '@lmdb/lmdb-linux-arm': 3.5.1 + '@lmdb/lmdb-linux-arm64': 3.5.1 + '@lmdb/lmdb-linux-x64': 3.5.1 + '@lmdb/lmdb-win32-arm64': 3.5.1 + '@lmdb/lmdb-win32-x64': 3.5.1 optional: true loader-runner@4.3.1: {} @@ -17688,10 +17935,18 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.28.6 - rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.56.0): + rollup-plugin-dts@6.3.0(rollup@4.57.0)(typescript@5.9.3): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.56.0) - rollup: 4.56.0 + magic-string: 0.30.21 + rollup: 4.57.0 + typescript: 5.9.3 + optionalDependencies: + '@babel/code-frame': 7.28.6 + + rollup-plugin-sourcemaps2@0.5.4(@types/node@22.19.7)(rollup@4.57.0): + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.57.0) + rollup: 4.57.0 optionalDependencies: '@types/node': 22.19.7 @@ -17726,6 +17981,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 + rollup@4.57.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.57.0 + '@rollup/rollup-android-arm64': 4.57.0 + '@rollup/rollup-darwin-arm64': 4.57.0 + '@rollup/rollup-darwin-x64': 4.57.0 + '@rollup/rollup-freebsd-arm64': 4.57.0 + '@rollup/rollup-freebsd-x64': 4.57.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.0 + '@rollup/rollup-linux-arm-musleabihf': 4.57.0 + '@rollup/rollup-linux-arm64-gnu': 4.57.0 + '@rollup/rollup-linux-arm64-musl': 4.57.0 + '@rollup/rollup-linux-loong64-gnu': 4.57.0 + '@rollup/rollup-linux-loong64-musl': 4.57.0 + '@rollup/rollup-linux-ppc64-gnu': 4.57.0 + '@rollup/rollup-linux-ppc64-musl': 4.57.0 + '@rollup/rollup-linux-riscv64-gnu': 4.57.0 + '@rollup/rollup-linux-riscv64-musl': 4.57.0 + '@rollup/rollup-linux-s390x-gnu': 4.57.0 + '@rollup/rollup-linux-x64-gnu': 4.57.0 + '@rollup/rollup-linux-x64-musl': 4.57.0 + '@rollup/rollup-openbsd-x64': 4.57.0 + '@rollup/rollup-openharmony-arm64': 4.57.0 + '@rollup/rollup-win32-arm64-msvc': 4.57.0 + '@rollup/rollup-win32-ia32-msvc': 4.57.0 + '@rollup/rollup-win32-x64-gnu': 4.57.0 + '@rollup/rollup-win32-x64-msvc': 4.57.0 + fsevents: 2.3.3 + router@2.2.0: dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -18660,7 +18946,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.19.1: {} + undici@7.19.2: {} unenv@1.10.0: dependencies: From ba44c3596924b6df0a556f8f27c745303ba91111 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 29 Jan 2026 06:15:30 +0000 Subject: [PATCH 2159/2162] build: update all github actions See associated pull request for more information. --- .github/workflows/assistant-to-the-branch-manager.yml | 2 +- .github/workflows/codeql.yml | 6 +++--- .github/workflows/dev-infra.yml | 4 ++-- .github/workflows/pr.yml | 2 +- .github/workflows/scorecard.yml | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index f263c15710e2..73c43bcd589b 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest if: github.event.repository.fork == false steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - uses: angular/dev-infra/github-actions/branch-manager@1d545550f0a93b2ffee3672587314d6f6b3dc7fd diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 636922f24244..722e4244f57a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,16 +19,16 @@ jobs: fail-fast: false steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 with: languages: javascript-typescript build-mode: none config-file: .github/codeql/config.yml - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 with: category: '/language:javascript-typescript' diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 88f32f5028fb..9a56ee043a1f 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,14 +12,14 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: angular/dev-infra/github-actions/pull-request-labeling@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: angular/dev-infra/github-actions/post-approval-changes@1d545550f0a93b2ffee3672587314d6f6b3dc7fd with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 96fdb82bb936..64ecc5ac91ac 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -20,7 +20,7 @@ jobs: outputs: snapshots: ${{ steps.filter.outputs.snapshots }} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 49b29854cf19..c3b04e7b92cc 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -25,7 +25,7 @@ jobs: steps: - name: 'Checkout code' - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false @@ -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@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10 + uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0 with: sarif_file: results.sarif From d4bc25c24c99640bf3633a71a5e9e9fcd6615843 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Thu, 29 Jan 2026 07:46:50 +0000 Subject: [PATCH 2160/2162] build: update cross-repo angular dependencies See associated pull request for more information. --- package.json | 22 +-- packages/angular/ssr/package.json | 12 +- packages/ngtools/webpack/package.json | 4 +- pnpm-lock.yaml | 254 +++++++++++++------------- tests/e2e/ng-snapshot/package.json | 32 ++-- 5 files changed, 162 insertions(+), 162 deletions(-) diff --git a/package.json b/package.json index 9185bc619486..38482f71f712 100644 --- a/package.json +++ b/package.json @@ -42,20 +42,20 @@ }, "homepage": "https://github.com/angular/angular-cli", "devDependencies": { - "@angular/animations": "21.2.0-next.0", + "@angular/animations": "21.2.0-next.1", "@angular/cdk": "21.2.0-next.1", - "@angular/common": "21.2.0-next.0", - "@angular/compiler": "21.2.0-next.0", - "@angular/compiler-cli": "21.2.0-next.0", - "@angular/core": "21.2.0-next.0", - "@angular/forms": "21.2.0-next.0", - "@angular/localize": "21.2.0-next.0", + "@angular/common": "21.2.0-next.1", + "@angular/compiler": "21.2.0-next.1", + "@angular/compiler-cli": "21.2.0-next.1", + "@angular/core": "21.2.0-next.1", + "@angular/forms": "21.2.0-next.1", + "@angular/localize": "21.2.0-next.1", "@angular/material": "21.2.0-next.1", "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#15a2e18c3d5403d2b2355c5e42c67effc55f9c9f", - "@angular/platform-browser": "21.2.0-next.0", - "@angular/platform-server": "21.2.0-next.0", - "@angular/router": "21.2.0-next.0", - "@angular/service-worker": "21.2.0-next.0", + "@angular/platform-browser": "21.2.0-next.1", + "@angular/platform-server": "21.2.0-next.1", + "@angular/router": "21.2.0-next.1", + "@angular/service-worker": "21.2.0-next.1", "@babel/core": "7.28.6", "@bazel/bazelisk": "1.28.1", "@bazel/buildifier": "8.2.1", diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json index 3a1d2c7acfa8..b0f9be02150a 100644 --- a/packages/angular/ssr/package.json +++ b/packages/angular/ssr/package.json @@ -29,12 +29,12 @@ }, "devDependencies": { "@angular-devkit/schematics": "workspace:*", - "@angular/common": "21.2.0-next.0", - "@angular/compiler": "21.2.0-next.0", - "@angular/core": "21.2.0-next.0", - "@angular/platform-browser": "21.2.0-next.0", - "@angular/platform-server": "21.2.0-next.0", - "@angular/router": "21.2.0-next.0", + "@angular/common": "21.2.0-next.1", + "@angular/compiler": "21.2.0-next.1", + "@angular/core": "21.2.0-next.1", + "@angular/platform-browser": "21.2.0-next.1", + "@angular/platform-server": "21.2.0-next.1", + "@angular/router": "21.2.0-next.1", "@schematics/angular": "workspace:*", "beasties": "0.4.1" }, diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json index 4bbbc0d2eb80..ecf535b9a1bf 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": "21.2.0-next.0", - "@angular/compiler-cli": "21.2.0-next.0", + "@angular/compiler": "21.2.0-next.1", + "@angular/compiler-cli": "21.2.0-next.1", "typescript": "5.9.3", "webpack": "5.104.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a69f0c1b662..6fd53b45c7dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,47 +20,47 @@ importers: built: true devDependencies: '@angular/animations': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/cdk': specifier: 21.2.0-next.1 - version: 21.2.0-next.1(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + version: 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0 + specifier: 21.2.0-next.1 + version: 21.2.0-next.1 '@angular/compiler-cli': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3) '@angular/core': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/localize': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(@angular/compiler@21.2.0-next.0) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/compiler-cli@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3))(@angular/compiler@21.2.0-next.1) '@angular/material': specifier: 21.2.0-next.1 - version: 21.2.0-next.1(543b4cd5add643034223e4134967d1ab) + version: 21.2.0-next.1(d363ea0c032248a351f6672d2b982900) '@angular/ng-dev': specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#15a2e18c3d5403d2b2355c5e42c67effc55f9c9f version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/15a2e18c3d5403d2b2355c5e42c67effc55f9c9f(@modelcontextprotocol/sdk@1.25.3(zod@4.3.6)) '@angular/platform-browser': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.0)(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.1)(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/service-worker': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@babel/core': specifier: 7.28.6 version: 7.28.6 @@ -427,7 +427,7 @@ importers: version: 4.4.2 ng-packagr: specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -521,23 +521,23 @@ importers: specifier: workspace:* version: link:../../angular_devkit/schematics '@angular/common': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0 + specifier: 21.2.0-next.1 + version: 21.2.0-next.1 '@angular/core': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/platform-browser': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-server': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.0)(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.1)(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/router': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@schematics/angular': specifier: workspace:* version: link:../../schematics/angular @@ -736,7 +736,7 @@ importers: version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) ng-packagr: specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.2.0-next.0(@angular/compiler-cli@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) undici: specifier: 7.19.2 version: 7.19.2 @@ -828,11 +828,11 @@ importers: specifier: workspace:0.0.0-PLACEHOLDER version: link:../../angular_devkit/core '@angular/compiler': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0 + specifier: 21.2.0-next.1 + version: 21.2.0-next.1 '@angular/compiler-cli': - specifier: 21.2.0-next.0 - version: 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) + specifier: 21.2.0-next.1 + version: 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 @@ -944,11 +944,11 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular/animations@21.2.0-next.0': - resolution: {integrity: sha512-vxjU8S2ZsVsuBTxN8AD5PcusiKW9KQRKQxlvGW9cryd+Tpwy0VO3Zn5n+TyuAwaV9PjgP5ysowPRnQekdGikiw==} + '@angular/animations@21.2.0-next.1': + resolution: {integrity: sha512-hqkSvcdx0YnmgJI+0ZAXDY18K51/u3XyDSqt3W/4F8sWJiTIQ8SmmawtW6sK6CifyG3R5PU1z5mkMBtVSm9fnA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.2.0-next.0 + '@angular/core': 21.2.0-next.1 '@angular/cdk@21.2.0-next.1': resolution: {integrity: sha512-vP5sta8kEDA1rbFCHxi1q4S+gfQdh9rsw+zPnmmP1Cttm3axW8WqEVi+46zul2ATGDERdvMSxteY2v+S2rkILw==} @@ -958,33 +958,33 @@ packages: '@angular/platform-browser': ^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/common@21.2.0-next.0': - resolution: {integrity: sha512-sE82GeNk0cq1s3IDCoJtQDeBbfDtW6Ulu9QrYW+gd01J+2LZshGsMHSsjd6pEL/0CUmYn5SeXbc3aWPew4Kzdw==} + '@angular/common@21.2.0-next.1': + resolution: {integrity: sha512-MleR64CMSdb/sJF447b3iGguKP7r4I/y5WSzmObS4B/LhlQrmlLGhRjAz/5L7ewNTbebdIHGOkrsBmSHPKlOyQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.2.0-next.0 + '@angular/core': 21.2.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.2.0-next.0': - resolution: {integrity: sha512-B0DhnVWKDqzmfZvqCyqm06Ckyi0zJGDmS3paZGRCj9MmwaWx6wnIbXRvZjIZjq0gq03Y9Llx7a7WLnaaT/stPQ==} + '@angular/compiler-cli@21.2.0-next.1': + resolution: {integrity: sha512-qeMZbY29en+mwWZU7Wt7YKcZ50Ai1hAFwb9OqjsqmgVuW+aN4ZAzhF+LLBOC6yCjmMgswlAMR9xuM/xH/JZTZQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.2.0-next.0 + '@angular/compiler': 21.2.0-next.1 typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.2.0-next.0': - resolution: {integrity: sha512-iuGt0ffnFI3ucvMLM/Y/6zLMG5140j/IUcw6VMLXeMQhS7WH8w6gMxQ6jyH6ocoCijVRSysrKSBmH++D4nkoSg==} + '@angular/compiler@21.2.0-next.1': + resolution: {integrity: sha512-pPwV0y3+kNGo/uHdOk7JwGPdSLzUUrMOU3j1adBylZhkeWul9gJA++wsskdVS/udCmRlLzJX+2PIr6rb6y63lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.2.0-next.0': - resolution: {integrity: sha512-+WFGCHR5dS591KPqXeCYEYH3NQDeBB+3+ienBueuxchAEYkxDc7mfRnUYR0WJ/DS60ZECGkNwe0L0x5NW2tAag==} + '@angular/core@21.2.0-next.1': + resolution: {integrity: sha512-8n1SOT23ZcuAOMy81xWF+a1wO//8+nkA0Vu1grEx/jj7ToC8zSq6mg/s9mFixP8GRPzpHtwOqNymbLncanG2Iw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.2.0-next.0 + '@angular/compiler': 21.2.0-next.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -993,22 +993,22 @@ packages: zone.js: optional: true - '@angular/forms@21.2.0-next.0': - resolution: {integrity: sha512-QwHbmcbi8rLsaDdbtfw8WDZDHEKqT/wAkGD+7ddf/7dNrUzlStWNFqovUtQZC8vWKG24QSQBcUUykdImLjWK0Q==} + '@angular/forms@21.2.0-next.1': + resolution: {integrity: sha512-kd1GLY1DCrutXtmYX8Z5ZjQtfv9e4imNCpHcfDZVfO4jI75xbD2+vZHB7XS8sRf/4RNHAs9ZcF0Z+Blzp71FaQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.0-next.0 - '@angular/core': 21.2.0-next.0 - '@angular/platform-browser': 21.2.0-next.0 + '@angular/common': 21.2.0-next.1 + '@angular/core': 21.2.0-next.1 + '@angular/platform-browser': 21.2.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@21.2.0-next.0': - resolution: {integrity: sha512-jF5bXeqbyAEzi/RDav6qgD0XpAH6+D59oiBIaOu3gBIa7S04OZpJeF7XGtljw9O9lBUsYE3Nn7QLc0vKMus8xg==} + '@angular/localize@21.2.0-next.1': + resolution: {integrity: sha512-V5z/O+ZDUqwS/Yj8izfL/SW+IwvWw0qeaYEctyYK1nyVAcanAhZv7uJCcHmvabgeCpSYPgL6+QHYk0I6cNi1LA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.2.0-next.0 - '@angular/compiler-cli': 21.2.0-next.0 + '@angular/compiler': 21.2.0-next.1 + '@angular/compiler-cli': 21.2.0-next.1 '@angular/material@21.2.0-next.1': resolution: {integrity: sha512-kglL0rQrRCbYXAe8yLRv2sBZq/RLbu4c3a3sUvBbJe94JcE1u8N7WOUMAlxD3GeiEghCUFwq4Pel4p1p+ufJKg==} @@ -1025,42 +1025,42 @@ packages: version: 0.0.0-1d545550f0a93b2ffee3672587314d6f6b3dc7fd hasBin: true - '@angular/platform-browser@21.2.0-next.0': - resolution: {integrity: sha512-dKsVn0m+Vu1q8heUKoOF65ObAEkQ4TJhAgbXMx5TF3OQJZUD1BrS3w4fEHMuYE338icZVu7riicG23E1JDr5bw==} + '@angular/platform-browser@21.2.0-next.1': + resolution: {integrity: sha512-GIBlA5iVhc7p2B1yK1DGeOppiT6pQPYjPBRAHfINxPf6gAxWqzTElRCR5mWLmhA8yF+HRlWrknwV1MNHvpU/LQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.2.0-next.0 - '@angular/common': 21.2.0-next.0 - '@angular/core': 21.2.0-next.0 + '@angular/animations': 21.2.0-next.1 + '@angular/common': 21.2.0-next.1 + '@angular/core': 21.2.0-next.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@21.2.0-next.0': - resolution: {integrity: sha512-+Nrbop7mgdgUr4hvFEUhuuQcOl//aN9lWVrLc5CWoRI4beyxOaDHFB4oFCwc/nQf5gD5yHu+IiI60m0wUENCGw==} + '@angular/platform-server@21.2.0-next.1': + resolution: {integrity: sha512-s0sf/ghzTLlefs5NjInGQ81BuCCB6IIqjxMRyLf6Mtz72ykU9ymzuF0tnx5egpA4HmOhZz2mfKjMY5YIlVZPHw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.0-next.0 - '@angular/compiler': 21.2.0-next.0 - '@angular/core': 21.2.0-next.0 - '@angular/platform-browser': 21.2.0-next.0 + '@angular/common': 21.2.0-next.1 + '@angular/compiler': 21.2.0-next.1 + '@angular/core': 21.2.0-next.1 + '@angular/platform-browser': 21.2.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@21.2.0-next.0': - resolution: {integrity: sha512-A0uXDaveCKFG3Li38eS18pTBhbGJrx8ba1Ph6IuVFg90Tl0jAppV+RSbhyVypTqBkca/9zpQHx88X2w5tqIASw==} + '@angular/router@21.2.0-next.1': + resolution: {integrity: sha512-Ro4IH1wLinnA4zzinmVgOh3UndUw/9aXY/DjaJOjGm7Ip+sBoglBfS2H++glFMp8VQuNh+zKQGYGoHykUh9Cyw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.2.0-next.0 - '@angular/core': 21.2.0-next.0 - '@angular/platform-browser': 21.2.0-next.0 + '@angular/common': 21.2.0-next.1 + '@angular/core': 21.2.0-next.1 + '@angular/platform-browser': 21.2.0-next.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@21.2.0-next.0': - resolution: {integrity: sha512-C0hydwCKfBjht69XP507ocgg62uty5yPrUPTFCzXeNM2RNzwBVT5AEYD29y5CoL+x43DBL7eVFbgQZA2EcKOAA==} + '@angular/service-worker@21.2.0-next.1': + resolution: {integrity: sha512-iwjKhAK2haZCrBhLvxJIlJc+vnYVrE4i+RgAEO/NV6ia+YoTfcOGGQG+Y/wXL6XI7LwPP8vg/JC20N4Nwa8zdw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 21.2.0-next.0 + '@angular/core': 21.2.0-next.1 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@4.1.1': @@ -9602,29 +9602,29 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/cdk@21.2.0-next.1(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/cdk@21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3)': + '@angular/compiler-cli@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.2.0-next.0 + '@angular/compiler': 21.2.0-next.1 '@babel/core': 7.28.6 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 @@ -9638,31 +9638,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.2.0-next.0': + '@angular/compiler@21.2.0-next.1': dependencies: tslib: 2.8.1 - '@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)': + '@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.2.0-next.0 + '@angular/compiler': 21.2.0-next.1 zone.js: 0.16.0 - '@angular/forms@21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/forms@21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(@angular/compiler@21.2.0-next.0)': + '@angular/localize@21.2.0-next.1(@angular/compiler-cli@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3))(@angular/compiler@21.2.0-next.1)': dependencies: - '@angular/compiler': 21.2.0-next.0 - '@angular/compiler-cli': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) + '@angular/compiler': 21.2.0-next.1 + '@angular/compiler-cli': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3) '@babel/core': 7.28.6 '@types/babel__core': 7.20.5 tinyglobby: 0.2.15 @@ -9670,13 +9670,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/material@21.2.0-next.1(543b4cd5add643034223e4134967d1ab)': + '@angular/material@21.2.0-next.1(d363ea0c032248a351f6672d2b982900)': dependencies: - '@angular/cdk': 21.2.0-next.1(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/forms': 21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) - '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/cdk': 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/common': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/platform-browser': 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 @@ -9740,35 +9740,35 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))': + '@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/common': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/animations': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) - '@angular/platform-server@21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.0)(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/platform-server@21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.2.0-next.1)(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/compiler': 21.2.0-next.0 - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.2.0-next.1 + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 xhr2: 0.2.1 - '@angular/router@21.2.0-next.0(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + '@angular/router@21.2.0-next.1(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) - '@angular/platform-browser': 21.2.0-next.0(@angular/animations@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/common': 21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.2.0-next.1(@angular/animations@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)))(@angular/common@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@21.2.0-next.0(@angular/core@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': + '@angular/service-worker@21.2.0-next.1(@angular/core@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/core': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 @@ -16913,10 +16913,10 @@ snapshots: netmask@2.0.2: {} - ng-packagr@21.2.0-next.0(@angular/compiler-cli@21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.2.0-next.0(@angular/compiler-cli@21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.2.0-next.0(@angular/compiler@21.2.0-next.0)(typescript@5.9.3) + '@angular/compiler-cli': 21.2.0-next.1(@angular/compiler@21.2.0-next.1)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.56.0) '@rollup/wasm-node': 4.56.0 ajv: 8.17.1 diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json index 40d3d0726ada..9c61ece93d7e 100644 --- a/tests/e2e/ng-snapshot/package.json +++ b/tests/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#4a24b1fb6537bd60eaf9816d8ef9970be1a3e0ac", - "@angular/cdk": "github:angular/cdk-builds#d73331b8fff64a3620a8335d3d2e59ef7bf5b388", - "@angular/common": "github:angular/common-builds#0233e1a169a3d1473793d529c7563858c9ccec45", - "@angular/compiler": "github:angular/compiler-builds#6d70b7bd243009bb0ff28278d7c9c03992d55cca", - "@angular/compiler-cli": "github:angular/compiler-cli-builds#5136d02381b2c374b91c4f8219546bb3daebe3b4", - "@angular/core": "github:angular/core-builds#85e8f33f35c9bae2ad12a894f7a7e6289663d886", - "@angular/forms": "github:angular/forms-builds#288ab76d6e7cbbe18786f6c079df2d4842d0a997", - "@angular/language-service": "github:angular/language-service-builds#19c1abb6b315eb287acb4abc7a0a06c8d34957b5", - "@angular/localize": "github:angular/localize-builds#9f0c68667919f1c72f6d957930c9c2975fb9c524", - "@angular/material": "github:angular/material-builds#c0e47a2e8b667141abb4a0a5ba8c7091a3bc4e22", - "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#51da415b95248b02c6768b203517894a0502e87e", - "@angular/platform-browser": "github:angular/platform-browser-builds#238f2cc0d284d55629aa2f7329990842ef132dd7", - "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#dcc636a9d89b4ee41cd03a058cfbf8810a3b21d8", - "@angular/platform-server": "github:angular/platform-server-builds#99e81e931e5480785bbe17adccb543ce899479fe", - "@angular/router": "github:angular/router-builds#96041680a04f8d39d60d556a999594705577c520", - "@angular/service-worker": "github:angular/service-worker-builds#47f4665cdf1f293d79dc25d2ae19389c480fcd41" + "@angular/animations": "github:angular/animations-builds#ff173e2efc6021fcaaef8ea518b5cd13e0297749", + "@angular/cdk": "github:angular/cdk-builds#e3ca448a376a6d17c730fe6816e08caf4788d531", + "@angular/common": "github:angular/common-builds#83b47d6754d7f6cd13ead99b93f0ab5aea65e9fa", + "@angular/compiler": "github:angular/compiler-builds#75f09475df5ced86c2fa755ce2c5fcf743113e15", + "@angular/compiler-cli": "github:angular/compiler-cli-builds#565c41d44dc03d154f58a87d3e9db912d6645946", + "@angular/core": "github:angular/core-builds#66947cffdd94079e0f06348c4c0b1f3bafda12b5", + "@angular/forms": "github:angular/forms-builds#00668cbcb16c94e065a40b4856392333c00bf39a", + "@angular/language-service": "github:angular/language-service-builds#e038622db21eaa5080ffc180da487a0fe16f206d", + "@angular/localize": "github:angular/localize-builds#2828bef4a780b2e771e2cffd2df2a701c5a2de3a", + "@angular/material": "github:angular/material-builds#38ea206053aeeabf789c3c9e062bc61d1575cbfe", + "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#437c1fa8991e62be38e5afeb090b5b5d1b816fa0", + "@angular/platform-browser": "github:angular/platform-browser-builds#cd4af49f284aa54bd7ace711c10048a417aadf86", + "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#72f299c4447729ba6cc7ef6021cb6fcebe43b1ea", + "@angular/platform-server": "github:angular/platform-server-builds#7b0d9d5e880db86b57aa178eb400b87867e54384", + "@angular/router": "github:angular/router-builds#6a35085d1030b54d0bbd967ce566f3f25ed5481c", + "@angular/service-worker": "github:angular/service-worker-builds#0db2d8b950ffea63f64b4c4089853a1c44299940" } } From 6f29a8c35abb8928d4e7ea01958192dd2a83491d Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 15:05:17 +0000 Subject: [PATCH 2161/2162] fix(@angular/cli): renamed files by their new path in the schematic workflow Prior to this change, the old filename was being tracked. --- .../command-builder/utilities/schematic-workflow.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts b/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts index 3dbcfdd25983..c4134ef8ce66 100644 --- a/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts +++ b/packages/angular/cli/src/command-builder/utilities/schematic-workflow.ts @@ -55,10 +55,14 @@ export function subscribeToWorkflow( logs.push(`${colors.yellow('DELETE')} ${eventPath}`); files.add(eventPath); break; - case 'rename': - logs.push(`${colors.blue('RENAME')} ${eventPath} => ${removeLeadingSlash(event.to)}`); - files.add(eventPath); + case 'rename': { + const newFilename = removeLeadingSlash(event.to); + + logs.push(`${colors.blue('RENAME')} ${eventPath} => ${newFilename}`); + files.add(newFilename); + break; + } } }); From e5d3b942e944afce199da98e6bddc938b82515e8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 28 Jan 2026 15:09:38 +0000 Subject: [PATCH 2162/2162] refactor(@angular/cli): remove file extension filtering from Prettier utility, passing all files directly With '--no-error-on-unmatched-pattern' this list is no longer needed. --- .../angular/cli/src/utilities/prettier.ts | 32 ++----------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/packages/angular/cli/src/utilities/prettier.ts b/packages/angular/cli/src/utilities/prettier.ts index f9233e6215e2..e481d94a8b89 100644 --- a/packages/angular/cli/src/utilities/prettier.ts +++ b/packages/angular/cli/src/utilities/prettier.ts @@ -9,29 +9,12 @@ import { execFile } from 'node:child_process'; import { readFile } from 'node:fs/promises'; import { createRequire } from 'node:module'; -import { dirname, extname, join } from 'node:path'; +import { dirname, join } from 'node:path'; import { promisify } from 'node:util'; const execFileAsync = promisify(execFile); let prettierCliPath: string | null | undefined; -/** - * File types that can be formatted using Prettier. - */ -const fileTypes: ReadonlySet = new Set([ - '.md', - '.ts', - '.html', - '.js', - '.mjs', - '.cjs', - '.json', - '.css', - '.less', - '.scss', - '.sass', -]); - /** * Formats files using Prettier. * @param cwd The current working directory. @@ -59,20 +42,9 @@ export async function formatFiles(cwd: string, files: Set): Promise